|
@@ -49,6 +49,9 @@
|
|
|
</Spin>
|
|
|
<p v-html="colr" style="color:#e13d13"></p>
|
|
|
</FormItem>
|
|
|
+ <FormItem label="公司名称" prop="" :required="member.buySubject == '2'">
|
|
|
+ <Input v-model.trim="member.companyName" type="text" :maxlength="40" :disabled="finish_dis" placeholder="请输入公司名称"></Input>
|
|
|
+ </FormItem>
|
|
|
<FormItem label="产品类型">
|
|
|
<!-- <Select v-model="member.products" placeholder="请选择产品类型(暂不支持数据导出)" @on-change="proChange" :disabled="proDis || interested"></Select> -->
|
|
|
<!-- 我的订单不支持编辑产品类型 -->
|
|
@@ -60,11 +63,6 @@
|
|
|
<Option value="3" :disabled="member.buySubject=='2'">大会员补充包</Option>
|
|
|
</Select>
|
|
|
</FormItem>
|
|
|
- <FormItem label="计费模式" prop="billingMode">
|
|
|
- <Select v-model="member.billingMode" placeholder="请选择计费模式" @on-change="moneyChange">
|
|
|
- <Option v-for="item in chargeStatus" :value="item.v" :key="item.v">{{ item.n }}</Option>
|
|
|
- </Select>
|
|
|
- </FormItem>
|
|
|
<FormItem label="购买数量" required v-if="member.buySubject == '2'">
|
|
|
<Input v-model="member.buyCount" type="tel" maxlength="4" @on-keyup="buyHandler" placeholder="请填写购买数量" :disabled="finish_dis"></Input>
|
|
|
</FormItem>
|
|
@@ -196,6 +194,11 @@
|
|
|
<FormItem label="总计" :label-width="194" v-else>
|
|
|
<span class="sum-jin">{{ tipFunc(member.sums) }}</span>
|
|
|
</FormItem>
|
|
|
+ <FormItem label="计费模式" prop="billingMode">
|
|
|
+ <Select v-model="member.billingMode" placeholder="请选择计费模式" @on-change="moneyChange">
|
|
|
+ <Option v-for="item in chargeStatus" :value="item.v" :key="item.v">{{ item.n }}</Option>
|
|
|
+ </Select>
|
|
|
+ </FormItem>
|
|
|
<FormItem label="应付金额" prop="payMoney" v-if="creAuth !== '1'">
|
|
|
<Input
|
|
|
v-model="member.payMoney"
|
|
@@ -256,25 +259,40 @@
|
|
|
:disabled="finish_dis"
|
|
|
></Input>
|
|
|
</FormItem>
|
|
|
- <FormItem label="协议状态" prop="agreementStatus">
|
|
|
- <Select v-model="member.agreementStatus" placeholder="请选择协议状态">
|
|
|
- <Option v-for="item in agreeStatus" :value="item.v" :key="item.v">{{ item.n }}</Option>
|
|
|
+ <FormItem label="约定支付方式" required>
|
|
|
+ <Select v-model="member.payType" placeholder="请选择约定支付方式" :disabled="finish_dis">
|
|
|
+ <Option v-for="item in payTypes" :value="item.v" :key="item.v">{{ item.n }}</Option>
|
|
|
</Select>
|
|
|
</FormItem>
|
|
|
- <FormItem label="签约主体" prop="paybackCompany">
|
|
|
+ <FormItem label="签约主体">
|
|
|
<v-cascader ref="casRef2" :initVal="'h01'" placeholderType="签约主体" reqType="签约主体"
|
|
|
@levelChange="paybackChange" :disabled="finish_dis" v-if="bShow"></v-cascader>
|
|
|
</FormItem>
|
|
|
- <FormItem label="约定支付方式" required>
|
|
|
- <Select v-model="member.payType" placeholder="请选择约定支付方式" :disabled="finish_dis">
|
|
|
- <Option v-for="item in payTypes" :value="item.v" :key="item.v">{{ item.n }}</Option>
|
|
|
+ <FormItem label="协议状态" prop="agreementStatus">
|
|
|
+ <Select v-model="member.agreementStatus" placeholder="请选择协议状态">
|
|
|
+ <Option v-for="item in agreeStatus" :value="item.v" :key="item.v">{{ item.n }}</Option>
|
|
|
</Select>
|
|
|
</FormItem>
|
|
|
+ <OnlineContractForm
|
|
|
+ ref="onlineContractFormRef"
|
|
|
+ v-if="showOnlineContractForm"
|
|
|
+ :buySubject="member.buySubject"
|
|
|
+ :orderEntName="member.companyName"
|
|
|
+ :orderPhone="member.phone"
|
|
|
+ :e_contract_type.sync="member.e_contract_type"
|
|
|
+ :e_contract_userA_type.sync="member.e_contract_userA_type"
|
|
|
+ :e_contract_userA_name.sync="member.e_contract_userA_name"
|
|
|
+ :e_contract_userA_contacts_name.sync="member.e_contract_userA_contacts_name"
|
|
|
+ :e_contract_userA_contacts_tel.sync="member.e_contract_userA_contacts_tel"
|
|
|
+ :e_contract_userA_contacts_address.sync="member.e_contract_userA_contacts_address"
|
|
|
+ :e_contract_userB_contacts_name.sync="member.e_contract_userB_contacts_name"
|
|
|
+ :e_contract_remark.sync="member.e_contract_remark"
|
|
|
+ />
|
|
|
<FormItem label="协议签订时间" v-show="member.agreementStatus == '1'">
|
|
|
<date-sigle ref="sigleRef" :dateType="'date'" :placeholderd="'请选择协议签订时间'" @startDate="agreeDate"
|
|
|
:overTime="0"></date-sigle>
|
|
|
</FormItem>
|
|
|
- <FormItem label="协议编号" v-show="member.agreementStatus == '1'">
|
|
|
+ <FormItem label="协议编号" v-show="member.agreementStatus == '1' && !showOnlineContractForm">
|
|
|
<Input v-model="member.agreementNumber" type="text" placeholder="请输入协议编号"></Input>
|
|
|
</FormItem>
|
|
|
<FormItem label="协议归档状态" v-show="member.agreementStatus == '1'">
|
|
@@ -291,20 +309,17 @@
|
|
|
<Input v-model="member.contract_archive_num" type="tel" maxlength="4" @on-keyup="payHandler"
|
|
|
placeholder="请输入归档份数"></Input>
|
|
|
</FormItem>
|
|
|
- <FormItem label="合同" class="chuan-pay">
|
|
|
+ <FormItem label="归档协议" class="chuan-pay">
|
|
|
<b-upload
|
|
|
ref="uploadRef"
|
|
|
@fileData="contractFile"
|
|
|
- :placeholdered="'请上传合同'"
|
|
|
+ :placeholdered="'请上传归档协议'"
|
|
|
:accepted="'.doc,.pdf,.docx,.rar,.zip,.jpg,.png,.jpeg'"
|
|
|
:formated="['doc','pdf','docx','rar','zip','jpg','png','jpeg']"
|
|
|
:multipled="false"
|
|
|
@onRemove="onRemoveUpload"
|
|
|
></b-upload>
|
|
|
</FormItem>
|
|
|
- <FormItem label="公司名称" prop="" :required="member.buySubject == '2'">
|
|
|
- <Input v-model.trim="member.companyName" type="text" :maxlength="40" :disabled="finish_dis" placeholder="请输入公司名称"></Input>
|
|
|
- </FormItem>
|
|
|
<FormItem label="销售人员">
|
|
|
<sale-select ref="saleRef" :saleType="'1'" @salePerson="salePerson" v-if="bShow"></sale-select>
|
|
|
</FormItem>
|
|
@@ -326,8 +341,8 @@
|
|
|
<date-sigle ref="sigleRef3" :dateType="'date'" :dataV="member.sale_time" :placeholderd="'请选择业绩统计时间'"
|
|
|
@startDate="saleDate" :overTime="0"></date-sigle>
|
|
|
</FormItem>
|
|
|
- <FormItem label="备注">
|
|
|
- <Input v-model="member.remark" type="text" :maxlength="40" placeholder="请输入备注"></Input>
|
|
|
+ <FormItem label="订单备注">
|
|
|
+ <Input v-model="member.remark" type="text" :maxlength="40" placeholder="请输入订单备注"></Input>
|
|
|
</FormItem>
|
|
|
</div>
|
|
|
</Form>
|
|
@@ -368,13 +383,16 @@
|
|
|
import {dateFormatter, getDateSub} from '@/assets/js/date'
|
|
|
import dateSigle from '@/components/dateSigle'
|
|
|
import vCascader from '@/components/cascader'
|
|
|
+import OnlineContractForm from '@/components/OnlineContractForm'
|
|
|
import bUpload from '@/components/uploadFile.vue'
|
|
|
import saleSelect from './salesSelect.vue'
|
|
|
import reviewRecord from './reviewRecord.vue'
|
|
|
|
|
|
|
|
|
export default {
|
|
|
+ name: 'EditBigOrderModal',
|
|
|
components: {
|
|
|
+ OnlineContractForm,
|
|
|
vCascader,
|
|
|
dateSigle,
|
|
|
bUpload,
|
|
@@ -417,7 +435,24 @@ export default {
|
|
|
} else {
|
|
|
return true
|
|
|
}
|
|
|
- }
|
|
|
+ },
|
|
|
+ showOnlineContractForm () {
|
|
|
+ const paybackCompanyCheck = this.member.paybackCompany == 'h01' // 签约主体为:北京剑鱼信息技术有限公司/h01
|
|
|
+ const contractStatusCheck = this.member.agreementStatus == '1' // 协议状态为签协议
|
|
|
+ // 展示条件:
|
|
|
+ // 1. 产品类型是超级订阅(且付费类型为“购买”、“续费”)才展示。
|
|
|
+ // 2. 产品类型是“大会员”且会员套餐为“商机版2.0”、“专家版2.0”(且服务类型为“新购服务”、“延长服务”)
|
|
|
+ // memberLevelMap.id:6'商机版2.0'、7'专家版2.0'
|
|
|
+ const memberLevel = this.member.level
|
|
|
+ if (!memberLevel) return false
|
|
|
+ const memberLevelMap = JSON.parse(memberLevel)
|
|
|
+ // console.log(memberLevelMap)
|
|
|
+ // createType '1'新建 '2'补充 '3'延期
|
|
|
+ const createType = this.nums == 0?this.member.createType:'1'
|
|
|
+ const bigmemberCheck = (memberLevelMap.id == 6 || memberLevelMap.id == 7) && (createType == '1' || createType == '3')
|
|
|
+ const productTypeCheck = bigmemberCheck
|
|
|
+ return paybackCompanyCheck && contractStatusCheck && productTypeCheck
|
|
|
+ },
|
|
|
},
|
|
|
watch: {
|
|
|
bigMemberModuleShow (n) {
|
|
@@ -441,7 +476,7 @@ export default {
|
|
|
this.$refs.sigleRef3.dataVals = new Date(res.sale_time)
|
|
|
},1000)
|
|
|
setTimeout( ()=>{
|
|
|
- if (res.salesperson) {
|
|
|
+ if (res.salesperson && res.saleMoney) {
|
|
|
this.saleTableData = JSON.parse(res.saleMoney).data
|
|
|
}
|
|
|
},2000)
|
|
@@ -473,8 +508,20 @@ export default {
|
|
|
},
|
|
|
created () {
|
|
|
this.getSalesChannelItem()
|
|
|
+ this.getComboList()
|
|
|
},
|
|
|
methods: {
|
|
|
+ getComboList () {
|
|
|
+ const levelDown = []
|
|
|
+ this.$request('/order/getCombo').data().success((res) => {
|
|
|
+ res.data.lists.forEach(v => {
|
|
|
+ if (v.id !== 4) {// 试用版
|
|
|
+ levelDown.push(v)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ this.levelDown = levelDown
|
|
|
+ }).get()
|
|
|
+ },
|
|
|
getSalesChannelItem () {
|
|
|
this.$request('/order/getSalesChannelItem').data({
|
|
|
name: this.reqType
|
|
@@ -670,6 +717,14 @@ export default {
|
|
|
this.optionDis4 = false
|
|
|
this.optionDis5 = false
|
|
|
this.optionDis6 = false
|
|
|
+
|
|
|
+ Object.keys(this.member).forEach(key => {
|
|
|
+ if (key.startsWith('e_contract_')) {
|
|
|
+ // 默认重置
|
|
|
+ this.member[key] = this.$options.data().member[key]
|
|
|
+ }
|
|
|
+ })
|
|
|
+
|
|
|
setTimeout(() => {
|
|
|
// this.$refs.saleRef.salePerson = ''
|
|
|
let sigs = this.$refs.sigleRef
|
|
@@ -1004,9 +1059,9 @@ export default {
|
|
|
}else{
|
|
|
this.colr = ''
|
|
|
this.downDis = false
|
|
|
-
|
|
|
}
|
|
|
-
|
|
|
+ // 触发一次change事件
|
|
|
+ this.leChange(this.member.level)
|
|
|
}).get()
|
|
|
}
|
|
|
if (val == 2 || val == 3) {
|
|
@@ -1324,6 +1379,8 @@ export default {
|
|
|
})
|
|
|
},
|
|
|
leChange(val, check = true) {// 会员套餐
|
|
|
+ // console.log("会员套餐", val, check)
|
|
|
+ if (!val) return
|
|
|
val = val ? JSON.parse(val) : ''
|
|
|
this.sArr = []
|
|
|
this.combo_id = val
|
|
@@ -2004,6 +2061,42 @@ export default {
|
|
|
this.$Notice.warning({title: '请选择计费模式'})
|
|
|
return
|
|
|
}
|
|
|
+ if (this.showOnlineContractForm) {
|
|
|
+ // 如购买主体或甲方类型为“企业”,则公司名称必填
|
|
|
+ const entMark = this.member.buySubject == '2' || this.member.e_contract_userA_type == 2
|
|
|
+ if (entMark && !this.member.companyName) {
|
|
|
+ this.$Notice.warning({title: '公司名称必填'})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (!this.member.e_contract_type) {
|
|
|
+ this.$Notice.warning({title: '电子协议类型必填'})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (!this.member.e_contract_userA_type) {
|
|
|
+ this.$Notice.warning({title: '协议甲方类型必填'})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (!this.member.e_contract_userA_name) {
|
|
|
+ this.$Notice.warning({title: '协议甲方必填'})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (!this.member.e_contract_userA_contacts_name) {
|
|
|
+ this.$Notice.warning({title: '协议甲方联系人必填'})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (!this.member.e_contract_userA_contacts_tel) {
|
|
|
+ this.$Notice.warning({title: '协议甲方联系方式必填'})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (!this.member.e_contract_userA_contacts_address) {
|
|
|
+ this.$Notice.warning({title: '协议甲方联系地址必填'})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (!this.member.e_contract_userB_contacts_name) {
|
|
|
+ this.$Notice.warning({title: '协议乙方联系人必填'})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
if (this.member.buySubject == '2') {
|
|
|
if(this.member.buyCount == '') {
|
|
|
this.$Notice.warning({title: '请输入购买数量'})
|
|
@@ -2133,6 +2226,15 @@ export default {
|
|
|
payType: this.member.payType,
|
|
|
saleDep: this.saleCode,
|
|
|
saleMoney: JSON.stringify({data: this.saleTableData}),
|
|
|
+ // 电子协议相关
|
|
|
+ e_contract_type: this.member.e_contract_type, // 电子协议类型
|
|
|
+ e_contract_userA_type: this.member.e_contract_userA_type, // 协议甲方类型
|
|
|
+ e_contract_userA_name: this.member.e_contract_userA_name, // 协议甲方
|
|
|
+ e_contract_userA_contacts_name: this.member.e_contract_userA_contacts_name, // 协议甲方联系人
|
|
|
+ e_contract_userA_contacts_tel: this.member.e_contract_userA_contacts_tel, // 协议甲方联系方式
|
|
|
+ e_contract_userA_contacts_address: this.member.e_contract_userA_contacts_address, // 协议甲方联系地址
|
|
|
+ e_contract_userB_contacts_name: this.member.e_contract_userB_contacts_name, // 协议乙方联系人
|
|
|
+ e_contract_remark: this.member.e_contract_remark, // 协议备注
|
|
|
}
|
|
|
if (this.returnMyReceivable) {
|
|
|
this.urlReq('/order/updateBigOrder', obj)
|
|
@@ -2312,11 +2414,13 @@ export default {
|
|
|
})
|
|
|
|
|
|
//签约主体
|
|
|
- this.$nextTick(() => {
|
|
|
- this.$refs.casRef2.values = [res.signing_subject]
|
|
|
- //合同地址
|
|
|
+ setTimeout(() => {
|
|
|
+ if (this.$refs.casRef2) {
|
|
|
+ this.$refs.casRef2.values = [res.signing_subject]
|
|
|
+ }
|
|
|
+ //归档协议地址
|
|
|
this.$refs.uploadRef.contractData(contractRes.contract_file_name)
|
|
|
- })
|
|
|
+ }, 200)
|
|
|
this.member.contractUrl = contractRes.contract_file_url
|
|
|
this.curIds = filterData.serversId ? filterData.serversId.split(',').map(Number) : []
|
|
|
|
|
@@ -2335,6 +2439,11 @@ export default {
|
|
|
}
|
|
|
// 补充包列表
|
|
|
this.supplys = filterData.supplys
|
|
|
+
|
|
|
+ let saleMoney = {}
|
|
|
+ if (res.salesperson && res.saleMoney) {
|
|
|
+ saleMoney = JSON.parse(res.saleMoney)
|
|
|
+ }
|
|
|
this.member = {
|
|
|
orderCode: res.order_code, //
|
|
|
createTime: res.create_time, //
|
|
@@ -2385,7 +2494,16 @@ export default {
|
|
|
areaCount: filterData.areaCount,
|
|
|
payType: res.payTypes,
|
|
|
saleCodeModel: res.saleDep,
|
|
|
- saleMoney: res.salesperson?JSON.parse(res.saleMoney):{},
|
|
|
+ saleMoney: saleMoney,
|
|
|
+ // 电子协议相关
|
|
|
+ e_contract_type: contractRes.seal_type || 1, // 电子协议类型
|
|
|
+ e_contract_userA_type: contractRes.partyA_type || 1, // 协议甲方类型
|
|
|
+ e_contract_userA_name: contractRes.partyA_name, // 协议甲方
|
|
|
+ e_contract_userA_contacts_name: contractRes.partyA_person, // 协议甲方联系人
|
|
|
+ e_contract_userA_contacts_tel: contractRes.partyA_tel, // 协议甲方联系方式
|
|
|
+ e_contract_userA_contacts_address: contractRes.partyA_address, // 协议甲方联系地址
|
|
|
+ e_contract_userB_contacts_name: contractRes.partyB_person, // 协议乙方联系人
|
|
|
+ e_contract_remark: contractRes.remark, // 协议备注
|
|
|
}
|
|
|
if (this.member.cycleType === 1) {
|
|
|
this.max_length = 4
|
|
@@ -2413,21 +2531,11 @@ export default {
|
|
|
this.$refs.uploadRef.payHtml = ''
|
|
|
}
|
|
|
}, 200)
|
|
|
- this.$request('/order/getCombo').data().success((res) => {
|
|
|
- this.levelDown = []
|
|
|
- res.data.lists.forEach(v => {
|
|
|
- if (v.id == filterData.comboId) {
|
|
|
- this.member.level = JSON.stringify(v)
|
|
|
- this.leChange(JSON.stringify(v), false)
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- if (v.id !== 4) {// 试用版
|
|
|
- this.levelDown.push(v)
|
|
|
- }
|
|
|
- })
|
|
|
-
|
|
|
- }).get()
|
|
|
+ const currentLevel = this.levelDown.find(e => e.id == filterData.comboId)
|
|
|
+ if (currentLevel) {
|
|
|
+ this.member.level = JSON.stringify(currentLevel)
|
|
|
+ this.leChange(JSON.stringify(currentLevel), false)
|
|
|
+ }
|
|
|
} else {
|
|
|
let obj = {
|
|
|
i_ispreinstall: 0,
|
|
@@ -2563,7 +2671,16 @@ export default {
|
|
|
single:false, // 大会员商机版2.0-单省版 radio 选中状态
|
|
|
areaCount:'0', // 大会员省份版-省份数量
|
|
|
payType: '',
|
|
|
- saleCodeModel: []
|
|
|
+ saleCodeModel: [],
|
|
|
+ // 电子协议相关
|
|
|
+ e_contract_type: 1, // 电子协议类型
|
|
|
+ e_contract_userA_type: 1, // 协议甲方类型
|
|
|
+ e_contract_userA_name: '', // 协议甲方
|
|
|
+ e_contract_userA_contacts_name: '', // 协议甲方联系人
|
|
|
+ e_contract_userA_contacts_tel: '', // 协议甲方联系方式
|
|
|
+ e_contract_userA_contacts_address: '', // 协议甲方联系地址
|
|
|
+ e_contract_userB_contacts_name: '', // 协议乙方联系人
|
|
|
+ e_contract_remark: '', // 协议备注
|
|
|
},
|
|
|
isAll: false,
|
|
|
radioDis1: false,
|
|
@@ -2578,7 +2695,7 @@ export default {
|
|
|
rowArr: {},
|
|
|
agreeStatus: [
|
|
|
{v: '0', n: '不签协议'},
|
|
|
- {v: '1', n: '已签协议'}
|
|
|
+ {v: '1', n: '签协议'}
|
|
|
],
|
|
|
payTypes: [
|
|
|
{v: 'transferAccounts', n: '对公转账'},
|
|
@@ -3205,32 +3322,30 @@ export default {
|
|
|
<style lang="scss">
|
|
|
.disabled-modal {
|
|
|
|
|
|
-.readonly-scroll {
|
|
|
- max-height: 40vh;
|
|
|
- min-height: 300px;
|
|
|
- overflow-y: scroll;
|
|
|
- position: relative;
|
|
|
- border: unset;
|
|
|
- overflow-x: hidden;
|
|
|
-}
|
|
|
-
|
|
|
-.ivu-form.mainDetail {
|
|
|
- position: relative;
|
|
|
+ .readonly-scroll {
|
|
|
+ max-height: 40vh;
|
|
|
+ min-height: 300px;
|
|
|
+ overflow-y: scroll;
|
|
|
+ position: relative;
|
|
|
+ border: unset;
|
|
|
+ overflow-x: hidden;
|
|
|
+ }
|
|
|
|
|
|
-&
|
|
|
-::after {
|
|
|
- content: "";
|
|
|
- position: absolute;
|
|
|
- top: -8px;
|
|
|
- left: -5px;
|
|
|
- width: 102%;
|
|
|
- height: 102%;
|
|
|
- border-radius: 10px;
|
|
|
- background-color: rgba(225, 225, 225, 0.0);
|
|
|
- display: inline-block;
|
|
|
- z-index: 99999999;
|
|
|
-}
|
|
|
+ .ivu-form.mainDetail {
|
|
|
+ position: relative;
|
|
|
|
|
|
-}
|
|
|
+ &::after {
|
|
|
+ content: "";
|
|
|
+ position: absolute;
|
|
|
+ top: -8px;
|
|
|
+ left: -5px;
|
|
|
+ width: 102%;
|
|
|
+ height: 102%;
|
|
|
+ border-radius: 10px;
|
|
|
+ background-color: rgba(225, 225, 225, 0.0);
|
|
|
+ display: inline-block;
|
|
|
+ z-index: 99999999;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
</style>
|