huang_an 1 год назад
Родитель
Сommit
b63e39149f
36 измененных файлов с 1875 добавлено и 1484 удалено
  1. 12 1
      src/components/AssetDialog/categoryDialog.vue
  2. 12 1
      src/components/addPatrolConfigDialog/index.vue
  3. 12 1
      src/components/addPatrolPlanDialog/DispatchDialog.vue
  4. 12 1
      src/components/addPatrolPlanDialog/index.vue
  5. 12 1
      src/components/addSpareDialog/index.vue
  6. 11 0
      src/components/ruleItemSelection/index.vue
  7. 11 0
      src/components/upload/fileUpload.vue
  8. 12 1
      src/views/equipmentDisposal/components/DialogGoods.vue
  9. 108 95
      src/views/equipmentDisposal/components/templateList.vue
  10. 12 1
      src/views/equipmentLease/components/DialogGoods.vue
  11. 12 1
      src/views/ledgerAssets/components/DialogGoods.vue
  12. 11 0
      src/views/ledgerAssets/components/details/components/runningDialog.vue
  13. 11 1
      src/views/ledgerAssets/equipment/components/DialogMoveTo.vue
  14. 12 1
      src/views/ledgerAssets/meter/components/DialogGoods.vue
  15. 11 1
      src/views/ledgerAssets/meter/components/DialogMoveTo.vue
  16. 12 1
      src/views/ledgerAssets/turnoverDisks/components/DialogGoods.vue
  17. 11 1
      src/views/ledgerAssets/turnoverDisks/components/DialogMoveTo.vue
  18. 12 2
      src/views/maintenance/components/ProductModal.vue
  19. 21 11
      src/views/maintenance/components/detailSelect.vue
  20. 12 2
      src/views/maintenance/components/operationGuideDialog.vue
  21. 27 13
      src/views/maintenance/components/sparepartApply.vue
  22. 11 1
      src/views/maintenance/repair/components/RepairDetailsDialog copy.vue
  23. 1 1
      src/views/maintenance/repair/components/RepairDetailsDialog.vue
  24. 17 2
      src/views/maintenance/repair/components/repairReportingWork.vue
  25. 1 1
      src/views/maintenance/repair/outsourcingOrder/components/AppointDetailsDialog.vue
  26. 242 236
      src/views/maintenance/repair/outsourcingOrder/components/appointDialog.vue
  27. 11 0
      src/views/maintenance/repair/planRepair/components/detailDialog.vue
  28. 224 194
      src/views/maintenance/repair/repairNotes/components/EquipmentDialog.vue
  29. 1 1
      src/views/maintenance/repair/repairNotes/components/addDialog.vue
  30. 276 264
      src/views/sparePartsApply/components/AssetsDialog.vue
  31. 402 391
      src/views/sparePartsApply/components/workList.vue
  32. 12 2
      src/views/stocktaking/plan/components/AddDialog.vue
  33. 12 2
      src/views/stocktaking/plan/components/addInventoryDialog.vue
  34. 11 1
      src/views/stocktaking/plan/components/assignDialog.vue
  35. 11 1
      src/views/stocktaking/plan/components/selectType.vue
  36. 277 251
      src/views/warning/warningSetting/components/addWarningDialog.vue

+ 12 - 1
src/components/AssetDialog/categoryDialog.vue

@@ -6,7 +6,15 @@
     width="70%"
     :before-close="handleClose"
     append-to-body
+    :fullscreen="fullscreen"
+    class="fullscreen"
   >
+    <template slot="title">
+      <modalTitle
+        :title="`添加${typeName}`"
+        @setFullscreen="fullscreen = !fullscreen"
+      ></modalTitle>
+    </template>
     <div class="search_wrapper">
       <el-input
         v-model="code"
@@ -93,6 +101,7 @@
 </template>
 
 <script>
+  import modalTitle from '@/components/modalTitle.vue';
   import AssetTree from '@/components/AssetTree';
   // import { getList as getCategoryList } from '@/api/classifyManage/itemInformation';
   import { getAssetList } from '@/api/ledgerAssets';
@@ -101,7 +110,8 @@
   export default {
     components: {
       // CommonTree,
-      AssetTree
+      AssetTree,
+      modalTitle
     },
     mixins: [dictMixins],
     props: {
@@ -118,6 +128,7 @@
     },
     data() {
       return {
+        fullscreen: false,
         dialogVisible: false,
         code: '',
         tableLoading: false,

+ 12 - 1
src/components/addPatrolConfigDialog/index.vue

@@ -7,7 +7,15 @@
     :close-on-press-escape="false"
     v-loading="addDialogLoading"
     width="80%"
+    :fullscreen="fullscreen"
+    class="fullscreen"
   >
+    <template slot="title">
+      <modalTitle
+        :title="dialogTitle"
+        @setFullscreen="fullscreen = !fullscreen"
+      ></modalTitle>
+    </template>
     <div class="dialog_body">
       <el-form
         :model="addForm"
@@ -341,6 +349,7 @@
 </template>
 
 <script>
+  import modalTitle from '@/components/modalTitle.vue';
   import RuleItemSelection from '@/components/ruleItemSelection';
   import AddSpareDialog from '@/components/addSpareDialog';
   import { deepClone } from '@/utils';
@@ -362,7 +371,8 @@
       RuleItemSelection,
       AddSpareDialog,
       equipmentSelect,
-      deptSelect
+      deptSelect,
+      modalTitle
     },
     props: {
       dialogTitle: {
@@ -374,6 +384,7 @@
     },
     data() {
       return {
+        fullscreen: false,
         defaultProps: {
           label: 'showName'
         },

+ 12 - 1
src/components/addPatrolPlanDialog/DispatchDialog.vue

@@ -8,7 +8,15 @@
     custom-class="ele-dialog-form"
     width="90%"
     v-loading="editLoading"
+    :fullscreen="fullscreen"
+    class="fullscreen"
   >
+    <template slot="title">
+      <modalTitle
+        title="派单"
+        @setFullscreen="fullscreen = !fullscreen"
+      ></modalTitle>
+    </template>
     <div class="dialog_body">
       <el-form
         :model="addForm"
@@ -170,6 +178,7 @@
 </template>
 
 <script>
+  import modalTitle from '@/components/modalTitle.vue';
   import personSelect from '@/components/CommomSelect/person-select.vue';
   import deptSelect from '@/components/CommomSelect/dept-select.vue';
   import { getCode } from '@/api/ruleManagement/matter';
@@ -183,7 +192,8 @@
     components: {
       // SelectTree,
       personSelect,
-      deptSelect
+      deptSelect,
+      modalTitle
     },
     props: {
       type: {
@@ -193,6 +203,7 @@
     },
     data() {
       return {
+        fullscreen: false,
         defaultProps: {
           label: 'showName'
         },

+ 12 - 1
src/components/addPatrolPlanDialog/index.vue

@@ -8,7 +8,15 @@
     custom-class="ele-dialog-form"
     width="90%"
     v-loading="editLoading"
+    :fullscreen="fullscreen"
+    class="fullscreen"
   >
+    <template slot="title">
+      <modalTitle
+        :title="dialogTitle"
+        @setFullscreen="fullscreen = !fullscreen"
+      ></modalTitle>
+    </template>
     <div class="dialog_body">
       <el-form
         :model="addForm"
@@ -291,6 +299,7 @@
 </template>
 
 <script>
+  import modalTitle from '@/components/modalTitle.vue';
   import equipmentSelect from '@/components/CommomSelect/equipment-select.vue';
   import personSelect from '@/components/CommomSelect/person-select.vue';
   import deptSelect from '@/components/CommomSelect/dept-select.vue';
@@ -317,11 +326,13 @@
       deptSelect,
       equipmentSelect,
       RuleItemSelection,
-      AddSpareDialog
+      AddSpareDialog,
+      modalTitle
     },
     props: {},
     data() {
       return {
+        fullscreen: false,
         planCheckNodes: [],
         defaultProps: {
           label: 'showName'

+ 12 - 1
src/components/addSpareDialog/index.vue

@@ -5,7 +5,15 @@
     width="70%"
     :before-close="handleClose"
     append-to-body
+    :fullscreen="fullscreen"
+    class="fullscreen"
   >
+    <template slot="title">
+      <modalTitle
+        title="添加备品备件"
+        @setFullscreen="fullscreen = !fullscreen"
+      ></modalTitle>
+    </template>
     <div class="search_wrapper">
       <el-input
         size="small"
@@ -61,13 +69,15 @@
 </template>
 
 <script>
+  import modalTitle from '@/components/modalTitle.vue';
   import AssetTree from '@/components/AssetTree';
   import { getCategoryList } from '@/api/ledgerAssets';
   import { getList } from '@/api/classifyManage/itemInformation';
   export default {
     components: {
       // CommonTree,
-      AssetTree
+      AssetTree,
+      modalTitle
     },
     props: {
       selectedSpare: {
@@ -77,6 +87,7 @@
     },
     data() {
       return {
+        fullscreen: false,
         dialogVisible: false,
         searchParams: {
           code: '',

+ 11 - 0
src/components/ruleItemSelection/index.vue

@@ -6,7 +6,15 @@
     append-to-body
     width="70%"
     :before-close="handleClose"
+    :fullscreen="fullscreen"
+    class="fullscreen"
   >
+    <template slot="title">
+      <modalTitle
+        title="添加规则事项"
+        @setFullscreen="fullscreen = !fullscreen"
+      ></modalTitle>
+    </template>
     <el-table
       ref="multipleTable"
       :data="ruleItem"
@@ -31,8 +39,10 @@
 </template>
 
 <script>
+  import modalTitle from '@/components/modalTitle.vue';
   import { getDetail, getCode } from '@/api/ruleManagement/matter';
   export default {
+    components: { modalTitle },
     props: {
       selectedMatter: {
         type: Array,
@@ -45,6 +55,7 @@
     },
     data() {
       return {
+        fullscreen: false,
         dialogVisible: false,
         ruleItem: [],
         multipleSelection: []

+ 11 - 0
src/components/upload/fileUpload.vue

@@ -30,7 +30,15 @@
       append-to-body
       :visible.sync="documentVisible"
       width="72%"
+      :fullscreen="fullscreen"
+      class="fullscreen"
     >
+      <template slot="title">
+        <modalTitle
+          title="图文档"
+          @setFullscreen="fullscreen = !fullscreen"
+        ></modalTitle>
+      </template>
       <el-form label-width="100px">
         <el-row :gutter="12">
           <el-col :span="8">
@@ -78,6 +86,7 @@
 </template>
 
 <script>
+  import modalTitle from '@/components/modalTitle.vue';
   import {
     uploadFile,
     removeFile,
@@ -86,6 +95,7 @@
   } from '@/api/system/file/index.js';
   import { getImageUrl, getImagePath } from '@/utils/file';
   export default {
+    components: { modalTitle },
     props: {
       value: {
         type: Array,
@@ -114,6 +124,7 @@
     },
     data() {
       return {
+        fullscreen: false,
         documentVisible: false,
         selectItem: null,
         documentForm: {

+ 12 - 1
src/views/equipmentDisposal/components/DialogGoods.vue

@@ -8,7 +8,15 @@
       :before-close="close"
       :width="width"
       :custom-class="customClass"
+      :fullscreen="fullscreen"
+      class="fullscreen"
     >
+      <template slot="title">
+        <modalTitle
+          :title="title"
+          @setFullscreen="fullscreen = !fullscreen"
+        ></modalTitle>
+      </template>
       <ele-split-layout
         width="256px"
         allow-collapse
@@ -103,6 +111,7 @@
   </div>
 </template>
 <script>
+  import modalTitle from '@/components/modalTitle.vue';
   import AssetTree from '@/components/AssetTree';
   // import { getList } from "@/api/stockManagement/itemInformation";
   import { getList } from '@/api/classifyManage/itemInformation';
@@ -127,10 +136,12 @@
       }
     },
     components: {
-      AssetTree
+      AssetTree,
+      modalTitle
     },
     data() {
       return {
+        fullscreen: false,
         productId: '',
         visibleSync: false,
         title: '选择物品',

+ 108 - 95
src/views/equipmentDisposal/components/templateList.vue

@@ -11,7 +11,15 @@
     :visible.sync="visibleSync"
     width="40vw"
     append-to-body
+    :fullscreen="fullscreen"
+    class="fullscreen"
   >
+    <template slot="title">
+      <modalTitle
+        title="选择模板"
+        @setFullscreen="fullscreen = !fullscreen"
+      ></modalTitle>
+    </template>
     <ele-pro-table
       ref="table"
       :columns="columns"
@@ -47,112 +55,117 @@
 </template>
 
 <script>
-import { templateList, removeTemplate } from '@/api/equipmentDisposal/index.js';
+  import modalTitle from '@/components/modalTitle.vue';
+  import {
+    templateList,
+    removeTemplate
+  } from '@/api/equipmentDisposal/index.js';
 
-import dictMixins from '@/mixins/dictMixins';
-// import equipmentSearch from './components/search.vue';
+  import dictMixins from '@/mixins/dictMixins';
+  // import equipmentSearch from './components/search.vue';
 
-export default {
-  mixins: [dictMixins],
-  components: {
-    // equipmentSearch,
-  },
-
-  data() {
-    return {
-      visibleSync: false,
-      loading: false,
-      current: null,
-      // 表格列配置
-      columns: [
-        {
-          columnKey: 'index',
-          type: 'index',
-          label: '序号',
-          width: 55,
-          align: 'center',
-          showOverflowTooltip: true,
-          fixed: 'left'
-        },
-        {
-          prop: 'disposalType',
-          slot: 'disposalType',
-          align: 'center',
-          label: '处置方式',
-          showOverflowTooltip: true
-        },
+  export default {
+    mixins: [dictMixins],
+    components: {
+      modalTitle
+      // equipmentSearch,
+    },
 
-        {
-          align: 'center',
-          prop: 'name',
-          label: '名称',
-          showOverflowTooltip: true
-        },
+    data() {
+      return {
+        fullscreen: false,
+        visibleSync: false,
+        loading: false,
+        current: null,
+        // 表格列配置
+        columns: [
+          {
+            columnKey: 'index',
+            type: 'index',
+            label: '序号',
+            width: 55,
+            align: 'center',
+            showOverflowTooltip: true,
+            fixed: 'left'
+          },
+          {
+            prop: 'disposalType',
+            slot: 'disposalType',
+            align: 'center',
+            label: '处置方式',
+            showOverflowTooltip: true
+          },
 
-        {
-          prop: 'createUserName',
-          align: 'center',
-          label: '创建人'
-        },
-        {
-          prop: 'createTime',
-          align: 'center',
-          label: '创建时间'
-        }
-,
-        {
-          columnKey: 'action',
-          slot: 'action',
-          align: 'center',
-          label: '操作',
-          width: 150,
-          fixed: 'right'
-        }
-      ]
-    };
-  },
-  computed: {},
-  created() {
-    this.requestDict('设备处置方式');
-  },
-  methods: {
-    /* 表格数据源 */
-    datasource({ page, limit, where }) {
-      // this.getNetWork(page, limit, where, order);
-      return templateList({
-        ...where,
-        pageNum: page,
-        size: limit
-      });
-    },
+          {
+            align: 'center',
+            prop: 'name',
+            label: '名称',
+            showOverflowTooltip: true
+          },
 
-    /* 刷新表格 */
-    reload(where) {
-      this.$refs.table.reload({ pageNum: 1, where: where });
+          {
+            prop: 'createUserName',
+            align: 'center',
+            label: '创建人'
+          },
+          {
+            prop: 'createTime',
+            align: 'center',
+            label: '创建时间'
+          },
+          {
+            columnKey: 'action',
+            slot: 'action',
+            align: 'center',
+            label: '操作',
+            width: 150,
+            fixed: 'right'
+          }
+        ]
+      };
     },
-    open() {
-      this.visibleSync = true;
+    computed: {},
+    created() {
+      this.requestDict('设备处置方式');
     },
-    submit() {
-      this.$emit('success', this.current);
-      this.visibleSync = false;
-    },
-    remove(row) {
-      removeTemplate([row.id]).then((res) => {
-        this.$message.success('删除成功!');
-        this.reload();
-      });
+    methods: {
+      /* 表格数据源 */
+      datasource({ page, limit, where }) {
+        // this.getNetWork(page, limit, where, order);
+        return templateList({
+          ...where,
+          pageNum: page,
+          size: limit
+        });
+      },
+
+      /* 刷新表格 */
+      reload(where) {
+        this.$refs.table.reload({ pageNum: 1, where: where });
+      },
+      open() {
+        this.visibleSync = true;
+      },
+      submit() {
+        this.$emit('success', this.current);
+        this.visibleSync = false;
+      },
+      remove(row) {
+        removeTemplate([row.id]).then((res) => {
+          this.$message.success('删除成功!');
+          this.reload();
+        });
+      }
     }
-  }
-};
+  };
 </script>
 <style lang="scss" scoped>
-@media print {
-  #printSection {
-    font-size: 34px;
-    span {
+  @media print {
+    #printSection {
       font-size: 34px;
+      span {
+        font-size: 34px;
+      }
     }
   }
-}
 </style>

+ 12 - 1
src/views/equipmentLease/components/DialogGoods.vue

@@ -8,7 +8,15 @@
       :before-close="close"
       :width="width"
       :custom-class="customClass"
+      :fullscreen="fullscreen"
+      class="fullscreen"
     >
+      <template slot="title">
+        <modalTitle
+          :title="title"
+          @setFullscreen="fullscreen = !fullscreen"
+        ></modalTitle>
+      </template>
       <ele-split-layout
         width="256px"
         allow-collapse
@@ -103,6 +111,7 @@
   </div>
 </template>
 <script>
+  import modalTitle from '@/components/modalTitle.vue';
   import AssetTree from '@/components/AssetTree';
   // import { getList } from "@/api/stockManagement/itemInformation";
   import { getList } from '@/api/classifyManage/itemInformation';
@@ -127,10 +136,12 @@
       }
     },
     components: {
-      AssetTree
+      AssetTree,
+      modalTitle
     },
     data() {
       return {
+        fullscreen: false,
         productId: '',
         visibleSync: false,
         title: '选择物品',

+ 12 - 1
src/views/ledgerAssets/components/DialogGoods.vue

@@ -8,7 +8,15 @@
       :before-close="close"
       :width="width"
       :custom-class="customClass"
+      :fullscreen="fullscreen"
+      class="fullscreen"
     >
+      <template slot="title">
+        <modalTitle
+          :title="title"
+          @setFullscreen="fullscreen = !fullscreen"
+        ></modalTitle>
+      </template>
       <ele-split-layout
         width="256px"
         allow-collapse
@@ -103,6 +111,7 @@
   </div>
 </template>
 <script>
+  import modalTitle from '@/components/modalTitle.vue';
   import AssetTree from '@/components/AssetTree';
   // import { getList } from "@/api/stockManagement/itemInformation";
   import { getList } from '@/api/classifyManage/itemInformation';
@@ -127,10 +136,12 @@
       }
     },
     components: {
-      AssetTree
+      AssetTree,
+      modalTitle
     },
     data() {
       return {
+        fullscreen: false,
         productId: '',
         visibleSync: false,
         title: '选择物品',

+ 11 - 0
src/views/ledgerAssets/components/details/components/runningDialog.vue

@@ -5,7 +5,15 @@
     title="设置运行状态"
     width="400px"
     @close="cancel"
+    :fullscreen="fullscreen"
+    class="fullscreen"
   >
+    <template slot="title">
+      <modalTitle
+        title="设置运行状态"
+        @setFullscreen="fullscreen = !fullscreen"
+      ></modalTitle>
+    </template>
     <el-row :gutter="20">
       <el-col :span="8" class="el-col"
         ><el-radio v-model="status" :label="'START'">启动</el-radio></el-col
@@ -41,13 +49,16 @@
 </template>
 
 <script>
+  import modalTitle from '@/components/modalTitle.vue';
   // import { setupdateStatus } from '@/api/ledgerAssets/equipment.js';
   export default {
+    components: { modalTitle },
     props: {
       id: [Number, String]
     },
     data() {
       return {
+        fullscreen: false,
         loading: false,
         visible: false,
         status: null

+ 11 - 1
src/views/ledgerAssets/equipment/components/DialogMoveTo.vue

@@ -5,7 +5,15 @@
       :visible.sync="dialogVisible"
       width="30%"
       :before-close="handleClose"
+      :fullscreen="fullscreen"
+      class="fullscreen"
     >
+      <template slot="title">
+        <modalTitle
+          :title="title"
+          @setFullscreen="fullscreen = !fullscreen"
+        ></modalTitle>
+      </template>
       <div class="form">
         <el-form
           label-width="120px"
@@ -60,6 +68,7 @@
   </div>
 </template>
 <script>
+  import modalTitle from '@/components/modalTitle.vue';
   import {
     changeSubstanceCateId,
     updateRepairUserAndGroup
@@ -68,9 +77,10 @@
   import DeptSelect from '@/components/CommomSelect/dept-select.vue';
   import { getUserPage } from '@/api/system/organization';
   export default {
-    components: { DeptSelect },
+    components: { DeptSelect, modalTitle },
     data() {
       return {
+        fullscreen: false,
         componentsType: '',
         dialogVisible: false,
         addForm: {},

+ 12 - 1
src/views/ledgerAssets/meter/components/DialogGoods.vue

@@ -8,7 +8,15 @@
       :before-close="close"
       :width="width"
       :custom-class="customClass"
+      :fullscreen="fullscreen"
+      class="fullscreen"
     >
+      <template slot="title">
+        <modalTitle
+          :title="title"
+          @setFullscreen="fullscreen = !fullscreen"
+        ></modalTitle>
+      </template>
       <ele-split-layout
         width="256px"
         allow-collapse
@@ -103,6 +111,7 @@
   </div>
 </template>
 <script>
+  import modalTitle from '@/components/modalTitle.vue';
   import AssetTree from '@/components/AssetTree';
   // import { getList } from "@/api/stockManagement/itemInformation";
   import { getList } from '@/api/classifyManage/itemInformation';
@@ -127,10 +136,12 @@
       }
     },
     components: {
-      AssetTree
+      AssetTree,
+      modalTitle
     },
     data() {
       return {
+        fullscreen: false,
         productId: '',
         visibleSync: false,
         title: '选择物品',

+ 11 - 1
src/views/ledgerAssets/meter/components/DialogMoveTo.vue

@@ -5,7 +5,15 @@
       :visible.sync="dialogVisible"
       width="30%"
       :before-close="handleClose"
+      :fullscreen="fullscreen"
+      class="fullscreen"
     >
+      <template slot="title">
+        <modalTitle
+          :title="title"
+          @setFullscreen="fullscreen = !fullscreen"
+        ></modalTitle>
+      </template>
       <div class="form">
         <el-form
           label-width="120px"
@@ -60,6 +68,7 @@
   </div>
 </template>
 <script>
+  import modalTitle from '@/components/modalTitle.vue';
   import {
     changeSubstanceCateId,
     updateRepairUserAndGroup
@@ -68,9 +77,10 @@
   import DeptSelect from '@/components/CommomSelect/dept-select.vue';
   import { getUserPage } from '@/api/system/organization';
   export default {
-    components: { DeptSelect },
+    components: { DeptSelect, modalTitle },
     data() {
       return {
+        fullscreen: false,
         componentsType: '',
         dialogVisible: false,
         addForm: {},

+ 12 - 1
src/views/ledgerAssets/turnoverDisks/components/DialogGoods.vue

@@ -8,7 +8,15 @@
       :before-close="close"
       :width="width"
       :custom-class="customClass"
+      :fullscreen="fullscreen"
+      class="fullscreen"
     >
+      <template slot="title">
+        <modalTitle
+          :title="title"
+          @setFullscreen="fullscreen = !fullscreen"
+        ></modalTitle>
+      </template>
       <ele-split-layout
         width="256px"
         allow-collapse
@@ -102,6 +110,7 @@
   </div>
 </template>
 <script>
+  import modalTitle from '@/components/modalTitle.vue';
   import AssetTree from '@/components/AssetTree';
   // import { getList } from "@/api/stockManagement/itemInformation";
   import { getList } from '@/api/classifyManage/itemInformation';
@@ -126,10 +135,12 @@
       }
     },
     components: {
-      AssetTree
+      AssetTree,
+      modalTitle
     },
     data() {
       return {
+        fullscreen: false,
         productId: '',
         visibleSync: false,
         title: '选择物品',

+ 11 - 1
src/views/ledgerAssets/turnoverDisks/components/DialogMoveTo.vue

@@ -5,7 +5,15 @@
       :visible.sync="dialogVisible"
       width="30%"
       :before-close="handleClose"
+      :fullscreen="fullscreen"
+      class="fullscreen"
     >
+      <template slot="title">
+        <modalTitle
+          :title="title"
+          @setFullscreen="fullscreen = !fullscreen"
+        ></modalTitle>
+      </template>
       <div class="form">
         <el-form
           label-width="120px"
@@ -60,6 +68,7 @@
   </div>
 </template>
 <script>
+  import modalTitle from '@/components/modalTitle.vue';
   import {
     changeSubstanceCateId,
     updateRepairUserAndGroup
@@ -68,9 +77,10 @@
   import DeptSelect from '@/components/CommomSelect/dept-select.vue';
   import { getUserPage } from '@/api/system/organization';
   export default {
-    components: { DeptSelect },
+    components: { DeptSelect, modalTitle },
     data() {
       return {
+        fullscreen: false,
         componentsType: '',
         dialogVisible: false,
         addForm: {},

+ 12 - 2
src/views/maintenance/components/ProductModal.vue

@@ -3,12 +3,19 @@
     :title="title"
     :visible.sync="visible"
     :before-close="handleClose"
-    class="productModal_dialog"
     :close-on-click-modal="false"
     :close-on-press-escape="false"
     append-to-body
     width="70%"
+    :fullscreen="fullscreen"
+    class="fullscreen"
   >
+    <template slot="title">
+      <modalTitle
+        :title="title"
+        @setFullscreen="fullscreen = !fullscreen"
+      ></modalTitle>
+    </template>
     <el-card shadow="never">
       <ProductSearch @search="reload" ref="searchRef" />
 
@@ -52,15 +59,18 @@
 </template>
 
 <script>
+  import modalTitle from '@/components/modalTitle.vue';
   import ProductSearch from './product-search.vue';
   import { getTreeByGroup } from '@/api/classifyManage';
   import { getList } from '@/api/classifyManage/itemInformation.js';
   export default {
     components: {
-      ProductSearch
+      ProductSearch,
+      modalTitle
     },
     data() {
       return {
+        fullscreen: false,
         visible: false,
         title: '选择工具',
 

+ 21 - 11
src/views/maintenance/components/detailSelect.vue

@@ -4,7 +4,15 @@
     title="选择备品备件"
     width="90vw"
     append-to-body
+    :fullscreen="fullscreen"
+    class="fullscreen"
   >
+    <template slot="title">
+      <modalTitle
+        title="选择备品备件"
+        @setFullscreen="fullscreen = !fullscreen"
+      ></modalTitle>
+    </template>
     <el-form :model="formData" label-width="120px">
       <el-row>
         <el-col :span="6">
@@ -152,8 +160,9 @@
 <script>
   // import { getWarehouseActualDetail } from '@/api/stockManagement/stockLedger.js'
   // import { deepClone } from '@/utils'
-
+  import modalTitle from '@/components/modalTitle.vue';
   export default {
+    components: { modalTitle },
     props: {
       tableHeader: {
         type: Array,
@@ -168,8 +177,9 @@
         default: ''
       }
     },
-    data () {
+    data() {
       return {
+        fullscreen: false,
         visible: false,
         confirmResolve: null,
         tableData: [],
@@ -188,20 +198,20 @@
       };
     },
     computed: {
-      selectedNum () {
+      selectedNum() {
         return this.memo.length + this.selectionList.length;
       },
       checkedAll: {
-        get () {
+        get() {
           return this.tableData.every((item) => item.checked);
         },
-        set (val) {
+        set(val) {
           this.tableData.forEach((item) => (item.checked = val));
         }
       }
     },
     methods: {
-      open (infoData, memo = []) {
+      open(infoData, memo = []) {
         this.visible = true;
         this.batchVisible = false;
         this.infoData = infoData;
@@ -216,10 +226,10 @@
 
         return new Promise((res) => (this.confirmResolve = res));
       },
-      cancel () {
+      cancel() {
         this.visible = false;
       },
-      confirm () {
+      confirm() {
         if (!this.selectedNum) {
           return this.$message.error('请勾选数据');
         }
@@ -227,15 +237,15 @@
           this.confirmResolve([...this.memo, ...this.selectionList]);
         this.cancel();
       },
-      reset () {
+      reset() {
         this.formData = {};
         this.handleList();
       },
-      handleSelectionChange (val) {
+      handleSelectionChange(val) {
         this.selectionList = val;
       },
       // 表格数据
-      async handleList () {
+      async handleList() {
         // 搜索前把已选缓存
         this.memo.push(...this.selectionList);
 

+ 12 - 2
src/views/maintenance/components/operationGuideDialog.vue

@@ -1,7 +1,6 @@
 <!-- 操作手册弹窗 -->
 <template>
   <el-dialog
-    class="ele-dialog-form"
     title="编辑"
     v-if="visible"
     :append-to-body="true"
@@ -10,7 +9,15 @@
     :close-on-click-modal="false"
     :close-on-press-escape="false"
     width="1000px"
+    :fullscreen="fullscreen"
+    class="fullscreen"
   >
+    <template slot="title">
+      <modalTitle
+        title="编辑"
+        @setFullscreen="fullscreen = !fullscreen"
+      ></modalTitle>
+    </template>
     <headerTitle title="操作工具">
       <el-button type="primary" size="small" @click="handleAdd">新增</el-button>
     </headerTitle>
@@ -113,12 +120,14 @@
 </template>
 
 <script>
+  import modalTitle from '@/components/modalTitle.vue';
   import { deepClone } from 'ele-admin/lib/utils/core';
   // import { update, getById } from '@/api/inspectionClassify';
   import ProductModal from './ProductModal.vue';
   export default {
     components: {
-      ProductModal
+      ProductModal,
+      modalTitle
     },
 
     data() {
@@ -129,6 +138,7 @@
         };
       };
       return {
+        fullscreen: false,
         defaultForm,
         // 表单数据
         form: { ...defaultForm() },

+ 27 - 13
src/views/maintenance/components/sparepartApply.vue

@@ -1,5 +1,17 @@
 <template>
-  <el-dialog :visible.sync="visible" title="备品备件申请单" width="90%">
+  <el-dialog
+    :visible.sync="visible"
+    title="备品备件申请单"
+    width="90%"
+    :fullscreen="fullscreen"
+    class="fullscreen"
+  >
+    <template slot="title">
+      <modalTitle
+        title="备品备件申请单"
+        @setFullscreen="fullscreen = !fullscreen"
+      ></modalTitle>
+    </template>
     <div class="sparepart-apply">
       <div class="select-box">
         <el-row :gutter="40">
@@ -143,6 +155,7 @@
 </template>
 
 <script>
+  import modalTitle from '@/components/modalTitle.vue';
   // import detailSelect from './detailSelect.vue'
   // import {
   //   getSparePartsApplyDetail,
@@ -152,15 +165,16 @@
   // import AssetsDialog from '@/views/warehouseManagement/components/AssetsDialog.vue'
   // import { deepClone } from '@/utils'
   export default {
-    components: { detailSelect, AssetsDialog },
+    components: { detailSelect, AssetsDialog, modalTitle },
     props: {
       sourceType: {
         type: Number, //1,保养工单;2,维修工单
         required: true
       }
     },
-    data () {
+    data() {
       return {
+        fullscreen: false,
         visible: false,
         registerlist: [],
         warehouseIdOld: '',
@@ -171,7 +185,7 @@
       };
     },
     methods: {
-      open (row) {
+      open(row) {
         this.row = row;
         this.warehouseId = '';
         this.warehouseIdOld = '';
@@ -182,7 +196,7 @@
         }
         this.visible = true;
       },
-      async submit () {
+      async submit() {
         const params = {
           sparePartsApplyDetailList: this.registerlist
             .filter((i) => i.tableData.length)
@@ -213,10 +227,10 @@
           this.$emit('success');
         }
       },
-      cancel () {
+      cancel() {
         this.visible = false;
       },
-      addSparepart (item) {
+      addSparepart(item) {
         if (!this.warehouseId) {
           return this.$message.error('请选择仓库!');
         }
@@ -237,7 +251,7 @@
         });
       },
       // 切换仓库清空选择
-      handleWarehouseChange () {
+      handleWarehouseChange() {
         if (
           this.registerlist.length > this.planList.length ||
           this.registerlist.some((i) => i.tableData.length)
@@ -262,12 +276,12 @@
           });
         }
       },
-      handleDelete (item, row, index) {
+      handleDelete(item, row, index) {
         this.$confirm(`确定删除${row.onlyCode}?`).then(() => {
           item.tableData.splice(index, 1);
         });
       },
-      async _getSparePartsApplyDetail (planCode) {
+      async _getSparePartsApplyDetail(planCode) {
         const res = await getSparePartsApplyDetail({ planCode });
         if (res?.success) {
           this.registerlist = res.data.map((item) => ({
@@ -280,14 +294,14 @@
           this.planList = deepClone(this.registerlist);
         }
       },
-      addGoods () {
+      addGoods() {
         if (!this.warehouseId) {
           return this.$message.error('请选择仓库!');
         }
         this.$refs.assetsDialogRef.open();
       },
       // 选择物品
-      onSelectTableData (selectList) {
+      onSelectTableData(selectList) {
         this.registerlist = this.registerlist.filter((item) => {
           const index = selectList.findIndex((i) => i.curId === item.curId);
 
@@ -316,7 +330,7 @@
           })
         );
       },
-      async _getWarehouse () {
+      async _getWarehouse() {
         if (this.warehouseList.length) return;
         const res = await warehouseListValuable();
         if (res?.success) {

+ 11 - 1
src/views/maintenance/repair/components/RepairDetailsDialog copy.vue

@@ -7,7 +7,15 @@
     :close-on-click-modal="false"
     :close-on-press-escape="false"
     width="60%"
+    :fullscreen="fullscreen"
+    class="fullscreen"
   >
+    <template slot="title">
+      <modalTitle
+        :title="dialogTitle"
+        @setFullscreen="fullscreen = !fullscreen"
+      ></modalTitle>
+    </template>
     <el-tabs
       v-model="detailsTabsActiveName"
       type="border-card"
@@ -331,6 +339,7 @@
 </template>
 
 <script>
+  import modalTitle from '@/components/modalTitle.vue';
   import RepairNotesTab from './RepairNotesTab.vue';
   import WorkOrderTab from './WorkOrderTab.vue';
   import { getAssetInfo } from '@/api/ledgerAssets';
@@ -340,9 +349,10 @@
   export default {
     mixins: [dictMixins],
     props: {},
-    components: { RepairNotesTab, WorkOrderTab },
+    components: { RepairNotesTab, WorkOrderTab, modalTitle },
     data() {
       return {
+        fullscreen: false,
         equipmentdialog: false,
         detailsTabsActiveName: 'repairApplication',
         workOrderInfo: {},

+ 1 - 1
src/views/maintenance/repair/components/RepairDetailsDialog.vue

@@ -12,7 +12,7 @@
   >
     <template slot="title">
       <modalTitle
-        title="报工"
+        :title="dialogTitle"
         @setFullscreen="fullscreen = !fullscreen"
       ></modalTitle>
     </template>

+ 17 - 2
src/views/maintenance/repair/components/repairReportingWork.vue

@@ -1,6 +1,18 @@
 <template>
   <!-- 报工 -->
-  <el-dialog :visible.sync="visible" title="报工" width="80%">
+  <el-dialog
+    :visible.sync="visible"
+    title="报工"
+    width="80%"
+    :fullscreen="fullscreen"
+    class="fullscreen"
+  >
+    <template slot="title">
+      <modalTitle
+        title="报工"
+        @setFullscreen="fullscreen = !fullscreen"
+      ></modalTitle>
+    </template>
     <el-form
       ref="ruleForm"
       :model="formData"
@@ -189,6 +201,7 @@
 </template>
 
 <script>
+  import modalTitle from '@/components/modalTitle.vue';
   import { report, loseReport } from '@/api/equipment/work.js';
   import {
     getById,
@@ -201,10 +214,12 @@
   export default {
     components: {
       fileMain,
-      redeployOther
+      redeployOther,
+      modalTitle
     },
     data() {
       return {
+        fullscreen: false,
         formData: {
           time: [],
           reason: '',

+ 1 - 1
src/views/maintenance/repair/outsourcingOrder/components/AppointDetailsDialog.vue

@@ -12,7 +12,7 @@
   >
     <template slot="title">
       <modalTitle
-        title="报工"
+        :title="dialogTitle"
         @setFullscreen="fullscreen = !fullscreen"
       ></modalTitle>
     </template>

+ 242 - 236
src/views/maintenance/repair/outsourcingOrder/components/appointDialog.vue

@@ -6,91 +6,99 @@
     :close-on-click-modal="false"
     :close-on-press-escape="false"
     width="60%"
+    :fullscreen="fullscreen"
+    class="fullscreen"
   >
-    <div class="main_container"  id='printBill'>
-        <div class="basic-details-title border-none">
-          <span class="border-span">委外信息</span>
-        </div>
-        <el-descriptions title="" :column="2" size="medium" border>
-          <el-descriptions-item>
-            <template slot="label"> 工单编号 </template>
-            {{ workOrderInfo ? workOrderInfo.code : '' }}
-          </el-descriptions-item>
-          <el-descriptions-item>
-            <template slot="label"> 发布时间 </template>
-            {{ workOrderInfo ? workOrderInfo.createTime : '' }}
-          </el-descriptions-item>
-          <el-descriptions-item>
-            <template slot="label"> 委外单位</template>
-            {{ workOrderInfo ? workOrderInfo.outsourcUnit : ''}}
-          </el-descriptions-item>
-          <el-descriptions-item>
-            <template slot="label"> 发布人 </template>
-            {{ workOrderInfo ? workOrderInfo.createBy : '' }}
-          </el-descriptions-item>
-          <el-descriptions-item :span="2">
-            <template slot="label"> 计划完成时间 </template>
-            {{ workOrderInfo ? workOrderInfo.planCompletionTime : '' }}
-          </el-descriptions-item>
-        </el-descriptions>
-        <div class="basic-details-title border-none">
-          <span class="border-span">设备信息</span>
-        </div>
-        <el-descriptions title="" :column="2" size="medium" border>
-          <el-descriptions-item>
-            <template slot="label"> 设备编码 </template>
-            {{ equipmentInfo ? equipmentInfo.code : '' }}
-          </el-descriptions-item>
-          <el-descriptions-item>
-            <template slot="label"> 权属部门 </template>
-            {{ equipmentInfo ? equipmentInfo.ownershipGroupName : ''}}
-          </el-descriptions-item>
-          <el-descriptions-item>
-            <template slot="label"> 设备名称 </template>
-            {{ equipmentInfo ? equipmentInfo.name : '' }}
-          </el-descriptions-item>
-          <el-descriptions-item>
-            <template slot="label"> 权属人 </template>
-            {{  equipmentInfo ? equipmentInfo.ownershipUserName : '' }}
-          </el-descriptions-item>
-          <el-descriptions-item>
-            <template slot="label"> 权属人电话 </template>
-            {{ equipmentInfo ? equipmentInfo.ownershipUserMobile : ''  }}
-          </el-descriptions-item>
-          <el-descriptions-item>
-            <template slot="label"> 固定资产编码 </template>
-            {{ equipmentInfo ? equipmentInfo.fixCode : '' }}
-          </el-descriptions-item>
-          <el-descriptions-item>
-            <template slot="label" :span="2"> 设备位置 </template>
-            {{ equipmentInfo.position}}
-          </el-descriptions-item>
-        </el-descriptions>
-        <div class="basic-details-title border-none">
-          <span class="border-span">报修信息</span>
-        </div>
-        <el-descriptions title="" :column="2" size="medium" border>
-          <el-descriptions-item>
-            <template slot="label"> 报修记录编号 </template>
-            {{ infoData ? infoData.code : '' }}
-          </el-descriptions-item>
-          <el-descriptions-item>
-            <template slot="label"> 报修时间 </template>
-            {{ infoData ? infoData.createTime : '' }}
-          </el-descriptions-item>
-          <el-descriptions-item>
-            <template slot="label"> 报修人 </template>
-            {{ infoData ? infoData.requestUserName : '' }}
-          </el-descriptions-item>
-          <el-descriptions-item>
-            <template slot="label"> 报修人电话 </template>
-            {{ infoData ? infoData.repairsDeptPhone : '' }}
-          </el-descriptions-item>
-          <el-descriptions-item :span="2">
-            <template slot="label" > 故障描述 </template>
-            {{ infoData ? infoData.remark : '' }}
-          </el-descriptions-item>
-<!--          <el-descriptions-item :span="2">
+    <template slot="title">
+      <modalTitle
+        title="委外单"
+        @setFullscreen="fullscreen = !fullscreen"
+      ></modalTitle>
+    </template>
+    <div class="main_container" id="printBill">
+      <div class="basic-details-title border-none">
+        <span class="border-span">委外信息</span>
+      </div>
+      <el-descriptions title="" :column="2" size="medium" border>
+        <el-descriptions-item>
+          <template slot="label"> 工单编号 </template>
+          {{ workOrderInfo ? workOrderInfo.code : '' }}
+        </el-descriptions-item>
+        <el-descriptions-item>
+          <template slot="label"> 发布时间 </template>
+          {{ workOrderInfo ? workOrderInfo.createTime : '' }}
+        </el-descriptions-item>
+        <el-descriptions-item>
+          <template slot="label"> 委外单位</template>
+          {{ workOrderInfo ? workOrderInfo.outsourcUnit : '' }}
+        </el-descriptions-item>
+        <el-descriptions-item>
+          <template slot="label"> 发布人 </template>
+          {{ workOrderInfo ? workOrderInfo.createBy : '' }}
+        </el-descriptions-item>
+        <el-descriptions-item :span="2">
+          <template slot="label"> 计划完成时间 </template>
+          {{ workOrderInfo ? workOrderInfo.planCompletionTime : '' }}
+        </el-descriptions-item>
+      </el-descriptions>
+      <div class="basic-details-title border-none">
+        <span class="border-span">设备信息</span>
+      </div>
+      <el-descriptions title="" :column="2" size="medium" border>
+        <el-descriptions-item>
+          <template slot="label"> 设备编码 </template>
+          {{ equipmentInfo ? equipmentInfo.code : '' }}
+        </el-descriptions-item>
+        <el-descriptions-item>
+          <template slot="label"> 权属部门 </template>
+          {{ equipmentInfo ? equipmentInfo.ownershipGroupName : '' }}
+        </el-descriptions-item>
+        <el-descriptions-item>
+          <template slot="label"> 设备名称 </template>
+          {{ equipmentInfo ? equipmentInfo.name : '' }}
+        </el-descriptions-item>
+        <el-descriptions-item>
+          <template slot="label"> 权属人 </template>
+          {{ equipmentInfo ? equipmentInfo.ownershipUserName : '' }}
+        </el-descriptions-item>
+        <el-descriptions-item>
+          <template slot="label"> 权属人电话 </template>
+          {{ equipmentInfo ? equipmentInfo.ownershipUserMobile : '' }}
+        </el-descriptions-item>
+        <el-descriptions-item>
+          <template slot="label"> 固定资产编码 </template>
+          {{ equipmentInfo ? equipmentInfo.fixCode : '' }}
+        </el-descriptions-item>
+        <el-descriptions-item>
+          <template slot="label" :span="2"> 设备位置 </template>
+          {{ equipmentInfo.position }}
+        </el-descriptions-item>
+      </el-descriptions>
+      <div class="basic-details-title border-none">
+        <span class="border-span">报修信息</span>
+      </div>
+      <el-descriptions title="" :column="2" size="medium" border>
+        <el-descriptions-item>
+          <template slot="label"> 报修记录编号 </template>
+          {{ infoData ? infoData.code : '' }}
+        </el-descriptions-item>
+        <el-descriptions-item>
+          <template slot="label"> 报修时间 </template>
+          {{ infoData ? infoData.createTime : '' }}
+        </el-descriptions-item>
+        <el-descriptions-item>
+          <template slot="label"> 报修人 </template>
+          {{ infoData ? infoData.requestUserName : '' }}
+        </el-descriptions-item>
+        <el-descriptions-item>
+          <template slot="label"> 报修人电话 </template>
+          {{ infoData ? infoData.repairsDeptPhone : '' }}
+        </el-descriptions-item>
+        <el-descriptions-item :span="2">
+          <template slot="label"> 故障描述 </template>
+          {{ infoData ? infoData.remark : '' }}
+        </el-descriptions-item>
+        <!--          <el-descriptions-item :span="2">
             <template slot="label" > 图片 </template>
             <el-image
               v-for="(item, index) in infoData.repairsImg"
@@ -100,183 +108,181 @@
               :preview-src-list="[item.url]"
             />
           </el-descriptions-item> -->
-        </el-descriptions>
-        <div class="container-write">
-            <div class="write-box">
-               <span class="box-tips">验收说明:</span>
-            </div>
-            <div class="write-choose">
-              <div class="choose-item"><span class="item-span"></span>通过</div>
-              <div class="choose-item"><span class="item-span"></span>不通过</div>
-            </div>
-            <div class="write-name"><span class="name-tips">验收人:</span></div>
-            <div class="write-name"><span class="name-tips">验收日期:</span></div>
+      </el-descriptions>
+      <div class="container-write">
+        <div class="write-box">
+          <span class="box-tips">验收说明:</span>
+        </div>
+        <div class="write-choose">
+          <div class="choose-item"><span class="item-span"></span>通过</div>
+          <div class="choose-item"><span class="item-span"></span>不通过</div>
         </div>
+        <div class="write-name"><span class="name-tips">验收人:</span></div>
+        <div class="write-name"><span class="name-tips">验收日期:</span></div>
+      </div>
     </div>
     <div class="btns">
-      <el-button type="primary" size="small" @click="billPrintClick">打印</el-button>
+      <el-button type="primary" size="small" @click="billPrintClick"
+        >打印</el-button
+      >
       <el-button size="small" @click="handleClose">关闭</el-button>
     </div>
   </el-dialog>
 </template>
 
 <script>
-import { getOutsourceInfo , getRepairById } from '@/api/maintenance/repair_report';
-import { getAssetInfo } from '@/api/ledgerAssets';
-import print from 'print-js'
-export default {
-  props: {
-
-  },
- watch: {
-
-  },
-  data () {
-    return {
-      appointVisible:false,
-      workOrderInfo: {},
-      equipmentInfo: {},
-      infoData: {},
-    }
-  },
-  created () {
-
-  },
-  methods: {
-    async init(row){
-      this.appointVisible = true
-	  console.log('row',row)
-      const res = await getOutsourceInfo(row.id)
-      this.workOrderInfo = res
-      this.getSbinfo(row.equiId)
-      this.getBxinfo(row.repairRequestId)
-    },
-
-    getSbinfo (params) {
-      getAssetInfo(params).then(res => {
-          this.equipmentInfo = res
-		  this.$set(this.equipmentInfo,'position',res.positionList[0].pathName?res.positionList[0].pathName:'')
-      })
+  import modalTitle from '@/components/modalTitle.vue';
+  import {
+    getOutsourceInfo,
+    getRepairById
+  } from '@/api/maintenance/repair_report';
+  import { getAssetInfo } from '@/api/ledgerAssets';
+  import print from 'print-js';
+  export default {
+    components: { modalTitle },
+    props: {},
+    watch: {},
+    data() {
+      return {
+        fullscreen: false,
+        appointVisible: false,
+        workOrderInfo: {},
+        equipmentInfo: {},
+        infoData: {}
+      };
     },
+    created() {},
+    methods: {
+      async init(row) {
+        this.appointVisible = true;
+        console.log('row', row);
+        const res = await getOutsourceInfo(row.id);
+        this.workOrderInfo = res;
+        this.getSbinfo(row.equiId);
+        this.getBxinfo(row.repairRequestId);
+      },
 
-    getBxinfo(params){
-      getRepairById(params).then(res=>{
-           this.infoData = res
-           // 处理图片
-            if (this.infoData && this.infoData.repairsImg) {
-              const repairsImg = this.infoData.repairsImg
-              this.infoData.repairsImg = []
-              repairsImg.split(',').map(item => {
-                imageView(item).then(res => {
-                  this.infoData.repairsImg.push({
-                    name: item.substring('/download/'.length),
-                    url: res
-                  })
-                })
-                return
-              })
-            }
-      })
-    },
+      getSbinfo(params) {
+        getAssetInfo(params).then((res) => {
+          this.equipmentInfo = res;
+          this.$set(
+            this.equipmentInfo,
+            'position',
+            res.positionList[0].pathName ? res.positionList[0].pathName : ''
+          );
+        });
+      },
 
+      getBxinfo(params) {
+        getRepairById(params).then((res) => {
+          this.infoData = res;
+          // 处理图片
+          if (this.infoData && this.infoData.repairsImg) {
+            const repairsImg = this.infoData.repairsImg;
+            this.infoData.repairsImg = [];
+            repairsImg.split(',').map((item) => {
+              imageView(item).then((res) => {
+                this.infoData.repairsImg.push({
+                  name: item.substring('/download/'.length),
+                  url: res
+                });
+              });
+              return;
+            });
+          }
+        });
+      },
 
+      handleClose() {
+        this.appointVisible = false;
+      },
 
-    handleClose () {
-      this.appointVisible = false
-    },
-
-    billPrintClick(){
-      const style = '@page {margin:0 10mm};'//打印时去掉眉页眉尾
-      //打印为什么要去掉眉页眉尾?因为眉页title时打印当前页面的title,相当于是获取html中title标签里面的内容,但是比如我打印的内容只是一个弹框里面的内容,是没有title的,这时候就会出现undefined,为了避免出现这种情况,就可以隐藏眉页眉尾
-      printJS({
-        printable: 'printBill',// 标签元素id
-        type: 'html',
-        header: '',
-        targetStyles: ['*'],
-        style
-      });
-      //各个配置项
-      //printable:要打印的id。
-      //type:可以是 html 、pdf、 json 等。
-      //properties:是打印json时所需要的数据属性。
-      //gridHeaderStyle和gridStyle都是打印json时可选的样式。
-      //repeatTableHeader:在打印JSON数据时使用。设置为时false,数据表标题将仅在第一页显示。
-      //scanStyles:设置为false时,库将不处理应用于正在打印的html的样式。使用css参数时很有用,此时自己设置的原来想要打印的样式就会失效,在打印预览时可以看到效果
-      //targetStyles: [’*’],这样设置继承了页面要打印元素原有的css属性。
-      //style:传入自定义样式的字符串,使用在要打印的html页面 也就是纸上的样子。
-      //ignoreElements:传入要打印的div中的子元素id,使其不打印。非常好用
-    },
-
-
-
-
-
-  }
-}
+      billPrintClick() {
+        const style = '@page {margin:0 10mm};'; //打印时去掉眉页眉尾
+        //打印为什么要去掉眉页眉尾?因为眉页title时打印当前页面的title,相当于是获取html中title标签里面的内容,但是比如我打印的内容只是一个弹框里面的内容,是没有title的,这时候就会出现undefined,为了避免出现这种情况,就可以隐藏眉页眉尾
+        printJS({
+          printable: 'printBill', // 标签元素id
+          type: 'html',
+          header: '',
+          targetStyles: ['*'],
+          style
+        });
+        //各个配置项
+        //printable:要打印的id。
+        //type:可以是 html 、pdf、 json 等。
+        //properties:是打印json时所需要的数据属性。
+        //gridHeaderStyle和gridStyle都是打印json时可选的样式。
+        //repeatTableHeader:在打印JSON数据时使用。设置为时false,数据表标题将仅在第一页显示。
+        //scanStyles:设置为false时,库将不处理应用于正在打印的html的样式。使用css参数时很有用,此时自己设置的原来想要打印的样式就会失效,在打印预览时可以看到效果
+        //targetStyles: [’*’],这样设置继承了页面要打印元素原有的css属性。
+        //style:传入自定义样式的字符串,使用在要打印的html页面 也就是纸上的样子。
+        //ignoreElements:传入要打印的div中的子元素id,使其不打印。非常好用
+      }
+    }
+  };
 </script>
 
 <style lang="scss" scoped>
-.dialog_top {
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
-  margin-bottom: 10px;
-}
-.btns {
-  text-align: right;
-  margin: 10px 0;
-}
-.border-span{
-	width: 100%;
-	margin: 15px 0;
-	display: inline-block;
-}
-:deep(.main_container){
-     page-break-after:always;
-	 width: 100%;
-   .el-descriptions--medium.is-bordered .el-descriptions-item__cell{
-      min-width:120px!important;
+  .dialog_top {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    margin-bottom: 10px;
+  }
+  .btns {
+    text-align: right;
+    margin: 10px 0;
+  }
+  .border-span {
+    width: 100%;
+    margin: 15px 0;
+    display: inline-block;
+  }
+  :deep(.main_container) {
+    page-break-after: always;
+    width: 100%;
+    .el-descriptions--medium.is-bordered .el-descriptions-item__cell {
+      min-width: 120px !important;
     }
-    .container-write{
-	  width: 97%;
-      margin:20px 0;
+    .container-write {
+      width: 97%;
+      margin: 20px 0;
     }
-    .write-box{
-      width:100%;
-      height:100px;
-      border:1px solid #999;
-      border-radius:4px;
+    .write-box {
+      width: 100%;
+      height: 100px;
+      border: 1px solid #999;
+      border-radius: 4px;
       padding: 10px;
     }
-    .write-choose{
-      width:100%;
-      margin:15px auto;
-      display:flex;
-      align-items:center;
-      .choose-item{
-        margin-right:10px;
-        display:flex;
-        align-items:center;
-        width:80px;
-        .item-span{
-          display:inline-block;
-          width:15px;
-          height:15px;
-          border:1px solid #999;
-          margin-right:4px;
+    .write-choose {
+      width: 100%;
+      margin: 15px auto;
+      display: flex;
+      align-items: center;
+      .choose-item {
+        margin-right: 10px;
+        display: flex;
+        align-items: center;
+        width: 80px;
+        .item-span {
+          display: inline-block;
+          width: 15px;
+          height: 15px;
+          border: 1px solid #999;
+          margin-right: 4px;
         }
       }
     }
-    .write-name{
-      margin-bottom:10px;
-      display:flex;
-      align-items:center;
+    .write-name {
+      margin-bottom: 10px;
+      display: flex;
+      align-items: center;
       justify-content: flex-end;
-      .name-tips{
-        margin-right:150px;
-        width:80px;
+      .name-tips {
+        margin-right: 150px;
+        width: 80px;
       }
     }
-}
-
+  }
 </style>

+ 11 - 0
src/views/maintenance/repair/planRepair/components/detailDialog.vue

@@ -6,7 +6,15 @@
     :close-on-click-modal="false"
     :close-on-press-escape="false"
     width="60%"
+    :fullscreen="fullscreen"
+    class="fullscreen"
   >
+    <template slot="title">
+      <modalTitle
+        title="维修计划详情"
+        @setFullscreen="fullscreen = !fullscreen"
+      ></modalTitle>
+    </template>
     <el-row class="info_wrapper">
       <el-col :span="6" class="info_column">
         <span class="label">计划单号:</span>
@@ -189,12 +197,15 @@
 </template>
 
 <script>
+  import modalTitle from '@/components/modalTitle.vue';
   // import maintenancePlan from '@/api/maintenance/repair/maintenancePlan'
   // import { sendAudit } from '@/api/stockManagement/stocking'
   // import { imageView } from '@/utils'
   export default {
+    components: { modalTitle },
     data() {
       return {
+        fullscreen: false,
         repairPlanDetailVisible: false,
         currentIndex: 0,
         detailsData: {},

+ 224 - 194
src/views/maintenance/repair/repairNotes/components/EquipmentDialog.vue

@@ -7,26 +7,36 @@
     :close-on-press-escape="false"
     append-to-body
     width="60%"
+    :fullscreen="fullscreen"
+    class="fullscreen"
   >
+    <template slot="title">
+      <modalTitle
+        title="选择设备"
+        @setFullscreen="fullscreen = !fullscreen"
+      ></modalTitle>
+    </template>
     <div>
       <el-row>
-		<el-col :span="24" class="topsearch">
-			<el-form >
-			  <el-row>
-          <el-col :span="6">
-            <el-input
-              v-model="searchKey"
-              placeholder="输入设备编码或名称"
-              size="small"
-            ></el-input>
-          </el-col>
-          <el-col :span="6" style="margin-left:10px">
-             <el-button type="primary" size="small" @click="searchByKeyWords">搜索</el-button>
-             <el-button size="small" @click="reset">重置</el-button>
-          </el-col>
-			  </el-row>
-			</el-form>
-		</el-col>
+        <el-col :span="24" class="topsearch">
+          <el-form>
+            <el-row>
+              <el-col :span="6">
+                <el-input
+                  v-model="searchKey"
+                  placeholder="输入设备编码或名称"
+                  size="small"
+                ></el-input>
+              </el-col>
+              <el-col :span="6" style="margin-left: 10px">
+                <el-button type="primary" size="small" @click="searchByKeyWords"
+                  >搜索</el-button
+                >
+                <el-button size="small" @click="reset">重置</el-button>
+              </el-col>
+            </el-row>
+          </el-form>
+        </el-col>
         <el-col :span="6" class="tree_col">
           <!-- <vTreeList
             @handleNodeClick="handleNodeClick"
@@ -44,14 +54,26 @@
             @current-change="handleCurrentChange"
           >
             <!-- <el-table-column v-if="currentTreeData.parentName=='生产设备'" :label="currentTreeData.parentName+'编码'" prop="equCode" width="200"></el-table-column> -->
-            <el-table-column :label="currentTreeData.parentName+'编码'" prop="code" width="200"></el-table-column>
-            <el-table-column :label="currentTreeData.parentName+'名称'" prop="name"></el-table-column>
-            <el-table-column label="设备分类" prop="classificationUrl"></el-table-column>
+            <el-table-column
+              :label="currentTreeData.parentName + '编码'"
+              prop="code"
+              width="200"
+            ></el-table-column>
+            <el-table-column
+              :label="currentTreeData.parentName + '名称'"
+              prop="name"
+            ></el-table-column>
+            <el-table-column
+              label="设备分类"
+              prop="classificationUrl"
+            ></el-table-column>
             <!-- <el-table-column v-if="currentTreeData.parentName=='生产设备'" label="规格型号" prop="specifications"></el-table-column> -->
             <el-table-column label="规格型号" prop="specification">
-               <template slot-scope="{ row }">
-                  {{row.specification}}<span v-if="row.specification||row.modelType">|</span>{{row.modelType}}
-               </template>
+              <template slot-scope="{ row }">
+                {{ row.specification
+                }}<span v-if="row.specification || row.modelType">|</span
+                >{{ row.modelType }}
+              </template>
             </el-table-column>
             <!-- <el-table-column label="固定资产编码" prop="code"></el-table-column>
             <el-table-column
@@ -85,111 +107,113 @@
 </template>
 
 <script>
-// import vTreeList from '@/components/treeList'
-// import { getAssetsList,getList , getBoatList , getTurnoverCarList , getMouldList } from '@/api/ledgerAssets/booksList'
-
-export default {
-  data () {
-    return {
-      equipmentdialog: false,
-      defaultExpandedKeys: [],
-      tableData: [],
-      currentTreeData: {},
-      params: {},
-      selectedRow: {},
-      pagination: {
-        page: 1,
-        size: 10,
-        total: 0
-      },
-	    searchKey:null,
-      ids:[],
-      treeData:[],
-      requestApi: null,
-    }
-  },
-  // components: { vTreeList },
-  watch: {
-    equipmentdialog (val) {
-      if (val) {
-        this.$nextTick(() => {
-          const treeList = this.$refs.commonTree.treeList
-          this.defaultExpandedKeys = [treeList[0].id]
-          this.handleNodeClick(treeList[0])
-        })
-      }
-    }
-  },
-  methods: {
-    handleClose () {
-      this.equipmentdialog = false
-    },
+  import modalTitle from '@/components/modalTitle.vue';
+  // import vTreeList from '@/components/treeList'
+  // import { getAssetsList,getList , getBoatList , getTurnoverCarList , getMouldList } from '@/api/ledgerAssets/booksList'
 
-    handleCurrent (page) {
-      this.pagination.page = page
-      this._getList(this.params)
-    },
-    handleSize (size) {
-      this.pagination.page = 1
-      this.pagination.size = size
-      this._getList(this.params)
+  export default {
+    components: { modalTitle },
+    data() {
+      return {
+        fullscreen: false,
+        equipmentdialog: false,
+        defaultExpandedKeys: [],
+        tableData: [],
+        currentTreeData: {},
+        params: {},
+        selectedRow: {},
+        pagination: {
+          page: 1,
+          size: 10,
+          total: 0
+        },
+        searchKey: null,
+        ids: [],
+        treeData: [],
+        requestApi: null
+      };
     },
-
-    // 树点击事件
-    handleNodeClick (data, node) {
-      // 只点击叶子节点请求表格数据
-      if (data.id === this.currentTreeData.id) return
-      if(data.children){
-         this.ids = []
-         this.treeData = []
-         this._getTreeDataId(data)
-      }else{
-        this.ids = [data.id]
+    // components: { vTreeList },
+    watch: {
+      equipmentdialog(val) {
+        if (val) {
+          this.$nextTick(() => {
+            const treeList = this.$refs.commonTree.treeList;
+            this.defaultExpandedKeys = [treeList[0].id];
+            this.handleNodeClick(treeList[0]);
+          });
+        }
       }
-      // if (this.currentTreeData.id === data.id || data.children) return
-      // this.params = { classificationIdList: [data.id] }
-      this.currentTreeData = data
-      this.params = { classificationId: parseInt(this.currentTreeData.id)  }
-      this._getList(this.params)
     },
+    methods: {
+      handleClose() {
+        this.equipmentdialog = false;
+      },
 
-    // 封装递归获取树id
-    _getTreeDataId (tree) {
-      let data = tree
-      data.children.map(item => {
-        if (item.children) {
-          let tempChildren = []
-          tempChildren = Array.from(item.children)
-          this.treeData.push(data, ...tempChildren)
-        }
-        if (!item.children) {
-          this.treeData.push(data, item)
-        }
-      })
-      for (let i = 0; i < this.treeData.length; i++) {
-        if (this.treeData[i].id) {
-          this.ids.push(this.treeData[i].id)
+      handleCurrent(page) {
+        this.pagination.page = page;
+        this._getList(this.params);
+      },
+      handleSize(size) {
+        this.pagination.page = 1;
+        this.pagination.size = size;
+        this._getList(this.params);
+      },
+
+      // 树点击事件
+      handleNodeClick(data, node) {
+        // 只点击叶子节点请求表格数据
+        if (data.id === this.currentTreeData.id) return;
+        if (data.children) {
+          this.ids = [];
+          this.treeData = [];
+          this._getTreeDataId(data);
+        } else {
+          this.ids = [data.id];
         }
-      }
-      this.ids = [...new Set(this.ids)]
-    },
+        // if (this.currentTreeData.id === data.id || data.children) return
+        // this.params = { classificationIdList: [data.id] }
+        this.currentTreeData = data;
+        this.params = { classificationId: parseInt(this.currentTreeData.id) };
+        this._getList(this.params);
+      },
 
+      // 封装递归获取树id
+      _getTreeDataId(tree) {
+        let data = tree;
+        data.children.map((item) => {
+          if (item.children) {
+            let tempChildren = [];
+            tempChildren = Array.from(item.children);
+            this.treeData.push(data, ...tempChildren);
+          }
+          if (!item.children) {
+            this.treeData.push(data, item);
+          }
+        });
+        for (let i = 0; i < this.treeData.length; i++) {
+          if (this.treeData[i].id) {
+            this.ids.push(this.treeData[i].id);
+          }
+        }
+        this.ids = [...new Set(this.ids)];
+      },
 
-    // 封装 - 获取设备列表数据
-     async _getList (params) {
-         const pageParams = {
-           page: this.pagination.page,
-           size: this.pagination.size
-         }
-         let res = await getAssetsList(pageParams, params)
-         // console.log(res)
-         this.tableLoading = false
-         if (res.success) {
-             this.tableData = res.data.records
-             this.pagination.total = res.data.total
-         } else {
-           this.$message.error(res.code)
-         }
+      // 封装 - 获取设备列表数据
+      async _getList(params) {
+        const pageParams = {
+          page: this.pagination.page,
+          size: this.pagination.size
+        };
+        let res = await getAssetsList(pageParams, params);
+        // console.log(res)
+        this.tableLoading = false;
+        if (res.success) {
+          this.tableData = res.data.records;
+          this.pagination.total = res.data.total;
+        } else {
+          this.$message.error(res.code);
+        }
         // switch (this.currentTreeData.parentName) {
         //   case '生产设备':
         //     this.requestApi = getList
@@ -205,88 +229,94 @@ export default {
         //     break;
         // }
         // this.handleList(params, this.requestApi)
-    },
+      },
 
-    async handleList (params, requestApi) {
-      try {
-        const pageParams = {
-          page: this.pagination.page,
-          size: this.pagination.size
-        }
-        let res = await requestApi(pageParams, params)
-        // console.log(res)
-        this.tableLoading = false
-        if (res.success) {
-            this.tableData = res.data.records
-            this.pagination.total = res.data.total
-        } else {
-          this.$message.error(res.code)
+      async handleList(params, requestApi) {
+        try {
+          const pageParams = {
+            page: this.pagination.page,
+            size: this.pagination.size
+          };
+          let res = await requestApi(pageParams, params);
+          // console.log(res)
+          this.tableLoading = false;
+          if (res.success) {
+            this.tableData = res.data.records;
+            this.pagination.total = res.data.total;
+          } else {
+            this.$message.error(res.code);
+          }
+        } catch (error) {
+          this.tableLoading = false;
         }
-      } catch (error) {
-        this.tableLoading = false
-      }
-    },
+      },
 
-    // 表格选中行
-    handleCurrentChange (row) {
-      if(row){
-        this.selectedRow = row
-        this.selectedRow.equiTypeId = this.currentTreeData.id
-        this.selectedRow.equiTypeName = this.currentTreeData.name
-      }
-    },
+      // 表格选中行
+      handleCurrentChange(row) {
+        if (row) {
+          this.selectedRow = row;
+          this.selectedRow.equiTypeId = this.currentTreeData.id;
+          this.selectedRow.equiTypeName = this.currentTreeData.name;
+        }
+      },
 
-    // 选择的设备行
-    selected () {
-      this.selectedRow.parentName = this.currentTreeData.parentName
-      this.$emit('submit', this.selectedRow)
-      this.handleClose()
-    },
-    // 弹窗 - 按关键字搜索
-    searchByKeyWords () {
-      // console.log(this.searchMsg)
-      if(!this.currentTreeData){
-        this.$message.warning('请先选择设备!')
-        return
+      // 选择的设备行
+      selected() {
+        this.selectedRow.parentName = this.currentTreeData.parentName;
+        this.$emit('submit', this.selectedRow);
+        this.handleClose();
+      },
+      // 弹窗 - 按关键字搜索
+      searchByKeyWords() {
+        // console.log(this.searchMsg)
+        if (!this.currentTreeData) {
+          this.$message.warning('请先选择设备!');
+          return;
+        }
+        this.pagination.page = 1;
+        this.params = {
+          searchKey: this.searchKey,
+          classificationId: parseInt(this.currentTreeData.id)
+        };
+        this._getList(this.params);
+      },
+      // 重置
+      reset() {
+        this.pagination.page = 1;
+        this.searchKey = '';
+        this.params = {
+          searchKey: this.searchKey,
+          classificationId: parseInt(this.currentTreeData.id)
+        };
+        this._getList(this.params);
       }
-      this.pagination.page = 1
-      this.params = { searchKey: this.searchKey , classificationId: parseInt(this.currentTreeData.id)  }
-      this._getList(this.params)
-    },
-    // 重置
-    reset(){
-       this.pagination.page = 1
-       this.searchKey = ''
-       this.params = { searchKey:this.searchKey , classificationId: parseInt(this.currentTreeData.id) }
-       this._getList(this.params)
     }
-  }
-}
+  };
 </script>
 
 <style lang="scss" scoped>
-.tree_col {
-  border: 1px solid #eee;
-  padding: 10px 0;
-  box-sizing: border-box;
-  height: 500px;
-  overflow: auto;
-}
-.table_col {
-  padding-left: 10px;
-  ::v-deep .el-table th.el-table__cell {
-    background: #f2f2f2;
+  .tree_col {
+    border: 1px solid #eee;
+    padding: 10px 0;
+    box-sizing: border-box;
+    height: 500px;
+    overflow: auto;
+  }
+  .table_col {
+    padding-left: 10px;
+    ::v-deep .el-table th.el-table__cell {
+      background: #f2f2f2;
+    }
+  }
+  .pagination {
+    text-align: right;
+    padding: 10px 0;
+  }
+  .btns {
+    text-align: center;
+    padding: 10px 0;
+  }
+  .topsearch {
+    margin-bottom: 15px;
   }
-}
-.pagination {
-  text-align: right;
-  padding: 10px 0;
-}
-.btns {
-  text-align: center;
-  padding: 10px 0;
-}
-.topsearch{
-	margin-bottom:15px;
-}
 </style>

+ 1 - 1
src/views/maintenance/repair/repairNotes/components/addDialog.vue

@@ -11,7 +11,7 @@
   >
     <template slot="title">
       <modalTitle
-        title="报工"
+        :title="dialogTitle"
         @setFullscreen="fullscreen = !fullscreen"
       ></modalTitle>
     </template>

+ 276 - 264
src/views/sparePartsApply/components/AssetsDialog.vue

@@ -5,12 +5,20 @@
     :close-on-press-escape="false"
     append-to-body
     width="80vw"
+    :fullscreen="fullscreen"
+    class="fullscreen"
   >
-    <el-form :model="searchForm" label-width="100px" >
+    <template slot="title">
+      <modalTitle
+        title=""
+        @setFullscreen="fullscreen = !fullscreen"
+      ></modalTitle>
+    </template>
+    <el-form :model="searchForm" label-width="100px">
       <el-row>
         <el-col :span="6">
           <el-form-item label="仓库名称:">
-            <el-select v-model="searchForm.warehouseId"  style="width: 100%">
+            <el-select v-model="searchForm.warehouseId" style="width: 100%">
               <el-option
                 v-for="item in warehouseList"
                 :key="item.id"
@@ -20,7 +28,7 @@
           ></el-form-item>
         </el-col>
 
-        <el-col :span="6" style="height:43px">
+        <el-col :span="6" style="height: 43px">
           <el-form-item label="列表维度:" prop="dimension">
             <template>
               <el-select
@@ -40,7 +48,7 @@
         <el-col :span="6">
           <el-form-item label="物品编码:">
             <el-input
-                style="width: 100%"
+              style="width: 100%"
               type="text"
               placeholder="搜索物品编码"
               v-model="searchForm.categoryCode"
@@ -50,7 +58,7 @@
         <el-col :span="6">
           <el-form-item label="物品名称:">
             <el-input
-                style="width: 100%"
+              style="width: 100%"
               type="text"
               placeholder="搜索物品名称"
               v-model="searchForm.categoryName"
@@ -171,7 +179,7 @@
             </template>
           </el-table-column> -->
           <el-table-column
-          v-if="dimension == 3"
+            v-if="dimension == 3"
             prop="batchNo"
             label="批次号"
             key="batchNo"
@@ -297,279 +305,283 @@
 </template>
 
 <script>
-import storageApi from '@/api/warehouseManagement';
-import AssetTree from './assetTree.vue';
-import warehouseDefinition from '@/api/warehouseManagement/warehouseDefinition';
+  import modalTitle from '@/components/modalTitle.vue';
+  import storageApi from '@/api/warehouseManagement';
+  import AssetTree from './assetTree.vue';
+  import warehouseDefinition from '@/api/warehouseManagement/warehouseDefinition';
 
-export default {
-  components: { AssetTree },
-  props: {
-    treeIds: { type: Array, default: () => [] }
-  },
-  data() {
-    return {
-      isShowTable: true,
-      qualityResultOption: [
-        {
-          value: 0,
-          label: '合格'
-        },
-        {
-          value: 1,
-          label: '不合格'
-        }
-      ],
-      qualityStatusOption: [
-        {
-          value: 1,
-          label: '已质检'
-        },
-        {
-          value: 0,
-          label: '未质检'
-        }
-      ],
-      visible1: false,
-      tableData: [],
-      total: 0,
-      categoryLevelId: '',
-      warehouseList:[],
-      searchForm: {
-        categoryCode: '',
-        categoryName: '',
-        batchNo: '',
-        brandNum: '',
-        engrave: '',
-        barcodes: '',
+  export default {
+    components: { AssetTree, modalTitle },
+    props: {
+      treeIds: { type: Array, default: () => [] }
+    },
+    data() {
+      return {
+        fullscreen: false,
+        isShowTable: true,
+        qualityResultOption: [
+          {
+            value: 0,
+            label: '合格'
+          },
+          {
+            value: 1,
+            label: '不合格'
+          }
+        ],
+        qualityStatusOption: [
+          {
+            value: 1,
+            label: '已质检'
+          },
+          {
+            value: 0,
+            label: '未质检'
+          }
+        ],
+        visible1: false,
+        tableData: [],
+        total: 0,
         categoryLevelId: '',
-        warehouseId: '',
-        pageNum: 1,
-        size: 20
-      },
-      selectionList: [],
-      materialType: '',
-      warehouseList: [],
-      dimension: '1',
-      selection: [],
-      tableList: [],
-      columns: [
-        {
-          columnKey: 'selection',
-          type: 'selection',
-          width: 45,
-          align: 'center',
-          fixed: 'left'
-        },
-        {
-          columnKey: 'index',
-          label: '序号',
-          type: 'index',
-          width: 55,
-          align: 'center',
-          showOverflowTooltip: true,
-          fixed: 'left'
+        warehouseList: [],
+        searchForm: {
+          categoryCode: '',
+          categoryName: '',
+          batchNo: '',
+          brandNum: '',
+          engrave: '',
+          barcodes: '',
+          categoryLevelId: '',
+          warehouseId: '',
+          pageNum: 1,
+          size: 20
         },
+        selectionList: [],
+        materialType: '',
+        warehouseList: [],
+        dimension: '1',
+        selection: [],
+        tableList: [],
+        columns: [
+          {
+            columnKey: 'selection',
+            type: 'selection',
+            width: 45,
+            align: 'center',
+            fixed: 'left'
+          },
+          {
+            columnKey: 'index',
+            label: '序号',
+            type: 'index',
+            width: 55,
+            align: 'center',
+            showOverflowTooltip: true,
+            fixed: 'left'
+          },
 
-        {
-          prop: 'categoryCode',
-          label: '物品编码',
-          align: 'center'
-        },
-        {
-          prop: 'categoryName',
-          label: '物品名称',
-          align: 'center'
-        },
-
-        {
-          prop: 'categoryModel',
-          label: '型号',
-          align: 'center'
-        },
-        {
-          prop: 'specification',
-          label: '规格',
-          align: 'center'
-        },
-        {
-          prop: 'level',
-          label: '级别',
-          align: 'center'
-        },
-        {
-          prop: 'measureQuantity',
-          label: '库存',
-          align: 'center'
-        },   {
-          prop: 'measureUnit',
-          label: '计量单位',
-          align: 'center'
-        },
-      
-        {
-          prop: 'warehouseName',
-          label: '仓库',
-          align: 'center'
-        },
-      ]
-    };
-  },
-  created() {
-    warehouseDefinition.list({}).then((res) => {
-      this.warehouseList = res;
-    });
+          {
+            prop: 'categoryCode',
+            label: '物品编码',
+            align: 'center'
+          },
+          {
+            prop: 'categoryName',
+            label: '物品名称',
+            align: 'center'
+          },
 
-  },
-  methods: {
-    getRowKeys(row) {
-      return row.id;
-    },
+          {
+            prop: 'categoryModel',
+            label: '型号',
+            align: 'center'
+          },
+          {
+            prop: 'specification',
+            label: '规格',
+            align: 'center'
+          },
+          {
+            prop: 'level',
+            label: '级别',
+            align: 'center'
+          },
+          {
+            prop: 'measureQuantity',
+            label: '库存',
+            align: 'center'
+          },
+          {
+            prop: 'measureUnit',
+            label: '计量单位',
+            align: 'center'
+          },
 
-    // 切换维度
-    changeDimensionHandler(e) {
-      this.searchForm.pageNum = 1;
-      this.selectionList = [];
-      this.$refs.multipleTable.clearSelection();
-      this.changeDimension(e);
-    },
-    async changeDimension(e) {
-      this.dimension = e;
-      if (this.dimension == 1) {
-        // 物品维度
-        const data = await storageApi.getProductList(this.searchForm);
-        this.tableData = data.list;
-        this.total = data.count;
-      } else if (this.dimension == 2) {
-        // 批次维度
-        const data = await storageApi.getBatchList(this.searchForm);
-        this.tableData = data.list;
-        this.total = data.count;
-      } else if (this.dimension == 4) {
-        // 物料维度
-        const data = await storageApi.getMaterialList(this.searchForm);
-        this.tableData = data.list;
-        this.total = data.count;
-      } else {
-        // 包装维度
-        const data = await storageApi.getPackingList(this.searchForm);
-        this.tableData = data.list;
-        this.total = data.count;
-      }
-      console.log(this.tableData);
+          {
+            prop: 'warehouseName',
+            label: '仓库',
+            align: 'center'
+          }
+        ]
+      };
     },
-    open(tableList) {
-      this.visible1 = true;
-      this.tableList = JSON.parse(JSON.stringify(tableList));
-      this.$nextTick(() => {
-        console.log(this.$refs, 'this.$refs.treeList');
-        this.$refs.treeList.getTreeData().then((data) => {
-          this.handleNodeClick(data);
-        });
+    created() {
+      warehouseDefinition.list({}).then((res) => {
+        this.warehouseList = res;
       });
     },
-    async confirm() {
-      this.$emit('choose', this.tableList, this.dimension);
-      this.cancel();
-    },
-    async add() {
-      if (!this.selectionList.length) {
-        this.$message.error('请至少选择一条数据!');
-        return;
-      }
-      // if (this.dimension == 1) {
-      //   let boolen = this.selectionList.every((item) => item.outboundNum > 0);
-      //   if (!boolen) {
-      //     this.$message.error('请输入出库数量!');
-      //     return;
-      //   }
-      // }
-      // let data = null;
-      // if (this.dimension != 1) {
-      //   data = await storageApi.getHierarchyList({
-      //     ids: this.selectionList.map((item) => item.id).join(','),
-      //     type: this.dimension
-      //   });
-      // } else {
-      //   data = await storageApi.getHierarchyFifo({
-      //     type: this.dimension,
-      //     builders: this.selectionList.map((item) => {
-      //       return {
-      //         categoryId: item.categoryId,
-      //         num: item.outboundNum || item.measureQuantity
-      //       };
-      //     })
-      //   });
-      // }
+    methods: {
+      getRowKeys(row) {
+        return row.id;
+      },
 
-      this.selectionList = this.selectionList.filter((item) => {
-        if(item.warehouseList.length>0){
-          item['warehouseId']=item.warehouseList[0].warehouse_id
-          item['warehouseName']=item.warehouseList[0].warehouse_name
+      // 切换维度
+      changeDimensionHandler(e) {
+        this.searchForm.pageNum = 1;
+        this.selectionList = [];
+        this.$refs.multipleTable.clearSelection();
+        this.changeDimension(e);
+      },
+      async changeDimension(e) {
+        this.dimension = e;
+        if (this.dimension == 1) {
+          // 物品维度
+          const data = await storageApi.getProductList(this.searchForm);
+          this.tableData = data.list;
+          this.total = data.count;
+        } else if (this.dimension == 2) {
+          // 批次维度
+          const data = await storageApi.getBatchList(this.searchForm);
+          this.tableData = data.list;
+          this.total = data.count;
+        } else if (this.dimension == 4) {
+          // 物料维度
+          const data = await storageApi.getMaterialList(this.searchForm);
+          this.tableData = data.list;
+          this.total = data.count;
+        } else {
+          // 包装维度
+          const data = await storageApi.getPackingList(this.searchForm);
+          this.tableData = data.list;
+          this.total = data.count;
         }
-        return !this.tableList
-          .map((item) => item.categoryCode)
-          .includes(item.categoryCode);
-      });
-      this.tableList.push(...this.selectionList);
-    },
-    del() {
-      let ids = this.selection.map((item) => item.id);
-      this.tableList = this.tableList.filter((item) => !ids.includes(item.id));
-    },
-    cancel() {
-      this.selectionList = [];
-      this.$refs.multipleTable.clearSelection();
-      this.visible1 = false;
-    },
-    handleSelectionChange(val) {
-      this.selectionList = val;
-    },
-    handleNodeClick(data) {
-      console.log(data);
-      this.categoryLevelId = data.id;
-      this.searchForm.categoryLevelId = data.id;
-      this.doSearch();
-    },
-    handleCurrentChange() {
-      this.changeDimension(this.dimension);
-    },
-    reset() {
-      this.searchForm = {
-        categoryCode: '',
-        categoryName: '',
-        batchNo: '',
-        brandNum: '',
-        engrave: '',
-        barcodes: '',
-        categoryLevelId: this.categoryLevelId,
-        pageNum: 1,
-        warehouseId: '',
-        size: 20
-      };
-      this.doSearch();
-    },
-    doSearch() {
-      this.searchForm.pageNum = 1;
-      this.changeDimension(this.dimension);
-    },
-    handleSizeChange() {
-      this.searchForm.pageNum = 1;
-      this.changeDimension(this.dimension, 'page');
+        console.log(this.tableData);
+      },
+      open(tableList) {
+        this.visible1 = true;
+        this.tableList = JSON.parse(JSON.stringify(tableList));
+        this.$nextTick(() => {
+          console.log(this.$refs, 'this.$refs.treeList');
+          this.$refs.treeList.getTreeData().then((data) => {
+            this.handleNodeClick(data);
+          });
+        });
+      },
+      async confirm() {
+        this.$emit('choose', this.tableList, this.dimension);
+        this.cancel();
+      },
+      async add() {
+        if (!this.selectionList.length) {
+          this.$message.error('请至少选择一条数据!');
+          return;
+        }
+        // if (this.dimension == 1) {
+        //   let boolen = this.selectionList.every((item) => item.outboundNum > 0);
+        //   if (!boolen) {
+        //     this.$message.error('请输入出库数量!');
+        //     return;
+        //   }
+        // }
+        // let data = null;
+        // if (this.dimension != 1) {
+        //   data = await storageApi.getHierarchyList({
+        //     ids: this.selectionList.map((item) => item.id).join(','),
+        //     type: this.dimension
+        //   });
+        // } else {
+        //   data = await storageApi.getHierarchyFifo({
+        //     type: this.dimension,
+        //     builders: this.selectionList.map((item) => {
+        //       return {
+        //         categoryId: item.categoryId,
+        //         num: item.outboundNum || item.measureQuantity
+        //       };
+        //     })
+        //   });
+        // }
+
+        this.selectionList = this.selectionList.filter((item) => {
+          if (item.warehouseList.length > 0) {
+            item['warehouseId'] = item.warehouseList[0].warehouse_id;
+            item['warehouseName'] = item.warehouseList[0].warehouse_name;
+          }
+          return !this.tableList
+            .map((item) => item.categoryCode)
+            .includes(item.categoryCode);
+        });
+        this.tableList.push(...this.selectionList);
+      },
+      del() {
+        let ids = this.selection.map((item) => item.id);
+        this.tableList = this.tableList.filter(
+          (item) => !ids.includes(item.id)
+        );
+      },
+      cancel() {
+        this.selectionList = [];
+        this.$refs.multipleTable.clearSelection();
+        this.visible1 = false;
+      },
+      handleSelectionChange(val) {
+        this.selectionList = val;
+      },
+      handleNodeClick(data) {
+        console.log(data);
+        this.categoryLevelId = data.id;
+        this.searchForm.categoryLevelId = data.id;
+        this.doSearch();
+      },
+      handleCurrentChange() {
+        this.changeDimension(this.dimension);
+      },
+      reset() {
+        this.searchForm = {
+          categoryCode: '',
+          categoryName: '',
+          batchNo: '',
+          brandNum: '',
+          engrave: '',
+          barcodes: '',
+          categoryLevelId: this.categoryLevelId,
+          pageNum: 1,
+          warehouseId: '',
+          size: 20
+        };
+        this.doSearch();
+      },
+      doSearch() {
+        this.searchForm.pageNum = 1;
+        this.changeDimension(this.dimension);
+      },
+      handleSizeChange() {
+        this.searchForm.pageNum = 1;
+        this.changeDimension(this.dimension, 'page');
+      }
     }
-  }
-};
+  };
 </script>
 
 <style lang="scss" scoped>
-.el-dialog__wrapper {
-  ::v-deep .el-aside {
-    background-color: #fff !important;
-    border: 1px solid #ccc;
+  .el-dialog__wrapper {
+    ::v-deep .el-aside {
+      background-color: #fff !important;
+      border: 1px solid #ccc;
+    }
   }
-}
 
-.wrapper-assets {
-  max-height: 53vh;
-  overflow: auto;
-}
+  .wrapper-assets {
+    max-height: 53vh;
+    overflow: auto;
+  }
 </style>

+ 402 - 391
src/views/sparePartsApply/components/workList.vue

@@ -5,7 +5,15 @@
     :close-on-press-escape="false"
     append-to-body
     width="80vw"
+    :fullscreen="fullscreen"
+    class="fullscreen"
   >
+    <template slot="title">
+      <modalTitle
+        title=""
+        @setFullscreen="fullscreen = !fullscreen"
+      ></modalTitle>
+    </template>
     <div class="patrol">
       <div class="ele-body">
         <el-card shadow="never">
@@ -43,408 +51,411 @@
   </el-dialog>
 </template>
 <script>
-import {
-  getWorkOrderPage,
-  getWordOrderDetail
-} from '@/api/maintenance/patrol_maintenance';
-import { getWorkOrderList } from '@/api/maintenance/repair';
-export default {
-  data() {
-    return {
-      visible: false,
-      activeComp: '1',
-      tabOptions: [
-        { key: '1', name: '巡点检工单' },
-        { key: '2', name: '保养工单' },
-        { key: '3', name: '维修工单' }
-      ],
-      current: {},
-      patrolColumns: [
-        {
-          columnKey: 'index',
-          label: '序号',
-          type: 'index',
-          width: 55,
-          align: 'center',
-          showOverflowTooltip: true,
-          fixed: 'left'
-        },
-        {
-          columnKey: 'code',
-          slot: 'code',
-          prop: 'code',
-          label: '工单单号',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 140
-        },
-        {
-          prop: 'planCode',
-          label: '计划单号',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 140
-        },
-        {
-          prop: 'planName',
-          label: '巡点检名称',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 120
-        },
-        {
-          prop: 'executeGroupName',
-          label: '巡点检部门',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 120
-        },
-        {
-          prop: 'executeUserName',
-          label: '巡点检人员',
-          align: 'center',
-          showOverflowTooltip: true
-        },
-        {
-          prop: 'ruleName',
-          label: '规则名称',
-          align: 'center',
-          showOverflowTooltip: true
-        },
-        {
-          prop: 'createTime',
-          label: '工单生成时间',
-          align: 'center',
-          // sortable: true,
-          showOverflowTooltip: true,
-          width: 170
-        },
-        {
-          prop: 'acceptTime',
-          label: '开工时间',
-          align: 'center',
-          showOverflowTooltip: true
-        },
-        {
-          prop: 'finishTime',
-          label: '报工时间',
-          align: 'center',
-          showOverflowTooltip: true
-        },
-        {
-          columnKey: 'orderHour',
-          label: '实际工时(分钟)',
-          align: 'center',
-          resizable: false,
-          showOverflowTooltip: true,
-          minWidth: 120,
-          formatter: (row) => {
-            if (row.finishTime && row.acceptTime) {
-              return parseInt(
-                (new Date(row.finishTime).getTime() -
-                  new Date(row.acceptTime).getTime()) /
-                  60000
-              );
+  import modalTitle from '@/components/modalTitle.vue';
+  import {
+    getWorkOrderPage,
+    getWordOrderDetail
+  } from '@/api/maintenance/patrol_maintenance';
+  import { getWorkOrderList } from '@/api/maintenance/repair';
+  export default {
+    components: { modalTitle },
+    data() {
+      return {
+        fullscreen: false,
+        visible: false,
+        activeComp: '1',
+        tabOptions: [
+          { key: '1', name: '巡点检工单' },
+          { key: '2', name: '保养工单' },
+          { key: '3', name: '维修工单' }
+        ],
+        current: {},
+        patrolColumns: [
+          {
+            columnKey: 'index',
+            label: '序号',
+            type: 'index',
+            width: 55,
+            align: 'center',
+            showOverflowTooltip: true,
+            fixed: 'left'
+          },
+          {
+            columnKey: 'code',
+            slot: 'code',
+            prop: 'code',
+            label: '工单单号',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 140
+          },
+          {
+            prop: 'planCode',
+            label: '计划单号',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 140
+          },
+          {
+            prop: 'planName',
+            label: '巡点检名称',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 120
+          },
+          {
+            prop: 'executeGroupName',
+            label: '巡点检部门',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 120
+          },
+          {
+            prop: 'executeUserName',
+            label: '巡点检人员',
+            align: 'center',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'ruleName',
+            label: '规则名称',
+            align: 'center',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'createTime',
+            label: '工单生成时间',
+            align: 'center',
+            // sortable: true,
+            showOverflowTooltip: true,
+            width: 170
+          },
+          {
+            prop: 'acceptTime',
+            label: '开工时间',
+            align: 'center',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'finishTime',
+            label: '报工时间',
+            align: 'center',
+            showOverflowTooltip: true
+          },
+          {
+            columnKey: 'orderHour',
+            label: '实际工时(分钟)',
+            align: 'center',
+            resizable: false,
+            showOverflowTooltip: true,
+            minWidth: 120,
+            formatter: (row) => {
+              if (row.finishTime && row.acceptTime) {
+                return parseInt(
+                  (new Date(row.finishTime).getTime() -
+                    new Date(row.acceptTime).getTime()) /
+                    60000
+                );
+              }
             }
-          }
-        },
-        {
-          prop: 'orderStatus',
-          label: '状态',
-          align: 'center',
-          showOverflowTooltip: true,
-          formatter: (row) => {
-            return {
-              0: '待接收',
-              1: '已接收',
-              2: '执行中',
-              3: '已完成'
-            }[row.orderStatus];
-          }
-        },
-        {
-          prop: 'acceptanceStatus',
-          label: '执行结果',
-          align: 'center',
-          showOverflowTooltip: true,
-          formatter(row) {
-            return { 0: '缺陷', 1: '正常' }[row.isAbnormal];
-          }
-        }
-      ],
-      equipmentColumns: [
-        {
-          columnKey: 'index',
-          label: '序号',
-          type: 'index',
-          width: 55,
-          align: 'center',
-          showOverflowTooltip: true,
-          fixed: 'left'
-        },
-        {
-          columnKey: 'code',
-          slot: 'code',
-          prop: 'code',
-          label: '工单单号',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 140
-        },
-        {
-          prop: 'planCode',
-          label: '计划单号',
-          align: 'center',
-          showOverflowTooltip: true,
-          slot: 'planCode',
-          minWidth: 140
-        },
-        {
-          prop: 'planName',
-          label: '保养名称',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 120
-        },
-        {
-          prop: 'executeGroupName',
-          label: '保养部门',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 120
-        },
-        {
-          prop: 'executeUserName',
-          label: '保养人员',
-          align: 'center',
-          showOverflowTooltip: true
-        },
-        {
-          prop: 'ruleName',
-          label: '规则名称',
-          align: 'center',
-          showOverflowTooltip: true
-        },
-        {
-          prop: 'createTime',
-          label: '工单生成时间',
-          // sortable: true,
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 170
-        },
-        {
-          prop: 'acceptTime',
-          label: '开工时间',
-          align: 'center',
-          showOverflowTooltip: true
-        },
-        {
-          prop: 'finishTime',
-          label: '报工时间',
-          align: 'center',
-          showOverflowTooltip: true
-        },
-        {
-          columnKey: 'orderHour',
-          label: '实际工时(分钟)',
-          align: 'center',
-          resizable: false,
-          showOverflowTooltip: true,
-          minWidth: 120,
-          formatter: (row) => {
-            if (row.finishTime && row.acceptTime) {
-              return parseInt(
-                (new Date(row.finishTime).getTime() -
-                  new Date(row.acceptTime).getTime()) /
-                  60000
-              );
+          },
+          {
+            prop: 'orderStatus',
+            label: '状态',
+            align: 'center',
+            showOverflowTooltip: true,
+            formatter: (row) => {
+              return {
+                0: '待接收',
+                1: '已接收',
+                2: '执行中',
+                3: '已完成'
+              }[row.orderStatus];
+            }
+          },
+          {
+            prop: 'acceptanceStatus',
+            label: '执行结果',
+            align: 'center',
+            showOverflowTooltip: true,
+            formatter(row) {
+              return { 0: '缺陷', 1: '正常' }[row.isAbnormal];
             }
           }
-        },
-        {
-          prop: 'orderStatus',
-          label: '状态',
-          align: 'center',
-          showOverflowTooltip: true,
-          formatter: (row) => {
-            return {
-              0: '待接收',
-              1: '已接收',
-              2: '执行中',
-              3: '已完成'
-            }[row.orderStatus];
-          }
-        },
-        {
-          prop: 'executeResult',
-          label: '执行结果',
-          align: 'center',
-          showOverflowTooltip: true,
-          formatter(row) {
-            return { 0: '缺陷', 1: '正常' }[row.isAbnormal];
+        ],
+        equipmentColumns: [
+          {
+            columnKey: 'index',
+            label: '序号',
+            type: 'index',
+            width: 55,
+            align: 'center',
+            showOverflowTooltip: true,
+            fixed: 'left'
+          },
+          {
+            columnKey: 'code',
+            slot: 'code',
+            prop: 'code',
+            label: '工单单号',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 140
+          },
+          {
+            prop: 'planCode',
+            label: '计划单号',
+            align: 'center',
+            showOverflowTooltip: true,
+            slot: 'planCode',
+            minWidth: 140
+          },
+          {
+            prop: 'planName',
+            label: '保养名称',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 120
+          },
+          {
+            prop: 'executeGroupName',
+            label: '保养部门',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 120
+          },
+          {
+            prop: 'executeUserName',
+            label: '保养人员',
+            align: 'center',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'ruleName',
+            label: '规则名称',
+            align: 'center',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'createTime',
+            label: '工单生成时间',
+            // sortable: true,
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 170
+          },
+          {
+            prop: 'acceptTime',
+            label: '开工时间',
+            align: 'center',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'finishTime',
+            label: '报工时间',
+            align: 'center',
+            showOverflowTooltip: true
+          },
+          {
+            columnKey: 'orderHour',
+            label: '实际工时(分钟)',
+            align: 'center',
+            resizable: false,
+            showOverflowTooltip: true,
+            minWidth: 120,
+            formatter: (row) => {
+              if (row.finishTime && row.acceptTime) {
+                return parseInt(
+                  (new Date(row.finishTime).getTime() -
+                    new Date(row.acceptTime).getTime()) /
+                    60000
+                );
+              }
+            }
+          },
+          {
+            prop: 'orderStatus',
+            label: '状态',
+            align: 'center',
+            showOverflowTooltip: true,
+            formatter: (row) => {
+              return {
+                0: '待接收',
+                1: '已接收',
+                2: '执行中',
+                3: '已完成'
+              }[row.orderStatus];
+            }
+          },
+          {
+            prop: 'executeResult',
+            label: '执行结果',
+            align: 'center',
+            showOverflowTooltip: true,
+            formatter(row) {
+              return { 0: '缺陷', 1: '正常' }[row.isAbnormal];
+            }
           }
-        }
-      ],
-      repairColumns: [
-        {
-          columnKey: 'index',
-          label: '序号',
-          type: 'index',
-          width: 55,
-          align: 'center',
-          showOverflowTooltip: true,
-          fixed: 'left'
-        },
-        {
-          prop: 'code',
-          slot: 'code',
-          label: '工单编号',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 150
-        },
-        {
-          prop: 'planCode',
-          // label: '关联单号',
-          label: '计划单号',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 110
-        },
-        {
-          prop: 'planName',
-          label: '维修名称',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 110
-        },
-        {
-          prop: 'substanceDetailVO.name',
-          label: '设备名称',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 110
-        },
-        {
-          prop: 'substanceDetailVO.fixCode',
-          label: '固资编码',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 110
-        },
-        {
-          prop: 'substanceDetailVO.codeNumber',
-          label: '设备编号',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 110
-        },
-        {
-          prop: 'executeUserName',
-          label: '执行人',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 110
-        },
-        {
-          prop: 'acceptTime',
-          label: '开始时间',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 110
-        },
-        {
-          prop: 'finishTime',
-          label: '结束时间',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 110
-        },
-        {
-          prop: 'planFinishTime',
-          label: '计划完成时间',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 110
-        },
-        {
-          columnKey: 'orderHour',
-          label: '实际工时(分钟)',
-          align: 'center',
-          resizable: false,
-          showOverflowTooltip: true,
-          minWidth: 120,
-          formatter: (row) => {
-            if (row.finishTime && row.acceptTime) {
-              return parseInt(
-                (new Date(row.finishTime).getTime() -
-                  new Date(row.acceptTime).getTime()) /
-                  60000
-              );
+        ],
+        repairColumns: [
+          {
+            columnKey: 'index',
+            label: '序号',
+            type: 'index',
+            width: 55,
+            align: 'center',
+            showOverflowTooltip: true,
+            fixed: 'left'
+          },
+          {
+            prop: 'code',
+            slot: 'code',
+            label: '工单编号',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 150
+          },
+          {
+            prop: 'planCode',
+            // label: '关联单号',
+            label: '计划单号',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 110
+          },
+          {
+            prop: 'planName',
+            label: '维修名称',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 110
+          },
+          {
+            prop: 'substanceDetailVO.name',
+            label: '设备名称',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 110
+          },
+          {
+            prop: 'substanceDetailVO.fixCode',
+            label: '固资编码',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 110
+          },
+          {
+            prop: 'substanceDetailVO.codeNumber',
+            label: '设备编号',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 110
+          },
+          {
+            prop: 'executeUserName',
+            label: '执行人',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 110
+          },
+          {
+            prop: 'acceptTime',
+            label: '开始时间',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 110
+          },
+          {
+            prop: 'finishTime',
+            label: '结束时间',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 110
+          },
+          {
+            prop: 'planFinishTime',
+            label: '计划完成时间',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 110
+          },
+          {
+            columnKey: 'orderHour',
+            label: '实际工时(分钟)',
+            align: 'center',
+            resizable: false,
+            showOverflowTooltip: true,
+            minWidth: 120,
+            formatter: (row) => {
+              if (row.finishTime && row.acceptTime) {
+                return parseInt(
+                  (new Date(row.finishTime).getTime() -
+                    new Date(row.acceptTime).getTime()) /
+                    60000
+                );
+              }
             }
           }
-        }
-      ]
-    };
-  },
-  methods: {
-    async open() {
-      this.visible = true;
-    },
-    /* 表格数据源 */
-    datasource({ page, limit, where }) {
-      where.type = this.activeComp;
-      let api = this.activeComp == 3 ? getWorkOrderList : getWorkOrderPage;
-      return api({
-        pageNum: page,
-        size: limit,
-        ...where
-      });
-    },
-    columns() {
-      return this.activeComp == 1
-        ? this.patrolColumns
-        : this.activeComp == 2
-        ? this.equipmentColumns
-        : this.repairColumns;
+        ]
+      };
     },
-    activeChange(key) {
-      this.activeComp = key;
-      this.$refs.table.reload();
-    },
-    async add() {
-      let data = null;
-      let deviceList = [];
-      if (!this.current.id) {
-        this.$message.error('请至少选择一条数据');
-        return;
-      }
-      if (this.activeComp == 3) {
-        data = this.current;
-        deviceList[0] = data.substanceDetailVO;
-      } else {
-        data = await getWordOrderDetail(this.current.id);
-        deviceList = data.deviceList.map((item) => {
-          return item.substance;
+    methods: {
+      async open() {
+        this.visible = true;
+      },
+      /* 表格数据源 */
+      datasource({ page, limit, where }) {
+        where.type = this.activeComp;
+        let api = this.activeComp == 3 ? getWorkOrderList : getWorkOrderPage;
+        return api({
+          pageNum: page,
+          size: limit,
+          ...where
         });
+      },
+      columns() {
+        return this.activeComp == 1
+          ? this.patrolColumns
+          : this.activeComp == 2
+          ? this.equipmentColumns
+          : this.repairColumns;
+      },
+      activeChange(key) {
+        this.activeComp = key;
+        this.$refs.table.reload();
+      },
+      async add() {
+        let data = null;
+        let deviceList = [];
+        if (!this.current.id) {
+          this.$message.error('请至少选择一条数据');
+          return;
+        }
+        if (this.activeComp == 3) {
+          data = this.current;
+          deviceList[0] = data.substanceDetailVO;
+        } else {
+          data = await getWordOrderDetail(this.current.id);
+          deviceList = data.deviceList.map((item) => {
+            return item.substance;
+          });
+        }
+        data['deviceList'] = deviceList;
+        this.$emit('open', data);
+        this.visible = false;
       }
-      data['deviceList']=deviceList
-      this.$emit('open', data);
-      this.visible = false;
     }
-  }
-};
+  };
 </script>
 <style lang="scss" scoped>
-::v-deep .el-card__body {
-  padding-top: 0;
-  padding-left: 0;
-}
-.main {
-  padding-left: 17px;
-  .plan {
-    padding-top: 15px;
+  ::v-deep .el-card__body {
+    padding-top: 0;
+    padding-left: 0;
+  }
+  .main {
+    padding-left: 17px;
+    .plan {
+      padding-top: 15px;
+    }
   }
-}
 </style>

+ 12 - 2
src/views/stocktaking/plan/components/AddDialog.vue

@@ -5,8 +5,15 @@
     title="临时盘点计划"
     :before-close="cancel"
     width="80vw"
-    class="temporary-dialog"
+    :fullscreen="fullscreen"
+    class="fullscreen"
   >
+    <template slot="title">
+      <modalTitle
+        title="临时盘点计划"
+        @setFullscreen="fullscreen = !fullscreen"
+      ></modalTitle>
+    </template>
     <el-form :model="formData" ref="formRef" :rules="rules" label-width="110px">
       <el-row :gutter="20">
         <!--        <el-col :span="8">
@@ -309,6 +316,7 @@
 </template>
 
 <script>
+  import modalTitle from '@/components/modalTitle.vue';
   // import { isOrNot } from '@/utils/dict/common'
   // import { handleSave, getRuleNameList } from '@/api/stockManagement/stocking'
   // import { warehouseListValuable } from '@/api/stockManagement/warehouseDefinition'
@@ -329,10 +337,12 @@
     components: {
       // selectTree,
       Assets,
-      AssetsInWarehouse
+      AssetsInWarehouse,
+      modalTitle
     },
     data() {
       return {
+        fullscreen: false,
         // isOrNot,
         // emergencyState,
         // warehousingType,

+ 12 - 2
src/views/stocktaking/plan/components/addInventoryDialog.vue

@@ -7,7 +7,14 @@
     :close-on-press-escape="false"
     v-loading="addDialogLoading"
     width="80%"
-  >
+    :fullscreen="fullscreen"
+    class="fullscreen"
+    ><template slot="title">
+      <modalTitle
+        :title="dialogTile"
+        @setFullscreen="fullscreen = !fullscreen"
+      ></modalTitle>
+    </template>
     <HeaderTitle title="基本信息" size="16px"></HeaderTitle>
     <el-form
       :model="addForm"
@@ -305,6 +312,7 @@
 </template>
 
 <script>
+  import modalTitle from '@/components/modalTitle.vue';
   import { getTreeByGroup } from '@/api/classifyManage';
   import selectType from './selectType.vue';
   import { getCode } from '@/api/codeManagement';
@@ -339,10 +347,12 @@
     },
     components: {
       deptSelect,
-      selectType
+      selectType,
+      modalTitle
     },
     data() {
       return {
+        fullscreen: false,
         visibleDialog: false,
         type: 2, // 盘点类型 2仓储 4资产
         dimension: 1, // 盘点维度1物品 2批次

+ 11 - 1
src/views/stocktaking/plan/components/assignDialog.vue

@@ -6,7 +6,15 @@
       :visible="visibleDialog"
       :before-close="closeWindows"
       width="80vw"
+      :fullscreen="fullscreen"
+      class="fullscreen"
     >
+      <template slot="title">
+        <modalTitle
+          title="指派工单"
+          @setFullscreen="fullscreen = !fullscreen"
+        ></modalTitle>
+      </template>
       <div class="search_box">
         <el-form :model="formData" ref="formRef" label-width="110px">
           <el-row :gutter="15">
@@ -156,6 +164,7 @@
 </template>
 
 <script>
+  import modalTitle from '@/components/modalTitle.vue';
   import { getInventoryPlanDetailById } from '@/api/inventory';
   import deptSelect from '@/components/CommomSelect/new-dept-select.vue';
   import { getUserPage } from '@/api/system/organization';
@@ -182,9 +191,10 @@
         }
       }
     },
-    components: { deptSelect },
+    components: { deptSelect, modalTitle },
     data() {
       return {
+        fullscreen: false,
         formData: {},
         executorList: [],
         factoryList: [],

+ 11 - 1
src/views/stocktaking/plan/components/selectType.vue

@@ -6,7 +6,15 @@
       :visible="visibleDialog"
       :before-close="closeWindows"
       width="80vw"
+      :fullscreen="fullscreen"
+      class="fullscreen"
     >
+      <template slot="title">
+        <modalTitle
+          title="产品信息"
+          @setFullscreen="fullscreen = !fullscreen"
+        ></modalTitle>
+      </template>
       <div class="search_box">
         <el-row :gutter="15">
           <!-- <el-col :span="6">
@@ -165,6 +173,7 @@
 </template>
 
 <script>
+  import modalTitle from '@/components/modalTitle.vue';
   import AssetTree from './assetTree.vue';
   import { getProductList, getBatchList } from '@/api/ruleManagement/plan';
   import { fieldModel } from '@/api/codeManagement';
@@ -208,9 +217,10 @@
         deep: true
       }
     },
-    components: { AssetTree },
+    components: { AssetTree, modalTitle },
     data() {
       return {
+        fullscreen: false,
         factoryList: [],
         factoryId: '',
         value: '',

+ 277 - 251
src/views/warning/warningSetting/components/addWarningDialog.vue

@@ -6,7 +6,14 @@
     :close-on-click-modal="false"
     :close-on-press-escape="false"
     :before-close="handleClose"
-  >
+    :fullscreen="fullscreen"
+    class="fullscreen"
+    ><template slot="title">
+      <modalTitle
+        :title="dialogTitle"
+        @setFullscreen="fullscreen = !fullscreen"
+      ></modalTitle>
+    </template>
     <el-tabs
       type="border-card"
       v-model="tabActiveName"
@@ -23,13 +30,22 @@
           <el-row>
             <el-col :span="10">
               <el-form-item label="告警级别:" prop="alarmLevel">
-				<DictSelection dictName="告警级别" clearable v-model="baseInfoForm.alarmLevel" style="width: 80%">
-				</DictSelection>
+                <DictSelection
+                  dictName="告警级别"
+                  clearable
+                  v-model="baseInfoForm.alarmLevel"
+                  style="width: 80%"
+                >
+                </DictSelection>
               </el-form-item>
             </el-col>
             <el-col :span="12">
-              <el-form-item label="告警设备类型:" prop="alarmEquipmentName" style="width: 90%">
-				 <equipmentSelect v-model="baseInfoForm.alarmEquipmentName"/>
+              <el-form-item
+                label="告警设备类型:"
+                prop="alarmEquipmentName"
+                style="width: 90%"
+              >
+                <equipmentSelect v-model="baseInfoForm.alarmEquipmentName" />
               </el-form-item>
             </el-col>
           </el-row>
@@ -122,8 +138,12 @@
                 </el-table-column>
                 <el-table-column label="">
                   <template slot-scope="scope">
-					<DictSelection dictName="告警触发条件" clearable v-model="scope.row.alarmCondition">
-					</DictSelection>
+                    <DictSelection
+                      dictName="告警触发条件"
+                      clearable
+                      v-model="scope.row.alarmCondition"
+                    >
+                    </DictSelection>
                   </template>
                 </el-table-column>
                 <el-table-column label="">
@@ -169,8 +189,12 @@
           <el-row>
             <el-col :span="12">
               <el-form-item label="告警方式:">
-				  <DictSelection dictName="告警方式" clearable v-model="baseInfoForm.alarmMode">
-				  </DictSelection>
+                <DictSelection
+                  dictName="告警方式"
+                  clearable
+                  v-model="baseInfoForm.alarmMode"
+                >
+                </DictSelection>
               </el-form-item>
             </el-col>
           </el-row>
@@ -203,12 +227,12 @@
                 v-model="scope.row.alarmNotifierId"
                 size="small"
               >
-				<el-option
-				  v-for="item in alarmNotifierList"
-				  :key="item.id"
-				  :value="item.id"
-				  :label="item.name"
-				></el-option>
+                <el-option
+                  v-for="item in alarmNotifierList"
+                  :key="item.id"
+                  :value="item.id"
+                  :label="item.name"
+                ></el-option>
               </el-select>
             </template>
           </el-table-column>
@@ -261,258 +285,260 @@
 </template>
 
 <script>
-	import equipmentSelect from '@/components/CommomSelect/equipment-select.vue';
-	import { getUserPage } from '@/api/system/organization';
-export default {
-  components: { equipmentSelect  },
-  props: {
-    equipmentList: {
-      type: Array,
-      default: () => {
-        return []
+  import modalTitle from '@/components/modalTitle.vue';
+  import equipmentSelect from '@/components/CommomSelect/equipment-select.vue';
+  import { getUserPage } from '@/api/system/organization';
+  export default {
+    components: { equipmentSelect, modalTitle },
+    props: {
+      equipmentList: {
+        type: Array,
+        default: () => {
+          return [];
+        }
+      },
+      viewForm: {
+        type: Object,
+        default: () => {
+          return {};
+        }
+      },
+      dialogTitle: {
+        type: String,
+        default: ''
       }
     },
-    viewForm: {
-      type: Object,
-      default: () => {
-        return {}
+    data() {
+      return {
+        fullscreen: false,
+        addWarningDialog: false,
+        tabActiveName: 'baseInfo',
+        saveLoading: false,
+        baseInfoForm: {
+          alarmLevel: '', // 告警级别
+          alarmEquipmentId: '', // 告警设备类型id
+          alarmEquipmentName: '', // 告警设备类型name
+          alarmName: '', // 告警名称
+          status: false, // 状态
+          isCreate: false, // 是否生成保修工单
+          alarmDescribe: '', // 告警描述
+          alarmTrigger: 0, // 告警触发条件类型选择
+          alarmMode: '', // 告警方式
+          alarmTriggerList: [{}], // 基本信息触发条件表格
+          alarmNoticeSetList: [
+            {
+              alarmNotifierId: '', // 告警通知人id
+              alarmNotifierName: '', // 告警通知人name
+              alarmNotifierMailbox: '', // 邮箱
+              alarmNotifierPhone: '', // 电话
+              mail: false, // 邮件
+              shortMessage: false, // 短信
+              system: false // 系统
+            }
+          ] // 通知设置表格
+        },
+        baseInfoFormRules: {
+          alarmLevel: [
+            { required: true, message: '请选择告警级别', trigger: 'change' }
+          ],
+          alarmEquipmentName: [
+            { required: true, message: '请选择告警设备类型', trigger: 'change' }
+          ],
+          alarmName: [
+            { required: true, message: '请输入告警名称', trigger: 'blur' }
+          ],
+          alarmTrigger: [
+            { required: true, message: '请选择触发条件', trigger: 'change' }
+          ]
+        },
+        alarmNotifierList: [], // 通知人用户列表
+        temperatureList: []
+      };
+    },
+    watch: {
+      viewForm(val) {
+        console.log('shujval', val);
+        this.baseInfoForm = val;
+        this.getTemperatureList(val.alarmEquipmentId);
       }
     },
-    dialogTitle: {
-      type: String,
-      default: ''
-    }
-  },
-  data () {
-    return {
-      addWarningDialog: false,
-      tabActiveName: 'baseInfo',
-      saveLoading: false,
-      baseInfoForm: {
-        alarmLevel: '', // 告警级别
-        alarmEquipmentId: '', // 告警设备类型id
-        alarmEquipmentName: '', // 告警设备类型name
-        alarmName: '', // 告警名称
-        status: false, // 状态
-        isCreate: false, // 是否生成保修工单
-        alarmDescribe: '', // 告警描述
-        alarmTrigger: 0, // 告警触发条件类型选择
-        alarmMode: '', // 告警方式
-        alarmTriggerList: [{}], // 基本信息触发条件表格
-        alarmNoticeSetList: [
-          {
-            alarmNotifierId: '', // 告警通知人id
-            alarmNotifierName: '', // 告警通知人name
-            alarmNotifierMailbox: '', // 邮箱
-            alarmNotifierPhone: '', // 电话
-            mail: false, // 邮件
-            shortMessage: false, // 短信
-            system: false // 系统
+    methods: {
+      getTemperatureList(val) {
+        warningSetting.getAlarmTermType(val).then((res) => {
+          if (res?.success) {
+            this.temperatureList = res.data;
           }
-        ] // 通知设置表格
-      },
-      baseInfoFormRules: {
-        alarmLevel: [
-          { required: true, message: '请选择告警级别', trigger: 'change' }
-        ],
-        alarmEquipmentName: [
-          { required: true, message: '请选择告警设备类型', trigger: 'change' }
-        ],
-        alarmName: [
-          { required: true, message: '请输入告警名称', trigger: 'blur' }
-        ],
-        alarmTrigger: [
-          { required: true, message: '请选择触发条件', trigger: 'change' }
-        ]
+        });
       },
-      alarmNotifierList: [], // 通知人用户列表
-      temperatureList: [],
-    }
-  },
-  watch: {
-    viewForm (val) {
-      console.log('shujval', val)
-      this.baseInfoForm = val
-      this.getTemperatureList(val.alarmEquipmentId)
-    }
-  },
-  methods: {
-    getTemperatureList (val) {
-      warningSetting.getAlarmTermType(val).then(res => {
-        if (res?.success) {
-          this.temperatureList = res.data
-        }
-      })
-    },
 
-    // 告警设备类型变更
-    async handleEquipmentChange (val) {
-      this.baseInfoForm.alarmEquipmentId = val
-      warningSetting
-        .getAlarmTermType(this.baseInfoForm.alarmEquipmentId)
-        .then(res => {
-          if (res?.success) {
-            this.temperatureList = res.data
-            console.log('列表数据', this.temperatureList)
-            this.baseInfoForm.alarmTriggerList.forEach(item => {
-              if (item.alarmType) {
-                item.alarmType = ''
-              }
-            })
-          }
-        })
-        .catch(err => {
-          this.temperatureList = []
-          this.baseInfoForm.alarmTriggerList.forEach(item => {
-            if (item.alarmType) {
-              item.alarmType = ''
+      // 告警设备类型变更
+      async handleEquipmentChange(val) {
+        this.baseInfoForm.alarmEquipmentId = val;
+        warningSetting
+          .getAlarmTermType(this.baseInfoForm.alarmEquipmentId)
+          .then((res) => {
+            if (res?.success) {
+              this.temperatureList = res.data;
+              console.log('列表数据', this.temperatureList);
+              this.baseInfoForm.alarmTriggerList.forEach((item) => {
+                if (item.alarmType) {
+                  item.alarmType = '';
+                }
+              });
             }
           })
-        })
-    },
-    // 获取通知人列表数据
-	async getUserList() {
-	  try {
-	    let data = { pageNum: 1, size: -1 };
-	    const res = await getUserPage(data);
-	    this.alarmNotifierList = res.list;
-	  } catch (error) {}
-	},
-	
-    // tab栏切换
-    handleTabClick (tab) {
-      // 获取通知人下拉数据
-      if (tab.name === 'notice') {
-        this.getUserList()
-      }
-    },
-    // 关闭新增弹窗
-    handleClose () {
-      this.addWarningDialog = false
-      this._resetDialogInfo()
-    },
-    // 增加触发条件
-    handleAddTriggerCondition () {
-      this.baseInfoForm.alarmTriggerList.push({})
-    },
-    // 删除触发条件
-    handleDeleteTriggerCondition (index) {
-      this.baseInfoForm.alarmTriggerList.splice(index, 1)
-    },
-    // 通知设置 - 添加表格一行
-    handleAddNoticeRow () {
-      this.baseInfoForm.alarmNoticeSetList.push({
-        alarmNotifierId: '', // 告警通知人id
-        alarmNotifierName: '', // 告警通知人name
-        alarmNotifierMailbox: '', // 邮箱
-        alarmNotifierPhone: '', // 电话
-        mail: false, // 邮件
-        shortMessage: false, // 短信
-        system: false // 系统
-      })
-    },
-    // 通知设置 - 删除表格一行
-    handleDeleteNoticeRow (index) {
-      this.baseInfoForm.alarmNoticeSetList.splice(index, 1)
-    },
-    // 验证手机号
-    checkPhone (index, phone) {
-      const phoneReg = /^1[345789]\d{9}$/
-      if (phone && !phoneReg.test(phone)) {
-        this.baseInfoForm.alarmNoticeSetList[index].alarmNotifierPhone = ''
-        return this.$message.error('手机号码格式错误,请重新输入!')
-      }
-    },
-    // 验证邮箱
-    checkMailbox (index, mailbox) {
-      const mailReg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/
-      if (mailbox && !mailReg.test(mailbox)) {
-        this.baseInfoForm.alarmNoticeSetList[index].alarmNotifierMailbox = ''
-        return this.$message.error('邮箱格式错误,请重新输入!')
-      }
-    },
-    // 保存
-    async saveWarningSetting () {
-      this.$refs.baseInfoFormRef.validate(async valid => {
-        if (valid) {
-          try {
-            this.saveLoading = true
-            const res = await warningSetting.saveWarningSetting(
-              this.baseInfoForm
-            )
-            // console.log('新增告警结果:', res)
-            this.addWarningDialog = false
-            this._resetDialogInfo()
-            this.saveLoading = false
-            this.$emit('refreshList')
-            this.$message.success('新增成功!')
-          } catch (error) {
-            this.saveLoading = false
-          }
+          .catch((err) => {
+            this.temperatureList = [];
+            this.baseInfoForm.alarmTriggerList.forEach((item) => {
+              if (item.alarmType) {
+                item.alarmType = '';
+              }
+            });
+          });
+      },
+      // 获取通知人列表数据
+      async getUserList() {
+        try {
+          let data = { pageNum: 1, size: -1 };
+          const res = await getUserPage(data);
+          this.alarmNotifierList = res.list;
+        } catch (error) {}
+      },
+
+      // tab栏切换
+      handleTabClick(tab) {
+        // 获取通知人下拉数据
+        if (tab.name === 'notice') {
+          this.getUserList();
         }
-      })
-    },
-    // 重置弹窗信息
-    _resetDialogInfo () {
-      this.baseInfoForm = {
-        alarmLevel: '', // 告警级别
-        alarmEquipmentId: '', // 告警设备类型id
-        alarmEquipmentName: '', // 告警设备类型name
-        alarmName: '', // 告警名称
-        status: false, // 状态
-        isCreate: false, // 是否生成保修工单
-        alarmDescribe: '', // 告警描述
-        alarmTrigger: 0, // 告警触发条件类型选择
-        alarmMode: '', // 告警方式
-        alarmTriggerList: [{}], // 基本信息触发条件表格
-        alarmNoticeSetList: [
-          {
-            alarmNotifierId: '', // 告警通知人id
-            alarmNotifierName: '', // 告警通知人name
-            alarmNotifierMailbox: '', // 邮箱
-            alarmNotifierPhone: '', // 电话
-            mail: false, // 邮件
-            shortMessage: false, // 短信
-            system: false // 系统
+      },
+      // 关闭新增弹窗
+      handleClose() {
+        this.addWarningDialog = false;
+        this._resetDialogInfo();
+      },
+      // 增加触发条件
+      handleAddTriggerCondition() {
+        this.baseInfoForm.alarmTriggerList.push({});
+      },
+      // 删除触发条件
+      handleDeleteTriggerCondition(index) {
+        this.baseInfoForm.alarmTriggerList.splice(index, 1);
+      },
+      // 通知设置 - 添加表格一行
+      handleAddNoticeRow() {
+        this.baseInfoForm.alarmNoticeSetList.push({
+          alarmNotifierId: '', // 告警通知人id
+          alarmNotifierName: '', // 告警通知人name
+          alarmNotifierMailbox: '', // 邮箱
+          alarmNotifierPhone: '', // 电话
+          mail: false, // 邮件
+          shortMessage: false, // 短信
+          system: false // 系统
+        });
+      },
+      // 通知设置 - 删除表格一行
+      handleDeleteNoticeRow(index) {
+        this.baseInfoForm.alarmNoticeSetList.splice(index, 1);
+      },
+      // 验证手机号
+      checkPhone(index, phone) {
+        const phoneReg = /^1[345789]\d{9}$/;
+        if (phone && !phoneReg.test(phone)) {
+          this.baseInfoForm.alarmNoticeSetList[index].alarmNotifierPhone = '';
+          return this.$message.error('手机号码格式错误,请重新输入!');
+        }
+      },
+      // 验证邮箱
+      checkMailbox(index, mailbox) {
+        const mailReg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/;
+        if (mailbox && !mailReg.test(mailbox)) {
+          this.baseInfoForm.alarmNoticeSetList[index].alarmNotifierMailbox = '';
+          return this.$message.error('邮箱格式错误,请重新输入!');
+        }
+      },
+      // 保存
+      async saveWarningSetting() {
+        this.$refs.baseInfoFormRef.validate(async (valid) => {
+          if (valid) {
+            try {
+              this.saveLoading = true;
+              const res = await warningSetting.saveWarningSetting(
+                this.baseInfoForm
+              );
+              // console.log('新增告警结果:', res)
+              this.addWarningDialog = false;
+              this._resetDialogInfo();
+              this.saveLoading = false;
+              this.$emit('refreshList');
+              this.$message.success('新增成功!');
+            } catch (error) {
+              this.saveLoading = false;
+            }
           }
-        ] // 通知设置表格
+        });
+      },
+      // 重置弹窗信息
+      _resetDialogInfo() {
+        this.baseInfoForm = {
+          alarmLevel: '', // 告警级别
+          alarmEquipmentId: '', // 告警设备类型id
+          alarmEquipmentName: '', // 告警设备类型name
+          alarmName: '', // 告警名称
+          status: false, // 状态
+          isCreate: false, // 是否生成保修工单
+          alarmDescribe: '', // 告警描述
+          alarmTrigger: 0, // 告警触发条件类型选择
+          alarmMode: '', // 告警方式
+          alarmTriggerList: [{}], // 基本信息触发条件表格
+          alarmNoticeSetList: [
+            {
+              alarmNotifierId: '', // 告警通知人id
+              alarmNotifierName: '', // 告警通知人name
+              alarmNotifierMailbox: '', // 邮箱
+              alarmNotifierPhone: '', // 电话
+              mail: false, // 邮件
+              shortMessage: false, // 短信
+              system: false // 系统
+            }
+          ] // 通知设置表格
+        };
+        this.tabActiveName = 'baseInfo';
+        this.$refs.baseInfoFormRef.resetFields();
       }
-      this.tabActiveName = 'baseInfo'
-      this.$refs.baseInfoFormRef.resetFields()
     }
-  }
-}
+  };
 </script>
 
 <style lang="scss" scoped>
-::v-deep .el-dialog__headerbtn .el-dialog__close {
-  color: #fff;
-  font-weight: 700;
-  font-size: 20px;
-}
-.table_wrapper {
-  padding-left: 120px;
-  padding-right: 8vw;
-  ::v-deep .el-table__header-wrapper {
-    display: none;
+  ::v-deep .el-dialog__headerbtn .el-dialog__close {
+    color: #fff;
+    font-weight: 700;
+    font-size: 20px;
+  }
+  .table_wrapper {
+    padding-left: 120px;
+    padding-right: 8vw;
+    ::v-deep .el-table__header-wrapper {
+      display: none;
+    }
+    ::v-deep .el-table .cell {
+      padding-left: 0;
+    }
+  }
+  .add_notice_table_row {
+    text-align: right;
+    padding-bottom: 8px;
+  }
+  .alarm_trigger_handler {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+  }
+  ::v-deep .el-form-item {
+    margin-bottom: 14px;
   }
-  ::v-deep .el-table .cell {
-    padding-left: 0;
+  ::v-deep .el-form-item__error {
+    padding-top: 0;
   }
-}
-.add_notice_table_row {
-  text-align: right;
-  padding-bottom: 8px;
-}
-.alarm_trigger_handler {
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-}
-::v-deep .el-form-item {
-  margin-bottom: 14px;
-}
-::v-deep .el-form-item__error {
-  padding-top: 0;
-}
 </style>