Jelajahi Sumber

Merge branch 'dev' of http://110.41.163.243:9980/kd-aiot/kd-aiot-frontend-eam into dev

lucw 8 bulan lalu
induk
melakukan
d324d9eba1

+ 9 - 0
src/api/maintenance/repair.js

@@ -52,6 +52,15 @@ export async function startExecuting(params) {
   }
   return Promise.reject(new Error(data.message));
 }
+ // 上报
+export async function reportWorkOrder(data) {
+  const res = await request.post(`/eam/workorder/reportWorkOrder`, data);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+
 
 // // 保存
 // export async function save (data) {

+ 40 - 0
src/api/system/file/index.js

@@ -14,6 +14,46 @@ export async function uploadFile(data) {
   return Promise.reject(new Error(res.data.message));
 }
 
+/**
+ * 导入文件 批量
+ * @param file 文件
+ */
+export async function importBatch(data, api, onUploadProgressCb, fileKeyName = 'file') {
+  const formData = new FormData();
+  
+  data.multiPartFiles.forEach((item) => {
+    formData.append(fileKeyName, item);
+  });
+  
+  Object.keys(data).forEach(key => {
+    if (key !== 'multiPartFiles') {
+      formData.append(key, data[key]);
+    }
+  });
+  
+  const res = await request.post(api, formData, {
+    onUploadProgress: onUploadProgressCb ? onUploadProgressCb : () => {}
+  });
+  if (res.data.code === '0') {
+    return res.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+/**
+ * 下载模板
+ */
+export async function downLoadTemplate(url,name) {
+  const res = await request.post(
+    url,
+    {},
+    {
+      responseType: 'blob',
+    }
+  );
+  console.log(res.data, '***********');
+  download(res.data, name);
+
+}
 /**
  * 上传 base64 文件
  * @param base64 文件数据

+ 43 - 11
src/components/addDoc/file-edit.vue

@@ -12,6 +12,15 @@
     :maxable="true"
     :resizable="true"
   >
+    <el-tabs
+      v-model="activeName"
+      type="card"
+      @tab-click="handleClick"
+      style="margin-bottom: 10px"
+    >
+      <el-tab-pane label="文档工作区" name="1"></el-tab-pane>
+      <el-tab-pane label="个人文档" name="2"></el-tab-pane>
+    </el-tabs>
     <el-form ref="form" :model="form" :rules="rules" label-width="82px">
       <el-row :gutter="15">
         <el-col :span="24">
@@ -139,6 +148,7 @@
         fileType: 0
       };
       return {
+        activeName: '1',
         rules: {
           businessCodeId: [
             { required: true, message: '请选择', trigger: 'blur' }
@@ -149,6 +159,8 @@
         },
         templateVisible: false,
         folderList: [],
+        allFolderList: [],
+        myFolderList: [],
         list: [],
         options: [],
         defaultForm,
@@ -172,19 +184,34 @@
       ...mapGetters(['user'])
     },
     async created() {
-      let query = {
+      this.allFolderList = await getDocTreeListAPI({
         type: 0,
         currentUserId: this.user.info.userId
-      };
-      this.folderList = await getDocTreeListAPI(query);
+      });
+      this.myFolderList = await getDocTreeListAPI({
+        type: 1,
+        currentUserId: this.user.info.userId
+      });
+      this.folderList = this.allFolderList;
       setFolderList(this.folderList); //权限过滤
     },
     methods: {
+      handleClick() {
+        this.form.directoryId = '';
+        this.form.businessCodeId = '';
+        this.form.codeType = '';
+        if (this.activeName == 2) {
+          this.folderList = this.myFolderList;
+        } else {
+          this.folderList = this.allFolderList;
+        }
+      },
       async getTreeCode() {
         let nodeData = {};
         await this.$nextTick(() => {
           // console.log(this.$refs,'this.$refs')
-          nodeData = this.$refs.cascaderRef&&this.$refs.cascaderRef.getCheckedNodes();
+          nodeData =
+            this.$refs.cascaderRef && this.$refs.cascaderRef.getCheckedNodes();
         });
         this.nodeData = {
           id: nodeData[0]?.data?.id,
@@ -222,13 +249,16 @@
         });
       },
       async typeChange(val) {
-        let data = await listParentId({
+        let obj = {
           pageNum: 1,
           size: 100,
-          parentId: val,
-          objId: this.nodeData?.id,
-          objParentId: this.nodeData?.parentId
-        });
+          parentId: val
+        };
+        if (this.activeName == 1) {
+          obj['objId'] = this.nodeData?.id;
+          obj['objParentId'] = this.nodeData?.parentId;
+        }
+        let data = await listParentId(obj);
         this.options = data.list.filter((item) => item.type == 2);
         this.form.businessCodeId = '';
       },
@@ -244,10 +274,12 @@
             return false;
           }
 
-          const data = {
+          let data = {
             ...this.form
           };
-
+          if (this.activeName == 2) {
+            data.fileType = 1;
+          }
           this.loading = true;
           fileSaveAPI(data)
             .then((msg) => {

+ 161 - 160
src/components/addDoc/file-table-listTemplate.vue

@@ -27,172 +27,173 @@
 </template>
 
 <script>
-import { filePageAPI } from './api';
-import browse from './browse.vue';
+  import { filePageAPI } from './api';
+  import browse from './browse.vue';
+  import { setFileUrl } from './util.js';
 
-export default {
-  components: { browse },
-  props: {
-    // 上级
-    parentData: {
-      type: Object,
-      default: () => {}
+  export default {
+    components: { browse },
+    props: {
+      // 上级
+      parentData: {
+        type: Object,
+        default: () => {}
+      },
+
+      disabledTableList: {
+        //已选择列表
+        default: () => []
+      }
     },
 
-    disabledTableList: {
-      //已选择列表
-      default: () => []
-    }
-  },
+    data() {
+      return {
+        selection: [],
+        columns: [
+          {
+            width: 45,
+            type: 'selection',
+            columnKey: 'selection',
+            align: 'center',
+            selectable: (row, index) => {
+              return !this.disabledTableList
+                .map((item) => item.id)
+                .includes(row.id);
+            }
+          },
+          {
+            label: '编码',
+            prop: 'code',
+            width: 180,
+            align: 'center',
+            fixed: 'left',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'name',
+            label: '文档名称',
+            align: 'center',
+            slot: 'name',
+            showOverflowTooltip: true,
+            minWidth: 200
+          },
+          {
+            prop: 'storagePath',
+            label: '文件名称',
+            align: 'center',
 
-  data() {
-    return {
-      selection: [],
-      columns: [
-        {
-          width: 45,
-          type: 'selection',
-          columnKey: 'selection',
-          align: 'center',
-          selectable: (row, index) => {
-            return !this.disabledTableList
-              .map((item) => item.id)
-              .includes(row.id);
-          }
-        },
-        {
-          label: '编码',
-          prop: 'code',
-          width: 180,
-          align: 'center',
-          fixed: 'left',
-          showOverflowTooltip: true
-        },
-        {
-          prop: 'name',
-          label: '文档名称',
-          align: 'center',
-          slot: 'name',
-          showOverflowTooltip: true,
-          minWidth: 200
-        },
-        {
-          prop: 'storagePath',
-          label: '文件名称',
-          align: 'center',
-
-          showOverflowTooltip: true,
-          minWidth: 200,
-          formatter: (_row, _column, cellValue) => {
-            return cellValue[0]?.name;
-          }
-        },
-        {
-          prop: 'version',
-          label: '版本',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 100
-        },
-        {
-          prop: 'checkOutUserName',
-          label: '检出人',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 100
-        },
-        {
-          prop: 'checkOutStatus',
-          label: '检出状态',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 100,
-          formatter: (_row, _column, cellValue) => {
-            return cellValue == 1 ? '已检出' : '';
+            showOverflowTooltip: true,
+            minWidth: 200,
+            formatter: (_row, _column, cellValue) => {
+              return cellValue[0]?.name;
+            }
+          },
+          {
+            prop: 'version',
+            label: '版本',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 100
+          },
+          {
+            prop: 'checkOutUserName',
+            label: '检出人',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 100
+          },
+          {
+            prop: 'checkOutStatus',
+            label: '检出状态',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 100,
+            formatter: (_row, _column, cellValue) => {
+              return cellValue == 1 ? '已检出' : '';
+            }
+          },
+          {
+            prop: 'checkOutTime',
+            label: '检出时间',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 160
+          },
+          {
+            prop: 'createUserName',
+            label: '创建人',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 100
+          },
+          {
+            prop: 'createTime',
+            label: '创建时间',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 160,
+            formatter: (_row, _column, cellValue) => {
+              return this.$util.toDateString(cellValue);
+            }
+          },
+          {
+            prop: 'updateUserName',
+            label: '修改人',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 100
+          },
+          {
+            prop: 'updateTime',
+            label: '修改时间',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 160
+          },
+          {
+            prop: 'sizeUnit',
+            label: '文档大小',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 100
+          },
+          {
+            columnKey: 'action',
+            label: '操作',
+            width: 150,
+            align: 'center',
+            resizable: false,
+            slot: 'action',
+            showOverflowTooltip: true,
+            fixed: 'right'
           }
-        },
-        {
-          prop: 'checkOutTime',
-          label: '检出时间',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 160
-        },
-        {
-          prop: 'createUserName',
-          label: '创建人',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 100
-        },
-        {
-          prop: 'createTime',
-          label: '创建时间',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 160,
-          formatter: (_row, _column, cellValue) => {
-            return this.$util.toDateString(cellValue);
-          }
-        },
-        {
-          prop: 'updateUserName',
-          label: '修改人',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 100
-        },
-        {
-          prop: 'updateTime',
-          label: '修改时间',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 160
-        },
-        {
-          prop: 'sizeUnit',
-          label: '文档大小',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 100
-        },
-        {
-          columnKey: 'action',
-          label: '操作',
-          width: 150,
-          align: 'center',
-          resizable: false,
-          slot: 'action',
-          showOverflowTooltip: true,
-          fixed: 'right'
-        }
-      ]
-    };
-  },
-  created() {},
-
-  methods: {
-    /* 表格数据源 */
-    datasource({ page, limit, where, order }) {
-      return filePageAPI({
-        ...where,
-        ...order,
-        pageNum: page,
-        size: limit,
-        directoryId: this.parentData?.id
-      });
-    },
-    /* 刷新表格 */
-    reload(where) {
-      this.$refs.table.reload({ pageNum: 1, where: where });
+        ]
+      };
     },
+    created() {},
 
-    browseOpen(row) {
-      this.$refs.browseRef.open(row);
-    },
-    getTableList() {
-      return JSON.parse(JSON.stringify(this.selection));
+    methods: {
+      /* 表格数据源 */
+      datasource({ page, limit, where, order }) {
+        return filePageAPI({
+          ...where,
+          ...order,
+          pageNum: page,
+          size: limit,
+          directoryId: this.parentData?.id
+        });
+      },
+      /* 刷新表格 */
+      reload(where) {
+        this.$refs.table.reload({ pageNum: 1, where: where });
+      },
+
+      browseOpen(row) {
+        window.open(setFileUrl(row));
+      },
+      getTableList() {
+        return JSON.parse(JSON.stringify(this.selection));
+      }
     }
-  }
-};
+  };
 </script>

+ 1 - 1
src/components/addDoc/getCode.vue

@@ -119,7 +119,7 @@
         this.form.type1 = '';
       },
       async type1Change(val) {
-        this.form.code = await getCode(val);
+        // this.form.code = await getCode(val);
       },
       /* 保存编辑 */
       save() {

+ 129 - 128
src/components/addDoc/main.vue

@@ -63,7 +63,7 @@
       custom-class="ele-dialog-form"
       append-to-body
       :maxable="true"
-    :resizable="true"
+      :resizable="true"
     >
       <doc_template
         :disabledTableList="tableList"
@@ -79,140 +79,141 @@
 </template>
 
 <script>
-import doc_template from './doc_template.vue';
-import fileEdit from './file-edit.vue';
-import browse from './browse.vue';
-import { queryIds } from './api';
+  import doc_template from './doc_template.vue';
+  import fileEdit from './file-edit.vue';
+  import browse from './browse.vue';
+  import { queryIds } from './api';
+  import { setFileUrl } from './util.js';
 
-export default {
-  components: { doc_template, fileEdit, browse },
+  export default {
+    components: { doc_template, fileEdit, browse },
 
-  data() {
-    return {
-      fileId: [],
-      fileShow: false,
-      showEditFlag: false,
-      tableList: [],
-      type: 'add',
-      columns: [
-        {
-          label: '编码',
-          prop: 'code',
-          width: 180,
-          align: 'center',
-          showOverflowTooltip: true
-        },
-        {
-          prop: 'name',
-          label: '文档名称',
-          align: 'center',
-          slot: 'name',
-          showOverflowTooltip: true,
-          minWidth: 200
-        },
-        {
-          prop: 'storagePath',
-          label: '文件名称',
-          align: 'center',
+    data() {
+      return {
+        fileId: [],
+        fileShow: false,
+        showEditFlag: false,
+        tableList: [],
+        type: 'add',
+        columns: [
+          {
+            label: '编码',
+            prop: 'code',
+            width: 180,
+            align: 'center',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'name',
+            label: '文档名称',
+            align: 'center',
+            slot: 'name',
+            showOverflowTooltip: true,
+            minWidth: 200
+          },
+          {
+            prop: 'storagePath',
+            label: '文件名称',
+            align: 'center',
 
-          showOverflowTooltip: true,
-          minWidth: 200,
-          formatter: (_row, _column, cellValue) => {
-            return cellValue && cellValue[0]?.name;
-          }
-        },
-        {
-          prop: 'version',
-          label: '版本',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 100
-        },
+            showOverflowTooltip: true,
+            minWidth: 200,
+            formatter: (_row, _column, cellValue) => {
+              return cellValue && cellValue[0]?.name;
+            }
+          },
+          {
+            prop: 'version',
+            label: '版本',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 100
+          },
 
-        {
-          prop: 'createUserName',
-          label: '创建人',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 100
-        },
-        {
-          prop: 'createTime',
-          label: '创建时间',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 160
-        },
+          {
+            prop: 'createUserName',
+            label: '创建人',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 100
+          },
+          {
+            prop: 'createTime',
+            label: '创建时间',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 160
+          },
 
-        {
-          prop: 'sizeUnit',
-          label: '文档大小',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 100
-        },
+          {
+            prop: 'sizeUnit',
+            label: '文档大小',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 100
+          },
 
-        {
-          columnKey: 'action',
-          label: '操作',
-          width: 200,
-          align: 'center',
-          resizable: false,
-          slot: 'action',
-          showOverflowTooltip: true
-        }
-      ]
-    };
-  },
-  created() {},
-
-  methods: {
-    open(fileId, type) {
-      //查看详情:view 新增:add
-      this.showEditFlag = true;
-      this.fileId = fileId || [];
-      if (type) {
-        this.type = type;
-      }
-      this.init();
-    },
-    fileEditOpen() {
-      this.$refs.fileEditRef.open();
-    },
-    remove(row) {
-      this.tableList = this.tableList.filter((item) => item.code != row.code);
-      this.fileId = this.tableList.map((item) => item.id);
-    },
-    async init() {
-      if (this.fileId.length > 0) {
-        this.tableList = await queryIds({ ids: "'" + this.fileId + "'" });
-      } else {
-        this.tableList = [];
-      }
-    },
-    done(id) {
-      this.fileId.push(...id);
-      this.init();
-    },
-    browseOpen(row) {
-      this.$refs.browseRef.open(row);
-    },
-    addFile() {
-      this.$emit(
-        'success',
-        this.tableList.map((item) => item.id)
-      );
-      this.showEditFlag = false;
+          {
+            columnKey: 'action',
+            label: '操作',
+            width: 200,
+            align: 'center',
+            resizable: false,
+            slot: 'action',
+            showOverflowTooltip: true
+          }
+        ]
+      };
     },
-    addTemplate() {
-      let list = this.$refs.doc_templateRef.getTableList();
-      this.fileShow = false;
-      if (list.length == 0) {
-        this.$message.error('请选择一条数据');
-        return;
+    created() {},
+
+    methods: {
+      open(fileId, type) {
+        //查看详情:view 新增:add
+        this.showEditFlag = true;
+        this.fileId = fileId || [];
+        if (type) {
+          this.type = type;
+        }
+        this.init();
+      },
+      fileEditOpen() {
+        this.$refs.fileEditRef.open();
+      },
+      remove(row) {
+        this.tableList = this.tableList.filter((item) => item.code != row.code);
+        this.fileId = this.tableList.map((item) => item.id);
+      },
+      async init() {
+        if (this.fileId.length > 0) {
+          this.tableList = await queryIds({ ids: "'" + this.fileId + "'" });
+        } else {
+          this.tableList = [];
+        }
+      },
+      done(id) {
+        this.fileId.push(...id);
+        this.init();
+      },
+      browseOpen(row) {
+        window.open(setFileUrl(row));
+      },
+      addFile() {
+        this.$emit(
+          'success',
+          this.tableList.map((item) => item.id)
+        );
+        this.showEditFlag = false;
+      },
+      addTemplate() {
+        let list = this.$refs.doc_templateRef.getTableList();
+        this.fileShow = false;
+        if (list.length == 0) {
+          this.$message.error('请选择一条数据');
+          return;
+        }
+        this.tableList.push(...list);
       }
-      this.tableList.push(...list);
     }
-  }
-};
+  };
 </script>

+ 112 - 55
src/components/addDoc/util.js

@@ -1,65 +1,122 @@
 import store from '@/store';
-const userId = store.state.user?.info?.userId
-const userName = store.state.user?.info?.name
+const userId = store.state.user?.info?.userId;
+const userName = store.state.user?.info?.name;
 export function isPower(data = {}, power, selection = []) {
-
-    if (power == 'add' && data.userAuthority.length == 0) { //文件夹默认开放新增权限
-        return true
-    }
-    if (!data?.id && selection.length == 0) {
-        return false
-
-    }
-    if (power == 'checkEnter' && data?.checkOutUserId != userId) { //检入特殊处理
-        return false
-    }
-    if (selection.length > 0) { //多选情况处理
-        let isPower = true
-        let userAuthorityS = []
-        let createUserIdS = selection.map(item => item.createUserId).filter(createUserId => createUserId == userId)
-        if (createUserIdS.length == selection.length || userName == 'admin') {
-            return true
-        }
-        selection.forEach(val => {
-            const powerObj = val.userAuthority.find(item => item.id == userId)
-            if (powerObj) {
-                userAuthorityS.push(powerObj)
-            }
-        })
-
-        if (userAuthorityS.length == 0) {
-            isPower = false
-        }
-        userAuthorityS.forEach(item => {
-            if (item[power] != '1') {
-                isPower = false
-            }
-        })
-        return isPower
+  if (power == 'add' && data.userAuthority.length == 0) {
+    //文件夹默认开放新增权限
+    return true;
+  }
+  if (!data?.id && selection.length == 0) {
+    return false;
+  }
+  if (power == 'checkEnter' && data?.checkOutUserId != userId) {
+    //检入特殊处理
+    return false;
+  }
+  if (selection.length > 0) {
+    //多选情况处理
+    let isPower = true;
+    let userAuthorityS = [];
+    let createUserIdS = selection
+      .map((item) => item.createUserId)
+      .filter((createUserId) => createUserId == userId);
+    if (createUserIdS.length == selection.length || userName == 'admin') {
+      return true;
     }
+    selection.forEach((val) => {
+      const powerObj = val.userAuthority.find((item) => item.id == userId);
+      if (powerObj) {
+        userAuthorityS.push(powerObj);
+      }
+    });
 
-    if (data.createUserId == userId || userName == 'admin') { //创建人/admin所有权限
-        return true
-    }
-    if (!power) {
-        return false
+    if (userAuthorityS.length == 0) {
+      isPower = false;
     }
-    const powerObj = data.userAuthority.find(item => item.id == userId)
-    if (powerObj) {
+    userAuthorityS.forEach((item) => {
+      if (item[power] != '1') {
+        isPower = false;
+      }
+    });
+    return isPower;
+  }
 
-        return powerObj[power] == '1'
-    }
+  if (data.createUserId == userId || userName == 'admin') {
+    //创建人/admin所有权限
+    return true;
+  }
+  if (!power) {
+    return false;
+  }
+  const powerObj = data.userAuthority.find((item) => item.id == userId);
+  if (powerObj) {
+    return powerObj[power] == '1';
+  }
 }
-
-export function setFolderList(data) { //递归过滤文件夹权限
-    data.forEach((item) => {
-        item['disabled'] = !isPower(item, 'add');
-        if (item.sonDirectoryList && item.sonDirectoryList.length > 0) {
-            setFolderList(item.sonDirectoryList);
-        }
-    });
+export function setFileUrl(row) {
+  let file = row.storagePath[0];
+  let fileNames = file.storePath.split('/');
+  let url =
+    window.location.origin +
+    '/api/main/file/getFile?objectName=' +
+    file.storePath +
+    '&fullfilename=' +
+    fileNames[fileNames.length - 1];
+  return '/kkfile/onlinePreview?url=' + btoa(url);
+}
+export function setFolderList(data) {
+  //递归过滤文件夹权限
+  data.forEach((item) => {
+    item['disabled'] = !isPower(item, 'add');
+    if (item.sonDirectoryList && item.sonDirectoryList.length > 0) {
+      setFolderList(item.sonDirectoryList);
+    }
+  });
 }
 //新迪预览工具支持的文件格式
 export function getFileType() {
-    return ['par', 'asm', 'psm', 'dft', 'sldprt', 'sldasm', 'ipt', 'iam', 'prt', '3dxml', 'CATPart', 'CATProduct', 'cgr', 'model', 'exp', 'session', 'x_t', 'xmt_txt', 'x_b', 'xmp_bin', 'xmp_txt', 'sat', 'sab', 'igs', 'iges', 'stp', 'step', 'jt', 'xcgm', '3dm', 'stl', 'obj', '3mf', 'fbx', 'vda', 'dxf', 'dwg', 'pdf', 'idf', 'idb', 'emn', 'brd']
-}
+  return [
+    'par',
+    'asm',
+    'psm',
+    'dft',
+    'sldprt',
+    'sldasm',
+    'ipt',
+    'iam',
+    'prt',
+    '3dxml',
+    'CATPart',
+    'CATProduct',
+    'cgr',
+    'model',
+    'exp',
+    'session',
+    'x_t',
+    'xmt_txt',
+    'x_b',
+    'xmp_bin',
+    'xmp_txt',
+    'sat',
+    'sab',
+    'igs',
+    'iges',
+    'stp',
+    'step',
+    'jt',
+    'xcgm',
+    '3dm',
+    'stl',
+    'obj',
+    '3mf',
+    'fbx',
+    'vda',
+    'dxf',
+    'dwg',
+    'pdf',
+    'idf',
+    'idb',
+    'emn',
+    'brd'
+  ];
+}

+ 7 - 4
src/components/processSubmitDialog/processSubmitDialog.vue

@@ -151,13 +151,13 @@
       <!--        >上一步-->
       <!--      </el-button>-->
       <el-button type="primary" size="small" @click="submit">提交</el-button>
-      <el-button
+      <!-- <el-button
         v-if="isNotNeedProcess"
         type="primary"
         size="small"
         @click="submit1"
         >提交并发布</el-button
-      >
+      > -->
       <el-button size="small" @click="cancel">关闭</el-button>
     </div>
   </ele-modal>
@@ -436,9 +436,12 @@
         });
       },
       async submit() {
-        await processInstanceCreateAPI(this.form);
+        const data = await processInstanceCreateAPI(this.form);
         this.$message('提交审核成功');
-        this.$emit('reload');
+        this.$emit('reload', {
+          businessId: this.form.businessId,
+          id: data
+        });
         this.cancel();
       },
       async submit1() {

+ 196 - 0
src/components/upload/import-dialog.vue

@@ -0,0 +1,196 @@
+<template>
+  <!-- 上传 -->
+  <el-dialog title="导入文件上传" :visible.sync="dialogVisible" width="40%">
+    <el-form label-width="110px" class="zw-criterion">
+      <el-form-item label="选择文件">
+        <el-upload
+          class="avatar-uploader"
+          action="#"
+          :show-file-list="false"
+          :http-request="handlSuccess"
+          :multiple="true"
+        >
+          <el-button icon="el-icon-plus" size="small" type="primary"
+            >文件上传</el-button
+          >
+          <div slot="tip" class="el-upload__tip" v-if="fileUrl">
+            只能上传excel文件,点击
+            <el-link
+              type="primary"
+              :underline="false"
+              @click="downLoadTemplate()"
+            >
+              下载模板</el-link
+            >
+          </div>
+        </el-upload>
+      </el-form-item>
+      <el-form-item label="上传列表">
+        <div class="imgs-box">
+          <p v-for="(item, index) in attaments" :key="index" class="imgs-p">
+            <span> {{ item.name }}</span>
+            <el-link @click="delFileList(index)" type="primary">删除</el-link>
+          </p>
+        </div>
+      </el-form-item>
+    </el-form>
+    <div slot="footer" class="dialog-footer">
+      <el-button size="small" @click="dialogVisible = false">关 闭</el-button>
+      <el-button size="small" @click="upload" type="primary">上 传</el-button>
+    </div>
+    <div id="progress" v-if="isProgress">
+      <el-progress
+        type="circle"
+        :percentage="percentage"
+        text-color="#fff"
+      ></el-progress>
+    </div>
+  </el-dialog>
+</template>
+
+<script>
+  import { importBatch,downLoadTemplate } from '@/api/system/file/index.js';
+  import { download1 } from '@/utils/file';
+  import { number } from 'echarts';
+
+  export default {
+    props: {
+      // eslint-disable-next-line vue/require-prop-type-constructor
+      defModule: '',
+      fileUrl: '',
+      fileName: '',
+      apiUrl: '',
+      isWeb: {
+        type: Boolean,
+        default: true
+      } ,
+      fileKeyName:'file',
+       rootCategoryLevelId: {
+    type: [Number, String], // 类型与主组件rootId一致
+    default: '' // 默认值为空,避免无值时报错
+  }
+    },
+    //注册组件
+    data() {
+      return {
+        showViewer: false, // 显示查看器
+        dialogVisible: false,
+        uploadShow: false,
+        isProgress: false,
+        module: '',
+        percentage: 0,
+        attaments: [], //上传文件
+        file: ''
+      };
+    },
+
+    created() {
+    },
+    methods: {
+      open() {
+        this.attaments = [];
+        this.module = '';
+        this.dialogVisible = true;
+      },
+      //删除附件
+      delFileList(index) {
+        this.attaments.splice(index, 1);
+      },
+      //上传限制
+      beforeUpload(file) {
+        const isLt10M = file.size / 1024 / 1024 < 10;
+        if (!isLt10M) {
+          this.$message.error('导入单文件大小不能超过 10MB!');
+        }
+        return isLt10M;
+      },
+      //图片上传
+      handlSuccess(param) {
+        this.file = param.file;
+        this.attaments.push(param.file);
+      },
+      // 文件上传
+async upload() {
+  if (this.attaments.length == 0) {
+    return this.$message.warning('文件不能为空!');
+  }
+  this.module = this.$props.defModule;
+  this.isProgress = true;
+  this.percentage = 0;
+  await importBatch(
+    {
+      module: this.module,
+      multiPartFiles: this.attaments,
+      rootCategoryLevelId: this.rootCategoryLevelId
+    },
+    this.apiUrl,
+    (data) => {
+      console.log(data, 'data');
+      this.percentage = parseFloat(
+        ((data.loaded * 100) / data.total).toFixed(2)
+      );
+      if (this.percentage >= 100) {
+        setTimeout(() => {
+          this.isProgress = false;
+        }, 500);
+      }
+    },
+    this.fileKeyName,
+  )
+    .then((res) => {
+      this.$message.success('操作成功!');
+      this.dialogVisible = false;
+      this.isProgress = false;
+      this.$emit('success');
+    })
+    .catch(() => {
+      this.isProgress = false;
+    });
+},
+      //下载模板
+      downLoadTemplate() {
+        
+        if(this.isWeb){
+          download1(window.location.origin + this.fileUrl, this.fileName);
+        }else{
+          downLoadTemplate(this.fileUrl,this.fileName);
+        }
+
+      }
+    }
+  };
+</script>
+
+<style lang="scss">
+  .zw-table-header {
+    float: right;
+  }
+
+  .imgs-box .imgs-p {
+    height: 30px;
+    background: #f0f3f3;
+    line-height: 30px;
+    width: 372px;
+    margin-bottom: 5px;
+    padding: 0 10px;
+    display: flex;
+    justify-content: space-between;
+  }
+  .zw-criterion-normal {
+    padding: 20px 0 0 0;
+  }
+  .el-main {
+    overflow: hidden;
+  }
+  #progress {
+    background: rgba($color: #000000, $alpha: 0.5);
+    position: fixed;
+    width: 100%;
+    height: 100%;
+    top: 0;
+    left: 0;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+  }
+</style>

+ 16 - 6
src/views/ledgerAssets/components/businessInformation.vue

@@ -50,7 +50,7 @@
 
           <el-descriptions-item>
             <template slot="label">
-              <span class="is-required">片区负责人部门</span>
+              <span class="is-required">{{clientEnvironmentId==9?'所在班组(科室)':'片区负责人部门'}}</span>
             </template>
             <el-form-item label-width="0">
               <div class="input">
@@ -63,7 +63,7 @@
           </el-descriptions-item>
           <el-descriptions-item>
             <template slot="label">
-              <span class="is-required">片区负责人</span>
+              <span class="is-required">{{clientEnvironmentId==9?'责任人':'片区负责人'}}</span>
             </template>
             <el-form-item label-width="0">
               <el-select
@@ -83,7 +83,7 @@
             </el-form-item>
           </el-descriptions-item>
           <el-descriptions-item>
-            <template slot="label">片区负责人电话 </template>
+            <template slot="label">{{clientEnvironmentId==9?'责任人电话':'片区负责人电话'}} </template>
             <el-form-item label-width="0">
               <el-input
                 v-model="ywInfo.areaPersonInChargePhone"
@@ -169,10 +169,11 @@
             <template slot="label"> 工位名称 </template>
             <el-form-item label-width="0">
               <el-select
-                v-model="ywInfo.factoryId"
+                v-model="ywInfo.factoryRoomId"
                 placeholder="请选择"
                 @change="change_factoryId"
                 style="width: 24%; margin-right: 1%"
+                disabled
               >
                 <el-option
                   v-for="item in factoryOptions"
@@ -187,6 +188,7 @@
                 placeholder="请选择"
                 style="width: 24%; margin-right: 1%"
                 @change="change_workshop"
+                disabled
               >
                 <el-option
                   v-for="item in workshopOptions"
@@ -201,6 +203,7 @@
                 placeholder="请选择"
                 style="width: 24%; margin-right: 1%"
                 @change="change_productionLineId"
+                disabled
               >
                 <el-option
                   v-for="item in productionLineOptions"
@@ -215,6 +218,7 @@
                 placeholder="请选择"
                 style="width: 24%; margin-right: 1%"
                 @change="change_stationId"
+                disabled
               >
                 <el-option
                   v-for="item in stationOptions"
@@ -374,10 +378,13 @@
         statusOptions: {},
         sourceStatus,
         // 网络状态
-        networkStatusOptions: {}
+        networkStatusOptions: {},
+        clientEnvironmentId: 0
       };
     },
     mounted() {
+      this.clientEnvironmentId =
+        this.$store.state.user.info.clientEnvironmentId;
       this.getFactoryareaList();
       this.getDeliveryCycleOptions();
       this.initStatusMapping();
@@ -433,6 +440,9 @@
       },
       // 获取车间
       getListWorkshopByParentId(id) {
+        if (!id) {
+          return;
+        }
         listWorkshopByParentId(id).then((res) => {
           this.workshopOptions = res;
         });
@@ -570,7 +580,7 @@
             this.workshopOptions.length == 0 &&
             this.ywInfo.productionLineId
           ) {
-            this.getListWorkshopByParentId(this.ywInfo.factoryId);
+            this.getListWorkshopByParentId(this.ywInfo.factoryRoomId);
           }
 
           // 获取产线

+ 23 - 0
src/views/ledgerAssets/equipment/components/equipment-list.vue

@@ -88,6 +88,14 @@
           v-if="$hasPermission('main:substance:delete')"
           >批量删除</el-button
         >
+        
+            <el-button
+              type="primary"
+              size="small"
+              icon="el-icon-upload2"
+              @click="uploadFile"
+              >导入</el-button
+            >
         <!-- <el-button
           size="small"
           @click="moveTo(checkRadioData, 'move')"
@@ -134,6 +142,15 @@
     <printTg ref="printTgRef"></printTg>
     <BomDetailsPop ref="bomDrawer"></BomDetailsPop>
     <batchSetDialog ref="batchSetRef" @success="sucesstion" />
+    <importDialog
+      ref="importDialogRef"
+      @success="reload"
+      :fileUrl="'/main/asset/importTemplate'"
+      :isWeb="false"
+      fileName="设备台账导入模板"
+      apiUrl="/main/asset/importFile"
+  :rootCategoryLevelId="rootId" 
+    />
   </div>
 </template>
 
@@ -143,6 +160,7 @@
   import printSr from '@/views/ledgerAssets/components/printSr';
   import printTg from '@/views/ledgerAssets/components/printTg';
   import { getByCode } from '@/api/system/dictionary-data';
+import importDialog from '@/components/upload/import-dialog.vue';
   import {
     businessStatus,
     networkStatus,
@@ -178,6 +196,7 @@
       printSr,
       printTg,
       BomDetailsPop,
+    importDialog,
       batchSetDialog
     },
     mixins: [dictMixins],
@@ -402,6 +421,10 @@
       this.getAssetLevelOptions();
     },
     methods: {
+    //导入
+    uploadFile() {
+      this.$refs.importDialogRef.open();
+    },
       allPrinting() {
         console.log('this.clientEnvironmentId-------------');
         console.log(this.clientEnvironmentId);

+ 7 - 0
src/views/ledgerAssets/mould/components/mould-list.vue

@@ -194,6 +194,13 @@
             showOverflowTooltip: true,
             minWidth: 110
           },
+          {
+            prop: 'extInfo.cyTimes',
+            label: '已冲压次数',
+            showOverflowTooltip: true,
+            minWidth: 130
+          },
+
           {
             prop: 'usePerson',
             label: '使用人',

+ 22 - 10
src/views/maintenance/components/MaterialAdd.vue

@@ -112,8 +112,8 @@
             prop: 'name'
           },
           {
-            label: '编',
-            prop: 'codeNumber'
+            label: '编',
+            prop: 'code'
           },
           {
             label: '固资编码',
@@ -128,8 +128,8 @@
             prop: 'postName'
           },
           {
-            label: '负责人',
-            prop: 'chargePerson'
+            label: '片区负责人负责人',
+            prop: 'areaPersonInChargeUserName'
           },
           {
             label: '有效开始时间',
@@ -140,19 +140,31 @@
             prop: 'endTime'
           },
           {
+            prop: 'category.modelType',
             label: '型号',
-            prop: 'modelType',
-            slot: 'modelType'
+            showOverflowTooltip: true,
+            minWidth: 110
           },
           {
+            prop: 'category.specification',
             label: '规格',
-            prop: 'specification',
-            slot: 'specification'
+            showOverflowTooltip: true,
+            minWidth: 110
           },
           {
             label: '设备位置',
             prop: 'pathName',
-            slot: 'pathName'
+            formatter: (_row) => {
+              const positionDetail =
+                _row.position &&
+                _row.position.length != 0 &&
+                _row.position[0].detailPosition
+                  ? _row.position[0].detailPosition
+                  : '-';
+              return _row.deviceLocationName
+                ? _row.deviceLocationName + '-' + positionDetail
+                : '';
+            }
           }
         ],
 
@@ -228,7 +240,7 @@
         if (this.rootId && this.categoryLevelId) {
           this.$refs.table.reload({ page: 1, where: where });
         } else {
-          this.$message.error('请选择设备');
+          this.$message.error('请选择设备类别');
         }
       },
 

+ 3 - 1
src/views/maintenance/components/programRulesDialog.vue

@@ -705,8 +705,10 @@ export default {
         this.$set(this.addForm, 'executorId', res.data.executorId.split(','));
         this.$set(this.addForm, 'imageUrl', {});
         console.log(this.rootData);
-
+        if(res.data.groupId){
         this.getUserList({ groupId: res.data.groupId });
+
+        }
         // const rep = await getTreeByType(0);
         // console.log('sasas', res);
         // const ids = this.findTopLevelAncestorId(

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

@@ -170,6 +170,12 @@
       <el-tab-pane label="备品备件申请单" name="sparePartsApply">
         <editd :id="workOrderInfo.id" v-if="workOrderInfo" />
       </el-tab-pane>
+      <el-tab-pane label="上报流程" name="flowableTaskId"       v-if="workOrderInfo.flowableTaskId">
+        <Detail
+          v-if="workOrderInfo.flowableTaskId&&detailsTabsActiveName==='flowableTaskId'"
+          :id="workOrderInfo.flowableTaskId"
+        ></Detail>
+      </el-tab-pane>
     </el-tabs>
 
     <el-tabs v-model="detailsTabsActiveName" type="border-card" v-else>
@@ -216,6 +222,16 @@
             <span>{{ infoData ? infoData.expectedTime : '' }}</span>
           </el-col>
         </el-row>
+        <el-row class="repair_row">
+          <el-col :span="12" class="repair_column">
+            <span>故障类别:</span>
+            <span>{{ infoData ? infoData.faultType : '' }}</span>
+          </el-col>
+          <el-col :span="12" class="repair_column">
+            <span>影响度:</span>
+            <span>{{ infoData ? infoData.impact : '' }}</span>
+          </el-col>
+        </el-row>
         <el-row class="repair_row">
           <el-col :span="24" class="repair_column">
             <span>故障描述:</span>
@@ -380,10 +396,12 @@
   import { getWorkOrderDetail } from '@/api/maintenance/repair';
   import dictMixins from '@/mixins/dictMixins';
   import editd from '@/views/sparePartsApply/components/editd';
+  import Detail from '@/views/processInstance/detail.vue';
+
   export default {
     mixins: [dictMixins],
     props: {},
-    components: { RepairNotesTab, WorkOrderTab, editd, modalTitle },
+    components: { RepairNotesTab, WorkOrderTab, editd, modalTitle, Detail },
     data() {
       return {
         fullscreen: false,

+ 17 - 334
src/views/maintenance/repair/components/WorkOrderTab.vue

@@ -70,17 +70,16 @@
         <div slot="description" class="create_workerOrder_desc">
           <div> 报修人:{{ logs[item.id].requestUserName }} </div>
           <div> 故障描述:{{ logs[item.id].remark }} </div>
-          <div class="work_report_imgs" >
-          <el-image
-            v-for="(item, index) in logs[item.id]?.content?.images"
-            :key="index"
-            style="width: 100px; height: 100px; margin-right: 5px"
-            :src="item"
-            :preview-src-list="[item]"
-          />
-        </div>
+          <div class="work_report_imgs">
+            <el-image
+              v-for="(item, index) in logs[item.id]?.content?.images"
+              :key="index"
+              style="width: 100px; height: 100px; margin-right: 5px"
+              :src="item"
+              :preview-src-list="[item]"
+            />
+          </div>
         </div>
-   
       </el-step>
       <el-step v-if="item.type == 'SPARE_PARTS_APPLY'">
         <span
@@ -170,7 +169,7 @@
               type="view"
             ></fileMain>
           </div>
-          <div class="work_report_imgs" >
+          <div class="work_report_imgs">
             <el-image
               v-for="(item, index) in logs[item.id].content?.images"
               :key="index"
@@ -179,320 +178,26 @@
               :preview-src-list="logs[item.id].content?.images"
             />
           </div>
-          <!-- <div>
-            <div>备品备件使用情况:</div>
-            <el-table :data="useData" border>
-              <el-table-column
-                label="备件编码"
-                prop="assetCode"
-                align="center"
-              />
-              <el-table-column
-                label="备件名称"
-                align="center"
-                prop="informationName"
-              />
-              <el-table-column label="所属分类" prop="typeName" align="center">
-                <template slot-scope="{ row }">
-                  <div>备品备件</div>
-                </template>
-              </el-table-column>
-              <el-table-column label="型号" align="center" prop="modelType" />
-              <el-table-column label="使用数量" prop="typeName" align="center">
-                <template slot-scope="{ row }">
-                  <div>1</div>
-                </template>
-              </el-table-column>
-            </el-table>
-          </div> -->
-        </div>
-      </el-step>
-    </el-steps>
-    <!-- <el-steps
-      direction="vertical"
-      :active="0"
-      :space="100"
-      v-for="(item, index) in repairInfoLogList"
-      :key="index"
-    >
-      <el-step v-if="item.type.code == 'ACCEPTANCE_CHEK'">
-        <span
-          slot="icon"
-          :class="
-            lastStepName == 'ACCEPTANCE_CHEK'
-              ? 'step_icon step_active'
-              : 'step_icon'
-          "
-        ></span>
-        <div slot="title" class="step_title">
-          <span>验收</span>
-          <span>{{ logs['ACCEPTANCE_CHEK'].createTime }}</span>
-        </div>
-        <div slot="description" class="step_description">
-          <span>验收人:{{ logs['ACCEPTANCE_CHEK'].content.userName }}</span>
-          <span
-            >验收结果:{{
-              logs['ACCEPTANCE_CHEK'].content.acceptanceResult ? '通过' : '驳回'
-            }}</span
-          >
-          <span
-            >验收说明:{{
-              logs['ACCEPTANCE_CHEK'].content.acceptanceInstructions
-            }}</span
-          >
-        </div>
-      </el-step>
-
-      <el-step v-if="item.type.code == 'WORK_REPORT'">
-        <span
-          slot="icon"
-          :class="
-            lastStepName == 'WORK_REPORT'
-              ? 'step_icon step_active'
-              : 'step_icon'
-          "
-        ></span>
-        <div slot="title" class="step_title">
-          <span>报工</span>
-          <span>{{ logs['WORK_REPORT'].createTime }}</span>
-        </div>
-        <div slot="description" class="work_report_desc">
-          <div>
-            处理说明:{{ logs['WORK_REPORT'].content.repairReportExplain }}
-          </div>
-          <div class="work_report_imgs" style="width: 50px; height: 50px">
-            <img
-              v-for="(item, index) in logs['WORK_REPORT'].content
-                .workOrderImgList"
-              :key="index"
-              :src="item"
-              alt=""
-              style="width: 40%"
-            />
-          </div>
-          <div>
-            <div>备品备件使用情况:</div>
-            <el-table :data="useData" border>
-              <el-table-column
-                label="备件编码"
-                prop="assetCode"
-                align="center"
-              />
-              <el-table-column
-                label="备件名称"
-                align="center"
-                prop="informationName"
-              />
-              <el-table-column label="所属分类" prop="typeName" align="center">
-                <template slot-scope="{ row }">
-                  <div>备品备件</div>
-                </template>
-              </el-table-column>
-              <el-table-column label="型号" align="center" prop="modelType" />
-              <el-table-column label="使用数量" prop="typeName" align="center">
-                <template slot-scope="{ row }">
-                  <div>1</div>
-                </template>
-              </el-table-column>
-            </el-table>
-          </div>
-        </div>
-      </el-step>
-
-      <el-step v-if="item.type.code == 'STOCK_OUT_APPROVAL'">
-        <span
-          slot="icon"
-          :class="
-            lastStepName == 'STOCK_OUT_APPROVAL'
-              ? 'step_icon step_active'
-              : 'step_icon'
-          "
-        ></span>
-        <div slot="title" class="step_title">
-          <span>备品备件出库审核</span>
-          <span>{{ logs['STOCK_OUT_APPROVAL'].createTime }}</span>
-        </div>
-        <div slot="description" class="step_description">
-          <span
-            >出库单号:{{
-              logs['STOCK_OUT_APPROVAL'].content.stockOutCode
-            }}</span
-          >
-          <span
-            >审核人:{{
-              logs['STOCK_OUT_APPROVAL'].content.approvalUserName
-            }}</span
-          >
-          <span
-            >审核结果:{{
-              logs['SPARE_PARTS_APPROVAL'].content.approvalResult
-                ? '通过'
-                : '驳回'
-            }}</span
-          >
-        </div>
-      </el-step>
-
-      <el-step v-if="item.type.code == 'STOCK_OUT_APPLY'">
-        <span
-          slot="icon"
-          :class="
-            lastStepName == 'STOCK_OUT_APPLY'
-              ? 'step_icon step_active'
-              : 'step_icon'
-          "
-        ></span>
-        <div slot="title" class="step_title">
-          <span>备品备件出库申请</span>
-          <span>{{ logs['STOCK_OUT_APPLY'].createTime }}</span>
-        </div>
-        <div slot="description" class="step_description">
-          <span
-            >出库单号:{{ logs['STOCK_OUT_APPLY'].content.stockOutCode }}</span
-          >
-          <span
-            >申请人:{{ logs['STOCK_OUT_APPLY'].content.applyUserName }}</span
-          >
-          <span
-            >审核人:{{
-              logs['STOCK_OUT_APPLY'].content.approvalUserName
-            }}</span
-          >
-        </div>
-      </el-step>
-
-      <el-step v-if="item.type.code == 'SPARE_PARTS_APPROVAL'">
-        <span
-          slot="icon"
-          :class="
-            lastStepName == 'SPARE_PARTS_APPROVAL'
-              ? 'step_icon step_active'
-              : 'step_icon'
-          "
-        ></span>
-        <div slot="title" class="step_title">
-          <span>备品备件申领审核</span>
-          <span>{{ logs['SPARE_PARTS_APPROVAL'].createTime }}</span>
-        </div>
-        <div slot="description" class="step_description">
-          <span
-            >申领单号:{{
-              logs['SPARE_PARTS_APPROVAL'].content.sparePartsCode
-            }}</span
-          >
-          <span
-            >审核人:{{
-              logs['SPARE_PARTS_APPROVAL'].content.approvalUserName
-            }}</span
-          >
-          <span
-            >审核结果:{{
-              logs['SPARE_PARTS_APPROVAL'].content.approvalResult
-                ? '通过'
-                : '驳回'
-            }}</span
-          >
-        </div>
-      </el-step>
-
-      <el-step v-if="item.type.code == 'SPARE_PARTS_APPLY'">
-        <span
-          slot="icon"
-          :class="
-            lastStepName == 'SPARE_PARTS_APPLY'
-              ? 'step_icon step_active'
-              : 'step_icon'
-          "
-        ></span>
-        <div slot="title" class="step_title">
-          <span>备品备件申请</span>
-          <span>{{ logs['SPARE_PARTS_APPLY'].createTime }}</span>
-        </div>
-        <div slot="description" class="work_report_desc">
-          <div slot="description" class="step_description">
-            <span
-              >申领单号:{{
-                logs['SPARE_PARTS_APPLY'].content.sparePartsCode
-              }}</span
-            >
-            <span
-              >申请人:{{
-                logs['SPARE_PARTS_APPLY'].content.applyUserName
-              }}</span
-            >
-            <span
-              >审核人:{{
-                logs['SPARE_PARTS_APPLY'].content.approvalUserName
-              }}</span
-            >
-          </div>
-          <div>
-            <div>申领清单:</div>
-            <el-table :data="item.applyList" border>
-              <el-table-column
-                label="备件物品编码"
-                align="center"
-                prop="informationCode"
-              />
-              <el-table-column
-                label="备件名称"
-                align="center"
-                prop="informationName"
-              />
-              <el-table-column label="所属分类" prop="typeName" align="center">
-                <template slot-scope="{ row }">
-                  <div>备品备件</div>
-                </template>
-              </el-table-column>
-              <el-table-column label="型号" align="center" prop="modelType" />
-              <el-table-column label="使用数量" prop="num" align="center" />
-            </el-table>
-          </div>
         </div>
       </el-step>
-
-      <el-step v-if="item.type.code == 'START'">
+      <el-step v-if="item.type == 'REPORT'">
         <span
           slot="icon"
-          :class="
-            lastStepName == 'START' ? 'step_icon step_active' : 'step_icon'
-          "
-        ></span>
-        <div slot="title" class="step_title">
-          <span>开始执行</span>
-          <span>{{ logs['START'].createTime }}</span>
-        </div>
-        <div slot="description" class="step_description">
-          <span>执行人:{{ logs['START'].content.executorName }}</span>
-        </div>
-      </el-step>
-
-      <el-step v-if="item.type.code == 'CREATE_WORK_ORDER'">
-        <span
-          slot="icon"
-          :class="
-            lastStepName == 'CREATE_WORK_ORDER'
-              ? 'step_icon step_active'
-              : 'step_icon'
-          "
+          :class="index == 0 ? 'step_icon step_active' : 'step_icon'"
         ></span>
         <div slot="title" class="step_title">
-          <span>生成工单</span>
-          <span>{{ logs['CREATE_WORK_ORDER'].createTime }}</span>
+          <span>上报时间</span>
+          <span>{{ logs[item.id].createTime }}</span>
         </div>
+       
       </el-step>
-    </el-steps> -->
+    </el-steps>
   </div>
 </template>
 
 <script>
-  // import repair from '@/api/maintenance/repair/repair'
-  // import {  getSparePartDetail , getUseDetail } from '@/api/stockManagement/stocking'
-  // import fileMain from '@/components/addDoc/index.vue';
   export default {
-    components: {
-      // fileMain
-    },
+    components: {},
     props: {
       equipmentInfo: {
         type: Object,
@@ -522,28 +227,6 @@
 
     watch: {
       repairInfoLogList(val) {
-        console.log('接收的值', val);
-        // val.forEach((item) => {
-        //   if (item.type !== 'SPARE_PARTS_APPLY') {
-        //     this.logs[item.type] = {
-        //       id: item.id,
-        //       content: item.content,
-        //       createTime: item.createTime,
-        //       remark: item.remark,
-        //       requestUserName: item.requestUserName
-        //     };
-        //   } else {
-        //     if (item.content.infoList && item.content.infoList.length > 0) {
-        //       item.content.infoList = item.content.infoList.map((item) => {
-        //         return {
-        //           ...JSON.parse(item.sparePartsList),
-        //           sparePartsId: item.sparePartsId
-        //         };
-        //       });
-        //       this.useData.push(item.content.infoList);
-        //     }
-        //   }
-        // });
         val.forEach((item) => {
           this.logs[item.id] = {
             id: item.id,

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

@@ -112,7 +112,7 @@
               />
             </el-form-item> -->
             <el-form-item
-              label="片区负责人部门:"
+             :label="clientEnvironmentId == '9'?'所在班组(科室):':'片区负责人部门:'"
               prop="areaPersonInChargeGroupId"
             >
               <dept-select
@@ -135,7 +135,7 @@
             </el-form-item>
           </el-col> -->
           <el-col :span="12">
-            <el-form-item label="片区负责人:" prop="areaPersonInChargeUserId">
+            <el-form-item :label="clientEnvironmentId == '9'?'责任人':'片区负责人:'" prop="areaPersonInChargeUserId">
               <person-select
                 v-model="addForm.areaPersonInChargeUserId"
                 clearable
@@ -144,7 +144,7 @@
               />
             </el-form-item>
           </el-col>
-          <el-col :span="12">
+          <el-col :span="12" v-if="clientEnvironmentId != '9'">
             <el-form-item label="领导部门:" prop="leaderDeptId">
               <dept-select
                 v-model="addForm.leaderDeptId"
@@ -165,7 +165,7 @@
             </el-form-item>
           </el-col>
 
-          <el-col :span="12">
+          <el-col :span="12" v-if="clientEnvironmentId != '9'">
             <el-form-item label="通知领导:" prop="leaderUserId">
               <el-select
                 style="width: 100%"
@@ -182,11 +182,7 @@
                 >
                 </el-option>
               </el-select>
-              <!-- <person-select
-                v-model="addForm.repairLeaderUserId"
-                clearable
-                @change="changeUser"
-              /> -->
+
             </el-form-item>
           </el-col>
           <el-col :span="12">
@@ -215,6 +211,47 @@
               </el-select>
             </el-form-item>
           </el-col>
+          <el-col :span="12">
+            <el-form-item label="故障类别:" prop="faultType">
+              <el-select
+                v-model="addForm.faultType"
+                style="width: 100%"
+                multiple
+              >
+                <el-option
+                  v-for="item in [
+                    { id: 1, name: '初次' },
+                    { id: 2, name: '复次' },
+                    { id: 3, name: '机械' },
+                    { id: 4, name: '电器' },
+                    { id: 5, name: '精度' }
+                  ]"
+                  :key="item.name"
+                  :value="item.name"
+                  :label="item.name"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="影响度:" prop="impact">
+              <el-select v-model="addForm.impact" style="width: 100%" multiple>
+                <el-option
+                  v-for="item in [
+                    { id: 1, name: '不影响' },
+                    { id: 2, name: '不可生产' },
+                    { id: 3, name: '主机部分' },
+                    { id: 4, name: '辅助' },
+                    { id: 5, name: '隐患' },
+                    { id: 6, name: '安全' }
+                  ]"
+                  :key="item.name"
+                  :value="item.name"
+                  :label="item.name"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
           <el-col :span="24" style="margin-top: 8px">
             <el-form-item label="故障描述:" prop="remark">
               <el-input
@@ -308,7 +345,10 @@
         addForm: {
           leaderUserId: ''
         },
+        faultType: [],
+        impact: [],
         initData: [],
+
         userList: [],
         addFormRules: {
           remark: [
@@ -336,11 +376,17 @@
         loading: false,
         row: null,
         receiverList: [],
-        executorList: []
+        executorList: [],
+        clientEnvironmentId: 0
       };
     },
     created() {
       this.getUserList();
+
+    },
+    mounted() {
+            this.clientEnvironmentId =
+        this.$store.state.user.info.clientEnvironmentId;
     },
     methods: {
       //选择部门(搜索)
@@ -464,6 +510,12 @@
             };
             this.getStaffList(this.addForm.leaderDeptId);
           }
+          if (this.addForm.faultType) {
+            this.addForm.faultType = this.addForm.faultType.split(',');
+          }
+          if (this.addForm.impact) {
+            this.addForm.impact = this.addForm.impact.split(',');
+          }
 
           console.log('addForm--------------', this.addForm);
           this.addForm.equiLocation =
@@ -521,7 +573,9 @@
           repairUserId: this.addForm.repairUserId,
           repairGroupId: this.addForm.repairGroupId,
           repairGroupName: this.addForm.repairGroupName,
-          repairUserName: this.addForm.repairUserName
+          repairUserName: this.addForm.repairUserName,
+          faultType: this.addForm.faultType.toString(),
+          impact: this.addForm.impact.toString()
         };
         this.loading = true;
         if (this.row) {

+ 40 - 12
src/views/maintenance/repair/workOrder/index.vue

@@ -76,14 +76,15 @@
           >
             下载
           </el-link>
-          <!-- <el-link
+          <el-link
             type="primary"
             :underline="false"
             icon="el-icon-edit"
-            @click="goDetail(row)"
+            @click="processSubmit(row)"
+            v-if="!row.flowableTaskId"
           >
-            详情
-          </el-link> -->
+            上报
+          </el-link>
         </template>
       </ele-pro-table>
     </el-card>
@@ -106,11 +107,12 @@
     <edit @refresh="reload" ref="edit" />
     <!-- 非完成报工接收  注意事项-->
     <Notice ref="noticeShow" :repairInfo="repairInfo" @agree="agree" />
-    <!-- <AddSpareDialog
-      ref="addSpareDialogRef"
-      :selectedSpare="selectedSpare"
-      @submit="spareItemSelectSubmit"
-    /> -->
+    <process-submit-dialog
+      :processSubmitDialogFlag.sync="processSubmitDialogFlag"
+      v-if="processSubmitDialogFlag"
+      ref="processSubmitDialogRef"
+      @reload="processSubmitSuccess"
+    ></process-submit-dialog>
   </div>
 </template>
 
@@ -123,13 +125,15 @@
   import RepairReportingWork from '../components/repairReportingWork.vue';
   import RepairDetailsDialog from '../components/RepairDetailsDialog.vue';
   import redeployOther from '@/views/maintenance/components/redeployOther2.vue';
+  import processSubmitDialog from '@/components/processSubmitDialog/processSubmitDialog.vue';
 
   import {
     getWorkOrderList,
     applySpareParts,
     save,
     getWorkOrderDetail,
-    startExecuting
+    startExecuting,
+    reportWorkOrder
   } from '@/api/maintenance/repair';
   import outin from '@/api/maintenance/outin';
   import { getToken } from '@/utils/token-util';
@@ -145,11 +149,13 @@
       AddSpareDialog,
       RepairReportingWork,
       edit,
-      Notice
+      Notice,
+      processSubmitDialog
     },
     data() {
       return {
         workorderStatus,
+        processSubmitDialogFlag: false,
         resultStatus,
         currentRow: {},
         warehousingMaterialList: [],
@@ -315,6 +321,13 @@
     },
     created() {},
     methods: {
+     async processSubmitSuccess(data) {
+       await reportWorkOrder({
+          workOrderId: data.businessId,
+          flowableTaskId: data.id
+        });
+        this.reload();
+      },
       downLoadOrder(row) {
         let params = {
           id: row.id
@@ -446,7 +459,22 @@
         this.$refs.noticeShow.close();
         this.handleExecute();
       },
-
+      processSubmit(row) {
+        this.processSubmitDialogFlag = true;
+        this.$nextTick(() => {
+          let params = {
+            businessId: row.id,
+            businessKey: 'equipment_repair',
+            formCreateUserId: row.createUserId,
+            variables: {
+              businessCode: row.code,
+              businessName: row.planName,
+              businessType: '上报'
+            }
+          };
+          this.$refs.processSubmitDialogRef.init(params);
+        });
+      },
       // 执行工单
       handleExecute() {
         startExecuting({