From 9c094a1fe3e1ae3dadef6433f8401818fe2b8304 Mon Sep 17 00:00:00 2001
From: lzhe <lzhe@example.com>
Date: 星期五, 21 六月 2024 10:53:43 +0800
Subject: [PATCH] 1

---
 src/views/console/workstation/Dialog.vue |  325 ++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 221 insertions(+), 104 deletions(-)

diff --git a/src/views/console/workstation/Dialog.vue b/src/views/console/workstation/Dialog.vue
index effd650..e5693f0 100644
--- a/src/views/console/workstation/Dialog.vue
+++ b/src/views/console/workstation/Dialog.vue
@@ -7,123 +7,138 @@
                     鍩虹淇℃伅
                 </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" :disabled="form.id" 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-select v-model="type" style="width: 240px">
+                    <el-form-item label="宸ヤ綅绫诲瀷" prop="type">
+                        <el-select v-model="form.type" style="width: 240px" :disabled="form.id">
                             <el-option v-for="item in options.types" :key="item.value" :label="item.label"
                                 :value="item.value" />
                         </el-select>
                     </el-form-item>
                 </el-col>
                 <el-col :span="12">
-                    <el-form-item label="鎵�灞炲伐浣嶇粍" prop="userName">
-                        <el-tree-select v-model="form.userName" :data="options.group" :render-after-expand="false"
-                            style="width: 240px" />
-                        <!-- <el-select v-model="type" style="width: 240px">
-                            <el-option v-for="item in options" :key="item.value" :label="item.label"
-                                :value="item.value" />
-                        </el-select> -->
+                    <el-form-item label="鎵�灞炲伐浣嶇粍" prop="groupName">
+                        <el-tree-select @node-click="nodeClick" v-model="form.groupName" :data="options.group"
+                            :check-on-click-node="true" style="width: 240px" />
                     </el-form-item>
                 </el-col>
                 <el-col :span="12">
-                    <el-form-item label="鐘舵��" prop="userName">
-                        <el-select v-model="type" style="width: 240px">
-                            <el-option v-for="item in options.status" :key="item.value" :label="item.label"
-                                :value="item.value" />
-                        </el-select>
+                    <el-form-item label="鐘舵��" prop="status">
+                        <el-switch v-model="form.status" :active-value="1" :inactive-value="0" />
                     </el-form-item>
                 </el-col>
                 <el-col :span="24">
                     <el-form-item label="宸ヤ綅鍥剧墖" prop="avatar">
-                        <sc-upload v-model="form.avatar" title="宸ヤ綅鍥剧墖"></sc-upload>
+                        <scUpload v-model="form.avatar" title="宸ヤ綅鍥剧墖"></scUpload>
                     </el-form-item>
                 </el-col>
                 <el-col :span="12">
-                    <el-form-item label="鐢熶骇鏃ュ巻" prop="userName">
-                        <el-select v-model="type" style="width: 240px">
+                    <el-form-item label="鐢熶骇鏃ュ巻" prop="calendarCode">
+                        <el-select v-model="form.calendarCode" style="width: 240px">
                             <el-option v-for="item in options.calendarList" :key="item.id" :label="item.name"
                                 :value="item.id" />
                         </el-select>
                     </el-form-item>
                 </el-col>
-                <el-col :span="24" style="padding:12px 0;">
+                <el-col :span="24" style="padding:12px 0;" v-if="form.type == 0">
                     鏈哄櫒淇℃伅
                 </el-col>
-
-                <el-col :span="12">
-                    <el-form-item label="閫夋嫨鏈哄櫒" prop="userName">
-                        <!-- <el-select v-model="type" style="width: 240px">
-                            <el-option v-for="item in options.linkWays" :key="item.value" :label="item.label"
-                                :value="item.value" />
-                        </el-select> -->
-                        <el-radio-group v-model="form.userName">
-                            <el-radio v-for="item in options.linkWays" :key="item.value" :value="item.value">{{item.label}}</el-radio>
+                <el-col :span="12" v-if="form.type == 0 && !form.id">
+                    <el-form-item label="閫夋嫨鏈哄櫒" prop="linkWay">
+                        <el-radio-group v-model="form.linkWay">
+                            <el-radio v-for="item in options.linkWays" :key="item.value"
+                                :label="item.value">{{ item.label }}</el-radio>
                         </el-radio-group>
                     </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-col :span="12" v-if="(form.type == 0 && form.linkWay == 0) || form.id">
+                    <!-- machineCode -->
+                    <el-form-item label="鏈哄櫒缂栧彿" prop="machineId">
+                        <!-- <el-input style="width: 240px" v-model="form.machineId" placeholder="鏈哄櫒缂栧彿" clearable></el-input> -->
+                        <el-select v-if="!form.id" v-model="form.machineId" style="width: 240px" @change="change" clear
+                            filterable>
+                            <el-option v-for="item in options.listnoband" :key="item.id" :label="item.machineName"
+                                :value="item.id">
+                                {{ `${item?.machineCode}-${item?.machineName}-${item?.brand}` }}</el-option>
+                        </el-select>
+                        <el-input v-if="form.id" :disabled="form.id" v-model="form.machineName"></el-input>
                     </el-form-item>
                 </el-col>
                 <el-col :span="24" style="padding:12px 0;">
                     鎵╁睍淇℃伅
                 </el-col>
                 <el-col :span="12">
-                    <el-form-item label="宸ョ" prop="userName">
-                        <el-select v-model="type" style="width: 240px">
+                    <el-form-item label="宸ョ" prop="deviceType">
+                        <el-select v-model="form.deviceType" style="width: 240px">
                             <el-option v-for="item in options.work_type" :key="item.dictKey" :label="item.dictValue"
-                                :value="item.dictKey" />
+                                :value="item.dictKey - 0" />
                         </el-select>
                     </el-form-item>
                 </el-col>
                 <el-col :span="12">
-                    <el-form-item label="鍔犲伐灞炴��" prop="userName">
-                        <el-select v-model="type" style="width: 240px">
-                            <el-option v-for="item in options.machining_type" :key="item.dictKey" :label="item.dictValue"
-                                :value="item.dictKey" />
+                    <el-form-item label="鍔犲伐灞炴��" prop="properties">
+                        <el-select v-model="form.properties" style="width: 240px">
+                            <el-option v-for="item in options.machining_type" :key="item.dictKey"
+                                :label="item.dictValue" :value="item.dictKey" />
                         </el-select>
                     </el-form-item>
                 </el-col>
                 <el-col :span="12">
-                    <el-form-item label="绋嬪簭浼犺緭鏂瑰紡" prop="userName">
-                        <el-select v-model="type" style="width: 240px">
-                            <el-option   label="FTP"  value="1" />
-                            <el-option   label="涓插彛"  value="" />
+                    <el-form-item label="绋嬪簭浼犺緭鏂瑰紡" prop="transmissionMethod">
+                        <el-select v-model="form.transmissionMethod" style="width: 240px">
+                            <el-option label="FTP" :value="1" />
+                            <el-option label="涓插彛" :value="2" />
                         </el-select>
                     </el-form-item>
                 </el-col>
                 <el-col :span="12">
-                    <el-form-item label="FTP鐩綍" prop="userName">
-                        <el-select v-model="type" style="width: 240px">
-                            <el-option v-for="item in options" :key="item.value" :label="item.label"
+                    <el-form-item label="FTP鐩綍" prop="ftpDirectoryType">
+                        <el-select v-model="form.ftpDirectoryType" style="width: 240px">
+                            <el-option v-for="item in options.ftpDirectoryType" :key="item.value" :label="item.label"
                                 :value="item.value" />
                         </el-select>
                     </el-form-item>
                 </el-col>
-                <el-col :span="12">
-                    <el-form-item label="宸ヤ綔鍙�" prop="userName">
-                        <el-select v-model="type" style="width: 240px">
-                            <el-option v-for="item in options" :key="item.value" :label="item.label"
-                                :value="item.value" />
+                <el-col :span="12" v-if="form.ftpDirectoryType == 1">
+                    <el-form-item label="鍏宠仈鐩綍" prop="directoryId">
+                        <el-select v-model="form.directoryId" style="width: 240px">
+                            <el-option v-for="item in options.directorys" :key="item.id" :label="item.name"
+                                :value="item.id" />
                         </el-select>
                     </el-form-item>
                 </el-col>
+                <el-col :span="4">
+                    <!-- <el-form-item label="宸ヤ綔鍙�" prop="workbenchVOList"> -->
+
+                    <!-- </el-form-item> -->
+                    <span>宸ヤ綔鍙�</span>
+
+                </el-col>
+                <el-col style="margin-bottom: 14px;">
+                    <ul class="workbranch">
+                        <li v-for="item in form.workbenchVOList">
+                            <span>{{ item.sort }}</span>
+                            <el-input v-model="item.name" style="width: 200px"></el-input>
+                        </li>
+                    </ul>
+                    <el-button style="margin-left: 50px;margin-top: 8px" @click="addWork">娣诲姞宸ヤ綔鍙�</el-button>
+                </el-col>
                 <el-col :span="12">
-                    <el-form-item label="鏁版嵁鏉冮檺" prop="userName">
-                        <el-select v-model="type" style="width: 240px">
-                            <el-option v-for="item in options" :key="item.value" :label="item.label"
-                                :value="item.value" />
-                        </el-select>
+                    <el-form-item label="鏁版嵁鏉冮檺" prop="createDept">
+                        <el-tree-select clearable @node-click="nodeClickTree" v-model="form.createDept" :data="tree"
+                            :check-on-click-node="true" style="width: 240px">
+                            <template #default="{ data: { title } }">
+                                {{ title }}</template>
+                        </el-tree-select>
                     </el-form-item>
                 </el-col>
             </el-row>
@@ -155,7 +170,10 @@
                 calendarList: this.calendarList,
                 linkWays: this.linkWays,
                 work_type: this.work_type,
-                machining_type: this.machining_type
+                machining_type: this.machining_type,
+                listnoband: this.listnoband,
+                directorys: this.directorys,
+                ftpDirectoryType: this.ftpDirectoryType
             }
         }
     },
@@ -172,67 +190,82 @@
             isSaveing: false,
             //琛ㄥ崟鏁版嵁
             form: {
-                id: "",
-                userName: "",
-                avatar: "",
-                name: "",
-                dept: "",
-                group: []
+                id: '',
+                code: '',
+                name: '',
+                type: '',
+                groupName: '',
+                status: '',
+                avatar: '',
+                calendarCode: '',
+                linkWay: '',
+                machineId: '',
+                machineCode: '',
+                machineName: '',
+                deviceType: '',
+                properties: '',
+                transmissionMethod: '',
+                ftpDirectoryType: '',
+                workbenchVOList: [],
+                createDept: '',
             },
             //楠岃瘉瑙勫垯
             rules: {
-                avatar: [
-                    { required: true, message: '璇蜂笂浼犲ご鍍�' }
-                ],
-                userName: [
-                    { required: true, message: '璇疯緭鍏ョ櫥褰曡处鍙�' }
+                code: [
+                    { 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();
-                        }
-                    }
+                type: [
+                    { required: true, message: '蹇呭~' }
                 ],
-                password2: [
-                    { required: true, message: '璇峰啀娆¤緭鍏ュ瘑鐮�' },
-                    {
-                        validator: (rule, value, callback) => {
-                            if (value !== this.form.password) {
-                                callback(new Error('涓ゆ杈撳叆瀵嗙爜涓嶄竴鑷�!'));
-                            } else {
-                                callback();
-                            }
-                        }
-                    }
+                groupName: [
+                    { required: true, message: '蹇呭~' }
                 ],
-                dept: [
-                    { required: true, message: '璇烽�夋嫨鎵�灞為儴闂�' }
+                status: [
+                    { required: true, message: '蹇呭~' }
                 ],
-                group: [
-                    { required: true, message: '璇烽�夋嫨鎵�灞炶鑹�', trigger: 'change' }
-                ]
+                linkWay: [
+                    { required: true, message: '蹇呭~' }
+                ],
+                machineId: [
+                    { required: true, message: '蹇呭~' }
+                ],
+                directoryId: [
+                    { required: true, message: '蹇呭~' }
+                ],
             },
             //鎵�闇�鏁版嵁閫夐」
             calendarList: [],
             work_type: [],
             machining_type: [],
+            listnoband: [],
+            directorys: [],
+            ftpDirectoryType: [
+                {
+                    label: '涓嶅叧鑱旂洰褰�',
+                    value: 0
+                },
+                {
+                    label: '鍏宠仈鐩綍',
+                    value: 1
+                },
+                {
+                    label: '鍒涘缓鍚屽悕鐩綍',
+                    value: 2
+                },
+            ],
             linkWays: [
                 {
                     label: '鍏宠仈鏈哄櫒',
-                    value: '0'
+                    value: 0
                 }, {
                     label: '鍒涘缓鍚屽悕鏈哄櫒',
-                    value: '1'
+                    value: 1
                 }
-            ]
+            ],
+            tree: []
         }
     },
     created() {
@@ -245,13 +278,40 @@
         this.$API.system.dic.getDic.get({ code: 'machining_type' }).then(res => {
             this.machining_type = res.data
         })
+        this.$API.workstation.getlistnoband.get().then(res => {
+            this.listnoband = res.data
+        })
+        this.$HTTP.get(`/api/blade-system/data-scope-manager/tree`).then(res => {
+            this.tree = res.data.map(item => {
+                return {
+                    ...item,
+                    label: item.title
+                }
+            })
+        })
     },
     methods: {
         //鏄剧ず
         open(mode = 'add', params) {
             this.mode = mode;
             this.visible = true;
-            this.params = params
+
+            if (params) {
+                Object.keys(this.form).forEach(key => {
+                    this.form[key] = params[key]
+                })
+                this.$HTTP.get(`/api/blade-cps/workstation/get?workstationId=${params.id}`).then(res => {
+                    this.form = res?.data
+                    this.$HTTP.get(`/api/blade-cps/workstation-workbench/listWorkbench?workstationId=${params.id}`).then(res => {
+                        this.form.workbenchVOList = res?.data?.workstationList || []
+                    })
+                })
+            } else {
+                this.form.id = ''
+                Object.keys(this.form).forEach(key => {
+                    this.form[key] = ''
+                })
+            }
             return this
         },
         //琛ㄥ崟鎻愪氦鏂规硶
@@ -259,7 +319,7 @@
             this.$refs.dialogForm.validate(async (valid) => {
                 if (valid) {
                     this.isSaveing = true;
-                    var res = await this.$API.demo.post.post(this.form);
+                    var res = await this.$API.workstation.add.post(this.form);
                     this.isSaveing = false;
                     if (res.code == 200) {
                         this.$emit('success', this.form, this.mode)
@@ -279,14 +339,71 @@
             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)
+        },
+        change(id) {
+            let row = this.options.listnoband.find(v => v.id == id)
+            if (!row) {
+                this.form.machineCode = ''
+                this.form.machineId = ''
+                this.form.machineName = ''
+
+            } else {
+                this.form.machineCode = row.machineCode
+                this.form.machineId = row.id
+                this.form.machineName = row.machineName
+            }
+            this.$HTTP.get(`/api/blade-dnc/ftp-director/get-machine-of-workstation-ftp?id=${this.form.machineId}`).then(res => {
+                this.directorys = res.data
+            })
+            console.log(row)
+        },
+        nodeClick(node) {
+            console.log(node)
+            if (node.parentId == 0) return
+            this.$nextTick(() => {
+                this.form.groupId = node.id
+                this.form.groupName = node.name
+            })
+        },
+        nodeClickTree(node) {
+            this.$nextTick(() => {
+                this.form.createDept = node.id
+            })
+        },
+        addWork() {
+            this.form.workbenchVOList.push({
+                sort: this.form.workbenchVOList.length + 1,
+                name: ''
+            })
         }
     }
 }
 </script>
 
-<style></style>
+<style lang="scss" scoped>
+.workbranch {
+    list-style: none;
+    padding-left: 50px;
+
+    li {
+        margin-top: 8px;
+
+        span {
+            display: inline-block;
+            width: 25px;
+            height: 25px;
+            line-height: 25px;
+            text-align: center;
+            border-radius: 50%;
+            background: #ccc;
+            margin-right: 8px;
+        }
+
+
+    }
+}
+</style>

--
Gitblit v1.9.3