Эх сурвалжийг харах

修改基础数据配置内容与接口配置 作业票图标与底图全部配置到基础数据中

pm 7 сар өмнө
parent
commit
d691e53ad0
33 өөрчлөгдсөн 758 нэмэгдсэн , 490 устгасан
  1. 7 0
      src/api/system/configuration.js
  2. 1 0
      src/views/mes/Exceptions/Exception/index.vue
  3. 3 1
      src/views/mes/Exceptions/manualException/index.vue
  4. 3 3
      src/views/mes/dv/lotoStation/MapData.vue
  5. 3 5
      src/views/mes/dv/lotoStation/index.vue
  6. 1 0
      src/views/mes/dv/machinerytype/index.vue
  7. 340 245
      src/views/mes/dv/segregationpoint/index.vue
  8. 16 38
      src/views/mes/dv/technology/technologyDetail/MapData.vue
  9. 1 0
      src/views/mes/dv/technology/technologyList/index.vue
  10. 1 0
      src/views/mes/email/emailNotify/index.vue
  11. 1 0
      src/views/mes/email/emailTemplates/index.vue
  12. 1 0
      src/views/mes/hw/type/index.vue
  13. 1 0
      src/views/mes/job/joblist/index.vue
  14. 1 1
      src/views/mes/job/jobm/LockDetail.vue
  15. 142 143
      src/views/mes/job/jobm/Mapdata.vue
  16. 37 7
      src/views/mes/job/jobm/NewMarsJob.vue
  17. 1 0
      src/views/mes/material/Inspectionrecords/index.vue
  18. 3 2
      src/views/mes/material/blacklist/index.vue
  19. 1 0
      src/views/mes/material/collectionmanagement/index.vue
  20. 1 0
      src/views/mes/material/expireremind/index.vue
  21. 1 0
      src/views/mes/material/inspectionplan/index.vue
  22. 1 0
      src/views/mes/material/instructions/index.vue
  23. 53 31
      src/views/mes/material/lockers/index.vue
  24. 3 1
      src/views/mes/material/materialinformation/index.vue
  25. 3 0
      src/views/mes/material/replacementrecords/index.vue
  26. 1 0
      src/views/mes/material/returnremind/index.vue
  27. 1 0
      src/views/mes/material/standard/PropertyForm.vue
  28. 1 0
      src/views/mes/material/standard/index.vue
  29. 1 0
      src/views/mes/material/typeofmaterial/index.vue
  30. 1 0
      src/views/mes/sop/sopm/index.vue
  31. 122 9
      src/views/system/configuration/index.vue
  32. 3 2
      src/views/system/mapconfig/index.vue
  33. 2 2
      src/views/system/user/index.vue

+ 7 - 0
src/api/system/configuration.js

@@ -42,4 +42,11 @@ export function deleteIsSystemAttributeByIds(ids) {
     method: 'post'
   })
 }
+// 查询基础数据  /dev-api/iscs/attribute/getIsSystemAttributeByKey
+export function getIsSystemAttributeByKey(sysAttrKey) {
+  return request({
+    url: '/iscs/attribute/getIsSystemAttributeByKey?sysAttrKey=' + sysAttrKey,
+    method: 'get'
+  })
+}
 

+ 1 - 0
src/views/mes/Exceptions/Exception/index.vue

@@ -7,6 +7,7 @@
       :inline="true"
       v-show="showSearch"
       label-width="100px"
+      @submit.native.prevent
     >
       <el-form-item label="物资柜" prop="loanFromId">
         <el-select

+ 3 - 1
src/views/mes/Exceptions/manualException/index.vue

@@ -7,6 +7,7 @@
       :inline="true"
       v-show="showSearch"
       label-width="100px"
+      @submit.native.prevent
     >
       <el-form-item label="异常分类" prop="exceptionCategory">
         <el-select v-model="queryParams.exceptionCategory" placeholder="请选择" clearable>
@@ -24,6 +25,7 @@
           placeholder="请输入异常来源"
           clearable
           size="small"
+          @keyup.enter.native="handleQuery"
         />
       </el-form-item>
       <el-form-item label="异常类型" prop="exceptionType">
@@ -52,7 +54,7 @@
           placeholder="请输入上报人"
           clearable
           size="small"
-
+          @keyup.enter.native="handleQuery"
         />
       </el-form-item>
       <el-form-item label="异常发生时间">

+ 3 - 3
src/views/mes/dv/lotoStation/MapData.vue

@@ -605,11 +605,11 @@ export default {
 
           // 图片
           const knovaImage = new Konva.Image({
-            x: 0,
+            x: 1,
             y: 0,
             image: point,
-            width: 50,
-            height: 50
+            width: 45,
+            height: 45
           })
 
           // 文字

+ 3 - 5
src/views/mes/dv/lotoStation/index.vue

@@ -7,6 +7,7 @@
       :inline="true"
       v-show="showSearch"
       label-width="100px"
+      @submit.native.prevent
     >
       <el-row>
 <!--        <el-form-item label="锁定站编码" prop="lotoCode">-->
@@ -14,19 +15,17 @@
 <!--            v-model="queryParams.lotoCode"-->
 <!--            placeholder="请输入锁定站编码"-->
 <!--            clearable-->
-<!--            @lotoup.enter.native="handleQuery"-->
+<!--            @keyup.enter.native="handleQuery"-->
 <!--          />-->
 <!--        </el-form-item>-->
-
         <el-form-item label="锁定站名称" prop="lotoName">
           <el-input
             v-model="queryParams.lotoName"
             placeholder="请输入锁定站名称"
             clearable
-            @lotoup.enter.native="handleQuery"
+            @keyup.enter.native="handleQuery"
           />
         </el-form-item>
-
         <el-form-item label="岗位" prop="workstationId" >
           <treeselect style="width: 200px" v-model="queryParams.workstationId" :options="marsOptions" :normalizer="Marsnormalizer" placeholder="请选择岗位"/>
         </el-form-item>
@@ -47,7 +46,6 @@
         </el-form-item>
       </el-row>
     </el-form>
-
     <el-row :gutter="10" class="mb8">
       <el-col :span="1.5">
         <el-button v-no-more-click

+ 1 - 0
src/views/mes/dv/machinerytype/index.vue

@@ -224,6 +224,7 @@ export default {
     },
     /** 搜索按钮操作 */
     handleQuery() {
+      this.queryParams.current=1
       this.getList();
     },
     /** 重置按钮操作 */

+ 340 - 245
src/views/mes/dv/segregationpoint/index.vue

@@ -7,15 +7,16 @@
       :inline="true"
       v-show="showSearch"
       label-width="100px"
+      @submit.native.prevent
     >
-<!--      <el-form-item label="隔离点编号" prop="pointCode">-->
-<!--        <el-input-->
-<!--          v-model="queryParams.pointCode"-->
-<!--          placeholder="请输入隔离点编号"-->
-<!--          clearable-->
-<!--          @keyup.enter.native="handleQuery"-->
-<!--        />-->
-<!--      </el-form-item>-->
+      <!--      <el-form-item label="隔离点编号" prop="pointCode">-->
+      <!--        <el-input-->
+      <!--          v-model="queryParams.pointCode"-->
+      <!--          placeholder="请输入隔离点编号"-->
+      <!--          clearable-->
+      <!--          @keyup.enter.native="handleQuery"-->
+      <!--        />-->
+      <!--      </el-form-item>-->
       <el-form-item label="隔离点名称" prop="pointName">
         <el-input
           v-model="queryParams.pointName"
@@ -24,11 +25,15 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="岗位" prop="workstationId" >
-      <treeselect style="width: 200px" v-model="queryParams.workstationId" :options="deptOptions" :normalizer="normalizer" placeholder="选择岗位"/>
+      <el-form-item label="岗位" prop="workstationId">
+        <treeselect style="width: 200px" v-model="queryParams.workstationId" :options="deptOptions"
+                    :normalizer="normalizer" placeholder="选择岗位"
+        />
       </el-form-item>
-      <el-form-item label="设备/工艺" prop="machineryId" >
-        <treeselect style="width: 200px" v-model="queryParams.machineryId" :options="machineryOptions" :normalizer="Machinerynormalizer" placeholder="选择岗位"/>
+      <el-form-item label="设备/工艺" prop="machineryId">
+        <treeselect style="width: 200px" v-model="queryParams.machineryId" :options="machineryOptions"
+                    :normalizer="Machinerynormalizer" placeholder="选择岗位"
+        />
       </el-form-item>
       <!-- <el-form-item label="状态" prop="calendarType">
         <el-select v-model="queryParams.calendarType" placeholder="状态">
@@ -36,19 +41,19 @@
           <el-option>异常</el-option>
         </el-select>
       </el-form-item> -->
-<!--      <el-form-item label="隔离点类型" prop="pointType">-->
-<!--        <el-select-->
-<!--          v-model="queryParams.pointType"-->
-<!--          placeholder="请选择隔离点类型"-->
-<!--        >-->
-<!--          <el-option-->
-<!--            v-for="dict in dict.type.point_type"-->
-<!--            :key="dict.value"-->
-<!--            :label="dict.label"-->
-<!--            :value="dict.value"-->
-<!--          />-->
-<!--        </el-select>-->
-<!--      </el-form-item>-->
+      <!--      <el-form-item label="隔离点类型" prop="pointType">-->
+      <!--        <el-select-->
+      <!--          v-model="queryParams.pointType"-->
+      <!--          placeholder="请选择隔离点类型"-->
+      <!--        >-->
+      <!--          <el-option-->
+      <!--            v-for="dict in dict.type.point_type"-->
+      <!--            :key="dict.value"-->
+      <!--            :label="dict.label"-->
+      <!--            :value="dict.value"-->
+      <!--          />-->
+      <!--        </el-select>-->
+      <!--      </el-form-item>-->
       <el-form-item label="能量源" prop="powerType">
         <el-select
           style="width: 200px"
@@ -63,19 +68,19 @@
           />
         </el-select>
       </el-form-item>
-<!--      <el-form-item label="创建时间">-->
-<!--        <el-date-picker-->
-<!--          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="创建时间">-->
+      <!--        <el-date-picker-->
+      <!--          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>
         <el-button
@@ -167,7 +172,7 @@
           </el-button>
         </template>
       </el-table-column>
-      <el-table-column label="隔离点名称" align="center" prop="pointName" />
+      <el-table-column label="隔离点名称" align="center" prop="pointName"/>
       <el-table-column
         label="隔离点图标"
         align="center"
@@ -184,13 +189,13 @@
           <span v-else>-</span>
         </template>
       </el-table-column>
-<!--      <el-table-column label="隔离点NFC" align="center" prop="pointNfc" >-->
-<!--      </el-table-column>-->
-      <el-table-column label="岗位" align="center" prop="workstationName" >
+      <!--      <el-table-column label="隔离点NFC" align="center" prop="pointNfc" >-->
+      <!--      </el-table-column>-->
+      <el-table-column label="岗位" align="center" prop="workstationName">
       </el-table-column>
-      <el-table-column label="设备/工艺" align="center" prop="machineryName" >
+      <el-table-column label="设备/工艺" align="center" prop="machineryName">
       </el-table-column>
-      <el-table-column label="锁定站" align="center" prop="lotoName" >
+      <el-table-column label="锁定站" align="center" prop="lotoName">
       </el-table-column>
       <el-table-column label="作用" align="center" prop="remark">
       </el-table-column>
@@ -220,16 +225,16 @@
           <span v-else>-</span>
         </template>
       </el-table-column>
-<!--      <el-table-column label="隔离点类型" align="center" prop="pointType">-->
-<!--        <template slot-scope="scope">-->
-<!--          <dict-tag-->
-<!--            :options="dict.type.point_type"-->
-<!--            :value="scope.row.pointType"-->
-<!--          />-->
-<!--        </template>-->
-<!--      </el-table-column>-->
-
-<!--危险能量类型-->
+      <!--      <el-table-column label="隔离点类型" align="center" prop="pointType">-->
+      <!--        <template slot-scope="scope">-->
+      <!--          <dict-tag-->
+      <!--            :options="dict.type.point_type"-->
+      <!--            :value="scope.row.pointType"-->
+      <!--          />-->
+      <!--        </template>-->
+      <!--      </el-table-column>-->
+
+      <!--危险能量类型-->
       <el-table-column label="能量源" align="center" prop="powerType">
         <template slot-scope="scope">
           <dict-tag
@@ -238,41 +243,41 @@
           />
         </template>
       </el-table-column>
-<!--      <el-table-column-->
-<!--        label="挂锁类型图"-->
-<!--        align="center"-->
-<!--        prop="lockTypeImg"-->
-<!--        width="90"-->
-<!--      >-->
-<!--        <template slot-scope="scope">-->
-<!--          <img-->
-<!--            v-if="scope.row.lockTypeImg"-->
-<!--            :src="scope.row.lockTypeImg"-->
-<!--            alt=""-->
-<!--            style="width: 50px; height: 50px"-->
-<!--          />-->
-<!--          <span v-else>-</span>-->
-<!--        </template>-->
-<!--      </el-table-column>-->
-<!--      <el-table-column-->
-<!--        label="锁具机构类型图"-->
-<!--        align="center"-->
-<!--        prop="locksetTypeImg"-->
-<!--        width="90"-->
-<!--      >-->
-<!--        <template slot-scope="scope">-->
-<!--          <img-->
-<!--            v-if="scope.row.locksetTypeImg"-->
-<!--            :src="scope.row.locksetTypeImg"-->
-<!--            alt=""-->
-<!--            style="width: 50px; height: 50px"-->
-<!--          />-->
-<!--          <span v-else>-</span>-->
-<!--        </template>-->
-<!--      </el-table-column>-->
-
-<!--      <el-table-column label="创建时间" align="center" prop="createTime">-->
-<!--      </el-table-column>-->
+      <!--      <el-table-column-->
+      <!--        label="挂锁类型图"-->
+      <!--        align="center"-->
+      <!--        prop="lockTypeImg"-->
+      <!--        width="90"-->
+      <!--      >-->
+      <!--        <template slot-scope="scope">-->
+      <!--          <img-->
+      <!--            v-if="scope.row.lockTypeImg"-->
+      <!--            :src="scope.row.lockTypeImg"-->
+      <!--            alt=""-->
+      <!--            style="width: 50px; height: 50px"-->
+      <!--          />-->
+      <!--          <span v-else>-</span>-->
+      <!--        </template>-->
+      <!--      </el-table-column>-->
+      <!--      <el-table-column-->
+      <!--        label="锁具机构类型图"-->
+      <!--        align="center"-->
+      <!--        prop="locksetTypeImg"-->
+      <!--        width="90"-->
+      <!--      >-->
+      <!--        <template slot-scope="scope">-->
+      <!--          <img-->
+      <!--            v-if="scope.row.locksetTypeImg"-->
+      <!--            :src="scope.row.locksetTypeImg"-->
+      <!--            alt=""-->
+      <!--            style="width: 50px; height: 50px"-->
+      <!--          />-->
+      <!--          <span v-else>-</span>-->
+      <!--        </template>-->
+      <!--      </el-table-column>-->
+
+      <!--      <el-table-column label="创建时间" align="center" prop="createTime">-->
+      <!--      </el-table-column>-->
 
       <el-table-column
         label="操作"
@@ -350,29 +355,31 @@
           </el-col>
         </el-row>
         <el-row>
-<!--          <el-col :span="11">-->
-<!--            <el-form-item label="隔离点类型" prop="pointType">-->
-<!--              <el-select-->
-<!--                style="width: 300px"-->
-<!--                v-model="form.pointType"-->
-<!--                placeholder="请选择隔离点类型"-->
-<!--              >-->
-<!--                <el-option-->
-<!--                  v-for="dict in dict.type.point_type"-->
-<!--                  :key="dict.value"-->
-<!--                  :label="dict.label"-->
-<!--                  :value="dict.value"-->
-<!--                />-->
-<!--              </el-select>-->
-<!--            </el-form-item>-->
-<!--          </el-col>-->
+          <!--          <el-col :span="11">-->
+          <!--            <el-form-item label="隔离点类型" prop="pointType">-->
+          <!--              <el-select-->
+          <!--                style="width: 300px"-->
+          <!--                v-model="form.pointType"-->
+          <!--                placeholder="请选择隔离点类型"-->
+          <!--              >-->
+          <!--                <el-option-->
+          <!--                  v-for="dict in dict.type.point_type"-->
+          <!--                  :key="dict.value"-->
+          <!--                  :label="dict.label"-->
+          <!--                  :value="dict.value"-->
+          <!--                />-->
+          <!--              </el-select>-->
+          <!--            </el-form-item>-->
+          <!--          </el-col>-->
           <el-col :span="11">
-            <el-form-item label="岗位" prop="workstationId" >
-              <treeselect style="width: 300px" v-model="form.workstationId" :options="deptOptions" :normalizer="normalizer" placeholder="选择岗位"/>
+            <el-form-item label="岗位" prop="workstationId">
+              <treeselect style="width: 300px" v-model="form.workstationId" :options="deptOptions"
+                          :normalizer="normalizer" placeholder="选择岗位"
+              />
             </el-form-item>
           </el-col>
           <el-col :span="12">
-             <el-form-item label="隔离点NFC" prop="pointNfc">
+            <el-form-item label="隔离点NFC" prop="pointNfc">
               <el-input
                 style="width: 300px"
                 v-model="form.pointNfc"
@@ -384,15 +391,15 @@
         </el-row>
         <el-row>
 
-<!--             <el-form-item label="作业区域" prop="workareaId">-->
-<!--              <treeselect-->
-<!--                style="width: 300px"-->
-<!--                v-model="form.workareaId"-->
-<!--                :options="deptOptions"-->
-<!--                :normalizer="normalizer"-->
-<!--                placeholder="选择作业区域"-->
-<!--              />-->
-<!--            </el-form-item>-->
+          <!--             <el-form-item label="作业区域" prop="workareaId">-->
+          <!--              <treeselect-->
+          <!--                style="width: 300px"-->
+          <!--                v-model="form.workareaId"-->
+          <!--                :options="deptOptions"-->
+          <!--                :normalizer="normalizer"-->
+          <!--                placeholder="选择作业区域"-->
+          <!--              />-->
+          <!--            </el-form-item>-->
 
           <el-col :span="11">
 
@@ -422,29 +429,29 @@
             </el-form-item>
 
           </el-col>
-<!--          <el-col :span="11">-->
-<!--            <el-form-item label="挂锁类型" prop="lockTypeId">-->
-<!--              <treeselect-->
-<!--                style="width: 300px"-->
-<!--                v-model="form.lockTypeId"-->
-<!--                :options="padLockTypeOptions"-->
-<!--                :normalizer="normalizerpadLock"-->
-<!--                placeholder="选择挂锁类型"-->
-<!--              />-->
-<!--            </el-form-item>-->
-<!--          </el-col>-->
+          <!--          <el-col :span="11">-->
+          <!--            <el-form-item label="挂锁类型" prop="lockTypeId">-->
+          <!--              <treeselect-->
+          <!--                style="width: 300px"-->
+          <!--                v-model="form.lockTypeId"-->
+          <!--                :options="padLockTypeOptions"-->
+          <!--                :normalizer="normalizerpadLock"-->
+          <!--                placeholder="选择挂锁类型"-->
+          <!--              />-->
+          <!--            </el-form-item>-->
+          <!--          </el-col>-->
         </el-row>
 
         <el-row>
-<!--          <el-col :span="11">-->
-<!--           <el-form-item label="锁具机构名称" prop="lockTypeName">-->
-<!--              <el-input-->
-<!--                style="width: 300px"-->
-<!--                v-model="form.lockTypeName"-->
-<!--                placeholder="请输入锁具机构名称"-->
-<!--              />-->
-<!--            </el-form-item>-->
-<!--          </el-col>-->
+          <!--          <el-col :span="11">-->
+          <!--           <el-form-item label="锁具机构名称" prop="lockTypeName">-->
+          <!--              <el-input-->
+          <!--                style="width: 300px"-->
+          <!--                v-model="form.lockTypeName"-->
+          <!--                placeholder="请输入锁具机构名称"-->
+          <!--              />-->
+          <!--            </el-form-item>-->
+          <!--          </el-col>-->
           <el-col :span="12">
             <el-form-item label="能量源" prop="powerType">
               <el-select
@@ -461,28 +468,40 @@
               </el-select>
             </el-form-item>
 
-<!--            <el-form-item label="锁具机构类型" prop="locksetTypeId">-->
-<!--              <treeselect-->
-<!--                style="width: 300px"-->
-<!--                v-model="form.locksetTypeId"-->
-<!--                :options="LockTypeOptions"-->
-<!--                :normalizer="normalizerLockset"-->
-<!--                placeholder="选择锁具机构类型"-->
-<!--              />-->
-<!--            </el-form-item>-->
+            <!--            <el-form-item label="锁具机构类型" prop="locksetTypeId">-->
+            <!--              <treeselect-->
+            <!--                style="width: 300px"-->
+            <!--                v-model="form.locksetTypeId"-->
+            <!--                :options="LockTypeOptions"-->
+            <!--                :normalizer="normalizerLockset"-->
+            <!--                placeholder="选择锁具机构类型"-->
+            <!--              />-->
+            <!--            </el-form-item>-->
           </el-col>
 
         </el-row>
         <el-row>
-          <el-col :span="8">
+          <el-col :span="12">
             <el-form-item label="隔离点图标" prop="pointIcon">
-              <ImageUploadSingle
-                :limit="1"
-                :value="form.pointIcon"
-                :fileSize="5"
-                @onUploaded="handleIconUplaoded"
-                @onRemoved="handleIconRemoved"
-              ></ImageUploadSingle>
+<!--              <ImageUploadSingle-->
+<!--                :limit="1"-->
+<!--                :value="form.pointIcon"-->
+<!--                :fileSize="5"-->
+<!--                @onUploaded="handleIconUplaoded"-->
+<!--                @onRemoved="handleIconRemoved"-->
+<!--              ></ImageUploadSingle>-->
+              <div class="image-grid">
+                <div
+                  v-for="(imageUrl, index) in imageMap"
+                  :key="index"
+                  class="image-item"
+                  :class="{ 'selected': selectedImageIndex === index }"
+                  @click="selectIcon(imageUrl, index)"
+                >
+                  <img :src="imageUrl" alt="Isolation Icon" style="width: 50px; height: 50px;" />
+
+                </div>
+              </div>
             </el-form-item>
           </el-col>
           <el-col :span="8">
@@ -497,30 +516,30 @@
             </el-form-item>
           </el-col>
         </el-row>
-<!--        <el-row>-->
-<!--          <el-col :span="8">-->
-<!--            <el-form-item label="挂锁类型图" prop="lockTypeImg">-->
-<!--              <ImageUploadSingle-->
-<!--                :limit="1"-->
-<!--                :value="form.lockTypeImg"-->
-<!--                :fileSize="5"-->
-<!--                @onUploaded="lockTypeImgUplaoded"-->
-<!--                @onRemoved="lockTypeImgRemoved"-->
-<!--              ></ImageUploadSingle>-->
-<!--            </el-form-item>-->
-<!--          </el-col>-->
-<!--          <el-col :span="8">-->
-<!--            <el-form-item label="锁具机构类型图" prop="locksetTypeImg">-->
-<!--              <ImageUploadSingle-->
-<!--                :limit="1"-->
-<!--                :value="form.locksetTypeImg"-->
-<!--                :fileSize="5"-->
-<!--                @onUploaded="locksetTypeImgUplaoded"-->
-<!--                @onRemoved="locksetTypeImgRemoved"-->
-<!--              ></ImageUploadSingle>-->
-<!--            </el-form-item>-->
-<!--          </el-col>-->
-<!--        </el-row>-->
+        <!--        <el-row>-->
+        <!--          <el-col :span="8">-->
+        <!--            <el-form-item label="挂锁类型图" prop="lockTypeImg">-->
+        <!--              <ImageUploadSingle-->
+        <!--                :limit="1"-->
+        <!--                :value="form.lockTypeImg"-->
+        <!--                :fileSize="5"-->
+        <!--                @onUploaded="lockTypeImgUplaoded"-->
+        <!--                @onRemoved="lockTypeImgRemoved"-->
+        <!--              ></ImageUploadSingle>-->
+        <!--            </el-form-item>-->
+        <!--          </el-col>-->
+        <!--          <el-col :span="8">-->
+        <!--            <el-form-item label="锁具机构类型图" prop="locksetTypeImg">-->
+        <!--              <ImageUploadSingle-->
+        <!--                :limit="1"-->
+        <!--                :value="form.locksetTypeImg"-->
+        <!--                :fileSize="5"-->
+        <!--                @onUploaded="locksetTypeImgUplaoded"-->
+        <!--                @onRemoved="locksetTypeImgRemoved"-->
+        <!--              ></ImageUploadSingle>-->
+        <!--            </el-form-item>-->
+        <!--          </el-col>-->
+        <!--        </el-row>-->
 
       </el-form>
 
@@ -551,9 +570,11 @@ import '@riophae/vue-treeselect/dist/vue-treeselect.css'
 import { listWorkarea } from '@/api/mes/wa/workarea'
 import { listLockType } from '@/api/mes/locktype/locktype'
 import { listPadLockTypeAPI } from '@/api/mes/padLockType/padLockType'
-import { listLoto} from "@/api/mes/lotoStation/lotoStation";
+import { listLoto } from '@/api/mes/lotoStation/lotoStation'
 import { listMarsDept } from '@/api/system/marsdept'
 import { listTechnology } from '@/api/system/machinery'
+import { getIsSystemAttributeByKey, selectIsSystemAttributeById } from '@/api/system/configuration'
+
 export default {
   name: 'Team',
   components: { Treeselect },
@@ -641,7 +662,7 @@ export default {
       LockTypeOptions: [],//锁具机构类型下拉
       padLockTypeOptions: [],//挂锁类型下拉
 
-      lotoOptions:[],//电柜下拉
+      lotoOptions: [],//电柜下拉
       // 表单校验
       rules: {
         pointCode: [
@@ -656,20 +677,26 @@ export default {
         workareaId: [
           { required: true, message: '作业区域不能为空', trigger: 'blur' }
         ],
-        lotoId:[
+        lotoId: [
           { required: true, message: '锁定站不能为空', trigger: 'blur' }
         ],
         pointType: [
           { required: true, message: '隔离点类型不能为空', trigger: 'blur' }
         ],
-        lockTypeId:[
+        lockTypeId: [
           { required: true, message: '挂锁类型不能为空', trigger: 'blur' }
         ],
-         pointNfc:[
+        pointNfc: [
           { required: true, message: '隔离点NFC不能为空', trigger: 'blur' }
         ]
       },
-
+      imageMap: {
+        0: '', //电能
+        1: '', //阀门
+        2: '', //空气能
+        3: '' //急停开关
+      },
+      selectedImageIndex: -1 // 用于记录选中的图片索引
     }
   },
   created() {
@@ -690,6 +717,11 @@ export default {
       }
       return null
     },
+    // 选择隔离点图标
+    selectIcon(imageUrl, index) {
+      this.form.pointIcon = imageUrl
+      this.selectedImageIndex = index
+    },
     /** 查询隔离点信息列表 */
     getList() {
       this.loading = true
@@ -704,6 +736,31 @@ export default {
         this.total = response.data.total
         this.loading = false
       })
+      // 获取隔离点图标组合
+      const sysAttrKey1 = 'sys.icon_set.isolation' // 隔离点集合图标
+
+// 获取 ID 列表
+      getIsSystemAttributeByKey(sysAttrKey1).then((response) => {
+        const Values = response.data.sysAttrValue.split(',').map(Value => Value.trim())
+        console.log(Values, 'Values')
+        // 创建一个 Promise 数组,每个 Promise 处理一个 ID
+        const promises = Values.map(Value => {
+          return getIsSystemAttributeByKey(Value)
+        })
+
+        // 等待所有请求完成
+        return Promise.all(promises)
+      }).then((responses) => {
+        // responses 是一个数组,包含每个请求的响应
+        responses.forEach((response, index) => {
+          // 假设每个响应包含一个图片地址
+          this.imageMap[index] = response.data.sysAttrValue // 根据实际响应结构调整
+        })
+
+        console.log(this.imageMap, 'imageMap')
+      }).catch(error => {
+        console.error('Error fetching images:', error)
+      })
       // 获取作业区域数据
       const data = {
         current: 1,
@@ -719,18 +776,18 @@ export default {
       // })
       // 岗位
       listMarsDept(data).then(response => {
-        this.deptOptions = this.handleTree(response.data.records,"workstationId","parentId")
+        this.deptOptions = this.handleTree(response.data.records, 'workstationId', 'parentId')
       })
       // 设备/工艺
       listTechnology(data).then((response) => {
-        const data=response.data.records.filter((item) =>item.machineryType=='工艺')
+        const data = response.data.records.filter((item) => item.machineryType == '工艺')
         this.machineryOptions = this.handleTree(
           data,
-          "machineryId",
-          "parentId"
-        );
+          'machineryId',
+          'parentId'
+        )
 
-      });
+      })
       // 锁具机构类型
       listLockType(data).then((response) => {
         this.LockTypeOptions = this.handleTree(response.data.records, 'locksetTypeId')
@@ -740,9 +797,9 @@ export default {
         this.padLockTypeOptions = this.handleTree(response.data.records, 'lockTypeId')
       })
 
-    //   所属电柜
+      //   所属电柜
       listLoto(data).then((response) => {
-        console.log(response,'电柜数据')
+        console.log(response, '电柜数据')
         this.lotoOptions = response.data.records.map((item) => {
           return {
             value: item.lotoId,
@@ -772,58 +829,7 @@ export default {
         children: node.children
       }
     },
-    normalizerLockset(node) {
-      if (node.children && !node.children.length) {
-        delete node.children
-      }
-      return {
-        id: node.locksetTypeId,
-        label: node.locksetTypeName,
-        children: node.children
-      }
-    },
-    normalizerpadLock(node) {
-      if (node.children && !node.children.length) {
-        delete node.children
-      }
-      return {
-        id: node.lockTypeId,
-        label: node.lockTypeName,
-        children: node.children
-      }
-    },
-    //图片上传成功
-    handleImgUplaoded(imgUrl) {
-      this.form.pointPicture = imgUrl[0].url
-    },
-    //图片移除
-    handleImgRemoved(imgUrl) {
-      this.form.pointPicture = null
-    },
-    //图标上传成功
-    handleIconUplaoded(imgUrl) {
-      this.form.pointIcon = imgUrl[0].url
-    },
-    // 图标移除
-    handleIconRemoved(imgUrl) {
-      this.form.pointIcon = null
-    },
-    //图标上传成功
-    lockTypeImgUplaoded(imgUrl) {
-      this.form.lockTypeImg = imgUrl[0].url
-    },
-    // 图标移除
-    lockTypeImgRemoved(imgUrl) {
-      this.form.lockTypeImg = null
-    },
-    //图标上传成功
-    locksetTypeImgUplaoded(imgUrl) {
-      this.form.locksetType = imgUrl[0].url
-    },
-    // 图标移除
-    locksetTypeImgRemoved(imgUrl) {
-      this.form.locksetType = null
-    },
+
     // 取消按钮
     cancel() {
       this.open = false
@@ -889,6 +895,7 @@ export default {
       this.optType = 'add'
       this.pointId = null
       this.form.workshopId = 0
+      this.selectedImageIndex=null//为了初始化不选中任何图标
       this.getworkShop()
     },
 
@@ -898,11 +905,22 @@ export default {
       this.pointId = row.pointId || this.ids
       selectIsIsolationPointById(this.pointId).then((response) => {
         this.form = response.data
+        // 确定选中的图片索引
+        this.selectedImageIndex = this.getImageIndexByIcon(response.data.pointIcon);
         this.open = true
         this.title = '修改隔离点信息'
         this.optType = 'edit'
       })
     },
+    // 编辑的时候回显选中的隔离点图标
+    getImageIndexByIcon(iconUrl) {
+      for (const [index, imageUrl] of Object.entries(this.imageMap)) {
+        if (imageUrl === iconUrl) {
+          return index;
+        }
+      }
+      return -1; // 如果没有找到匹配的图片,返回 -1
+    },
     /** 提交按钮 */
     submitForm() {
       this.$refs['form'].validate((valid) => {
@@ -997,7 +1015,59 @@ export default {
           })
         })
       }
-    }
+    },
+    normalizerLockset(node) {
+      if (node.children && !node.children.length) {
+        delete node.children
+      }
+      return {
+        id: node.locksetTypeId,
+        label: node.locksetTypeName,
+        children: node.children
+      }
+    },
+    normalizerpadLock(node) {
+      if (node.children && !node.children.length) {
+        delete node.children
+      }
+      return {
+        id: node.lockTypeId,
+        label: node.lockTypeName,
+        children: node.children
+      }
+    },
+    //图片上传成功
+    handleImgUplaoded(imgUrl) {
+      this.form.pointPicture = imgUrl[0].url
+    },
+    //图片移除
+    handleImgRemoved(imgUrl) {
+      this.form.pointPicture = null
+    },
+    //图标上传成功
+    handleIconUplaoded(imgUrl) {
+      this.form.pointIcon = imgUrl[0].url
+    },
+    // 图标移除
+    handleIconRemoved(imgUrl) {
+      this.form.pointIcon = null
+    },
+    //图标上传成功
+    lockTypeImgUplaoded(imgUrl) {
+      this.form.lockTypeImg = imgUrl[0].url
+    },
+    // 图标移除
+    lockTypeImgRemoved(imgUrl) {
+      this.form.lockTypeImg = null
+    },
+    //图标上传成功
+    locksetTypeImgUplaoded(imgUrl) {
+      this.form.locksetType = imgUrl[0].url
+    },
+    // 图标移除
+    locksetTypeImgRemoved(imgUrl) {
+      this.form.locksetType = null
+    },
   }
 }
 </script>
@@ -1005,4 +1075,29 @@ export default {
 .el-input-width {
   width: 380px !important;
 }
+
+</style>
+<style lang="scss" scoped>
+.image-grid {
+  display: flex;
+  flex-wrap: wrap;
+}
+
+.image-item {
+  margin: 5px;
+  height: 55px;
+  //background: pink;
+  cursor: pointer;
+  border: 2px solid transparent;
+  transition: border-color 0.3s;
+  position: relative;
+}
+
+.image-item.selected {
+  height: 55px;
+  border-color: rgb(2, 86, 255);
+  border-width: 2px;
+}
+
+
 </style>

+ 16 - 38
src/views/mes/dv/technology/technologyDetail/MapData.vue

@@ -1,44 +1,22 @@
 <template>
   <div class="mapdata">
-    <div id="container" ref="container" style="width:1200px"></div>
+    <div id="container" ref="container" style="width:1600px"></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="26" disabled></el-input>
-        </div>
-        <div class="bottombtn" style="width:100%;height: 35px;padding: 10px 0 0">
+<!--      <el-card class="box-card">-->
+<!--        <div slot="header" class="clearfix">-->
+<!--          <span style="font-size: 18px">锁定站信息展示</span>-->
+<!--        -->
+<!--        </div>-->
+<!--        <div style="height: 100%;padding-bottom:10px">-->
+<!--          <el-input v-model="value" type="textarea" :rows="26" disabled></el-input>-->
+<!--        </div>-->
+        <div class="bottombtn" style="width:100%;height: 35px;">
           <el-button v-no-more-click @click="save" type="primary" icon="el-icon-edit"
                      style="float: left; height: 33px; line-height: 2px"
           >保存
           </el-button>
-<!--          <el-button v-no-more-click @click="close" type="primary" icon="el-icon-close"-->
-<!--                     style="float: left; height: 33px; line-height: 2px;"-->
-<!--          >关闭-->
-<!--          </el-button>-->
-<!--          <el-button v-no-more-click @click="reset" type="primary" icon="el-icon-refresh"-->
-<!--                     style="float: left; height: 33px; line-height: 2px;"-->
-<!--          >重置-->
-<!--          </el-button>-->
-<!--          <el-button v-no-more-click @click="view" type="primary" icon="el-icon-view"-->
-<!--                     style="float: left; height: 33px; line-height: 2px"-->
-<!--          >预览-->
-<!--          </el-button>-->
         </div>
-      </el-card>
+<!--      </el-card>-->
 
     </div>
   </div>
@@ -204,7 +182,7 @@ export default {
       // 创建舞台
       this.stage = new Konva.Stage({
         container: this.$refs.container, // 容器元素
-        width: 1200,
+        width: 1600,
         height: 860
       });
 
@@ -253,7 +231,7 @@ export default {
 
 // 绘制无限网格
     drawGrid(cellWidth, cellHeight, gridColor, layer) {
-      const width = 1200;
+      const width = 1600;
       const height = 860;
 
       // 绘制竖线
@@ -303,8 +281,8 @@ const positions=this.pointList
             x: x,
             y: y,
             image: point,
-            width: 50,
-            height: 50,
+            width: 45,
+            height: 45,
             draggable: false
           })
 
@@ -374,7 +352,7 @@ const positions=this.pointList
           const redrect = new Konva.Rect({
             x: x - 3,
             y: y - 6,
-            width: 51,
+            width: 52,
             height: 80,
             cornerRadius: 5,
             fill: 'rgba(97, 97, 97, 0.5)', // 半透明灰色

+ 1 - 0
src/views/mes/dv/technology/technologyList/index.vue

@@ -44,6 +44,7 @@
           size="small"
           :inline="true"
           v-show="showSearch"
+          @submit.native.prevent
         >
           <el-form-item :label="tabPosition === 'craft' ? '工艺名称' : '设备名称'" prop="machineryName">
             <el-input

+ 1 - 0
src/views/mes/email/emailNotify/index.vue

@@ -6,6 +6,7 @@
       size="small"
       :inline="true"
       v-show="showSearch"
+      @submit.native.prevent
     >
       <el-form-item label="提醒事项" prop="name">
         <el-input

+ 1 - 0
src/views/mes/email/emailTemplates/index.vue

@@ -6,6 +6,7 @@
       size="small"
       :inline="true"
       v-show="showSearch"
+      @submit.native.prevent
     >
       <el-form-item label="邮件模板名称" prop="templateName">
         <el-input

+ 1 - 0
src/views/mes/hw/type/index.vue

@@ -347,6 +347,7 @@ export default {
     },
     /** 搜索按钮操作 */
     handleQuery() {
+      this.queryParams.current=1
       this.getList();
     },
     /** 重置按钮操作 */

+ 1 - 0
src/views/mes/job/joblist/index.vue

@@ -7,6 +7,7 @@
       :inline="true"
       v-show="showSearch"
       label-width="100px"
+      @submit.native.prevent
     >
       <el-form-item label="作业票名称" prop="ticketName">
         <el-input

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

@@ -231,7 +231,7 @@ export default {
           // 计算点位的实际位置,确保它们位于柜子显示区域内
           const col = pos.x // 当前点位的列
           const row = pos.y // 当前点位的行
-          x = col * cellWidth -100;
+          x = col * 3.2 * 12-85
           y = row *  2 * 12-1;
           // x = col * cellWidth - 100 // 调整偏移量,使其向左移动 这里之前是间距比较大的时候使用
           // y = row * cellHeight - 15 // 调整偏移量,使其向上移动

+ 142 - 143
src/views/mes/job/jobm/Mapdata.vue

@@ -5,17 +5,18 @@
 </template>
 
 <script>
-import Konva from "konva";
-import { selectLotoMapById, selectIsLotoStationById } from "@/api/mes/lotoStation/lotoStation";
-import { getTechnologyInfo } from "@/api/system/machinery";
+import Konva from 'konva'
+import { selectLotoMapById, selectIsLotoStationById } from '@/api/mes/lotoStation/lotoStation'
+import { getTechnologyInfo } from '@/api/system/machinery'
 import { selectIsMapById } from '@/api/system/mapconfig'
+
 export default {
-  name: "KonvaExample",
+  name: 'KonvaExample',
   props: {
     machineryId: {
       type: String,
-      default: "",
-    },
+      default: ''
+    }
   },
   data() {
     return {
@@ -27,7 +28,7 @@ export default {
       texts: [], // 白色text合集
       redrects: [], // 红色rect合集
       redtexts: [], // 白色text合集
-      value: "",
+      value: '',
       form: {}, //拿到单个数据
       orignData: null, //原始数据
       pointIdList: [], //选中的隔离点
@@ -37,43 +38,43 @@ export default {
       height: '',//底图高
       x: '',//底图横坐标
       y: '',//底图纵坐标
-      pointList:null,//接口给的所有点位数据
-    };
+      pointList: null//接口给的所有点位数据
+    }
   },
   watch: {
     machineryId: {
       handler(newValue) {
         if (newValue) {
-          console.log(this.machineryId, "Mapdata拿到的父组件machineryId");
-          this.selectIsLotoStationById();
+          console.log(this.machineryId, 'Mapdata拿到的父组件machineryId')
+          this.selectIsLotoStationById()
         }
       },
-      immediate: true,
-    },
+      immediate: true
+    }
   },
   mounted() {
     this.$nextTick(() => {
       if (this.machineryId) {
-        this.selectIsLotoStationById();
-        const machineryId = this.machineryId;
-        console.log(machineryId, "Mapdata拿到的父组件传递数据");
+        this.selectIsLotoStationById()
+        const machineryId = this.machineryId
+        console.log(machineryId, 'Mapdata拿到的父组件传递数据')
       }
-    });
+    })
   },
   beforeDestroy() { // Vue 2
-    this.imageUrl='';
-    this.pointList=null
+    this.imageUrl = ''
+    this.pointList = null
   },
   methods: {
     selectIsLotoStationById() {
-      const machineryId = this.machineryId;
+      const machineryId = this.machineryId
       getTechnologyInfo(machineryId).then((response) => {
-        const lotoId = response.data.lotoId;
-        const sopId = "";
-        const ticketId = "";
+        const lotoId = response.data.lotoId
+        const sopId = ''
+        const ticketId = ''
         selectIsLotoStationById(lotoId).then((response) => {
-          console.log(response, "电柜信息");
-          this.form = response.data;
+          console.log(response, '电柜信息')
+          this.form = response.data
           // 获取不同底图 如地图或者柜子
           selectIsMapById(response.data.mapId).then((response) => {
             console.log(response, '获取底图')
@@ -82,29 +83,30 @@ export default {
             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
             this.initKonva()
           })
-        });
+        })
         selectLotoMapById(lotoId, sopId, ticketId).then((response) => {
-          console.log(response, "电柜预览接口调用");
-          this.form.map = response.data;
+          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.value = JSON.stringify(response.data, null, 4)
+              this.orignData = this.value
+            } catch (err) {
+            }
           }
-          this.initKonva();
-        });
-      });
+          this.initKonva()
+        })
+      })
 
       //   设备工艺详情
       getTechnologyInfo(this.machineryId).then((response) => {
-        console.log(response, "设备/工艺详情");
-        this.selectPoints = response.data.pointIdList;
-      });
+        console.log(response, '设备/工艺详情')
+        this.selectPoints = response.data.pointIdList
+      })
     },
 
     initKonva() {
@@ -112,121 +114,118 @@ export default {
       this.stage = new Konva.Stage({
         container: this.$refs.container, // 容器元素
         width: 580,
-        height: 400,
-      });
+        height: 400
+      })
 
       // 创建底图图层
-      this.bgLayer = new Konva.Layer();
+      this.bgLayer = new Konva.Layer()
 
       // 创建底图
-      const bgImage = new Image();
+      const bgImage = new Image()
       // bgImage.src = require("@/assets/images/table.png");
-      bgImage.src=this.imageUrl;
-      if(this.width>1000){
+      bgImage.src = this.imageUrl
+      if (this.width > 1000) {
         bgImage.onload = () => {
           const knovaImage = new Konva.Image({
             x: this.x,
             y: this.y,
             image: bgImage,
-            width: this.width/2.1,
-            height: this.height/2,
-            draggable: false,
-          });
-          this.bgLayer.add(knovaImage);
-          this.bgLayer.draw(); // 绘制底图图层
-        };
-      }else {
+            width: this.width / 2.1,
+            height: this.height / 2,
+            draggable: false
+          })
+          this.bgLayer.add(knovaImage)
+          this.bgLayer.draw() // 绘制底图图层
+        }
+      } else {
         bgImage.onload = () => {
           const knovaImage = new Konva.Image({
-            x: this.x-220,
+            x: this.x - 220,
             y: this.y,
             image: bgImage,
-            width: this.width/2,
-            height: this.height/2,
-            draggable: false,
-          });
-          this.bgLayer.add(knovaImage);
-          this.bgLayer.draw(); // 绘制底图图层
-        };
+            width: this.width / 2,
+            height: this.height / 2,
+            draggable: false
+          })
+          this.bgLayer.add(knovaImage)
+          this.bgLayer.draw() // 绘制底图图层
+        }
       }
 
-
       // 将底图图层添加到舞台
-      this.stage.add(this.bgLayer);
+      this.stage.add(this.bgLayer)
 
       // 创建点位图层
-      this.layer = new Konva.Layer();
+      this.layer = new Konva.Layer()
 
       // 将点位图层添加到舞台
-      this.stage.add(this.layer);
+      this.stage.add(this.layer)
 
       // 禁止舞台拖拽
-      this.stage.draggable(false);
+      this.stage.draggable(false)
 
       // 渲染数据
-      const imageSrc = require("@/assets/images/localSetIcon.jpg"); // 图片路径
-      this.renderGrid(imageSrc, 6, 3, 450, 100, 120, 100, 50, 50, 60, 25);
+      const imageSrc = require('@/assets/images/localSetIcon.jpg') // 图片路径
+      this.renderGrid(imageSrc, 6, 3, 450, 100, 120, 100, 50, 50, 60, 25)
     },
 
     renderGrid(imageSrc) {
-      this.selectedStates = []; // 用数组存储选中状态
-      this.rects = {};
-      this.texts = {};
-      this.bgrects = {};
-      this.redrects = {};
-      this.redtexts = {};
-      this.selectedText = [];
-      this.pointIdList = []; // 初始化选中的点ID列表
+      this.selectedStates = [] // 用数组存储选中状态
+      this.rects = {}
+      this.texts = {}
+      this.bgrects = {}
+      this.redrects = {}
+      this.redtexts = {}
+      this.selectedText = []
+      this.pointIdList = [] // 初始化选中的点ID列表
 
       // const positions = JSON.parse(this.value); // 获取点位数据
-      const positions=this.pointList
-      console.log(positions,'positions');
+      const positions = this.pointList
+      console.log(positions, 'positions')
       // **计算柜子的布局范围**
-      const cabinetWidth = this.stage.width(); // 柜子的宽度
-      const cabinetHeight = this.stage.height(); // 柜子的高度
-      const rows = Math.max(...positions.map((p) => p.x)) + 1; // 根据数据动态计算总行数
-      const cols = Math.max(...positions.map((p) => p.y)) + 1; // 根据数据动态计算总列数
+      const cabinetWidth = this.stage.width() // 柜子的宽度
+      const cabinetHeight = this.stage.height() // 柜子的高度
+      const rows = Math.max(...positions.map((p) => p.x)) + 1 // 根据数据动态计算总行数
+      const cols = Math.max(...positions.map((p) => p.y)) + 1 // 根据数据动态计算总列数
 
       // 调整横向和纵向间距
       let horizontalSpacingFactor
       let verticalSpacingFactor
-      if(this.width>1000){
-        horizontalSpacingFactor = 0.4; // 横向间距放大倍数
-        verticalSpacingFactor = 0.4; // 纵向间距缩小倍数
-      }else{
-        horizontalSpacingFactor = 0.75; // 横向间距放大倍数
-        verticalSpacingFactor = 0.53; // 纵向间距缩小倍数
+      if (this.width > 1000) {
+        horizontalSpacingFactor = 0.4 // 横向间距放大倍数
+        verticalSpacingFactor = 0.4 // 纵向间距缩小倍数
+      } else {
+        horizontalSpacingFactor = 0.75 // 横向间距放大倍数
+        verticalSpacingFactor = 0.53 // 纵向间距缩小倍数
       }
 
-
-      const cellWidth = (cabinetWidth / rows) * horizontalSpacingFactor; // 调整横向间距
-      const cellHeight = (cabinetHeight / cols) * verticalSpacingFactor; // 调整纵向间距
+      const cellWidth = (cabinetWidth / rows) * horizontalSpacingFactor // 调整横向间距
+      const cellHeight = (cabinetHeight / cols) * verticalSpacingFactor // 调整纵向间距
 
       // 遍历点位,按行列布局计算位置
       positions.forEach((pos) => {
-        const col = pos.y; // 当前点位的列
-        const row = pos.x; // 当前点位的行
+        const col = pos.y // 当前点位的列
+        const row = pos.x // 当前点位的行
 
         // 计算点位的实际位置,确保它们位于柜子显示区域内
         let x
         let y
-        if(this.width>1000){
+        if (this.width > 1000) {
           // 计算柜子的布局范围
-          x = row * 2 * 12;
-          y = col * 2 * 12 ;
-          console.log(pos.x,pos.y,x,y,'我打印了')
-        }else{
-          x = row * cellWidth -104;
-          y = col *  2 * 12+8;
+          x = row * 2 * 12
+          y = col * 2 * 12
+          console.log(pos.x, pos.y, x, y, '我打印了')
+        } else {
+          x = row * 2.4 * 12-104
+          y = col * 2 * 12 + 8
           // x = row *  cellWidth - 105; //这里之前是间距比较大的时候使用
           // y = col *  cellHeight + 12;
         }
 
+        const labelText = pos.entityName // 对应的文字
 
-        const labelText = pos.entityName; // 对应的文字
-
-        const point = new Image();
-        point.src = pos.pointIcon;
+        const point = new Image()
+        point.src = pos.pointIcon
         point.onload = () => {
           const knovaImage = new Konva.Image({
             x: x + 6, // 适当的偏移确保点位不重叠
@@ -234,8 +233,8 @@ export default {
             image: point,
             width: 19,
             height: 18,
-            draggable: false,
-          });
+            draggable: false
+          })
 
           // **绘制背景矩形**(以单元格大小为基础)
           const bgrect = new Konva.Rect({
@@ -244,12 +243,12 @@ export default {
             width: 30,
             height: 36,
             cornerRadius: 5,
-            stroke: "white",
+            stroke: 'white',
             strokeWidth: 2,
-            fill: "white",
-          });
-          this.layer.add(bgrect);
-          this.bgrects[labelText] = bgrect;
+            fill: 'white'
+          })
+          this.layer.add(bgrect)
+          this.bgrects[labelText] = bgrect
 
           // **普通矩形边框**(同样按照单元格尺寸)
           const rect = new Konva.Rect({
@@ -258,15 +257,15 @@ export default {
             width: 30 - 8,
             height: 36 - 8,
             cornerRadius: 5,
-            stroke: "red",
+            stroke: 'red',
             strokeWidth: 2,
-            fill: "white",
-          });
-          this.layer.add(rect);
-          this.rects[labelText] = rect;
+            fill: 'white'
+          })
+          this.layer.add(rect)
+          this.rects[labelText] = rect
 
           // 添加图片
-          this.layer.add(knovaImage);
+          this.layer.add(knovaImage)
 
           // **绘制点位的文字**(确保与背景矩形不重叠)
           const text = new Konva.Text({
@@ -274,11 +273,11 @@ export default {
             y: y + 43 - 20, // 文字放在底部
             fontSize: 8,
             text: labelText,
-            fontFamily: "Calibri",
-            fill: "red",
-          });
-          this.layer.add(text);
-          this.texts[labelText] = text;
+            fontFamily: 'Calibri',
+            fill: 'red'
+          })
+          this.layer.add(text)
+          this.texts[labelText] = text
 
           // **选中覆盖矩形**(保持与背景矩形相同的尺寸)
           const redrect = new Konva.Rect({
@@ -287,27 +286,27 @@ export default {
             width: 30,
             height: 36,
             cornerRadius: 5,
-            fill: "rgba(97, 97, 97, 0.5)", // 半透明灰色
+            fill: 'rgba(97, 97, 97, 0.5)', // 半透明灰色
             visible: false, // 初始状态隐藏
-            listening: false,
-          });
-          this.layer.add(redrect);
-          this.redrects[labelText] = redrect;
+            listening: false
+          })
+          this.layer.add(redrect)
+          this.redrects[labelText] = redrect
 
           // **对号文字(表示选中)**
           const redtext = new Konva.Text({
             x: x + 30 / 2 - 5, // 水平居中
             y: y + 36 / 2 - 5, // 垂直居中
             fontSize: 13,
-            text: "✔",
-            fontFamily: "Arial",
-            fill: "white",
-            align: "center",
+            text: '✔',
+            fontFamily: 'Arial',
+            fill: 'white',
+            align: 'center',
             visible: false, // 初始隐藏状态
-            listening: false,
-          });
-          this.layer.add(redtext);
-          this.redtexts[labelText] = redtext;
+            listening: false
+          })
+          this.layer.add(redtext)
+          this.redtexts[labelText] = redtext
 
           // 如果初始化时有选中的点位
           if (
@@ -316,18 +315,18 @@ export default {
           ) {
             if (this.selectPoints.includes(pos.entityId)) {
               // 设置选中状态
-              this.redrects[labelText].visible(true);
-              this.redtexts[labelText].visible(true);
-              this.pointIdList.push(pos.entityId); // 添加ID
+              this.redrects[labelText].visible(true)
+              this.redtexts[labelText].visible(true)
+              this.pointIdList.push(pos.entityId) // 添加ID
             }
           }
 
-          this.layer.draw(); // 刷新画布
-        };
-      });
-    },
-  },
-};
+          this.layer.draw() // 刷新画布
+        }
+      })
+    }
+  }
+}
 </script>
 
 <style scoped lang="scss">

+ 37 - 7
src/views/mes/job/jobm/NewMarsJob.vue

@@ -55,11 +55,11 @@
       index * 40  // 处理图标间隔
     ) + 'px'
   }"
-            :src="require(`@/assets/images/${imageMap[ticket.ticketType]}.png`)"
+            :src="imageMap[ticket.ticketType]"
             alt=""
             @click="handleTicketClick(ticket)"
           />
-
+<!--:src="require(`@/assets/images/${imageMap[ticket.ticketType]}.png`)"-->
 
         </div>
 
@@ -243,6 +243,7 @@
                           "
                         >
                           <el-button
+                            disabled
                             type="primary"
                             plain
                             size="small"
@@ -279,6 +280,7 @@
                           "
                         >
                           <el-button
+                            disabled
                             type="primary"
                             plain
                             size="small"
@@ -626,7 +628,6 @@
             <el-table :data="ticketPointsList">
               <el-table-column label="隔离点" prop="pointName" width="80">
               </el-table-column>
-
               <el-table-column label="状态" align="center" prop="pointStatus">
                 <template slot-scope="scope">
                   <div
@@ -764,6 +765,7 @@ import { selectIsLotoStationById, selectLotoMapById } from '@/api/mes/lotoStatio
 import LockDetail from '@/views/mes/job/jobm/LockDetail.vue'
 import { selectIsMapById } from '@/api/system/mapconfig'
 import { getIsMapPointPage } from '@/api/system/mappoint'
+import { getIsSystemAttributeByKey } from '@/api/system/configuration'
 
 export default {
   name: 'NewSop',
@@ -1009,6 +1011,26 @@ export default {
         this.TicketListPage = ticketsByWorkstation
 
       })
+      const sysAttrKey1 = 'icon.permit.maintenance';//维修
+      const sysAttrKey2 = 'icon.permit.pm';//Pm
+      const sysAttrKey3 = 'icon.permit.shift';//开收班
+      const sysAttrKey4 = 'icon.permit.clean';//清洁
+      const sysAttrKey5 = 'icon.permit.changeover';//换产
+      Promise.all([
+        getIsSystemAttributeByKey(sysAttrKey1),
+        getIsSystemAttributeByKey(sysAttrKey2),
+        getIsSystemAttributeByKey(sysAttrKey3),
+        getIsSystemAttributeByKey(sysAttrKey4),
+        getIsSystemAttributeByKey(sysAttrKey5)
+      ]).then((responses) => {
+        this.imageMap[0] = responses[0].data.sysAttrValue; // 维修
+        this.imageMap[1] = responses[1].data.sysAttrValue; // Pm
+        this.imageMap[2] = responses[2].data.sysAttrValue; // 开收班
+        this.imageMap[3] = responses[3].data.sysAttrValue; // 清洁
+        this.imageMap[4] = responses[4].data.sysAttrValue; // 换产
+
+        console.log(this.imageMap,'imageMap');
+      });
       // 这里注释掉是为了 初始化跳转数据为空
       const data1 = {
         pages: 1,
@@ -1023,11 +1045,17 @@ export default {
         console.log(res, 'marsDeptList')
         this.marsDeptList = res.data.records
       })
-      // 这里获取全局配置地图参数里的作业票地图
-      selectIsMapById(1).then((res) => {
-        console.log(res, '作业票地图 图片数据')
-        this.jobconfig = res.data
+      // 获取基础数据里配置的作业票地图获取mapId
+      const sysAttrKey='sys.map.permit'
+      getIsSystemAttributeByKey(sysAttrKey).then((response) => {
+        const sysAttrValue=response.data.sysAttrValue;
+        // 这里获取全局配置地图参数里的作业票地图
+        selectIsMapById(sysAttrValue).then((res) => {
+          console.log(res, '作业票地图 图片数据')
+          this.jobconfig = res.data
+        })
       })
+
       const dataMap = {
         pages: 1,
         size: -1,
@@ -1423,6 +1451,8 @@ export default {
           console.log(res, '第八步查看作业票数据')
           this.AffectedTickets = res.data
         })
+      }else if(row.stepIndex == '1'){
+        this.$router.push({path:'/mes/dv/technology/technologyDetail/CraftDetail',query:{machineryId:this.machineryId}})
       }
     }
   }

+ 1 - 0
src/views/mes/material/Inspectionrecords/index.vue

@@ -7,6 +7,7 @@
       :inline="true"
       v-show="showSearch"
       label-width="100px"
+      @submit.native.prevent
     >
       <el-form-item label="计划名称" prop="planName">
         <el-input

+ 3 - 2
src/views/mes/material/blacklist/index.vue

@@ -7,6 +7,7 @@
       :inline="true"
       v-show="showSearch"
       label-width="100px"
+      @submit.native.prevent
     >
       <el-row>
         <el-form-item label="工号" prop="userName">
@@ -14,7 +15,7 @@
             v-model="queryParams.userName"
             placeholder="请输入工号"
             clearable
-            @lotoup.enter.native="handleQuery"
+            @keyup.enter.native="handleQuery"
           />
         </el-form-item>
         <el-form-item label="姓名" prop="nickName">
@@ -22,7 +23,7 @@
             v-model="queryParams.nickName"
             placeholder="请输入姓名"
             clearable
-            @lotoup.enter.native="handleQuery"
+            @keyup.enter.native="handleQuery"
           />
         </el-form-item>
 

+ 1 - 0
src/views/mes/material/collectionmanagement/index.vue

@@ -7,6 +7,7 @@
       :inline="true"
       v-show="showSearch"
       label-width="100px"
+      @submit.native.prevent
     >
       <el-row>
         <el-form-item label="物资柜" prop="loanFromId">

+ 1 - 0
src/views/mes/material/expireremind/index.vue

@@ -7,6 +7,7 @@
       :inline="true"
       v-show="showSearch"
       label-width="100px"
+      @submit.native.prevent
     >
       <el-form-item label="物资编码" prop="materialsCode">
         <el-input

+ 1 - 0
src/views/mes/material/inspectionplan/index.vue

@@ -7,6 +7,7 @@
       :inline="true"
       v-show="showSearch"
       label-width="90px"
+      @submit.native.prevent
     >
       <el-form-item label="计划名称" prop="planName" v-if="!visibleSelect">
         <el-input

+ 1 - 0
src/views/mes/material/instructions/index.vue

@@ -7,6 +7,7 @@
       :inline="true"
       v-show="showSearch"
       label-width="100px"
+      @submit.native.prevent
     >
       <el-form-item label="标题" prop="instructionsTitle">
         <el-input

+ 53 - 31
src/views/mes/material/lockers/index.vue

@@ -79,7 +79,7 @@
       index * 40  // 处理图标间隔
     ) + 'px'
   }"
-            :src="require(`@/assets/images/${imageMap[cabinet.status]}.jpg`)"
+            :src="imageMap[cabinet.status]"
             alt=""
             @click="handleCabinetClick(cabinet)"
           />
@@ -399,7 +399,7 @@ import { listMaterials } from '@/api/mes/material/information'
 import { MaterialsLoanExceptionPage } from '@/api/mes/material/exception'
 import { selectIsMapById } from '@/api/system/mapconfig'
 import { getIsMapPointPage } from '@/api/system/mappoint'
-
+import { getIsSystemAttributeByKey} from '@/api/system/configuration'
 export default {
   name: 'Team',
   components: {
@@ -509,7 +509,8 @@ export default {
       defaultProps: {
         children: 'children',
         label: 'label'
-      }
+      },
+      sysAttrValue:null,//从基础数据接口里拿到物资柜底图的mapId
     }
   },
 
@@ -552,7 +553,20 @@ export default {
         this.total = response.data.total
         this.loading = false
       })
+      const sysAttrKey1 = 'icon.cabinet.normal';
+      const sysAttrKey2 = 'icon.cabinet.borrowed';
+      const sysAttrKey3 = 'icon.cabinet.abnormal';
 
+      Promise.all([
+        getIsSystemAttributeByKey(sysAttrKey1),
+        getIsSystemAttributeByKey(sysAttrKey2),
+        getIsSystemAttributeByKey(sysAttrKey3)
+      ]).then((responses) => {
+        this.imageMap[0] = responses[0].data.sysAttrValue; // 正常
+        this.imageMap[1] = responses[1].data.sysAttrValue; // 使用中
+        this.imageMap[2] = responses[2].data.sysAttrValue; // 异常
+        console.log(this.imageMap,'imageMap');
+      });
     },
 
     getExpection() {
@@ -628,30 +642,6 @@ export default {
       })
 
     },
-    //辅助函数计算超时时间
-    calculateTimeDifference(occurTime) {
-      if (!occurTime) return '未知';
-
-      // 将时间字符串转换为 Date 对象
-      const occurDate = new Date(occurTime);
-      if (isNaN(occurDate.getTime())) {
-        console.error('Invalid date format:', occurTime);
-        return '未知';
-      }
-
-      const currentTime = new Date().getTime();
-      const timeDifference = (currentTime - occurDate.getTime()) / (1000 * 60); // 转换为分钟
-
-      if (timeDifference < 1) {
-        return `${(timeDifference * 60).toFixed(0)}秒`;
-      } else if (timeDifference < 60) {
-        return `${timeDifference.toFixed(1)}分钟`;
-      } else {
-        const hours = Math.floor(timeDifference / 60);
-        const minutes = (timeDifference % 60).toFixed(0);
-        return `${hours}小时${minutes}分钟`;
-      }
-    },
     getOtherList() {
       const data = {
         pasge: 1,
@@ -694,11 +684,18 @@ export default {
         }
       })
 
-      // 这里获取全局配置地图参数里的作业票地图
-      selectIsMapById(4).then((res) => {
-        console.log(res, '作业票地图 图片数据')
-        this.jobconfig = res.data
+      //   获取物资柜地图与物资柜对应状态的柜子图片
+      const sysAttrKey='sys.map.cabinet'
+      getIsSystemAttributeByKey(sysAttrKey).then(response => {
+        console.log(response,'获取物资柜底图')
+        this.sysAttrValue=response.data.sysAttrValue
+        // 这里获取全局配置地图参数里的作业票地图
+        selectIsMapById(this.sysAttrValue).then((res) => {
+          console.log(res, '作业票地图 图片数据')
+          this.jobconfig = res.data
+        })
       })
+
       const dataMap={
         pages: 1,
         size: -1,
@@ -709,6 +706,31 @@ export default {
         this.jobconfigPoint = res.data
       })
     },
+    //辅助函数计算超时时间
+    calculateTimeDifference(occurTime) {
+      if (!occurTime) return '未知';
+
+      // 将时间字符串转换为 Date 对象
+      const occurDate = new Date(occurTime);
+      if (isNaN(occurDate.getTime())) {
+        console.error('Invalid date format:', occurTime);
+        return '未知';
+      }
+
+      const currentTime = new Date().getTime();
+      const timeDifference = (currentTime - occurDate.getTime()) / (1000 * 60); // 转换为分钟
+
+      if (timeDifference < 1) {
+        return `${(timeDifference * 60).toFixed(0)}秒`;
+      } else if (timeDifference < 60) {
+        return `${timeDifference.toFixed(1)}分钟`;
+      } else {
+        const hours = Math.floor(timeDifference / 60);
+        const minutes = (timeDifference % 60).toFixed(0);
+        return `${hours}小时${minutes}分钟`;
+      }
+    },
+
     // mars岗位树点击事件
     handleNodeClick(data) {
       this.queryParams.workstationId = data.id //这里给查询传递参数

+ 3 - 1
src/views/mes/material/materialinformation/index.vue

@@ -7,6 +7,7 @@
       :inline="true"
       v-show="showSearch"
       label-width="100px"
+      @submit.native.prevent
     >
       <el-form-item
         :label="visibleSelect ? '物资柜' : '绑定物资柜'"
@@ -462,7 +463,7 @@
                   :zoom-rate="1.2"
                   :preview-src-list="[form.materialsTypePicture]"
                   :initial-index="1"
-                  
+
                 >
                 </el-image>
                 <i class="el-icon-zoom-in" id="eyeicon"></i>
@@ -987,6 +988,7 @@ export default {
     },
     /** 搜索按钮操作 */
     handleQuery() {
+      this.queryParams.current = 1;
       this.getList();
     },
     /** 重置按钮操作 */

+ 3 - 0
src/views/mes/material/replacementrecords/index.vue

@@ -7,6 +7,7 @@
       :inline="true"
       v-show="showSearch"
       label-width="100px"
+      @submit.native.prevent
     >
       <el-form-item label="物资柜" prop="cabinetId">
         <el-select
@@ -38,6 +39,7 @@
           v-model="queryParams.oldMaterialsId"
           placeholder="请输入原物资编号"
           clearable
+          oninput="value=value.replace(/[^\d.]/g,'')"
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
@@ -55,6 +57,7 @@
           v-model="queryParams.newMaterialsId"
           placeholder="请输入新物资编号"
           clearable
+          oninput="value=value.replace(/[^\d.]/g,'')"
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>

+ 1 - 0
src/views/mes/material/returnremind/index.vue

@@ -7,6 +7,7 @@
       :inline="true"
       v-show="showSearch"
       label-width="100px"
+      @submit.native.prevent
     >
       <el-form-item label="物资编码" prop="materialsCode">
         <el-input

+ 1 - 0
src/views/mes/material/standard/PropertyForm.vue

@@ -7,6 +7,7 @@
       :inline="true"
       v-show="showSearch"
       label-width="100px"
+      @submit.native.prevent
     >
       <el-form-item label="物资规格种类" prop="propertyName">
         <el-input

+ 1 - 0
src/views/mes/material/standard/index.vue

@@ -7,6 +7,7 @@
       :inline="true"
       v-show="showSearch"
       label-width="140px"
+      @submit.native.prevent
     >
       <el-form-item label="物资规格种类" prop="propertyName">
         <el-input

+ 1 - 0
src/views/mes/material/typeofmaterial/index.vue

@@ -7,6 +7,7 @@
       :inline="true"
       v-show="showSearch"
       label-width="100px"
+      @submit.native.prevent
     >
       <!-- <el-form-item label="物资类型编码" prop="materialsTypeCode">
         <el-input

+ 1 - 0
src/views/mes/sop/sopm/index.vue

@@ -6,6 +6,7 @@
       size="small"
       :inline="true"
       v-show="showSearch"
+      @submit.native.prevent
     >
       <!--      <el-form-item label="SOP编号" prop="sopCode">-->
       <!--        <el-input-->

+ 122 - 9
src/views/system/configuration/index.vue

@@ -64,19 +64,50 @@
 
     <el-table v-loading="loading" :data="List" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center"/>
-      <el-table-column label="参数名称" align="center" width="210px" prop="sysAttrName">
+      <el-table-column label="参数名称"  width="210px" prop="sysAttrName">
         <template slot-scope="scope">
           <span>{{ scope.row.sysAttrName }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="参数键名" align="center" prop="sysAttrKey" :show-overflow-tooltip="true"/>
-      <el-table-column label="参数键值" align="center" prop="sysAttrValue" :show-overflow-tooltip="true"/>
-      <el-table-column label="备注" align="center" prop="remark" width="180">
+      <el-table-column label="参数键名"  prop="sysAttrKey" :show-overflow-tooltip="true"/>
+      <el-table-column  label="参数类型" width="90"  prop="sysAttrType" :show-overflow-tooltip="true">
+        <template slot-scope="scope">
+          <dict-tag
+            :options="dict.type.sys_type"
+            :value="scope.row.sysAttrType"
+          />
+        </template>
+      </el-table-column>
+      <el-table-column label="参数键值"  prop="sysAttrValue" :show-overflow-tooltip="true">
+        <template slot-scope="scope">
+          <!-- 判断是否为图片 URL -->
+            <div class="img-box" v-if="isImageUrl(scope.row.sysAttrValue)">
+              <el-image
+                style="width: 50px; height: 50px"
+                :preview-teleported="true"
+                class="images"
+                :hide-on-click-modal="true"
+                :src="scope.row.sysAttrValue"
+                :zoom-rate="1.2"
+                :preview-src-list="[scope.row.sysAttrValue]"
+                :initial-index="1"
+              >
+              </el-image>
+              <i class="el-icon-zoom-in" id="eyeicon"></i>
+            </div>
+
+          <!-- 否则显示文字 -->
+          <div v-else>
+            {{ scope.row.sysAttrValue }}
+          </div>
+        </template>
+      </el-table-column>
+      <el-table-column label="备注"  prop="remark" width="300">
         <template slot-scope="scope">
           <span>{{ scope.row.remark }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
+      <el-table-column label="创建时间"  prop="createTime" width="180">
         <template slot-scope="scope">
           <span>{{ scope.row.createTime }}</span>
         </template>
@@ -121,8 +152,32 @@
         <el-form-item label="参数键名" prop="sysAttrKey">
           <el-input v-model="form.sysAttrKey" placeholder="请输入参数键名"/>
         </el-form-item>
+        <el-form-item label="参数类型" prop="sysAttrType">
+          <el-select
+            v-model="form.sysAttrType"
+            placeholder="请选择参数类型"
+            clearable
+          >
+            <el-option
+              v-for="dict in dict.type.sys_type"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="键值类型" prop="sysAttrType">
+          <el-radio-group v-model="inputType" @change="handleInputTypeChange">
+            <el-radio label="text">文字</el-radio>
+            <el-radio label="image">图片</el-radio>
+          </el-radio-group>
+        </el-form-item>
+
         <el-form-item label="参数键值" prop="sysAttrValue">
-          <el-input v-model="form.sysAttrValue" placeholder="请输入参数键值"/>
+          <ImageUpload v-if="inputType === 'image'" :limit="1" :value="form.sysAttrValue" :fileSize="5" @onUploaded="handleImgUplaoded"
+                       @onRemoved="handleImgRemoved"
+          ></ImageUpload>
+          <el-input v-else v-model="form.sysAttrValue" placeholder="请输入参数键值"/>
         </el-form-item>
         <el-form-item label="备注" prop="remark">
           <el-input v-model="form.remark" placeholder="请输入备注"/>
@@ -138,7 +193,7 @@
 
 <script>
 import {
-  deleteIsSystemAttributeByIds,
+  deleteIsSystemAttributeByIds, getIsSystemAttributeByKey,
   getIsSystemAttributePage,
   insertIsSystemAttribute,
   selectIsSystemAttributeById, updateIsSystemAttribute
@@ -146,7 +201,7 @@ import {
 
 export default {
   name: 'autoCodeRule',
-  dicts: ['sys_yes_no'],
+  dicts: ['sys_yes_no','sys_type'],
   data() {
     return {
       // 遮罩层
@@ -174,10 +229,11 @@ export default {
         size: 10,
         sysAttrName: '',
         sysAttrValue: '',
-        sysAttrKey: '',
+        sysAttrKey: ''
       },
       // 表单参数
       form: {},
+      inputType: 'text', // 默认选择文字
       // 表单校验
       rules: {
         sysAttrName: [
@@ -205,6 +261,7 @@ export default {
           this.loading = false
         }
       )
+
     },
     // 取消按钮
     cancel() {
@@ -221,6 +278,26 @@ export default {
       }
       this.resetForm('form')
     },
+    // 判断是否为图片 URL
+    isImageUrl(url) {
+      if (typeof url !== 'string') return false;
+      return /\.(jpg|jpeg|png|gif|webp|bmp)$/i.test(url);
+    },
+    // 处理 radio 切换
+    handleInputTypeChange(value) {
+      // 切换时清空输入内容
+      this.form.sysAttrValue = '';
+    },
+    //图片上传成功
+    handleImgUplaoded(imgUrl) {
+      console.log(imgUrl,'图片上传')
+      this.form.sysAttrValue = imgUrl[0].url
+    },
+    //图片移除
+    handleImgRemoved(imgUrl) {
+      console.log(imgUrl)
+      this.form.sysAttrValue = null
+    },
     /** 搜索按钮操作 */
     handleQuery() {
       this.queryParams.current = 1
@@ -249,6 +326,12 @@ export default {
       const ruleId = row.sysAttrId || this.ids
       selectIsSystemAttributeById(ruleId).then(response => {
         this.form = response.data
+        // 如果拿到Value是图片 直接切换
+        if(this.isImageUrl(this.form.sysAttrValue)) {
+          this.inputType = 'image'
+        }else{
+          this.inputType = 'text'
+        }
         this.open = true
         this.title = '修改基础数据'
       })
@@ -290,3 +373,33 @@ export default {
   }
 }
 </script>
+<style lang="scss" scoped>
+//图片放大
+.img-box {
+  width: 50px;
+  height: 50px;
+  position: relative;
+
+  #eyeicon {
+    display: none;
+  }
+}
+
+.img-box:hover {
+  background: #000;
+
+  .images {
+    opacity: 0.6;
+  }
+
+  #eyeicon {
+    display: block;
+    position: absolute;
+    top: 40%;
+    left: 30%;
+    z-index: 100;
+    color: white;
+    pointer-events: none;
+  }
+}
+</style>

+ 3 - 2
src/views/system/mapconfig/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px" @submit.native.prevent>
       <el-form-item label="地图名称" prop="name">
         <el-input
           v-model="queryParams.name"
@@ -53,6 +53,7 @@
 
     <el-table v-loading="loading" :data="List" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="地图编号" align="center"  prop="id" ></el-table-column>
       <el-table-column label="地图名称" align="center"  prop="name" >
         <template slot-scope="scope">
           <span>{{ scope.row.name }}</span>
@@ -246,7 +247,7 @@ export default {
       queryParams: {
         current: 1,
         size: 10,
-        name:''
+        name:undefined,
       },
       // 表单参数
       form: {},

+ 2 - 2
src/views/system/user/index.vue

@@ -315,7 +315,7 @@
               >
             </template>
           </el-table-column>
-          <!--          <el-table-column label="部门" align="center" key="deptName" prop="dept.deptName" v-if="columns[3].visible" :show-overflow-tooltip="true" />-->
+          <!--  <el-table-column label="部门" align="center" key="deptName" prop="dept.deptName" v-if="columns[3].visible" :show-overflow-tooltip="true" />-->
           <el-table-column
             label="状态"
             align="center"
@@ -584,7 +584,7 @@
           </el-col>
         </el-row>
       </el-form>
-      <div slot="footer" class="dialog-footer">
+      <div slot="footer" class="dialog-footer footerDialog">
         <el-button class="addpersonBtn" v-no-more-click type="primary" @click="submitForm"
           >确 定</el-button
         >