|
@@ -0,0 +1,1060 @@
|
|
|
+
|
|
|
+<script setup>
|
|
|
+ import serviceVarietyDia from './components/serviceVarietyDia.vue'
|
|
|
+ import {useRouter,useRoute} from 'vue-router'
|
|
|
+ import {ElMessage} from 'element-plus'
|
|
|
+ import {getSellerList,getContractSearchList} from '@/api/crm'
|
|
|
+ import {getServiceList,registerAdd,registerDetail,registerEdit,registerInvoice,registerPayment} from '@/api/financialMana'
|
|
|
+
|
|
|
+ const router = useRouter()
|
|
|
+ const route = useRoute()
|
|
|
+
|
|
|
+ const contractInfoForm=ref(null)
|
|
|
+ // 开票记录表单
|
|
|
+ const invoiceFormRef=ref(null)
|
|
|
+ // 到款记录表单
|
|
|
+ const placementFormRef=ref(null)
|
|
|
+ // 合同信息
|
|
|
+ const contractInfo=reactive({
|
|
|
+ /*
|
|
|
+ 操作类型
|
|
|
+ 查看-view 合规登记-compliance 开票登记-invoice 到款登记-placement
|
|
|
+ */
|
|
|
+ operationtype:"compliance",
|
|
|
+ form:{
|
|
|
+ product_id:1,
|
|
|
+ contract_register_id:'',
|
|
|
+ crm_contract_id:0,
|
|
|
+ contract_source:0,
|
|
|
+ contract_code:'',
|
|
|
+ company_name:'',
|
|
|
+ seller_id:'',
|
|
|
+ seller_name:'',
|
|
|
+ contract_status:'',
|
|
|
+ start_date:'',
|
|
|
+ end_date:'',
|
|
|
+ contract_amount:'',
|
|
|
+ contract_type:'',
|
|
|
+ sign_date:'',
|
|
|
+ agreed_pay_time:'',
|
|
|
+ services:[],
|
|
|
+ remark:""
|
|
|
+ },
|
|
|
+ moneyData:{
|
|
|
+ haveInvoiceMoney:'',
|
|
|
+ waitInvoiceMoney:'',
|
|
|
+ allInvoiceMoney:'',
|
|
|
+ // 到款金额
|
|
|
+ havePlacementMoney:'',
|
|
|
+ waitPlacementMoney:'',
|
|
|
+ allPlacementMoney:''
|
|
|
+ },
|
|
|
+ // 有效期
|
|
|
+ contractValidityDate:[],
|
|
|
+ //销售列表
|
|
|
+ sellerList:[],
|
|
|
+ rules:{
|
|
|
+ contract_source:{required:true,message:'合同来源不能为空',trigger:'change'},
|
|
|
+ contract_code:{required:true,message:'合同编号不能为空',trigger:'blur'},
|
|
|
+ company_name:{required:true,message:'客户名称不能为空',trigger:'blur'},
|
|
|
+ seller_id:{required:true,message:'销售姓名不能为空',trigger:['blur','change']},
|
|
|
+ contract_status:{required:true,message:'合同状态不能为空',trigger:'change'},
|
|
|
+ start_date:{required:true,message:'合同有效期不能为空',trigger:'change'},
|
|
|
+ contract_amount:[{required:true,message:'合同金额不能为空',trigger:'blur'},
|
|
|
+ {
|
|
|
+ validator:(rule,value,callback)=>{
|
|
|
+ if(!parseFloat(value)){
|
|
|
+ callback(new Error('合同金额格式错误'))
|
|
|
+ }else{
|
|
|
+ callback()
|
|
|
+ }
|
|
|
+ },
|
|
|
+ trigger:'blur'
|
|
|
+ }],
|
|
|
+ contract_type:{required:true,message:'合同类型不能为空',trigger:'change'},
|
|
|
+ sign_date:{required:true,message:'签订日不能为空',trigger:'change'},
|
|
|
+ agreed_pay_time:{required:true,message:'约定付款时间不能为空',trigger:'blur'}
|
|
|
+
|
|
|
+ },
|
|
|
+ // 合同编号----------------------列表
|
|
|
+ contractNoArray:[],
|
|
|
+ // 请求列表参数
|
|
|
+ contractNoQuery:{
|
|
|
+ page_size:20,
|
|
|
+ current:1,
|
|
|
+ product_id:1,
|
|
|
+ keyword:''
|
|
|
+ },
|
|
|
+ contractNoTotal:0,
|
|
|
+ contractNoLoading:false,
|
|
|
+ // --------------套餐信息
|
|
|
+ // 选中的套餐
|
|
|
+ checkedService:[],
|
|
|
+ //套餐列表
|
|
|
+ serviceArray:[],
|
|
|
+ // 当前小套餐选中的品种
|
|
|
+ currentSmallService:{},
|
|
|
+ // checkedServiceDetail:{},
|
|
|
+ // 查看套餐弹窗
|
|
|
+ serviceShow:false,
|
|
|
+ // 显示选择品种 - FICC小套餐
|
|
|
+ serviceVarietyShow:false,
|
|
|
+ // 1-大套餐 2-小套餐
|
|
|
+ serviceType:0,
|
|
|
+ // 品种选择
|
|
|
+ varietyDiaShow:false,
|
|
|
+ // -----------------登记进度
|
|
|
+ progressList:[],
|
|
|
+ })
|
|
|
+ // ---------------开票信息
|
|
|
+ const invoiceForm=reactive({
|
|
|
+ invoiceData:[
|
|
|
+ {
|
|
|
+ amount:'',
|
|
|
+ invoice_date:''
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ rowErrorShow:''
|
|
|
+ })
|
|
|
+ // ---------------到款信息
|
|
|
+ const placementForm=reactive({
|
|
|
+ placementData:[
|
|
|
+ {
|
|
|
+ amount:'',
|
|
|
+ invoice_date:''
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ rowErrorShow:''
|
|
|
+ })
|
|
|
+
|
|
|
+ const previewImage=ref('')
|
|
|
+ const previewImageTitle=ref('')
|
|
|
+ watch(()=> contractInfo.moneyData.haveInvoiceMoney ,(newValue)=>{
|
|
|
+ contractInfo.moneyData.waitInvoiceMoney = contractInfo.moneyData.allInvoiceMoney-newValue
|
|
|
+ contractInfo.moneyData.waitInvoiceMoney=Math.round(contractInfo.moneyData.waitInvoiceMoney*100)/100
|
|
|
+ })
|
|
|
+ watch(()=> contractInfo.moneyData.havePlacementMoney ,(newValue)=>{
|
|
|
+ contractInfo.moneyData.waitPlacementMoney = contractInfo.moneyData.allPlacementMoney-newValue
|
|
|
+ contractInfo.moneyData.waitPlacementMoney=Math.round(contractInfo.moneyData.waitPlacementMoney*100)/100
|
|
|
+ })
|
|
|
+ const contractSourceArray=['非CRM合同导入','CRM合同导入']
|
|
|
+ const contractStatusArray=[{id:1,label:"已审批"},{id:2,label:"单章寄回"},{id:3,label:"已签回"}]
|
|
|
+ const contractTypeArray=[{id:1,label:"新签"},{id:2,label:"续约"}]
|
|
|
+ const operationType=[{op_type:1,label:"合规登记"},{op_type:2,label:"开票登记"},{op_type:3,label:"到款登记"},
|
|
|
+ {op_type:4,label:"修改合同状态"},{op_type:5,label:"删除合同登记"}]
|
|
|
+ // -----------------------method
|
|
|
+ //获取销售列表
|
|
|
+ const getSellerListFun=()=>{
|
|
|
+ getSellerList().then(res=>{
|
|
|
+ contractInfo.sellerList=res.data || []
|
|
|
+ // console.log(contractInfo.sellerList);
|
|
|
+ })
|
|
|
+ }
|
|
|
+ // 获取服务列表
|
|
|
+ const getServiceListFun=()=>{
|
|
|
+ getServiceList().then(res=>{
|
|
|
+ contractInfo.serviceArray=res.data || []
|
|
|
+ // console.log(contractInfo.serviceArray);
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ // 有效期变更触发函数
|
|
|
+ const contractValidityDateChane=(value)=>{
|
|
|
+ if(value){
|
|
|
+ contractInfo.form.start_date=value[0]
|
|
|
+ contractInfo.form.end_date=value[1]
|
|
|
+ }else{
|
|
|
+ contractInfo.form.start_date=contractInfo.form.end_date=''
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 合同来源改变
|
|
|
+ const contractSourceChange=(value)=>{
|
|
|
+ // 切换来源,清空数据
|
|
|
+ contractInfo.form={...contractInfo.form,
|
|
|
+ crm_contract_id:0,
|
|
|
+ contract_code:'',
|
|
|
+ company_name:'',
|
|
|
+ seller_id:'',
|
|
|
+ seller_name:'',
|
|
|
+ contract_status:'',
|
|
|
+ start_date:'',
|
|
|
+ end_date:'',
|
|
|
+ contract_amount:'',
|
|
|
+ contract_type:'',
|
|
|
+ sign_date:'',
|
|
|
+ agreed_pay_time:'',
|
|
|
+ remark:""
|
|
|
+ }
|
|
|
+ contractInfo.contractValidityDate=[]
|
|
|
+ setTimeout(()=>{
|
|
|
+ contractInfoForm.value && contractInfoForm.value.clearValidate()
|
|
|
+ },0)
|
|
|
+ }
|
|
|
+ // 服务改变
|
|
|
+ const serciveChange=(value,type,openDia=true)=>{
|
|
|
+ // console.log(value,type);
|
|
|
+ if(type==2){
|
|
|
+ contractInfo.serviceVarietyShow=value
|
|
|
+ contractInfo.varietyDiaShow=openDia&&value
|
|
|
+ }
|
|
|
+ contractInfo.serviceType = value?type:0
|
|
|
+ }
|
|
|
+ const getVarieties=(item)=>{
|
|
|
+ contractInfo.currentSmallService= {
|
|
|
+ service_template_id: item.service_template_id,
|
|
|
+ Value: item.Value,
|
|
|
+ tableData: item.tableData,
|
|
|
+ chart_permission_ids:item.chart_permission_ids,
|
|
|
+ tableHeadData: item.tableHeadData
|
|
|
+ }
|
|
|
+ // console.log(item);
|
|
|
+ }
|
|
|
+ // 合同编号远程搜索
|
|
|
+ const contractNoSearch=(value)=>{
|
|
|
+ if(!value.trim()) return
|
|
|
+ contractInfo.contractNoQuery.keyword=value
|
|
|
+ contractInfo.contractNoQuery.current=1
|
|
|
+ contractInfo.contractNoArray=[]
|
|
|
+ getContractSearchListFun()
|
|
|
+ // console.log(value);
|
|
|
+ }
|
|
|
+ const loadContractNoMore=()=>{
|
|
|
+ if(contractInfo.contractNoArray.length >=contractInfo.contractNoTotal) return
|
|
|
+ contractInfo.contractNoQuery.current++
|
|
|
+ getContractSearchListFun()
|
|
|
+ }
|
|
|
+ const getContractSearchListFun=()=>{
|
|
|
+ contractInfo.contractNoLoading=true
|
|
|
+ getContractSearchList(contractInfo.contractNoQuery).then(res=>{
|
|
|
+ contractInfo.contractNoArray=contractInfo.contractNoArray.concat(res.data.list || [])
|
|
|
+ contractInfo.contractNoTotal=res.data.page.total
|
|
|
+ }).finally(()=>{
|
|
|
+ contractInfo.contractNoLoading=false
|
|
|
+ })
|
|
|
+ }
|
|
|
+ // 合同编号选中
|
|
|
+ const selectContractNo=(value)=>{
|
|
|
+ let selectItem=contractInfo.contractNoArray.find(item=>item.contract_code == value)
|
|
|
+ // console.log(selectItem);
|
|
|
+ contractInfo.form.company_name=selectItem.company_name
|
|
|
+ contractInfo.form.crm_contract_id=selectItem.contract_id
|
|
|
+ contractInfo.form.start_date=selectItem.start_date
|
|
|
+ contractInfo.form.end_date=selectItem.end_date
|
|
|
+ contractInfo.contractValidityDate=[selectItem.start_date,selectItem.end_date]
|
|
|
+ contractInfo.form.contract_amount=selectItem.price
|
|
|
+ contractInfo.form.seller_name=selectItem.seller_name
|
|
|
+ contractInfo.form.seller_id=selectItem.seller_id
|
|
|
+ contractInfo.form.contract_type=selectItem.contract_type_key
|
|
|
+ contractInfoForm.value && contractInfoForm.value.validateField()
|
|
|
+ }
|
|
|
+ // 销售选中
|
|
|
+ const selectSeller=(value)=>{
|
|
|
+ contractInfo.form.seller_name=contractInfo.sellerList.find(item => item.admin_id==value).real_name
|
|
|
+ }
|
|
|
+
|
|
|
+ const submit=()=>{
|
|
|
+ // 查看-view 合规登记-compliance 开票登记-invoice 到款登记-placement
|
|
|
+ if(contractInfo.operationtype=='compliance'){
|
|
|
+ complianceSubmit()
|
|
|
+ }else if(contractInfo.operationtype=='invoice'){
|
|
|
+ invoiceSubmit()
|
|
|
+ }else if(contractInfo.operationtype=='placement'){
|
|
|
+ placementSubmit()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 表格添加行
|
|
|
+ const addRow=(type,index)=>{
|
|
|
+ if(type=='invoice'){
|
|
|
+ invoiceForm.invoiceData.splice((index+1),0,{amount:'',invoice_date:''})
|
|
|
+ }else{
|
|
|
+ placementForm.placementData.splice((index+1),0,{amount:'',invoice_date:''})
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 表格删除行
|
|
|
+ const deleteRow=(type,index)=>{
|
|
|
+ if(type=='invoice'){
|
|
|
+ if(invoiceForm.invoiceData[index].amount=='' && invoiceForm.invoiceData[index].invoice_date==''){
|
|
|
+ // 没有内容 直接删除
|
|
|
+ invoiceForm.invoiceData.splice(index,1)
|
|
|
+ }else{
|
|
|
+ ElMessageBox.confirm('删除后不可恢复,是否删除该条开票记录?',
|
|
|
+ '提示',
|
|
|
+ {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning',
|
|
|
+ }).then(res=>{
|
|
|
+ // 有金额才进行删除后的运算
|
|
|
+ if(invoiceForm.invoiceData[index].amount!=''){
|
|
|
+ invoiceForm.invoiceData.splice(index,1)
|
|
|
+ let money=0
|
|
|
+ invoiceForm.invoiceData.map(item =>{
|
|
|
+ money+=parseFloat(item.amount) || 0
|
|
|
+ // console.log(money);
|
|
|
+ })
|
|
|
+ // 保留两位小数、防止计算时精度丢失
|
|
|
+ money=Math.round(money*100)/100
|
|
|
+ contractInfo.moneyData.haveInvoiceMoney=money
|
|
|
+ }else{
|
|
|
+ invoiceForm.invoiceData.splice(index,1)
|
|
|
+ }
|
|
|
+ }).catch(()=>{})
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ if(placementForm.placementData[index].amount=='' && placementForm.placementData[index].invoice_date==''){
|
|
|
+ // 没有内容 直接删除
|
|
|
+ placementForm.placementData.splice(index,1)
|
|
|
+ }else{
|
|
|
+ ElMessageBox.confirm('删除后不可恢复,是否删除该条到款记录?',
|
|
|
+ '提示',
|
|
|
+ {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning',
|
|
|
+ }).then(res=>{
|
|
|
+ // 有金额才进行删除后的运算
|
|
|
+ if(placementForm.placementData[index].amount!=''){
|
|
|
+ placementForm.placementData.splice(index,1)
|
|
|
+ let money=0
|
|
|
+ placementForm.placementData.map(item =>{
|
|
|
+ money+=parseFloat(item.amount) || 0
|
|
|
+ // console.log(money);
|
|
|
+ })
|
|
|
+ // 保留两位小数、防止计算时精度丢失
|
|
|
+ money=Math.round(money*100)/100
|
|
|
+ contractInfo.moneyData.havePlacementMoney=money
|
|
|
+ }else{
|
|
|
+ placementForm.placementData.splice(index,1)
|
|
|
+ }
|
|
|
+ }).catch(()=>{})
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 金额改变
|
|
|
+ const moneyChange=(type,value,index)=>{
|
|
|
+ // console.log(value);
|
|
|
+ let numerValue=parseFloat(value)
|
|
|
+ if(type=='invoice'){
|
|
|
+ if(!numerValue&&numerValue!=0&&value){
|
|
|
+ invoiceForm.invoiceData[index].amount=''
|
|
|
+ ElMessage.error('请输入数字')
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 如果输入不是 以.结尾&&只有一个.的话,就赋值为转为成数字后的值
|
|
|
+ if(!(value.endsWith('.') && value.indexOf('.')==(value.length-1))&&numerValue){
|
|
|
+ invoiceForm.invoiceData[index].amount=numerValue
|
|
|
+ }
|
|
|
+ // console.log(numerValue);
|
|
|
+
|
|
|
+ let money=0
|
|
|
+ invoiceForm.invoiceData.map(item =>{
|
|
|
+ money+=parseFloat(item.amount) || 0
|
|
|
+ })
|
|
|
+ // 保留两位小数、防止计算时精度丢失
|
|
|
+ money=Math.round(money*100)/100
|
|
|
+ contractInfo.moneyData.haveInvoiceMoney=money
|
|
|
+
|
|
|
+ }else{
|
|
|
+ if(!numerValue&&numerValue!=0&&value){
|
|
|
+ placementForm.placementData[index].amount=''
|
|
|
+ ElMessage.error('请输入数字')
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 如果输入不是 以.结尾&&只有一个.的话,就赋值为转为成数字后的值
|
|
|
+ if(!(value.endsWith('.') && value.indexOf('.')==(value.length-1))&&numerValue){
|
|
|
+ placementForm.placementData[index].amount=numerValue
|
|
|
+ }
|
|
|
+
|
|
|
+ let money=0
|
|
|
+ placementForm.placementData.map(item =>{
|
|
|
+ money+=parseFloat(item.amount) || 0
|
|
|
+ })
|
|
|
+ // 保留两位小数、防止计算时精度丢失
|
|
|
+ money=Math.round(money*100)/100
|
|
|
+ contractInfo.moneyData.havePlacementMoney=money
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ // 金额格式化,保留两位小数
|
|
|
+ const moneyFormatter=(money)=>{
|
|
|
+ let result=money.toString()
|
|
|
+ if(result.indexOf('.')==-1){
|
|
|
+ // 没有小数
|
|
|
+ return result+'.00'
|
|
|
+ }else{
|
|
|
+ let arr = result.split('.')
|
|
|
+ let decimal = arr[1].padEnd(2,'0')
|
|
|
+ return arr[0]+'.'+decimal
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 合规登记-提交
|
|
|
+ const complianceSubmit=()=>{
|
|
|
+ contractInfoForm.value.validate(valid=>{
|
|
|
+ if(valid){
|
|
|
+ if(contractInfo.checkedService.length==0){
|
|
|
+ ElMessage.warning('请选择套餐')
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if(!contractInfo.currentSmallService.Value && contractInfo.checkedService.some(serviceId =>serviceId==2)){
|
|
|
+ ElMessage.warning('请保存FICC小套餐品种')
|
|
|
+ return
|
|
|
+ }
|
|
|
+ contractInfo.form.services=[]
|
|
|
+ contractInfo.checkedService.map(serviceId=>{
|
|
|
+ let serviceItem = contractInfo.serviceArray.find(it=> it.service_template_id==serviceId) || {}
|
|
|
+ // 小套餐
|
|
|
+ if(serviceId==2){
|
|
|
+ contractInfo.form.services.push({
|
|
|
+ service_template_id:contractInfo.currentSmallService.service_template_id,
|
|
|
+ value:contractInfo.currentSmallService.Value,
|
|
|
+ chart_permission_ids:contractInfo.currentSmallService.chart_permission_ids,
|
|
|
+ detail:[contractInfo.currentSmallService.tableHeadData,...contractInfo.currentSmallService.tableData],
|
|
|
+ chart_permission_id:serviceItem.chart_permission_id,
|
|
|
+ title:serviceItem.title
|
|
|
+ })
|
|
|
+ }else{
|
|
|
+ contractInfo.form.services.push(serviceItem)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ contractInfo.form.contract_amount = parseFloat(contractInfo.form.contract_amount)
|
|
|
+ if(contractInfo.form.contract_register_id){
|
|
|
+ // 编辑
|
|
|
+ registerEdit(contractInfo.form).then(res=>{
|
|
|
+ let messageHint=ElMessage.success('合规登记编辑成功')
|
|
|
+ setTimeout(()=>{
|
|
|
+ messageHint.close()
|
|
|
+ router.back()
|
|
|
+ },1000)
|
|
|
+ })
|
|
|
+ }else{
|
|
|
+ // 新增
|
|
|
+ registerAdd(contractInfo.form).then(res=>{
|
|
|
+ let messageHint=ElMessage.success('合规登记成功')
|
|
|
+ setTimeout(()=>{
|
|
|
+ messageHint.close()
|
|
|
+ router.back()
|
|
|
+ },1000)
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ // 开票登记保存
|
|
|
+ const invoiceSubmit=()=>{
|
|
|
+ invoiceFormRef.value.validate(valid=>{
|
|
|
+ if(valid){
|
|
|
+ invoiceForm.rowErrorShow=''
|
|
|
+ if(contractInfo.moneyData.waitInvoiceMoney<0){
|
|
|
+ ElMessage.error('总开票金额大于合同金额,请检查')
|
|
|
+ // 让金额这一列标红
|
|
|
+ invoiceForm.rowErrorShow='true'
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 转化
|
|
|
+ invoiceForm.invoiceData.forEach(element => {
|
|
|
+ element.amount = parseFloat(element.amount)
|
|
|
+ });
|
|
|
+ let param={
|
|
|
+ contract_register_id:contractInfo.form.contract_register_id,
|
|
|
+ invoice_type:1,
|
|
|
+ amount_list:invoiceForm.invoiceData
|
|
|
+ }
|
|
|
+ registerInvoice(param).then(res=>{
|
|
|
+ let messageHint=ElMessage.success('开票登记成功')
|
|
|
+ setTimeout(()=>{
|
|
|
+ messageHint.close()
|
|
|
+ router.back()
|
|
|
+ },1000)
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ // 到款登记保存
|
|
|
+ const placementSubmit=()=>{
|
|
|
+ placementForm.rowErrorShow=''
|
|
|
+ placementFormRef.value.validate(valid=>{
|
|
|
+ if(valid){
|
|
|
+ if(contractInfo.moneyData.waitPlacementMoney<0){
|
|
|
+ ElMessage.error('总开票金额大于合同金额,请检查')
|
|
|
+ // 让金额这一列标红
|
|
|
+ placementForm.rowErrorShow='true'
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 转化
|
|
|
+ placementForm.placementData.forEach(element => {
|
|
|
+ element.amount = parseFloat(element.amount)
|
|
|
+ });
|
|
|
+ let param={
|
|
|
+ contract_register_id:contractInfo.form.contract_register_id,
|
|
|
+ invoice_type:2,
|
|
|
+ amount_list:placementForm.placementData
|
|
|
+ }
|
|
|
+ registerPayment(param).then(res=>{
|
|
|
+ let messageHint=ElMessage.success('到款登记成功')
|
|
|
+ setTimeout(()=>{
|
|
|
+ messageHint.close()
|
|
|
+ router.back()
|
|
|
+ },1000)
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ // 取消操作
|
|
|
+ const registrationCancel=()=>{
|
|
|
+ router.back()
|
|
|
+ }
|
|
|
+ const canServiceShow=(serviceTemplateId)=>{
|
|
|
+ return contractInfo.form.services.find(item => item.service_template_id == serviceTemplateId) && contractInfo.operationtype!='compliance'
|
|
|
+ }
|
|
|
+ // 查看套餐
|
|
|
+ const viewService=(serviceTemplateId)=>{
|
|
|
+ if(!canServiceShow(serviceTemplateId)) return
|
|
|
+ let viewItem=contractInfo.form.services.find(item => item.service_template_id == serviceTemplateId)
|
|
|
+ previewImageTitle.value = viewItem.title
|
|
|
+ previewImage.value=viewItem.value
|
|
|
+ contractInfo.serviceShow=true
|
|
|
+ }
|
|
|
+
|
|
|
+// ----------------------created
|
|
|
+ getSellerListFun()
|
|
|
+ getServiceListFun()
|
|
|
+
|
|
|
+ contractInfo.form.contract_register_id = parseInt(route.query.complianceId) || ''
|
|
|
+ // id没有,认为是合规登记
|
|
|
+ contractInfo.operationtype=contractInfo.form.contract_register_id?(route.query.type || 'compliance'):'compliance'
|
|
|
+ if(contractInfo.form.contract_register_id){
|
|
|
+ //请求详情接口
|
|
|
+ registerDetail({contract_register_id:contractInfo.form.contract_register_id}).then(res=>{
|
|
|
+ contractInfo.progressList=res.data.logs || [{}]
|
|
|
+ contractInfo.form={...contractInfo.form,
|
|
|
+ crm_contract_id:res.data.crm_contract_id,
|
|
|
+ contract_code:res.data.contract_code,
|
|
|
+ company_name:res.data.company_name,
|
|
|
+ seller_id:res.data.seller_id,
|
|
|
+ seller_name:res.data.seller_name,
|
|
|
+ contract_status:res.data.contract_status,
|
|
|
+ start_date:res.data.start_date,
|
|
|
+ end_date:res.data.end_date,
|
|
|
+ contract_amount:res.data.contract_amount,
|
|
|
+ contract_type:res.data.contract_type,
|
|
|
+ sign_date:res.data.sign_date,
|
|
|
+ agreed_pay_time:res.data.agreed_pay_time,
|
|
|
+ remark:res.data.remark,
|
|
|
+ contract_source:res.data.contract_source,
|
|
|
+ services:res.data.service_list
|
|
|
+ }
|
|
|
+ contractInfo.contractValidityDate=[res.data.start_date,res.data.end_date]
|
|
|
+ contractInfo.checkedService=res.data.service_list.map(item => item.service_template_id)
|
|
|
+ contractInfo.checkedService.map(serviceId=>{
|
|
|
+ // 大套餐或者小套餐
|
|
|
+ if(serviceId==1 || serviceId==2)
|
|
|
+ serciveChange(true,serviceId,false)
|
|
|
+ })
|
|
|
+ // 开票
|
|
|
+ contractInfo.moneyData.allInvoiceMoney = contractInfo.moneyData.allPlacementMoney=res.data.contract_amount
|
|
|
+ contractInfo.moneyData.haveInvoiceMoney=res.data.invoiced_amount
|
|
|
+ contractInfo.moneyData.havePlacementMoney=res.data.payment_amount
|
|
|
+ if(res.data.invoice_list.length>0){
|
|
|
+ invoiceForm.invoiceData=[]
|
|
|
+ res.data.invoice_list.map(item=>{
|
|
|
+ invoiceForm.invoiceData.push({
|
|
|
+ invoice_id:item.invoice_id,
|
|
|
+ amount:item.amount,
|
|
|
+ invoice_date:item.invoice_time
|
|
|
+ })
|
|
|
+ })
|
|
|
+ }
|
|
|
+ if(res.data.payment_list.length>0){
|
|
|
+ placementForm.placementData=[]
|
|
|
+ res.data.payment_list.map(item=>{
|
|
|
+ placementForm.placementData.push({
|
|
|
+ invoice_id:item.invoice_id,
|
|
|
+ amount:item.amount,
|
|
|
+ invoice_date:item.invoice_time
|
|
|
+ })
|
|
|
+ })
|
|
|
+ }
|
|
|
+ let samllService=contractInfo.form.services.find(item => item.service_template_id==2)
|
|
|
+ if(contractInfo.operationtype=='compliance' && samllService){
|
|
|
+ // 合规编辑
|
|
|
+ /**
|
|
|
+ * 有可能服务模板的接口数据还没返回
|
|
|
+ * 这时更改contractInfo.currentSmallService会触发子组件的监听函数,导致空指针错误
|
|
|
+ * 创建一个 setInterval 询问contractInfo.serviceArray数据是否返回,已返回就更新contractInfo.currentSmallService
|
|
|
+ */
|
|
|
+ let temarr = samllService.detail.map((rowItem) => {
|
|
|
+ let rowArr = [];
|
|
|
+ for (let key in rowItem) {
|
|
|
+ if (key.substr(0, 3) === "col" && rowItem[key] !== "") {
|
|
|
+ rowArr.push(JSON.parse(rowItem[key]));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return rowArr;
|
|
|
+ });
|
|
|
+ let paramsTemp={
|
|
|
+ tableHeadData:temarr[0],
|
|
|
+ tableData:temarr.slice(1),
|
|
|
+ service_template_id:samllService.service_template_id,
|
|
|
+ Value:samllService.value,
|
|
|
+ chart_permission_ids:samllService.chart_permission_ids
|
|
|
+ }
|
|
|
+ paramsTemp.tableHeadData = temarr[0];
|
|
|
+ paramsTemp.tableData = temarr.slice(1);
|
|
|
+ if(contractInfo.serviceArray.length==0){
|
|
|
+ let timer=setInterval(()=>{
|
|
|
+ if(contractInfo.serviceArray.length>0){
|
|
|
+ contractInfo.currentSmallService=paramsTemp
|
|
|
+ clearInterval(timer)
|
|
|
+ }
|
|
|
+ },200)
|
|
|
+ }else{
|
|
|
+ contractInfo.currentSmallService=paramsTemp
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+</script>
|
|
|
+
|
|
|
+<template>
|
|
|
+ <div class="contract-progress-container" id="contract-progress-container">
|
|
|
+ <div class="contract-progress">
|
|
|
+ <div class="contract-progress-main" >
|
|
|
+ <!-- 合规登记 -->
|
|
|
+ <div class="info-box" >
|
|
|
+ <div class="info-box-head">合规登记</div>
|
|
|
+ <!-- 合同信息 -->
|
|
|
+ <div class="info-row" >
|
|
|
+ <div class="info-row-title">合同信息</div>
|
|
|
+ <div style="margin: 0 74px 0 63px;">
|
|
|
+ <el-form :model="contractInfo.form" inline ref="contractInfoForm" label-width="130" :disabled="contractInfo.operationtype!='compliance'"
|
|
|
+ :rules="contractInfo.rules" style="display: flex;flex-wrap: wrap;justify-content: space-around;">
|
|
|
+ <el-form-item label="合同来源" prop="contract_source">
|
|
|
+ <el-select v-model="contractInfo.form.contract_source" placeholder="请选择合同来源" @change="contractSourceChange">
|
|
|
+ <el-option :label="item" :value="index"
|
|
|
+ v-for="(item,index) in contractSourceArray" :key="item"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="合同编号" prop="contract_code" id="selectContract">
|
|
|
+ <el-input v-model="contractInfo.form.contract_code" placeholder="请输入合同编号"
|
|
|
+ v-if="(contractInfo.form.contract_source==0)"/>
|
|
|
+ <el-select :teleported="false" v-optionsLoadMore="loadContractNoMore" v-model="contractInfo.form.contract_code" placeholder="请搜索合同编号" v-else
|
|
|
+ filterable remote :remote-method="contractNoSearch" :loading="false" @change="selectContractNo">
|
|
|
+ <el-option :label="item.contract_code" :value="item.contract_code" v-for="item in contractInfo.contractNoArray" :key="item.contract_id"></el-option>
|
|
|
+ <div style="height: 40px;width:100%;position: absolute;bottom: 0;pointer-events: none;" v-loading="contractInfo.contractNoLoading"></div>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="客户名称" prop="company_name">
|
|
|
+ <el-input v-model="contractInfo.form.company_name"
|
|
|
+ placeholder="请输入客户名称" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="销售" prop="seller_id">
|
|
|
+ <el-select v-model="contractInfo.form.seller_id" placeholder="请选择销售" filterable @change="selectSeller">
|
|
|
+ <el-option :label="item.real_name" :value="item.admin_id" v-for="item in contractInfo.sellerList" :key="item.admin_id"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="合同状态" prop="contract_status">
|
|
|
+ <el-select v-model="contractInfo.form.contract_status"
|
|
|
+ placeholder="请选择合同状态" >
|
|
|
+ <el-option :label="item.label" :value="item.id" v-for="item in contractStatusArray" :key="item.id"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="合同有效期"
|
|
|
+ prop="start_date">
|
|
|
+ <el-date-picker type="daterange"
|
|
|
+ v-model="contractInfo.contractValidityDate" @change="contractValidityDateChane"
|
|
|
+ start-placeholder="合同有效期-开始" range-separator="至" end-placeholder="合同有效期-结束" value-format="YYYY-MM-DD"
|
|
|
+ :clearable="false">
|
|
|
+ </el-date-picker>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="合同金额"
|
|
|
+ prop="contract_amount">
|
|
|
+ <el-input v-model.trim="contractInfo.form.contract_amount"
|
|
|
+ placeholder="请输入合同金额" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="合同类型" prop="contract_type">
|
|
|
+ <el-select v-model="contractInfo.form.contract_type"
|
|
|
+ placeholder="请选择合同类型" >
|
|
|
+ <el-option :label="item.label" :value="item.id" v-for="item in contractTypeArray" :key="item.id"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="签订日" prop="sign_date">
|
|
|
+ <el-date-picker v-model="contractInfo.form.sign_date"
|
|
|
+ placeholder="请选择签订日" value-format="YYYY-MM-DD"
|
|
|
+ :clearable="false">
|
|
|
+ </el-date-picker>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="约定付款时间" prop="agreed_pay_time">
|
|
|
+ <el-input v-model="contractInfo.form.agreed_pay_time"
|
|
|
+ placeholder="请输入约定付款时间" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="info-row">
|
|
|
+ <div class="info-row-title">套餐信息</div>
|
|
|
+ <el-checkbox-group :disabled="contractInfo.operationtype!='compliance'"
|
|
|
+ v-model="contractInfo.checkedService" class="info-service-box">
|
|
|
+ <el-checkbox :label="contractInfo.serviceArray[0]?.service_template_id" @change="(e) => serciveChange(e,1)"
|
|
|
+ :class="{'viewService':canServiceShow(contractInfo.serviceArray[0]?.service_template_id)}"
|
|
|
+ :disabled="contractInfo.serviceType==2" style="margin-right: 0;" @click="viewService(contractInfo.serviceArray[0]?.service_template_id)">
|
|
|
+ {{contractInfo.serviceArray[0]?.title}}
|
|
|
+ </el-checkbox>
|
|
|
+ <div class="service-small">
|
|
|
+ <el-checkbox :label="contractInfo.serviceArray[1]?.service_template_id" @change="(e) => serciveChange(e,2)"
|
|
|
+ :class="{'viewService':canServiceShow(contractInfo.serviceArray[1]?.service_template_id)}"
|
|
|
+ :disabled="contractInfo.serviceType==1" @click="viewService(contractInfo.serviceArray[1]?.service_template_id)">
|
|
|
+ {{contractInfo.serviceArray[1]?.title}}
|
|
|
+ </el-checkbox>
|
|
|
+ <span v-if="(contractInfo.serviceVarietyShow&&contractInfo.operationtype=='compliance')"
|
|
|
+ @click="contractInfo.varietyDiaShow=true">选择品种</span>
|
|
|
+ </div>
|
|
|
+ <el-checkbox :label="contractInfo.serviceArray[2]?.service_template_id" style="margin-right: 0;"
|
|
|
+ @click="viewService(contractInfo.serviceArray[2]?.service_template_id)"
|
|
|
+ :class="{'viewService':canServiceShow(contractInfo.serviceArray[2]?.service_template_id)}">
|
|
|
+ {{contractInfo.serviceArray[2]?.title}}
|
|
|
+ </el-checkbox>
|
|
|
+ <el-checkbox :label="contractInfo.serviceArray[3]?.service_template_id">
|
|
|
+ {{contractInfo.serviceArray[3]?.title}}
|
|
|
+ </el-checkbox>
|
|
|
+ </el-checkbox-group>
|
|
|
+ </div>
|
|
|
+ <div class="info-row">
|
|
|
+ <div class="info-row-title">备注</div>
|
|
|
+ <div class="info-row-remark">
|
|
|
+ <span style="white-space: nowrap;font-size: 14px;margin-right: 20px;">备注</span>
|
|
|
+ <el-input style="flex-grow: 1;" :disabled="contractInfo.operationtype!='compliance'"
|
|
|
+ v-model="contractInfo.form.remark"
|
|
|
+ placeholder="请输入备注"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="contract-operation" v-if="contractInfo.operationtype=='compliance'" >
|
|
|
+ <el-button class="operation-button" style="margin-right: 30px;" @click="registrationCancel">取消</el-button>
|
|
|
+ <el-button type="primary" @click="submit" class="operation-button">保存</el-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!-- 开票登记 -->
|
|
|
+ <div class="info-box" v-if="contractInfo.operationtype!='compliance'" style="margin-top:20px ;" id="info-invoice-box">
|
|
|
+ <div class="info-box-head">开票登记(待开票)</div>
|
|
|
+ <div class="info-row" >
|
|
|
+ <div class="info-row-title">开票信息</div>
|
|
|
+ <div class="info-row-invoice-payment">
|
|
|
+ <div class="invoice-payment-title">
|
|
|
+ <div style="margin-right: 30px;">已开票金额(元):<span class="invoice-payment-money">{{moneyFormatter(contractInfo.moneyData?.haveInvoiceMoney)}}</span></div>
|
|
|
+ <div>剩余开票金额(元):<span class="invoice-payment-money">{{moneyFormatter(contractInfo.moneyData?.waitInvoiceMoney)}}</span></div>
|
|
|
+ </div>
|
|
|
+ <el-form ref="invoiceFormRef" :model="invoiceForm" :disabled="contractInfo.operationtype!='invoice'">
|
|
|
+ <el-table :data="invoiceForm.invoiceData" border>
|
|
|
+ <el-table-column label="序号" width="80" align="center">
|
|
|
+ <template #default="{row,$index}">
|
|
|
+ {{$index+1}}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="开票金额" width="180" align="center" prop="amount">
|
|
|
+ <template #header>
|
|
|
+ <span style="color: #FF3400;">*</span>开票金额
|
|
|
+ </template>
|
|
|
+ <template #default="{row,$index}">
|
|
|
+ <el-form-item :prop="`invoiceData.${$index}.amount`" :show-message="false"
|
|
|
+ :error="invoiceForm.rowErrorShow"
|
|
|
+ :rules="{required:true,message:()=>{ ElMessage.error('开票金额不能为空')},trigger:'blur'}">
|
|
|
+ <el-input v-model.trim="row.amount" style="width: 124px;"
|
|
|
+ placeholder="请输入金额" @input="(e)=>moneyChange('invoice',e,$index)"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="开票日期" width="180" align="center" prop="invoice_date">
|
|
|
+ <template #header>
|
|
|
+ <span style="color: #FF3400;">*</span>开票日期
|
|
|
+ </template>
|
|
|
+ <template #default="{row,$index}">
|
|
|
+ <el-form-item :prop="`invoiceData.${$index}.invoice_date`" :show-message="false"
|
|
|
+ :rules="{required:true,message:()=>{ ElMessage.error('请选择开票日期')},trigger:'change'}">
|
|
|
+ <el-date-picker v-model="row.invoice_date" style="width: 124px;"
|
|
|
+ placeholder="请选择日期" value-format="YYYY-MM-DD" :clearable="false" ></el-date-picker>
|
|
|
+ </el-form-item>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="操作" width="180" align="center" v-if="contractInfo.operationtype=='invoice'">
|
|
|
+ <template #default="{row,$index}" >
|
|
|
+ <span class="table-operation-button" v-if="(invoiceForm.invoiceData.length>1)"
|
|
|
+ style="color: #FF3400;margin-right: 16px;" @click="deleteRow('invoice',$index)">删除</span>
|
|
|
+ <span class="table-operation-button" @click="addRow('invoice',$index)">添加</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!-- 到款登记 -->
|
|
|
+ <div class="info-box" v-if="contractInfo.operationtype!='compliance'" style="margin-top:20px ;" id="info-invoice-box">
|
|
|
+ <div class="info-box-head">到款登记(待到款)</div>
|
|
|
+ <div class="info-row" >
|
|
|
+ <div class="info-row-title">到款信息</div>
|
|
|
+ <div class="info-row-invoice-payment">
|
|
|
+ <div class="invoice-payment-title">
|
|
|
+ <div style="margin-right: 30px;">已到款金额(元):<span class="invoice-payment-money">{{moneyFormatter(contractInfo.moneyData.havePlacementMoney)}}</span></div>
|
|
|
+ <div>剩余到款金额(元):<span class="invoice-payment-money">{{moneyFormatter(contractInfo.moneyData.waitPlacementMoney)}}</span></div>
|
|
|
+ </div>
|
|
|
+ <el-form ref="placementFormRef" :model="placementForm" :disabled="contractInfo.operationtype!='placement'">
|
|
|
+ <el-table :data="placementForm.placementData" border>
|
|
|
+ <el-table-column label="序号" width="80" align="center">
|
|
|
+ <template #default="{row,$index}">
|
|
|
+ {{$index+1}}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="到款金额" width="180" align="center" prop="amount">
|
|
|
+ <template #header>
|
|
|
+ <span style="color: #FF3400;">*</span>到款金额
|
|
|
+ </template>
|
|
|
+ <template #default="{row,$index}">
|
|
|
+ <el-form-item :prop="`placementData.${$index}.amount`" :show-message="false"
|
|
|
+ :error="placementForm.rowErrorShow"
|
|
|
+ :rules="{required:true,message:()=>{ ElMessage.error('到款金额不能为空')},trigger:'blur'}">
|
|
|
+ <el-input v-model="row.amount" style="width: 124px;"
|
|
|
+ placeholder="请输入金额" @input="(e)=>moneyChange('placement',e,$index)"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="到款月" width="180" align="center" prop="invoice_date">
|
|
|
+ <template #header>
|
|
|
+ <span style="color: #FF3400;">*</span>到款月
|
|
|
+ </template>
|
|
|
+ <template #default="{row,$index}">
|
|
|
+ <el-form-item :prop="`placementData.${$index}.invoice_date`" :show-message="false"
|
|
|
+ :rules="{required:true,message:()=>{ ElMessage.error('请选择到款日期')},trigger:'change'}">
|
|
|
+ <el-date-picker v-model="row.invoice_date" style="width: 124px;"
|
|
|
+ placeholder="请选择月份" value-format="YYYY-MM-DD" format="YYYY-MM"></el-date-picker>
|
|
|
+ </el-form-item>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="操作" width="180" align="center" v-if="contractInfo.operationtype=='placement'">
|
|
|
+ <template #default="{row,$index}">
|
|
|
+ <span class="table-operation-button" @click="deleteRow('placement',$index)"
|
|
|
+ v-if="(placementForm.placementData.length>1)" style="color: #FF3400;margin-right: 16px;">删除</span>
|
|
|
+ <span class="table-operation-button" @click="addRow('placement',$index)">添加</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="contract-operation" v-if="contractInfo.operationtype=='placement' || contractInfo.operationtype=='invoice'">
|
|
|
+ <el-button class="operation-button" style="margin-right: 30px;" @click="registrationCancel">取消</el-button>
|
|
|
+ <el-button type="primary" @click="submit" class="operation-button">保存</el-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="contract-progress-aside">
|
|
|
+ <p class="progress-aside-title">登记流程</p>
|
|
|
+ <div class="progress-box">
|
|
|
+ <el-timeline>
|
|
|
+ <el-timeline-item color="var(--themeColor)" v-for="item in contractInfo.progressList"
|
|
|
+ :key="item.name" size="large" placement="top" hide-timestamp>
|
|
|
+ <template #dot>
|
|
|
+ <div class="customize-circle-outside">
|
|
|
+ <div class="customize-circle-inside"></div>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <div class="progress-item-title">{{operationType[item.op_type-1]?.label}}</div>
|
|
|
+ <div class="progress-item-info">{{item.admin_name}}</div>
|
|
|
+ <div class="progress-item-info">{{item.create_time}}</div>
|
|
|
+ <div class="progress-item-info" v-show="item.remark">备注:{{item.remark}}</div>
|
|
|
+ </el-timeline-item>
|
|
|
+ </el-timeline>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!-- 小套餐选择品种弹窗 -->
|
|
|
+ <service-variety-dia v-model:visible="contractInfo.varietyDiaShow" @selectFinish="getVarieties"
|
|
|
+ :service="contractInfo.serviceArray.find(item=>item.service_template_id==2)" :currentService="contractInfo.currentSmallService" ></service-variety-dia>
|
|
|
+ <!-- 查看套餐弹窗 -->
|
|
|
+ <el-dialog v-model="contractInfo.serviceShow" style="min-width: 800px;" title="" width="70vw" top="5vh">
|
|
|
+ <template #header>
|
|
|
+ <div style="text-align: center;">{{previewImageTitle}}</div>
|
|
|
+ </template>
|
|
|
+ <img style="width: 100%; display: block; margin: 0 auto 20px auto"
|
|
|
+ :src="previewImage" />
|
|
|
+ <div style="text-align: center; margin: 30px 0 10px">
|
|
|
+ <el-button type="primary" @click="contractInfo.serviceShow=false">知道了</el-button>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<style lang="scss" scoped>
|
|
|
+ .contract-progress-container{
|
|
|
+ .contract-progress{
|
|
|
+ display: flex;
|
|
|
+ .contract-progress-main{
|
|
|
+ flex: 2;
|
|
|
+ margin-right: 20px;
|
|
|
+ .info-box{
|
|
|
+ background-color: white;
|
|
|
+ padding: 0 30px 30px 0;
|
|
|
+ border: 1px solid #E8E8E8;
|
|
|
+ .info-box-head{
|
|
|
+ background-color: $themeColor;
|
|
|
+ font-size: 14px;
|
|
|
+ color: white;
|
|
|
+ height: 40px;
|
|
|
+ display: inline-block;
|
|
|
+ padding: 9px 32px;
|
|
|
+ box-sizing: border-box;
|
|
|
+ }
|
|
|
+ .info-row{
|
|
|
+ margin-top: 48px;
|
|
|
+ .info-row-title{
|
|
|
+ font-weight: 500;
|
|
|
+ font-size: 14px;
|
|
|
+ color: #333333;
|
|
|
+ font-weight: bold;
|
|
|
+ padding-left: 16px;
|
|
|
+ position: relative;
|
|
|
+ margin-bottom: 24px;
|
|
|
+ &::after{
|
|
|
+ content: '';
|
|
|
+ height: 22px;
|
|
|
+ width: 4px;
|
|
|
+ background-color: $themeColor;
|
|
|
+ position: absolute;
|
|
|
+ top: -1.5px;
|
|
|
+ left: 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 套餐信息
|
|
|
+ .info-service-box{
|
|
|
+ min-width: 560px;
|
|
|
+ width: 560px;
|
|
|
+ padding-left: 80px;
|
|
|
+ margin-top: 20px;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+ .service-small{
|
|
|
+ display: inline-flex;
|
|
|
+ align-items: center;
|
|
|
+ span{
|
|
|
+ font-size: 14px;
|
|
|
+ cursor: pointer;
|
|
|
+ color: $themeColor;
|
|
|
+ margin-left: 12px;
|
|
|
+ line-height: 14px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 备注
|
|
|
+ .info-row-remark{
|
|
|
+ display: flex;
|
|
|
+ padding-left: 80px;
|
|
|
+ align-items: center;
|
|
|
+ }
|
|
|
+ // 开票欣喜
|
|
|
+ .info-row-invoice-payment{
|
|
|
+ padding-left: 80px;
|
|
|
+ display: inline-block;
|
|
|
+ .invoice-payment-title{
|
|
|
+ font-size: 14px;
|
|
|
+ color: #333333;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ margin-bottom: 20px;
|
|
|
+ .invoice-payment-money{
|
|
|
+ font-weight: 600;
|
|
|
+ font-size: 14px;
|
|
|
+ color: #FF3400;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .table-operation-button{
|
|
|
+ cursor: pointer;
|
|
|
+ color: $themeColor;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .contract-progress-aside{
|
|
|
+ background-color: white;
|
|
|
+ flex: 1;
|
|
|
+ min-width: 300px;
|
|
|
+ .progress-aside-title{
|
|
|
+ font-size: 18px;
|
|
|
+ font-weight: bold;
|
|
|
+ margin: 30px;
|
|
|
+ }
|
|
|
+ .progress-box{
|
|
|
+ padding:0 20px 20px 70px;
|
|
|
+ .customize-circle-outside{
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ background-color: rgba($color: $themeColor, $alpha: 0.4);
|
|
|
+ width: 14px;
|
|
|
+ left: -2px;
|
|
|
+ top: -4px;
|
|
|
+ height: 14px;
|
|
|
+ border-radius: 50%;
|
|
|
+ position: absolute;
|
|
|
+ .customize-circle-inside{
|
|
|
+ background-color:$themeColor;
|
|
|
+ width: 6px;
|
|
|
+ height: 6px;
|
|
|
+ border-radius: 50%;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .progress-item-title{
|
|
|
+ font-weight: bold;
|
|
|
+ font-size: 16px;
|
|
|
+ color: #333;
|
|
|
+ margin-bottom: 8px;
|
|
|
+ }
|
|
|
+ .progress-item-info{
|
|
|
+ font-size: 14px;
|
|
|
+ color:#666;
|
|
|
+ margin-bottom: 8px;
|
|
|
+ &:last-child{
|
|
|
+ margin-bottom: 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .contract-operation{
|
|
|
+ text-align: center;
|
|
|
+ padding: 100px 30px 30px;
|
|
|
+ .operation-button{
|
|
|
+ height: 40px;
|
|
|
+ width: 130px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+</style>
|
|
|
+<style lang="scss">
|
|
|
+ #contract-progress-container{
|
|
|
+ .el-timeline-item__tail{
|
|
|
+ border-left:2px solid #D6DBE2 ;
|
|
|
+ }
|
|
|
+ .el-input__wrapper,.el-input{
|
|
|
+ width: 286px;
|
|
|
+ }
|
|
|
+ #info-invoice-box{
|
|
|
+ .el-input__wrapper{
|
|
|
+ width: 124px;
|
|
|
+ }
|
|
|
+ .el-form-item{
|
|
|
+ margin-bottom: 0;
|
|
|
+ .el-form-item__content{
|
|
|
+ justify-content: center;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .viewService{
|
|
|
+ .el-checkbox__label{
|
|
|
+ cursor: pointer;
|
|
|
+ color: $themeColor;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+</style>
|