|
@@ -1,5 +1,5 @@
|
|
|
<template>
|
|
|
- <div class="detail-model">
|
|
|
+ <div class="detail-model new-d-model">
|
|
|
<!-- 线下开发票 -->
|
|
|
<Modal title="线下开发票" v-model="iShow" class-name="order-model piao-model" :mask-closable="false"
|
|
|
@on-visible-change="visibleChange">
|
|
@@ -79,9 +79,22 @@
|
|
|
<!-- 上传归档协议 -->
|
|
|
<Modal title="上传归档协议" v-model="pShow" class-name="order-model contract-model" :mask-closable="false"
|
|
|
@on-visible-change="visibleChange">
|
|
|
- <b-upload ref="uploadRef2" @fileData="contractFile" :placeholdered="'请上传归档协议'"
|
|
|
- :accepted="'.doc,.pdf,.docx,.rar,.zip,.jpg,.png,.jpeg'"
|
|
|
- :formated="['doc', 'pdf', 'docx', 'rar', 'zip', 'jpg', 'png', 'jpeg']" :multipled="false"></b-upload>
|
|
|
+ <Form :label-width="110">
|
|
|
+ <FormItem required label="归档时间">
|
|
|
+ <date-sigle ref="sigleRef5" :dateType="'date'" :placeholderd="'请选择归档时间'" @startDate="guiDate"
|
|
|
+ :overTime="0"></date-sigle>
|
|
|
+ </FormItem>
|
|
|
+ <FormItem required label="归档份数">
|
|
|
+ <Input v-model.number="contract.contract_archive_num" type="tel" maxlength="4" @on-keyup="payHandler"
|
|
|
+ placeholder="请输入归档份数"></Input>
|
|
|
+ </FormItem>
|
|
|
+ <FormItem required label="归档协议">
|
|
|
+ <b-upload ref="uploadRef2" @fileData="contractFile" :placeholdered="'请上传归档协议'"
|
|
|
+ :accepted="'.doc,.pdf,.docx,.rar,.zip,.jpg,.png,.jpeg'"
|
|
|
+ :formated="['doc', 'pdf', 'docx', 'rar', 'zip', 'jpg', 'png', 'jpeg']" :multipled="false"></b-upload>
|
|
|
+ </FormItem>
|
|
|
+ </Form>
|
|
|
+
|
|
|
<div slot="footer">
|
|
|
<Button type="primary" size="large" @click="pingSub" :disabled="isDisable">提交</Button>
|
|
|
<Button size="large" @click="pingCancel">取消</Button>
|
|
@@ -182,7 +195,7 @@
|
|
|
:maxlength="11" placeholder="请输入手机号"></Input>
|
|
|
</FormItem>
|
|
|
<FormItem label="开始日期" style="width: 460px;" required>
|
|
|
- <date-sigle ref="sigleRef1" :dateType="'date'" :placeholderd="'请选择开始日期'" @startDate="startDate_"
|
|
|
+ <date-sigle ref="sigleRef1" :dateType="'date'" :disabledDateCallback="permissionActivationOptions.disabledDate" :placeholderd="'请选择开始日期'" @startDate="startDate_"
|
|
|
:overTime="0"></date-sigle>
|
|
|
</FormItem>
|
|
|
</Form>
|
|
@@ -196,38 +209,19 @@
|
|
|
@on-visible-change="performanceVisible">
|
|
|
<Form ref="performance" :model="performanceFrom" :label-width="120">
|
|
|
<FormItem label="请输入变更后业绩归属情况" class="formTitle" :label-width="230"></FormItem>
|
|
|
- <PerformanceBelongsModule ref="modulePerformanceBelong" setDefaultUser />
|
|
|
- <FormItem label="销售人员">
|
|
|
- <sale-select ref="saleRef" :saleType="'1'" @salePerson="salePerson" transfer></sale-select>
|
|
|
- </FormItem>
|
|
|
- <FormItem class="table-order1" v-show="saleTableData.length > 0">
|
|
|
- <Table border :columns="saleTable" :data="saleTableData">
|
|
|
- <template slot-scope="{ row }" slot="name">
|
|
|
- <strong>{{ row.name }}</strong>
|
|
|
- </template>
|
|
|
- <template slot-scope="{ row }" slot="saler_dept">
|
|
|
- <strong>{{ row.saler_dept }}</strong>
|
|
|
- </template>
|
|
|
- <template slot-scope="{ row, index }" slot="money">
|
|
|
- <Input style="padding: 0 10px;" v-model="saleTableData[index].money" type="number" placeholder="请输入"></Input>
|
|
|
- </template>
|
|
|
- <template slot-scope="{ row }" slot="channel">
|
|
|
- <span style="display:none;">{{ row.channel }}</span>
|
|
|
- <!-- <Input v-model="saleTableData[index].channel" type="number" placeholder="请输入"></Input> -->
|
|
|
-<!-- <Cascader :data="channelListGetters" v-model="row.channel" @on-change="(value,selectedData)=>{ onChangeCascader(value,selectedData,row)}" transfer />-->
|
|
|
- <!-- <v-cascader ref="casRef" :data-id="row.channel" :initVal="row.channel" placeholderType="销售渠道" type="1" quType="1" transfer></v-cascader> -->
|
|
|
- <el-cascader
|
|
|
- v-model="row.distribution_channel"
|
|
|
- :options="saleChannelOptions"
|
|
|
- :props="cascaderProps"
|
|
|
- @change="onChangeCascader(row, $event)"
|
|
|
- size="medium"
|
|
|
- placeholder="请选择销售渠道"
|
|
|
- clearable>
|
|
|
- </el-cascader>
|
|
|
- </template>
|
|
|
- </Table>
|
|
|
- </FormItem>
|
|
|
+ <performanceBelongs
|
|
|
+ :salePerson.sync="pageForm.salePerson"
|
|
|
+ :saleWay.sync="pageForm.saleWay"
|
|
|
+ :salePersonTableList.sync="pageForm.salePersonTableList"
|
|
|
+ :salesMoneyTotal="0"
|
|
|
+ :hasContract="true"
|
|
|
+ :setDefaultUser="true"
|
|
|
+ :showDep="true"
|
|
|
+ :showTable="true"
|
|
|
+ :showSummary="false"
|
|
|
+ :showSelectWay="false"
|
|
|
+ :skipCheckTotal="true"
|
|
|
+ />
|
|
|
<FormItem label="变更原因">
|
|
|
<RadioGroup v-model="performanceFrom.changeReason">
|
|
|
<Radio :label="item" v-for="item in reasonList" :key="item">{{item}}</Radio>
|
|
@@ -288,17 +282,17 @@ import { copyImage } from '@/utils/copy'
|
|
|
import vCascader from '@/components/cascader'
|
|
|
import { getChannelCode, formatPrice, debounce } from '@/utils/globalFun'
|
|
|
import QRCode from 'qrcode'
|
|
|
-import PerformanceBelongsModule from "@/views/create-order/components/performanceBelongsModule.vue";
|
|
|
+import PerformanceBelongs from "@/views/create-order/components/performanceBelongs.vue";
|
|
|
+import { calcSaleTableList } from "@/views/create-order/hooks/utils"
|
|
|
export default {
|
|
|
+ name: 'new-d-model',
|
|
|
props: {
|
|
|
data: {}
|
|
|
},
|
|
|
components: {
|
|
|
- PerformanceBelongsModule,
|
|
|
+ PerformanceBelongs,
|
|
|
dateSigle,
|
|
|
bUpload,
|
|
|
- saleSelect,
|
|
|
- vCascader
|
|
|
},
|
|
|
methods: {
|
|
|
dateFormatter, formatPrice,
|
|
@@ -376,44 +370,22 @@ export default {
|
|
|
}).post()
|
|
|
},
|
|
|
performanceVisible(val) {
|
|
|
+ this.performanceFrom.changeReason = ''
|
|
|
+ this.pageForm.salePerson = []
|
|
|
+ this.pageForm.salePersonTableList = []
|
|
|
+
|
|
|
if (val) {
|
|
|
const { saleDataRes } = JSON.parse(JSON.stringify(this.data))
|
|
|
- let list =[]
|
|
|
- if (saleDataRes.saleFinal) {
|
|
|
- list = saleDataRes.saleFinal.list || []
|
|
|
- let sarr = list.map(ele => {
|
|
|
- return ele.id + ''
|
|
|
- })
|
|
|
- this.$nextTick(()=>{
|
|
|
- this.$refs.saleRef.salePerson = sarr
|
|
|
- setTimeout(() => {
|
|
|
- if (saleDataRes.saleFinal && saleDataRes.saleFinal.list.length > 0) {
|
|
|
- let salelist = JSON.parse(JSON.stringify(saleDataRes.saleFinal.list))
|
|
|
- salelist.forEach(ele => {
|
|
|
- ele.channel = getChannelCode(this.channelListGetters, ele.distribution_channel)
|
|
|
- ele.money = ele.money / 100
|
|
|
- })
|
|
|
- this.saleTableData = salelist
|
|
|
- let ajaxinitSalelist = JSON.parse(JSON.stringify(saleDataRes.saleFinal.list))
|
|
|
- ajaxinitSalelist.forEach(ele => {
|
|
|
- ele.money = ele.money / 100
|
|
|
- // ele.channel = ele.distribution_channel
|
|
|
- })
|
|
|
- this.ajaxinitSalelist = ajaxinitSalelist
|
|
|
- }
|
|
|
- }, 500)
|
|
|
- })
|
|
|
- this.reasonList = saleDataRes.reason
|
|
|
- }
|
|
|
- }else{
|
|
|
- this.performanceFrom.changeReason = ''
|
|
|
- this.saleTableData = []
|
|
|
- this.$refs.saleRef.salePerson = []
|
|
|
+
|
|
|
+ this.reasonList = saleDataRes.reason
|
|
|
+ const result = calcSaleTableList(saleDataRes?.saleFinal?.list || [])
|
|
|
+ this.pageForm.salePerson = result.salePerson.filter(v => v) || []
|
|
|
+ this.pageForm.salePersonTableList = result.salePersonTableList || []
|
|
|
}
|
|
|
},
|
|
|
performanceSave() {
|
|
|
- let salesMoneylist = this.saleTableData.map(ele => {
|
|
|
- const channel = ele.channel[1]? ele.channel[1] : ''
|
|
|
+ let salesMoneylist = this.pageForm.salePersonTableList.map(ele => {
|
|
|
+ const channel = ele.saleWay[1]? ele.saleWay[1] : ''
|
|
|
return { id: Number(ele.id), money: this.fixedNum(ele.money), channel: channel }
|
|
|
})
|
|
|
this.performanceDis = true
|
|
@@ -505,6 +477,12 @@ export default {
|
|
|
contractFile(val) {
|
|
|
this.contract.contractFileUrl = val
|
|
|
},
|
|
|
+ guiDate(val) {
|
|
|
+ this.contract.contract_archive_time = val
|
|
|
+ },
|
|
|
+ payHandler() {
|
|
|
+ this.contract.contract_archive_num = Number(String(this.contract.contract_archive_num).replace(/[^\d]+/g, ''))
|
|
|
+ },
|
|
|
startDate(val) {
|
|
|
this.returned.returnTime = val
|
|
|
},
|
|
@@ -560,10 +538,12 @@ export default {
|
|
|
return
|
|
|
}
|
|
|
this.isDisable = true
|
|
|
- this.$request('/order/uploadContractFile').data({
|
|
|
- contractId: $.isEmptyObject(this.contractData) == false ? this.contractData.id : '',
|
|
|
+ this.$jyRequest('/jyOrderManager/order/uploadContractFile').data({
|
|
|
+ contractId: $.isEmptyObject(this.contractData) == false ? this.contractData.id : -1,
|
|
|
orderCode: this.orderDetail.order_code,
|
|
|
- contractFileUrl: this.contract.contractFileUrl
|
|
|
+ contractFileUrl: this.contract.contractFileUrl,
|
|
|
+ contract_archive_time: this.contract.contract_archive_time,
|
|
|
+ contract_archive_num: this.contract.contract_archive_num,
|
|
|
}).showSuccessTip().success(() => {
|
|
|
this.pShow = false
|
|
|
this.inited()
|
|
@@ -788,6 +768,13 @@ export default {
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
|
+ // 业绩归属
|
|
|
+ pageForm: {
|
|
|
+ salePerson: [],
|
|
|
+ saleWay: [],
|
|
|
+ salePersonTableList: [],
|
|
|
+ },
|
|
|
+ //
|
|
|
paymentCodeShow: false,
|
|
|
btnloading: false,
|
|
|
pa_dis: false,
|
|
@@ -812,7 +799,9 @@ export default {
|
|
|
{ v: '3', n: '专用发票(纸质发票)' }
|
|
|
],
|
|
|
contract: {
|
|
|
- contractFileUrl: ''
|
|
|
+ contractFileUrl: '',
|
|
|
+ contract_archive_num: '',
|
|
|
+ contract_archive_time: ''
|
|
|
},
|
|
|
funds: {
|
|
|
sum: '',
|
|
@@ -823,6 +812,11 @@ export default {
|
|
|
startTime: '',
|
|
|
orderCode: ''
|
|
|
},
|
|
|
+ permissionActivationOptions: {
|
|
|
+ disabledDate (date) {
|
|
|
+ return date && date.valueOf() < Date.now() - 86400000;
|
|
|
+ }
|
|
|
+ },
|
|
|
saleTable: [
|
|
|
{
|
|
|
title: '销售人员',
|
|
@@ -974,7 +968,7 @@ export default {
|
|
|
return this.data.orderData
|
|
|
},
|
|
|
contractData () {
|
|
|
- return this.data.contractData
|
|
|
+ return this.data.contractRes
|
|
|
},
|
|
|
returnRes () {
|
|
|
return this.data.returnRes
|
|
@@ -1099,4 +1093,14 @@ export default {
|
|
|
text-align: center;
|
|
|
}
|
|
|
}
|
|
|
+.new-d-model {
|
|
|
+ .performance-belongs-line {
|
|
|
+ .el-form-item__label {
|
|
|
+ width: 120px;
|
|
|
+ }
|
|
|
+ .el-form-item__content {
|
|
|
+ margin-left: 120px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
</style>
|