Ver Fonte

删除使用selectLotoMapById的接口 修复作业票渲染写死的部分

pm há 2 meses atrás
pai
commit
5195984214

+ 13 - 36
src/router/index.js

@@ -143,37 +143,14 @@ export const dynamicRoutes = [
     hidden: true,
     permissions: ['mes:job:jobm:add'],
     children: [
-      {
-        path: 'NewOperations',
-        component: () => import('@/views/mes/job/jobm/NewOperations'),
-        name: 'NewOperations',
-        meta: { title: '作业管理-新建作业票', activeMenu: '/mes/job/jobm/NewOperations' }
-
-      },
       // mars 新建作业票流程
       {
         path: 'NewMarsJob',
         component: () => import('@/views/mes/job/jobm/NewMarsJob'),
         name: 'NewMarsJob',
         meta: { title: '作业管理-新建作业票', activeMenu: '/mes/job/jobm/NewMarsJob' }
-
-      },
-
-      {
-        path: 'NewOperationsEdit',
-        component: () => import('@/views/mes/job/jobm/NewOperations'),
-        name: 'NewOperationsEdit',
-        meta: { title: '作业管理-编辑作业票', activeMenu: '/mes/job/jobm/NewOperations' }
-
       },
-      {
-        path: 'lookWork',
-        component: () => import('@/views/mes/job/jobm/lookWork'),
-        name: 'lookWork',
-        meta: { title: '作业管理-查看作业票', activeMenu: '/mes/job/jobm/lookWork' }
-      }
-
-    ]
+      ]
   },
   {
     path: '/mes/job/jobplay',
@@ -278,33 +255,33 @@ export const dynamicRoutes = [
       }
     ]
   },
-  // 硬件锁柜管理详情
+  // 开关分布详情
   {
-    path: '/mes/hw/lockCabinet',
+    path: '/mes/dv/switchMotor/index',
     component: Layout,
     hidden: true,
-    permissions: ['iscs:station:list'],
+    permissions: ['iscs:switchmap:list'],
     children: [
       {
         path: 'LookDetail',
-        component: () => import('@/views/mes/hw/lockCabinet/lookDetail'),
+        component: () => import('@/views/mes/dv/switchMotor/LookDetail'),
         name: 'LookDetail',
-        meta: { title: '详情', activeMenu: '/mes/hw/lockCabinet/lookDetail' }
+        meta: { title: '预览', activeMenu: '/mes/dv/switchMotor/LookDetail' }
       }
     ]
   },
-  // 设备工艺详情
+  // 硬件锁柜管理详情
   {
-    path: '/mes/dv/technology/technologyList/index',
+    path: '/mes/hw/lockCabinet',
     component: Layout,
     hidden: true,
-    permissions: ['iscs:machinery:list'],
+    permissions: ['iscs:station:list'],
     children: [
       {
-        path: 'MapData',
-        component: () => import('@/views/mes/dv/technology/technologyList/MapData'),
-        name: 'MapData',
-        meta: { title: '设置隔离点', activeMenu: '/mes/dv/technology/technologyList/MapData' }
+        path: 'LookDetail',
+        component: () => import('@/views/mes/hw/lockCabinet/lookDetail'),
+        name: 'LookDetail',
+        meta: { title: '详情', activeMenu: '/mes/hw/lockCabinet/lookDetail' }
       }
     ]
   },

+ 6 - 4
src/views/mes/dv/lotoStation/MapData.vue

@@ -271,10 +271,12 @@ export default {
 
     close() {
       // this.$router.push('/mes/dv/lotoStation')
-      this.getInfo()
-      this.getIsIsolationPointPage()
-      this.initKonva()
-      this.addPointsToRightPointsBox()
+      setTimeout(()=>{
+        this.getInfo()
+        this.getIsIsolationPointPage()
+        this.initKonva()
+        this.addPointsToRightPointsBox()
+      },1000)
     },
     save() {
       this.$confirm('请确认是否保存修改内容', '提示', {

+ 72 - 76
src/views/mes/dv/lotoStation/SwitchStatus.vue

@@ -124,94 +124,90 @@ export default {
         // 获取不同底图 如地图或者柜子
         selectIsMapById(response.data.mapId).then((response) => {
           console.log(response, '获取底图')
+          if (response.data) {
+            try {
+              this.value = JSON.stringify(response.data.pointList, null, 4)
+
+              this.originData = this.value
+            } catch (err) {
+              console.error(err)
+            }
+          }
           this.imageUrl = response.data.imageUrl
           this.width = response.data.width
           this.height = response.data.height
           this.x = response.data.x
           this.y = response.data.y
-          this.pointList = response.data.pointList
+          this.pointList = response.data.pointList||[]
+          const data = {
+            current: 1,
+            size: -1,
+            lotoId: this.$route.query.lotoId
+          }
+          getIsIsolationPointPage(data).then((res) => {
+            const allPoints = res.data.records || [];  // 所有可绑定点
+            const placedPointIds = new Set((this.pointList || []).map(p => String(p.entityId)));
+
+            // 过滤:只留下还没有指定位置的点
+            const unplacedPoints = allPoints.filter(item => !placedPointIds.has(item.pointId));
+
+            console.log(allPoints, '所有点');
+            console.log(this.pointList, '已绑定并有位置的点');
+            console.log(unplacedPoints, '未绑定位置的点(需要放左上角0,0)');
+            //这里与pointList相同的数据就不渲染了 因为pointList会直接渲染出来的
+            // this.leftPoints = unplacedPoints.map((item) => {
+            //   return {
+            //     pointId: item.pointId,
+            //     entityId: item.pointId,
+            //     entityName: item.pointName,
+            //     pointName: item.pointName,
+            //     remark: item.remark,
+            //     prePointId: item.prePointId,
+            //     pointType: item.pointType,
+            //     pointTypeName: item.pointTypeName,
+            //     powerType: item.powerType,
+            //     powerTypeName: item.powerTypeName,
+            //     pointIcon: item.pointIcon,
+            //     status: false,
+            //     pointPicture: item.pointPicture,
+            //     mapImg: null,
+            //     mapId: this.form.mapId,
+            //     mapType: this.mapType,
+            //     mapName: '你好4',
+            //     x: 0,
+            //     y: 0
+            //   }
+            // })
+            // this.addPointsToLeftPointsBox(this.leftPoints)
+            this.orgLeftPoints = res.data.records.map((item) => {
+              return {
+                pointId: item.pointId,
+                entityId: item.pointId,
+                entityName: item.pointName,
+                pointName: item.pointName,
+                remark: item.remark,
+                prePointId: item.prePointId,
+                pointType: item.pointType,
+                pointTypeName: item.pointTypeName,
+                powerType: item.powerType,
+                powerTypeName: item.powerTypeName,
+                pointIcon: item.pointIcon,
+                status: false,
+                pointPicture: item.pointPicture,
+                mapImg: null,
+                mapId: this.form.mapId,
+                mapType: this.mapType,
+              }
+            })
+          })
           this.initKonva()
         })
 
       })
 
-      // 获取map-json
-      selectLotoMapById(lotoId, sopId, ticketId).then((response) => {
-        console.log(response, '作业区域预览接口调用')
-        this.form.map = response.data
-        this.filterData = response.data
-        const data = {
-          current: 1,
-          size: -1,
-          lotoId: this.$route.query.lotoId
-        }
-        getIsIsolationPointPage(data).then((res) => {
-          const data1 = res.data.records
-          const data2 = this.filterData
-          console.log(data1, '该柜子或地图所有点', data2, '该柜子里json拿到的点位')
-
-          // 创建一个 Set 来存储 data2 中的 pointId
-          const data2PointIds = new Set(data2.map((item) => item.pointId))
-
-          // 创建一个 Set 来存储 this.pointList 中的 pointId
-          const pointListIds = new Set(this.pointList.map((item) => item.pointId))
-
-          // 过滤掉 data2 和 this.pointList 中已经存在的点位
-          const filterData = data1.filter(
-            (item) => !data2PointIds.has(item.pointId) && !pointListIds.has(item.pointId)
-          )
-
-          console.log(filterData, 'filterData-交叉数据')
-          //这里与pointList相同的数据就不渲染了 因为pointList会直接渲染出来的
-          // this.leftPoints = filterData.map((item) => {
-          //   return {
-          //     pointId: item.pointId,
-          //     entityId: item.pointId,
-          //     entityName: item.pointName,
-          //     pointName: item.pointName,
-          //     remark: item.remark,
-          //     prePointId: item.prePointId,
-          //     pointType: item.pointType,
-          //     pointTypeName: item.pointTypeName,
-          //     powerType: item.powerType,
-          //     powerTypeName: item.powerTypeName,
-          //     pointIcon: item.pointIcon,
-          //     status: false,
-          //     pointPicture: item.pointPicture,
-          //     mapImg: null
-          //   }
-          // })
-          // this.addPointsToLeftPointsBox(filterData)
-          this.orgLeftPoints = res.data.records.map((item) => {
-            return {
-              pointId: item.pointId,
-              entityId: item.pointId,
-              entityName: item.pointName,
-              pointName: item.pointName,
-              remark: item.remark,
-              prePointId: item.prePointId,
-              pointType: item.pointType,
-              pointTypeName: item.pointTypeName,
-              powerType: item.powerType,
-              powerTypeName: item.powerTypeName,
-              pointIcon: item.pointIcon,
-              status: false,
-              pointPicture: item.pointPicture,
-              mapImg: null
-            }
-          })
-        })
-        if (response.data) {
-          try {
-            this.value = JSON.stringify(response.data, null, 4)
-            this.originData = this.value
-          } catch (err) {
-          }
-        }
-        this.initKonva()
-      })
 
     },
+
     // 获取未绑定的所有隔离点
     getIsIsolationPointPage() {
 

+ 2 - 0
src/views/mes/dv/segregationpoint/index.vue

@@ -458,6 +458,7 @@
                 style="width: 300px"
                 v-model="form.lotoId"
                 placeholder="请选择锁定站"
+                :disabled="this.optType=='edit'"
               >
                 <el-option
                   v-for="dict in lotoOptions"
@@ -475,6 +476,7 @@
                 style="width: 300px"
                 v-model="form.switchMapId"
                 placeholder="请选择布局地图"
+                :disabled="this.optType=='edit'"
               >
                 <el-option
                   v-for="dict in switchMapOptions"

+ 2 - 4
src/views/mes/dv/switchmanagement/MapData.vue

@@ -504,7 +504,7 @@ export default {
       this.unbindPointIds = []
       this.movePoints = []
 
-      const positions = (this.pointList || []).map(item => ({
+      const positions = this.pointList.map(item => ({
         row: item.x,
         col: item.y,
         id: item.id,
@@ -520,9 +520,7 @@ export default {
         pointIcon: item.pointIcon,
         pointPicture: item.pointPicture
       }))
-      // console.log(positions,'positions')
-
-      const rightBoxBounds = { x: 1100, y: 15, width: 200, height: 800 }
+      console.log(positions,'positions')
 
       positions.forEach(pos => {
         const x = pos.x * 50

+ 23 - 14
src/views/mes/dv/technology/technologyDetail/MapData.vue

@@ -79,26 +79,35 @@ export default {
       const machineryId = this.machineryId
       getTechnologyInfo(machineryId).then((response) => {
         const lotoId = response.data.lotoId
-        const sopId = ''
-        const ticketId = ''
-        selectLotoMapById(lotoId, sopId, ticketId).then(response => {
-          console.log(response, '电柜预览接口调用')
-          this.form.map = response.data
-          if (response.data) {
-            try {
-              this.value = JSON.stringify(response.data, null, 4)
-              this.orignData = this.value
-              this.initKonva()
-            } catch (err) {
-            }
-          }
-        })
+        // const sopId = ''
+        // const ticketId = ''
+        // selectLotoMapById(lotoId, sopId, ticketId).then(response => {
+        //   console.log(response, '电柜预览接口调用')
+        //   this.form.map = response.data
+        //   if (response.data) {
+        //     try {
+        //       this.value = JSON.stringify(response.data, null, 4)
+        //       this.orignData = this.value
+        //       this.initKonva()
+        //     } catch (err) {
+        //     }
+        //   }
+        // })
         selectIsLotoStationById(lotoId).then((response) => {
           console.log(response, '电柜信息')
           this.form = response.data
           // 获取不同底图 如地图或者柜子
           selectIsMapById(response.data.mapId).then((response) => {
             console.log(response, '获取底图')
+            if (response.data) {
+              try {
+                this.value = JSON.stringify(response.data.pointList, null, 4)
+
+                this.originData = this.value
+              } catch (err) {
+                console.error(err)
+              }
+            }
             this.imageUrl = response.data.imageUrl
             this.width = response.data.width
             this.height = response.data.height

+ 0 - 394
src/views/mes/dv/technology/technologyList/MapData.vue

@@ -1,394 +0,0 @@
-<template>
-  <div class="mapdata">
-    <div id="container" ref="container" style="width:1200px"></div>
-    <div class="left">
-      <el-card class="box-card">
-        <div slot="header" class="clearfix">
-          <span style="font-size: 18px">电柜信息展示</span>
-          <span
-            style="
-                float: right;
-                padding: 1px 0;
-                font-size: 22px;
-                cursor: pointer;
-              "
-            type="text"
-            @click="goBack"
-          >×</span
-          >
-        </div>
-        <div style="height: 100%;padding-bottom:10px">
-          <el-input v-model="value" type="textarea" :rows="34" disabled></el-input>
-
-        </div>
-        <div class="bottombtn" style="width:100%;height: 35px;padding: 10px 0 0">
-          <el-button v-no-more-click @click="save" type="primary" icon="el-icon-edit" style="float: right; height: 33px; line-height: 2px">保存</el-button>
-          <el-button v-no-more-click @click="close" type="primary" icon="el-icon-close"  style="float: right; height: 33px; line-height: 2px;margin: 0 10px">关闭</el-button>
-<!--          <el-button v-no-more-click @click="reset" type="primary" icon="el-icon-refresh"  style="float: right; height: 33px; line-height: 2px;margin: 0 10px">重置</el-button>-->
-<!--          <el-button v-no-more-click @click="view" type="primary" icon="el-icon-view" style="float: right; height: 33px; line-height: 2px">预览</el-button>-->
-        </div>
-      </el-card>
-
-    </div>
-  </div>
-
-</template>
-
-<script>
-import Konva from "konva";
-import {selectLotoMapById,selectIsLotoStationById,updateLoto} from '@/api/mes/lotoStation/lotoStation'
-import { getTechnologyInfo, saveMachineryPoints } from '@/api/system/machinery'
-
-export default {
-  name: "KonvaExample",
-  data() {
-    return {
-      stage: null,
-      layer: null,
-      selectedStates: [], // 用于存储每个元素的选中状态
-      selectedText: [], // 用于存储未选中的元素文本
-      rects: [], // 白色r        ect合集
-      texts: [], // 白色text合集
-      redrects: [], // 红色rect合集
-      redtexts: [], // 白色text合集
-      value:'',
-      form:{},//拿到单个数据
-      orignData:null,//原始数据
-      pointIdList:[],//选中的隔离点
-      selectPoints:[],//回显之前选中的隔离点
-    };
-  },
-  watch:{
-    '$route.query.lotoId':{
-      handler(newValue){
-        if(newValue){
-          this.selectIsLotoStationById()
-          this.initKonva();
-        }
-      }
-    }
-  },
-  mounted() {
-    this.$nextTick(()=>{
-      this.selectIsLotoStationById()
-    })
-    console.log(this.$route.query.lotoId,'lotoId');
-  },
-
-  methods: {
-    goBack(){
-      this.$router.push('/technology/technologyList');
-    },
-    close(){
-      this.$router.push('/technology/technologyList');
-    },
-    selectIsLotoStationById(){
-      const lotoId=this.$route.query.lotoId;
-      const sopId=''
-      const ticketId=''
-      selectIsLotoStationById(lotoId).then((response) => {
-        console.log(response,'电柜信息')
-        this.form=response.data
-      })
-      selectLotoMapById(lotoId,sopId,ticketId).then(response => {
-        console.log(response,'电柜预览接口调用');
-        this.form.map=response.data;
-
-        if (response.data) {
-          try {
-            this.value = JSON.stringify(response.data, null, 4);
-            this.orignData=this.value
-          } catch (err) {}
-        }
-        this.initKonva();
-      })
-    //   设备工艺详情
-      getTechnologyInfo(this.$route.query.machineryId).then(response => {
-        console.log(response,'设备/工艺详情');
-        this.selectPoints=response.data.pointIdList;
-      })
-    },
-    // 重置
-    reset(){
-      this.value = this.orignData;
-      this.initKonva(); // 重新初始化 Konva
-    },
-    // 预览
-    view(){
-      if(this.isJson(this.value)){
-        this.form.map=this.value
-        this.initKonva();
-      }else {
-        this.$message({
-          type: 'error',
-          message: '地图数据格式不正确,请输入有效的 JSON 格式!'
-        });
-      }
-    },
-    save() {
-      this.$confirm('请确认是否保存修改内容', '提示', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning'
-      }).then(() => {
-        // 校验 this.value 是否为有效的 JSON
-        if (this.isJson(this.value)) {
-          const machineryId=this.$route.query.machineryId
-          const formData = {
-            machineryId:machineryId,
-            pointIdList:this.pointIdList,
-          };
-          console.log(this.form, formData,'map')
-          saveMachineryPoints(formData).then(response => {
-            console.log(response, '修改设备/工艺地图');
-            this.$router.push('/technology/technologyList');
-            this.$message({
-              type: 'success',
-              message: '保存成功!'
-            });
-          });
-        } else {
-          this.$message({
-            type: 'error',
-            message: '地图数据格式不正确,请输入有效的 JSON 格式!'
-          });
-        }
-      }).catch(() => {
-        // 取消操作
-      });
-    },
-
-    // 校验字符串是否为有效的 JSON
-    isJson(str) {
-      try {
-        JSON.parse(str);
-        return true;
-      } catch (e) {
-        return false;
-      }
-    },
-    initKonva() {
-      // 创建舞台
-      this.stage = new Konva.Stage({
-        container: this.$refs.container, // 容器元素
-        width: 1200,
-        height: 860,
-      });
-
-      // 创建图层
-      this.layer = new Konva.Layer();
-
-      // 创建底图
-      const bgImage = new Image();
-      bgImage.src = require("@/assets/images/table.png");
-      bgImage.onload = () => {
-        const knovaImage = new Konva.Image({
-          x: 330,
-          y: 10,
-          image: bgImage,
-          width: 500,
-          height: 790,
-          draggable: false,
-        });
-        this.layer.add(knovaImage);
-        this.layer.draw();
-      };
-
-      // 绘制无限网格
-      this.drawGrid(50, 50, "#e0e0e0"); // 每个单元格50x50,浅灰色网格
-
-      // 渲染数据
-      const imageSrc = require("@/assets/images/localSetIcon.jpg"); // 图片路径
-      this.renderGrid(imageSrc, 6, 3, 450, 100, 120, 100, 50, 50, 60, 25);
-
-      // 将图层添加到舞台
-      this.stage.add(this.layer);
-      this.layer.draw();
-
-      // 禁止舞台拖拽
-      this.stage.draggable(false);
-    },
-
-    // 绘制无限网格
-    drawGrid(cellWidth, cellHeight, gridColor) {
-      const width = 1200;
-      const height = 860;
-
-      // 绘制竖线
-      for (let i = 0; i <= width; i += cellWidth) {
-        const verticalLine = new Konva.Line({
-          points: [i, 0, i, height],
-          stroke: gridColor,
-          strokeWidth: 1,
-        });
-        this.layer.add(verticalLine);
-      }
-
-      // 绘制横线
-      for (let j = 0; j <= height; j += cellHeight) {
-        const horizontalLine = new Konva.Line({
-          points: [0, j, width, j],
-          stroke: gridColor,
-          strokeWidth: 1,
-        });
-        this.layer.add(horizontalLine);
-      }
-
-      this.layer.draw();
-    },
-
-    renderGrid(imageSrc) {
-      this.selectedStates = []; // 用数组来存储选中状态
-      this.rects = {};
-      this.texts = {};
-      this.bgrects = {};
-      this.redrects = {};
-      this.redtexts = {};
-      this.selectedText = [];
-      this.pointIdList = []; // 初始化选中的点ID列表
-
-      const positions = JSON.parse(this.value);
-
-      positions.forEach((pos, index) => {
-        const x = pos.col * 50; // 每个单元格宽度为50
-        const y = pos.row * 50; // 每个单元格高度为50
-        const labelText = pos.pointName; // 对应的文字
-
-        const point = new Image();
-        point.src = pos.pointIcon;
-        point.onload = () => {
-          const knovaImage = new Konva.Image({
-            x: x,
-            y: y,
-            image: point,
-            width: 50,
-            height: 50,
-            draggable: false,
-          });
-
-          // 添加点击事件监听器
-          knovaImage.on('click', () => {
-            const isCurrentlySelected = this.redrects[labelText].visible();
-
-            if (isCurrentlySelected) {
-              // 如果当前已选中,则取消选中
-              this.redrects[labelText].visible(false);
-              this.redtexts[labelText].visible(false);
-              this.pointIdList = this.pointIdList.filter(id => id !== pos.pointId); // 移除ID
-            } else {
-              // 如果当前未选中,则选中
-              this.redrects[labelText].visible(true);
-              this.redtexts[labelText].visible(true);
-              this.pointIdList.push(pos.pointId); // 添加ID
-            }
-
-            this.layer.batchDraw(); // 更新图层显示
-          });
-
-          // 底部白色背景
-          const bgrect = new Konva.Rect({
-            x: x - 6,
-            y: y - 5,
-            width: 62,
-            height: 80,
-            cornerRadius: 5,
-            stroke: 'white',
-            strokeWidth: 2,
-            fill: 'white'
-          });
-          this.layer.add(bgrect);
-          this.bgrects[labelText] = bgrect; // 用文字作为键存储
-
-          // 普通矩形
-          const rect = new Konva.Rect({
-            x: x + 0,
-            y: y - 1,
-            width: 50,
-            height: 72,
-            cornerRadius: 5,
-            stroke: 'red',
-            strokeWidth: 2,
-            fill: 'white'
-          });
-          this.layer.add(rect);
-          this.rects[labelText] = rect; // 用文字作为键存储
-
-          // 先加底部白色 再添加图片
-          this.layer.add(knovaImage);
-
-          // 普通文字
-          const text = new Konva.Text({
-            x: x + 8,
-            y: y + 50,
-            fontSize: 17,
-            text: labelText,
-            fontFamily: 'Calibri',
-            fill: 'red'
-          });
-          this.layer.add(text);
-          this.texts[labelText] = text; // 用文字作为键存储
-
-          // 覆盖层(表示选中状态)
-          const redrect = new Konva.Rect({
-            x: x - 7,
-            y: y - 6,
-            width: 64.1,
-            height: 82,
-            cornerRadius: 5,
-            fill: 'rgba(97, 97, 97, 0.5)', // 半透明灰色
-            visible: false, // 初始状态隐藏
-            listening: false
-          });
-          this.layer.add(redrect);
-          this.redrects[labelText] = redrect; // 用文字作为键存储
-
-          // 创建对号文本
-          const redtext = new Konva.Text({
-            x: x - 5 + 42 / 2, // 水平居中
-            y: y + 62 / 2, // 垂直居中
-            fontSize: 24, // 根据需要调整字体大小
-            text: '✔',
-            fontFamily: 'Arial',
-            fill: 'white',
-            align: 'center',
-            verticalAlign: 'middle',
-            visible: false, // 初始隐藏状态
-            listening: false,
-          });
-          this.layer.add(redtext);
-          this.redtexts[labelText] = redtext; // 用文字作为键存储
-
-          // 检查 selectPoints 是否存在并且不为空
-          if (Array.isArray(this.selectPoints) && this.selectPoints.length > 0) {
-            if (this.selectPoints.includes(pos.pointId)) {
-              // 设置选中状态
-              this.redrects[labelText].visible(true);
-              this.redtexts[labelText].visible(true);
-              this.pointIdList.push(pos.pointId); // 添加ID
-            }
-          }
-
-          this.layer.draw();
-        };
-      });
-    }
-  },
-};
-</script>
-
-<style scoped lang="scss">
-#container {
-  width: 100%;
-  height: 100%;
-}
-.mapdata{
-  width: 100%;
-  height: 100%;
-  display: flex;
-}
-.left{
-  flex: 1;
-  display: flex;
-  flex-direction: column;
-}
-</style>

+ 13 - 13
src/views/mes/job/jobm/LockDetail.vue

@@ -85,19 +85,19 @@ export default {
             this.initKonva()
           })
         })
-        selectLotoMapById(lotoId, sopId, ticketId).then(response => {
-          console.log(response, '电柜预览接口调用')
-          this.form.map = response.data
-
-          if (response.data) {
-            try {
-              this.value = JSON.stringify(response.data, null, 4)
-              this.orignData = this.value
-            } catch (err) {
-            }
-          }
-          this.initKonva()
-        })
+        // selectLotoMapById(lotoId, sopId, ticketId).then(response => {
+        //   console.log(response, '电柜预览接口调用')
+        //   this.form.map = response.data
+        //
+        //   if (response.data) {
+        //     try {
+        //       this.value = JSON.stringify(response.data, null, 4)
+        //       this.orignData = this.value
+        //     } catch (err) {
+        //     }
+        //   }
+        //   this.initKonva()
+        // })
       })
 
       //   设备工艺详情

+ 13 - 13
src/views/mes/job/jobm/Mapdata.vue

@@ -87,19 +87,19 @@ export default {
             this.initKonva()
           })
         })
-        selectLotoMapById(lotoId, sopId, ticketId).then((response) => {
-          console.log(response, '电柜预览接口调用')
-          this.form.map = response.data
-
-          if (response.data) {
-            try {
-              this.value = JSON.stringify(response.data, null, 4)
-              this.orignData = this.value
-            } catch (err) {
-            }
-          }
-          this.initKonva()
-        })
+        // selectLotoMapById(lotoId, sopId, ticketId).then((response) => {
+        //   console.log(response, '电柜预览接口调用')
+        //   this.form.map = response.data
+        //
+        //   if (response.data) {
+        //     try {
+        //       this.value = JSON.stringify(response.data, null, 4)
+        //       this.orignData = this.value
+        //     } catch (err) {
+        //     }
+        //   }
+        //   this.initKonva()
+        // })
       })
 
       //   设备工艺详情

+ 21 - 19
src/views/mes/job/jobm/NewMarsJob.vue

@@ -833,18 +833,17 @@
       append-to-body
       class="elDialog"
     >
-      <!--      这里为了没有地图数据而设置的-->
       <el-row>
         <el-col :span="6">
           <div>
             <el-table :data="selectPointList" :show-header="false" style="width: 200px;height: 175px;">
               <el-table-column
-                prop="pointName"
-                label=""
+                prop="entityName"
+                label="隔离点名称"
               ></el-table-column>
               <el-table-column
                 prop="remark"
-                label=""
+                label="作用"
               ></el-table-column>
             </el-table>
           </div>
@@ -1165,23 +1164,26 @@ export default {
 
       getStepInfo(this.ticketId).then((res) => {
         this.EightStepForm = res.data
-        console.log(res, '作业票-详细信息')
+        console.log(res, '作业票步骤-详细信息')
       })
       this.machineryId = data.machineryId
       // 获取设备工艺图
       getTechnologyInfo(data.machineryId).then((res) => {
+        console.log(res,'工艺信息')
         this.machineryImg = res.data.machineryImg
         // 获取电柜选中隔离点
         const lotoId = res.data.lotoId
         const selectPointsIds = res.data.pointIdList
-
-        selectLotoMapById(lotoId).then((response) => {
-          console.log(response, '电柜信息--NewMarsJob')
-          this.selectPointList = response.data.filter((item) =>
-            selectPointsIds.includes(item.pointId)
-          )
-          console.log(this.selectPointList, '拿到的选中隔离点数据')
+        selectIsLotoStationById(lotoId).then((res) => {
+          selectIsMapById(res.data.mapId).then((response) => {
+            console.log(response, '电柜信息--NewMarsJob')
+            this.selectPointList = response.data.pointList.filter((item) =>
+              selectPointsIds.includes(item.entityId)
+            )
+            console.log(this.selectPointList, '拿到的选中隔离点数据')
+          })
         })
+
       })
     },
     getList() {
@@ -1325,13 +1327,13 @@ export default {
               // 获取电柜选中隔离点
               const lotoId = res.data.lotoId
               const selectPointsIds = res.data.pointIdList
-
-              selectLotoMapById(lotoId).then((response) => {
-                console.log(response, '电柜信息--NewMarsJob')
-                this.selectPointList = response.data.filter((item) =>
-                  selectPointsIds.includes(item.pointId)
-                )
-                console.log(this.selectPointList, '拿到的选中隔离点数据')
+              selectIsLotoStationById(lotoId).then((res) => {
+                selectIsMapById(res.data.mapId).then((response) => {
+                  this.selectPointList = response.data.filter((item) =>
+                    selectPointsIds.includes(item.pointId)
+                  )
+                  console.log(this.selectPointList, '拿到的选中隔离点数据')
+                })
               })
             })
           })

+ 0 - 1305
src/views/mes/job/jobm/NewOperation1.vue

@@ -1,1305 +0,0 @@
-<template>
-  <div class="newOperations">
-    <!--    newOperations盒子开始-->
-    <div class="left">
-      <!--        左边第一个是隔离点组件-->
-      <!--        第二个是车间组件-->
-
-      <SeparationPoint
-        v-show="this.activeName == 'second'"
-        @selection-changed="handleSelectPoint"
-        :points="points"
-      ></SeparationPoint>
-      <keep-alive>
-        <WorkShop
-          v-show="this.activeName == 'first' || this.activeName == 'third'"
-          @product-line-selected="handleProductLineSelected"
-          @work-shop-selected="handleWorkshopSelected"
-          :jobProps="jobProps"
-        ></WorkShop>
-      </keep-alive>
-    </div>
-    <div class="right">
-      <div class="right_top">
-        <el-card class="box-card">
-          <div slot="header" class="clearfix">
-            <span style="font-size: 18px">{{ this.getTicketTitle }}</span>
-            <span
-              style="
-                float: right;
-                padding: 1px 0;
-                font-size: 22px;
-                cursor: pointer;
-              "
-              type="text"
-              @click="goBack"
-            >×</span
-            >
-          </div>
-          <div class="text item">
-            <el-tabs v-model="activeName" @tab-click="handleClick">
-              <el-tab-pane label="作业票信息" name="first">
-                <!--                  新增作业票信息-->
-                <el-form ref="form" :model="form" label-width="90px">
-                  <el-form-item label="选择SOP" prop="sop">
-                    <el-select
-                      :disabled="this.getSopLook"
-                      v-model="form.sopId"
-                      placeholder="请选择sop"
-                      clearable
-                      style="width: 100%"
-                      @clear="handleClearSop"
-                      @change="handleSelectSOP"
-                    >
-                      <el-option
-                        v-for="dict in this.sopOptions"
-                        :key="dict.sopId"
-                        :label="dict.sopName"
-                        :value="dict.sopId"
-                      />
-                    </el-select>
-                  </el-form-item>
-                  <el-row>
-                    <el-col :span="16">
-                      <el-form-item label="作业票编号" prop="ticketCode">
-                        <el-input
-                          :disabled="this.getSopLook"
-                          v-model="form.ticketCode"
-                          placeholder="请输入作业票编号"
-                          style="width: 100%"
-                        />
-                      </el-form-item>
-                    </el-col>
-                    <el-col :span="8">
-                      <el-form-item label-width="80">
-                        <el-switch
-                          :disabled="this.getSopLook"
-                          v-model="autoGenFlag"
-                          active-color="#13ce66"
-                          active-text="自动生成"
-                          @change="handleAutoGenChange(autoGenFlag)"
-                        >
-                        </el-switch>
-                      </el-form-item>
-                    </el-col>
-                  </el-row>
-
-                  <el-form-item label="作业票名称" prop="ticketName">
-                    <el-input
-                      :disabled="this.getSopLook"
-                      v-model="form.ticketName"
-                      placeholder="请输入作业票名称"
-                      style="width: 100%"
-                    />
-                  </el-form-item>
-                  <el-form-item label="作业票类型" prop="ticketType">
-                    <el-select
-                      :disabled="this.getSopLook"
-                      v-model="form.ticketType"
-                      placeholder="请选择作业类型"
-                      clearable
-                      style="width: 100%"
-                    >
-                      <el-option
-                        v-for="dict in dict.type.ticket_type"
-                        :key="dict.value"
-                        :label="dict.label"
-                        :value="dict.value"
-                      />
-                    </el-select>
-                  </el-form-item>
-                  <el-form-item label="作业内容" prop="ticketContent">
-                    <el-input
-                      :disabled="this.getSopLook"
-                      type="textarea"
-                      v-model="form.ticketContent"
-                      :rows="4"
-                    ></el-input>
-                  </el-form-item>
-                  <el-form-item label="" prop="" style="margin-top: 80%">
-                    <el-button v-no-more-click
-                      type="primary"
-                      class="workTicket_btn"
-                      @click="nextStep('second')"
-                    >下一步
-                    </el-button>
-                  </el-form-item>
-                </el-form>
-              </el-tab-pane>
-              <el-tab-pane label="选择隔离点" name="second">
-                <!-- 隔离点信息-->
-                <el-form ref="form" :model="form" label-width="90px">
-                  <el-form-item label="车间名称" prop="workshopName">
-                    <el-input
-                      v-model="form.workshopName"
-                      placeholder="请输入车间名称"
-                      style="width: 100%"
-                      disabled
-                    />
-                  </el-form-item>
-                  <el-form-item label="区域" prop="workline">
-                    <el-input
-                      v-model="form.workline"
-                      placeholder="请输入区域"
-                      style="width: 100%"
-                      disabled
-                    />
-                  </el-form-item>
-                  <div class="text item">
-                    <p
-                      style="color: #606266; font-weight: 600; font-size: 14px"
-                    >
-                      已选隔离点
-                    </p>
-                    <el-table
-                      :data="tableData"
-                      stripe
-                      height="480"
-                      style="width: 100%"
-                    >
-                      <el-table-column prop="pointId" label="序号" width="60">
-                      </el-table-column>
-                      <el-table-column prop="pointName" label="已选隔离点">
-                        <template slot-scope="scope">
-                          <span style="color: #2a87ff">{{
-                              scope.row.pointName
-                            }}</span>
-                        </template>
-                      </el-table-column>
-                      <el-table-column prop="pointType" label="隔离点类型">
-                        <template slot-scope="scope">
-                          {{ scope.row.pointType }}
-                          <!--                          <dict-tag-->
-                          <!--                            :options="dict.type.point_type"-->
-                          <!--                            :value="scope.row.pointType"-->
-                          <!--                          />-->
-                        </template>
-                      </el-table-column>
-                      <el-table-column
-                        prop="powerType"
-                        label="危险能量类型"
-                        width="100"
-                      >
-                        <template slot-scope="scope">
-                          {{ scope.row.powerType }}
-                          <!--                          <dict-tag-->
-                          <!--                            :options="dict.type.power_type"-->
-                          <!--                            :value="scope.row.powerType"-->
-                          <!--                          />-->
-                        </template>
-                      </el-table-column>
-                    </el-table>
-                  </div>
-                  <el-form-item label="" prop="">
-                    <el-button v-no-more-click
-                      style="float: right; height: 30px; line-height: 10px"
-                      type="primary"
-                      @click="nextStep('third')"
-                    >下一步
-                    </el-button>
-                    <el-button v-no-more-click
-                      plain
-                      style="
-                        float: right;
-                        height: 30px;
-                        line-height: 10px;
-                        margin-right: 19%;
-                      "
-                      type="primary"
-                      @click="previousStep('first')"
-                    >上一步
-                    </el-button>
-                  </el-form-item>
-                </el-form>
-              </el-tab-pane>
-              <el-tab-pane label="人员选择" name="third">
-                <!--人员选择-->
-                <el-form ref="form" :model="form" label-width="70px">
-                  <el-form-item label="开始时间" prop="ticketStartTime">
-                    <el-date-picker
-                      :disabled="this.getSopLook"
-                      v-model="form.ticketStartTime"
-                      type="datetime"
-                      placeholder="选择日期时间"
-                      align="right"
-                      :picker-options="pickerOptions"
-                      style="width: 100%"
-                      @change="ticketStartTimeChange"
-                    >
-                    </el-date-picker>
-                  </el-form-item>
-                  <el-form-item label="结束时间" prop="ticketEndTime">
-                    <el-date-picker
-                      :disabled="this.getSopLook"
-                      v-model="form.ticketEndTime"
-                      type="datetime"
-                      placeholder="选择日期时间"
-                      align="right"
-                      :picker-options="pickerOptions"
-                      style="width: 100%"
-                      @change="ticketEndTimeChange"
-                    >
-                    </el-date-picker>
-                  </el-form-item>
-                  <el-form-item label="上锁人" prop="locker">
-                    <el-select
-                      :disabled="this.getSopLook"
-                      v-model="form.locker"
-                      placeholder="上锁人"
-                      clearable
-                      style="width: 100%"
-                      @change="handlelockerChage"
-                    >
-                      <el-option
-                        v-for="dict in this.listUserOption"
-                        :key="dict.value"
-                        :label="dict.label"
-                        :value="dict.value"
-                      />
-                    </el-select>
-                  </el-form-item>
-                  <!--
-                  <el-form-item label="共锁人" prop="coLocker">
-                    <el-select
-                      v-model="form.coLocker"
-                      placeholder="共锁人"
-                      clearable
-                      multiple
-                      style="width: 100%"
-                      @change="handleCoLockerChange"
-                      ref="coLockerSelect"
-                    >
-                      <el-option
-                        v-for="dict in sortedTicketUserDTOList"
-                        :key="dict.userId"
-                        :label="dict.username"
-                        :value="dict.username"
-                      >
-                      </el-option>
-                    </el-select>
-                  </el-form-item> -->
-                  <el-form-item label="共锁人" prop="coLocker">
-                    <el-button v-no-more-click
-                      type="primary"
-                      @click="addInside"
-                      class="gsr"
-                      size="mini"
-                    >添加内部人员
-                    </el-button>
-                    <el-button v-no-more-click type="primary" @click="addOutside" size="mini"
-                    >添加外部人员
-                    </el-button>
-                  </el-form-item>
-                  <div class="text item">
-                    <el-table
-                      :data="sortedTicketUserDTOList"
-                      stripe
-                      height="400"
-                      style="width: 100%"
-                    >
-                      <el-table-column prop="userId" label="序号" width="50">
-                      </el-table-column>
-                      <el-table-column
-                        prop="userName"
-                        label="共锁人"
-                        width="120"
-                      >
-                        <template slot-scope="scope">
-                          <span style="color: #2a87ff">{{
-                              scope.row.userName
-                            }}</span>
-                        </template>
-                      </el-table-column>
-                      <el-table-column prop="userRole" label="共锁人来源">
-                        <template slot-scope="scope">
-                          <span>{{
-                              scope.row.userRole == "0" ? "内部" : "外部"
-                            }}</span>
-                        </template>
-                      </el-table-column>
-                      <el-table-column label="" width="80">
-                        <template slot-scope="scope">
-                          <el-button v-no-more-click
-                            @click.native.prevent="
-                              deleteRow(scope.$index, sortedTicketUserDTOList)
-                            "
-                            type="text"
-                            size="small"
-                          >
-                            移除
-                          </el-button>
-                        </template>
-                      </el-table-column>
-                    </el-table>
-                  </div>
-
-                  <el-form-item label="" prop="">
-                    <el-button v-no-more-click
-                      style="float: right; height: 30px; line-height: 10px"
-                      type="primary"
-                      @click="confirm"
-                    >完 成
-                    </el-button>
-                  </el-form-item>
-                </el-form>
-              </el-tab-pane>
-            </el-tabs>
-          </div>
-        </el-card>
-      </div>
-    </div>
-    <!-- 添加或修改设备维修单对话框 -->
-    <el-dialog
-      :visible.sync="open"
-      width="450px"
-      append-to-body
-      style="margin-top: 13%"
-    >
-      <div slot="title" class="dialog-title">
-        <i></i>
-        <span class="title">{{ title }}</span>
-      </div>
-      <el-form
-        ref="dialogForm"
-        :model="dialogForm"
-        :rules="rules"
-        label-width="70px"
-      >
-        <el-form-item label="部门" prop="deptId" v-if="insideMumber">
-          <el-select
-            v-model="dialogForm.deptId"
-            placeholder="请选择部门"
-            clearable
-            style="width: 100%"
-            @change="DeptChage"
-          >
-            <el-option
-              v-for="dict in this.listDeptOption"
-              :key="dict.value"
-              :label="dict.label"
-              :value="dict.value"
-            />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="选择人员" prop="nickName" v-if="insideMumber">
-          <el-select
-            v-model="dialogForm.nickName"
-            placeholder="请选择人员"
-            clearable
-            style="width: 100%"
-            multiple
-            @change="changeInsideUser"
-          >
-            <el-option
-              v-for="dict in this.listUserOption"
-              :key="dict.value"
-              :label="dict.label"
-              :value="dict.value"
-            />
-          </el-select>
-        </el-form-item>
-
-        <el-form-item label="人员ID" prop="mumberId" v-if="outsideMumber">
-          <el-input
-            v-model="dialogForm.username"
-            placeholder="请输入人员ID"
-            style="width: 100%"
-            @change="outSideUserInput"
-          />
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button v-no-more-click type="primary" @click="cancel">确认</el-button>
-        <el-button v-no-more-click @click="cancel">取 消</el-button>
-      </div>
-    </el-dialog>
-    <!--    newOperations盒子结束-->
-  </div>
-</template>
-
-
-<script>
-import SeparationPoint from "@/components/separationPoint/index1.vue";
-import WorkShop from "@/components/separationPoint/workshop.vue";
-import {
-  listJobTicket,
-  getJobTicketInfo,
-  addJobTicket,
-  updateJobTicket,
-  deleteIsJobTicket,
-  getworkareaList,
-} from "@/api/mes/job/job";
-
-import { mapGetters, mapActions } from "vuex";
-
-import { listWorkshop } from "@/api/mes/md/workshop";
-import { listWorkarea } from "@/api/mes/wa/workarea";
-import { getIsSopPage } from "@/api/mes/sop/sopindex-booz";
-import { listUser } from "@/api/system/user";
-import { listDept } from "@/api/system/dept";
-import IsolationLeftVue from "@/components/separationPoint/index1.vue";
-import { genCode } from "@/api/system/autocode/rule";
-
-export default {
-  name: "addView",
-  dicts: ["ticket_type", "power_type", "point_type", "is_user_type"],
-  components: {
-    IsolationLeftVue,
-    SeparationPoint,
-    WorkShop,
-  },
-  data() {
-    return {
-      //自动生成编码
-      autoGenFlag: false,
-      activeName: "first",
-      form: {
-        sopId: "",
-        pointIds: "",
-        ticketId: "",
-        ticketType: "",
-        ticketName: "",
-        ticketCode: "",
-        ticketContent: "",
-        workshopName: "", //车间名称
-        workline: "", //区域
-        spoint: [], //已选隔离点
-        locker: "", //上锁人
-        coLocker: "", //共锁人
-        ticketStartTime: "", //开始时间
-        ticketEndTime: "", //结束时间
-        ticketUserDTOList: [
-          // {
-          //   userId: '',
-          //   userName: '',
-          //   userRole: '',//作业票角色 暂时不传递 内部人还是外部人
-          //   userType: ''//用户类型 上锁人或共锁人
-          // }
-        ], //所选择的用户
-      },
-      // 用来清空form
-      initialFormState: {
-        // 初始状态对象
-        sopId: "",
-        pointIds: "",
-        ticketId: "",
-        ticketType: "",
-        ticketName: "",
-        ticketCode: "",
-        ticketContent: "",
-        workshopName: "", //车间名称
-        workline: "", //区域
-        spoint: [], //已选隔离点
-        locker: "", //上锁人
-        coLocker: "", //共锁人
-        ticketStartTime: "", //开始时间
-        ticketEndTime: "", //结束时间
-        ticketUserDTOList: [
-          // {
-          //   userId: '',
-          //   userName: '',
-          //   userRole: '',//作业票角色 暂时不传递 内部人还是外部人
-          //   userType: ''//用户类型 上锁人或共锁人
-          // }
-        ], //所选择的用户
-      },
-      dialogForm: {
-        deptId: "",
-        nickName: "",
-        username: "",
-      },
-      listUserOption: null,
-      listDeptOption: null,
-      // 已选隔离点
-      tableData: [],
-      pickerOptions: {
-        shortcuts: [
-          {
-            text: "今天",
-            onClick(picker) {
-              picker.$emit("pick", new Date());
-            },
-          },
-          {
-            text: "昨天",
-            onClick(picker) {
-              const date = new Date();
-              date.setTime(date.getTime() - 3600 * 1000 * 24);
-              picker.$emit("pick", date);
-            },
-          },
-          {
-            text: "一周前",
-            onClick(picker) {
-              const date = new Date();
-              date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
-              picker.$emit("pick", date);
-            },
-          },
-        ],
-      },
-      // 是否显示弹出层
-      open: false,
-      // 弹出层标题
-      title: "",
-      // 弹框中显示的form表单内容
-      insideMumber: false,
-      outsideMumber: false,
-      points: null, //逆向传递拿到隔离点的数据
-      sopOptions: [], //sop下拉
-      jobProps: [], //正向传递给车间components
-
-      // 表单校验
-      rules: {
-        teamCode: [
-          { required: true, message: "班组编号不能为空", trigger: "blur" },
-        ],
-        teamName: [
-          { required: true, message: "班组名称不能为空", trigger: "blur" },
-        ],
-        calendarType: [
-          { required: true, message: "清选择班组类型", trigger: "blur" },
-        ],
-      },
-      newticketUserDTOList: [], //为了上锁人单独传递数据
-    };
-  },
-  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,
-    },
-    "form.ticketStartTime": {
-      handler(newVal) {
-        if (newVal && newVal.length > 0) {
-          console.log(newVal, "编辑监听开始时间");
-          this.ticketStartTimeChange(newVal);
-        }
-      },
-    },
-  },
-  computed: {
-    ...mapGetters("sopSelectPoints", [
-      "getPointTableData",
-      "getSelectSopPoints",
-      "getSopEdit",
-      "getTicketTitle",
-      "getSopLook",
-    ]),
-    // 排序 ticketUserDTOList,将 userRole 为 0 的选项放在前面
-    sortedTicketUserDTOList() {
-      return this.form.ticketUserDTOList.sort(
-        (a, b) => Number(a.userRole) - Number(b.userRole)
-      );
-    },
-  },
-  mounted() {
-    this.getSopList();
-    this.getUser();
-    if (this.$route.query.ticketId !== "null") {
-      this.getTicket();
-      this.form.ticketId = this.$route.query.ticketId;
-      if (this.getSopLook) {
-        this.setTicketTitle("查看作业票");
-      } else {
-        this.setTicketTitle("编辑作业票");
-      }
-    } else {
-      this.setSelectSopPoints([]);
-      this.setPointTableData([]);
-      this.setTicketTitle("新建作业票");
-    }
-    // console.log(this.getPointTableData, 'this.getPointTableData')
-    if (this.getPointTableData) {
-      this.tableData = this.getPointTableData.pointDetailVOList.map((item) => {
-        return {
-          pointId: item.pointId,
-          pointName: item.pointName,
-          pointType: item.pointType,
-          powerType: item.powerType,
-        };
-      });
-    }
-  },
-
-  methods: {
-    // 编辑的时候给隔离点重新存储值
-    ...mapActions("sopSelectPoints", [
-      "setSelectSopPoints",
-      "setPointTableData",
-      "setSopEdit",
-      "setTicketTitle",
-    ]),
-    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}`;
-    },
-    getTicket() {
-      this.getUser();
-
-      const ticketId = this.$route.query.ticketId;
-      getJobTicketInfo(ticketId).then((response) => {
-        console.log(response, "编辑拿到路由参数");
-        this.form = {
-          ...this.form,
-          workshopId: response.data.workshopId,
-          workareaId: response.data.workareaId,
-          sopId: response.data.sopId,
-          ticketCode: response.data.ticketCode,
-          ticketContent: response.data.ticketContent,
-          spoint: response.data.pointDetailVOList,
-          ticketUserDTOList: response.data.jobTicketUserList
-            .filter((item) => item.userType !== "0")
-            .map((item) => ({
-              userName: item.userName,
-              userType: item.userType,
-              userRole: item.userRole,
-              userId: item.userId,
-            })),
-          // ticketUserDTOList: response.data.jobTicketUserList.map((item) => {
-          //   return {
-          //     userName: item.userName,
-          //     userType: item.userType,
-          //     userRole: item.userRole,
-          //     userId: item.userId
-          //   }
-          // }),
-          locker: response.data.jobTicketUserList
-            .filter((item) => item.userType == "0")
-            .map((item) => item.userName),
-          coLocker: response.data.jobTicketUserList.map((item) => {
-            return item.userType !== "0" ? item.userName : null;
-          }),
-          ticketStartTime: response.data.ticketStartTime,
-          ticketEndTime: response.data.ticketEndTime,
-          ticketId: response.data.ticketId,
-          ticketName: response.data.ticketName,
-          ticketStatus: response.data.ticketStatus,
-          ticketType: response.data.ticketType,
-          EditBool: true,
-        };
-        this.jobProps = [this.form];
-        // this.listUserOption = response.data.jobTicketUserList
-        console.log(this.form, "form");
-      });
-    },
-
-    getSopList() {
-      const query = {
-        current: 1,
-        size: 100000,
-      };
-      getIsSopPage(query).then((res) => {
-        console.log(res, "sop列表接口");
-        // 插入一个默认的空选项
-        const defaultOption = {
-          sopId: null,
-          sopName: "不使用sop模板  ",
-        };
-
-        // 将默认选项添加到结果的最前面
-        this.sopOptions = [defaultOption, ...res.data.records];
-      });
-    },
-    getUser() {
-      const query = {
-        pageNum: 1,
-        pageSize: 100000,
-      };
-      listUser(query).then((res) => {
-        // console.log(res, '用户列表')
-        this.listUserOption = res.rows.map((item) => {
-          return {
-            label: item.nickName,
-            value: item.userId,
-          };
-        });
-      }),
-        listDept(query).then((res) => {
-          // console.log(res, '部门列表')
-          this.listDeptOption = res.data.map((item) => {
-            return {
-              label: item.deptName,
-              value: item.deptId,
-            };
-          });
-        });
-    },
-    // 添加内部人员 部门下拉的chage事件
-    DeptChage(val) {
-      console.log(val, " 部门下拉");
-      // 每次选中先清空用户下拉
-      // this.listUserOption = []
-      this.dialogForm.nickName = null;
-      const query = {
-        pageNum: 1,
-        pageSize: 100000,
-        deptId: this.dialogForm.deptId,
-      };
-      listUser(query).then((res) => {
-        console.log(res, "用户列表");
-        this.listUserOption = res.rows.map((item) => {
-          return {
-            label: item.nickName,
-            value: item.userId,
-          };
-        });
-      });
-    },
-    // sop下拉change事件 可以传递sopOptions一整个对象过去
-    handleSelectSOP(value) {
-      if (value == null) {
-        this.jobProps = [];
-        console.log(this.form.sopId, this.form, "sop下拉change事件");
-      } else {
-        this.jobProps = this.sopOptions.filter((item) => item.sopId == value);
-        this.form.ticketType = this.jobProps[0].sopType;
-        this.form.ticketName = "sop_";
-        console.log(this.jobProps, "父组件jobProps");
-      }
-    },
-    // 清除sop下拉框
-    handleClearSop() {
-      this.form.ticketType = "";
-      this.form.ticketName = "";
-    },
-    // 上锁人下拉选择change事件
-    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.newticketUserDTOList.push({
-            userName: user.label,
-            userId: user.value,
-            userType: 0,
-            userRole: "0",
-          });
-          // this.form.ticketUserDTOList.push({
-          //   userName: user.label,
-          //   userId: user.value,
-          //   userType: 0,
-          //   userRole: '0',
-          // })
-          console.log(this.newticketUserDTOList, "用户");
-        } else {
-          // console.log('用户已存在', user.label)
-        }
-      }
-    },
-
-    // 添加内部人员的用户新增到ticketUserDTOList这个数据里
-    changeInsideUser(values) {
-      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
-        );
-        // console.log(usersinside, 'usersinside----67')
-        if (!existingUser) {
-          this.form.ticketUserDTOList.push({
-            userName: user.label,
-            userId: user.value,
-            userType: 1,
-            userRole: 0,
-            bgColor: "green",
-          });
-          console.log(this.form.ticketUserDTOList, "用户");
-        } else {
-          // console.log('用户已存在', user.label)
-        }
-      });
-      this.updateCoLocker();
-
-      // console.log(this.form.ticketUserDTOList, '用户')
-    },
-    // 添加外部人员 输入名称 userType==1是共锁人 0是上锁人 userId==0
-    outSideUserInput(value) {
-      // console.log(value, '外部人员名称')
-      const existingUser = this.form.ticketUserDTOList.find(
-        (u) => u.userName === value
-      );
-
-      if (!existingUser) {
-        this.form.ticketUserDTOList.push({
-          userName: value,
-          userId: 0,
-          userType: 1,
-          userRole: 1,
-          bgColor: "red",
-        });
-        console.log(this.form.ticketUserDTOList, "用户");
-      } else {
-        // console.log('用户已存在', value)
-      }
-      this.updateCoLocker();
-    },
-    // 更新界面中共锁人下拉框显示的内容
-    // 更新 coLocker 数据
-    updateCoLocker() {
-      // 获取现有的 coLocker 数据
-      const existingCoLocker = new Set(this.form.coLocker);
-      // console.log(existingCoLocker, 'existingCoLocker----1');
-
-      // 将 ticketUserDTOList 中的新用户名字添加到 existingCoLocker 中
-
-      this.form.ticketUserDTOList.forEach((user) => {
-        existingCoLocker.add(user.userName);
-      });
-      // console.log(this.form.ticketUserDTOList, 'this.form.ticketUserDTOList----2');
-
-      // 将 Set 转换回数组
-      this.form.coLocker = Array.from(existingCoLocker);
-      // console.log(this.form.coLocker, 'this.form.coLocker----3');
-
-      // 检查并补充 ticketUserDTOList 中缺少的用户
-      this.form.coLocker.forEach((name) => {
-        const existingUser = this.form.ticketUserDTOList.find(
-          (u) => u.userName === name
-        );
-
-        if (!existingUser) {
-          this.form.ticketUserDTOList.push({
-            userName: name,
-            userId: 0,
-            userType: 1,
-            userRole: 1,
-            bgColor: "red",
-          });
-        }
-      });
-
-      console.log(this.form.ticketUserDTOList, "最终的 ticketUserDTOList");
-    },
-    // 设置多选下拉框样式
-    // updateTagBackgrounds() {
-    //   this.$nextTick(() => {
-    //     const elTags = this.$refs.coLockerSelect.$el.querySelectorAll('.el-tag')
-    //
-    //     elTags.forEach(tag => {
-    //       const tagText = tag.textContent.trim()
-    //       const option = this.form.ticketUserDTOList.find(dict => dict.userName === tagText)
-    //
-    //       if (option) {
-    //         tag.style.backgroundColor = option.bgColor
-    //
-    //       }
-    //     })
-    //   })
-    // },
-    // 共锁人下拉框删除事件
-    // handleCoLockerChange(newValues) {
-    //   console.log(newValues, 'ticketUserDTOList-newsValue')
-    //
-    //   // 根据新值更新 this.form.ticketUserDTOList
-    //   this.form.ticketUserDTOList = this.form.ticketUserDTOList.filter((user) =>
-    //     newValues.includes(user.userName)
-    //   )
-    //
-    //   // 更新 coLocker 显示的内容
-    //   this.updateCoLocker()
-    // },
-    handleClick(tab, event) {
-      // console.log(tab, event);
-    },
-    previousStep(val) {
-      this.activeName = val;
-    },
-    nextStep(val) {
-      console.log(val, "nextStep");
-      this.activeName = val;
-      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);
-
-        // 合并 newticketUserDTOList 到 this.form.ticketUserDTOList
-        if (this.form.locker) {
-          const selectedUser = this.listUserOption.find(
-            (option) => option.label === this.form.locker
-          );
-          if (selectedUser) {
-            this.form.ticketUserDTOList.push({
-              userName: selectedUser.label,
-              userId: selectedUser.value,
-              userType: "0",
-              userRole: "0",
-            });
-          }
-        }
-        this.form.ticketUserDTOList.push(...this.newticketUserDTOList);
-        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 editdata = {
-          pointIds: this.form.spoint.join(","),
-          sopId: this.form.sopId,
-          ticketCode: this.form.ticketCode,
-          ticketContent: this.form.ticketContent,
-          ticketId: this.form.ticketId,
-          ticketEndTime: this.form.ticketEndTime,
-          ticketName: this.form.ticketName,
-          ticketStartTime: this.form.ticketStartTime,
-          ticketType: this.form.ticketType,
-          ticketUserDTOList: this.form.ticketUserDTOList,
-          workareaId: workareaId,
-          workshopId: workshopId,
-        };
-
-        // 检查 route.query.ticketId 是否为 null
-        console.log(this.$route.query.ticketId, "this.$route.query.ticketId");
-        if (this.$route.query.ticketId !== "null") {
-          // 调用编辑接口
-          const res = await updateJobTicket(editdata);
-          if (res.code === 200) {
-            // this.$router.go(-1);
-            this.$router.push("/job/jobm");
-            localStorage.removeItem("workshopId");
-            localStorage.removeItem("workareaId");
-          } else {
-            console.error("编辑工单失败", res);
-          }
-        } else {
-          // 调用新增接口
-          const res = await addJobTicket(data);
-          if (res.code === 200) {
-            // this.$router.go(-1);
-            this.$router.push("/job/jobm");
-          } else {
-            console.error("提交工单失败", res);
-          }
-        }
-      } catch (error) {
-        console.error("确认过程中发生错误", error);
-      }
-
-      console.log("确认");
-    },
-    // 子组件逆向传递选中的隔离点
-
-    handleSelectPoint(points) {
-      // console.log(points, '父组件接收逆向传递选中的隔离点')
-
-      // 使用 Set 来存储传递过来的点值
-      const newValues = new Set(points.map((point) => point.pointId));
-
-      // 1. 删除取消选中的点
-      this.tableData = this.tableData.filter((item) =>
-        newValues.has(item.pointId)
-      );
-
-      // 2. 确保新增点不会重复
-      const existingValues = new Set(
-        this.tableData.map((item) => item.pointId)
-      );
-
-      points.forEach((point) => {
-        // 如果当前传递的点不在已有的点集中,则添加
-        if (!existingValues.has(point.pointId)) {
-          this.tableData.push({
-            pointName: point.pointName, // 显示的名称
-            pointId: point.pointId, // 对应的值
-            pointType: point.pointType,
-            powerType: point.powerType,
-          });
-          // 将新点值添加到 Set 中
-          existingValues.add(point.value);
-        }
-      });
-
-      // 更新 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 = null;
-    },
-    // 取消按钮
-    cancel() {
-      this.open = false;
-    },
-    // 人员列表删除
-    // deleteRow(index, rows) {
-    //   console.log(index, rows, '删除的行')
-    //   rows.splice(index, 1)
-    //   this.form.ticketUserDTOList.splice(index, 1)
-    // },
-    deleteRow(index, rows) {
-      console.log(index, rows, "删除的行");
-      const deletedItem = rows[index]; // 获取要删除的项
-      rows.splice(index, 1); // 从显示的列表中删除
-      const formIndex = this.form.ticketUserDTOList.findIndex(
-        (item) => item.userId === deletedItem.userId
-      );
-      if (formIndex !== -1) {
-        this.form.ticketUserDTOList.splice(formIndex, 1); // 从 form.ticketUserDTOList 中删除
-      }
-    },
-    //   时间选项
-    ticketStartTimeChange(value) {
-      this.form.ticketStartTime = value;
-      // 更新 pickerOptions 中的 disabledDate 方法
-      this.updatePickerOptions();
-    },
-    ticketEndTimeChange(value) {
-      this.form.ticketEndTime = value;
-    },
-    disabledDate(time) {
-      const startTime = new Date(this.form.ticketStartTime);
-      return startTime && !isNaN(startTime.getTime())
-        ? time.getTime() < startTime.getTime()
-        : false;
-    },
-    updatePickerOptions() {
-      this.pickerOptions.disabledDate = this.disabledDate;
-    },
-
-    reset() {
-      (this.form = {
-        sopId: "",
-        pointIds: "",
-        ticketType: "",
-        ticketName: "",
-        ticketCode: "",
-        ticketContent: "",
-        workshopName: "", //车间名称
-        workline: "", //区域
-        spoint: [], //已选隔离点
-        locker: "", //上锁人
-        coLocker: "", //共锁人
-        ticketStartTime: "", //开始时间
-        ticketEndTime: "", //结束时间
-        ticketUserDTOList: [
-          // {
-          //   userId: '',
-          //   userName: '',
-          //   userRole: '',//作业票角色 暂时不传递
-          //   userType: ''//用户类型 上锁人或共锁人
-          // }
-        ],
-      }),
-        (this.autoGenFlag = false);
-    },
-
-    // 侧边x关闭函数
-    goBack() {
-      this.$router.push("/job/jobm");
-    },
-    //自动生成编码
-    handleAutoGenChange(autoGenFlag) {
-      if (autoGenFlag) {
-        genCode("JOB_TICKET_CODE").then((response) => {
-          this.form.ticketCode = response;
-        });
-      } else {
-        this.form.ticketCode = null;
-      }
-    },
-  },
-};
-</script>
-
-
-<style scoped lang="scss">
-.newOperations {
-  width: 99%;
-  height: 100%;
-  //background: pink;
-  margin: 10px;
-  display: flex;
-
-  .left {
-    width: 75%;
-    height: 830px;
-    // background: #eee;
-    margin-right: 10px;
-  }
-
-  .right {
-    height: 100%;
-    flex: 1;
-
-    .right_top {
-      height: 550px;
-    }
-
-    .workTicket_btn {
-      position: relative;
-      left: 63%;
-      height: 30px;
-      line-height: 10px;
-    }
-
-    .gsr {
-      margin-left: 60px;
-    }
-  }
-}
-
-//右侧卡片样式开始
-.text {
-  font-size: 14px;
-}
-
-.item {
-  margin-bottom: 18px;
-
-  p {
-    font-size: 18px;
-    font-weight: bolder;
-    font-family: SourceHanSansSC-bold;
-  }
-}
-
-.clearfix:before,
-.clearfix:after {
-  display: table;
-  content: "";
-  width: 320px;
-}
-
-.clearfix:after {
-  clear: both;
-}
-
-.box-card {
-  // width: 390px;
-  width: 95%;
-  height: 850px;
-}
-
-//右侧卡片样式结束
-//隔离点多选框样式
-.selects {
-  .el-input.el-input--medium.el-input--suffix {
-    // 调整箭头符号块的宽度
-    width: 175px !important;
-  }
-
-  .el-input.el-input--medium.el-input--suffix {
-    .el-input__inner {
-      // 调整输入框的宽高
-      height: 36px !important;
-      width: 220px !important;
-    }
-
-    .el-input__suffix-inner {
-      // 调整箭头符号的位置
-      position: absolute;
-      right: -45px;
-    }
-  }
-
-  .el-select__tags {
-    // 调整输入框里面的多选不换行
-    flex-wrap: nowrap !important;
-  }
-}
-
-//隔离点多选框样式结束
-</style>
-
-<style scoped lang="scss" src="@/assets/styles/dialog-title.scss">
-</style>

+ 0 - 1486
src/views/mes/job/jobm/NewOperations.vue

@@ -1,1486 +0,0 @@
-<template>
-  <div class="newOperations">
-    <!--    newOperations盒子开始-->
-    <div class="left">
-      <!--        左边第一个是隔离点组件-->
-      <!--        第二个是车间组件-->
-
-      <SeparationPoint
-        v-show="this.activeName == 'second'"
-        @selection-changed="handleSelectPoint"
-        :points="points"
-      ></SeparationPoint>
-      <keep-alive>
-        <WorkShop
-          v-show="this.activeName == 'first' || this.activeName == 'third'"
-          @product-line-selected="handleProductLineSelected"
-          @work-shop-selected="handleWorkshopSelected"
-          :jobProps="jobProps"
-        ></WorkShop>
-      </keep-alive>
-    </div>
-    <div class="right">
-      <div class="right_top">
-        <el-card class="box-card">
-          <div slot="header" class="clearfix">
-            <span style="font-size: 18px">{{ this.getTicketTitle }}</span>
-            <span
-              style="
-                float: right;
-                padding: 1px 0;
-                font-size: 22px;
-                cursor: pointer;
-              "
-              type="text"
-              @click="goBack"
-            >×</span
-            >
-
-          </div>
-          <div class="text item">
-            <el-tabs v-model="activeName" @tab-click="handleClick">
-              <el-tab-pane label="作业票信息" name="first">
-                <!--                  新增作业票信息-->
-                <el-form ref="form" :rules="rules" :model="form" label-width="100px">
-                  <!--                 getVisibleSopSelect是vuex判断新增是自定义还是建SOP作业票 第二个是编辑的时候如果有sopId就渲染 -->
-
-                  <el-form-item label="选择SOP" prop="sop" v-if="this.getVisibleSopSelect&&this.form.sopId!==null">
-                    <el-select
-                      :disabled="this.getSopLook"
-                      v-model="form.sopId"
-                      placeholder="请选择sop"
-                      clearable
-                      style="width: 100%"
-                      @clear="handleClearSop"
-                      @change="handleSelectSOP"
-                    >
-                      <el-option
-                        v-for="dict in this.sopOptions"
-                        :key="dict.sopId"
-                        :label="dict.sopName"
-                        :value="dict.sopId"
-                      />
-                    </el-select>
-                  </el-form-item>
-
-                  <el-form-item label="作业票名称" prop="ticketName">
-                    <el-input
-                      :disabled="this.getSopLook"
-                      v-model="form.ticketName"
-                      placeholder="请输入作业票名称"
-                      style="width: 100%"
-                    />
-                  </el-form-item>
-                  <el-row>
-                    <el-col :span="16">
-                      <el-form-item label="作业票编号" prop="ticketCode">
-                        <el-input
-                          :disabled="this.getSopLook"
-                          v-model="form.ticketCode"
-                          placeholder="请输入作业票编号"
-                          style="width: 100%"
-                        />
-                      </el-form-item>
-                    </el-col>
-                    <el-col :span="8">
-                      <el-form-item label-width="80">
-                        <el-switch
-                          :disabled="this.getSopLook"
-                          v-model="autoGenFlag"
-                          active-color="#13ce66"
-                          active-text="自动生成"
-                          @change="handleAutoGenChange(autoGenFlag)"
-                        >
-                        </el-switch>
-                      </el-form-item>
-                    </el-col>
-                  </el-row>
-
-                  <el-form-item label="作业票类型" prop="ticketType">
-                    <el-select
-                      :disabled="this.getSopLook"
-                      v-model="form.ticketType"
-                      placeholder="请选择作业类型"
-                      clearable
-                      style="width: 100%"
-                    >
-                      <el-option
-                        v-for="dict in dict.type.ticket_type"
-                        :key="dict.value"
-                        :label="dict.label"
-                        :value="dict.value"
-                      />
-                    </el-select>
-                  </el-form-item>
-                  <el-form-item label="作业内容" prop="ticketContent">
-                    <el-input
-                      :disabled="this.getSopLook"
-                      type="textarea"
-                      v-model="form.ticketContent"
-                      :rows="4"
-                    ></el-input>
-                  </el-form-item>
-                  <el-form-item label="" prop="" style="margin-top: 80%">
-                    <el-button v-no-more-click
-                               type="primary"
-                               class="workTicket_btn"
-                               @click="nextStep('second')"
-                    >下一步
-                    </el-button>
-                  </el-form-item>
-                </el-form>
-              </el-tab-pane>
-              <el-tab-pane label="隔离点信息" name="second">
-                <!-- 隔离点信息-->
-                <el-form ref="form" :model="form" label-width="90px">
-                  <el-form-item label="作业区域" prop="workline">
-                    <el-input
-                      v-model="form.workline"
-                      style="width: 100%"
-                      disabled
-                    />
-                  </el-form-item>
-                  <div class="text item">
-                    <p
-                      style="color: #606266; font-weight: 600; font-size: 14px"
-                    >
-                      已选隔离点
-                    </p>
-                    <el-table
-                      :data="tableData"
-                      stripe
-                      height="480"
-                      style="width: 100%"
-                    >
-                      <!--                      <el-table-column prop="pointId" label="序号" width="60">-->
-                      <!--                      </el-table-column>-->
-                      <el-table-column prop="pointName" label="隔离点" width="60">
-                        <template slot-scope="scope">
-                          <span style="color: #2a87ff">{{
-                              scope.row.pointName
-                            }}</span>
-                        </template>
-                      </el-table-column>
-                      <el-table-column prop="pointType" label="隔离点类型">
-                        <template slot-scope="scope">
-                          {{ scope.row.pointType }}
-
-                        </template>
-                      </el-table-column>
-                      <el-table-column
-                        prop="powerType"
-                        label="危险能量类型"
-                        width="100"
-                      >
-                        <template slot-scope="scope">
-                          {{ scope.row.powerType }}
-                        </template>
-                      </el-table-column>
-                      <el-table-column
-                        prop="prePointId"
-                        label="前置隔离点"
-
-                      >
-                        <template slot-scope="scope">
-<!--                          选择了sop之后不允许切换前置隔离点-->
-                          <el-select size="mini" v-model="scope.row.prePointId" @change="prePointIdChange(scope.row)"
-                                     @visible-change="onDropdownVisibleChange(scope.row)" clearable
-                                     @clear="clearprePointId"
-                                     :disabled="form.sopId!==''"
-                          >
-                            <el-option v-for="item in prePointIdOptions"
-                                       :key="item.pointId"
-                                       :label="item.pointName"
-                                       :value="item.pointId"
-                            >
-                            </el-option>
-                          </el-select>
-                        </template>
-                      </el-table-column>
-                    </el-table>
-                  </div>
-                  <el-form-item label="" prop="">
-                    <el-button v-no-more-click
-                               style="float: right; height: 30px; line-height: 10px"
-                               type="primary"
-                               @click="nextStep('third')"
-                    >下一步
-                    </el-button>
-                    <el-button v-no-more-click
-                               plain
-                               style="
-                        float: right;
-                        height: 30px;
-                        line-height: 10px;
-                        margin-right: 19%;
-                      "
-                               type="primary"
-                               @click="previousStep('first')"
-                    >上一步
-                    </el-button>
-                  </el-form-item>
-                </el-form>
-              </el-tab-pane>
-              <el-tab-pane label="人员选择" name="third">
-                <!--人员选择-->
-                <el-form ref="form" :model="form" label-width="70px">
-                  <el-form-item label="开始时间" prop="ticketStartTime">
-                    <el-date-picker
-                      :disabled="this.getSopLook"
-                      v-model="form.ticketStartTime"
-                      type="datetime"
-                      placeholder="选择日期时间"
-                      align="right"
-                      :picker-options="pickerOptions"
-                      style="width: 100%"
-                      @change="ticketStartTimeChange"
-                    >
-                    </el-date-picker>
-                  </el-form-item>
-                  <el-form-item label="结束时间" prop="ticketEndTime">
-                    <el-date-picker
-                      :disabled="this.getSopLook"
-                      v-model="form.ticketEndTime"
-                      type="datetime"
-                      placeholder="选择日期时间"
-                      align="right"
-                      :picker-options="pickerOptions"
-                      style="width: 100%"
-                      @change="ticketEndTimeChange"
-                    >
-                    </el-date-picker>
-                  </el-form-item>
-                  <el-form-item label="上锁人" prop="locker">
-                    <el-select
-                      :disabled="this.getSopLook"
-                      v-model="form.locker"
-                      placeholder="上锁人"
-                      clearable
-                      style="width: 100%"
-                      @change="handlelockerChage"
-                    >
-                      <el-option
-                        v-for="dict in this.listLockerOption"
-                        :key="dict.value"
-                        :label="dict.label"
-                        :value="dict.value"
-                      />
-                    </el-select>
-                  </el-form-item>
-
-                  <el-form-item label="共锁人" prop="coLocker">
-                    <el-button v-no-more-click
-                               type="primary"
-                               @click="addInside"
-                               class="gsr"
-                               size="mini"
-                    >添加内部人员
-                    </el-button>
-                    <el-button v-no-more-click type="primary" @click="addOutside" size="mini"
-                    >添加外部人员
-                    </el-button>
-                  </el-form-item>
-                  <div class="text item">
-                    <el-table
-                      :data="sortedTicketUserDTOList"
-                      stripe
-                      height="400"
-                      style="width: 100%"
-                    >
-                      <el-table-column prop="userId" label="序号" width="50">
-                      </el-table-column>
-                      <el-table-column
-                        prop="userName"
-                        label="共锁人"
-                        width="120"
-                      >
-                        <template slot-scope="scope">
-                          <span style="color: #2a87ff">{{
-                              scope.row.userName
-                            }}</span>
-                        </template>
-                      </el-table-column>
-                      <el-table-column prop="userType" label="共锁人来源">
-                        <template slot-scope="scope">
-                          <span>{{
-                              scope.row.userType == '0' ? '内部' : '外部'
-                            }}</span>
-                        </template>
-                      </el-table-column>
-                      <el-table-column label="" width="80">
-                        <template slot-scope="scope">
-                          <el-button v-no-more-click
-                                     @click.native.prevent="
-                              deleteRow(scope.$index, sortedTicketUserDTOList)
-                            "
-                                     type="text"
-                                     size="small"
-                          >
-                            移除
-                          </el-button>
-                        </template>
-                      </el-table-column>
-                    </el-table>
-                  </div>
-
-                  <el-form-item label="" prop="">
-                    <el-button v-no-more-click
-                               style="float: right; height: 30px; line-height: 10px"
-                               type="primary"
-                               @click="confirm"
-                    >完 成
-                    </el-button>
-                  </el-form-item>
-                </el-form>
-              </el-tab-pane>
-            </el-tabs>
-          </div>
-        </el-card>
-      </div>
-    </div>
-    <!-- 添加或修改设备维修单对话框 -->
-    <el-dialog
-      :visible.sync="open"
-      width="450px"
-      append-to-body
-      style="margin-top: 13%"
-    >
-      <div slot="title" class="dialog-title">
-        <i></i>
-        <span class="title">{{ title }}</span>
-      </div>
-      <el-form
-        ref="dialogForm"
-        :model="dialogForm"
-        label-width="70px"
-      >
-        <el-form-item label="选择人员" prop="nickName" v-if="insideMumber">
-          <el-select
-            v-model="dialogForm.nickName"
-            placeholder="请选择人员"
-            clearable
-            style="width: 100%"
-            multiple
-            @change="changeInsideUser"
-          >
-            <el-option
-              v-for="dict in this.listCoLockerOption"
-              :key="dict.value"
-              :label="dict.label"
-              :value="dict.value"
-            />
-          </el-select>
-        </el-form-item>
-
-        <el-form-item label="人员ID" prop="username" v-if="outsideMumber">
-          <el-row>
-            <el-col :span="16">
-              <el-input
-                v-model="dialogForm.username"
-                placeholder="请输入人员ID"
-                clearable
-                style="width: 80%"
-                @change="outSideUserInput"
-              />
-            </el-col>
-            <el-col :span="4">
-              <el-button v-no-more-click type="primary" @click="insertOutSideTable">添加</el-button>
-            </el-col>
-          </el-row>
-        </el-form-item>
-        <el-row>
-          <el-table :data="OutSideUserTableData"
-                    stripe
-                    height="200"
-                    v-if="outsideMumber"
-          >
-            <el-table-column prop="userId" label="序号">
-            </el-table-column>
-            <el-table-column
-              prop="userName"
-              label="人员ID"
-
-            >
-              <template slot-scope="scope">
-                          <span style="color: #2a87ff">{{
-                              scope.row.userName
-                            }}</span>
-              </template>
-            </el-table-column>
-            <el-table-column label="操作" width="80">
-              <template slot-scope="scope">
-                <el-button v-no-more-click
-                           @click.native.prevent="
-                              deleteRow(scope.$index, OutSideUserTableData)
-                            "
-                           type="text"
-                           size="small"
-                >
-                  移除
-                </el-button>
-              </template>
-            </el-table-column>
-          </el-table>
-        </el-row>
-
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <!--  内部人员确认-->
-        <el-button v-no-more-click type="primary" @click="cancel" v-if="insideMumber">确认</el-button>
-        <!--        外部人员确认-->
-        <el-button v-no-more-click type="primary" @click="outSideDialogConfirm" v-if="outsideMumber">确认</el-button>
-        <el-button v-no-more-click @click="cancel">取 消</el-button>
-      </div>
-    </el-dialog>
-    <!--    newOperations盒子结束-->
-  </div>
-</template>
-
-
-<script>
-import SeparationPoint from '@/components/separationPoint/index.vue'
-import WorkShop from '@/components/separationPoint/workshop.vue'
-import {
-  listJobTicket,
-  getJobTicketInfo,
-  addJobTicket,
-  updateJobTicket,
-  deleteIsJobTicket,
-  getworkareaList
-} from '@/api/mes/job/job'
-import { selectIsSopById, SopUser } from '@/api/mes/sop/sopindex-booz'
-import { mapGetters, mapActions } from 'vuex'
-import { getIsSopPage } from '@/api/mes/sop/sopindex-booz'
-import { genCode } from '@/api/system/autocode/rule'
-
-export default {
-  name: 'addView',
-  dicts: ['ticket_type', 'power_type', 'point_type', 'is_user_type'],
-  components: {
-    SeparationPoint,
-    WorkShop
-  },
-  data() {
-    return {
-      //自动生成编码
-      autoGenFlag: false,
-      openStaffing: true,
-      activeName: 'first',
-      form: {
-        sopId: '',
-        pointIds: '',
-        ticketId: '',
-        ticketType: '',
-        ticketName: '',
-        ticketCode: '',
-        ticketContent: '',
-        workshopName: '', //车间名称
-        workline: '', //区域
-        spoint: [], //已选隔离点
-        locker: '', //上锁人
-        coLocker: '', //共锁人
-        ticketStartTime: '', //开始时间
-        ticketEndTime: '', //结束时间
-        workareaId: null,//作业区域id
-        ticketUserDTOList: [
-          // {
-          //   userId: '',
-          //   userName: '',
-          //   userRole: '',//作业票角色 暂时不传递 内部人还是外部人
-          //   userType: ''//用户类型 上锁人或共锁人
-          // }
-        ] //所选择的用户
-      },
-      // 用来清空form
-      initialFormState: {
-        // 初始状态对象
-        sopId: '',
-        pointIds: '',
-        ticketId: '',
-        ticketType: '',
-        ticketName: '',
-        ticketCode: '',
-        ticketContent: '',
-        workshopName: '', //车间名称
-        workline: '', //区域
-        spoint: [], //已选隔离点
-        locker: '', //上锁人
-        coLocker: '', //共锁人
-        ticketStartTime: '', //开始时间
-        ticketEndTime: '', //结束时间
-        pointDetailVOList: [],//隔离点数据
-        ticketUserDTOList: [
-          // {
-          //   userId: '',
-          //   userName: '',
-          //   userRole: '',//作业票角色 暂时不传递 内部人还是外部人
-          //   userType: ''//用户类型 上锁人或共锁人
-          // }
-        ] //所选择的用户
-      },
-
-      dialogForm: {
-        nickName: '',
-        username: ''
-      },
-      // 已选隔离点
-      tableData: [],
-      orderTableData: [],//原始数据顺序
-      pickerOptions: {
-        shortcuts: [
-          {
-            text: '今天',
-            onClick(picker) {
-              picker.$emit('pick', new Date())
-            }
-          },
-          {
-            text: '昨天',
-            onClick(picker) {
-              const date = new Date()
-              date.setTime(date.getTime() - 3600 * 1000 * 24)
-              picker.$emit('pick', date)
-            }
-          },
-          {
-            text: '一周前',
-            onClick(picker) {
-              const date = new Date()
-              date.setTime(date.getTime() - 3600 * 1000 * 24 * 7)
-              picker.$emit('pick', date)
-            }
-          }
-        ]
-      },
-      // 是否显示弹出层
-      open: false,
-      // 弹出层标题
-      title: '',
-      // 弹框中显示的form表单内容
-      insideMumber: false,
-      outsideMumber: false,
-      points: null, //逆向传递拿到隔离点的数据
-      emitWorkShop: null, //车间逆向传递拿到车间相关数据
-      emitworklineId: null,//生产线逆向传递拿到数据
-      sopOptions: [], //sop下拉
-      jobProps: [], //正向传递给车间components
-      // 表单校验
-      rules: {
-        ticketName: [
-          { required: true, message: '作业票名称不能为空', trigger: 'blur' }
-        ],
-        ticketCode: [
-          { required: true, message: '作业票编码不能为空', trigger: 'blur' }
-        ]
-      },
-      newticketUserDTOList: [], //为了上锁人单独传递数据
-      prePointIdOptions: [],//前置节点的下拉选项
-      initprePointIdOptions: [],//前置节点初始化数据选项
-      prePointId: null,//回显选中的前置节点id
-      relations: [],//维护父子关系的前置节点
-      listLockerOption: null,//上锁人下拉数据
-      listCoLockerOption: null,//共锁人下拉数据
-      OutSideUserTableData: [],//添加外部人员多个表格
-      nextUserId: 0,//新增外部人员表格序号自定义
-      worklineMap: null//作业区域拿到的mapjson
-    }
-  },
-  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
-    },
-    'form.ticketStartTime': {
-      handler(newVal) {
-        if (newVal && newVal.length > 0) {
-          console.log(newVal, '编辑监听开始时间')
-          this.ticketStartTimeChange(newVal)
-        }
-      }
-
-    },
-    'form.ticketEndTime': {
-      handler(newVal) {
-        if (newVal && newVal.length > 0) {
-          this.ticketEndTimeChange(newVal)
-        }
-      }
-    }
-  },
-  computed: {
-    ...mapGetters('sopSelectPoints', [
-      'getPointTableData',
-      'getSelectSopPoints',
-      'getSopEdit',
-      'getTicketTitle',
-      'getSopLook',
-      'getVisibleSopSelect'
-    ]),
-    // 排序 ticketUserDTOList,将 userRole 为 0 的选项放在前面
-    sortedTicketUserDTOList() {
-      return this.form.ticketUserDTOList.sort(
-        (a, b) => Number(a.userRole) - Number(b.userRole)
-      )
-    }
-  },
-  mounted() {
-    this.getSopList()
-    this.handleOpenStaffing()
-    if (this.$route.query.ticketId !== 'null') {
-      this.getTicket()
-      this.form.ticketId = this.$route.query.ticketId
-      if (this.getSopLook) {
-        this.setTicketTitle('查看作业票')
-      } else {
-        this.setTicketTitle('编辑作业票')
-      }
-    } else {
-      this.handleAutoGenChange(true)
-      this.autoGenFlag=true
-      this.setSelectSopPoints([])
-      this.setPointTableData([])
-      this.setTicketTitle('新建作业票')
-    }
-    // console.log(this.getPointTableData, 'this.getPointTableData')
-    if (this.getPointTableData) {
-      this.tableData = this.getPointTableData.pointDetailVOList.map((item) => {
-        return {
-          pointId: item.pointId,
-          pointName: item.pointName,
-          pointType: item.pointType,
-          powerType: item.powerType
-
-        }
-      })
-    }
-  },
-
-  methods: {
-    // 编辑的时候给隔离点重新存储值
-    ...mapActions('sopSelectPoints', [
-      'setSelectSopPoints',
-      'setPointTableData',
-      'setSopEdit',
-      'setTicketTitle'
-    ]),
-    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}`
-    },
-    getTicket() {
-      const ticketId = this.$route.query.ticketId
-      getJobTicketInfo(ticketId).then((response) => {
-        console.log(response, '编辑拿到路由参数')
-        this.orderTableData = response.data.pointDetailVOList.map((point) => {
-          return {
-            pointName: point.pointName, // 显示的名称
-            pointId: point.pointId, // 对应的值
-            pointType: point.pointType,
-            powerType: point.powerType,
-            prePointId: point.prePointId
-          }
-        })
-
-        this.form = {
-          ...this.form,
-          workareaId: response.data.workareaId,
-          sopId: response.data.sopId,
-          ticketCode: response.data.ticketCode,
-          ticketContent: response.data.ticketContent,
-          spoint: response.data.pointDetailVOList,
-          ticketUserDTOList: response.data.jobTicketUserList
-            .filter((item) => item.userRole !== 'jtlocker')
-            .map((item) => ({
-              userName: item.userName,
-              userType: item.userType,
-              userRole: item.userRole,
-              userId: item.userId
-            })),
-
-          locker: response.data.jobTicketUserList
-            .filter((item) => item.userRole == 'jtlocker')
-            .map((item) => item.userName)[0],
-          coLocker: response.data.jobTicketUserList.map((item) => {
-            return item.userRole !== 'jtlocker' ? item.userName : null
-          }),
-          ticketStartTime: response.data.ticketStartTime,
-          ticketEndTime: response.data.ticketEndTime,
-          ticketId: response.data.ticketId,
-          ticketName: response.data.ticketName,
-          ticketStatus: response.data.ticketStatus,
-          ticketType: response.data.ticketType,
-          EditBool: true
-        }
-        this.newticketUserDTOList = response.data.jobTicketUserList
-          .filter((item) => item.userRole == 'jtlocker')
-          .map((item) => ({
-            userName: item.userName,
-            userType: item.userType,
-            userRole: item.userRole,
-            userId: item.userId
-          })),
-          this.jobProps = [this.form]
-        // this.listUserOption = response.data.jobTicketUserList
-        console.log(this.form, 'form')
-      })
-    },
-
-    getSopList() {
-      const query = {
-        current: 1,
-        size: 100000
-      }
-      getIsSopPage(query).then((res) => {
-        console.log(res, 'sop列表接口')
-        // 插入一个默认的空选项
-        // const defaultOption = {
-        //   sopId: null,
-        //   sopName: "不使用sop模板  ",
-        // };
-
-        // 将默认选项添加到结果的最前面
-        // this.sopOptions = [defaultOption, ...res.data.records];
-        this.sopOptions = [...res.data.records]
-      })
-    },
-    // sop下拉change事件 可以传递sopOptions一整个对象过去
-    handleSelectSOP(value) {
-      if (value == null) {
-        this.jobProps = []
-        console.log(this.form.sopId, this.form, 'sop下拉change事件')
-      } else {
-        this.jobProps = this.sopOptions.filter((item) => item.sopId == value)
-
-        this.form.ticketType = this.jobProps[0].sopType
-
-        this.form.ticketName = 'sop_'
-        selectIsSopById(value).then((response) => {
-          console.log(response, 'sop-父组件')
-          this.orderTableData = response.data.pointDetailVOList.map((point) => {
-            return {
-              pointName: point.pointName, // 显示的名称
-              pointId: point.pointId, // 对应的值
-              pointType: point.pointType,
-              powerType: point.powerType,
-              prePointId: point.prePointId
-            }
-          })
-          // console.log(this.orderTableData,'选中sop之后赋值的orderTableData')
-          const value = response.data.ticketUserDTOList //找到上锁人  这里一定要先筛选locker再去给表格筛选 否则表格筛选之后直接不会有上锁人数据了
-            .filter(item => item.userRole == 'jtlocker')
-            .map(item => item.userName)
-          this.form.locker = value[0],//map返回的是数字 所以这样写
-            // console.log(value,response.data.ticketUserDTOList,'form.locker')
-            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')
-      }
-    },
-    // 清除sop下拉框
-    handleClearSop() {
-      this.form.ticketType = ''
-      this.form.ticketName = ''
-
-    },
-    handleClick(tab, event) {
-      // console.log(tab, event);
-    },
-    previousStep(val) {
-      this.activeName = val
-    },
-    nextStep(val) {
-      console.log(val, 'nextStep')
-      if (val == 'second' && this.form.ticketName == '') {
-        this.$message.error('作业票名称不能为空')
-        return
-      } else if (val == 'second' && this.form.ticketCode == '') {
-        this.$message.error('作业票编码不能为空')
-        return
-      }
-      this.activeName = val
-      console.log('我点击了下一步')
-    },
-    // 作业票确认
-    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 UserList = [...(this.form.ticketUserDTOList || []), ...(this.newticketUserDTOList || [])]
-        const pointsList = this.tableData.map((item) => {
-          return {
-            pointId: item.pointId,
-            prePointId: item.prePointId
-          }
-        })
-        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: UserList,
-          workareaId: this.emitworklineId,
-          pointsList: pointsList
-        }
-        const editdata = {
-          pointIds: this.form.spoint.join(','),
-          sopId: this.form.sopId,
-          ticketCode: this.form.ticketCode,
-          ticketContent: this.form.ticketContent,
-          ticketId: this.form.ticketId,
-          ticketEndTime: this.form.ticketEndTime,
-          ticketName: this.form.ticketName,
-          ticketStartTime: this.form.ticketStartTime,
-          ticketType: this.form.ticketType,
-          ticketUserDTOList: UserList,
-          workareaId: this.emitworklineId,
-          pointsList: pointsList
-
-        }
-
-        // 检查 route.query.ticketId 是否为 null
-        console.log(this.$route.query.ticketId, 'this.$route.query.ticketId')
-        if (this.$route.query.ticketId !== 'null') {
-          // 调用编辑接口
-
-          const res = await updateJobTicket(editdata)
-          if (res.code === 200) {
-            // this.$router.go(-1);
-            this.$router.push('/job/jobm')
-
-          } else {
-            console.error('编辑工单失败', res)
-          }
-        } else {
-          console.log(data, '新增的参数')
-          // 调用新增接口
-          const res = await addJobTicket(data)
-          if (res.code === 200) {
-            // this.$router.go(-1);
-            this.$router.push('/job/jobm')
-          } else {
-            console.error('提交工单失败', res)
-          }
-        }
-      } catch (error) {
-        console.error('确认过程中发生错误', error)
-      }
-
-      console.log('确认')
-    },
-    // 选中隔离点 前置节点的change函数
-    onDropdownVisibleChange(row) {
-      console.log(row, '我执行这里拉')
-
-      // 当前节点 ID
-      const currentPointId = row.pointId
-
-      // 获取当前行的 prePointId
-      const currentPrePointId = row.prePointId
-
-      // 已经被选为前置节点的 ID 集合
-      const selectedPrePointIds = new Set(
-        this.tableData
-          .filter((item) => item.prePointId !== null)
-          .map((item) => item.prePointId)
-      )
-
-      // console.log(selectedPrePointIds, 'selectedPrePointIds')
-      // 构建 form.prePointId 数组对象
-      this.form.prePointId = this.tableData.map((item) => ({
-        pointId: item.pointId,
-        prePointId: item.prePointId || null
-      }))
-      // 每次都从原始数据开始过滤
-      let filteredOptions = [...this.initprePointIdOptions]
-
-      // 过滤规则:
-      // 1. 排除自身
-      // 2. 排除已经被选为前置节点的隔离点
-      // 3. 排除所有已经选为前置节点的节点及其前置节点
-      const allExcludedPoints = new Set([currentPointId])
-      this.getAllExcludedPoints(currentPointId, allExcludedPoints)
-
-      filteredOptions = filteredOptions.filter((option) => {
-        return !allExcludedPoints.has(option.pointId)
-      })
-
-      this.prePointIdOptions = filteredOptions
-
-      console.log('过滤后的前置节点选项', this.prePointIdOptions)
-    },
-
-    // 递归获取所有需要排除的节点
-    getAllExcludedPoints(pointId, excludedPoints) {
-      const relatedRows = this.tableData.filter(item => item.prePointId === pointId)
-      for (const row of relatedRows) {
-        excludedPoints.add(row.pointId)
-        this.getAllExcludedPoints(row.pointId, excludedPoints)
-      }
-    },
-
-    // 前置节点改变时的处理函数
-    prePointIdChange(row) {
-      console.log(row, '前置节点改变')
-
-      // 更新 tableData 中对应行的 prePointId
-      const index = this.tableData.findIndex(item => item.pointId === row.pointId)
-      if (index !== -1) {
-        this.$set(this.tableData, index, row)
-      }
-
-      // 重新调用 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)
-    },
-    // 定义一个排序函数,根据 orderTableData 中 pointName 的顺序对 tableData 进行排序
-    sortTableDataByOrder(tableData, orderTableData) {
-      // 构建 orderMap,使用 pointName 作为键,索引作为值
-      const orderMap = new Map(orderTableData.map((item, index) => [item.pointName, index]))
-
-      return tableData.sort((a, b) => {
-        // 如果 pointName 在 orderMap 中,按 orderMap 的索引排序
-        // 如果 pointName 不在 orderMap 中,排在最后,并按 pointName 的自然顺序排列
-        const indexA = orderMap.has(a.pointName) ? orderMap.get(a.pointName) : Infinity
-        const indexB = orderMap.has(b.pointName) ? orderMap.get(b.pointName) : Infinity
-
-        if (indexA === indexB) {
-          // 当两者都不在 orderMap 中时,按 pointName 的自然顺序排列
-          return a.pointName.localeCompare(b.pointName)
-        }
-
-        return indexA - indexB
-      })
-    },
-
-// 子组件逆向传递选中的隔离点
-    handleSelectPoint(points) {
-      console.log(points, this.orderTableData, '父组件接收逆向传递选中的隔离点')
-
-      // 1. 去除重复的点,使用 Set 确保每个 pointId 唯一
-      const uniquePoints = Array.from(
-        new Set(points.map(point => point.pointId))
-      ).map(id => points.find(point => point.pointId === id))
-
-      if (this.$route.query.ticketId == 'null'&&this.form.sopId=='') {
-        this.tableData = uniquePoints // 子组件传递过来的选中节点(去重后)
-      } else {
-        this.tableData = this.sortTableDataByOrder(uniquePoints, this.orderTableData)//去重并排序
-
-      }
-      // this.tableData = uniquePoints; // 子组件传递过来的选中节点(去重后)
-
-      // 使用 Set 来存储传递过来的点值
-      const newValues = new Set(uniquePoints.map((point) => point.pointId))
-
-      // 2. 删除取消选中的点
-      const removedPoints = this.tableData
-        .filter((item) => !newValues.has(item.pointId))
-        .map((item) => item.pointId) // 记录被删除的点
-
-      this.tableData = this.tableData.filter((item) =>
-        newValues.has(item.pointId)
-      )
-
-      // 3. 确保新增点不会重复
-      const existingValues = new Set(this.tableData.map((item) => item.pointId))
-
-      uniquePoints.forEach((point) => {
-        // 如果当前传递的点不在已有的点集中,则添加
-        if (!existingValues.has(point.pointId)) {
-          this.tableData.push({
-            pointName: point.pointName, // 显示的名称
-            pointId: point.pointId, // 对应的值
-            pointType: point.pointType,
-            powerType: point.powerType,
-            prePointId: null
-          })
-
-          this.prePointIdOptions.push({
-            pointName: point.pointName, // 显示的名称
-            pointId: point.pointId // 对应的值
-          })
-          this.initprePointIdOptions = [...this.prePointIdOptions]
-          console.log(this.prePointIdOptions, '前置节点设置下拉')
-          existingValues.add(point.pointId)
-        }
-      })
-
-      // 4. 处理被删除的点,如果这些点作为父节点绑定,则将对应的 prePointId 设置为 null
-      this.tableData.forEach((item) => {
-        if (removedPoints.includes(item.prePointId)) {
-          item.prePointId = null
-        }
-      })
-
-      // 5. 从下拉选项中移除被删除的点
-      this.prePointIdOptions = this.prePointIdOptions.filter(
-        (option) => !removedPoints.includes(option.pointId)
-      )
-      this.initprePointIdOptions = [...this.prePointIdOptions]
-
-      // 6. 确保下拉选项中仍然保留所有未被删除的点
-      const allPoints = uniquePoints.map((point) => ({
-        pointName: point.pointName,
-        pointId: point.pointId
-      }))
-
-      this.prePointIdOptions = allPoints.filter(
-        (option) => !removedPoints.includes(option.pointId)
-      )
-      this.initprePointIdOptions = [...this.prePointIdOptions]
-
-      // 更新 form.spoint 为最新选中的隔离点数组
-      this.form.spoint = uniquePoints.map((point) => point.pointId)
-    },
-    // 车间逆向传递拿到的隔离点数据产线
-    handleProductLineSelected(selectedOption) {
-      // console.log(selectedOption, "父组件接收到的 selectedOption");
-      this.points = selectedOption
-      this.form.workline = selectedOption.label
-      // console.log(this.worklineMap.length, '父组件接收到的 worklineMap')
-    },
-    // 车间子组件逆传递车间相关数据车间
-    handleWorkshopSelected(selectedOption) {
-      console.log(selectedOption, 'handleWorkshopSelected')
-      // this.emitWorkShop = selectedOption
-      // this.form.workshopName = selectedOption.label;//这里是回显车间的 暂时不需要
-      this.form.workline = selectedOption.label//这里是回显作业区域的
-      this.emitworklineId = selectedOption.id
-      this.worklineMap = selectedOption.map
-    },
-    //   时间选项
-    ticketStartTimeChange(value) {
-      this.form.ticketStartTime = value
-      // 更新 pickerOptions 中的 disabledDate 方法
-      this.updatePickerOptions()
-    },
-    ticketEndTimeChange(value) {
-      this.form.ticketEndTime = value
-      this.updatePickerOptions()
-    },
-
-    disabledDate(time) {
-      const startTime = new Date(this.form.ticketStartTime)
-      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
-    },
-
-    reset() {
-      (this.form = {
-        sopId: '',
-        pointIds: '',
-        ticketType: '',
-        ticketName: '',
-        ticketCode: '',
-        ticketContent: '',
-        workshopName: '', //车间名称
-        workline: '', //区域
-        spoint: [], //已选隔离点
-        locker: '', //上锁人
-        coLocker: '', //共锁人
-        ticketStartTime: '', //开始时间
-        ticketEndTime: '', //结束时间
-        ticketUserDTOList: [
-          // {
-          //   userId: '',
-          //   userName: '',
-          //   userRole: '',//作业票角色 暂时不传递
-          //   userType: ''//用户类型 上锁人或共锁人
-          // }
-        ]
-      }),
-        (this.autoGenFlag = false)
-    },
-
-    // 侧边x关闭函数
-    goBack() {
-      this.$router.push('/job/jobm')
-    },
-    // 添加内部人员
-    addInside() {
-      this.open = true
-      this.title = '添加内部人员'
-      this.insideMumber = true
-      this.outsideMumber = false
-      // this.form.ticketUserDTOList = [];
-      this.dialogForm.nickName = ''
-    },
-    addOutside() {
-      this.open = true
-      this.title = '添加外部人员'
-      this.OutSideUserTableData=[]
-      this.insideMumber = false
-      this.outsideMumber = true
-      this.dialogForm.username = null
-    },
-    // 取消按钮
-    cancel() {
-      this.open = false
-    },
-    // 人员列表删除
-    deleteRow(index, rows) {
-      console.log(index, rows, '删除的行')
-      const deletedItem = rows[index] // 获取要删除的项
-      rows.splice(index, 1) // 从显示的列表中删除
-      // const formIndex = this.form.ticketUserDTOList.findIndex(
-      //   (item) => item.userId === deletedItem.userId
-      // )
-      const formIndex = this.form.ticketUserDTOList.findIndex(
-        (item) => item.userName == deletedItem.userName
-      )
-      if (formIndex !== -1) {
-        this.form.ticketUserDTOList.splice(formIndex, 1) // 从 form.ticketUserDTOList 中删除
-      }
-    },
-    // 上锁人下拉选择change事件
-    handlelockerChage(val) {
-      console.log(val, '上锁人chage')
-      const user = this.listLockerOption.find((item) => item.value === val)
-
-      if (user && this.form.locker !== '') {
-        const existingUser = this.form.ticketUserDTOList.find(
-          (u) => u.userName === user.label
-        )
-        if (!existingUser) {
-          this.newticketUserDTOList.push({
-            userName: user.label,
-            userId: user.value,
-            userType: 0,
-            userRole: 'jtlocker'
-          })
-
-          console.log(this.newticketUserDTOList, '用户')
-        } else {
-          // console.log('用户已存在', user.label)
-        }
-      }
-    },
-
-    // 添加内部人员的用户新增到ticketUserDTOList这个数据里
-    changeInsideUser(values) {
-      const usersinside = values
-        .map((value) =>
-          this.listCoLockerOption.find((item) => item.value === value)
-        )
-        .filter(Boolean)
-
-      usersinside.forEach((user) => {
-        const existingUser = this.form.ticketUserDTOList.find(
-          (u) => u.userName === user.label
-        )
-        // console.log(usersinside, 'usersinside----67')
-        if (!existingUser) {
-          this.form.ticketUserDTOList.push({
-            userName: user.label,
-            userId: user.value,
-            userType: 0,
-            userRole: 'jtcolocker'
-
-          })
-          console.log(this.form.ticketUserDTOList, '用户')
-        } else {
-          // console.log('用户已存在', user.label)
-        }
-      })
-      this.updateCoLocker()
-
-      // console.log(this.form.ticketUserDTOList, '用户')
-    },
-    // 添加外部人员 输入名称 userType==1是共锁人 0是上锁人 userId==0
-    outSideUserInput(event) {
-      this.dialogForm.username = event
-    },
-    // 添加外部人员弹窗 添加给表格数据的按钮事件
-    insertOutSideTable() {
-      const newUserName = this.dialogForm.username.trim()
-      if (newUserName === '') {
-        this.$message.warning('请输入用户名')
-        return
-      }
-      // 检查新用户是否已存在于表格中
-      const existingUser = this.OutSideUserTableData.find(user => user.userName === newUserName)
-      if (existingUser) {
-        this.$message.warning('该用户已存在')
-        return
-      }
-      // 添加新用户
-      this.OutSideUserTableData.push({
-        userName: newUserName,
-        userId: this.nextUserId++
-      })
-
-      // 清空对话框表单
-      this.dialogForm.username = ''
-
-      // 打印当前的外部人员表格数据
-      console.log(this.OutSideUserTableData, 'OutSideUserTableData')
-    },
-    // 添加外部人员 确认弹窗
-    outSideDialogConfirm() {
-      this.updateCoLocker()
-      this.open = false
-    },
-    // 更新界面中共锁人下拉框显示的内容
-    updateCoLocker() {
-      // 检查并补充 ticketUserDTOList 中缺少的用户
-      this.OutSideUserTableData.forEach((item) => {
-        const existingUser = this.form.ticketUserDTOList.find(
-          (u) => u.userName === item.userName
-        )
-        if (!existingUser) {
-          this.form.ticketUserDTOList.push({
-            userName: item.userName,
-            userId: 0,
-            userType: 1,
-            userRole: 'jtcolocker'
-
-          })
-        }
-      })
-
-      console.log(this.form.ticketUserDTOList, '最终的 ticketUserDTOList')
-    },
-    //自动生成编码
-    handleAutoGenChange(autoGenFlag) {
-      if (autoGenFlag) {
-        genCode('JOB_TICKET_CODE').then((response) => {
-          this.form.ticketCode = response
-        })
-      } else {
-        this.form.ticketCode = null
-      }
-
-    },
-    //是否开启人员配置界面
-    handleOpenStaffing(openStaffing) {
-      // 定义一个函数来封装接口调用逻辑
-      const fetchUserData = (roleKey) => {
-        const data = {
-          pageNum: 1,
-          pageSize: 10000,
-          roleKey: roleKey
-        }
-        return SopUser(data).then((res) => {
-          // console.log(res, `上锁人 - ${roleKey}`);
-          return res // 返回结果以便后续处理
-        }).catch((err) => {
-          // console.error(err, `请求失败 - ${roleKey}`);
-          throw err // 抛出错误以便捕获
-        })
-      }
-
-      // 调用两次接口,分别传递不同的 roleKey
-      Promise.all([
-        fetchUserData('jtlocker'),
-        fetchUserData('jtcolocker')
-      ]).then((results) => {
-        // 处理两次调用的结果
-        const [jtlockerResult, jtcolockerResult] = results
-        console.log(jtlockerResult, jtcolockerResult, 'jtlocker 结果')
-        this.listLockerOption = jtlockerResult.rows.map((item) => {
-          return {
-            label: item.nickName,
-            value: item.userId
-          }
-        })
-        this.listCoLockerOption = jtcolockerResult.rows.map((item) => {
-          return {
-            label: item.nickName,
-            value: item.userId
-          }
-        })
-
-      }).catch((err) => {
-        console.error(err, '其中一个请求失败')
-      })
-      if (openStaffing) {
-        console.log(openStaffing, '开启人员配置')
-        this.openStaffing = openStaffing
-
-      } else {
-        console.log(openStaffing, '关闭人员配置')
-        this.openStaffing = openStaffing
-        this.activeName = 'first'
-      }
-    }
-  }
-}
-</script>
-
-
-<style scoped lang="scss">
-.newOperations {
-  width: 99%;
-  height: 100%;
-  //background: pink;
-  margin: 10px;
-  display: flex;
-
-  .left {
-    width: 75%;
-    height: 830px;
-    // background: #eee;
-    margin-right: 10px;
-  }
-
-  .right {
-    height: 100%;
-    flex: 1;
-
-    .right_top {
-      height: 550px;
-    }
-
-    .workTicket_btn {
-      position: relative;
-      left: 63%;
-      height: 30px;
-      line-height: 10px;
-    }
-
-    .gsr {
-      margin-left: 60px;
-    }
-  }
-}
-
-//右侧卡片样式开始
-.text {
-  font-size: 14px;
-}
-
-.item {
-  margin-bottom: 18px;
-
-  p {
-    font-size: 18px;
-    font-weight: bolder;
-    font-family: SourceHanSansSC-bold;
-  }
-}
-
-.clearfix:before,
-.clearfix:after {
-  display: table;
-  content: "";
-  width: 320px;
-}
-
-.clearfix:after {
-  clear: both;
-}
-
-.box-card {
-  // width: 390px;
-  width: 95%;
-  height: 850px;
-}
-
-//右侧卡片样式结束
-//隔离点多选框样式
-.selects {
-  .el-input.el-input--medium.el-input--suffix {
-    // 调整箭头符号块的宽度
-    width: 175px !important;
-  }
-
-  .el-input.el-input--medium.el-input--suffix {
-    .el-input__inner {
-      // 调整输入框的宽高
-      height: 36px !important;
-      width: 220px !important;
-    }
-
-    .el-input__suffix-inner {
-      // 调整箭头符号的位置
-      position: absolute;
-      right: -45px;
-    }
-  }
-
-  .el-select__tags {
-    // 调整输入框里面的多选不换行
-    flex-wrap: nowrap !important;
-  }
-}
-
-//隔离点多选框样式结束
-</style>
-
-<style scoped lang="scss" src="@/assets/styles/dialog-title.scss">
-</style>

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

@@ -1,528 +0,0 @@
-  <div class="app-container">
-    <el-form
-      :model="queryParams"
-      ref="queryForm"
-      size="small"
-      :inline="true"
-      v-show="showSearch"
-      label-width="100px"
-    >
-
-      <el-form-item label="作业票名称" prop="ticketName">
-        <el-input
-          v-model="queryParams.ticketName"
-          placeholder="请输入作业票名称"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="设备/工艺" prop="machineryId">
-        <treeselect
-          style="width: 218px"
-          v-model="queryParams.machineryId"
-          :options="TechnologyOptions"
-          :normalizer="Technologynormalizer"
-          placeholder="选择设备工艺"
-        />
-      </el-form-item>
-      <el-form-item label="岗位" prop="workstationId">
-        <treeselect
-          style="width: 218px"
-          v-model="queryParams.workstationId"
-          :options="marsOptions"
-          :normalizer="normalizer"
-          placeholder="选择岗位"
-        />
-      </el-form-item>
-      <el-form-item label="状态" prop="ticketStatus">
-        <el-select v-model="queryParams.ticketStatus" placeholder="状态">
-          <el-option
-            v-for="dict in dict.type.ticket_status"
-            :key="dict.value"
-            :label="dict.label"
-            :value="dict.value"
-          />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="创建时间">
-        <el-date-picker
-          style="width: 218px"
-          v-model="createTime"
-          type="daterange"
-          align="right"
-          unlink-panels
-          range-separator="至"
-          start-placeholder="开始日期"
-          end-placeholder="结束日期"
-          :picker-options="pickerOptions"
-        >
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item label="作业类型" prop="ticketType">
-        <el-select
-          v-model="queryParams.ticketType"
-          placeholder="请选择作业类型"
-        >
-          <el-option
-            v-for="dict in dict.type.ticket_type"
-            :key="dict.value"
-            :label="dict.label"
-            :value="dict.value"
-          />
-        </el-select>
-      </el-form-item>
-      <el-form-item>
-        <el-button v-no-more-click
-          type="primary"
-          icon="el-icon-search"
-          size="mini"
-          @click="handleQuery"
-          >搜索</el-button
-        >
-        <el-button v-no-more-click icon="el-icon-refresh" size="mini" @click="resetQuery"
-          >重置</el-button
-        >
-      </el-form-item>
-    </el-form>
-
-    <el-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
-        <el-button v-no-more-click
-          type="primary"
-          plain
-          icon="el-icon-plus"
-          size="mini"
-          @click="handleAdd('hasSop')"
-          v-hasPermi="['mes:job:jobm:add']"
-          >新增sop作业票
-        </el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button v-no-more-click
-          type="primary"
-          plain
-          icon="el-icon-plus"
-          size="mini"
-          @click="handleAdd('noSop')"
-          v-hasPermi="['mes:job:jobm:add']"
-          >新增自定义作业票
-        </el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button v-no-more-click
-          type="danger"
-          plain
-          icon="el-icon-delete"
-          size="mini"
-          :disabled="multiple"
-          @click="handleDelete"
-          v-hasPermi="['mes:sop:sopm:batchremove']"
-          >批量删除
-        </el-button>
-      </el-col>
-      <right-toolbar
-        :showSearch.sync="showSearch"
-        @queryTable="getList"
-      ></right-toolbar>
-    </el-row>
-
-    <el-table
-      v-loading="loading"
-      :data="jobList"
-      @selection-change="handleSelectionChange"
-    >
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="作业票名称" align="center" prop="ticketName" width="270"/>
-      <el-table-column label="所属岗位" align="center" prop="workstationName">
-      </el-table-column>
-      <el-table-column label="设备工艺" align="center" prop="machineryName"></el-table-column>
-      <el-table-column label="状态" align="center" prop="ticketStatus">
-        <template slot-scope="scope">
-          <dict-tag
-            :options="dict.type.ticket_status"
-            :value="scope.row.ticketStatus"
-          />
-        </template>
-      </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="pointCount">
-      </el-table-column>
-      <el-table-column label="创建时间" align="center" prop="createTime">
-      </el-table-column>
-      <el-table-column
-        label="操作"
-        align="center"
-        class-name="small-padding fixed-width"
-      >
-        <template slot-scope="scope">
-          <el-button v-no-more-click
-            size="mini"
-            type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['mes:job:jobm:edit']"
-            >编辑
-          </el-button>
-          <el-button v-no-more-click
-            size="mini"
-            type="text"
-            icon="el-icon-view"
-            @click="handleLook(scope.row)"
-            v-hasPermi="['mes:job:jobm:progress']"
-            >查看
-          </el-button>
-          <el-button v-no-more-click
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['mes:job:jobm:remove']"
-            >删除
-          </el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-
-    <pagination
-      v-show="total > 0"
-      :total="total"
-      :page.sync="queryParams.current"
-      :limit.sync="queryParams.size"
-      @pagination="getList"
-    />
-  </div>
-</template>
-
-<script>
-import {
-  getJobTicketInfo,
-  listJobTicket,
-  deleteIsJobTicket,
-} from "@/api/mes/job/job";
-
-import { genCode } from "@/api/system/autocode/rule";
-import { mapActions } from "vuex";
-
-import Treeselect from "@riophae/vue-treeselect";
-import "@riophae/vue-treeselect/dist/vue-treeselect.css";
-
-import { listMarsDept } from '@/api/system/marsdept'
-import { listTechnology } from '@/api/system/machinery'
-export default {
-  name: "Team",
-  components: { Treeselect },
-  dicts: ["ticket_type", "ticket_status"],
-  data() {
-    return {
-      //自动生成编码
-      autoGenFlag: false,
-      optType: undefined,
-      // 遮罩层
-      loading: true,
-      // 选中数组
-      ids: [],
-      codes: [],
-      // 非单个禁用
-      single: true,
-      // 非多个禁用
-      multiple: true,
-      // 显示搜索条件
-      showSearch: true,
-      // 总条数
-      total: 0,
-      // 班组表格数据
-      jobList: [],
-      //mars岗位树选项
-      marsOptions: [],
-      // 弹出层标题
-      title: "",
-      // 是否显示弹出层
-      open: false,
-      // 车间数据
-      workshopList: [],
-      // 作业区域数据
-      workareaList: [],
-      // 查询参数
-      createTime: "",
-      queryParams: {
-        current: 1,
-        size: 10,
-        ticketCode: null,
-        ticketName: null,
-        ticketStatus: null,
-        workshopId: null,
-        workareaId: null,
-        ticketType: null,
-        startTime: "",
-        endTime: "",
-      },
-      pickerOptions: {
-        shortcuts: [
-          {
-            text: "最近一周",
-            onClick(picker) {
-              const end = new Date();
-              const start = new Date();
-              start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
-              picker.$emit("pick", [start, end]);
-            },
-          },
-          {
-            text: "最近一个月",
-            onClick(picker) {
-              const end = new Date();
-              const start = new Date();
-              start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
-              picker.$emit("pick", [start, end]);
-            },
-          },
-          {
-            text: "最近三个月",
-            onClick(picker) {
-              const end = new Date();
-              const start = new Date();
-              start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
-              picker.$emit("pick", [start, end]);
-            },
-          },
-        ],
-      },
-      // 表单参数
-      form: {},
-      TechnologyOptions:[],//设备工艺查询下拉
-    //
-    };
-  },
-  created() {
-    this.getList();
-    this.getOtherList()
-  },
-
-  methods: {
-    ...mapActions("sopSelectPoints", [
-      "setSopEdit",
-      "setSopLook",
-      "setJobLook",
-      "selectSopPoints",
-      "PointTableData",
-      "PointTableData",
-      "setMapData",
-      'setVisibleSopSelect'
-    ]),
-    // 格式化日期查询数据
-    formatDate(date) {
-      if (date && date instanceof Date && !isNaN(date)) {
-        // 使用本地时间
-        return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(
-          2,
-          "0"
-        )}-${String(date.getDate()).padStart(2, "0")}`;
-      }
-      return null;
-    },
-    /** 查询班组列表 */
-    getList() {
-      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]);
-      }
-      listJobTicket(this.queryParams).then((response) => {
-        console.log(response, "response--作业票列表");
-        this.jobList = response.data.records;
-        this.total = response.data.total;
-        this.loading = false;
-      });
-
-
-    },
-    getOtherList(){
-      const data={
-        pasge:1,
-        size:-1
-      }
-      listMarsDept(data).then(response => {
-        this.marsOptions = this.handleTree(response.data.records,"workstationId","parentId")
-      })
-      listTechnology(data).then((response) => {
-        this.TechnologyOptions = this.handleTree(response.data.records,"machineryId","parentId")
-      })
-    },
-    /** 转换部门数据结构 */
-    normalizer(node) {
-      if (node.children && !node.children.length) {
-        delete node.children;
-      }
-      return {
-        id: node.workstationId,
-        label: node.workstationName,
-        children: node.children,
-      };
-    },
-    Technologynormalizer(node) {
-      if (node.children &&!node.children.length) {
-        delete node.children;
-      }
-      return {
-        id: node.machineryId,
-        label: node.machineryName,
-        children: node.children,
-      };
-    },
-
-    // 取消按钮
-    cancel() {
-      this.open = false;
-      this.reset();
-    },
-    // 表单重置
-    reset() {
-      this.form = {
-        ticketCode: null,
-        ticketName: null,
-        ticketStatus: null,
-        workstationId: null,
-        workstationName: null,
-        ticketType: null,
-        pointCount: null,
-        createTime: null,
-      };
-      this.resetForm("form");
-    },
-    /** 搜索按钮操作 */
-    handleQuery() {
-      this.queryParams.current = 1;
-      this.getList();
-    },
-    /** 重置按钮操作 */
-    resetQuery() {
-      this.createTime = "";
-      (this.queryParams.startTime = ""),
-        (this.queryParams.endTime = ""),
-
-        this.resetForm("queryForm");
-      this.handleQuery();
-    },
-    // 多选框选中数据
-    handleSelectionChange(selection) {
-      this.ids = selection.map((item) => item.ticketId);
-      this.codes = selection.map((item) => item.ticketCode);
-      this.single = selection.length !== 1;
-      this.multiple = !selection.length;
-    },
-    /** 新增按钮操作 */
-    handleAdd(val) {
-      if(val=='hasSop'){
-        this.setVisibleSopSelect(true)
-      }else {
-        this.setVisibleSopSelect(false)
-      }
-      this.reset();
-      this.open = true;
-      this.selectSopPoints(null);
-      this.PointTableData(null);
-      // this.$router.push(`/mes/job/jobm/NewOperations?ticketId=null`);//黄总原来的作业票新增
-      this.$router.push({
-        name:'NewMarsJob'
-      });
-      this.title = "添加隔离点";
-      this.optType = "add";
-      this.setSopLook(false);
-      this.setMapData(null);
-    },
-    // 查看
-    handleLook(row) {
-      // 设置为true表示作业票里查看不可以点击隔离点
-      this.setSopLook(true);
-      this.$router.push(`/mes/job/jobm/lookWork?ticketId=${row.ticketId}`);
-    },
-
-    /** 修改按钮操作 */
-    handleUpdate(row) {
-      console.log(row,'作业票编辑拿到的row');
-      this.reset();
-      const teamId = row.ticketId || this.ids;
-      this.setSopLook(false);
-      // 如果编辑的是带有sop模板的 就不允许点击 新增或者删除隔离点
-
-      this.$router.push(
-        `/mes/job/jobm/NewOperationsEdit?ticketId=${row.ticketId}`
-      );
-      getJobTicketInfo(teamId).then((response) => {
-        this.form = response.data;
-        this.open = true;
-        this.title = "修改隔离点信息";
-        this.optType = "edit";
-      });
-    },
-    /** 提交按钮 */
-    submitForm() {
-      this.$refs["form"].validate((valid) => {
-        if (valid) {
-          if (this.form.teamId != null) {
-            updateTeam(this.form).then((response) => {
-              this.$modal.msgSuccess("修改成功");
-              this.open = false;
-              this.getList();
-            });
-          } else {
-            addTeam(this.form).then((response) => {
-              this.$modal.msgSuccess("新增成功");
-              this.open = false;
-              this.getList();
-            });
-          }
-        }
-      });
-    },
-    /** 删除按钮操作 */
-    handleDelete(row) {
-      const teamIds = row.ticketId || this.ids;
-      const titcketCodes = row.ticketCode || this.codes;
-      this.$modal
-        .confirm('是否确认删除作业票编号为"' + titcketCodes + '"的数据项?')
-        .then(function () {
-          return deleteIsJobTicket(teamIds);
-        })
-        .then(() => {
-          this.getList();
-          this.$modal.msgSuccess("删除成功");
-        })
-        .catch(() => {});
-    },
-    /** 导出按钮操作 */
-    handleExport() {
-      this.download(
-        "cal/team/export",
-        {
-          ...this.queryParams,
-        },
-        `team_${new Date().getTime()}.xlsx`
-      );
-    },
-    //自动生成编码
-    handleAutoGenChange(autoGenFlag) {
-      if (autoGenFlag) {
-        genCode("CAL_TEAM_CODE").then((response) => {
-          this.form.teamCode = response;
-        });
-      } else {
-        this.form.teamCode = null;
-      }
-    },
-  },
-};
-</script>
-<style lang="scss" src="@/assets/styles/dialog-title.scss" scoped>
-.el-input-width {
-  width: 380px !important;
-}
-</style>

+ 0 - 1632
src/views/mes/job/jobm/lookWork.vue

@@ -1,1632 +0,0 @@
-<template>
-  <div class="newOperations">
-    <!--    newOperations盒子开始-->
-    <div class="left">
-      <!-- 左边第一个是隔离点组件 第二个是车间组件-->
-      <SeparationPoint
-        v-show="this.activeName == 'second'"
-        @selection-changed="handleSelectPoint"
-        :points="points"
-      ></SeparationPoint>
-      <keep-alive>
-        <WorkShop
-          v-show="this.activeName == 'first' || this.activeName == 'third'"
-          @product-line-selected="handleProductLineSelected"
-          @work-shop-selected="handleWorkshopSelected"
-          :jobProps="jobProps"
-        ></WorkShop>
-      </keep-alive>
-    </div>
-    <!-- 作业区域  -->
-    <div class="lefttree">
-      <el-card class="lefttree-card" v-if="this.showWorkEare == true">
-        <b class="title">作业区域</b>
-        <div class="head-container">
-          <el-input
-            v-model="workareaName"
-            placeholder="请输入作业区域"
-            clearable
-            size="small"
-            prefix-icon="el-icon-search"
-            style="margin-bottom: 20px"
-            @input="handleInputChange"
-          />
-        </div>
-        <div class="head-container">
-          <el-tree
-            :data="deptOptions"
-            :props="defaultProps"
-            :expand-on-click-node="false"
-            :filter-node-method="filterNode"
-            ref="tree"
-            node-key="id"
-            default-expand-all
-            @node-click="handleNodeClick"
-            highlight-current
-          />
-        </div>
-      </el-card>
-      <!-- 收起 -->
-      <el-tooltip
-        class="item"
-        effect="dark"
-        content="收起作业区域内容"
-        placement="top-start"
-      >
-        <el-button
-          type="primary"
-          icon="el-icon-s-fold"
-          class="btnwork"
-          v-if="this.showWorkEare == true"
-          @click="openWorkEare"
-        ></el-button>
-      </el-tooltip>
-
-      <!-- 打开 -->
-      <el-tooltip
-        class="item"
-        effect="dark"
-        content="展开作业区域内容"
-        placement="top-start"
-      >
-        <el-button
-          type="primary"
-          icon="el-icon-s-unfold"
-          class="btnwork"
-          v-if="this.showWorkEare == false"
-          @click="closeWorkEare"
-        ></el-button>
-      </el-tooltip>
-    </div>
-    <div class="right">
-      <div class="right_top">
-        <el-card class="box-card">
-          <div slot="header" class="clearfix">
-            <span style="font-size: 18px">{{ this.getTicketTitle }}</span>
-            <span
-              style="
-                padding: 1px 10px 1px 15%;
-                font-size: 22px;
-                cursor: pointer;
-              "
-              type="text"
-              @click="goBack"
-              >×</span
-            >
-          </div>
-          <div class="text item">
-            <!-- 新增作业票信息-->
-            <b class="title">基本信息</b>
-            <el-form ref="form" :model="form" label-width="90px">
-              <!--getVisibleSopSelect是vuex判断新增是自定义还是建SOP作业票 第二个是编辑的时候如果有sopId就渲染 -->
-
-              <el-form-item
-                label="选择SOP"
-                prop="sop"
-                v-if="this.getVisibleSopSelect && this.form.sopId !== null"
-              >
-                <el-select
-                  :disabled="this.getSopLook"
-                  v-model="form.sopId"
-                  placeholder="请选择sop"
-                  clearable
-                  style="width: 100%"
-                  @clear="handleClearSop"
-                  @change="handleSelectSOP"
-                >
-                  <el-option
-                    v-for="dict in this.sopOptions"
-                    :key="dict.sopId"
-                    :label="dict.sopName"
-                    :value="dict.sopId"
-                  />
-                </el-select>
-              </el-form-item>
-
-              <el-form-item label="作业票名称" prop="ticketName">
-                <el-input
-                  :disabled="this.getSopLook"
-                  v-model="form.ticketName"
-                  placeholder="请输入作业票名称"
-                  style="width: 100%"
-                />
-              </el-form-item>
-              <el-row>
-                <el-col :span="16">
-                  <el-form-item label="作业票编号" prop="ticketCode">
-                    <el-input
-                      :disabled="this.getSopLook"
-                      v-model="form.ticketCode"
-                      placeholder="请输入作业票编号"
-                      style="width: 100%"
-                    />
-                  </el-form-item>
-                </el-col>
-                <el-col :span="8">
-                  <el-form-item label-width="80">
-                    <el-switch
-                      :disabled="this.getSopLook"
-                      v-model="autoGenFlag"
-                      active-color="#13ce66"
-                      active-text="自动生成"
-                      @change="handleAutoGenChange(autoGenFlag)"
-                    >
-                    </el-switch>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-
-              <el-form-item label="作业票类型" prop="ticketType">
-                <el-select
-                  :disabled="this.getSopLook"
-                  v-model="form.ticketType"
-                  placeholder="请选择作业类型"
-                  clearable
-                  style="width: 100%"
-                >
-                  <el-option
-                    v-for="dict in dict.type.ticket_type"
-                    :key="dict.value"
-                    :label="dict.label"
-                    :value="dict.value"
-                  />
-                </el-select>
-              </el-form-item>
-              <el-form-item label="作业内容" prop="ticketContent">
-                <el-input
-                  :disabled="this.getSopLook"
-                  type="textarea"
-                  v-model="form.ticketContent"
-                  :rows="2"
-                ></el-input>
-              </el-form-item>
-            </el-form>
-
-            <!-- 隔离点信息-->
-            <b class="title">隔离点信息</b>
-            <el-form ref="form" :model="form" label-width="90px">
-              <!-- <el-form-item label="作业区域" prop="workline">
-                <el-input
-                  v-model="form.workline"
-                  style="width: 100%"
-                  disabled
-                />
-              </el-form-item> -->
-              <div class="text item">
-                <el-table
-                  :data="tableData"
-                  stripe
-                  height="300"
-                  style="width: 100%; overflow: -moz-scrollbars-none"
-                  class="tabData"
-                >
-                  <el-table-column prop="pointName" label="隔离点" width="60">
-                    <template slot-scope="scope">
-                      <span style="color: #2a87ff">{{
-                        scope.row.pointName
-                      }}</span>
-                    </template>
-                  </el-table-column>
-                  <el-table-column
-                    prop="pointType"
-                    label="隔离点类型"
-                    width="85"
-                  >
-                    <template slot-scope="scope">
-                      {{ scope.row.pointType }}
-                    </template>
-                  </el-table-column>
-                  <el-table-column
-                    prop="powerType"
-                    label="危险能量类型"
-                    width="100"
-                  >
-                    <template slot-scope="scope">
-                      {{ scope.row.powerType }}
-                    </template>
-                  </el-table-column>
-                  <el-table-column
-                    prop="prePointId"
-                    label="前置隔离点"
-
-                  >
-                    <template slot-scope="scope">
-                      <el-select
-                        size="mini"
-                        v-model="scope.row.prePointId"
-                        @change="prePointIdChange(scope.row)"
-                        @visible-change="onDropdownVisibleChange(scope.row)"
-                        disabled
-                        clearable
-                      >
-                        <el-option
-                          v-for="item in prePointIdOptions"
-                          :key="item.pointId"
-                          :label="item.pointName"
-                          :value="item.pointId"
-                        >
-                        </el-option>
-                      </el-select>
-                    </template>
-                  </el-table-column>
-                </el-table>
-              </div>
-            </el-form>
-            <!--人员选择-->
-            <b class="title">人员信息</b>
-            <el-form ref="form" :model="form" label-width="70px">
-              <el-form-item label="开始时间" prop="ticketStartTime">
-                <el-date-picker
-                  :disabled="this.getSopLook"
-                  v-model="form.ticketStartTime"
-                  type="datetime"
-                  placeholder="选择日期时间"
-                  align="right"
-                  :picker-options="pickerOptions"
-                  style="width: 100%"
-                  @change="ticketStartTimeChange"
-                >
-                </el-date-picker>
-              </el-form-item>
-              <el-form-item label="结束时间" prop="ticketEndTime">
-                <el-date-picker
-                  :disabled="this.getSopLook"
-                  v-model="form.ticketEndTime"
-                  type="datetime"
-                  placeholder="选择日期时间"
-                  align="right"
-                  :picker-options="pickerOptions"
-                  style="width: 100%"
-                  @change="ticketEndTimeChange"
-                >
-                </el-date-picker>
-              </el-form-item>
-              <el-form-item label="上锁人" prop="locker">
-                <el-select
-                  :disabled="this.getSopLook"
-                  v-model="form.locker"
-                  placeholder="上锁人"
-                  clearable
-                  style="width: 100%"
-                  @change="handlelockerChage"
-                >
-                  <el-option
-                    v-for="dict in this.listLockerOption"
-                    :key="dict.value"
-                    :label="dict.label"
-                    :value="dict.value"
-                  />
-                </el-select>
-              </el-form-item>
-
-              <el-form-item label="共锁人" prop="coLocker">
-                <el-button
-                  type="primary"
-                  @click="addInside"
-                  class="gsr"
-                  size="mini"
-                  disabled
-                  >添加内部人员
-                </el-button>
-                <el-button
-                  type="primary"
-                  @click="addOutside"
-                  size="mini"
-                  disabled
-                  >添加外部人员
-                </el-button>
-              </el-form-item>
-              <div class="text item">
-                <el-table
-                  :data="sortedTicketUserDTOList"
-                  stripe
-                  height="300"
-                  style="width: 100%; overflow: -moz-scrollbars-none"
-                  class="tabData"
-                >
-                  <el-table-column prop="userId" label="序号" width="50">
-                  </el-table-column>
-                  <el-table-column prop="userName" label="共锁人" width="110">
-                    <template slot-scope="scope">
-                      <span style="color: #2a87ff">{{
-                        scope.row.userName
-                      }}</span>
-                    </template>
-                  </el-table-column>
-                  <el-table-column
-                    prop="userType"
-                    label="共锁人来源"
-                    width="100"
-                  >
-                    <template slot-scope="scope">
-                      <span>{{
-                        scope.row.userType == "0" ? "内部" : "外部"
-                      }}</span>
-                    </template>
-                  </el-table-column>
-                  <el-table-column label="" width="80">
-                    <template slot-scope="scope">
-                      <el-button
-                        @click.native.prevent="
-                          deleteRow(scope.$index, sortedTicketUserDTOList)
-                        "
-                        type="text"
-                        size="small"
-                        disabled
-                      >
-                        移除
-                      </el-button>
-                    </template>
-                  </el-table-column>
-                </el-table>
-              </div>
-            </el-form>
-          </div>
-        </el-card>
-      </div>
-    </div>
-    <!-- 添加或修改设备维修单对话框 -->
-    <el-dialog
-      :visible.sync="open"
-      width="450px"
-      append-to-body
-      style="margin-top: 13%"
-    >
-      <div slot="title" class="dialog-title">
-        <i></i>
-        <span class="title">{{ title }}</span>
-      </div>
-      <el-form ref="dialogForm" :model="dialogForm" label-width="70px">
-        <el-form-item label="选择人员" prop="nickName" v-if="insideMumber">
-          <el-select
-            v-model="dialogForm.nickName"
-            placeholder="请选择人员"
-            clearable
-            style="width: 100%"
-            multiple
-            @change="changeInsideUser"
-          >
-            <el-option
-              v-for="dict in this.listCoLockerOption"
-              :key="dict.value"
-              :label="dict.label"
-              :value="dict.value"
-            />
-          </el-select>
-        </el-form-item>
-
-        <el-form-item label="人员ID" prop="username" v-if="outsideMumber">
-          <el-row>
-            <el-col :span="16">
-              <el-input
-                v-model="dialogForm.username"
-                placeholder="请输入人员ID"
-                clearable
-                style="width: 80%"
-                @change="outSideUserInput"
-              />
-            </el-col>
-            <el-col :span="4">
-              <el-button type="primary" @click="insertOutSideTable"
-                >添加</el-button
-              >
-            </el-col>
-          </el-row>
-        </el-form-item>
-        <el-row>
-          <el-table
-            :data="OutSideUserTableData"
-            stripe
-            height="200"
-            v-if="outsideMumber"
-          >
-            <el-table-column prop="userId" label="序号"> </el-table-column>
-            <el-table-column prop="userName" label="人员ID">
-              <template slot-scope="scope">
-                <span style="color: #2a87ff">{{ scope.row.userName }}</span>
-              </template>
-            </el-table-column>
-            <el-table-column label="操作" width="80">
-              <template slot-scope="scope">
-                <el-button
-                  @click.native.prevent="
-                    deleteRow(scope.$index, OutSideUserTableData)
-                  "
-                  type="text"
-                  size="small"
-                >
-                  移除
-                </el-button>
-              </template>
-            </el-table-column>
-          </el-table>
-        </el-row>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <!--  内部人员确认-->
-        <el-button type="primary" @click="cancel" v-if="insideMumber"
-          >确认</el-button
-        >
-        <!--        外部人员确认-->
-        <el-button
-          type="primary"
-          @click="outSideDialogConfirm"
-          v-if="outsideMumber"
-          >确认</el-button
-        >
-        <el-button @click="cancel">取 消</el-button>
-      </div>
-    </el-dialog>
-    <!--    newOperations盒子结束-->
-    <!-- 加载 -->
-    <div class="loadbox" v-if="isVisible">
-      <h5>加载中</h5>
-      <i class="el-icon-loading"></i>
-    </div>
-  </div>
-</template>
-
-
-<script>
-import SeparationPoint from "@/components/separationPoint/index.vue";
-import WorkShop from "@/components/separationPoint/workshop.vue";
-import {
-  listJobTicket,
-  getJobTicketInfo,
-  addJobTicket,
-  updateJobTicket,
-  deleteIsJobTicket,
-  getworkareaList,
-} from "@/api/mes/job/job";
-import { selectIsSopById, SopUser } from "@/api/mes/sop/sopindex-booz";
-import { mapGetters, mapActions } from "vuex";
-import { getIsSopPage } from "@/api/mes/sop/sopindex-booz";
-import { genCode } from "@/api/system/autocode/rule";
-import { listWorkarea } from "@/api/mes/wa/workarea";
-import "@riophae/vue-treeselect/dist/vue-treeselect.css";
-import Treeselect from "@riophae/vue-treeselect";
-
-export default {
-  name: "addView",
-  dicts: ["ticket_type", "power_type", "point_type", "is_user_type"],
-  props: {
-    sopProps: {
-      type: Array,
-      default: () => [],
-    },
-    jobProps: {
-      type: Array,
-      default: () => [],
-    },
-  },
-  components: {
-    SeparationPoint,
-    WorkShop,
-    Treeselect,
-  },
-  data() {
-    return {
-      //自动生成编码
-      autoGenFlag: false,
-      openStaffing: true,
-      activeName: "second",
-      form: {
-        sopId: "",
-        pointIds: "",
-        ticketId: "",
-        ticketType: "",
-        ticketName: "",
-        ticketCode: "",
-        ticketContent: "",
-        workshopName: "", //车间名称
-        workline: "", //区域
-        spoint: [], //已选隔离点
-        locker: "", //上锁人
-        coLocker: "", //共锁人
-        ticketStartTime: "", //开始时间
-        ticketEndTime: "", //结束时间
-        workareaId: null, //作业区域id
-        ticketUserDTOList: [
-          // {
-          //   userId: '',
-          //   userName: '',
-          //   userRole: '',//作业票角色 暂时不传递 内部人还是外部人
-          //   userType: ''//用户类型 上锁人或共锁人
-          // }
-        ], //所选择的用户
-      },
-      // 用来清空form
-      initialFormState: {
-        // 初始状态对象
-        sopId: "",
-        pointIds: "",
-        ticketId: "",
-        ticketType: "",
-        ticketName: "",
-        ticketCode: "",
-        ticketContent: "",
-        workshopName: "", //车间名称
-        workline: "", //区域
-        spoint: [], //已选隔离点
-        locker: "", //上锁人
-        coLocker: "", //共锁人
-        ticketStartTime: "", //开始时间
-        ticketEndTime: "", //结束时间
-        pointDetailVOList: [], //隔离点数据
-        ticketUserDTOList: [
-          // {
-          //   userId: '',
-          //   userName: '',
-          //   userRole: '',//作业票角色 暂时不传递 内部人还是外部人
-          //   userType: ''//用户类型 上锁人或共锁人
-          // }
-        ], //所选择的用户
-      },
-      dialogForm: {
-        nickName: "",
-        username: "",
-      },
-      // 已选隔离点
-      tableData: [],
-      orderTableData:[],//排序
-      pickerOptions: {
-        shortcuts: [
-          {
-            text: "今天",
-            onClick(picker) {
-              picker.$emit("pick", new Date());
-            },
-          },
-          {
-            text: "昨天",
-            onClick(picker) {
-              const date = new Date();
-              date.setTime(date.getTime() - 3600 * 1000 * 24);
-              picker.$emit("pick", date);
-            },
-          },
-          {
-            text: "一周前",
-            onClick(picker) {
-              const date = new Date();
-              date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
-              picker.$emit("pick", date);
-            },
-          },
-        ],
-      },
-      // 是否显示弹出层
-      open: false,
-      // 弹出层标题
-      title: "",
-      // 弹框中显示的form表单内容
-      insideMumber: false,
-      outsideMumber: false,
-      points: null, //逆向传递拿到隔离点的数据
-      emitWorkShop: null, //车间逆向传递拿到车间相关数据
-      emitworklineId: null, //生产线逆向传递拿到数据
-      sopOptions: [], //sop下拉
-      jobProps: [], //正向传递给车间components
-      // 表单校验
-      rules: {
-        teamCode: [
-          { required: true, message: "班组编号不能为空", trigger: "blur" },
-        ],
-        teamName: [
-          { required: true, message: "班组名称不能为空", trigger: "blur" },
-        ],
-        calendarType: [
-          { required: true, message: "清选择班组类型", trigger: "blur" },
-        ],
-      },
-      newticketUserDTOList: [], //为了上锁人单独传递数据
-      prePointIdOptions: [], //前置节点的下拉选项
-      initprePointIdOptions: [], //前置节点初始化数据选项
-      prePointId: null, //回显选中的前置节点id
-      relations: [], //维护父子关系的前置节点
-      listLockerOption: null, //上锁人下拉数据
-      listCoLockerOption: null, //共锁人下拉数据
-      OutSideUserTableData: [], //添加外部人员多个表格
-      nextUserId: 0, //新增外部人员表格序号自定义
-      worklineMap: null, //作业区域拿到的mapjson
-      // 部门树选项
-      deptOptions: undefined,
-      defaultProps: {
-        children: "children",
-        label: "label",
-      },
-      showWorkEare: true, //作业区域是否展示
-      isVisible: true, // 控制盒子显示状态
-    };
-  },
-  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,
-    },
-    "form.ticketStartTime": {
-      handler(newVal) {
-        if (newVal && newVal.length > 0) {
-          console.log(newVal, "编辑监听开始时间");
-          this.ticketStartTimeChange(newVal);
-        }
-      },
-    },
-  },
-  computed: {
-    ...mapGetters("sopSelectPoints", [
-      "getPointTableData",
-      "getSelectSopPoints",
-      "getSopEdit",
-      "getTicketTitle",
-      "getSopLook",
-      "getVisibleSopSelect",
-    ]),
-    // 排序 ticketUserDTOList,将 userRole 为 0 的选项放在前面
-    sortedTicketUserDTOList() {
-      return this.form.ticketUserDTOList.sort(
-        (a, b) => Number(a.userRole) - Number(b.userRole)
-      );
-    },
-  },
-  mounted() {
-    // // 5秒后隐藏盒子
-    setTimeout(() => {
-      this.isVisible = false;
-    }, 1000);
-
-    this.getTreeselect(); //获取作业区域下拉de
-    this.getSopList();
-    this.handleOpenStaffing();
-    if (this.$route.query.ticketId !== "null") {
-      this.getTicket();
-      this.form.ticketId = this.$route.query.ticketId;
-      if (this.getSopLook) {
-        this.setTicketTitle("查看作业票");
-      } else {
-        this.setTicketTitle("编辑作业票");
-      }
-    } else {
-      this.setSelectSopPoints([]);
-      this.setPointTableData([]);
-      this.setTicketTitle("新建作业票");
-    }
-    // console.log(this.getPointTableData, 'this.getPointTableData')
-    if (this.getPointTableData) {
-      this.tableData = this.getPointTableData.pointDetailVOList.map((item) => {
-        return {
-          pointId: item.pointId,
-          pointName: item.pointName,
-          pointType: item.pointType,
-          powerType: item.powerType,
-        };
-      });
-    }
-  },
-
-  methods: {
-    // 编辑的时候给隔离点重新存储值
-    ...mapActions("sopSelectPoints", [
-      "setSelectSopPoints",
-      "setPointTableData",
-      "setSopEdit",
-      "setTicketTitle",
-    ]),
-    // 作业区域打开关闭
-    openWorkEare() {
-      this.showWorkEare = false;
-    },
-    closeWorkEare() {
-      this.showWorkEare = true;
-    },
-    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}`;
-    },
-    getTicket() {
-      const ticketId = this.$route.query.ticketId;
-      getJobTicketInfo(ticketId).then((response) => {
-        console.log(response, "编辑拿到路由参数");
-        this.orderTableData=response.data.pointDetailVOList.map((point)=>{
-          return{
-            pointName: point.pointName, // 显示的名称
-            pointId: point.pointId, // 对应的值
-            pointType: point.pointType,
-            powerType: point.powerType,
-            prePointId: point.prePointId
-          }
-        })
-        this.workareaName = response.data.workareaName;
-
-        this.form = {
-          ...this.form,
-          workareaId: response.data.workareaId,
-          sopId: response.data.sopId,
-          ticketCode: response.data.ticketCode,
-          ticketContent: response.data.ticketContent,
-          spoint: response.data.pointDetailVOList,
-          ticketUserDTOList: response.data.jobTicketUserList
-            .filter((item) => item.userRole !== "jtlocker")
-            .map((item) => ({
-              userName: item.userName,
-              userType: item.userType,
-              userRole: item.userRole,
-              userId: item.userId,
-            })),
-
-          locker: response.data.jobTicketUserList
-            .filter((item) => item.userRole == "jtlocker")
-            .map((item) => item.userName)[0],
-          coLocker: response.data.jobTicketUserList.map((item) => {
-            return item.userRole !== "jtlocker" ? item.userName : null;
-          }),
-          ticketStartTime: response.data.ticketStartTime,
-          ticketEndTime: response.data.ticketEndTime,
-          ticketId: response.data.ticketId,
-          ticketName: response.data.ticketName,
-          ticketStatus: response.data.ticketStatus,
-          ticketType: response.data.ticketType,
-          EditBool: true,
-        };
-        (this.newticketUserDTOList = response.data.jobTicketUserList
-          .filter((item) => item.userRole == "jtlocker")
-          .map((item) => ({
-            userName: item.userName,
-            userType: item.userType,
-            userRole: item.userRole,
-            userId: item.userId,
-          }))),
-          (this.jobProps = [this.form]);
-        // this.listUserOption = response.data.jobTicketUserList
-        console.log(this.form, "form");
-      });
-    },
-
-    getSopList() {
-      const query = {
-        current: 1,
-        size: 100000,
-      };
-      getIsSopPage(query).then((res) => {
-        console.log(res, "sop列表接口");
-        // 插入一个默认的空选项
-        const defaultOption = {
-          sopId: null,
-          sopName: "不使用sop模板  ",
-        };
-
-        // 将默认选项添加到结果的最前面
-        this.sopOptions = [defaultOption, ...res.data.records];
-      });
-    },
-    // sop下拉change事件 可以传递sopOptions一整个对象过去
-    handleSelectSOP(value) {
-      if (value == null) {
-        this.jobProps = [];
-        console.log(this.form.sopId, this.form, "sop下拉change事件");
-      } else {
-        this.jobProps = this.sopOptions.filter((item) => item.sopId == value);
-
-        this.form.ticketType = this.jobProps[0].sopType;
-
-        this.form.ticketName = "sop_";
-        selectIsSopById(value).then((response) => {
-          console.log(response, "sop-父组件");
-          const value = response.data.ticketUserDTOList //找到上锁人  这里一定要先筛选locker再去给表格筛选 否则表格筛选之后直接不会有上锁人数据了
-            .filter((item) => item.userRole == "jtlocker")
-            .map((item) => item.userName);
-          (this.form.locker = value[0]), //map返回的是数字 所以这样写
-            // console.log(value,response.data.ticketUserDTOList,'form.locker')
-            (this.form.ticketUserDTOList =
-              response.data.ticketUserDTOList.filter((item) => {
-                return item.userRole == "jtlocker";
-              })); //过滤上锁人
-          this.tableData = response.data.pointDetailVOList;
-          this.form.workareaId = response.data.workareaId;
-        });
-
-        console.log(this.jobProps, "父组件jobProps");
-      }
-    },
-    // 清除sop下拉框
-    handleClearSop() {
-      this.form.ticketType = "";
-      this.form.ticketName = "";
-    },
-    /** 查询作业区域下拉树结构 */
-    getTreeselect() {
-      const data = {
-        current: 1,
-        size: -1,
-      };
-      listWorkarea(data).then((response) => {
-        // console.log(response.data.records, '作业区域下拉树形结构');
-        // 转换为树形结构
-        this.deptOptions = this.transformToTree(response.data.records);
-        // console.log(this.deptOptions, 'deptOptions')
-        // 使用递归函数查找匹配的节点
-        console.log(this.workareaName, "name");
-        const selectedTreeNode = this.findNodeById(
-          this.deptOptions,
-          this.workareaName
-        );
-        // 调用 handleNodeClick 方法
-        if (selectedTreeNode) {
-          this.handleNodeClick(selectedTreeNode);
-        } else {
-          console.log("未找到匹配的节点");
-        }
-      });
-    },
-    // 深层次遍历
-    findNodeById(nodes, targetId) {
-      for (let i = 0; i < nodes.length; i++) {
-        const node = nodes[i];
-        if (node.id === targetId) {
-          return node;
-        }
-        if (node.children && node.children.length > 0) {
-          const foundNode = this.findNodeById(node.children, targetId);
-          if (foundNode) {
-            return foundNode;
-          }
-        }
-      }
-      return null;
-    },
-    /** 转换数据为树形结构 */
-    transformToTree(records) {
-      const recordMap = {}; // 创建一个 Map 以存储所有记录
-      const tree = []; // 最终返回的树形结构
-
-      // 初始化所有记录到 Map
-      records.forEach((record) => {
-        recordMap[record.workareaId] = {
-          id: record.workareaId,
-          label: record.workareaName,
-          map: record.map,
-          mapImg: record.mapImg,
-          children: [],
-        };
-      });
-
-      // 遍历记录并构建树
-      records.forEach((record) => {
-        const parentId = record.parentId;
-
-        if (parentId === "0") {
-          // 如果是顶层节点,直接添加到树中
-          tree.push(recordMap[record.workareaId]);
-        } else if (recordMap[parentId]) {
-          // 如果有父节点,则将当前节点加入父节点的 children 中
-          recordMap[parentId].children.push(recordMap[record.workareaId]);
-        }
-      });
-
-      return tree;
-    },
-
-    // 树节点筛选逻辑
-    filterNode(value, data) {
-      if (!value) return true; // 如果没有输入值,显示所有节点
-      return data.label.indexOf(value) !== -1; // 判断节点 label 是否包含输入值
-    },
-    // 监听输入框变化
-    handleInputChange() {
-      this.$refs.tree.filter(this.workareaName); // 调用树的 filter 方法
-    },
-    // 作业票确认
-    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 UserList = [
-          ...(this.form.ticketUserDTOList || []),
-          ...(this.newticketUserDTOList || []),
-        ];
-        const pointsList = this.tableData.map((item) => {
-          return {
-            pointId: item.pointId,
-            prePointId: item.prePointId,
-          };
-        });
-        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: UserList,
-          workareaId: this.emitworklineId,
-          pointsList: pointsList,
-        };
-        const editdata = {
-          pointIds: this.form.spoint.join(","),
-          sopId: this.form.sopId,
-          ticketCode: this.form.ticketCode,
-          ticketContent: this.form.ticketContent,
-          ticketId: this.form.ticketId,
-          ticketEndTime: this.form.ticketEndTime,
-          ticketName: this.form.ticketName,
-          ticketStartTime: this.form.ticketStartTime,
-          ticketType: this.form.ticketType,
-          ticketUserDTOList: UserList,
-          workareaId: this.emitworklineId,
-          pointsList: pointsList,
-        };
-
-        // 检查 route.query.ticketId 是否为 null
-        console.log(this.$route.query.ticketId, "this.$route.query.ticketId");
-        if (this.$route.query.ticketId !== "null") {
-          // 调用编辑接口
-
-          const res = await updateJobTicket(editdata);
-          if (res.code === 200) {
-            // this.$router.go(-1);
-            this.$router.push("/job/jobm");
-          } else {
-            console.error("编辑工单失败", res);
-          }
-        } else {
-          console.log(data, "新增的参数");
-          // 调用新增接口
-          const res = await addJobTicket(data);
-          if (res.code === 200) {
-            // this.$router.go(-1);
-            this.$router.push("/job/jobm");
-          } else {
-            console.error("提交工单失败", res);
-          }
-        }
-      } catch (error) {
-        console.error("确认过程中发生错误", error);
-      }
-
-      console.log("确认");
-    },
-    // 选中隔离点 前置节点的change函数
-    onDropdownVisibleChange(row) {
-      console.log(row, "我执行这里拉");
-
-      // 当前节点 ID
-      const currentPointId = row.pointId;
-
-      // 获取当前行的 prePointId
-      const currentPrePointId = row.prePointId;
-
-      // 已经被选为前置节点的 ID 集合
-      const selectedPrePointIds = new Set(
-        this.tableData
-          .filter((item) => item.prePointId !== null)
-          .map((item) => item.prePointId)
-      );
-
-      // console.log(selectedPrePointIds, 'selectedPrePointIds')
-      // 构建 form.prePointId 数组对象
-      this.form.prePointId = this.tableData.map((item) => ({
-        pointId: item.pointId,
-        prePointId: item.prePointId || null,
-      }));
-      // 每次都从原始数据开始过滤
-      let filteredOptions = [...this.initprePointIdOptions];
-
-      // 过滤规则:
-      // 1. 排除自身
-      // 2. 排除已经被选为前置节点的隔离点
-      // 3. 排除所有已经选为前置节点的节点及其前置节点
-      const allExcludedPoints = new Set([currentPointId]);
-      this.getAllExcludedPoints(currentPointId, allExcludedPoints);
-
-      filteredOptions = filteredOptions.filter((option) => {
-        return !allExcludedPoints.has(option.pointId);
-      });
-
-      this.prePointIdOptions = filteredOptions;
-
-      console.log("过滤后的前置节点选项", this.prePointIdOptions);
-    },
-
-    // 递归获取所有需要排除的节点
-    getAllExcludedPoints(pointId, excludedPoints) {
-      const relatedRows = this.tableData.filter(
-        (item) => item.prePointId === pointId
-      );
-      for (const row of relatedRows) {
-        excludedPoints.add(row.pointId);
-        this.getAllExcludedPoints(row.pointId, excludedPoints);
-      }
-    },
-
-    // 前置节点改变时的处理函数
-    prePointIdChange(row) {
-      console.log(row, "前置节点改变");
-
-      // 更新 tableData 中对应行的 prePointId
-      const index = this.tableData.findIndex(
-        (item) => item.pointId === row.pointId
-      );
-      if (index !== -1) {
-        this.$set(this.tableData, index, row);
-      }
-
-      // 重新调用 onDropdownVisibleChange 确保其他节点的选项更新
-      this.onDropdownVisibleChange(row);
-    },
-    // 定义一个排序函数,根据 orderTableData 中 pointName 的顺序对 tableData 进行排序
-    sortTableDataByOrder(tableData, orderTableData) {
-      // 构建 orderMap,使用 pointName 作为键,索引作为值
-      const orderMap = new Map(orderTableData.map((item, index) => [item.pointName, index]))
-
-      return tableData.sort((a, b) => {
-        // 如果 pointName 在 orderMap 中,按 orderMap 的索引排序
-        // 如果 pointName 不在 orderMap 中,排在最后,并按 pointName 的自然顺序排列
-        const indexA = orderMap.has(a.pointName) ? orderMap.get(a.pointName) : Infinity
-        const indexB = orderMap.has(b.pointName) ? orderMap.get(b.pointName) : Infinity
-
-        if (indexA === indexB) {
-          // 当两者都不在 orderMap 中时,按 pointName 的自然顺序排列
-          return a.pointName.localeCompare(b.pointName)
-        }
-
-        return indexA - indexB
-      })
-    },
-    // 子组件逆向传递选中的隔离点
-    handleSelectPoint(points) {
-      // console.log(points, '父组件接收逆向传递选中的隔离点');
-
-      // 1. 去除重复的点,使用 Set 确保每个 pointId 唯一
-      const uniquePoints = Array.from(
-        new Set(points.map((point) => point.pointId))
-      ).map((id) => points.find((point) => point.pointId === id));
-
-      // console.log(uniquePoints, '去重后的选中节点');
-      this.tableData = this.sortTableDataByOrder(uniquePoints, this.orderTableData);//去重并排序
-      // this.tableData = uniquePoints; // 子组件传递过来的选中节点(去重后)
-
-      // 使用 Set 来存储传递过来的点值
-      const newValues = new Set(uniquePoints.map((point) => point.pointId));
-
-      // 2. 删除取消选中的点
-      const removedPoints = this.tableData
-        .filter((item) => !newValues.has(item.pointId))
-        .map((item) => item.pointId); // 记录被删除的点
-
-      this.tableData = this.tableData.filter((item) =>
-        newValues.has(item.pointId)
-      );
-
-      // 3. 确保新增点不会重复
-      const existingValues = new Set(
-        this.tableData.map((item) => item.pointId)
-      );
-
-      uniquePoints.forEach((point) => {
-        // 如果当前传递的点不在已有的点集中,则添加
-        if (!existingValues.has(point.pointId)) {
-          this.tableData.push({
-            pointName: point.pointName, // 显示的名称
-            pointId: point.pointId, // 对应的值
-            pointType: point.pointType,
-            powerType: point.powerType,
-            prePointId: null,
-          });
-
-          this.prePointIdOptions.push({
-            pointName: point.pointName, // 显示的名称
-            pointId: point.pointId, // 对应的值
-          });
-          this.initprePointIdOptions = [...this.prePointIdOptions];
-          console.log(this.prePointIdOptions, "前置节点设置下拉");
-          existingValues.add(point.pointId);
-        }
-      });
-
-      // 4. 处理被删除的点,如果这些点作为父节点绑定,则将对应的 prePointId 设置为 null
-      this.tableData.forEach((item) => {
-        if (removedPoints.includes(item.prePointId)) {
-          item.prePointId = null;
-        }
-      });
-
-      // 5. 从下拉选项中移除被删除的点
-      this.prePointIdOptions = this.prePointIdOptions.filter(
-        (option) => !removedPoints.includes(option.pointId)
-      );
-      this.initprePointIdOptions = [...this.prePointIdOptions];
-
-      // 6. 确保下拉选项中仍然保留所有未被删除的点
-      const allPoints = uniquePoints.map((point) => ({
-        pointName: point.pointName,
-        pointId: point.pointId,
-      }));
-
-      this.prePointIdOptions = allPoints.filter(
-        (option) => !removedPoints.includes(option.pointId)
-      );
-      this.initprePointIdOptions = [...this.prePointIdOptions];
-
-      // 更新 form.spoint 为最新选中的隔离点数组
-      this.form.spoint = uniquePoints.map((point) => point.pointId);
-    },
-    // 车间逆向传递拿到的隔离点数据产线
-    handleProductLineSelected(selectedOption) {
-      // console.log(selectedOption, "父组件接收到的 selectedOption");
-      this.points = selectedOption;
-      this.form.workline = selectedOption.label;
-      // console.log(this.worklineMap.length, '父组件接收到的 worklineMap')
-    },
-    // 车间子组件逆传递车间相关数据车间
-    handleWorkshopSelected(selectedOption) {
-      console.log(selectedOption, "handleWorkshopSelected");
-      // this.emitWorkShop = selectedOption
-      // this.form.workshopName = selectedOption.label;//这里是回显车间的 暂时不需要
-      this.form.workline = selectedOption.label; //这里是回显作业区域的
-      this.emitworklineId = selectedOption.id;
-      this.worklineMap = selectedOption.map;
-    },
-    //   时间选项
-    ticketStartTimeChange(value) {
-      this.form.ticketStartTime = value;
-      // 更新 pickerOptions 中的 disabledDate 方法
-      this.updatePickerOptions();
-    },
-    ticketEndTimeChange(value) {
-      this.form.ticketEndTime = value;
-    },
-    disabledDate(time) {
-      const startTime = new Date(this.form.ticketStartTime);
-      return startTime && !isNaN(startTime.getTime())
-        ? time.getTime() < startTime.getTime()
-        : false;
-    },
-    updatePickerOptions() {
-      this.pickerOptions.disabledDate = this.disabledDate;
-    },
-
-    reset() {
-      (this.form = {
-        sopId: "",
-        pointIds: "",
-        ticketType: "",
-        ticketName: "",
-        ticketCode: "",
-        ticketContent: "",
-        workshopName: "", //车间名称
-        workline: "", //区域
-        spoint: [], //已选隔离点
-        locker: "", //上锁人
-        coLocker: "", //共锁人
-        ticketStartTime: "", //开始时间
-        ticketEndTime: "", //结束时间
-        ticketUserDTOList: [
-          // {
-          //   userId: '',
-          //   userName: '',
-          //   userRole: '',//作业票角色 暂时不传递
-          //   userType: ''//用户类型 上锁人或共锁人
-          // }
-        ],
-      }),
-        (this.autoGenFlag = false);
-    },
-
-    // 侧边x关闭函数
-    goBack() {
-      this.$router.push("/job/jobm");
-    },
-    // 添加内部人员
-    addInside() {
-      this.open = true;
-      this.title = "添加内部人员";
-      this.insideMumber = true;
-      this.outsideMumber = false;
-      // this.form.ticketUserDTOList = [];
-      this.dialogForm.nickName = "";
-    },
-    addOutside() {
-      this.open = true;
-      this.title = "添加外部人员";
-      this.insideMumber = false;
-      this.outsideMumber = true;
-      this.dialogForm.username = null;
-    },
-    // 取消按钮
-    cancel() {
-      this.open = false;
-    },
-    // 人员列表删除
-    deleteRow(index, rows) {
-      console.log(index, rows, "删除的行");
-      const deletedItem = rows[index]; // 获取要删除的项
-      rows.splice(index, 1); // 从显示的列表中删除
-      const formIndex = this.form.ticketUserDTOList.findIndex(
-        (item) => item.userId === deletedItem.userId
-      );
-      if (formIndex !== -1) {
-        this.form.ticketUserDTOList.splice(formIndex, 1); // 从 form.ticketUserDTOList 中删除
-      }
-    },
-    // 上锁人下拉选择change事件
-    handlelockerChage(val) {
-      console.log(val, "上锁人chage");
-      const user = this.listLockerOption.find((item) => item.value === val);
-
-      if (user && this.form.locker !== "") {
-        const existingUser = this.form.ticketUserDTOList.find(
-          (u) => u.userName === user.label
-        );
-        if (!existingUser) {
-          this.newticketUserDTOList.push({
-            userName: user.label,
-            userId: user.value,
-            userType: 0,
-            userRole: "jtlocker",
-          });
-
-          console.log(this.newticketUserDTOList, "用户");
-        } else {
-          // console.log('用户已存在', user.label)
-        }
-      }
-    },
-
-    // 添加内部人员的用户新增到ticketUserDTOList这个数据里
-    changeInsideUser(values) {
-      const usersinside = values
-        .map((value) =>
-          this.listCoLockerOption.find((item) => item.value === value)
-        )
-        .filter(Boolean);
-
-      usersinside.forEach((user) => {
-        const existingUser = this.form.ticketUserDTOList.find(
-          (u) => u.userName === user.label
-        );
-        // console.log(usersinside, 'usersinside----67')
-        if (!existingUser) {
-          this.form.ticketUserDTOList.push({
-            userName: user.label,
-            userId: user.value,
-            userType: 0,
-            userRole: "jtcolocker",
-          });
-          console.log(this.form.ticketUserDTOList, "用户");
-        } else {
-          // console.log('用户已存在', user.label)
-        }
-      });
-      this.updateCoLocker();
-
-      // console.log(this.form.ticketUserDTOList, '用户')
-    },
-    // 添加外部人员 输入名称 userType==1是共锁人 0是上锁人 userId==0
-    outSideUserInput(event) {
-      this.dialogForm.username = event;
-    },
-    // 添加外部人员弹窗 添加给表格数据的按钮事件
-    insertOutSideTable() {
-      const newUserName = this.dialogForm.username.trim();
-      if (newUserName === "") {
-        this.$message.warning("请输入用户名");
-        return;
-      }
-      // 检查新用户是否已存在于表格中
-      const existingUser = this.OutSideUserTableData.find(
-        (user) => user.userName === newUserName
-      );
-      if (existingUser) {
-        this.$message.warning("该用户已存在");
-        return;
-      }
-      // 添加新用户
-      this.OutSideUserTableData.push({
-        userName: newUserName,
-        userId: this.nextUserId++,
-      });
-
-      // 清空对话框表单
-      this.dialogForm.username = "";
-
-      // 打印当前的外部人员表格数据
-      console.log(this.OutSideUserTableData, "OutSideUserTableData");
-    },
-    // 添加外部人员 确认弹窗
-    outSideDialogConfirm() {
-      this.updateCoLocker();
-      this.open = false;
-    },
-    // 更新界面中共锁人下拉框显示的内容
-    updateCoLocker() {
-      // 检查并补充 ticketUserDTOList 中缺少的用户
-      this.OutSideUserTableData.forEach((item) => {
-        const existingUser = this.form.ticketUserDTOList.find(
-          (u) => u.userName === item.userName
-        );
-        if (!existingUser) {
-          this.form.ticketUserDTOList.push({
-            userName: item.userName,
-            userId: 0,
-            userType: 1,
-            userRole: "jtcolocker",
-          });
-        }
-      });
-
-      console.log(this.form.ticketUserDTOList, "最终的 ticketUserDTOList");
-    },
-    //自动生成编码
-    handleAutoGenChange(autoGenFlag) {
-      if (autoGenFlag) {
-        genCode("JOB_TICKET_CODE").then((response) => {
-          this.form.ticketCode = response;
-        });
-      } else {
-        this.form.ticketCode = null;
-      }
-    },
-    //是否开启人员配置界面
-    handleOpenStaffing(openStaffing) {
-      // 定义一个函数来封装接口调用逻辑
-      const fetchUserData = (roleKey) => {
-        const data = {
-          pageNum: 1,
-          pageSize: 10000,
-          roleKey: roleKey,
-        };
-        return SopUser(data)
-          .then((res) => {
-            // console.log(res, `上锁人 - ${roleKey}`);
-            return res; // 返回结果以便后续处理
-          })
-          .catch((err) => {
-            // console.error(err, `请求失败 - ${roleKey}`);
-            throw err; // 抛出错误以便捕获
-          });
-      };
-
-      // 调用两次接口,分别传递不同的 roleKey
-      Promise.all([fetchUserData("jtlocker"), fetchUserData("jtcolocker")])
-        .then((results) => {
-          // 处理两次调用的结果
-          const [jtlockerResult, jtcolockerResult] = results;
-          console.log(jtlockerResult, jtcolockerResult, "jtlocker 结果");
-          this.listLockerOption = jtlockerResult.rows.map((item) => {
-            return {
-              label: item.nickName,
-              value: item.userId,
-            };
-          });
-          this.listCoLockerOption = jtcolockerResult.rows.map((item) => {
-            return {
-              label: item.nickName,
-              value: item.userId,
-            };
-          });
-        })
-        .catch((err) => {
-          console.error(err, "其中一个请求失败");
-        });
-      if (openStaffing) {
-        console.log(openStaffing, "开启人员配置");
-        this.openStaffing = openStaffing;
-      } else {
-        console.log(openStaffing, "关闭人员配置");
-        this.openStaffing = openStaffing;
-        // this.activeName = "first";
-      }
-    },
-  },
-};
-</script>
-
-
-<style scoped lang="scss">
-.newOperations {
-  width: 99%;
-  height: 100%;
-  //background: pink;
-  margin: 10px;
-  display: flex;
-  position: relative;
-  .left {
-    width: 75%;
-    height: 830px;
-    // background: #eee;
-    margin-right: 10px;
-  }
-  .lefttree {
-    width: 18%;
-    height: 100%;
-    position: absolute;
-    left: 0;
-    top: 2%;
-    display: flex;
-    // background: pink;
-    .lefttree-card {
-      height: 98%;
-      .title {
-        display: block;
-        width: 30%;
-        height: 30px;
-        text-align: center;
-        margin: 0 0 5%;
-        border-bottom: 2px solid #1684fc;
-        color: rgb(22, 132, 252);
-      }
-    }
-    .item {
-      width: 30px;
-      height: 30px;
-      font-size: 20px;
-      display: flex;
-      justify-content: center;
-      align-items: center;
-      // .btnwork {
-      //   width: 100%;
-      //   height: 100%;
-      //   display: flex; /* 使用 flex 布局 */
-      //   justify-content: center; /* 水平居中 */
-      //   align-items: center; /* 垂直居中 */
-      //   font-size: 20px;
-      //   box-sizing: border-box;
-      // }
-    }
-  }
-  .right {
-    height: 100%;
-    flex: 1;
-
-    .right_top {
-      // height: 550px;
-      height: 840px;
-      // background: pink;
-    }
-
-    .workTicket_btn {
-      position: relative;
-      left: 63%;
-      height: 30px;
-      line-height: 10px;
-    }
-
-    .gsr {
-      margin-left: 15%;
-    }
-    .box-card {
-      height: 100%;
-      overflow-y: auto;
-      .clearfix {
-        width: 100%;
-        position: absolute;
-        top: 0;
-        line-height: 25px;
-        padding: 12px 0 0;
-        box-sizing: border-box;
-        background: #fff;
-        z-index: 10;
-      }
-    }
-    .box-card::-webkit-scrollbar {
-      display: none;
-    }
-    .title {
-      display: block;
-      width: 25%;
-      height: 30px;
-      text-align: center;
-      margin: 0 0 5%;
-      border-bottom: 2px solid #1684fc;
-      color: rgb(22, 132, 252);
-    }
-  }
-}
-.newOperations::-webkit-scrollbar {
-  display: none;
-}
-
-//右侧卡片样式开始
-.text {
-  font-size: 14px;
-}
-
-.item {
-  margin-bottom: 18px;
-
-  p {
-    font-size: 18px;
-    font-weight: bolder;
-    font-family: SourceHanSansSC-bold;
-  }
-}
-
-.clearfix:before,
-.clearfix:after {
-  display: table;
-  content: "";
-  width: 320px;
-}
-
-.clearfix:after {
-  clear: both;
-}
-
-.box-card {
-  // width: 390px;
-  width: 95%;
-  height: 850px;
-}
-
-//右侧卡片样式结束
-//隔离点多选框样式
-.selects {
-  .el-input.el-input--medium.el-input--suffix {
-    // 调整箭头符号块的宽度
-    width: 175px !important;
-  }
-
-  .el-input.el-input--medium.el-input--suffix {
-    .el-input__inner {
-      // 调整输入框的宽高
-      height: 36px !important;
-      width: 220px !important;
-    }
-
-    .el-input__suffix-inner {
-      // 调整箭头符号的位置
-      position: absolute;
-      right: -45px;
-    }
-  }
-
-  .el-select__tags {
-    // 调整输入框里面的多选不换行
-    flex-wrap: nowrap !important;
-  }
-}
-.loadbox {
-  width: 100%;
-  height: 100%;
-  background: rgba($color: #fff, $alpha: 0.9);
-  position: absolute;
-  left: 0;
-  top: 0;
-  z-index: 200;
-  padding: 18% 45%;
-  box-sizing: border-box;
-  h5 {
-    font-size: 30px;
-  }
-  .el-icon-loading {
-    font-size: 50px;
-    margin-left: 12%;
-  }
-}
-//隔离点多选框样式结束
-</style>
-
-<style scoped lang="scss" src="@/assets/styles/dialog-title.scss">
-</style>

+ 1 - 1
src/views/mes/material/lockers/index.vue

@@ -722,7 +722,7 @@ export default {
       const dataMap = {
         pages: 1,
         size: -1,
-        mapId: 4
+        mapId: this.sysAttrValue
       }
       getIsMapPointPage(dataMap).then((res) => {
         console.log(res, '作业票地图岗位位置信息接口')