Browse Source

Merge branch 'dev' of https://e.coding.net/g-pheu9517/grt-iscs/ISCS_Ui_Admin_Base into dev

wangyani 11 tháng trước cách đây
mục cha
commit
4033a1b7c4

+ 1 - 1
src/components/separationPoint/index.vue

@@ -39,7 +39,7 @@ export default {
         if (newval) {
           this.$nextTick(()=>{
             this.initKonva()
-           
+
           })
         }
       }

+ 1 - 1
src/components/separationPoint/workshop.vue

@@ -33,7 +33,7 @@
       <el-col :span="4" :xs="24">
         <div class="middle">
           <img :src="imgsrc" alt="" v-if="imgsrc"/>
-          <p v-else>—————— 请选择车间 ——————</p>
+          <p v-else>—————— 请选择作业区域 ——————</p>
         </div>
       </el-col>
     </el-row>

+ 1 - 1
src/components/separationPoint/workshop1.vue

@@ -69,7 +69,7 @@
     <div class="leftbottom">
       <!-- <img src="../../assets/images/workshop.png" alt="" /> -->
       <img :src="imgsrc" alt="" v-if="imgsrc" />
-      <p v-else>—————— 请选择车间 ——————</p>
+      <p v-else>—————— 请选择作业区域 ——————</p>
     </div>
   </div>
 </template>

+ 4 - 5
src/views/mes/hw/Lock/index.vue

@@ -186,15 +186,14 @@
             </el-form-item>
           </el-col>
         </el-row>
-
         <el-form-item label="锁具名称" prop="locksetName">
           <el-input v-model="form.locksetName" placeholder="请输入锁具名称" />
         </el-form-item>
         <el-form-item label="锁具NFC" prop="locksetNfc">
-          <el-input v-model="form.locksetNfc" placeholder="请输入锁具Nfc" />
+          <el-input v-model="form.locksetNfc" placeholder="请输入锁具Nfc" maxlength="16"/>
         </el-form-item>
-        <el-form-item label="锁具RFID" prop="locksetRfid">
-          <el-input v-model="form.locksetRfid" placeholder="请输入锁具RFID" />
+        <el-form-item label="锁具RFID" prop="locksetRfid" >
+          <el-input v-model="form.locksetRfid" placeholder="请输入锁具RFID" maxlength="128"  oninput="value=value.replace(/[^\d.]/g,'')"/>
         </el-form-item>
         <el-form-item label="物资ID" prop="materialsId">
           <el-select
@@ -509,7 +508,7 @@ export default {
     //自动生成编码
     handleAutoGenChange(autoGenFlag) {
       if (autoGenFlag) {
-        genCode("LOCK_CODE").then((response) => {
+        genCode("LOCKSET_CODE").then((response) => {
           this.form.locksetCode = response;
         });
       } else {

+ 2 - 2
src/views/mes/hw/padLocks/index.vue

@@ -201,7 +201,7 @@
           <el-input v-model="form.lockName" placeholder="请输入挂锁名称" />
         </el-form-item>
         <el-form-item label="挂锁NFC" prop="lockNfc">
-          <el-input v-model="form.lockNfc" placeholder="请输入挂锁Nfc" />
+          <el-input v-model="form.lockNfc" placeholder="请输入挂锁Nfc" maxlength="16"/>
         </el-form-item>
         <el-form-item label="备注" prop="remark">
           <el-input v-model="form.remark" placeholder="请输入备注" />
@@ -351,7 +351,7 @@ export default {
     //自动生成编码
     handleAutoGenChange(autoGenFlag) {
       if (autoGenFlag) {
-        genCode("PAD_LOCK_CODE").then((response) => {
+        genCode("LOCK_CODE").then((response) => {
           this.form.lockCode = response;
           console.log(response, this.form.lockCode, "lockCode");
         });

+ 56 - 6
src/views/mes/job/jobm/NewOperations.vue

@@ -178,12 +178,12 @@
                       </el-table-column>
                       <el-table-column
                         prop="prePointId"
-                        label="前置点"
-                        width="100"
+                        label="前置隔离点"
+
                       >
                         <template slot-scope="scope">
                           <el-select size="mini" v-model="scope.row.prePointId" @change="prePointIdChange(scope.row)"
-                                     @visible-change="onDropdownVisibleChange(scope.row)"
+                                     @visible-change="onDropdownVisibleChange(scope.row)"  clearable @clear="clearprePointId"
                           >
                             <el-option v-for="item in prePointIdOptions"
                                        :key="item.pointId"
@@ -605,6 +605,14 @@ export default {
           this.ticketStartTimeChange(newVal);
         }
       },
+
+    },
+    "form.ticketEndTime":{
+      handler(newVal) {
+        if (newVal && newVal.length > 0) {
+          this.ticketEndTimeChange(newVal);
+        }
+      }
     },
   },
   computed: {
@@ -759,6 +767,7 @@ export default {
           this.form.ticketUserDTOList=response.data.ticketUserDTOList.filter((item)=>{return item.userRole !== "jtlocker"}) ;//过滤上锁人
           this.tableData = response.data.pointDetailVOList
           this.form.workareaId=response.data.workareaId
+          this.newticketUserDTOList=response.data.ticketUserDTOList.filter((item)=>{return item.userRole == "jtlocker"})
         })
         this.setSopEdit(false);//如果是选择sop的话 就不让再选隔离点
         console.log(this.jobProps, "父组件jobProps");
@@ -930,6 +939,25 @@ export default {
       // 重新调用 onDropdownVisibleChange 确保其他节点的选项更新
       this.onDropdownVisibleChange(row)
     },
+    // 前置节点清除操作
+    clearprePointId(row) {
+      console.log(row, '清除前置节点');
+
+      // 重置当前行的 prePointId 为 null
+      row.prePointId = null;
+
+      // 更新 tableData 中对应行的 prePointId
+      const index = this.tableData.findIndex(item => item.pointId === row.pointId);
+      if (index !== -1) {
+        this.$set(this.tableData, index, row);
+      }
+
+      // 恢复下拉选项为原始未过滤状态
+      this.prePointIdOptions = [...this.initprePointIdOptions];
+
+      // 调用 onDropdownVisibleChange 以刷新其他选项
+      this.onDropdownVisibleChange(row);
+    },
     // 子组件逆向传递选中的隔离点
     handleSelectPoint(points) {
       // console.log(points, '父组件接收逆向传递选中的隔离点');
@@ -1030,12 +1058,34 @@ export default {
     },
     ticketEndTimeChange(value) {
       this.form.ticketEndTime = value;
+      this.updatePickerOptions();
     },
+
     disabledDate(time) {
       const startTime = new Date(this.form.ticketStartTime);
-      return startTime && !isNaN(startTime.getTime())
-        ? time.getTime() < startTime.getTime()
-        : false;
+      const endTime = new Date(this.form.ticketEndTime);
+
+      // 如果有结束时间且开始时间大于结束时间,则开始时间不能大于结束时间
+      if (!isNaN(endTime.getTime()) && startTime > endTime) {
+        return time.getTime() > endTime.getTime();
+      }
+
+      // 如果开始时间是当天,则结束时间可以选择今天及之后的日期
+      if (!isNaN(startTime.getTime()) && startTime.toDateString() === new Date().toDateString()) {
+        return time.getTime() < startTime.getTime();
+      }
+
+      // 如果开始时间不是当天,则结束时间不能小于开始时间
+      if (!isNaN(startTime.getTime())) {
+        return time.getTime() < startTime.getTime();
+      }
+
+      // 如果有结束时间,则开始时间不能晚于结束时间
+      if (!isNaN(endTime.getTime())) {
+        return time.getTime() > endTime.getTime();
+      }
+
+      return false;
     },
     updatePickerOptions() {
       this.pickerOptions.disabledDate = this.disabledDate;

+ 2 - 1
src/views/mes/job/jobm/lookWork.vue

@@ -228,7 +228,7 @@
                   <el-table-column
                     prop="prePointId"
                     label="前置隔离点"
-                    width="90"
+
                   >
                     <template slot-scope="scope">
                       <el-select
@@ -237,6 +237,7 @@
                         @change="prePointIdChange(scope.row)"
                         @visible-change="onDropdownVisibleChange(scope.row)"
                         disabled
+                        clearable
                       >
                         <el-option
                           v-for="item in prePointIdOptions"

+ 1 - 1
src/views/mes/md/locksettype/index.vue

@@ -529,7 +529,7 @@ export default {
     //自动生成编码
     handleAutoGenChange(autoGenFlag) {
       if (autoGenFlag) {
-        genCode("LOCK_TYPE_CODE").then((response) => {
+        genCode("LOCKSET_TYPE_CODE").then((response) => {
           this.form.locksetTypeCode = response;
         });
       } else {

+ 1 - 1
src/views/mes/md/locktype/index.vue

@@ -516,7 +516,7 @@ export default {
     //自动生成编码
     handleAutoGenChange(autoGenFlag) {
       if (autoGenFlag) {
-        genCode("PAD_LOCK_TYPE_CODE").then((response) => {
+        genCode("LOCK_TYPE_CODE").then((response) => {
           this.form.lockTypeCode = response;
         });
       } else {

+ 225 - 208
src/views/mes/md/segregationpoint/index.vue

@@ -1,4 +1,4 @@
-    <template>
+<template>
   <div class="app-container">
     <el-form
       :model="queryParams"
@@ -78,14 +78,16 @@
           icon="el-icon-search"
           size="mini"
           @click="handleQuery"
-          >搜索</el-button
+        >搜索
+        </el-button
         >
         <el-button
           v-no-more-click
           icon="el-icon-refresh"
           size="mini"
           @click="resetQuery"
-          >重置</el-button
+        >重置
+        </el-button
         >
       </el-form-item>
     </el-form>
@@ -100,7 +102,7 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['mes:md:seg:add']"
-          >新增
+        >新增
         </el-button>
       </el-col>
       <el-col :span="1.5">
@@ -113,7 +115,7 @@
           :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['mes:md:seg:batchremove']"
-          >批量删除
+        >批量删除
         </el-button>
       </el-col>
       <!--      <el-col :span="1.5">-->
@@ -137,7 +139,7 @@
       :data="isolationList"
       @selection-change="handleSelectionChange"
     >
-      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column type="selection" width="55" align="center"/>
       <!-- <el-table-column label="隔离点ID" align="center" prop="pointId">
         <template slot-scope="scope">
           <el-button v-no-more-click
@@ -155,11 +157,11 @@
             type="text"
             @click="handleView(scope.row)"
             v-hasPermi="['mes:md:seg:query']"
-            >{{ scope.row.pointCode }}
+          >{{ scope.row.pointCode }}
           </el-button>
         </template>
       </el-table-column>
-      <el-table-column label="隔离点名称" align="center" prop="pointName" />
+      <el-table-column label="隔离点名称" align="center" prop="pointName"/>
       <!-- <el-table-column label="状态" align="center" prop="calendarType">
         <template slot-scope="scope">
           <dict-tag
@@ -233,7 +235,7 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['mes:md:seg:edit']"
-            >编辑
+          >编辑
           </el-button>
           <el-button
             v-no-more-click
@@ -242,7 +244,7 @@
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['mes:md:seg:remove']"
-            >删除
+          >删除
           </el-button>
         </template>
       </el-table-column>
@@ -295,7 +297,7 @@
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="12">
+          <el-col :span="11">
             <el-form-item label="隔离点名称" prop="pointName">
               <el-input
                 style="width: 300px"
@@ -305,24 +307,6 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label-width="80" label="锁具类型" prop="lockTypeCode">
-              <el-select
-                style="width: 300px"
-                v-model="form.lockTypeCode"
-                placeholder="请选择锁具类型"
-              >
-                <el-option
-                  v-for="dict in dict.type.lock_type"
-                  :key="dict.value"
-                  :label="dict.label"
-                  :value="dict.value"
-                />
-              </el-select>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="11">
             <el-form-item label="隔离点类型" prop="pointType">
               <el-select
                 style="width: 300px"
@@ -338,6 +322,9 @@
               </el-select>
             </el-form-item>
           </el-col>
+        </el-row>
+        <el-row>
+
           <el-col :span="11">
             <el-form-item label="危险能量类型" prop="powerType">
               <el-select
@@ -354,23 +341,8 @@
               </el-select>
             </el-form-item>
           </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="12">
+          <el-col :span="11">
             <el-form-item label="作业区域" prop="workareaId">
-              <!--              <el-select-->
-              <!--                style="width: 300px"-->
-              <!--                v-model="form.workareaId"-->
-              <!--                placeholder="请选择作业区域"-->
-              <!--              >-->
-              <!--                <el-option-->
-              <!--                  v-for="dict in this.workareaList"-->
-              <!--                  :key="dict.value"-->
-              <!--                  :label="dict.label"-->
-              <!--                  :value="dict.value"-->
-              <!--                />-->
-              <!--              </el-select>-->
-
               <treeselect
                 style="width: 300px"
                 v-model="form.workareaId"
@@ -381,6 +353,31 @@
             </el-form-item>
           </el-col>
         </el-row>
+        <el-row>
+          <el-col :span="11">
+            <el-form-item label="锁具类型" prop="locksetTypeId">
+              <treeselect
+                style="width: 300px"
+                v-model="form.locksetTypeId"
+                :options="LockTypeOptions"
+                :normalizer="normalizerLockset"
+                placeholder="选择作业区域"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="挂锁类型" prop="lockTypeId">
+              <treeselect
+                style="width: 300px"
+                v-model="form.lockTypeId"
+                :options="padLockTypeOptions"
+                :normalizer="normalizerpadLock"
+                placeholder="选择作业区域"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+
         <el-row>
           <el-col :span="8">
             <el-form-item label="隔离点图标" prop="pointIcon">
@@ -406,26 +403,13 @@
           </el-col>
         </el-row>
 
-        <!--        <el-form-item label="所属车间" prop="workshopId">-->
-        <!--          <el-select-->
-        <!--            style="width: 318px"-->
-        <!--            v-model="form.workshopId"-->
-        <!--            placeholder="请选择所属车间"-->
-        <!--            @change="workShopChange"-->
-        <!--          >-->
-        <!--            <el-option-->
-        <!--              v-for="item in this.workshopList"-->
-        <!--              :key="item.key"-->
-        <!--              :label="item.label"-->
-        <!--              :value="item.value"-->
-        <!--            />-->
-        <!--          </el-select>-->
-        <!--        </el-form-item>-->
+
       </el-form>
 
       <div slot="footer" class="dialog-footer">
         <el-button v-no-more-click type="primary" @click="submitForm"
-          >确 定</el-button
+        >确 定
+        </el-button
         >
         <el-button v-no-more-click @click="cancel">取 消</el-button>
       </div>
@@ -441,17 +425,19 @@ import {
   workshoplistAll,
   getIsWorkareaList,
   selectIsIsolationPointById,
-  deleteIsIsolationPointByPointIds,
-} from "@/api/mes/spm/segregationPoint";
-import { genCode } from "@/api/system/autocode/rule";
-import Treeselect from "@riophae/vue-treeselect";
-import "@riophae/vue-treeselect/dist/vue-treeselect.css";
-import { listWorkarea } from "@/api/mes/wa/workarea";
+  deleteIsIsolationPointByPointIds
+} from '@/api/mes/spm/segregationPoint'
+import { genCode } from '@/api/system/autocode/rule'
+import Treeselect from '@riophae/vue-treeselect'
+import '@riophae/vue-treeselect/dist/vue-treeselect.css'
+import { listWorkarea } from '@/api/mes/wa/workarea'
+import { listLockType } from '@/api/mes/locktype/locktype'
+import { listPadLockTypeAPI } from '@/api/mes/padLockType/padLockType'
 
 export default {
-  name: "Team",
+  name: 'Team',
   components: { Treeselect },
-  dicts: ["power_type", "point_type", "lock_type"],
+  dicts: ['power_type', 'point_type', 'lock_type'],
   data() {
     return {
       //自动生成编码
@@ -475,7 +461,7 @@ export default {
       // 班组表格数据
       isolationList: [],
       // 弹出层标题
-      title: "",
+      title: '',
       // 是否显示弹出层
       open: false,
       // 车间数据
@@ -485,75 +471,77 @@ export default {
       // 新增或修改
       pointId: null,
       // 查询参数
-      createTime: "",
+      createTime: '',
       queryParams: {
         current: 1,
         size: 10,
-        pointCode: "",
-        pointName: "",
-        delFlag: "",
-        pointType: "",
-        powerType: "",
-        startTime: "",
-        endTime: "",
+        pointCode: '',
+        pointName: '',
+        delFlag: '',
+        pointType: '',
+        powerType: '',
+        startTime: '',
+        endTime: ''
       },
       pickerOptions: {
         shortcuts: [
           {
-            text: "最近一周",
+            text: '最近一周',
             onClick(picker) {
-              const end = new Date();
-              const start = new Date();
-              start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
-              picker.$emit("pick", [start, end]);
-            },
+              const end = new Date()
+              const start = new Date()
+              start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
+              picker.$emit('pick', [start, end])
+            }
           },
           {
-            text: "最近一个月",
+            text: '最近一个月',
             onClick(picker) {
-              const end = new Date();
-              const start = new Date();
-              start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
-              picker.$emit("pick", [start, end]);
-            },
+              const end = new Date()
+              const start = new Date()
+              start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
+              picker.$emit('pick', [start, end])
+            }
           },
           {
-            text: "最近三个月",
+            text: '最近三个月',
             onClick(picker) {
-              const end = new Date();
-              const start = new Date();
-              start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
-              picker.$emit("pick", [start, end]);
-            },
-          },
-        ],
+              const end = new Date()
+              const start = new Date()
+              start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
+              picker.$emit('pick', [start, end])
+            }
+          }
+        ]
       },
       // 表单参数
       form: {},
+      LockTypeOptions: [],//锁具类型下拉
+      padLockTypeOptions: [],//挂锁类型下拉
       // 表单校验
       rules: {
         pointCode: [
-          { required: true, message: "隔离点编号不能为空", trigger: "blur" },
+          { required: true, message: '隔离点编号不能为空', trigger: 'blur' }
         ],
         pointName: [
-          { required: true, message: "隔离点名称不能为空", trigger: "blur" },
+          { required: true, message: '隔离点名称不能为空', trigger: 'blur' }
         ],
         workshopId: [
-          { required: true, message: "所属车间不能为空", trigger: "blur" },
+          { required: true, message: '所属车间不能为空', trigger: 'blur' }
         ],
         workareaId: [
-          { required: true, message: "作业区域不能为空", trigger: "blur" },
+          { required: true, message: '作业区域不能为空', trigger: 'blur' }
         ],
         pointType: [
-          { required: true, message: "隔离点类型不能为空", trigger: "blur" },
-        ],
-      },
-    };
+          { required: true, message: '隔离点类型不能为空', trigger: 'blur' }
+        ]
+      }
+    }
   },
   created() {
-    this.getList();
-    this.getworkShop();
-    this.getworkArea();
+    this.getList()
+    this.getworkShop()
+    this.getworkArea()
   },
   methods: {
     // 格式化日期查询数据
@@ -562,71 +550,99 @@ export default {
         // 使用本地时间
         return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(
           2,
-          "0"
-        )}-${String(date.getDate()).padStart(2, "0")}`;
+          '0'
+        )}-${String(date.getDate()).padStart(2, '0')}`
       }
-      return null;
+      return null
     },
     /** 查询隔离点信息列表 */
     getList() {
-      this.loading = true;
+      this.loading = true
       // 格式化日期并更新queryParams
       if (Array.isArray(this.createTime) && this.createTime.length === 2) {
-        this.queryParams.startTime = this.formatDate(this.createTime[0]);
-        this.queryParams.endTime = this.formatDate(this.createTime[1]);
+        this.queryParams.startTime = this.formatDate(this.createTime[0])
+        this.queryParams.endTime = this.formatDate(this.createTime[1])
       }
       getIsIsolationPointPage(this.queryParams).then((response) => {
         // console.log(response, "接口返回结果");
-        this.isolationList = response.data.records;
-        this.total = response.data.total;
-        this.loading = false;
-      });
+        this.isolationList = response.data.records
+        this.total = response.data.total
+        this.loading = false
+      })
       // 获取作业区域数据
-      const data={
-        current:1,
-        size:-1
+      const data = {
+        current: 1,
+        size: -1
       }
       listWorkarea(data).then((response) => {
         this.deptOptions = this.handleTree(
           response.data.records,
-          "workareaId",
-          "parentId",
-          "children"
-        );
-      });
+          'workareaId',
+          'parentId',
+          'children'
+        )
+      })
+      // 锁具类型
+      listLockType(data).then((response) => {
+        this.LockTypeOptions = this.handleTree(response.data.records, 'locksetTypeId')
+      })
+      //   挂锁类型
+      listPadLockTypeAPI(data).then((response) => {
+        this.padLockTypeOptions = this.handleTree(response.data.records, 'lockTypeId')
+      })
     },
     /** 转换部门数据结构 */
     normalizer(node) {
       if (node.children && !node.children.length) {
-        delete node.children;
+        delete node.children
       }
       return {
         id: node.workareaId,
         label: node.workareaName,
-        children: node.children,
-      };
+        children: node.children
+      }
+    },
+    normalizerLockset(node) {
+      if (node.children && !node.children.length) {
+        delete node.children
+      }
+      return {
+        id: node.locksetTypeId,
+        label: node.locksetTypeName,
+        children: node.children
+      }
+    },
+    normalizerpadLock(node) {
+      if (node.children && !node.children.length) {
+        delete node.children
+      }
+      return {
+        id: node.lockTypeId,
+        label: node.lockTypeName,
+        children: node.children
+      }
     },
     //图片上传成功
     handleImgUplaoded(imgUrl) {
-      this.form.pointPicture = imgUrl[0].url;
+      this.form.pointPicture = imgUrl[0].url
     },
     //图标上传成功
     handleIconUplaoded(imgUrl) {
-      this.form.pointIcon = imgUrl[0].url;
+      this.form.pointIcon = imgUrl[0].url
     },
     // 图标移除
     handleIconRemoved(imgUrl) {
-      this.form.pointIcon = null;
+      this.form.pointIcon = null
     },
 
     //图片移除
     handleImgRemoved(imgUrl) {
-      this.form.pointPicture = null;
+      this.form.pointPicture = null
     },
     // 取消按钮
     cancel() {
-      this.open = false;
-      this.reset();
+      this.open = false
+      this.reset()
     },
     // 表单重置
     reset() {
@@ -637,40 +653,40 @@ export default {
         pointPicture: null,
         pointType: null,
         powerType: null,
-        createTime: null,
-      };
-      this.autoGenFlag = false;
-      this.resetForm("form");
+        createTime: null
+      }
+      this.autoGenFlag = false
+      this.resetForm('form')
     },
     /** 搜索按钮操作 */
     handleQuery() {
-      this.queryParams.current = 1;
-      this.getList();
+      this.queryParams.current = 1
+      this.getList()
     },
     /** 重置按钮操作 */
     resetQuery() {
-      this.createTime = "";
-      (this.queryParams.startTime = ""),
-        (this.queryParams.endTime = ""),
-        this.resetForm("queryForm");
-      this.handleQuery();
+      this.createTime = '';
+      (this.queryParams.startTime = ''),
+        (this.queryParams.endTime = ''),
+        this.resetForm('queryForm')
+      this.handleQuery()
     },
     // 多选框选中数据
     handleSelectionChange(selection) {
-      this.ids = selection.map((item) => item.pointId);
-      this.codes = selection.map((item) => item.pointCode);
-      this.single = selection.length !== 1;
-      this.multiple = !selection.length;
+      this.ids = selection.map((item) => item.pointId)
+      this.codes = selection.map((item) => item.pointCode)
+      this.single = selection.length !== 1
+      this.multiple = !selection.length
     },
     /** 新增按钮操作 */
     handleAdd() {
-      this.reset();
-      this.open = true;
-      this.title = "添加隔离点";
-      this.optType = "add";
-      this.pointId = null;
-      this.form.workshopId = 0;
-      this.getworkShop();
+      this.reset()
+      this.open = true
+      this.title = '添加隔离点'
+      this.optType = 'add'
+      this.pointId = null
+      this.form.workshopId = 0
+      this.getworkShop()
     },
     // 查询明细按钮操作
     // handleView(row) {
@@ -685,110 +701,111 @@ export default {
     // },
     /** 修改按钮操作 */
     handleUpdate(row) {
-      this.reset();
-      this.pointId = row.pointId || this.ids;
+      this.reset()
+      this.pointId = row.pointId || this.ids
       selectIsIsolationPointById(this.pointId).then((response) => {
-        this.form = response.data;
-        this.open = true;
-        this.title = "修改隔离点信息";
-        this.optType = "edit";
-      });
+        this.form = response.data
+        this.open = true
+        this.title = '修改隔离点信息'
+        this.optType = 'edit'
+      })
     },
     /** 提交按钮 */
     submitForm() {
-      this.$refs["form"].validate((valid) => {
+      this.$refs['form'].validate((valid) => {
         if (valid) {
-          console.log(this.pointId, "this.pointId");
+          console.log(this.pointId, 'this.pointId')
           if (this.pointId != null) {
-            console.log(this.form, "隔离点编辑form");
+            console.log(this.form, '隔离点编辑form')
             updateIsIsolationPoint(this.form).then((response) => {
-              this.$modal.msgSuccess("修改成功");
-              this.open = false;
-              this.getList();
-            });
+              this.$modal.msgSuccess('修改成功')
+              this.open = false
+              this.getList()
+            })
           } else {
-            console.log(this.form, "新增参数");
+            console.log(this.form, '新增参数')
             addinsertIsIsolationPoint(this.form).then((response) => {
-              this.$modal.msgSuccess("新增成功");
-              this.open = false;
-              this.getList();
-              this.pointId = null;
-            });
+              this.$modal.msgSuccess('新增成功')
+              this.open = false
+              this.getList()
+              this.pointId = null
+            })
           }
         }
-      });
+      })
     },
     /** 删除按钮操作 */
     handleDelete(row) {
-      const teamIds = row.pointId || this.ids;
-      const pointcodes = row.pointCode || this.codes;
+      const teamIds = row.pointId || this.ids
+      const pointcodes = row.pointCode || this.codes
       this.$modal
         .confirm('是否确认删除隔离点编号为"' + pointcodes + '"的数据项?')
-        .then(function () {
-          return deleteIsIsolationPointByPointIds(teamIds);
+        .then(function() {
+          return deleteIsIsolationPointByPointIds(teamIds)
         })
         .then(() => {
-          this.getList();
-          this.$modal.msgSuccess("删除成功");
+          this.getList()
+          this.$modal.msgSuccess('删除成功')
+        })
+        .catch(() => {
         })
-        .catch(() => {});
     },
     /** 导出按钮操作 */
     handleExport() {
       this.download(
-        "cal/team/export",
+        'cal/team/export',
         {
-          ...this.queryParams,
+          ...this.queryParams
         },
         `team_${new Date().getTime()}.xlsx`
-      );
+      )
     },
     //自动生成编码
     handleAutoGenChange(autoGenFlag) {
       if (autoGenFlag) {
-        genCode("ISOLATION_POINT_CODE").then((response) => {
-          this.form.pointCode = response;
-        });
+        genCode('ISOLATION_POINT_CODE').then((response) => {
+          this.form.pointCode = response
+        })
       } else {
-        this.form.pointCode = null;
+        this.form.pointCode = null
       }
     },
     // 获取车间数据
     getworkShop() {
       workshoplistAll().then((response) => {
-        console.log(response, "获取车间数据");
+        // console.log(response, "获取车间数据");
         this.workshopList = response.data.map((item) => {
           return {
             label: item.workshopName,
             value: item.workshopId,
-            key: item.workshopCode,
-          };
-        });
-      });
+            key: item.workshopCode
+          }
+        })
+      })
     },
     // 所属车间下拉改变作业区域内容
     workShopChange() {
-      this.getworkArea();
+      this.getworkArea()
     },
     // 获取作业区域数据
     getworkArea() {
-      const workshopId = this.form.workshopId;
+      const workshopId = this.form.workshopId
 
       if (workshopId) {
         getIsWorkareaList(workshopId).then((response) => {
-          console.log(response, "获取作业区域数据");
+          console.log(response, '获取作业区域数据')
           this.workareaList = response.data.map((item) => {
             return {
               label: item.workareaName,
               value: item.workareaId,
-              key: item.workareaCode,
-            };
-          });
-        });
+              key: item.workareaCode
+            }
+          })
+        })
       }
-    },
-  },
-};
+    }
+  }
+}
 </script>
 <style lang="scss" src="@/assets/styles/dialog-title.scss" scoped>
 .el-input-width {

+ 6 - 3
src/views/mes/md/workarea/index.vue

@@ -411,7 +411,7 @@ export default {
         remark: null,
         map: null,
         workareaCode: null,
-        workareaId: null,
+        workareaId: undefined,
         workareaName: null,
         workareaType: null,
         workshopId: null,
@@ -470,14 +470,17 @@ export default {
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
-      this.reset();
+
       this.EditId = row.workareaId || this.ids;
       getWorkareaInfo(row.workareaId).then((response) => {
         this.form = response.data;
         this.open = true;
         this.title = "修改作业区域";
       });
-      data
+const data={
+  current:1,
+  size:-1
+}
       listWorkarea(data).then((response) => {
         this.deptOptions = this.handleTree(
           response.data.records,

+ 33 - 25
src/views/mes/sop/sopm/NewSop.vue

@@ -177,12 +177,12 @@
                       </el-table-column>
                       <el-table-column
                         prop="prePointId"
-                        label="前置点"
-                        width="100"
+                        label="前置隔离点"
+
                       >
                         <template slot-scope="scope">
                           <el-select size="mini" v-model="scope.row.prePointId" @change="prePointIdChange(scope.row)"
-                                     @visible-change="onDropdownVisibleChange(scope.row)"
+                                     @visible-change="onDropdownVisibleChange(scope.row)"  clearable
                           >
                             <el-option v-for="item in prePointIdOptions"
                                        :key="item.pointId"
@@ -614,8 +614,9 @@ export default {
 
       if (sopId !== null) {
         selectIsSopById(sopId).then((response) => {
-          console.log(response, '详细内容')
-
+          console.log(response, '详细内容 ')
+          this.sopProps = [response.data]
+          this.title = '修改隔离点信息'
           if (response.data.ticketUserDTOList) {
             this.openStaffing = true;
           }
@@ -625,33 +626,40 @@ export default {
             sopId: response.data.sopId,
             spoint: response.data.pointDetailVOList,
             ticketUserDTOList: response.data.ticketUserDTOList
-              .filter((item) => item.userRole !== "jtlocker")
+              ? response.data.ticketUserDTOList
+                .filter((item) => item.userRole !== "jtlocker")
+                .map((item) => ({
+                  userName: item.userName,
+                  userType: item.userType,
+                  userRole: item.userRole,
+                  userId: item.userId,
+                }))
+              : [],
+            locker: response.data.ticketUserDTOList
+              ? response.data.ticketUserDTOList
+                .filter((item) => item.userRole === "jtlocker")
+                .map((item) => item.userName)[0]
+              : null,
+            coLocker: response.data.ticketUserDTOList
+              ? response.data.ticketUserDTOList.map((item) => {
+                return item.userRole !== "jtlocker" ? item.userName : null;
+              })
+              : [],
+          };
+
+          this.newticketUserDTOList = response.data.ticketUserDTOList
+            ? response.data.ticketUserDTOList
+              .filter((item) => item.userRole === "jtlocker")
               .map((item) => ({
                 userName: item.userName,
                 userType: item.userType,
                 userRole: item.userRole,
                 userId: item.userId,
-              })),
-
-            locker: response.data.ticketUserDTOList
-              .filter((item) => item.userRole == "jtlocker")
-              .map((item) => item.userName)[0],
-            coLocker: response.data.ticketUserDTOList.map((item) => {
-              return item.userRole !== "jtlocker" ? item.userName : null;
-            }),
+              }))
+            : [];
 
-          };
-          this.newticketUserDTOList=response.data.ticketUserDTOList
-            .filter((item) => item.userRole == "jtlocker")
-            .map((item) => ({
-              userName: item.userName,
-              userType: item.userType,
-              userRole: item.userRole,
-              userId: item.userId,
-            })),
-            this.sopProps = [response.data]
           console.log(this.form,this.newticketUserDTOList,'编辑sop回显的数据',)
-          this.title = '修改隔离点信息'
+
         })
       } else {
         this.title = '新增隔离点信息'

+ 13 - 26
src/views/mes/sop/sopm/sopmLook.vue

@@ -231,7 +231,7 @@
                   <el-table-column
                     prop="prePointId"
                     label="前置隔离点"
-                    width="100"
+
                   >
                     <template slot-scope="scope">
                       <el-select
@@ -738,44 +738,31 @@ export default {
       if (sopId !== null) {
         selectIsSopById(sopId).then((response) => {
           console.log(response, "详细内容");
+          this.sopProps = [response.data];
+
+          this.title = "修改隔离点信息";
           this.form = response.data;
           this.workareaName = response.data.workareaId;
 
-          console.log(
-            response.data,
-            response.data.ticketUserDTOList,
-            "response.data.ticketUserDTOList"
-          );
+
           if (response.data.ticketUserDTOList.length > 0) {
             this.openStaffing = true;
           }
 
-          const value = response.data.ticketUserDTOList //找到上锁人  这里一定要先筛选locker再去给表格筛选 否则表格筛选之后直接不会有上锁人数据了
+          const value =response.data.ticketUserDTOList? response.data.ticketUserDTOList //找到上锁人  这里一定要先筛选locker再去给表格筛选 否则表格筛选之后直接不会有上锁人数据了
             .filter((item) => item.userRole == "jtlocker")
-            .map((item) => item.userName);
-          console.log(value, "上锁人");
-          (this.form.locker = value[0]), //map返回的是数字 所以这样写
-            console.log(value, response.data.ticketUserDTOList, "form.locker");
-          this.form.ticketUserDTOList = response.data.ticketUserDTOList.filter(
+            .map((item) => item.userName):[];
+          if(value){
+            this.form.locker = value[0] //map返回的是数字 所以这样写
+          }
+          this.form.ticketUserDTOList =response.data.ticketUserDTOList? response.data.ticketUserDTOList.filter(
             (item) => {
               return item.userRole !== "jtlocker";
             }
-          ); //过滤上锁人
-
-          // this.tableData = response.data.pointDetailVOList.map((item)=>{
-          //   return {
-          //     pointName: item.pointName, // 显示的名称
-          //     pointId: item.pointId, // 对应的值
-          //     pointType: item.pointTypeName,
-          //     powerType: item.powerTypeName,
-          //     prePointId: item.prePointId
-          //   }
-          // })
-          // console.log(this.tableData, '编辑拿到的隔离点数据')
+          ):[]; //过滤上锁人
+
 
-          this.sopProps = [response.data];
 
-          this.title = "修改隔离点信息";
         });
       } else {
         this.title = "新增隔离点信息";

+ 153 - 118
test.html

@@ -3,128 +3,163 @@
 <head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
-  <title>Enhanced Button Selection</title>
+  <title>倒转房屋线条</title>
   <style>
-    canvas {
-      border: 1px solid #000;
-      display: block;
-      margin: 0 auto;
+    .house {
+      position: relative;
+      width: 200px; /* 正方形的宽度 */
+      height: 200px; /* 正方形的高度 */
+      background-color: #f0f0f0; /* 正方形的颜色 */
+    }
+
+    .house::after {
+      content: '';
+      position: absolute;
+      top: 100%; /* 从正方形底部开始 */
+      left: 50%;
+      transform: translateX(-50%);
+      border-left: 100px solid transparent; /* 左边透明边 */
+      border-right: 100px solid transparent; /* 右边透明边 */
+      border-top: 100px solid #f0f0f0; /* 上边为倒立三角形的底边 */
     }
   </style>
 </head>
 <body>
-<canvas id="buttonCanvas" width="480" height="360"></canvas>
-
-<script>
-  const canvas = document.getElementById('buttonCanvas');
-  const ctx = canvas.getContext('2d');
-
-  const buttonWidth = 100;
-  const buttonHeight = 100;
-  const padding = 10;
-
-  const rows = 3;
-  const cols = 4;
-
-  const images = [
-    'https://via.placeholder.com/100/FF0000/FFFFFF?text=Red',
-    'https://via.placeholder.com/100/0000FF/FFFFFF?text=Blue',
-    'https://via.placeholder.com/100/00FF00/FFFFFF?text=Green',
-    'https://via.placeholder.com/100/FFFFFF/000000?text=White',
-    'https://via.placeholder.com/100/FFAA00/FFFFFF?text=Orange',
-    'https://via.placeholder.com/100/AAAAAA/FFFFFF?text=Gray',
-    'https://via.placeholder.com/100/FF00FF/FFFFFF?text=Magenta',
-    'https://via.placeholder.com/100/00FFFF/FFFFFF?text=Cyan',
-    'https://via.placeholder.com/100/FFFF00/FFFFFF?text=Yellow',
-    'https://via.placeholder.com/100/000000/FFFFFF?text=Black',
-    'https://via.placeholder.com/100/FF7777/FFFFFF?text=Pink',
-    'https://via.placeholder.com/100/7777FF/FFFFFF?text=Purple',
-  ];
-
-  let buttons = [];
-  let selectedButtons = new Set();
-
-  function loadImages(imageUrls, callback) {
-    const loadedImages = [];
-    let imagesToLoad = imageUrls.length;
-
-    imageUrls.forEach((url, index) => {
-      const img = new Image();
-      img.src = url;
-      img.onload = () => {
-        loadedImages[index] = img;
-        imagesToLoad--;
-        if (imagesToLoad === 0) callback(loadedImages);
-      };
-    });
-  }
-
-  function createButtons(images) {
-    let x, y;
-    for (let row = 0; row < rows; row++) {
-      for (let col = 0; col < cols; col++) {
-        const index = row * cols + col;
-        x = col * (buttonWidth + padding);
-        y = row * (buttonHeight + padding);
-        buttons.push({ x, y, width: buttonWidth, height: buttonHeight, image: images[index], id: index });
-      }
-    }
-  }
-
-  function drawButtons() {
-    ctx.clearRect(0, 0, canvas.width, canvas.height);
-    buttons.forEach(button => {
-      // 绘制按钮图片
-      ctx.drawImage(button.image, button.x, button.y, button.width, button.height);
-
-      if (selectedButtons.has(button.id)) {
-        // 绘制半透明灰色遮罩
-        ctx.fillStyle = 'rgba(50, 50, 50, 0.5)';
-        ctx.fillRect(button.x, button.y, button.width, button.height);
-
-        // 绘制白色对勾图标
-        ctx.fillStyle = 'white';
-        ctx.font = '20px Arial';
-        ctx.textAlign = 'center';
-        ctx.textBaseline = 'middle';
-        ctx.fillText('✔', button.x + button.width / 2, button.y + button.height / 2);
-
-        // 添加边框
-        ctx.strokeStyle = 'black';
-        ctx.lineWidth = 5;
-        ctx.strokeRect(button.x, button.y, button.width, button.height);
-      }
-    });
-  }
-
-  function handleCanvasClick(event) {
-    const rect = canvas.getBoundingClientRect();
-    const mouseX = event.clientX - rect.left;
-    const mouseY = event.clientY - rect.top;
-
-    buttons.forEach(button => {
-      if (
-        mouseX >= button.x &&
-        mouseX <= button.x + button.width &&
-        mouseY >= button.y &&
-        mouseY <= button.y + button.height
-      ) {
-        if (selectedButtons.has(button.id)) {
-          selectedButtons.delete(button.id); // 取消选中
-        } else {
-          selectedButtons.add(button.id); // 选中按钮
-        }
-        drawButtons();
-      }
-    });
-  }
-
-  canvas.addEventListener('click', handleCanvasClick);
-
-  loadImages(images, loadedImages => {
-    createButtons(loadedImages);
-    drawButtons();
-  });
-</script>
+<div class="house">
+
+</div>
 </body>
 </html>
+
+
+
+<!--<!DOCTYPE html>-->
+<!--<html lang="en">-->
+<!--<head>-->
+<!--  <meta charset="UTF-8">-->
+<!--  <meta name="viewport" content="width=device-width, initial-scale=1.0">-->
+<!--  <title>Enhanced Button Selection</title>-->
+<!--  <style>-->
+<!--    canvas {-->
+<!--      border: 1px solid #000;-->
+<!--      display: block;-->
+<!--      margin: 0 auto;-->
+<!--    }-->
+<!--  </style>-->
+<!--</head>-->
+<!--<body>-->
+<!--<canvas id="buttonCanvas" width="480" height="360"></canvas>-->
+
+<!--<script>-->
+<!--  const canvas = document.getElementById('buttonCanvas');-->
+<!--  const ctx = canvas.getContext('2d');-->
+
+<!--  const buttonWidth = 100;-->
+<!--  const buttonHeight = 100;-->
+<!--  const padding = 10;-->
+
+<!--  const rows = 3;-->
+<!--  const cols = 4;-->
+
+<!--  const images = [-->
+<!--    'https://via.placeholder.com/100/FF0000/FFFFFF?text=Red',-->
+<!--    'https://via.placeholder.com/100/0000FF/FFFFFF?text=Blue',-->
+<!--    'https://via.placeholder.com/100/00FF00/FFFFFF?text=Green',-->
+<!--    'https://via.placeholder.com/100/FFFFFF/000000?text=White',-->
+<!--    'https://via.placeholder.com/100/FFAA00/FFFFFF?text=Orange',-->
+<!--    'https://via.placeholder.com/100/AAAAAA/FFFFFF?text=Gray',-->
+<!--    'https://via.placeholder.com/100/FF00FF/FFFFFF?text=Magenta',-->
+<!--    'https://via.placeholder.com/100/00FFFF/FFFFFF?text=Cyan',-->
+<!--    'https://via.placeholder.com/100/FFFF00/FFFFFF?text=Yellow',-->
+<!--    'https://via.placeholder.com/100/000000/FFFFFF?text=Black',-->
+<!--    'https://via.placeholder.com/100/FF7777/FFFFFF?text=Pink',-->
+<!--    'https://via.placeholder.com/100/7777FF/FFFFFF?text=Purple',-->
+<!--  ];-->
+
+<!--  let buttons = [];-->
+<!--  let selectedButtons = new Set();-->
+
+<!--  function loadImages(imageUrls, callback) {-->
+<!--    const loadedImages = [];-->
+<!--    let imagesToLoad = imageUrls.length;-->
+
+<!--    imageUrls.forEach((url, index) => {-->
+<!--      const img = new Image();-->
+<!--      img.src = url;-->
+<!--      img.onload = () => {-->
+<!--        loadedImages[index] = img;-->
+<!--        imagesToLoad&#45;&#45;;-->
+<!--        if (imagesToLoad === 0) callback(loadedImages);-->
+<!--      };-->
+<!--    });-->
+<!--  }-->
+
+<!--  function createButtons(images) {-->
+<!--    let x, y;-->
+<!--    for (let row = 0; row < rows; row++) {-->
+<!--      for (let col = 0; col < cols; col++) {-->
+<!--        const index = row * cols + col;-->
+<!--        x = col * (buttonWidth + padding);-->
+<!--        y = row * (buttonHeight + padding);-->
+<!--        buttons.push({ x, y, width: buttonWidth, height: buttonHeight, image: images[index], id: index });-->
+<!--      }-->
+<!--    }-->
+<!--  }-->
+
+<!--  function drawButtons() {-->
+<!--    ctx.clearRect(0, 0, canvas.width, canvas.height);-->
+<!--    buttons.forEach(button => {-->
+<!--      // 绘制按钮图片-->
+<!--      ctx.drawImage(button.image, button.x, button.y, button.width, button.height);-->
+
+<!--      if (selectedButtons.has(button.id)) {-->
+<!--        // 绘制半透明灰色遮罩-->
+<!--        ctx.fillStyle = 'rgba(50, 50, 50, 0.5)';-->
+<!--        ctx.fillRect(button.x, button.y, button.width, button.height);-->
+
+<!--        // 绘制白色对勾图标-->
+<!--        ctx.fillStyle = 'white';-->
+<!--        ctx.font = '20px Arial';-->
+<!--        ctx.textAlign = 'center';-->
+<!--        ctx.textBaseline = 'middle';-->
+<!--        ctx.fillText('✔', button.x + button.width / 2, button.y + button.height / 2);-->
+
+<!--        // 添加边框-->
+<!--        ctx.strokeStyle = 'black';-->
+<!--        ctx.lineWidth = 5;-->
+<!--        ctx.strokeRect(button.x, button.y, button.width, button.height);-->
+<!--      }-->
+<!--    });-->
+<!--  }-->
+
+<!--  function handleCanvasClick(event) {-->
+<!--    const rect = canvas.getBoundingClientRect();-->
+<!--    const mouseX = event.clientX - rect.left;-->
+<!--    const mouseY = event.clientY - rect.top;-->
+
+<!--    buttons.forEach(button => {-->
+<!--      if (-->
+<!--        mouseX >= button.x &&-->
+<!--        mouseX <= button.x + button.width &&-->
+<!--        mouseY >= button.y &&-->
+<!--        mouseY <= button.y + button.height-->
+<!--      ) {-->
+<!--        if (selectedButtons.has(button.id)) {-->
+<!--          selectedButtons.delete(button.id); // 取消选中-->
+<!--        } else {-->
+<!--          selectedButtons.add(button.id); // 选中按钮-->
+<!--        }-->
+<!--        drawButtons();-->
+<!--      }-->
+<!--    });-->
+<!--  }-->
+
+<!--  canvas.addEventListener('click', handleCanvasClick);-->
+
+<!--  loadImages(images, loadedImages => {-->
+<!--    createButtons(loadedImages);-->
+<!--    drawButtons();-->
+<!--  });-->
+<!--</script>-->
+<!--</body>-->
+<!--</html>-->