Jelajahi Sumber

作业票新增完成

pm 1 tahun lalu
induk
melakukan
7331ce1191
2 mengubah file dengan 193 tambahan dan 61 penghapusan
  1. 187 61
      src/views/mes/job/jobm/NewOperations.vue
  2. 6 0
      src/views/mes/job/jobm/index.vue

+ 187 - 61
src/views/mes/job/jobm/NewOperations.vue

@@ -202,14 +202,13 @@
                       placeholder="共锁人"
                       clearable
                       multiple
-                      disabled
                       style="width: 100%"
                     >
                       <el-option
-                        v-for="dict in this.listUserOption"
-                        :key="dict.value"
-                        :label="dict.label"
-                        :value="dict.value"
+                        v-for="dict in this.form.ticketUserDTOList"
+                        :key="dict.userId"
+                        :label="dict.username"
+                        :value="dict.username"
                       />
                     </el-select>
                   </el-form-item>
@@ -223,9 +222,9 @@
                     </el-button
                     >
                   </el-form-item>
-                  <el-form-item label="开始时间" prop="startTime">
+                  <el-form-item label="开始时间" prop="ticketStartTime">
                     <el-date-picker
-                      v-model="form.startTime"
+                      v-model="form.ticketStartTime"
                       type="datetime"
                       placeholder="选择日期时间"
                       align="right"
@@ -234,9 +233,9 @@
                     >
                     </el-date-picker>
                   </el-form-item>
-                  <el-form-item label="结束时间" prop="endTime">
+                  <el-form-item label="结束时间" prop="ticketEndTime">
                     <el-date-picker
-                      v-model="form.endTime"
+                      v-model="form.ticketEndTime"
                       type="datetime"
                       placeholder="选择日期时间"
                       align="right"
@@ -301,6 +300,7 @@
             clearable
             style="width: 100%"
             multiple
+            @change="changeInsideUser"
           >
             <el-option
               v-for="dict in this.listUserOption"
@@ -310,27 +310,13 @@
             />
           </el-select>
         </el-form-item>
-<!--        <el-form-item label="用户类型" prop="nickName" v-if="insideMumber">-->
-<!--          <el-select-->
-<!--            v-model="dialogForm.userType"-->
-<!--            placeholder="请选择人员"-->
-<!--            clearable-->
-<!--            style="width: 100%"-->
-<!--            multiple-->
-<!--          >-->
-<!--            <el-option-->
-<!--              v-for="dict in dict.type.is_user_type"-->
-<!--              :key="dict.value"-->
-<!--              :label="dict.label"-->
-<!--              :value="dict.value"-->
-<!--            />-->
-<!--          </el-select>-->
-<!--        </el-form-item>-->
+
         <el-form-item label="人员名称" prop="mumberId" v-if="outsideMumber">
           <el-input
             v-model="dialogForm.username"
             placeholder="请输入人员名称"
             style="width: 100%"
+            @change="outSideUserInput"
           />
         </el-form-item>
       </el-form>
@@ -356,7 +342,8 @@ import {
   deleteIsJobTicket,
   getworkareaList
 } from '@/api/mes/job/job'
-import { listAllWorkshop } from '@/api/mes/md/workshop'
+import { listWorkshop } from '@/api/mes/md/workshop'
+import  {listWorkarea} from '@/api/mes/wa/workarea'
 import { getIsSopPage } from '@/api/mes/sop/sopindex'
 import { listUser } from '@/api/system/user'
 import { listDept } from '@/api/system/dept'
@@ -388,14 +375,14 @@ export default {
         locker: '', //上锁人
         coLocker: '', //共锁人
         ticketStartTime: '', //开始时间
-        ticketendTime: '', //结束时间
+        ticketEndTime: '', //结束时间
         ticketUserDTOList: [
-          {
-            userId: '',
-            userName: '',
-            userRole: '',//作业票角色 暂时不传递
-            userType: ''//用户类型 上锁人或共锁人
-          }
+          // {
+          //   userId: '',
+          //   userName: '',
+          //   userRole: '',//作业票角色 暂时不传递
+          //   userType: ''//用户类型 上锁人或共锁人
+          // }
         ]//所选择的用户
       },
       dialogForm: {
@@ -457,6 +444,18 @@ export default {
       }
     }
   },
+  watch: {
+    tableData: {
+      handler(newVal) {
+        // 将 pointId 提取出来并连接成一个字符串
+        if (newVal && newVal.length > 0) {
+          this.form.pointIds = this.tableData.map(item => item.pointId).join(',');
+          console.log(this.form.pointIds,this.tableData,'pointIds')
+        }
+      },
+      deep: true
+    }
+  },
   computed: {
     ...mapGetters('sopSelectPoints', [
       'getPointTableData'
@@ -465,6 +464,7 @@ export default {
   mounted() {
     this.getSopList()
     this.getUser()
+
     console.log(this.getPointTableData, 'this.getPointTableData')
     if (this.getPointTableData) {
       this.tableData = this.getPointTableData.pointDetailVOList.map((item) => {
@@ -475,9 +475,20 @@ export default {
           powerType: item.powerType
         }
       })
+
     }
   },
   methods: {
+    formatDateTime(date) {
+      const year = date.getFullYear().toString().padStart(2, '0');
+      const month = (date.getMonth() + 1).toString().padStart(2, '0');
+      const day = date.getDate().toString().padStart(2, '0');
+      const hours = date.getHours().toString().padStart(2, '0');
+      const minutes = date.getMinutes().toString().padStart(2, '0');
+      const seconds = date.getSeconds().toString().padStart(2, '0');
+
+      return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
+    },
     getSopList() {
       const query = {
         current: 1,
@@ -499,7 +510,6 @@ export default {
           return {
             label: item.nickName,
             value: item.userId,
-            key: item.deptId
           }
         })
       }),
@@ -509,7 +519,7 @@ export default {
             return {
               label: item.deptName,
               value: item.deptId,
-              key: item.parentId
+
             }
           })
         })
@@ -517,6 +527,9 @@ export default {
     // 添加内部人员 部门下拉的chage事件
     DeptChage(val) {
       console.log(val, ' 部门下拉')
+      // 每次选中先清空用户下拉
+      this.listUserOption=[]
+      this.dialogForm.nickName=null
       const query = {
         pageNum: 1,
         pageSize: 100000,
@@ -527,8 +540,7 @@ export default {
         this.listUserOption = res.rows.map((item) => {
           return {
             label: item.nickName,
-            value: item.deptId,
-            key: item.userId
+            value: item.userId,
           }
         })
       })
@@ -539,13 +551,62 @@ export default {
       console.log(this.jobProps, '父组件jobProps')
     },
     // 上锁人下拉选择change事件
-    handlelockerChage(val){
-      console.log(val,'上锁人chage')
-      const user=this.listUserOption.filter((item) => {
-        return item.value == val
-      })
-      console.log(user,'用户')
-
+    handlelockerChage(val) {
+      console.log(val, '上锁人chage');
+      const user = this.listUserOption.find(item => item.value === val);
+
+      if (user && this.form.locker !== '') {
+        const existingUser = this.form.ticketUserDTOList.find(u => u.userName === user.label);
+        if (!existingUser) {
+          this.form.ticketUserDTOList.push({
+            userName: user.label,
+            userId: user.value,
+            userType: 0
+          });
+          console.log(this.form.ticketUserDTOList, '用户');
+        } else {
+          console.log('用户已存在', user.label);
+        }
+      }
+    },
+    // 添加内部人员的用户新增到ticketUserDTOList这个数据里
+    changeInsideUser(values) {
+      this.form.coLocker=this.form.ticketUserDTOList
+      const usersinside = values.map(value => this.listUserOption.find(item => item.value === value)).filter(Boolean);
+      usersinside.forEach(user => {
+        const existingUser = this.form.ticketUserDTOList.find(u => u.userName === user.label);
+        if (!existingUser) {
+          this.form.ticketUserDTOList.push({
+            userName: user.label,
+            userId: user.value,
+            userType: 1
+          });
+        } else {
+          console.log('用户已存在', user.label);
+        }
+      });
+      this.updateCoLocker()
+      console.log(this.form.ticketUserDTOList, '用户');
+    },
+    // 添加外部人员 输入名称 userType==q userId==0
+    outSideUserInput(value) {
+      console.log(value, '外部人员名称');
+      this.form.coLocker=[...this.dialogForm.username]
+        const existingUser = this.form.ticketUserDTOList.find(u => u.userName === value);
+        if (!existingUser) {
+          this.form.ticketUserDTOList.push({
+            userName: value,
+            userId: 0,
+            userType: 1
+          });
+          console.log(this.form.ticketUserDTOList, '用户');
+        } else {
+          console.log('用户已存在', value);
+        }
+        this.updateCoLocker()
+    },
+    updateCoLocker() {
+      this.form.coLocker = this.form.ticketUserDTOList.map(user => user.userName);
     },
     handleClick(tab, event) {
       // console.log(tab, event);
@@ -559,14 +620,79 @@ export default {
       console.log(val, 'nextStep')
       this.activeName = val
       console.log('我点击了下一步')
-    }
-    ,
-    confirm() {
-      console.log('确认')
-    }
-    ,
-    // 子组件逆向传递选中的隔离点
+    },
+    async getWorkareaId(query) {
+      try {
+        const res = await listWorkarea(query);
+        console.log(res, '工作区域page');
+        return res.data.records[0].workareaId;
+      } catch (error) {
+        console.error('获取工作区域ID失败', error);
+        throw error;
+      }
+    },
+
+    async getWorkshopId(query) {
+      try {
+        const res = await listWorkshop(query);
+        console.log(res,'车间id')
+        return res.rows[0].workshopId;
+      } catch (error) {
+        console.error('获取车间ID失败', error);
+        throw error;
+      }
+    },
+
+    async confirm() {
+      try {
+        // 格式化时间
+        this.form.ticketStartTime = this.formatDateTime(new Date(this.form.ticketStartTime));
+        this.form.ticketEndTime = this.formatDateTime(new Date(this.form.ticketEndTime));
+        console.log(this.form, '拿到的所有参数确认');
+
+        const query = {
+          current: 1,
+          size: 100000,
+          workareaName: this.form.workline,
+        };
+
+        const query1 = {
+          current: 1,
+          size: 100000,
+          workshopName: this.form.workshopName,
+        };
+
+        const workareaId = await this.getWorkareaId(query);
+        const workshopId = await this.getWorkshopId(query1);
+
+        const data = {
+          pointIds: this.form.pointIds,
+          sopId: this.form.sopId,
+          ticketCode: this.form.ticketCode,
+          ticketContent: this.form.ticketContent,
+          ticketEndTime: this.form.ticketEndTime,
+          ticketName: this.form.ticketName,
+          ticketStartTime: this.form.ticketStartTime,
+          ticketType: this.form.ticketType,
+          ticketUserDTOList: this.form.ticketUserDTOList,
+          workareaId: workareaId,
+          workshopId: workshopId
+        };
+
+        const res = await addJobTicket(data);
+        if (res.code === 200) {
+          this.$router.go(-1);
+        } else {
+          console.error('提交工单失败', res);
+        }
+      } catch (error) {
+        console.error('确认过程中发生错误', error);
+      }
+
+      console.log('确认');
+    },
     // 子组件逆向传递选中的隔离点
+
     handleSelectPoint(points) {
       console.log(points, '父组件接收逆向传递选中的隔离点')
 
@@ -596,37 +722,37 @@ export default {
       // 更新 form.spoint 为最新选中的隔离点数组
       this.form.spoint = points.map((point) => point.pointId)
 
-    }
-    ,
+    },
     // 车间你逆向传递拿到的隔离点数据产线
     handleProductLineSelected(selectedOption) {
       // console.log(selectedOption, '父组件接收到的 selectedOption');
       this.points = selectedOption
       this.form.workline = selectedOption.label
-    }
-    ,
+    },
     // 车间子组件逆传递车间相关数据车间
     handleWorkshopSelected(selectedOption) {
       console.log(selectedOption, 'handleWorkshopSelected')
       this.emitWorkShop = selectedOption
       this.form.workshopName = selectedOption.label
-    }
-    ,
+    },
     // 添加内部人员
     addInside() {
       this.open = true
       this.title = '添加内部人员'
       this.insideMumber = true
       this.outsideMumber = false
-    }
-    ,
+      this.form.ticketUserDTOList=[]
+      this.dialogForm.deptId=""
+      this.dialogForm.nickname=""
+
+    },
     addOutside() {
       this.open = true
       this.title = '添加外部人员'
       this.insideMumber = false
       this.outsideMumber = true
-    }
-    ,
+      this.dialogForm.username=""
+    },
     // 取消按钮
     cancel() {
       this.open = false

+ 6 - 0
src/views/mes/job/jobm/index.vue

@@ -195,6 +195,12 @@
       <el-table-column label="车间名称" align="center" prop="workshopName">
       </el-table-column>
       <el-table-column label="作业类型" align="center" prop="ticketType">
+        <template slot-scope="scope">
+          <dict-tag
+            :options="dict.type.ticket_type"
+            :value="scope.row.ticketType"
+          />
+        </template>
       </el-table-column>
       <el-table-column label="产线" align="center" prop="workareaName">
       </el-table-column>