yusheng 1 bulan lalu
induk
melakukan
2100d82c99

+ 14 - 10
src/api/bpm/components/equipmentDisposal/index.js

@@ -1,7 +1,5 @@
 import request from '@/utils/request';
 
-
-
 // 保存or更新
 export async function save(data) {
   const res = await request.post(`/eam/management_template/update`, data);
@@ -11,30 +9,36 @@ export async function save(data) {
   return Promise.reject(new Error(res.data.message));
 }
 
-
-
 /**
  * 列表
  */
-export async function getDisposalList (data) {
-  const res = await request.post('/eam/disposal_management_template/page', data);
+export async function getDisposalList(data) {
+  const res = await request.post(
+    '/eam/disposal_management_template/page',
+    data
+  );
   if (res.data.code == 0) {
     return res.data.data;
   }
   return Promise.reject(new Error(res.data.message));
 }
 
-
-
 // // 详情
-export async function getById (id) {
+export async function getById(id) {
   const res = await request.get(`/eam/management_template/getById/${id}`);
   if (res.data.code == 0) {
     return res.data.data;
   }
   return Promise.reject(new Error(res.data.message));
 }
-
+// // 详情
+export async function ehsGetById(id) {
+  const res = await request.get(`/ehs/ehsdisposalmanagement/getById/${id}`);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
 
 // 获取实体列表分页
 export async function getAssetList(data) {

+ 7 - 0
src/api/pda/index.js

@@ -7,3 +7,10 @@ export async function getPickOrderById(id) {
   }
   return Promise.reject(new Error(res.data.message));
 }
+export async function getEhsPickOrderById(id) {
+  const res = await request.get('/ehs/ehspickorder/getById/' + id);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}

+ 5 - 0
src/views/bpm/handleTask/components/contractBook/detailDialog.vue

@@ -324,6 +324,11 @@
             code: 7,
             name: '销售订单',
             parentId: '1'
+          },
+          {
+            code: 8,
+            name: '危险危物处置单',
+            parentId: '2'
           }
         ],
         receiptPaymentListcolumns: [

+ 209 - 0
src/views/bpm/handleTask/components/ehsEquipmentDisposal/edit.vue

@@ -0,0 +1,209 @@
+<template>
+  <div>
+    <headerTitle title="基本信息" style="margin-top: 15px"></headerTitle>
+
+    <el-form
+      ref="form"
+      :model="form"
+      :rules="rules"
+      label-width="100px"
+      class="create-form"
+    >
+      <el-row :gutter="15">
+        <el-col v-bind="styleResponsive ? { lg: 8, md: 12 } : { span: 8 }">
+          <el-form-item label="处置方式:" prop="disposalType">
+            <DictSelection
+              dictName="设备处置方式"
+              v-model="form.disposalType"
+              disabled
+              @change="disposalTypeChange"
+            ></DictSelection>
+          </el-form-item>
+        </el-col>
+        <el-col v-bind="styleResponsive ? { lg: 8, md: 12 } : { span: 8 }">
+          <el-form-item label="编码:" prop="code">
+            <el-input v-model="form.code" disabled />
+          </el-form-item>
+        </el-col>
+        <el-col v-bind="styleResponsive ? { lg: 8, md: 12 } : { span: 8 }">
+          <el-form-item label="名称:" prop="name">
+            <el-input v-model="form.name" disabled />
+          </el-form-item>
+        </el-col>
+
+       </el-row
+    ></el-form>
+    <headerTitle title="处置对象" style="margin-top: 15px"></headerTitle>
+    <ele-pro-table
+      ref="table"
+      :columns="columns"
+      :datasource="form.detailList"
+      row-key="id"
+      height="30vh"
+      :needPage="false"
+    >
+    </ele-pro-table>
+    <headerTitle title="处置业务" style="margin-top: 15px"> </headerTitle>
+    <el-form label-width="150px" class="create-form">
+      <el-row :gutter="15">
+        <el-col
+          v-bind="styleResponsive ? { lg: 24, md: 24 } : { span: 24 }"
+          v-for="item in form.disposalTypeList"
+          :key="item.id"
+        >
+          <el-form-item :label="item.name + ':'">
+            <div style="width: 95%; display: inline-block">
+              <formContent :type="item.type" v-model="item.value" disabled />
+            </div>
+          </el-form-item>
+        </el-col> </el-row
+    ></el-form>
+
+    <!-- 选择产品 -->
+  </div>
+</template>
+
+<script>
+  import formContent from '@/views/bpm/handleTask/components/equipmentDisposal/formContent.vue';
+  import { ehsGetById } from '@/api/bpm/components/equipmentDisposal';
+
+  const defForm = {
+    name: '',
+    id: '', //
+    disposalType: '',
+    managementCategory: '',
+    processId: '',
+    code: '',
+    disposalTypeList: [],
+    deviceList: []
+  };
+  export default {
+    components: {
+      formContent
+    },
+    props: {
+      businessId: {
+        default: ''
+      },
+
+      taskDefinitionKey: {
+        default: ''
+      }
+    },
+    data() {
+      return {
+        visible: false,
+        loading: false,
+        infoDisposalVisible: false,
+        title: '物品处置',
+        type: 'detail',
+        form: { ...defForm },
+        rules: {
+          name: [{ required: true, message: '请选择', trigger: 'change' }],
+          type: [{ required: true, message: '请选择', trigger: 'change' }],
+          disposalType: [
+            { required: true, message: '请选择', trigger: 'change' }
+          ]
+        },
+
+        columns: [
+          {
+            columnKey: 'index',
+            label: '序号',
+            type: 'index',
+            width: 55,
+            align: 'center',
+            showOverflowTooltip: true,
+            fixed: 'left'
+          },
+
+          {
+            prop: 'categoryCode',
+            label: '编码',
+            width: 100,
+            fixed: 'left',
+            showOverflowTooltip: true,
+            align: 'center'
+          },
+          {
+            prop: 'categoryName',
+            width: 120,
+            fixed: 'left',
+            showOverflowTooltip: true,
+            label: '名称',
+            align: 'center'
+          },
+          {
+            prop: 'measureQuantity',
+            width: 120,
+            fixed: 'left',
+            showOverflowTooltip: true,
+            label: '计量数量',
+            align: 'center'
+          },
+          {
+            prop: 'measureUnit',
+            width: 120,
+            fixed: 'left',
+            showOverflowTooltip: true,
+            label: '计量单位',
+            align: 'center'
+          },
+          {
+            prop: 'categoryModel',
+            showOverflowTooltip: true,
+            label: '型号',
+            align: 'center'
+          },
+          {
+            prop: 'specification',
+            showOverflowTooltip: true,
+            slot: 'specification',
+            label: '规格',
+            align: 'center'
+          },
+          {
+            prop: 'warehouseName',
+            label: '出库仓库',
+            showOverflowTooltip: true,
+            minWidth: 110,
+            align: 'center'
+          }
+        ]
+      };
+    },
+
+    computed: {},
+    created() {
+      this.open();
+    },
+    methods: {
+      async open() {
+        const data = await ehsGetById(this.businessId);
+        this.form = data;
+
+        this.form.disposalType = this.form.disposalType + '';
+        this.form.managementCategory = this.form.managementCategory + '';
+      }
+    }
+  };
+</script>
+<style lang="scss" scoped>
+  .basic-details-title {
+    margin: 10px 0;
+  }
+  .title {
+    font-size: 16px;
+    line-height: 45px;
+  }
+  .add-product {
+    width: 100%;
+    display: flex;
+    align-items: center;
+    // justify-content: flex-end;
+    font-size: 30px;
+    color: #1890ff;
+    margin: 10px 0;
+    cursor: pointer;
+  }
+</style>

+ 102 - 0
src/views/bpm/handleTask/components/ehsEquipmentDisposal/submit.vue

@@ -0,0 +1,102 @@
+<template>
+  <el-col :span="16" :offset="6">
+    <el-form label-width="100px" ref="formRef" :model="form">
+      <el-form-item
+        label="审批建议"
+        style="margin-bottom: 20px"
+        :rules="{
+          required: true,
+          message: '请选择',
+          trigger: 'change'
+        }"
+      >
+        <el-input
+          type="textarea"
+          v-model="form.reason"
+          placeholder="请输入审批建议"
+        />
+      </el-form-item>
+    </el-form>
+    <div style="margin-left: 10%; margin-bottom: 20px; font-size: 14px">
+      <el-button
+        icon="el-icon-edit-outline"
+        type="success"
+        size="mini"
+        v-click-once
+        @click="handleAudit(1)"
+        >通过
+      </el-button>
+
+      <el-button
+        icon="el-icon-circle-close"
+        type="danger"
+        size="mini"
+        v-click-once
+        @click="handleAudit(0)"
+        v-if="taskDefinitionKey != 'starter'"
+        >驳回
+      </el-button>
+    </div>
+  </el-col>
+</template>
+
+<script>
+  import { approveTaskWithVariables, rejectTask } from '@/api/bpm/task';
+  import dictMixins from '@/mixins/dictMixins';
+  // 流程实例的详情页,可用于审批
+  export default {
+    mixins: [dictMixins],
+
+    name: '',
+    components: {
+      //   Parser
+    },
+    props: {
+      businessId: {
+        default: ''
+      },
+      taskId: {
+        default: ''
+      },
+      id: {
+        default: ''
+      },
+      taskDefinitionKey: {
+        default: ''
+      }
+    },
+    data() {
+      return {
+        form: {
+          reason: '同意'
+        }
+      };
+    },
+    created() {},
+    methods: {
+      async handleAudit(status) {
+        await this._approveTaskWithVariables(status);
+      },
+      async _approveTaskWithVariables(status) {
+        let variables = {
+          pass: !!status
+        };
+        let API = !!status ? approveTaskWithVariables : rejectTask;
+        API({
+          id: this.taskId,
+          reason: this.form.reason,
+          variables
+        }).then((res) => {
+          if (res.data.code != '-1') {
+            this.$emit('handleAudit', {
+              status,
+              title: status === 0 ? '驳回' : ''
+            });
+          }
+        });
+      }
+    }
+  };
+</script>
+
+<style lang="scss"></style>

+ 33 - 6
src/views/bpm/handleTask/components/selectedCollectionOutbound/boxTabPage.vue

@@ -14,13 +14,16 @@
 
 <script>
   import { deepClone } from '@/components/FormGenerator/utils/index';
-  import { getPickOrderById } from '@/api/pda';
+
+  import { getPickOrderById, getEhsPickOrderById } from '@/api/pda';
+
   export default {
     name: 'boxTabPage',
     components: {
       tab1: () => import('./detailDialog.vue'),
       tab2: () => import('@/views/bpm/outgoingManagement/outbound.vue'),
-      tab3: () => import('@/views/bpm/outgoingManagement/details.vue')
+      tab3: () => import('@/views/bpm/outgoingManagement/details.vue'),
+      tab4: () => import('./ehsDetailDialog.vue')
     },
     props: {
       taskDefinitionKey: {
@@ -39,6 +42,10 @@
         type: String,
         default: ''
       },
+      processDefinitionId: {
+        type: String,
+        default: ''
+      },
       isView: ''
     },
     data() {
@@ -52,16 +59,23 @@
     },
     computed: {
       tabOption() {
+        //processDefinitionId==ehs_pick_out_approve 安全管理 危险危物特殊处理
+
         let list = [
           {
             label: '领料单详情',
-            name: 'tab1',
+            name: this.processDefinitionId.includes('ehs_pick_out_approve')
+              ? 'tab4'
+              : 'tab1',
             isShow: true
           },
           {
             label: '出库',
             name: this.isView ? 'tab3' : 'tab2',
-            isShow: this.isView || this.taskDefinitionKey == 'storeman' ||  this.taskDefinitionKey == 'storemanAudit'
+            isShow:
+              this.isView ||
+              this.taskDefinitionKey == 'storeman' ||
+              this.taskDefinitionKey == 'storemanAudit'
           }
         ];
         return list.filter((item) => item.isShow);
@@ -69,7 +83,12 @@
     },
     async created() {
       this.getPickOrderDetail();
-      console.log('tabOption~~', this.tabOption, this.taskDefinitionKey, this.isView);
+      console.log(
+        'tabOption~~',
+        this.tabOption,
+        this.taskDefinitionKey,
+        this.isView
+      );
     },
     methods: {
       activeNameProps(activeName) {
@@ -93,6 +112,11 @@
             return {
               businessId: this.form.code
             };
+          case 'tab4':
+            return {
+              businessId: this.businessId,
+              form: this.form
+            };
         }
       },
       isValidComponent(componentName) {
@@ -118,7 +142,10 @@
         };
       },
       getPickOrderDetail() {
-        getPickOrderById(this.businessId).then((data) => {
+        let api = this.processDefinitionId.includes('ehs_pick_out_approve')
+          ? getEhsPickOrderById
+          : getPickOrderById;
+        api(this.businessId).then((data) => {
           data.detailList = data.detailList.map((item) => {
             item.code = data.code;
             return item;

+ 96 - 0
src/views/bpm/handleTask/components/selectedCollectionOutbound/ehsDetailDialog.vue

@@ -0,0 +1,96 @@
+<template>
+  <div class="ele-body">
+    <headerTitle title="领料单信息"></headerTitle>
+    <el-form :model="form" ref="formRef" label-width="120px">
+      <el-row :gutter="20">
+        <el-col :span="8">
+          <el-form-item label="领料单名称" prop="name">
+            <el-input v-model="form.name" disabled></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="领料单号" prop="code">
+            <el-input v-model="form.code" disabled></el-input>
+          </el-form-item>
+        </el-col>
+
+        <el-col :span="8">
+          <el-form-item label="类型" prop="type">
+            <el-input :value="'自建领料'" disabled></el-input>
+ 
+          </el-form-item>
+        </el-col>
+      </el-row>
+    </el-form>
+    <headerTitle title="领料清单"></headerTitle>
+    <el-table :data="form.detailList" style="width: 100%">
+      <el-table-column
+        prop="workOrderCode"
+        width="50"
+        align="center"
+        label="序号"
+      >
+        <template slot-scope="{ row, $index }">
+          {{ $index + 1 }}
+        </template>
+      </el-table-column>
+
+      <el-table-column prop="categoryCode" label="物品编码" align="center">
+      </el-table-column>
+      <el-table-column prop="categoryName" label="物品名称" align="center">
+      </el-table-column>
+      <el-table-column prop="batchNo" label="批次号" align="center">
+      </el-table-column>
+      <el-table-column label="数量" align="center">
+        <template slot-scope="{ row }">
+          {{ row.demandQuantity }}/{{ row.unit }}
+        </template>
+      </el-table-column>
+      <el-table-column label="领料仓库" align="center">
+        <template slot-scope="{ row }">
+          {{ row.warehouseName }}
+        </template>
+      </el-table-column>
+    </el-table>
+  </div>
+</template>
+
+<script>
+  export default {
+    components: {},
+    props: {
+      businessId: {
+        default: ''
+      },
+      form: {
+        default: {}
+      }
+    },
+    data() {
+      return {
+        detailId: '',
+        list: []
+      };
+    }
+  };
+</script>
+
+<style scoped lang="scss">
+  .ele-dialog-form {
+    .el-form-item {
+      margin-bottom: 10px;
+    }
+  }
+
+  .headbox {
+    display: flex;
+    justify-content: flex-start;
+    align-items: center;
+
+    .amount {
+      font-size: 14px;
+      font-weight: bold;
+      margin-right: 20px;
+    }
+  }
+</style>

+ 3 - 0
src/views/bpm/outgoingManagement/outbound.vue

@@ -1171,6 +1171,9 @@
                 console.log(res, 'form没有executorDeptId有createUserId');
                 this.$set(this.formData, 'fromUser', res.name);
                 this.$set(this.formData.extInfo, 'verifyDeptCode', res.groupId);
+                if( res.groupId){
+                  this.getStaffList({id: res.groupId})
+                }
                 this.$set(
                   this.formData.extInfo,
                   'verifyDeptName',