hfxc226 %!s(int64=2) %!d(string=hai) anos
pai
achega
4487d76812

+ 85 - 0
src/api/activiti/activiti-outstoreform.js

@@ -0,0 +1,85 @@
+import { axios } from '@/utils/request'
+
+/**
+ * update func
+ * parameter: { }
+ * @param parameter
+ * @returns {*}
+ */
+export function startOutStoreForm (parameter) {
+  return axios({
+    url: '/activiti/outStore/form/start',
+    method: 'PUT',
+    data: parameter
+  })
+}
+
+/**
+ * update func 终止提交审批
+ * parameter: { }
+ * @param parameter
+ * @returns {*}
+ */
+export function stopOutStoreFormForAudit (parameter) {
+  return axios({
+    url: '/activiti/outStore/form/stop',
+    method: 'PUT',
+    data: parameter
+  })
+}
+
+/**
+ * update func 审批开始
+ * parameter: { }
+ * @param parameter
+ * @returns {*}
+ */
+export function auditOutStoreFormForAudit (parameter) {
+  return axios({
+    url: '/activiti/outStore/form/audit',
+    method: 'PUT',
+    data: parameter
+  })
+}
+
+/**
+ * update func 审批历史
+ * parameter: { }
+ * @param parameter
+ * @returns {*}
+ */
+export function historyOutStoreFormForAudit (parameter) {
+  return axios({
+    url: '/activiti/outStore/form/history/' + parameter.id,
+    method: 'GET',
+    data: parameter
+  })
+}
+
+/**
+ * update func 转签
+ * parameter: { }
+ * @param parameter
+ * @returns {*}
+ */
+export function changeOutStoreFormForAudit (parameter) {
+  return axios({
+    url: '/activiti/outStore/form/assign',
+    method: 'PUT',
+    data: parameter
+  })
+}
+
+/**
+ * update func 签收
+ * parameter: { }
+ * @param parameter
+ * @returns {*}
+ */
+export function claimOutStoreFormForAudit (parameter) {
+  return axios({
+    url: '/activiti/outStore/form/claim',
+    method: 'PUT',
+    data: parameter
+  })
+}

+ 9 - 4
src/utils/dict.js

@@ -368,7 +368,8 @@ DictCache.VALUE = {
   SB_INFO_AUDIT_MODEL_NAME: {
     'sb_info_scrap': '设备报废审批', // 报废
     'sb_info_stop': '设备停用审批', // 停用
-    'sb_info_allocate': '设备调拨审批' // 调拨
+    'sb_info_allocate': '设备调拨审批', // 调拨
+    'out_store_back': '仓库审批' // 调拨
   },
   CUSTOM_TEMPLATE_SB_REMARK_NUMBER: {
     SB_FIELD_TYPE: 1,
@@ -803,8 +804,10 @@ DictCache.VALUE = {
    * 出库单状态
    */
   OUT_STORE_FORM_STATUS: {
+    CREATED: 0, // 未出库
     NOT_EXECUTE: 1, // 未出库
-    EXECUTING: 2 // 已出库
+    EXECUTING: 2, // 已出库
+    FINISH: 3 // 未出库
   },
   /**
    * 入库单状态
@@ -1400,8 +1403,10 @@ DictCache.COLOR = {
    * 出库单状态
    */
   OUT_STORE_FORM_STATUS: {
-    1: 'processing', // 待审批
-    2: 'success' // 审批通过
+    0: 'error', // 新建
+    1: 'warning', // 待审核
+    2: 'processing', // 待出库
+    3: 'success' // 已完成
   },
   /**
    * 退货单状态

+ 21 - 10
src/views/activiti/task/MyTask.vue

@@ -37,6 +37,7 @@
       </s-table>
     </div>
     <detail-audit-scrap ref="detailAuditScrapModal" @ok="handleOk"/>
+    <detail-y-y-audit ref="detailYYAuditModal" @ok="handleOk"/>
     <assign-form ref="assignForm" @ok="handleOk"/>
   </a-card>
 </template>
@@ -45,15 +46,17 @@
 import { STable, Ellipsis } from '@/components'
 import AssignForm from './modules/AssignForm'
 import DetailAuditScrap from '@/views/sb/scraps/modules/DetailAudit'
+import DetailYYAudit from '@/views/store/outstoreform/modules/DetailYYAudit'
 import { getTaskPage } from '@/api/activiti/activiti'
 import { fetchCustomFieldTemplateData, fetchCustomFieldTemplateVOData } from '@/api/customize/fieldTemplateData'
+import { changeOutStoreFormForAudit } from '@/api/activiti/activiti-outstoreform'
 
 export default {
   name: 'TaskList',
   components: {
     STable,
     Ellipsis,
-    DetailAuditScrap,
+    DetailAuditScrap,DetailYYAudit,
     AssignForm
   },
   data () {
@@ -150,20 +153,28 @@ export default {
     },
     handleAudit (record) {
       this.visible = false
-      fetchCustomFieldTemplateVOData({ id: record.targetId }).then(res => {
-        const templateData = JSON.parse(res.data.data)
-        const recordTemp = res.data
-        recordTemp.taskId = record.taskId
-        this.$refs.detailAuditScrapModal.base(recordTemp, templateData)
+      if (record.targetCode === 'out_store_back') { // 仓库审批跳转到仓库审批页面
+        this.$refs.detailYYAuditModal.base(record)
+      } else {
+        fetchCustomFieldTemplateVOData({ id: record.targetId }).then(res => {
+          const templateData = JSON.parse(res.data.data)
+          const recordTemp = res.data
+          recordTemp.taskId = record.taskId
+          this.$refs.detailAuditScrapModal.base(recordTemp, templateData)
         /* record.remark = res.data.remark
         this.$refs.detailAuditScrapModal.base(record, templateData) */
-      })
+        })
+      }
     },
     handleChange (record) {
-      fetchCustomFieldTemplateData({ id: record.targetId }).then(res => {
-        record.remark = res.data.remark
+      if (record.targetCode === 'out_store_back') { // 仓库审批
         this.$refs.assignForm.base(record)
-      })
+      } else {
+        fetchCustomFieldTemplateData({ id: record.targetId }).then(res => {
+          record.remark = res.data.remark
+          this.$refs.assignForm.base(record)
+        })
+      }
     },
     handleOk () {
       this.visible = true

+ 14 - 3
src/views/activiti/task/MyTaskClaim.vue

@@ -44,6 +44,7 @@ import AssignForm from './modules/AssignForm'
 import DetailAuditScrap from '@/views/sb/scraps/modules/DetailAudit'
 import { getTaskPageClaim } from '@/api/activiti/activiti'
 import { claimSbInfoScrapForAudit } from '@/api/activiti/activiti-sb-scrap'
+import { claimOutStoreFormForAudit } from '@/api/activiti/activiti-outstoreform'
 import { fetchCustomFieldTemplateData } from '@/api/customize/fieldTemplateData'
 export default {
   name: 'TaskList',
@@ -147,15 +148,25 @@ export default {
     },
     handleClaim (record) {
       this.confirmLoading = true
-      fetchCustomFieldTemplateData({ id: record.targetId }).then(res => {
-        claimSbInfoScrapForAudit({ taskId: record.taskId, auditModelKey: res.data.remark })
+      if (record.targetCode === 'out_store_back') { // 仓库审批
+        claimOutStoreFormForAudit({ taskId: record.taskId })
           .then((res) => {
             this.$message.info(res.data)
             this.handleOk()
           }).catch(() => {
             this.confirmLoading = false
           })
-      })
+      } else {
+        fetchCustomFieldTemplateData({ id: record.targetId }).then(res => {
+          claimSbInfoScrapForAudit({ taskId: record.taskId, auditModelKey: res.data.remark })
+            .then((res) => {
+              this.$message.info(res.data)
+              this.handleOk()
+            }).catch(() => {
+              this.confirmLoading = false
+            })
+        })
+      }
     },
     handleOk () {
       this.visible = true

+ 19 - 8
src/views/activiti/task/modules/AssignForm.vue

@@ -35,6 +35,7 @@
 <script>
 import { queryUser } from '@/api/upms/user'
 import { changeSbInfoScrapForAudit } from '@/api/activiti/activiti-sb-scrap'
+import { changeOutStoreFormForAudit } from '@/api/activiti/activiti-outstoreform'
 
 export default {
   name: 'DispatchBaseForm',
@@ -82,14 +83,24 @@ export default {
           return
         }
         values.taskId = this.record.taskId
-        values.auditModelKey = this.record.remark
-        changeSbInfoScrapForAudit(values)
-          .then((res) => {
-            this.$message.info(res.data)
-            this.handleCancel(values)
-          }).catch(() => {
-            this.confirmLoading = false
-          })
+        if (this.record.targetCode === 'out_store_back') { // 仓库审批
+          changeOutStoreFormForAudit(values)
+            .then((res) => {
+              this.$message.info(res.data)
+              this.handleOk()
+            }).catch(() => {
+              this.confirmLoading = false
+            })
+        } else {
+          values.auditModelKey = this.record.remark
+          changeSbInfoScrapForAudit(values)
+            .then((res) => {
+              this.$message.info(res.data)
+              this.handleCancel(values)
+            }).catch(() => {
+              this.confirmLoading = false
+            })
+        }
       })
     },
     handleCancel (values) {

+ 13 - 14
src/views/store/outstoreform/OutStoreFormYY.vue

@@ -59,20 +59,20 @@
         <span slot="action" slot-scope="record">
           <template>
             <a @click="handleView(record)">查看</a>
-            <a-divider v-if="record.status==1" type="vertical" />
-            <a v-if="$auth('store-out-store-forms-edit')&&record.status==1" @click="handleEdit(record)">修改</a>
-            <a-divider v-if="record.status==1" type="vertical" />
-            <a-popconfirm v-if="record.status==1" title="是否要出库,出库将更新库存?" @confirm="updateStore(record.id)">
-              <a>出库</a>
+            <a-divider v-if="record.status == 0" type="vertical" />
+            <a v-if="$auth('store-out-store-forms-edit')&&record.status==0" @click="handleEdit(record)">修改</a>
+            <a-divider v-if="record.status==0" type="vertical" />
+            <a-popconfirm v-if="record.status==0" title="是否提交审核?" @confirm="updateStore(record.id)">
+              <a>提交审核</a>
             </a-popconfirm>
             <a-divider v-if="record.status==1" type="vertical" />
             <a-popconfirm v-if="$auth('store-out-store-forms-del')&&record.status==1" title="是否要删除该条数据?" @confirm="batchDelete(record.id)">
               <a>删除</a>
             </a-popconfirm>
-            <a-divider v-if="record.status==2" type="vertical" />
+<!--            <a-divider v-if="record.status==2" type="vertical" />
             <a-popconfirm v-if="record.status==2" title="是否要撤销?" @confirm="updateStoreBack(record.id)">
               <a>撤销</a>
-            </a-popconfirm>
+            </a-popconfirm>-->
           </template>
         </span>
         <span slot="status" slot-scope="text">
@@ -91,9 +91,8 @@
 import { STable, Ellipsis } from '@/components'
 import BaseForm from './modules/BaseFormYY'
 import Detail from './modules/DetailYY'
-import { updateStore, updateStoreBack, getOutStoreFormPage, deleteOutStoreForms, fetchOutStoreForm, exportOutStoreForm } from '@/api/store/outstoreform'
-
-import { addOutFormYY } from '@/api/yongyou/yongyou'
+import { updateStoreBack, getOutStoreFormPage, deleteOutStoreForms, fetchOutStoreForm, exportOutStoreForm } from '@/api/store/outstoreform'
+import { startOutStoreForm } from '@/api/activiti/activiti-outstoreform'
 
 export default {
   name: 'OutStoreFormList',
@@ -134,13 +133,13 @@ export default {
           title: '出库单号',
           dataIndex: 'outNo'
         },
-        {
+        /*  {
           title: '出库类型',
           dataIndex: 'type',
           customRender: (text, record, index) => {
             return this.BaseTool.Object.getField(this.typeMap, text)
           }
-        },
+        }, */
         {
           title: '状态',
           dataIndex: 'status',
@@ -262,8 +261,8 @@ export default {
       })
     },
     updateStore (id) {
-      addOutFormYY({ id: id }).then(res => {
-        this.$message.info('已提交到仓库,请联系仓库管理员审核')
+      startOutStoreForm({ id: id }).then(res => {
+        this.$message.info('已提交,请等待主管审核')
         this.$refs.table.refresh()
       })
     },

+ 4 - 8
src/views/store/outstoreform/modules/BaseFormYY.vue

@@ -51,13 +51,13 @@
             </a-tree-select>
           </a-form-item>
         </a-col>-->
-        <a-col :lg="12" :md="24" :sm="24" v-show="false">
+<!--        <a-col :lg="12" :md="24" :sm="24">
           <a-form-item
             label="出库类型"
             :labelCol="BaseTool.Constant.labelCol"
             :wrapperCol="BaseTool.Constant.wrapperCol"
           >
-            <a-select @change="typeChange" v-decorator="['type', {initValue: 1, rules: [{required: true, message: '出库类型不能为空'}]}]" placeholder="请选择">
+            <a-select  @change="typeChange" v-decorator="['type', {initValue: 1, rules: [{required: true, message: '出库类型不能为空'}]}]" placeholder="请选择">
               <a-select-option
                 v-for="(label,value) in typeMap"
                 :key="value"
@@ -66,7 +66,7 @@
               </a-select-option>
             </a-select>
           </a-form-item>
-        </a-col>
+        </a-col>-->
         <!--        <a-col :lg="12" :md="24" :sm="24">
           <a-form-item
             label="操作人"
@@ -124,7 +124,7 @@
       :data-source="data"
       :columns="columns"
       tableLayout="auto"
-      rowKey="id"
+      rowKey="id + cbatch"
       :row-selection="rowSelection">
       <template slot="num" slot-scope="text, record">
         <div class="editable-cell-input-wrapper">
@@ -213,10 +213,6 @@ export default {
           title: '规格',
           dataIndex: 'ggxh'
         },
-        {
-          title: '仓库',
-          dataIndex: 'storeName'
-        },
         {
           title: '批次',
           dataIndex: 'cbatch'

+ 6 - 4
src/views/store/outstoreform/modules/DetailYY.vue

@@ -31,21 +31,21 @@
       tableLayout="auto"
       rowKey="cbatch">
     </a-table>
-    <template slot="footer">
-      <a-button :loading="confirmLoading" type="primary" @click="handleCancel()">返回</a-button>
-    </template>
+
+    <history ref="history" :audit="false" :ok="handleCancel"></history>
   </a-card>
 </template>
 
 <script>
 import { updateStore, fetchOutStoreForm } from '@/api/store/outstoreform'
 import DetailList from '@/components/tools/DetailList'
+import History from '@/views/activiti/History'
 const DetailListItem = DetailList.Item
-
 export default {
   name: 'OutStoreFormDetail',
   components: {
     DetailList,
+    History,
     DetailListItem
   },
   data () {
@@ -128,6 +128,8 @@ export default {
       this.modalTitle = '详情'
       this.model = record
       this.data = record.detailList
+      const modal = this.$refs.history
+      modal.base(record, null)
     },
     handleCancel () {
       this.visible = false

+ 158 - 0
src/views/store/outstoreform/modules/DetailYYAudit.vue

@@ -0,0 +1,158 @@
+<template>
+  <a-card :bordered="false" v-show="visible" class="card" :title="modalTitle">
+    <a-row :gutter="48" slot="extra">
+      <a-col :md="48" :sm="48">
+        <span class="table-page-search-submitButtons" style="float: right">
+          <a-popconfirm v-if="model.status==1" title="是否要提交到仓库?" @confirm="updateStore()">
+            <a-button type="primary">提交仓库</a-button>
+          </a-popconfirm>
+          <a-button style="margin-left: 8px" @click="handleCancel">返回</a-button>
+        </span>
+      </a-col>
+    </a-row>
+    <detail-list title="" :col="3">
+      <detail-list-item term="单号">{{ model.outNo }}</detail-list-item>
+      <detail-list-item term="类型">{{ BaseTool.Object.getField(typeMap,model.type) }}</detail-list-item>
+      <detail-list-item term="仓库">{{ model.storeName }}</detail-list-item>
+      <detail-list-item term="状态"><badge :text="BaseTool.Object.getField(statusMap,model.status)" :status="statusMap[model.status]"/></detail-list-item>
+      <detail-list-item term="是否出库"><badge :text="BaseTool.Object.getField(yesNoMap,model.isOut)" :status="statusMap[model.status]"/></detail-list-item>
+      <detail-list-item term="创建人">{{ model.createdUserName }}</detail-list-item>
+      <detail-list-item term="更新人">{{ model.updateUserName }}</detail-list-item>
+      <detail-list-item term="更新日期">{{ model.updateTime }}</detail-list-item>
+    </detail-list>
+    <detail-list title="" :col="1">
+      <detail-list-item term="备注">{{ model.remark }}</detail-list-item>
+    </detail-list>
+    <title-divider title="备件明细" width="90px"></title-divider>
+    <a-table
+      bordered
+      :data-source="data"
+      :columns="columns"
+      tableLayout="auto"
+      rowKey="cbatch">
+    </a-table>
+    <history ref="history" :audit="audit" @ok="handleCancel"></history>
+  </a-card>
+</template>
+
+<script>
+import { updateStore, fetchOutStoreForm } from '@/api/store/outstoreform'
+import DetailList from '@/components/tools/DetailList'
+import History from '@/views/activiti/History'
+const DetailListItem = DetailList.Item
+
+export default {
+  name: 'OutStoreFormDetail',
+  components: {
+    DetailList,
+    DetailListItem,
+    History
+  },
+  props: {
+    audit: {
+      type: Boolean,
+      default: true
+    }
+  },
+  data () {
+    return {
+      confirmLoading: false,
+      mdl: {},
+      modalTitle: null,
+      visible: false,
+      // 下拉框map
+      typeMap: {},
+      statusMap: {},
+      yesNoMap: {},
+      model: {
+        'outNo': null,
+        'type': null,
+        'pickId': null,
+        'storeId': null,
+        'storeName': null,
+        'pickNo': null,
+        'totalPrice': null,
+        'remark': null,
+        'createdUserId': null,
+        'updateUserId': null,
+        'updateTime': null,
+        'createdUserName': null,
+        'updateUserName': null
+      },
+      // 表头
+      columns: [
+        {
+          title: '序号',
+          dataIndex: 'index',
+          customRender: (text, record, index) => {
+            return index + 1
+          }
+        },
+        {
+          title: '备件名称',
+          dataIndex: 'spareName'
+        },
+        {
+          title: '编号',
+          dataIndex: 'no'
+        },
+        {
+          title: '规格',
+          dataIndex: 'ggxh'
+        },
+        {
+          title: '仓库',
+          dataIndex: 'storeName'
+        },
+        {
+          title: '批次',
+          dataIndex: 'cbatch'
+        },
+        {
+          title: '申请数量',
+          dataIndex: 'num',
+          width: 150
+        },
+        {
+          title: '实际数量',
+          dataIndex: 'realNum',
+          width: 150
+        }
+      ],
+      data: []
+    }
+  },
+  created () {
+    // 下拉框map
+    this.typeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.OUT_STORE_FORM_TYPE)
+    this.statusMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.OUT_STORE_FORM_STATUS)
+    this.yesNoMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.YES_NO)
+  },
+  methods: {
+    base (record) {
+      this.visible = true
+      this.modalTitle = '详情'
+      this.model = record
+      this.data = record.detailList
+      const modal = this.$refs.history
+      modal.base(record, this.task.taskId)
+    },
+    handleCancel () {
+      this.visible = false
+      this.confirmLoading = false
+      this.$emit('ok')
+    },
+    handleOk () {
+      fetchOutStoreForm({ id: this.model.id }).then(res => {
+        this.model = res.data
+      })
+    },
+    updateStore () {
+      updateStore({ id: this.model.id }).then(res => {
+        this.$message.info('成功')
+        this.handleOk()
+      })
+    }
+  }
+}
+</script>