chris vor 3 Jahren
Ursprung
Commit
ced6ce509a

+ 17 - 0
src/api/sale.js

@@ -94,3 +94,20 @@ export function getContractDetail (id) {
     method: 'get'
   })
 }
+
+// 委外列表
+export function getOutsourceList (params) {
+  return request({
+    url: request.adornUrl(`/biz-service/purchaseCommission/list`),
+    method: 'get',
+    params: params
+  })
+}
+
+// 委外详情
+export function getOutsourceDetail (id) {
+  return request({
+    url: request.adornUrl(`/biz-service/purchaseCommission/info/${id}`),
+    method: 'get'
+  })
+}

+ 3 - 3
src/views/modules/order/order.vue

@@ -112,13 +112,13 @@
           fixed="right"
           header-align="center"
           align="center"
-          width="180"
+          width="120"
           label="操作">
           <template slot-scope="scope">
             <el-button v-if="isAuth('order:ctl:info')" type="text" size="small" @click="detailHandle(scope.row.orderId)">查看</el-button>
             <el-button v-if="isAuth('order:ctl:editor') && Number(scope.row.orderState) < 2" type="text" size="small" @click="addOrUpdateHandle(scope.row.orderId,false)">编辑</el-button>
-            <el-button v-if="isAuth('order:ctl:deliver') && Number(scope.row.orderState) === 3" type="text" size="small" @click="deliverHandle(scope.row.orderId)">发货</el-button>
-            <el-button v-if="isAuth('order:ctl:arrived') && Number(scope.row.orderState) === 4 " type="text" size="small" @click="arrivedHandle(scope.row)">送达</el-button>
+<!--            <el-button v-if="isAuth('order:ctl:deliver') && Number(scope.row.orderState) === 3" type="text" size="small" @click="deliverHandle(scope.row.orderId)">发货</el-button>-->
+<!--            <el-button v-if="isAuth('order:ctl:arrived') && Number(scope.row.orderState) === 4 " type="text" size="small" @click="arrivedHandle(scope.row)">送达</el-button>-->
           </template>
         </el-table-column>
       </el-table>

+ 294 - 0
src/views/modules/sale/outsource-detail.vue

@@ -0,0 +1,294 @@
+<!-- 委外详情 -->
+<template>
+  <div>
+    <div class="my-title">查看</div>
+    <div style="margin-left: 20px;margin-right: 20px">
+      <!-- 工作流 -->
+      <div v-show="dataForm.workFlowBusinessExt">
+        <el-steps :active="dataForm.workFlowBusinessExt&&dataForm.workFlowBusinessExt.workFlowProcessStepList?dataForm.workFlowBusinessExt.workFlowProcessStepList.length + 2:0" align-center style="margin-bottom: 20px">
+          <template v-for="(item, i) in stepList">
+            <el-step :icon="item.icon" :title="item.title" :description="item.description"></el-step>
+          </template>
+        </el-steps>
+        <el-collapse style="margin-bottom: 20px">
+          <el-collapse-item>
+            <template slot="title">
+              <span style="color: red">审批日志(展开查看更多):</span>
+            </template>
+            <template v-for="(item, i) in logList">
+              <div>{{++i}}:{{item.approverName}}  {{item.createTime}}  {{item.approvalValue}}</div>
+            </template>
+          </el-collapse-item>
+        </el-collapse>
+      </div>
+      <div v-show="isFlow">
+        <approve-component ref="approve" @approveFinished="approveFinished"/>
+      </div>
+      <e-desc title="基本信息" column="3">
+        <e-desc-item label="委外编码">{{dataForm.purchaseCode}}</e-desc-item>
+        <e-desc-item label="付款方式" span="2">
+          <el-checkbox-group v-model="idsPayType">
+            <el-checkbox disabled class="my-cb"  v-for="(item,i) in optionsPayType" :label="item.code" :key="item.code"><span>{{item.value}}</span></el-checkbox>
+          </el-checkbox-group>
+        </e-desc-item>
+
+        <e-desc-item label="委外类别">{{dataForm.purchaseTypeDesc}}</e-desc-item>
+        <e-desc-item label="申请人">{{dataForm.applierName}}</e-desc-item>
+        <e-desc-item label="申请部门">{{dataForm.deptName}}</e-desc-item>
+
+        <e-desc-item label="备注说明" span="3">{{dataForm.notes}}</e-desc-item>
+      </e-desc>
+      <e-desc title="委外产品明细">
+        <el-table
+          :data="materialDetails"
+          border
+          style="width: 100%;">
+          <el-table-column
+            label="序号"
+            type="index"
+            width="50"
+            align="center">
+          </el-table-column>
+          <el-table-column
+            prop="detailId"
+            label="ID"
+            v-if="false">
+          </el-table-column>
+          <el-table-column
+            prop="name"
+            header-align="center"
+            align="center"
+            min-width="120"
+            label="产品名称">
+          </el-table-column>
+          <el-table-column
+            prop="name"
+            header-align="center"
+            align="center"
+            min-width="120"
+            label="产品编号">
+          </el-table-column>
+          <el-table-column
+            prop="specification"
+            header-align="center"
+            align="center"
+            min-width="120"
+            label="型号及规格">
+          </el-table-column>
+          <el-table-column
+            prop="cnt"
+            header-align="center"
+            align="center"
+            label="数量">
+          </el-table-column>
+          <el-table-column
+            prop="unitName"
+            header-align="center"
+            align="center"
+            label="单位">
+          </el-table-column>
+          <el-table-column
+            prop="specification"
+            header-align="center"
+            align="center"
+            min-width="140"
+            label="委外期限">
+          </el-table-column>
+          <el-table-column
+            prop="specification"
+            header-align="center"
+            align="center"
+            min-width="140"
+            label="批次号">
+          </el-table-column>
+          <el-table-column
+            prop="specification"
+            header-align="center"
+            align="center"
+            min-width="140"
+            label="要求说明">
+          </el-table-column>
+          <el-table-column
+            prop="specification"
+            header-align="center"
+            align="center"
+            min-width="140"
+            label="到料时间">
+          </el-table-column>
+          <el-table-column
+            prop="specification"
+            header-align="center"
+            align="center"
+            min-width="140"
+            label="合格数量">
+          </el-table-column>
+          <el-table-column
+            prop="specification"
+            header-align="center"
+            align="center"
+            min-width="140"
+            label="工艺文件">
+          </el-table-column>
+          <el-table-column
+            prop="specification"
+            header-align="center"
+            align="center"
+            min-width="140"
+            label="附件">
+          </el-table-column>
+          <el-table-column
+            prop="price"
+            header-align="center"
+            align="center"
+            label="不含税单价">
+          </el-table-column>
+          <el-table-column
+            prop="taxPrice"
+            header-align="center"
+            align="center"
+            label="含税单价">
+          </el-table-column>
+          <el-table-column
+            prop="taxAmount"
+            header-align="center"
+            align="center"
+            label="含税总价">
+          </el-table-column>
+          <el-table-column
+            prop="taxRate"
+            header-align="center"
+            align="center"
+            label="税率">
+            <template slot-scope="scope">
+              <span>{{scope.row.taxRate?(Number(scope.row.taxRate * 100)).toFixed(0):''}}</span>%
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="notes"
+            header-align="center"
+            align="center"
+            label="备注">
+          </el-table-column>
+        </el-table>
+      </e-desc>
+      <e-desc>
+        <e-desc-item label="合计(含税)" span="3"><span style="margin-left: 20px">{{totalAmount}}</span></e-desc-item>
+      </e-desc>
+    </div>
+    <span slot="footer" class="dialog-footer">
+      <el-button @click="onChose">返回</el-button>
+    </span>
+  </div>
+</template>
+
+<script>
+  import EDesc from '../common/e-desc'
+  import EDescItem from '../common/e-desc-item'
+  import { dealStepData, dealStepLogs } from '@/api/util'
+  import { getOutsourceDetail } from '@/api/sale'
+  import ApproveComponent from '../common/approve-component'
+  export default {
+    name: 'outsource-detail',
+    components: {
+      EDesc, EDescItem, ApproveComponent
+    },
+    data () {
+      return {
+        isFlow: false,
+        id: 0,
+        dataForm: {},
+        materialDetails: [],
+        stepList: [],
+        logList: [],
+        totalAmount: 0,
+        idsPayType: [],
+        optionsPayType: [
+          {
+            code: '0', value: '对公转账'
+          },
+          {
+            code: '1', value: '先行垫付'
+          },
+          {
+            code: '2', value: '财务预支'
+          }
+        ]
+      }
+    },
+    methods: {
+      onChose () {
+        this.$emit('onChose')
+      },
+      async init (id, businessType) {
+        this.isFlow = !!(businessType && businessType !== '')
+        this.id = id || 0
+        this.dataForm = {}
+        this.materialDetails = []
+        this.stepList = []
+        this.logList = []
+        this.idsPayType = []
+        this.getDetails(businessType)
+      },
+      getDetails (businessType) {
+        getOutsourceDetail(this.id).then(({data}) => {
+          if (data && data.code === '200') {
+            this.dataForm = data.data
+            // 流程图展示
+            dealStepData(data.data.workFlowBusinessExt.workFlowProcessStepList, this.stepList)
+            dealStepLogs(data.data.workFlowBusinessExt.processLogList, this.logList)
+            // 付款方式
+            if (data.data.payType) {
+              this.idsPayType.push(data.data.payType)
+            }
+            // 获取采购物品明细
+            if (data.data.details) {
+              this.materialDetails = data.data.details
+              this.calTotal()
+            }
+            // 初始化审批Form
+            this.showApproveForm(businessType, this.id)
+          }
+        })
+      },
+      calTotal () {
+        let total = 0
+        if (this.materialDetails) {
+          this.materialDetails.forEach((item) => {
+            total += item.taxAmount ? Number(item.taxAmount) : 0
+          })
+        }
+        this.totalAmount = Number(total).toFixed(2)
+      },
+      // 百分比
+      formatPercent (row) {
+        if (!row.taxRate) return ''
+        let str = (Number(row.taxRate * 100)).toFixed(0)
+        str += '%'
+        return str
+      },
+      // 初始化审批Form
+      showApproveForm (businessType, businessId) {
+        if (this.isFlow) {
+          this.$nextTick(() => {
+            this.$refs.approve.init(businessType, businessId)
+          })
+        }
+      },
+      // 审批完成
+      approveFinished () {
+        this.onChose()
+        this.$emit('approveFinished')
+      }
+    }
+  }
+</script>
+
+<style scoped>
+.my-line{
+  border-bottom: 1px solid #c0c4cc;
+  margin-bottom: 10px;
+}
+.title{
+  padding: 10px 0 ;
+}
+</style>

+ 173 - 28
src/views/modules/sale/outsource.vue

@@ -3,8 +3,21 @@
   <div class="sale">
     <template v-if="!detailVisible && !addOrUpdateVisible && !changeFormVisible &&!changeAttachVisible && !attachVisible && !noticeChangeAttachVisible">
       <el-form :inline="true" :model="dataForm" @keyup.enter.native="search()">
-        <el-form-item label="名称" prop="supplierName">
-          <el-input v-model="dataForm.supplierName" placeholder="客户名称" clearable/>
+        <el-form-item label="类别">
+          <el-select
+            v-model="dataForm.purchaseType"
+            remote
+            placeholder="请选择">
+            <el-option
+              v-for="item in optionsType"
+              :key="item.code"
+              :label="item.value"
+              :value="item.code">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="名称或说明" prop="supplierName">
+          <el-input v-model="dataForm.supplierName" placeholder="产品名称" clearable/>
         </el-form-item>
         <el-form-item label="申请日期">
           <el-date-picker
@@ -16,10 +29,21 @@
             end-placeholder="结束日期">
           </el-date-picker>
         </el-form-item>
+        <el-form-item label="状态">
+          <el-select
+            v-model="dataForm.purchaseState"
+            remote
+            placeholder="请选择">
+            <el-option
+              v-for="item in optionsOutsourceState"
+              :key="item.code"
+              :label="item.value"
+              :value="item.code">
+            </el-option>
+          </el-select>
+        </el-form-item>
         <el-form-item>
           <el-button @click="search()">查询</el-button>
-          <el-button v-if="isAuth('pur:purchaseContract:save')" type="primary" @click="addOrUpdateHandle(0)">录入</el-button>
-          <el-button type="primary" @click="setNoticeChangeHandle()">合同更改通知人设置</el-button>
         </el-form-item>
       </el-form>
       <el-table
@@ -34,73 +58,139 @@
           align="center">
         </el-table-column>
         <el-table-column
-          prop="contractCode"
+          prop="purchaseCode"
           header-align="center"
           align="center"
           min-width="120"
           :show-tooltip-when-overflow="true"
-          label="合同编码">
+          label="采购编码">
         </el-table-column>
         <el-table-column
-          prop="supplierName"
+          prop="goodsName"
           header-align="center"
           align="center"
           min-width="140"
           :show-tooltip-when-overflow="true"
-          label="供应商名称">
+          label="产品名称">
         </el-table-column>
         <el-table-column
-          prop="contractNumber"
+          prop="goodsId"
           header-align="center"
           align="center"
           min-width="120"
           :show-tooltip-when-overflow="true"
-          label="合同号">
+          label="产品编号">
         </el-table-column>
         <el-table-column
-          prop="deliveryTime"
+          prop="purchaseType"
           header-align="center"
           align="center"
           min-width="140"
           :show-overflow-tooltip="true"
-          label="合同交期">
+          label="委外类别">
+        </el-table-column>
+        <el-table-column
+          prop="specification"
+          header-align="center"
+          align="center"
+          min-width="100"
+          :show-tooltip-when-overflow="true"
+          label="型号及规格">
+        </el-table-column>
+        <el-table-column
+          prop="cnt"
+          header-align="center"
+          align="center"
+          label="数量">
+        </el-table-column>
+        <el-table-column
+          prop="qualifiedCnt"
+          header-align="center"
+          align="center"
+          label="合格数量">
         </el-table-column>
         <el-table-column
-          prop="totalAmount"
+          prop="unitName"
           header-align="center"
           align="center"
           min-width="100"
-          label="合同总金额">
+          :show-tooltip-when-overflow="true"
+          label="单位">
         </el-table-column>
         <el-table-column
-          prop="isChange"
+          prop="deadline"
           header-align="center"
           align="center"
-          label="是否进行合同更改">
+          min-width="140"
+          :show-tooltip-when-overflow="true"
+          label="采购期限">
+        </el-table-column>
+        <el-table-column
+          prop="arrivedTime"
+          header-align="center"
+          align="center"
+          min-width="140"
+          :show-tooltip-when-overflow="true"
+          label="到料时间">
         </el-table-column>
         <el-table-column
-          prop="changeContentDesc"
+          prop="batchNumber"
           header-align="center"
           align="center"
-          min-width="160"
+          min-width="140"
+          :show-tooltip-when-overflow="true"
+          label="批次号/用途">
+        </el-table-column>
+        <el-table-column
+          prop="supplierName"
+          header-align="center"
+          align="center"
+          min-width="140"
           :show-tooltip-when-overflow="true"
-          label="更改内容简述">
+          label="供应商">
         </el-table-column>
         <el-table-column
+          prop="technology"
           header-align="center"
           align="center"
-          label="合同附件">
+          min-width="140"
+          :show-tooltip-when-overflow="true"
+          label="工艺文件">
+<!--          <template slot-scope="scope">-->
+<!--            <el-button :disabled="!scope.row.noticeAttachList || scope.row.noticeAttachList.length === 0" type="text" size="small" @click="changeDetails(scope.row)">查看</el-button>-->
+<!--          </template>-->
+        </el-table-column>
+        <el-table-column
+          header-align="center"
+          align="center"
+          label="附件">
           <template slot-scope="scope">
             <el-button :disabled="!scope.row.attachList || scope.row.attachList.length === 0" type="text" size="small" @click="attachDetails(scope.row)">查看</el-button>
           </template>
         </el-table-column>
         <el-table-column
+          prop="applyTime"
           header-align="center"
           align="center"
-          label="合同更改通知单附件">
-          <template slot-scope="scope">
-            <el-button :disabled="!scope.row.noticeAttachList || scope.row.noticeAttachList.length === 0" type="text" size="small" @click="changeDetails(scope.row)">查看</el-button>
-          </template>
+          min-width="140"
+          :show-tooltip-when-overflow="true"
+          label="申请时间">
+        </el-table-column>
+        <el-table-column
+          prop="applierId"
+          header-align="center"
+          align="center"
+          min-width="140"
+          :show-tooltip-when-overflow="true"
+          label="申请人">
+        </el-table-column>
+        <el-table-column
+          prop="orgId"
+          header-align="center"
+          align="center"
+          min-width="140"
+          :show-tooltip-when-overflow="true"
+          label="申请部门">
         </el-table-column>
         <el-table-column
           prop="notes"
@@ -110,6 +200,20 @@
           :show-overflow-tooltip="true"
           label="备注">
         </el-table-column>
+        <el-table-column
+          prop="approvalState"
+          header-align="center"
+          align="center"
+          :formatter="formatState"
+          label="审批状态">
+        </el-table-column>
+        <el-table-column
+          prop="purchaseState"
+          header-align="center"
+          align="center"
+          :formatter="formatOutsourceState"
+          label="委外状态">
+        </el-table-column>
         <el-table-column
           fixed="right"
           header-align="center"
@@ -146,7 +250,7 @@
 <script>
 import AddOrUpdate from '../cus/contract-record-add-or-update'
 import Detail from '../cus/contract-record-detail'
-import { getContractList } from '@/api/sale'
+import { getOutsourceList } from '@/api/sale'
 import AttachDetail from '../common/attach-detail'
 import NoticeChangeSetting from '../cus/contract-record-notice-change-setting'
 import ChangeForm from '../cus/contract-record-change'
@@ -173,10 +277,35 @@ export default {
       pageSize: 10,
       totalPage: 0,
       dataListLoading: false,
-      dataListSelections: []
+      dataListSelections: [],
+      optionsType: [], // 类别
+      optionsOutsourceState: [
+        {
+          code: '0',
+          value: '待委外'
+        },
+        {
+          code: '1',
+          value: '委外中'
+        },
+        {
+          code: '2',
+          value: '已入库'
+        },
+        {
+          code: '3',
+          value: '入库中'
+        },
+        {
+          code: '4',
+          value: '入库异常'
+        }
+      ], // 委外状态
+      optionsState: [] // 状态
     }
   },
   created () {
+    this.optionsState = this.$store.state.common.approveStates
     this.getDataList()
   },
   methods: {
@@ -199,9 +328,13 @@ export default {
       let params = {
         'current': this.pageIndex,
         'size': this.pageSize,
-        'supplierName': this.dataForm.supplierName ? this.dataForm.supplierName : null
+        'supplierName': this.dataForm.supplierName ? this.dataForm.supplierName : null,
+        'applyTimeBegin': this.dataForm.date ? this.dataForm.date[0] : null,
+        'applyTimeEnd': this.dataForm.date ? this.dataForm.date[1] : null,
+        'purchaseState': this.dataForm.purchaseState ? this.dataForm.purchaseState : null,
+        'purchaseType': this.dataForm.purchaseType ? this.dataForm.purchaseType : null
       }
-      getContractList(params).then(({data}) => {
+      getOutsourceList(params).then(({data}) => {
         if (data && data.code === '200') {
           this.dataList = data.data.records
           this.totalPage = Number(data.data.total)
@@ -291,6 +424,18 @@ export default {
         this.$refs.changeDetail.init(row.noticeAttachList)
       })
     },
+    // 转换属性“委外状态”
+    formatOutsourceState (row) {
+      if (!row.purchaseState) return ''
+      const item1 = this.optionsOutsourceState.find((item) => item.code === row.purchaseState.toString())
+      return item1 ? item1.value : ''
+    },
+    // 转换属性“审批状态”
+    formatState (row) {
+      if (!row.approvalState) return ''
+      const item1 = this.optionsState.find((item) => item.code === row.approvalState.toString())
+      return item1 ? item1.value : ''
+    },
     // 附件
     attachDetails (row) {
       this.attachVisible = true

+ 8 - 0
src/views/modules/sale/purchase.vue

@@ -81,6 +81,14 @@
           :formatter="formatType"
           label="采购类别">
         </el-table-column>
+        <el-table-column
+          prop="details.specification"
+          header-align="center"
+          align="center"
+          width="120"
+          :show-tooltip-when-overflow="true"
+          label="型号及规格">
+        </el-table-column>
         <el-table-column
           prop="createTime"
           header-align="center"