|
@@ -0,0 +1,1024 @@
|
|
|
|
+<script setup>
|
|
|
|
+import { Search } from '@element-plus/icons-vue'
|
|
|
|
+import {useRouter} from 'vue-router'
|
|
|
|
+import {getSellerList} from '@/api/crm'
|
|
|
|
+import {getCurrencyList} from '@/api/common'
|
|
|
|
+import {getServiceList,getPreRegistrationList,preRegistrationAdd,
|
|
|
|
+ preRegistrationDetail,preRegistrationEdit,preRegistrationDelete,preRegistrationSave} from '@/api/financialMana'
|
|
|
|
+
|
|
|
|
+const router = useRouter()
|
|
|
|
+
|
|
|
|
+ const adminId = localStorage.getItem('userInfo')?JSON.parse(localStorage.getItem('userInfo')).admin_id || 0:0
|
|
|
|
+ const placemenetPre=reactive({
|
|
|
|
+ searchParams:{
|
|
|
|
+ keyword:'',
|
|
|
|
+ page_size:10,
|
|
|
|
+ current:1,
|
|
|
|
+ },
|
|
|
|
+ tableData:[],
|
|
|
|
+ total:0,
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ // -----------------弹窗
|
|
|
|
+ const registrationPreForm=ref(null)
|
|
|
|
+
|
|
|
|
+ // 新增/编辑 开票/到款 预登记弹窗
|
|
|
|
+ const dialog=reactive({
|
|
|
|
+ registrationPreShow:false,
|
|
|
|
+ // 登记类型
|
|
|
|
+ registrationType:'开票',
|
|
|
|
+ title:'',
|
|
|
|
+ registrationPreForm:{
|
|
|
|
+ company_name:'',
|
|
|
|
+ start_date:'',
|
|
|
|
+ end_date:'',
|
|
|
|
+ services:[],
|
|
|
|
+ IorPInfo:[
|
|
|
|
+ {
|
|
|
|
+ service_product_id:'',
|
|
|
|
+ amount:'',
|
|
|
|
+ currency_unit:'CNY',
|
|
|
|
+ register_date:'',
|
|
|
|
+ seller_id:'',
|
|
|
|
+ seller_name:'',
|
|
|
|
+ remark:''
|
|
|
|
+ }
|
|
|
|
+ ],
|
|
|
|
+ },
|
|
|
|
+ //选中的套餐ID - 级联选择器绑定值
|
|
|
|
+ selectServices:[],
|
|
|
|
+ validityDate:[]
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ // 监听
|
|
|
|
+
|
|
|
|
+ watch(()=>dialog.validityDate,(newVal)=>{
|
|
|
|
+ // console.log(newVal);
|
|
|
|
+ if(!newVal){
|
|
|
|
+ dialog.registrationPreForm.start_date=''
|
|
|
|
+ dialog.registrationPreForm.end_date=''
|
|
|
|
+ }else{
|
|
|
|
+ dialog.registrationPreForm.start_date = newVal[0]
|
|
|
|
+ dialog.registrationPreForm.end_date = newVal[1]
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+// -----------------------------------------套餐部分 - 开始
|
|
|
|
+// 套餐列表
|
|
|
|
+const servicesList=ref([])
|
|
|
|
+const selectServicesRef=ref(null)
|
|
|
|
+
|
|
|
|
+// 套餐类型 1-FICC 2-权益 3-FICC&权益
|
|
|
|
+const serviceType=ref(3)
|
|
|
|
+
|
|
|
|
+// 预开票/预到款套餐类型 1-FICC 2-权益 3-FICC&权益
|
|
|
|
+const serviceTypePre=ref(3)
|
|
|
|
+
|
|
|
|
+// 获取套餐列表
|
|
|
|
+const getServicesListFun=()=>{
|
|
|
|
+ getServiceList().then(res=>{
|
|
|
|
+ servicesList.value=res.data||[]
|
|
|
|
+ })
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// 套餐类型更改
|
|
|
|
+const productIdChange=(value,item)=>{
|
|
|
|
+ item.seller_id=''
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+watch(serviceType,(newVal)=>{
|
|
|
|
+ if(newVal==1 || newVal==2){
|
|
|
|
+ dialog.registrationPreForm.IorPInfo.map(item =>{
|
|
|
|
+ item.service_product_id=newVal
|
|
|
|
+ })
|
|
|
|
+ }else{
|
|
|
|
+ dialog.registrationPreForm.IorPInfo.map(item =>{
|
|
|
|
+ item.service_product_id=''
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+})
|
|
|
|
+
|
|
|
|
+watch(serviceTypePre,(newVal)=>{
|
|
|
|
+ if(newVal==1 || newVal==2){
|
|
|
|
+ preDialog.preForm.service_product_id=newVal
|
|
|
|
+ }else{
|
|
|
|
+ preDialog.preForm.service_product_id=''
|
|
|
|
+ }
|
|
|
|
+})
|
|
|
|
+// -----------------------------------------套餐部分 - 结束
|
|
|
|
+// -----------------------------------------销售部分 - 开始
|
|
|
|
+//FICC的销售列表
|
|
|
|
+const sellerInvoiceListF=ref(null)
|
|
|
|
+//权益的销售列表
|
|
|
|
+const sellerInvoiceListQ=ref(null)
|
|
|
|
+
|
|
|
|
+//获取销售列表
|
|
|
|
+const getSellerListFun=()=>{
|
|
|
|
+ getSellerList().then(res=>{
|
|
|
|
+ sellerInvoiceListF.value = res.data.ficc_list || []
|
|
|
|
+ sellerInvoiceListQ.value = res.data.rai_list || []
|
|
|
|
+ })
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+let elMessageDom=null
|
|
|
|
+const selectVisible=(value)=>{
|
|
|
|
+ if(value){
|
|
|
|
+ if(!elMessageDom){
|
|
|
|
+ elMessageDom=ElMessage.warning('请选择套餐类型')
|
|
|
|
+ setTimeout(()=>{
|
|
|
|
+ elMessageDom=null
|
|
|
|
+ },1000)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// -----------------------------------------销售部分 - 结束
|
|
|
|
+// 预登记列表
|
|
|
|
+const placementPreList=()=>{
|
|
|
|
+ getPreRegistrationList(placemenetPre.searchParams).then(res=>{
|
|
|
|
+ placemenetPre.tableData=res.data.list || []
|
|
|
|
+ placemenetPre.total=res.data.page?.total || 0
|
|
|
|
+ // console.log(res);
|
|
|
|
+ })
|
|
|
|
+}
|
|
|
|
+//新增预登记
|
|
|
|
+const addRegistrationPre=(type)=>{
|
|
|
|
+ dialog.registrationType = type
|
|
|
|
+ dialog.title=`新增${type}预登记`
|
|
|
|
+ dialog.registrationPreShow=true
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+//新增预登记的行
|
|
|
|
+const addRegistrationPreRow=()=>{
|
|
|
|
+ let lastItem=dialog.registrationPreForm.IorPInfo[dialog.registrationPreForm.IorPInfo.length-1]
|
|
|
|
+ if(!(lastItem.amount&&lastItem.currency_unit&&lastItem.register_date)){
|
|
|
|
+ ElMessage.error('请填写完整!')
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ if(dialog.registrationType=='开票'&&!(lastItem.service_product_id&&lastItem.seller_id)){
|
|
|
|
+ ElMessage.error('请填写完整!')
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ dialog.registrationPreForm.IorPInfo.push({
|
|
|
|
+ service_product_id:serviceType.value==3?'':serviceType.value,
|
|
|
|
+ amount:'',
|
|
|
|
+ currency_unit:'CNY',
|
|
|
|
+ register_date:'',
|
|
|
|
+ seller_id:'',
|
|
|
|
+ seller_name:'',
|
|
|
|
+ remark:''
|
|
|
|
+ })
|
|
|
|
+}
|
|
|
|
+//删除预登记的行
|
|
|
|
+const deleteRegistrationPreRow=(index)=>{
|
|
|
|
+ ElMessageBox.confirm(`是否删除该条${dialog.registrationType}记录?`,
|
|
|
|
+ '提示',
|
|
|
|
+ {
|
|
|
|
+ confirmButtonText: '确定',
|
|
|
|
+ cancelButtonText: '取消',
|
|
|
|
+ type: 'warning',
|
|
|
|
+ }).then(res=>{
|
|
|
|
+ dialog.registrationPreForm.IorPInfo.splice(index,1)
|
|
|
|
+ }).catch(()=>{})
|
|
|
|
+}
|
|
|
|
+//编辑预登记
|
|
|
|
+const editRegistrationPre=(row)=>{
|
|
|
|
+ preRegistrationDetail({contract_register_id:row.contract_register_id,
|
|
|
|
+ invoice_type:row.invoice_type}).then(res=>{
|
|
|
|
+ if(!res.data) return
|
|
|
|
+ dialog.registrationPreForm.contract_register_id = res.data.contract_register_id
|
|
|
|
+ dialog.registrationPreForm.pre_register_id = row.pre_register_id
|
|
|
|
+ dialog.registrationPreForm.company_name = res.data.company_name
|
|
|
|
+ dialog.registrationPreForm.invoice_type = row.invoice_type
|
|
|
|
+ dialog.registrationPreForm.IorPInfo=res.data.list
|
|
|
|
+ dialog.registrationPreForm.services=res.data.services || []
|
|
|
|
+ dialog.validityDate=[res.data.start_date,res.data.end_date]
|
|
|
|
+ dialog.selectServices = [...res.data.services.map(item => item.service_template_id),...res.data.serviceTemplateIds]
|
|
|
|
+ dialog.registrationType=row.invoice_type==3?'开票':'到款'
|
|
|
|
+ dialog.title=`编辑${dialog.registrationType}预登记`
|
|
|
|
+ dialog.registrationPreShow=true
|
|
|
|
+ nextTick(()=>{
|
|
|
|
+ servicesChange(dialog.selectServices,1)
|
|
|
|
+ })
|
|
|
|
+ })
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+//弹窗关闭动画 回调
|
|
|
|
+const dialogClosed=()=>{
|
|
|
|
+ dialog.registrationPreForm.company_name=''
|
|
|
|
+ dialog.registrationPreForm.services=[]
|
|
|
|
+ dialog.registrationPreForm.IorPInfo=[
|
|
|
|
+ {
|
|
|
|
+ service_product_id:'',
|
|
|
|
+ amount:'',
|
|
|
|
+ currency_unit:'CNY',
|
|
|
|
+ register_date:'',
|
|
|
|
+ seller_id:'',
|
|
|
|
+ seller_name:'',
|
|
|
|
+ remark:''
|
|
|
|
+ }
|
|
|
|
+ ]
|
|
|
|
+ dialog.validityDate=[]
|
|
|
|
+ dialog.selectServices=[]
|
|
|
|
+ resetDisable(servicesList.value)
|
|
|
|
+ setTimeout(()=>{
|
|
|
|
+ registrationPreForm.value.clearValidate()
|
|
|
|
+ },0)
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// 提交
|
|
|
|
+const submitForm=()=>{
|
|
|
|
+ // 处理选中套餐的数据格式
|
|
|
|
+ let servicesParam=[]
|
|
|
|
+ let FICCSmallServiceIds=[]
|
|
|
|
+ selectServicesRef.value.getCheckedNodes().map(node=>{
|
|
|
|
+ let nodeData = node.data
|
|
|
|
+ if(!nodeData.service_template_id) return
|
|
|
|
+ if(nodeData.product_id==2){
|
|
|
|
+ // 权益
|
|
|
|
+ servicesParam.push({service_template_id:nodeData.service_template_id,title:nodeData.title})
|
|
|
|
+ }else{
|
|
|
|
+ // 90000往上都是FICC小套餐品种的Id,特殊处理
|
|
|
|
+ if(nodeData.service_template_id>=90000){
|
|
|
|
+ // 真正拿取的是chart_permission_id
|
|
|
|
+ if(FICCSmallServiceId.includes(nodeData.service_template_id)) FICCSmallServiceIds.push(nodeData.chart_permission_id)
|
|
|
|
+ }else{
|
|
|
|
+ if(nodeData.service_template_id==2){
|
|
|
|
+ // 小套餐
|
|
|
|
+ servicesParam.push({service_template_id:nodeData.service_template_id,
|
|
|
|
+ title:nodeData.title,value:nodeData.value,chart_permission_ids:''})
|
|
|
|
+ }else{
|
|
|
|
+ servicesParam.push({service_template_id:nodeData.service_template_id,title:nodeData.title,value:nodeData.value})
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ for (let i = 0; i < servicesParam.length; i++) {
|
|
|
|
+ const element = servicesParam[i];
|
|
|
|
+ if(element.service_template_id==2){
|
|
|
|
+ element.chart_permission_ids=FICCSmallServiceIds.join(',')
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ let params={
|
|
|
|
+ contract_register_id:dialog.registrationPreForm.contract_register_id||0,
|
|
|
|
+ pre_register_id:dialog.registrationPreForm.pre_register_id||0,
|
|
|
|
+ company_name:dialog.registrationPreForm.company_name,
|
|
|
|
+ register_type:dialog.registrationType=='开票'?3:4,
|
|
|
|
+ start_date:dialog.registrationPreForm.start_date,
|
|
|
|
+ end_date:dialog.registrationPreForm.end_date,
|
|
|
|
+ list:dialog.registrationPreForm.IorPInfo,
|
|
|
|
+ services:servicesParam,
|
|
|
|
+ }
|
|
|
|
+ params.list.forEach(item =>{
|
|
|
|
+ item.amount = parseFloat(item.amount)
|
|
|
|
+ item.seller_id=item.seller_id||0
|
|
|
|
+ item.service_product_id=item.service_product_id||0
|
|
|
|
+ })
|
|
|
|
+ registrationPreForm.value.validate((valid)=>{
|
|
|
|
+ if(valid){
|
|
|
|
+ let prePlacementProp=preRegistrationAdd
|
|
|
|
+ if(params.contract_register_id){
|
|
|
|
+ // 编辑
|
|
|
|
+ prePlacementProp=preRegistrationEdit
|
|
|
|
+ }
|
|
|
|
+ prePlacementProp(params).then(res=>{
|
|
|
|
+ dialog.registrationPreShow=false
|
|
|
|
+ ElMessage.success(`${dialog.title}成功`)
|
|
|
|
+ placementPreList()
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+}
|
|
|
|
+// ------------------------------------------------预开票/到款 弹窗
|
|
|
|
+const preDialog=reactive({
|
|
|
|
+ show:false,
|
|
|
|
+ title:'',
|
|
|
|
+ preForm:{
|
|
|
|
+ company_name:'',
|
|
|
|
+ service_product_id:'',
|
|
|
|
+ start_date:'',
|
|
|
|
+ end_date:'',
|
|
|
|
+ services:[],
|
|
|
|
+ amount:'',
|
|
|
|
+ currency_unit:'CNY',
|
|
|
|
+ seller_id:'',
|
|
|
|
+ invoice_type:'',
|
|
|
|
+ register_date:'',
|
|
|
|
+ remark:''
|
|
|
|
+ },
|
|
|
|
+ validityDate:[],
|
|
|
|
+ selectService:[],
|
|
|
|
+ rules:{
|
|
|
|
+ end_date:{required:true,message:"约定有效期不能为空",trigger:'change'},
|
|
|
|
+ services:{required:true,message:'套餐不能为空',trigger:'change'},
|
|
|
|
+ amount:[{required:true,message:'金额不能为空',trigger:'blur'},
|
|
|
|
+ {validator:(rule,value,callback)=>{
|
|
|
|
+ if(!parseFloat(value)){
|
|
|
|
+ callback(new Error('金额无效'))
|
|
|
|
+ }
|
|
|
|
+ if(!preDialog.preForm.currency_unit){
|
|
|
|
+ callback(new Error('货币单位不能为空'))
|
|
|
|
+ }else{
|
|
|
|
+ callback()
|
|
|
|
+ }
|
|
|
|
+ },trigger:'blur'}],
|
|
|
|
+ seller_id:{required:true,message:'销售不能为空',trigger:'change'},
|
|
|
|
+ register_date:{required:true,message:'开票日不能为空',trigger:'change'}
|
|
|
|
+ }
|
|
|
|
+})
|
|
|
|
+const preFormRef=ref(null)
|
|
|
|
+const selectServicesPreRef=ref(null)
|
|
|
|
+watch(()=>preDialog.validityDate,(newVal)=>{
|
|
|
|
+ if(!newVal){
|
|
|
|
+ preDialog.preForm.start_date=''
|
|
|
|
+ preDialog.preForm.end_date=''
|
|
|
|
+ }else{
|
|
|
|
+ preDialog.preForm.start_date = newVal[0]
|
|
|
|
+ preDialog.preForm.end_date = newVal[1]
|
|
|
|
+ }
|
|
|
|
+})
|
|
|
|
+// 预开票/到款
|
|
|
|
+const preIorP=(row)=>{
|
|
|
|
+ preRegistrationDetail({contract_register_id:row.contract_register_id,
|
|
|
|
+ invoice_type:row.invoice_type==3?4:3}).then(res=>{
|
|
|
|
+ if(!res.data) return
|
|
|
|
+ preDialog.preForm.contract_register_id = res.data.contract_register_id
|
|
|
|
+ preDialog.preForm.pre_register_id = row.pre_register_id
|
|
|
|
+ preDialog.preForm.company_name = res.data.company_name
|
|
|
|
+ preDialog.preForm.invoice_type = row.invoice_type==3?4:3
|
|
|
|
+ if(res.data.list.length>0){
|
|
|
|
+ preDialog.preForm.contract_invoice_id = res.data.list[0].contract_invoice_id
|
|
|
|
+ preDialog.preForm.amount=res.data.list[0].amount
|
|
|
|
+ preDialog.preForm.currency_unit=res.data.list[0].currency_unit
|
|
|
|
+ preDialog.preForm.service_product_id=res.data.list[0].service_product_id
|
|
|
|
+ preDialog.preForm.seller_id=res.data.list[0].seller_id
|
|
|
|
+ preDialog.preForm.invoice_type=res.data.list[0].invoice_type
|
|
|
|
+ preDialog.preForm.register_date=res.data.list[0].register_date
|
|
|
|
+ preDialog.preForm.remark=res.data.list[0].remark
|
|
|
|
+ }
|
|
|
|
+ preDialog.preForm.services=res.data.services || []
|
|
|
|
+ preDialog.validityDate=[res.data.start_date,res.data.end_date]
|
|
|
|
+ preDialog.selectServices = [...res.data.services.map(item => item.service_template_id),...res.data.serviceTemplateIds]
|
|
|
|
+ preDialog.title=row.invoice_type==3?'预到款':'预开票'
|
|
|
|
+ preDialog.show=true
|
|
|
|
+ nextTick(()=>{
|
|
|
|
+ servicesChange(preDialog.selectServices,2)
|
|
|
|
+ })
|
|
|
|
+ })
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+const submitPreForm=()=>{
|
|
|
|
+ preFormRef.value.validate((valid)=>{
|
|
|
|
+ if(valid){
|
|
|
|
+ // console.log(preDialog.preForm);
|
|
|
|
+ // 处理选中套餐的数据格式
|
|
|
|
+ let servicesParam=[]
|
|
|
|
+ let FICCSmallServiceIds=[]
|
|
|
|
+ selectServicesPreRef.value.getCheckedNodes().map(node=>{
|
|
|
|
+ let nodeData = node.data
|
|
|
|
+ if(!nodeData.service_template_id) return
|
|
|
|
+ if(nodeData.product_id==2){
|
|
|
|
+ // 权益
|
|
|
|
+ servicesParam.push({service_template_id:nodeData.service_template_id,title:nodeData.title})
|
|
|
|
+ }else{
|
|
|
|
+ // 90000往上都是FICC小套餐品种的Id,特殊处理
|
|
|
|
+ if(nodeData.service_template_id>=90000){
|
|
|
|
+ // 真正拿取的是chart_permission_id
|
|
|
|
+ if(FICCSmallServiceId.includes(nodeData.service_template_id)) FICCSmallServiceIds.push(nodeData.chart_permission_id)
|
|
|
|
+ }else{
|
|
|
|
+ if(nodeData.service_template_id==2){
|
|
|
|
+ // 小套餐
|
|
|
|
+ servicesParam.push({service_template_id:nodeData.service_template_id,
|
|
|
|
+ title:nodeData.title,value:nodeData.value,chart_permission_ids:''})
|
|
|
|
+ }else{
|
|
|
|
+ servicesParam.push({service_template_id:nodeData.service_template_id,title:nodeData.title,value:nodeData.value})
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ for (let i = 0; i < servicesParam.length; i++) {
|
|
|
|
+ const element = servicesParam[i];
|
|
|
|
+ if(element.service_template_id==2){
|
|
|
|
+ element.chart_permission_ids=FICCSmallServiceIds.join(',')
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ preDialog.preForm.amount = parseFloat(preDialog.preForm.amount)
|
|
|
|
+ let params={
|
|
|
|
+ contract_register_id:preDialog.preForm.contract_register_id,
|
|
|
|
+ pre_register_id:preDialog.preForm.pre_register_id,
|
|
|
|
+ company_name:preDialog.preForm.company_name,
|
|
|
|
+ register_type:preDialog.preForm.invoice_type,
|
|
|
|
+ start_date:preDialog.preForm.start_date,
|
|
|
|
+ end_date:preDialog.preForm.end_date,
|
|
|
|
+ list:[{
|
|
|
|
+ contract_invoice_id:preDialog.preForm.contract_invoice_id,
|
|
|
|
+ amount:preDialog.preForm.amount,
|
|
|
|
+ currency_unit:preDialog.preForm.currency_unit,
|
|
|
|
+ remark:preDialog.preForm.remark,
|
|
|
|
+ register_date:preDialog.preForm.register_date,
|
|
|
|
+ seller_id:preDialog.preForm.seller_id||0,
|
|
|
|
+ service_product_id:preDialog.preForm.service_product_id,
|
|
|
|
+ }],
|
|
|
|
+ services:servicesParam||[]
|
|
|
|
+ }
|
|
|
|
+ preRegistrationSave(params).then(res=>{
|
|
|
|
+ preDialog.show=false
|
|
|
|
+ ElMessage.success(`${preDialog.title}成功`)
|
|
|
|
+ placementPreList()
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+const preDialogClosed=()=>{
|
|
|
|
+ preDialog.preForm={
|
|
|
|
+ service_product_id:'',
|
|
|
|
+ start_date:'',
|
|
|
|
+ end_date:'',
|
|
|
|
+ services:[],
|
|
|
|
+ amount:'',
|
|
|
|
+ currency_unit:'CNY',
|
|
|
|
+ seller_id:'',
|
|
|
|
+ register_date:''
|
|
|
|
+ },
|
|
|
|
+ preDialog.validityDate=[]
|
|
|
|
+ preDialog.selectServices=[]
|
|
|
|
+ resetDisable(servicesList.value)
|
|
|
|
+ setTimeout(()=>{
|
|
|
|
+ preFormRef.value.clearValidate()
|
|
|
|
+ },0)
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// -------------------------------货币列表
|
|
|
|
+const currencyList=ref([])
|
|
|
|
+// 获取货币列表
|
|
|
|
+const getCurrencyListFun=()=>{
|
|
|
|
+ getCurrencyList().then(res=>{
|
|
|
|
+ currencyList.value=res.data || []
|
|
|
|
+ })
|
|
|
|
+}
|
|
|
|
+// 以防currenvy_unitw为空
|
|
|
|
+const currencyValidator=(item,callback)=>{
|
|
|
|
+ if(!parseFloat(item.amount)){
|
|
|
|
+ callback(new Error('金额单位无效'))
|
|
|
|
+ }
|
|
|
|
+ if(!item.currency_unit){
|
|
|
|
+ callback(new Error('货币单位不能为空'))
|
|
|
|
+ }else{
|
|
|
|
+ callback()
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+// 新增或编辑预登记 币种修改
|
|
|
|
+const currencyUnitChange=(value)=>{
|
|
|
|
+ dialog.registrationPreForm.IorPInfo.map(item =>{
|
|
|
|
+ item.currency_unit = value
|
|
|
|
+ })
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+let hasQyBigOne=false
|
|
|
|
+let hasQyBigTwo=false
|
|
|
|
+let hasQySmall=false
|
|
|
|
+let hasFiccSmall=false
|
|
|
|
+let hasFiccBig=false
|
|
|
|
+// 小品种的service_template_id
|
|
|
|
+const FICCSmallServiceId=[90001,90016,90103,90138,90142,90109,90110,90114,90107,90111,90108,
|
|
|
|
+ 90118,90239,90205,90212,90224,90224,90226,90302,90317,90325,90340]
|
|
|
|
+
|
|
|
|
+// 套餐选择更改
|
|
|
|
+const servicesChange=(value,type)=>{
|
|
|
|
+ // console.log(value,type);
|
|
|
|
+ // type---> 1-预登记弹窗 2-预开票/预到款弹窗
|
|
|
|
+
|
|
|
|
+ // 权益大套餐/45万
|
|
|
|
+ hasQyBigOne=false
|
|
|
|
+ // 权益大套餐/70万
|
|
|
|
+ hasQyBigTwo=false
|
|
|
|
+ // 11-权益大套餐/45万 12-权益大套餐/70万 单选
|
|
|
|
+ if(value.includes(11) || value.includes(12)){
|
|
|
|
+ value=value.filter(it => ![19,20,21,22,23,24,25,26,27].includes(it))
|
|
|
|
+ if(value.includes(11)){
|
|
|
|
+ value= value.filter(it => it!=12)
|
|
|
|
+ hasQyBigOne=true
|
|
|
|
+ }else if(value.includes(12)){
|
|
|
|
+ hasQyBigTwo=true
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ // FICC大套餐
|
|
|
|
+ if(value.includes(1)){
|
|
|
|
+ value=value.filter(it => !FICCSmallServiceId.includes(it))
|
|
|
|
+ }if(value.includes(2)){
|
|
|
|
+ // FICC小套餐
|
|
|
|
+ value=value.filter(it => it!=1)
|
|
|
|
+ }
|
|
|
|
+// console.log(value);
|
|
|
|
+ // 行业套餐
|
|
|
|
+ hasQySmall=false
|
|
|
|
+ if(value.some(it => [19,20,21,22,23,24,25,26,27].includes(it))){
|
|
|
|
+ hasQySmall=true
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // FICC大套餐
|
|
|
|
+ hasFiccBig=false
|
|
|
|
+ // FICC小套餐
|
|
|
|
+ hasFiccSmall=false
|
|
|
|
+ if(value.some(it => FICCSmallServiceId.includes(it))){
|
|
|
|
+ hasFiccSmall=true
|
|
|
|
+ }
|
|
|
|
+ if(value.includes(1)){
|
|
|
|
+ hasFiccBig=true
|
|
|
|
+ }
|
|
|
|
+ let checkedNodes;
|
|
|
|
+ if(type==1){
|
|
|
|
+ checkedNodes= selectServicesRef.value.getCheckedNodes()
|
|
|
|
+ }else{
|
|
|
|
+ checkedNodes= selectServicesPreRef.value.getCheckedNodes()
|
|
|
|
+ }
|
|
|
|
+ // 套餐类型
|
|
|
|
+ let hasFICCService = checkedNodes.some(Node => Node.data.product_id == 1)
|
|
|
|
+ let hasQYService = checkedNodes.some(Node => Node.data.product_id == 2)
|
|
|
|
+ if(hasFICCService&&hasQYService || !(hasFICCService||hasQYService)){
|
|
|
|
+ type==1?serviceType.value=3:serviceTypePre.value=3
|
|
|
|
+ }else if(hasFICCService){
|
|
|
|
+ type==1?serviceType.value=1:serviceTypePre.value=1
|
|
|
|
+ }else{
|
|
|
|
+ type==1?serviceType.value=2:serviceTypePre.value=2
|
|
|
|
+ }
|
|
|
|
+ // console.log(checkedNodes);
|
|
|
|
+
|
|
|
|
+ setDisable(servicesList.value)
|
|
|
|
+ if(type==1){
|
|
|
|
+ dialog.registrationPreForm.services= dialog.selectServices= value
|
|
|
|
+ }else{
|
|
|
|
+ preDialog.preForm.services=preDialog.selectServices=value
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+}
|
|
|
|
+// 套餐禁用处理
|
|
|
|
+const setDisable=(List)=>{
|
|
|
|
+ List.forEach(element => {
|
|
|
|
+ if(!element.service_template_id){
|
|
|
|
+ setDisable(element.children)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ if(hasQyBigOne||hasQyBigTwo){
|
|
|
|
+ // 权益大套餐选中了,禁用行业套餐
|
|
|
|
+ if(element.service_template_id==13){
|
|
|
|
+ element.disabled=true
|
|
|
|
+ }
|
|
|
|
+ if(hasQyBigOne){
|
|
|
|
+ // 权益大套餐-45万选中了,禁用70万
|
|
|
|
+ if(element.service_template_id==12){
|
|
|
|
+ element.disabled=true
|
|
|
|
+ }
|
|
|
|
+ }else{
|
|
|
|
+ // 权益大套餐-70万选中了,禁用45万
|
|
|
|
+ if(element.service_template_id==11){
|
|
|
|
+ element.disabled=true
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }else{
|
|
|
|
+ // 权益大套餐没选中
|
|
|
|
+ if([11,12,13].includes(element.service_template_id)){
|
|
|
|
+ element.disabled=false
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ // 行业套餐选中了,禁用权益大套餐
|
|
|
|
+ if(hasQySmall){
|
|
|
|
+ if(element.service_template_id==10){
|
|
|
|
+ element.disabled=true
|
|
|
|
+ }
|
|
|
|
+ }else{
|
|
|
|
+ if(element.service_template_id==10){
|
|
|
|
+ element.disabled=false
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ // FICC大套餐选中了,禁用FICC小套餐
|
|
|
|
+ if(hasFiccBig){
|
|
|
|
+ if(element.service_template_id==2){
|
|
|
|
+ element.disabled=true
|
|
|
|
+ }
|
|
|
|
+ }else{
|
|
|
|
+ if(element.service_template_id==2){
|
|
|
|
+ element.disabled=false
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ // FICC小套餐选中了,禁用FICC大套餐
|
|
|
|
+ if(hasFiccSmall){
|
|
|
|
+ if(element.service_template_id==1){
|
|
|
|
+ element.disabled=true
|
|
|
|
+ }
|
|
|
|
+ }else{
|
|
|
|
+ if(element.service_template_id==1){
|
|
|
|
+ element.disabled=false
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if(element.children){
|
|
|
|
+ setDisable(element.children)
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// 重置套餐禁用状态
|
|
|
|
+const resetDisable=(List)=>{
|
|
|
|
+ List.forEach(element => {
|
|
|
|
+ if(!element.service_template_id){
|
|
|
|
+ resetDisable(element.children)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ element.disabled=false
|
|
|
|
+ if(element.service_template_id==10){
|
|
|
|
+ resetDisable(element.children)
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// 切换每页的数量
|
|
|
|
+const changePageSize=(pageSize)=>{
|
|
|
|
+ placemenetPre.searchParams.page_size = pageSize
|
|
|
|
+ placementPreList()
|
|
|
|
+}
|
|
|
|
+const changePageNo = (pageNo)=>{
|
|
|
|
+ placemenetPre.searchParams.current = pageNo
|
|
|
|
+ placementPreList()
|
|
|
|
+}
|
|
|
|
+const searchPlacementPre=()=>{
|
|
|
|
+ placemenetPre.searchParams.current = 1
|
|
|
|
+ placementPreList()
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// 补录合同
|
|
|
|
+const supplementaryContract=(row)=>{
|
|
|
|
+ // console.log(id);
|
|
|
|
+ router.push({path:'/financial/list/contractProgress',query:{
|
|
|
|
+ supplementaryId:row.contract_register_id,
|
|
|
|
+ invoice_type:row.invoice_type
|
|
|
|
+ }})
|
|
|
|
+}
|
|
|
|
+// 查看备注
|
|
|
|
+const remarkView=(type,row)=>{
|
|
|
|
+ let remarkTitle=type+'备注'
|
|
|
|
+ let text = ''
|
|
|
|
+ if(type=='开票'){
|
|
|
|
+ text=row.remark
|
|
|
|
+ }else{
|
|
|
|
+ text=row.arrive_remark
|
|
|
|
+ }
|
|
|
|
+ ElMessageBox.alert(text,remarkTitle,{
|
|
|
|
+ confirmButtonText:'知道了',
|
|
|
|
+ confirmButtonClass:'message-box-remark'
|
|
|
|
+ })
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+// 删除
|
|
|
|
+const delteRecord=(row)=>{
|
|
|
|
+ ElMessageBox.confirm('未补录合同,删除后不可恢复,是否确认删除?','操作提示',
|
|
|
|
+ {
|
|
|
|
+ confirmButtonText: '确定',
|
|
|
|
+ cancelButtonText: '取消',
|
|
|
|
+ type: 'warning',
|
|
|
|
+ }).then(res=>{
|
|
|
|
+ preRegistrationDelete({
|
|
|
|
+ arrive_id:row.arrive_id,contract_register_id:row.contract_register_id,
|
|
|
|
+ invoice_id:row.invoice_id,pre_register_id:row.pre_register_id,}).then(res=>{
|
|
|
|
+ ElMessage.success('删除成功')
|
|
|
|
+ placementPreList()
|
|
|
|
+ })
|
|
|
|
+ }).catch(()=>{})
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// ---------------------created
|
|
|
|
+getSellerListFun()
|
|
|
|
+getServicesListFun()
|
|
|
|
+getCurrencyListFun()
|
|
|
|
+placementPreList()
|
|
|
|
+</script>
|
|
|
|
+
|
|
|
|
+<template>
|
|
|
|
+ <div class="placemenetPre-list-container" id="placemenetPre-list-container" >
|
|
|
|
+ <!-- 顶部区域 -->
|
|
|
|
+ <div class="placemenetPre-top-zone">
|
|
|
|
+ <div class="placemenetPre-top-search-zone">
|
|
|
|
+ <el-input v-model="placemenetPre.searchParams.keyword" placeholder="客户姓名" :prefix-icon="Search"
|
|
|
|
+ style="width: 240px;" @input="searchPlacementPre" clearable />
|
|
|
|
+ </div>
|
|
|
|
+ <!-- 按钮区域 -->
|
|
|
|
+ <div class="placemenetPre-top-option-zone">
|
|
|
|
+ <el-button type="primary" @click="addRegistrationPre('开票')" class="main-button-large"
|
|
|
|
+ style="margin-left: 30px;" v-permission="'financial:registrationPre:AandEInvoice'">开票预登记</el-button>
|
|
|
|
+ <el-button type="primary" @click="addRegistrationPre('到款')" class="main-button-large" style="margin-left: 30px;"
|
|
|
|
+ v-permission="'financial:registrationPre:AandEPayment'">到款预登记</el-button>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="placemenetPre-table-zone">
|
|
|
|
+ <!-- 表格 -->
|
|
|
|
+ <el-table :data="placemenetPre.tableData" border max-height="695px"
|
|
|
|
+ size="default">
|
|
|
|
+ <el-table-column label="客户名称" prop="company_name"
|
|
|
|
+ show-overflow-tooltip min-width="120"></el-table-column>
|
|
|
|
+ <el-table-column label="开票日" prop="invoice_time" width="110">
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column label="开票金额" prop="origin_amount" width="120">
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column label="开票销售" width="100" prop="seller_name"></el-table-column>
|
|
|
|
+ <el-table-column label="到款日" prop="arrive_time" width="110">
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column label="到款金额" prop="arrive_origin_amount" width="120">
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column label="约定有效期" width="210" prop="start_date">
|
|
|
|
+ <template #default="{row}">
|
|
|
|
+ {{(row.start_date+' 至 '+row.end_date)}}
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column label="套餐" prop="services" show-overflow-tooltip></el-table-column>
|
|
|
|
+ <el-table-column label="操作" fixed="right" >
|
|
|
|
+ <template #default="{row}">
|
|
|
|
+ <div class="table-options">
|
|
|
|
+ <span class="table-option-buttons" v-permission="'financial:registrationPre:supplementary'"
|
|
|
|
+ @click="supplementaryContract(row)">
|
|
|
|
+ 补录合同
|
|
|
|
+ </span>
|
|
|
|
+ <span class="table-option-buttons" v-permission="'financial:registrationPre:preInvoice'"
|
|
|
|
+ @click="preIorP(row)" v-if="row.invoice_type==4">
|
|
|
|
+ 预开票
|
|
|
|
+ </span>
|
|
|
|
+ <span class="table-option-buttons" v-permission="'financial:registrationPre:prePayment'"
|
|
|
|
+ @click="preIorP(row)" v-if="row.invoice_type==3">
|
|
|
|
+ 预到款
|
|
|
|
+ </span>
|
|
|
|
+ <span class="table-option-buttons" v-permission="'financial:registrationPre:AandEInvoice'"
|
|
|
|
+ @click="editRegistrationPre(row)" v-if="row.invoice_type==3" >
|
|
|
|
+ 编辑
|
|
|
|
+ </span>
|
|
|
|
+ <span class="table-option-buttons" v-permission="'financial:registrationPre:AandEPayment'"
|
|
|
|
+ @click="editRegistrationPre(row)" v-if="row.invoice_type==4">
|
|
|
|
+ 编辑
|
|
|
|
+ </span>
|
|
|
|
+ <span class="table-option-buttons" v-permission="'financial:registrationPre:delete'"
|
|
|
|
+ @click="delteRecord(row)" style="color:var(--dangerColor);" v-if="adminId==row.admin_id">
|
|
|
|
+ 删除
|
|
|
|
+ </span>
|
|
|
|
+ <el-dropdown popper-class="classifyFandQ" size="large" @command="(type)=>remarkView(type,row)">
|
|
|
|
+ <el-icon style="cursor: pointer;font-size: 16px;"><MoreFilled /></el-icon>
|
|
|
|
+ <template #dropdown>
|
|
|
|
+ <el-dropdown-menu>
|
|
|
|
+ <el-dropdown-item command="开票">开票备注</el-dropdown-item>
|
|
|
|
+ <el-dropdown-item command="到款">到款备注</el-dropdown-item>
|
|
|
|
+ </el-dropdown-menu>
|
|
|
|
+ </template>
|
|
|
|
+ </el-dropdown>
|
|
|
|
+ </div>
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <template #empty>
|
|
|
|
+ <div class="table-no-data">
|
|
|
|
+ <img src="@/assets/img/icon/empty-data.png" />
|
|
|
|
+ <span>暂无数据</span>
|
|
|
|
+ </div>
|
|
|
|
+ </template>
|
|
|
|
+ </el-table>
|
|
|
|
+ <!-- 分页 -->
|
|
|
|
+ <m-page :pageSize="placemenetPre.searchParams.page_size" :page_no="placemenetPre.searchParams.current"
|
|
|
|
+ style="display: flex;justify-content: flex-end;margin-top: 20px;"
|
|
|
|
+ :total="placemenetPre.total" @handleCurrentChange="changePageNo" @handleSizeChange="changePageSize"/>
|
|
|
|
+ </div>
|
|
|
|
+ <!-- 新增/编辑弹窗 -->
|
|
|
|
+ <el-dialog v-model="dialog.registrationPreShow" :title="dialog.title" top="5vh"
|
|
|
|
+ width="942px" @closed="dialogClosed"
|
|
|
|
+ :close-on-click-modal="false">
|
|
|
|
+ <el-form :model="dialog.registrationPreForm" inline ref="registrationPreForm" style="margin:0 10px;">
|
|
|
|
+ <el-form-item label="客户名称" prop="company_name" label-width="90" style="margin-right: 30px;"
|
|
|
|
+ :rules="{required:true,message:'客户名称不能为空',trigger:'blur'}">
|
|
|
|
+ <el-input v-model="dialog.registrationPreForm.company_name"
|
|
|
|
+ placeholder="请输入客户名称" style="width:320px" />
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="约定有效期" prop="end_date" label-width="102" style="margin-right: 20px;"
|
|
|
|
+ :rules="dialog.registrationType=='开票'?{required:true,message:'约定有效期不能为空',trigger:'change'}:{required:false}">
|
|
|
|
+ <el-date-picker type="daterange"
|
|
|
|
+ v-model="dialog.validityDate" style="max-width: 320px;"
|
|
|
|
+ start-placeholder="开始日期" end-placeholder="结束日期" value-format="YYYY-MM-DD"
|
|
|
|
+ :clearable="false">
|
|
|
|
+ </el-date-picker>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="套餐" prop="services" label-width="90" style="margin-right: 20px;"
|
|
|
|
+ :rules="dialog.registrationType=='开票'?{required:true,message:'套餐不能为空',trigger:'change'}:{required:false}">
|
|
|
|
+ <el-cascader filterable :options="servicesList" placeholder="请选择套餐" @change="(value)=>servicesChange(value,1)"
|
|
|
|
+ :show-all-levels="true" v-model="dialog.selectServices" :clearable="false" ref="selectServicesRef"
|
|
|
|
+ :props="{multiple:true,label:'title',value:'service_template_id',emitPath:false}" collapse-tags collapse-tags-tooltip
|
|
|
|
+ key="seriveces" style="min-width: 775px;z-index: 100;">
|
|
|
|
+ </el-cascader>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-scrollbar max-height="470px" noresize style="margin: 0 -10px;padding: 0 10px;" >
|
|
|
|
+ <div class="invoice-payment-row" v-for="(item,index) in dialog.registrationPreForm.IorPInfo" :key="index">
|
|
|
|
+ <el-form-item label="套餐类型" :prop="`IorPInfo.${index}.service_product_id`" v-if="serviceType==3"
|
|
|
|
+ label-width="90" style="margin-right: 20px;"
|
|
|
|
+ :rules="dialog.registrationType=='开票'?{required:true,message:'套餐类型不能为空',trigger:'change'}:{required:false}">
|
|
|
|
+ <el-select v-model="item.service_product_id" style="width: 176px;" @change="value=> productIdChange(value,item)"
|
|
|
|
+ placeholder="请选择套餐">
|
|
|
|
+ <el-option label="FICC套餐" :value="1"></el-option>
|
|
|
|
+ <el-option label="权益套餐" :value="2"></el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item :label="dialog.registrationType+'金额'" :prop="`IorPInfo.${index}.amount`" label-width="90" style="margin-right: 20px;"
|
|
|
|
+ :rules="[{required:true,message:'金额不能为空',trigger:'blur'},
|
|
|
|
+ {validator:(rule,value,callback)=>currencyValidator(item,callback),trigger:'blur'}]">
|
|
|
|
+ <el-input v-model.trim="item.amount"
|
|
|
|
+ :placeholder="`请输入${dialog.registrationType}金额`" style="width: 131px;margin-right: 15px;" />
|
|
|
|
+ <el-select v-model="item.currency_unit" placeholder="请选择货币类型" style="width: 91px;" @change="currencyUnitChange">
|
|
|
|
+ <el-option v-for="currency in currencyList" :key="currency.code" :label="currency.name" :value="currency.code">
|
|
|
|
+ </el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item :label="dialog.registrationType+'日'" :prop="`IorPInfo.${index}.register_date`" label-width="73"
|
|
|
|
+ :style="{marginRight:serviceType==3?'0':'20px'}"
|
|
|
|
+ :rules="{required:true,message:dialog.registrationType+'日不能为空',trigger:'change'}">
|
|
|
|
+ <el-date-picker v-model="item.register_date" style="max-width: 156px!important;"
|
|
|
|
+ :placeholder="`请选择${dialog.registrationType}日`" value-format="YYYY-MM-DD" :clearable="false">
|
|
|
|
+ </el-date-picker>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="开票销售" :prop="`IorPInfo.${index}.seller_id`" label-width="90" style="margin-right: 0;"
|
|
|
|
+ :rules="{required:true,message:'销售不能为空',trigger:'change'}" v-if="dialog.registrationType=='开票'">
|
|
|
|
+ <el-select v-model="item.seller_id" style="width: 176px;"
|
|
|
|
+ placeholder="请选择销售" filterable v-if="item.service_product_id==1">
|
|
|
|
+ <el-option :label="seller.seller_name" :value="seller.seller_id"
|
|
|
|
+ v-for="seller in sellerInvoiceListF" :key="seller.seller_id">
|
|
|
|
+ </el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+ <el-select v-model="item.seller_id" style="width: 176px;"
|
|
|
|
+ placeholder="请选择销售" filterable v-else-if="item.service_product_id==2">
|
|
|
|
+ <el-option :label="seller.seller_name" :value="seller.seller_id"
|
|
|
|
+ v-for="seller in sellerInvoiceListQ" :key="seller.seller_id">
|
|
|
|
+ </el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+ <el-select v-model="item.seller_id" style="width: 176px;"
|
|
|
|
+ placeholder="请选择销售" v-else
|
|
|
|
+ @visible-change="selectVisible">
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="备注" :prop="`IorPInfo.${index}.remark`" label-width="90"
|
|
|
|
+ style="margin-right: 0;" :style="{marginLeft:serviceType==3 && dialog.registrationType=='开票'?'20px':'0'}">
|
|
|
|
+ <el-input v-model="item.remark" placeholder="请输入备注" :style="{width:serviceType==3&&dialog.registrationType=='开票'?'486px':'772px'}" />
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-icon color="#D0D2D5" class="deleteIcon" size="16px" @click="deleteRegistrationPreRow(index)"
|
|
|
|
+ v-show="dialog.registrationPreForm.IorPInfo.length>1"><CircleCloseFilled /></el-icon>
|
|
|
|
+ </div>
|
|
|
|
+ </el-scrollbar>
|
|
|
|
+ </el-form>
|
|
|
|
+ <div class="add-invoice-payment" @click="addRegistrationPreRow">
|
|
|
|
+ <el-icon size="16px" color="var(--themeColor)">
|
|
|
|
+ <svg-icon name="svgIcon-common-add"></svg-icon>
|
|
|
|
+ </el-icon>
|
|
|
|
+ <span>添加{{ dialog.registrationType}}信息</span>
|
|
|
|
+ </div>
|
|
|
|
+ <template #footer>
|
|
|
|
+ <div>
|
|
|
|
+ <el-button @click="dialog.registrationPreShow=false" class="common-button-medium">取消</el-button>
|
|
|
|
+ <el-button type="primary" @click="submitForm" style="margin-left: 30px;">确定</el-button>
|
|
|
|
+ </div>
|
|
|
|
+ </template>
|
|
|
|
+ </el-dialog>
|
|
|
|
+ <!--预开票/到款 弹窗 -->
|
|
|
|
+ <el-dialog v-model="preDialog.show" :title="preDialog.title"
|
|
|
|
+ width="450px" @closed="preDialogClosed"
|
|
|
|
+ :close-on-click-modal="false">
|
|
|
|
+ <el-form :model="preDialog.preForm" :rules="preDialog.rules" id="preFormRef"
|
|
|
|
+ ref="preFormRef" style="margin-left:10px;" label-width="101px">
|
|
|
|
+ <el-form-item label="约定有效期" prop="end_date" v-if="preDialog.title=='预开票'">
|
|
|
|
+ <el-date-picker type="daterange" key="pre"
|
|
|
|
+ v-model="preDialog.validityDate" style="max-width: 286px;"
|
|
|
|
+ start-placeholder="开始日期" end-placeholder="结束日期" value-format="YYYY-MM-DD"
|
|
|
|
+ :clearable="false">
|
|
|
|
+ </el-date-picker>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="套餐" prop="services" v-show="preDialog.title=='预开票'">
|
|
|
|
+ <el-cascader filterable :options="servicesList" placeholder="请选择套餐" @change="(value)=>servicesChange(value,2)"
|
|
|
|
+ :show-all-levels="true" v-model="preDialog.selectServices" :clearable="false" ref="selectServicesPreRef"
|
|
|
|
+ :props="{multiple:true,label:'title',value:'service_template_id',emitPath:false}" collapse-tags collapse-tags-tooltip
|
|
|
|
+ key="preSeriveces" style="min-width: 286px;z-index: 100;">
|
|
|
|
+ </el-cascader>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="套餐类型" prop="service_product_id" v-if="serviceTypePre==3"
|
|
|
|
+ :rules="preDialog.title=='预开票'?{required:true,message:'套餐类型不能为空',trigger:'change'}:{required:false}">
|
|
|
|
+ <el-select v-model="preDialog.preForm.service_product_id"
|
|
|
|
+ style="width: 286px;" @change="value=> productIdChange(value,preDialog.preForm)"
|
|
|
|
+ placeholder="请选择套餐">
|
|
|
|
+ <el-option label="FICC套餐" :value="1"></el-option>
|
|
|
|
+ <el-option label="权益套餐" :value="2"></el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item :label="preDialog.title=='预开票'?'开票金额':'到款金额'" prop="amount">
|
|
|
|
+ <el-input v-model.trim="preDialog.preForm.amount" style="width: 185px;margin-right: 10px;"
|
|
|
|
+ :placeholder="preDialog.title=='预开票'?'请输入开票金额':'请输入到款金额'" />
|
|
|
|
+ <el-select v-model="preDialog.preForm.currency_unit" placeholder="请选择货币类型" style="width: 91px;" >
|
|
|
|
+ <el-option v-for="currency in currencyList" :key="currency.code" :label="currency.name" :value="currency.code">
|
|
|
|
+ </el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="开票销售" prop="seller_id" v-if="preDialog.title=='预开票'">
|
|
|
|
+ <el-select v-model="preDialog.preForm.seller_id" style="width: 286px;"
|
|
|
|
+ placeholder="请选择销售" filterable v-if="preDialog.preForm.service_product_id==1">
|
|
|
|
+ <el-option :label="seller.seller_name" :value="seller.seller_id"
|
|
|
|
+ v-for="seller in sellerInvoiceListF" :key="seller.seller_id">
|
|
|
|
+ </el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+ <el-select v-model="preDialog.preForm.seller_id" style="width: 286px;"
|
|
|
|
+ placeholder="请选择销售" filterable v-else-if="preDialog.preForm.service_product_id==2">
|
|
|
|
+ <el-option :label="seller.seller_name" :value="seller.seller_id"
|
|
|
|
+ v-for="seller in sellerInvoiceListQ" :key="seller.seller_id">
|
|
|
|
+ </el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+ <el-select v-model="preDialog.preForm.seller_id" style="width: 286px;"
|
|
|
|
+ placeholder="请选择销售" v-else
|
|
|
|
+ @visible-change="selectVisible">
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item :label="preDialog.title=='预开票'?'开票日':'到款日'" prop="register_date">
|
|
|
|
+ <el-date-picker v-model="preDialog.preForm.register_date"
|
|
|
|
+ :placeholder="preDialog.title=='预开票'?'请选择开票日':'请选择到款日'" value-format="YYYY-MM-DD" :clearable="false">
|
|
|
|
+ </el-date-picker>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="备注" prop="remark">
|
|
|
|
+ <el-input v-model="preDialog.preForm.remark" type="textarea" :rows="2"
|
|
|
|
+ placeholder="请输入备注" style="width:286px" />
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-form>
|
|
|
|
+ <template #footer>
|
|
|
|
+ <div>
|
|
|
|
+ <el-button @click="preDialog.show=false" class="common-button-medium">取消</el-button>
|
|
|
|
+ <el-button type="primary" @click="submitPreForm" style="margin-left: 30px;">确定</el-button>
|
|
|
|
+ </div>
|
|
|
|
+ </template>
|
|
|
|
+ </el-dialog>
|
|
|
|
+
|
|
|
|
+ </div>
|
|
|
|
+</template>
|
|
|
|
+
|
|
|
|
+<style lang="scss" scoped>
|
|
|
|
+ .placemenetPre-list-container{
|
|
|
|
+ min-height: 100%;
|
|
|
|
+ .placemenetPre-top-zone{
|
|
|
|
+ display: flex;
|
|
|
|
+ flex-wrap: wrap;
|
|
|
|
+ align-items: flex-start;
|
|
|
|
+ justify-content: space-between;
|
|
|
|
+ margin-bottom: 20px;
|
|
|
|
+ .placemenetPre-top-search-zone{
|
|
|
|
+ display: flex;
|
|
|
|
+ align-items: center;
|
|
|
|
+ margin-bottom: 8px;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ .placemenetPre-table-zone{
|
|
|
|
+ margin-top: 20px;
|
|
|
|
+ }
|
|
|
|
+ .invoice-payment-row{
|
|
|
|
+ padding: 20px 10px 0;
|
|
|
|
+ background-color: #FBF9F4;
|
|
|
|
+ margin-bottom: 20px;
|
|
|
|
+ position: relative;
|
|
|
|
+ &:last-child{
|
|
|
|
+ margin-bottom: 0;
|
|
|
|
+ }
|
|
|
|
+ .deleteIcon{
|
|
|
|
+ cursor: pointer;
|
|
|
|
+ position: absolute;
|
|
|
|
+ top:0;
|
|
|
|
+ right: 0;
|
|
|
|
+ z-index: 3;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ .add-invoice-payment{
|
|
|
|
+ display: inline-flex;
|
|
|
|
+ align-items: center;
|
|
|
|
+ margin-top: 20px;
|
|
|
|
+ padding: 0 10px;
|
|
|
|
+ cursor: pointer;
|
|
|
|
+ span{
|
|
|
|
+ color: $themeColor;
|
|
|
|
+ font-size: 14px;
|
|
|
|
+ margin-left: 6px;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+</style>
|
|
|
|
+<style lang="scss">
|
|
|
|
+ #placemenetPre-list-container{
|
|
|
|
+ .el-dialog__footer{
|
|
|
|
+ padding-top: 0!important;
|
|
|
|
+ padding: 0 0 36px 0;
|
|
|
|
+ }
|
|
|
|
+ #preFormRef{
|
|
|
|
+ .el-date-editor{
|
|
|
|
+ .el-input__wrapper{
|
|
|
|
+ width: 286px;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ .message-box-remark{
|
|
|
|
+ color: white!important;
|
|
|
|
+ }
|
|
|
|
+</style>
|