From 5caa25dc8f299cb5ef5cc056dfd6c307b6763934 Mon Sep 17 00:00:00 2001
From: gaoshp <291585735@qq.com>
Date: 星期二, 08 十月 2024 20:06:49 +0800
Subject: [PATCH] update
---
src/views/console/base/Dialog.vue | 387 ++++++++++++++++++++++++++++++++----------------------
1 files changed, 229 insertions(+), 158 deletions(-)
diff --git a/src/views/console/base/Dialog.vue b/src/views/console/base/Dialog.vue
index c383997..bc0adff 100644
--- a/src/views/console/base/Dialog.vue
+++ b/src/views/console/base/Dialog.vue
@@ -1,99 +1,50 @@
<template>
- <el-dialog :title="titleMap[mode]" v-model="visible" :width="800" destroy-on-close @closed="$emit('closed')">
+ <el-dialog :title="titleMap[mode]" v-model="visible" :width="1100" destroy-on-close @closed="$emit('closed')">
<el-form :model="form" :rules="rules" :disabled="mode == 'show'" ref="dialogForm" label-width="120px"
- label-position="center">
+ label-position="center" v-if="visible">
<el-row>
<el-col :span="24" style="padding:12px 0;">
鐝埗璇︽儏
</el-col>
<el-col :span="12">
- <el-form-item label="鐝埗缂栧彿" prop="userName">
- <el-input style="width: 240px" v-model="form.userName" placeholder="宸ヤ綅缂栧彿" clearable></el-input>
+ <el-form-item label="鐝埗缂栧彿" prop="code">
+ <el-input style="width: 240px" v-model="form.code" placeholder="鐝埗缂栧彿" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
- <el-form-item label="鐝埗鍚嶇О" prop="userName">
- <el-input style="width: 240px" v-model="form.userName" placeholder="宸ヤ綅鍚嶇О" clearable></el-input>
+ <el-form-item label="鐝埗鍚嶇О" prop="name">
+ <el-input style="width: 240px" v-model="form.name" placeholder="鐝埗鍚嶇О" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
- <el-form-item label="鐝埗棰滆壊" prop="userName">
- <el-input style="width: 240px" v-model="form.userName" placeholder="宸ヤ綅鍚嶇О" clearable></el-input>
+ <el-form-item label="鐝埗棰滆壊" prop="colour">
+ <el-color-picker size="small" v-model="form.colour" />
</el-form-item>
</el-col>
<el-col :span="12">
- <el-form-item label="鐝埗鏃堕棿" prop="userName">
- <el-input style="width: 240px" v-model="form.userName" placeholder="宸ヤ綅鍚嶇О" clearable></el-input>
+ <el-form-item label="鐝埗鏃堕棿" prop="range">
+ <ShiftTime v-model="form.range"></ShiftTime>
</el-form-item>
</el-col>
</el-row>
- <el-row>
+ <el-row v-for="item in shiftDetailDTOList" :key="item">
<el-col :span="24">
- 鐝1
+ 鐝{{ item.shiftIndex }}
</el-col>
- <el-col :span="24">
- <el-form-item label="鐝鍚嶇О" prop="userName">
- <el-input style="width: 240px" v-model="form.userName" placeholder="宸ヤ綅鍚嶇О" clearable></el-input>
+ <el-col :span="12">
+ <el-form-item label="鐝鍚嶇О" prop="indexName">
+ <el-input v-model="item.indexName" placeholder="" clearable></el-input>
</el-form-item>
</el-col>
- <el-col :span="9">
- <el-form-item label="鐝鏃堕棿" prop="userName">
- <el-time-picker style="width: 100%;" v-model="form.userName" format="HH:mm"
- placeholder="Arbitrary time" />
+ <el-col :span="12"></el-col>
+ <el-col :span="12">
+ <el-form-item label="鐝鏃堕棿">
+ <Time v-model="item.range"></Time>
</el-form-item>
- </el-col>
- <el-col :span="9">
- <el-form-item label="" prop="userName">
- <el-time-picker style="width: 100%;" v-model="form.userName" format="HH:mm"
- placeholder="Arbitrary time" />
- </el-form-item>
- </el-col>
- <el-col :span="9">
- <el-form-item label="浼戞伅鏃舵1" prop="userName">
- <el-time-picker style="width: 100%;" v-model="form.userName" format="HH:mm"
- placeholder="Arbitrary time" />
- </el-form-item>
- </el-col>
- <el-col :span="9">
- <el-form-item label="" prop="userName">
- <el-time-picker style="width: 100%;" v-model="form.userName" format="HH:mm"
- placeholder="Arbitrary time" />
- </el-form-item>
- </el-col>
- <el-col :span="9">
- <el-form-item label="浼戞伅鏃舵1" prop="userName">
- <el-time-picker style="width: 100%;" v-model="form.userName" format="HH:mm"
- placeholder="Arbitrary time" />
- </el-form-item>
- </el-col>
- <el-col :span="9">
- <el-form-item label="" prop="userName">
- <el-time-picker style="width: 100%;" v-model="form.userName" format="HH:mm"
- placeholder="Arbitrary time" />
- </el-form-item>
- </el-col>
- <el-col :span="9">
- <el-form-item label="浼戞伅鏃舵1" prop="userName">
- <el-time-picker style="width: 100%;" v-model="form.userName" format="HH:mm"
- placeholder="Arbitrary time" />
- </el-form-item>
- </el-col>
- <el-col :span="9">
- <el-form-item label="" prop="userName">
- <el-time-picker style="width: 100%;" v-model="form.userName" format="HH:mm"
- placeholder="Arbitrary time" />
- </el-form-item>
- </el-col>
- <el-col :span="9">
- <el-form-item label="浼戞伅鏃舵1" prop="userName">
- <el-time-picker style="width: 100%;" v-model="form.userName" format="HH:mm"
- placeholder="Arbitrary time" />
- </el-form-item>
- </el-col>
- <el-col :span="9">
- <el-form-item label="" prop="userName">
- <el-time-picker style="width: 100%;" v-model="form.userName" format="HH:mm"
- placeholder="Arbitrary time" />
+ </el-col><el-col :span="12"></el-col>
+ <el-col :span="12" v-for="(v, i) in item.shiftRestTimeDTOList" :key="v.restIndex">
+ <el-form-item :label="'浼戞伅鏃舵' + (i + 1)">
+ <Time v-model="v.range"></Time>
</el-form-item>
</el-col>
</el-row>
@@ -107,27 +58,26 @@
<script>
import deepmerge from 'deepmerge'
-import http from "@/utils/request"
+import ShiftTime from './shiftTime'
+import Time from './Time'
export default {
emits: ['success', 'closed'],
+ components: {
+ ShiftTime,
+ Time
+ },
props: {
option: {
type: Object
+ },
+ detail: {
+ type: Object
}
},
+ watch: {
+
+ },
computed: {
- options() {
- let group = deepmerge([], this.option.group)
- group[0].disabled = true
- return {
- ...this.option,
- group,
- calendarList: this.calendarList,
- linkWays: this.linkWays,
- work_type: this.work_type,
- machining_type: this.machining_type
- }
- }
},
data() {
return {
@@ -137,91 +87,173 @@
edit: '缂栬緫鐝埗',
// show: '鏌ョ湅'
},
- params: {},
visible: false,
isSaveing: false,
//琛ㄥ崟鏁版嵁
form: {
- id: "",
- userName: "",
- avatar: "",
- name: "",
- dept: "",
- group: []
+ id: '',
+ code: '',
+ isUsed: '',
+ name: '',
+ colour: '',
+ startTime: '',
+ endTime: '',
+ range: [],
+ shiftNumber: '',
+ number: '',
},
+ options: [
+ {
+ label: '涓婃棩',
+ value: 0
+ },
+ {
+ label: '褰撴棩',
+ value: 1
+ },
+ {
+ label: '娆℃棩',
+ value: 2
+ }
+ ],
+ shiftDetailDTOList: [],
//楠岃瘉瑙勫垯
rules: {
- avatar: [
- { required: true, message: '璇蜂笂浼犲ご鍍�' }
- ],
- userName: [
- { required: true, message: '璇疯緭鍏ョ櫥褰曡处鍙�' }
+ range: [
+ { required: true, message: '' }
],
name: [
- { required: true, message: '璇疯緭鍏ョ湡瀹炲鍚�' }
+ { required: true, message: '' }
],
- password: [
- { required: true, message: '璇疯緭鍏ョ櫥褰曞瘑鐮�' },
- {
- validator: (rule, value, callback) => {
- if (this.form.password2 !== '') {
- this.$refs.dialogForm.validateField('password2');
- }
- callback();
- }
- }
+ code: [
+ { required: true, message: '' }
],
- password2: [
- { required: true, message: '璇峰啀娆¤緭鍏ュ瘑鐮�' },
- {
- validator: (rule, value, callback) => {
- if (value !== this.form.password) {
- callback(new Error('涓ゆ杈撳叆瀵嗙爜涓嶄竴鑷�!'));
- } else {
- callback();
- }
- }
- }
- ],
- dept: [
- { required: true, message: '璇烽�夋嫨鎵�灞為儴闂�' }
- ],
- group: [
- { required: true, message: '璇烽�夋嫨鎵�灞炶鑹�', trigger: 'change' }
- ]
},
- //鎵�闇�鏁版嵁閫夐」
- calendarList: [],
- work_type: [],
- machining_type: [],
- linkWays: [
- {
- label: '鍏宠仈鏈哄櫒',
- value: '0'
- }, {
- label: '鍒涘缓鍚屽悕鏈哄櫒',
- value: '1'
- }
- ]
+
}
},
created() {
- this.$API.workstation.calendarList.get().then(res => {
- this.calendarList = res.data
- })
- this.$API.system.dic.getDic.get({ code: 'work_type' }).then(res => {
- this.work_type = res.data
- })
- this.$API.system.dic.getDic.get({ code: 'machining_type' }).then(res => {
- this.machining_type = res.data
- })
},
methods: {
//鏄剧ず
open(mode = 'add', params) {
this.mode = mode;
- this.visible = true;
- this.params = params
+ this.$nextTick(() => {
+ this.visible = true;
+ })
+
+ this.form = {
+ id: params?.id,
+ code: params?.code,
+ isUsed: params?.isUsed,
+ name: params?.name,
+ colour: params?.colour,
+ startTime: params?.startTime,
+ endTime: params?.endTime,
+ range: [params?.startTime || 0, params?.endTime || 1440],
+ shiftNumber: params?.shiftNumber || this?.detail?.paramValue - 0,
+ number: params?.number || 1
+ }
+ console.log(this?.detail?.paramValue, '?????????????//')
+ if (params?.shiftDetailVOList?.length > 0) {
+
+ this.shiftDetailDTOList = params?.shiftDetailVOList?.map((item, index) => {
+ let shiftRestTimeDTOList = item?.shiftRestTimeVOList.map(item => {
+ return {
+ ...item,
+ range: [item.restStartTime, item.restEndTime]
+ }
+ })
+ while (shiftRestTimeDTOList.length < 4) {
+ shiftRestTimeDTOList.push({
+ range: [0, 0],
+ restStartTime: 0,
+ restEndTime: 0,
+ })
+ }
+ return {
+ range: [item.shiftStartTime || 0, item.shiftEndTime || 1440],
+ shiftStartTime: item.shiftStartTime,
+ shiftEndTime: item.shiftEndTime,
+ shiftIndex: index + 1,
+ indexName: item.indexName,
+ restNumber: index + 1,
+ shiftRestTimeDTOList
+ }
+
+ })
+ if (params?.shiftDetailVOList?.length < this?.detail?.paramValue) {
+ for (let i = 0; i < this?.detail?.paramValue - params?.shiftDetailVOList?.length; i++) {
+ this.shiftDetailDTOList.push({
+ range: [0, 0],
+ shiftStartTime: 0,
+ shiftEndTime: 0,
+ shiftIndex: i + 1,
+ indexName: '',
+ restNumber: i + 1,
+ shiftRestTimeDTOList: [
+ {
+ range: [0, 0],
+ restStartTime: 0,
+ restEndTime: 0,
+ },
+ {
+ range: [0, 0],
+ restStartTime: 0,
+ restEndTime: 0,
+ },
+ {
+ range: [0, 0],
+ restStartTime: 0,
+ restEndTime: 0,
+ },
+ {
+ range: [0, 0],
+ restStartTime: 0,
+ restEndTime: 0,
+ }
+ ]
+ })
+ }
+ }
+ } else {
+ let len = this?.detail?.paramValue - 0 || 1
+ let shiftDetailDTOList = []
+ for (let i = 0; i < len; i++) {
+ shiftDetailDTOList.push({
+ range: [0, 0],
+ shiftStartTime: 0,
+ shiftEndTime: 0,
+ shiftIndex: i + 1,
+ indexName: '',
+ restNumber: i + 1,
+ shiftRestTimeDTOList: [
+ {
+ range: [0, 0],
+ restStartTime: 0,
+ restEndTime: 0,
+ },
+ {
+ range: [0, 0],
+ restStartTime: 0,
+ restEndTime: 0,
+ },
+ {
+ range: [0, 0],
+ restStartTime: 0,
+ restEndTime: 0,
+ },
+ {
+ range: [0, 0],
+ restStartTime: 0,
+ restEndTime: 0,
+ }
+ ]
+ })
+ }
+ this.shiftDetailDTOList = shiftDetailDTOList
+
+ }
return this
},
//琛ㄥ崟鎻愪氦鏂规硶
@@ -229,14 +261,59 @@
this.$refs.dialogForm.validate(async (valid) => {
if (valid) {
this.isSaveing = true;
- var res = await this.$API.demo.post.post(this.form);
+ let data = {
+ shiftNumber: this?.detail?.paramValue - 0,
+ ...this.form, shiftDetailDTOList: this.shiftDetailDTOList.map(item => {
+ return {
+ shiftStartTime: item.range[0],
+ shiftEndTime: item.range[1],
+ shiftIndex: item.shiftIndex,
+ indexName: item.indexName,
+ restNumber: item.restNumber,
+ shiftRestTimeDTOList: item.shiftRestTimeDTOList.filter(v => {
+ return v.range[1] > v.range[0]
+ }).map((v, i) => {
+ return {
+ restStartTime: v.range[0],
+ restEndTime: v.range[1],
+ restIndex: i + 1,
+ }
+ })
+
+ }
+ })
+ }
+ data.startTime = data.range[0]
+ data.endTime = data.range[1]
+ try {
+ data.startTime = data.range[0]
+ data.endTime = data.range[1]
+ delete data.range
+ } catch (error) {
+
+ }
+ let res
+ try {
+ if (this.form.id) {
+ res = await this.$HTTP.put('/api/blade-cps/shift', data).catch(() => {
+ throw new Error()
+ })
+ } else {
+ res = await this.$HTTP.post('/api/blade-cps/shift', data).catch(() => {
+ throw new Error()
+ })
+ }
+ } catch (error) {
+ this.isSaveing = false;
+ }
+
this.isSaveing = false;
if (res.code == 200) {
this.$emit('success', this.form, this.mode)
this.visible = false;
this.$message.success("鎿嶄綔鎴愬姛")
} else {
- this.$alert(res.message, "鎻愮ず", { type: 'error' })
+ this.$alert(res.msg, "鎻愮ず", { type: 'error' })
}
} else {
return false;
@@ -245,12 +322,6 @@
},
//琛ㄥ崟娉ㄥ叆鏁版嵁
setData(data) {
- this.form.id = data.id
- this.form.userName = data.userName
- this.form.avatar = data.avatar
- this.form.name = data.name
- this.form.group = data.group
- this.form.dept = data.dept
//鍙互鍜屼笂闈竴鏍峰崟涓敞鍏ワ紝涔熷彲浠ュ儚涓嬮潰涓�鏍风洿鎺ュ悎骞惰繘鍘�
//Object.assign(this.form, data)
--
Gitblit v1.9.3