From a2441175073f8b09a7eff29effd7e3e617de2f7d Mon Sep 17 00:00:00 2001
From: lzhe <lzhe@example.com>
Date: 星期四, 06 六月 2024 18:23:01 +0800
Subject: [PATCH] Merge branch 'master' of http://www.beijingsoft.cn:9090/r/smart-web

---
 src/views/console/base/Dialog.vue |  350 ++++++++++++++++++++++++++++++++--------------------------
 1 files changed, 193 insertions(+), 157 deletions(-)

diff --git a/src/views/console/base/Dialog.vue b/src/views/console/base/Dialog.vue
index c383997..7fa484c 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,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
         },
         //琛ㄥ崟鎻愪氦鏂规硶
@@ -229,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)
@@ -245,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