From a786409d7f6769f43c107159dd84faf4a2927a9a Mon Sep 17 00:00:00 2001 From: lzhe <lzhe@example.com> Date: 星期一, 03 六月 2024 17:07:59 +0800 Subject: [PATCH] 1 --- src/views/console/base/Dialog.vue | 368 +++++++++++++++++++++++++-------------------------- 1 files changed, 181 insertions(+), 187 deletions(-) diff --git a/src/views/console/base/Dialog.vue b/src/views/console/base/Dialog.vue index 3e9506b..7fa484c 100644 --- a/src/views/console/base/Dialog.vue +++ b/src/views/console/base/Dialog.vue @@ -1,7 +1,7 @@ <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;"> 鐝埗璇︽儏 @@ -18,82 +18,33 @@ </el-col> <el-col :span="12"> <el-form-item label="鐝埗棰滆壊" prop="colour"> - <el-input style="width: 240px" v-model="form.userName" placeholder="鐝埗棰滆壊" clearable></el-input> + <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 v-for="item in detail.paramValue" :key="item"> + <el-row v-for="item in shiftDetailDTOList" :key="item"> <el-col :span="24"> - 鐝1 + 鐝{{ item.shiftIndex }} </el-col> - <el-col :span="24"> + <el-col :span="12"> <el-form-item label="鐝鍚嶇О" prop="indexName"> - <el-input style="width: 240px" v-model="form.userName" placeholder="" clearable></el-input> + <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,9 +58,14 @@ <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 @@ -119,56 +75,9 @@ } }, watch: { - detail() { - let len = this?.detail?.paramValue - 0 || 1 - let shiftDetailDTOList = [] - for (let i = 0; i < len; i++) { - shiftDetailDTOList.push({ - shiftStartTime: 0, - shiftEndTime: 0, - shiftIndex: i + 1, - indexName: '', - restNumber: i + 1, - shiftRestTimeDTOList: [ - { - restStartTime: 0, - restEndTime: 0, - restIndex: 1, - }, - { - restStartTime: 0, - restEndTime: 0, - restIndex: 2, - }, - { - restStartTime: 0, - restEndTime: 0, - restIndex: 3, - }, - { - restStartTime: 0, - restEndTime: 0, - restIndex: 4, - } - ] - }) - } - return this.shiftDetailDTOList = shiftDetailDTOList - } + }, 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 { @@ -178,92 +87,138 @@ 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 + } + + 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 + } + + }) + } 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 }, //琛ㄥ崟鎻愪氦鏂规硶 @@ -271,7 +226,52 @@ 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) @@ -287,12 +287,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