Compliance.vue 44 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065
  1. <script setup>
  2. import '../style/contractRegistration.scss'
  3. import scrollableSelect from '@/components/scrollable-select/index.vue'
  4. import permissionDia from '../components/permissionDia.vue'
  5. import permissionQyDia from '../components/permissionQyDia.vue'
  6. import {getContractSearchList,getServiceDetail} from '@/api/crm'
  7. import {registerAdd,registerEdit,contractRegisterCheck} from '@/api/financialMana'
  8. import financialCommon from '../composition/common'
  9. const contractSourceArray=['非CRM合同导入','CRM合同导入']
  10. const contractOwnereArray=['实际使用方','代付方']
  11. // 合同状态数组
  12. const contractStatusArray=financialCommon().contractStatusArray
  13. // 合同类型数组
  14. const contractTypeArray=financialCommon().contractTypeArray
  15. const props=defineProps({
  16. // 权限类型
  17. operationtype:{
  18. type:String,
  19. default:'compliance'
  20. },
  21. // 货币数据
  22. currencyList:{
  23. type:Array,
  24. default:()=>[]
  25. },
  26. // 套餐数据
  27. serviceItem:{
  28. type:Object,
  29. default:()=>{}
  30. },
  31. // 销售数据
  32. sellerData:{
  33. type:Object,
  34. default:()=>{}
  35. },
  36. // 预登记数据
  37. supplementaryInfo:{
  38. type:Object,
  39. default:()=>{}
  40. },
  41. // 详情数据
  42. detailInfo:{
  43. type:Object,
  44. default:()=>{}
  45. }
  46. })
  47. const emits=defineEmits(['submitSuccess'])
  48. const contractInfoForm=ref(null)
  49. // 表单相关
  50. const compliance=reactive({
  51. // 合规登记表单
  52. form:{
  53. product_ids:'',
  54. supplement:0, // 是否是补录合同
  55. contract_register_id:0,
  56. crm_contract_id:0,
  57. contract_source:0,
  58. contract_code:'',
  59. company_name:'',
  60. currency_unit:'CNY',
  61. seller_ids:'',
  62. seller_id:0,
  63. contract_status:'',
  64. start_date:'',
  65. end_date:'',
  66. contract_amount:'',
  67. contract_type:'', // 1-新签 2-续约 4-补充
  68. has_payment:'', // 0-自付 1-代付
  69. has_invoice:'', // 是否走开票带到款 0-否 1-是
  70. actual_pay_companies:'',
  71. relate_contract_code:'',
  72. relate_contract_main_code:'',
  73. sign_date:'',
  74. agreed_pay_time:'',
  75. // 套餐金额
  76. service_amount:[],
  77. services:[],
  78. services_amount:'',
  79. services_Qy_amount:'',
  80. service_remark:'',
  81. remark:""
  82. },
  83. rules:{
  84. contract_source:{required:true,message:'合同来源不能为空',trigger:'change'},
  85. contract_code:{required:true,message:'合同编号不能为空',trigger:'blur'},
  86. company_name:{required:true,message:'客户名称不能为空',trigger:'blur'},
  87. seller_ids:{required:true,message:'销售姓名不能为空',trigger:['blur','change']},
  88. contract_status:{required:true,message:'合同状态不能为空',trigger:'change'},
  89. start_date:{required:true,message:'合同有效期不能为空',trigger:'change'},
  90. contract_amount:[{required:true,message:'合同金额不能为空',trigger:'blur'},
  91. {
  92. validator:(rule,value,callback)=>{
  93. if(!parseFloat(value)){
  94. callback(new Error('合同金额格式错误'))
  95. }else{
  96. callback()
  97. }
  98. },
  99. trigger:'blur'
  100. }],
  101. contract_type:{required:true,message:'合同类型不能为空',trigger:'change'}
  102. },
  103. // 有效期
  104. contractValidityDate:[],
  105. // 合同类型选中
  106. contractTypeCheck:[],
  107. hasQYSeller:''
  108. })
  109. // --------------套餐信息
  110. const serviceData=reactive({
  111. // 选中的套餐 - ficc
  112. checkedService:[],
  113. // 选中的套餐 - 权益
  114. checkedServiceQy:[],
  115. // 小套餐选中的品种
  116. checkedPermission:[],
  117. // 权益大套餐选中的品种
  118. checkedPermissionQyBig:[],
  119. // 行业套餐选中的品种
  120. checkedPermissionQySmall:[],
  121. // 显示选择品种 - FICC小套餐
  122. serviceVarietyShow:false,
  123. serviceVarietyShowQy:false,
  124. // 1-大套餐 2-小套餐
  125. serviceType:0,
  126. // 权益套餐 1、权益大套餐 2、行业套餐
  127. serviceTypeQy:0,
  128. // 品种选择 - Ficc
  129. varietyDiaShow:false,
  130. //品种选择 - Qy
  131. varietyDiaShowQy:false,
  132. varietyDiaType:'view',
  133. // 1 - 权益大套餐 2-行业套餐
  134. qYDiaType:1,
  135. // 查看套餐弹窗
  136. serviceShow:false,
  137. })
  138. // 销售列表类型1-单Ficc 2-单权益 3-ficc和权益
  139. const sellerListType=ref(3)
  140. // 选中的销售数组
  141. const cascaderSelectSeller=ref([])
  142. // 查看套餐报价单 图片
  143. const previewImage=ref('')
  144. // 查看套餐报价单 标题
  145. const previewImageTitle=ref('')
  146. // 合同编号列表请求参数
  147. const contractNoQuery=reactive({
  148. page_size:20,
  149. current:1,
  150. keyword:''
  151. })
  152. const contractNoInfo=reactive({
  153. contractNoTotal:0,
  154. contractNoLoading:false,
  155. contractNoArray:[]
  156. })
  157. // --------------------------------------方法
  158. // 合同来源改变
  159. const contractSourceChange=(value)=>{
  160. // 切换来源,清空数据
  161. compliance.form.product_ids='',
  162. compliance.form.crm_contract_id=0,
  163. compliance.form.contract_code='',
  164. compliance.form.company_name='',
  165. compliance.form.currency_unit='CNY',
  166. compliance.form.seller_ids='',
  167. compliance.form.seller_id='',
  168. compliance.form.contract_status='',
  169. compliance.form.start_date='',
  170. compliance.form.end_date='',
  171. compliance.form.contract_amount='',
  172. compliance.form.contract_type='',
  173. compliance.form.has_payment='',
  174. compliance.form.has_invoice='',
  175. compliance.form.actual_pay_companies='',
  176. compliance.form.relate_contract_code='',
  177. compliance.form.relate_contract_main_code='',
  178. compliance.form.sign_date='',
  179. compliance.form.agreed_pay_time='',
  180. compliance.form.services=[],
  181. compliance.form.services_amount='',
  182. compliance.form.services_Qy_amount='',
  183. compliance.form.service_remark='',
  184. compliance.form.remark=""
  185. compliance.hasQYSeller=''
  186. cascaderSelectSeller.value=[]
  187. serviceData.checkedService=[]
  188. serviceData.checkedServiceQy=[]
  189. serviceData.checkedPermission=[]
  190. serviceData.checkedPermissionQyBig=[]
  191. serviceData.checkedPermissionQySmall=[]
  192. sellerListType.value = value==0?3:''
  193. // 1-大套餐 2-小套餐
  194. serviceData.serviceType=0
  195. serviceData.serviceTypeQy=0
  196. // 品种选择 - Ficc
  197. serviceData.serviceVarietyShow=false
  198. // 品种选择 - Qy
  199. serviceData.serviceVarietyShowQy=false
  200. compliance.contractTypeCheck=[]
  201. compliance.contractValidityDate=[]
  202. setTimeout(()=>{
  203. // 去除错误信息
  204. contractInfoForm.value && contractInfoForm.value.clearValidate()
  205. },0)
  206. }
  207. // ---------------------------------------计算
  208. const onlyQYSellerData=computed(()=>{
  209. return props.sellerData.all_list.filter(item => item.seller_id==5)[0].child
  210. })
  211. const onlyFICCSellerData=computed(()=>{
  212. return props.sellerData.all_list.filter(item => item.seller_id==2)[0].child
  213. })
  214. // ------------------------------------------------监听
  215. watch(()=>props.supplementaryInfo.supplement,(value)=>{
  216. if(value){
  217. setSupplementaryData()
  218. }
  219. })
  220. watch(()=>props.detailInfo.contract_register_id,(value)=>{
  221. if(value){
  222. setComplianceDetail()
  223. }
  224. })
  225. // --------------------------------------------------------方法
  226. // 合同类型改变
  227. const contractTypeChange=(value)=>{
  228. if(!value) return
  229. compliance.form.has_payment = value[0]
  230. if(compliance.form.has_payment==0){
  231. compliance.form.has_invoice=1
  232. }
  233. // 新签 -- 新客户 其余的算老客户
  234. compliance.form.contract_type = value[1]
  235. if(compliance.form.contract_type!=4){
  236. // 新签、续约
  237. compliance.form.relate_contract_main_code=''
  238. }
  239. if(!compliance.form.has_payment){
  240. compliance.form.relate_contract_code=''
  241. compliance.form.actual_pay_companies=''
  242. }
  243. }
  244. // 销售修改
  245. const sellerChange=(value)=>{
  246. let ficcSeller,qySeller
  247. if(value?.length>0){
  248. for (let i = 0; i < value.length; i++) {
  249. const element = value[i];
  250. if(element[0]==2){
  251. // ficc
  252. ficcSeller = element[element.length-1]
  253. }else if(element[0]==5){
  254. //权益
  255. qySeller = element[element.length-1]
  256. }
  257. }
  258. cascaderSelectSeller.value=[ficcSeller,qySeller]
  259. compliance.hasQYSeller=qySeller?true:false
  260. compliance.form.seller_ids= cascaderSelectSeller.value.join(',')
  261. }else{
  262. cascaderSelectSeller.value=[]
  263. compliance.form.seller_ids=''
  264. compliance.hasQYSeller=''
  265. }
  266. }
  267. // 合同编号选中
  268. const selectContractNo=(value)=>{
  269. let selectItem=contractNoInfo.contractNoArray.find(item=>item.contract_code == value)
  270. if(selectItem.contract_business_type_int==2){
  271. // 代付合同
  272. compliance.form.has_payment=1
  273. compliance.form.has_invoice=1
  274. compliance.form.company_name=selectItem.actual_company_name
  275. compliance.form.relate_contract_code=selectItem.relate_contract_code
  276. compliance.form.actual_pay_companies=selectItem.company_name
  277. }else{
  278. //自付合同 也可能是非标代付
  279. compliance.form.has_payment=0
  280. compliance.form.has_invoice=1
  281. compliance.form.company_name=selectItem.company_name
  282. compliance.form.relate_contract_code=''
  283. compliance.form.actual_pay_companies=''
  284. }
  285. // 获取套餐详情
  286. getServiceDetail({contract_id:selectItem.contract_id}).then(res=>{
  287. if(!res.data) return
  288. //非标代付合同
  289. if(res.data.RelationContractDetailList && res.data.RelationContractDetailList.length>0 && selectItem.contract_business_type_int==1){
  290. compliance.form.has_payment=1
  291. compliance.form.has_invoice=0
  292. compliance.form.relate_contract_code = res.data.RelationContractDetailList.map(it => it.ContractCode).join(',')
  293. compliance.form.company_name=selectItem.company_name
  294. compliance.form.actual_pay_companies=res.data.RelationContractDetailList.map(it => it.CompanyName).join(',')
  295. }
  296. compliance.contractTypeCheck = [compliance.form.has_payment,compliance.form.contract_type]
  297. let servivesTemp
  298. if(selectItem.contract_type_key==3){
  299. // 代付合同 套餐取 关联合同的套餐
  300. servivesTemp=res.data.RelationContractDetailList[0]?res.data.RelationContractDetailList[0].Service||[]:[]
  301. }else{
  302. servivesTemp=res.data.Service || []
  303. }
  304. if(selectItem.product_id==1){
  305. // 清空权益套餐
  306. serviceData.serviceVarietyShowQy = false
  307. serviceData.serviceTypeQy = 0
  308. serviceData.checkedServiceQy=[]
  309. compliance.form.services_Qy_amount = ''
  310. // FICC套餐
  311. // 小套餐
  312. let smallService = servivesTemp.find(item => item.ServiceTemplateId==2)
  313. // 是否有大套餐
  314. let hasBigService = servivesTemp.some(item => item.ServiceTemplateId==1)
  315. serviceData.serviceVarietyShow=!!smallService
  316. serviceData.serviceType = !!smallService?2:hasBigService?1:0
  317. serviceData.checkedService=servivesTemp.map(item => item.ServiceTemplateId)
  318. serviceData.checkedPermission=smallService?smallService.ChartPermissionIds||[]:[]
  319. compliance.form.services_amount = res.data.Price
  320. }else{
  321. // 清空FICC套餐
  322. serviceData.serviceVarietyShow = false
  323. serviceData.serviceType = 0
  324. serviceData.checkedService=[]
  325. compliance.form.services_amount = ''
  326. //权益
  327. // 权益大套餐
  328. let bigServiceQY = servivesTemp.find(item => item.FMSServiceTemplateId==11 || item.FMSServiceTemplateId==12)
  329. // 行业套餐 - 医药/消费/科技/智造/策略
  330. let smallServiceQY = servivesTemp.filter(item => [14,15,16,17,18].includes(item.FMSServiceTemplatePId))
  331. serviceData.serviceVarietyShowQy = (!!bigServiceQY) || (!!smallServiceQY)
  332. serviceData.serviceTypeQy = serviceData.qYDiaType = !!bigServiceQY?1:!!smallServiceQY?2:0
  333. serviceData.checkedServiceQy=[!!bigServiceQY?10:13]
  334. compliance.form.services_Qy_amount = res.data.Price
  335. if(!!bigServiceQY){
  336. //权益大套餐
  337. serviceData.checkedPermissionQyBig = [bigServiceQY.FMSServiceTemplateId]
  338. serviceData.checkedPermissionQySmall = []
  339. }else{
  340. //行业套餐
  341. serviceData.checkedPermissionQyBig = []
  342. serviceData.checkedPermissionQySmall = smallServiceQY.map(item => item.FMSServiceTemplateId)
  343. }
  344. }
  345. serviceData.varietyDiaType='edit'
  346. })
  347. // compliance.form.product_ids = selectItem.product_id.toString()
  348. sellerListType.value = selectItem.product_id
  349. compliance.hasQYSeller=selectItem.product_id==2
  350. compliance.form.crm_contract_id=selectItem.contract_id
  351. compliance.form.start_date=selectItem.start_date
  352. compliance.form.end_date=selectItem.end_date
  353. compliance.contractValidityDate=[selectItem.start_date,selectItem.end_date]
  354. compliance.form.contract_amount=selectItem.price
  355. compliance.form.seller_id=selectItem.seller_id
  356. compliance.form.seller_ids=selectItem.seller_id+''
  357. // selectItem.contract_type_int 1-新签 2-续约 3-补充
  358. // compliance.form.contract_type 1-新签 2-续约 4-补充
  359. compliance.form.contract_type=selectItem.contract_type_int==3?4:selectItem.contract_type_int
  360. compliance.form.relate_contract_main_code=!compliance.form.has_payment?selectItem.relate_contract_main_code:''
  361. contractInfoForm.value &&
  362. contractInfoForm.value.validateField([
  363. 'contract_code','company_name','contract_type','seller_ids',
  364. 'start_date','contract_amount','relate_contract_code','actual_pay_companies'
  365. ])
  366. }
  367. // 合规登记-提交
  368. const complianceSubmit=()=>{
  369. contractInfoForm.value.validate(valid=>{
  370. if(valid){
  371. compliance.form.services=[]
  372. compliance.form.service_amount=[]
  373. if(serviceData.checkedServiceQy.length==0 && serviceData.checkedService.length==0){
  374. ElMessage.warning('请选择套餐')
  375. return
  376. }
  377. let hasFICCservice=false
  378. let hasQYservice=false
  379. // FICC
  380. if(serviceData.checkedService.length>0){
  381. hasFICCservice=true
  382. if((!serviceData.checkedPermission || serviceData.checkedPermission.length==0)
  383. && serviceData.checkedService.some(serviceId =>serviceId==2)){
  384. ElMessage.warning('请保存FICC小套餐品种')
  385. return
  386. }
  387. serviceData.checkedService.map(serviceId=>{
  388. let serviceSelectItem = props.serviceItem.serviceArray.find(it=> it.service_template_id==serviceId) || {}
  389. // 小套餐
  390. if(serviceId==2){
  391. compliance.form.services.push({
  392. service_template_id:serviceSelectItem.service_template_id,
  393. value:'',
  394. chart_permission_ids:serviceData.checkedPermission?serviceData.checkedPermission.join(','):'',
  395. chart_permission_id:serviceSelectItem.chart_permission_id,
  396. title:serviceSelectItem.title
  397. })
  398. }
  399. else if(serviceId==3){
  400. compliance.form.services.push(serviceSelectItem)
  401. }
  402. else{
  403. compliance.form.services.push({service_template_id:serviceSelectItem.service_template_id,title:serviceSelectItem.title})
  404. }
  405. })
  406. // 套餐金额
  407. if(!compliance.form.services_amount){
  408. ElMessage.error('请填写FICC套餐金额')
  409. return
  410. }
  411. if(!parseFloat(compliance.form.services_amount)){
  412. ElMessage.error('FICC套餐金额格式错误')
  413. return
  414. }
  415. compliance.form.service_amount.push({product_id:1,service_amount:+compliance.form.services_amount})
  416. compliance.form.services_amount = +parseFloat(compliance.form.services_amount).toFixed(2) || 0
  417. }
  418. // 权益
  419. if(serviceData.checkedServiceQy.length>0){
  420. hasQYservice=true
  421. // 权益大套餐
  422. if((!serviceData.checkedPermissionQyBig || serviceData.checkedPermissionQyBig.length==0)
  423. && serviceData.checkedServiceQy.some(serviceId =>serviceId==10)){
  424. ElMessage.warning('请保存权益大套餐类型')
  425. return
  426. }
  427. // 行业套餐
  428. if((!serviceData.checkedPermissionQySmall || serviceData.checkedPermissionQySmall.length==0)
  429. && serviceData.checkedServiceQy.some(serviceId =>serviceId==13)){
  430. ElMessage.warning('请保存行业套餐品种')
  431. return
  432. }
  433. serviceData.checkedServiceQy.map(serviceId=>{
  434. let serviceSelectItem = props.serviceItem.serviceArrayQy.find(it=> it.service_template_id==serviceId)
  435. if(serviceSelectItem)
  436. compliance.form.services.push({service_template_id:serviceSelectItem.service_template_id,title:serviceSelectItem.title})
  437. // 权益大套餐
  438. if(serviceId==10){
  439. let subServiceItem = serviceSelectItem.children.find(it=> it.service_template_id==serviceData.checkedPermissionQyBig[0])
  440. compliance.form.services.push({service_template_id:subServiceItem.service_template_id,title:subServiceItem.title})
  441. }else if(serviceId==13){
  442. // 行业套餐 - 每一层都要push
  443. // 是否有子层被选中
  444. const hasSubList=[0,0,0,0,0]
  445. serviceData.checkedPermissionQySmall.map(serviceTemplateId=>{
  446. for (let i = 0; i < serviceSelectItem.children.length; i++) {
  447. const element = serviceSelectItem.children[i];
  448. // 最后一层 - 主客观
  449. let subItem=element.children.find(it =>it.service_template_id == serviceTemplateId)
  450. if(subItem){
  451. compliance.form.services.push({service_template_id:subItem.service_template_id,title:subItem.title})
  452. hasSubList[i]=element.service_template_id
  453. break;
  454. }
  455. }
  456. })
  457. // 中间层 - 医药、消费、科技、智造、策略
  458. hasSubList.map((serviceTemplateId,ind) =>{
  459. if(serviceTemplateId){
  460. let tempItem = serviceSelectItem.children[ind]
  461. compliance.form.services.push({service_template_id:tempItem.service_template_id,title:tempItem.title})
  462. }
  463. })
  464. }
  465. })
  466. // 套餐金额
  467. if(!compliance.form.services_Qy_amount){
  468. ElMessage.error('请填写权益套餐金额')
  469. return
  470. }
  471. if(!parseFloat(compliance.form.services_Qy_amount)){
  472. ElMessage.error('权益套餐金额格式错误')
  473. return
  474. }
  475. compliance.form.service_amount.push({product_id:2,service_amount:+compliance.form.services_Qy_amount})
  476. compliance.form.services_Qy_amount = +parseFloat(compliance.form.services_Qy_amount).toFixed(2) || 0
  477. }
  478. let servicesAll=0
  479. if(hasFICCservice&&hasQYservice){
  480. servicesAll = Math.round((compliance.form.services_Qy_amount+compliance.form.services_amount)*100)/100
  481. compliance.form.product_ids = '1,2'
  482. }else if(hasFICCservice){
  483. servicesAll = compliance.form.services_amount
  484. compliance.form.services_Qy_amount=''
  485. compliance.form.product_ids = '1'
  486. }else{
  487. servicesAll = compliance.form.services_Qy_amount
  488. compliance.form.services_amount=''
  489. compliance.form.product_ids = '2'
  490. }
  491. compliance.form.contract_amount = +parseFloat(compliance.form.contract_amount).toFixed(2)
  492. if(servicesAll!=compliance.form.contract_amount){
  493. ElMessage.error('套餐总金额不等于合同金额')
  494. return
  495. }
  496. if(!compliance.form.has_payment){
  497. compliance.form.has_payment=0
  498. compliance.form.actual_pay_companies=''
  499. }
  500. // 检验合同名称或者合同有效期是否重复
  501. if(compliance.form.contract_register_id){
  502. // 编辑
  503. registerEdit(compliance.form).then(res=>{
  504. let messageHint=ElMessage.success('合规登记编辑成功')
  505. setTimeout(()=>{
  506. messageHint.close()
  507. emits('submitSuccess')
  508. },1000)
  509. })
  510. }else{
  511. let params=compliance.form
  512. if(props.supplementaryInfo.id){
  513. // 预登记过来的
  514. params={...params,contract_register_id:props.supplementaryInfo.id}
  515. }
  516. // console.log(params,'params');
  517. // 新增
  518. contractRegisterCheck({company_name:compliance.form.company_name,
  519. start_date:compliance.form.start_date,end_date:compliance.form.end_date,seller_ids:compliance.form.seller_ids}).then(res=>{
  520. if(res.data?.exist){
  521. // 存在给提示
  522. ElMessageBox.confirm('已登记过相同的合同,是否继续操作?',
  523. '操作提示',{
  524. type:'warning',
  525. confirmButtonText: '确定',
  526. cancelButtonText: '取消'
  527. }).then(resp=>{
  528. registerAdd(params).then(res=>{
  529. let messageHint=ElMessage.success('合规登记成功')
  530. setTimeout(()=>{
  531. messageHint.close()
  532. emits('submitSuccess')
  533. },1000)
  534. })
  535. }).catch(()=>{})
  536. }else{
  537. registerAdd(params).then(res=>{
  538. let messageHint=ElMessage.success('合规登记成功')
  539. setTimeout(()=>{
  540. messageHint.close()
  541. emits('submitSuccess')
  542. },1000)
  543. })
  544. }
  545. })
  546. }
  547. }
  548. })
  549. }
  550. const canServiceShow=(serviceTemplateId)=>{
  551. return compliance.form.services.find(item => item.service_template_id == serviceTemplateId) && props.operationtype!='compliance'
  552. }
  553. // 查看套餐 - ficc
  554. const viewService=(serviceTemplateId)=>{
  555. if(!canServiceShow(serviceTemplateId)) return
  556. if(serviceTemplateId==2){
  557. serviceData.varietyDiaShow=true
  558. serviceData.varietyDiaType='view'
  559. return
  560. }
  561. let viewItem=compliance.form.services.find(item => item.service_template_id == serviceTemplateId)
  562. previewImageTitle.value = viewItem.title
  563. previewImage.value=viewItem.value
  564. serviceData.serviceShow=true
  565. }
  566. // 查看套餐 - 权益
  567. const viewServiceQy=(serviceTemplateId,diaType)=>{
  568. if(!canServiceShow(serviceTemplateId)) return
  569. serviceData.varietyDiaShowQy=true
  570. serviceData.qYDiaType = diaType
  571. serviceData.varietyDiaType='view'
  572. }
  573. // 合同编号远程搜索
  574. const contractNoSearch=(value)=>{
  575. if(!value.trim()) return
  576. contractNoQuery.keyword=value
  577. contractNoQuery.current=1
  578. contractNoInfo.contractNoArray=[]
  579. getContractSearchListFun()
  580. }
  581. const loadContractNoMore=()=>{
  582. if(contractNoInfo.contractNoArray.length >=contractNoInfo.contractNoTotal) return
  583. contractNoQuery.current++
  584. getContractSearchListFun()
  585. }
  586. const getContractSearchListFun=()=>{
  587. contractNoInfo.contractNoLoading=true
  588. getContractSearchList(contractNoQuery).then(res=>{
  589. contractNoInfo.contractNoArray=contractNoInfo.contractNoArray.concat(res.data.list || [])
  590. contractNoInfo.contractNoTotal=res.data.page.total
  591. }).finally(()=>{
  592. contractNoInfo.contractNoLoading=false
  593. })
  594. }
  595. // 销售选中
  596. const selectSeller=(value)=>{
  597. compliance.form.seller_ids=value+''
  598. }
  599. // 选择品种 - ficc
  600. const selectVariety=()=>{
  601. serviceData.varietyDiaType='edit'
  602. serviceData.varietyDiaShow=true
  603. }
  604. // 选择品种 - 权益
  605. const selectVarietyQy=(diaType)=>{
  606. serviceData.varietyDiaType='edit'
  607. serviceData.varietyDiaShowQy=true
  608. serviceData.qYDiaType = diaType
  609. }
  610. const getPermissionChecked=(list)=>{
  611. serviceData.checkedPermission=list
  612. }
  613. const getPermissionQYChecked=(list)=>{
  614. if(serviceData.qYDiaType==1) serviceData.checkedPermissionQyBig=list
  615. else if(serviceData.qYDiaType==2) serviceData.checkedPermissionQySmall=list
  616. }
  617. // 有效期变更触发函数
  618. const contractValidityDateChane=(value)=>{
  619. if(value){
  620. compliance.form.start_date=value[0]
  621. compliance.form.end_date=value[1]
  622. }else{
  623. compliance.form.start_date=compliance.form.end_date=''
  624. }
  625. }
  626. // 服务改变
  627. const serciveChange=(value,type,serviceType='ficc',openDia=true)=>{
  628. if(serviceType=='ficc'){
  629. if(type==2){
  630. serviceData.serviceVarietyShow=value
  631. serviceData.varietyDiaType='edit'
  632. serviceData.varietyDiaShow=openDia&&value
  633. }
  634. serviceData.serviceType = value?type:0
  635. }else{
  636. serviceData.serviceVarietyShowQy=value
  637. serviceData.varietyDiaType='edit'
  638. serviceData.varietyDiaShowQy=openDia&&value
  639. serviceData.serviceTypeQy = serviceData.qYDiaType = value?type:0
  640. }
  641. }
  642. const setSupplementaryData=()=>{
  643. compliance.form.supplement =1
  644. compliance.form.company_name = props.supplementaryInfo.company_name
  645. compliance.form.currency_unit = props.supplementaryInfo.currency_unit
  646. compliance.form.start_date = props.supplementaryInfo.start_date
  647. compliance.form.end_date = props.supplementaryInfo.end_date
  648. compliance.contractValidityDate = [compliance.form.start_date,compliance.form.end_date]
  649. compliance.contractTypeCheck=[props.supplementaryInfo.has_payment,props.supplementaryInfo.contract_type]
  650. contractTypeChange(compliance.contractTypeCheck)
  651. serviceDataHandle(props.supplementaryInfo.services)
  652. }
  653. const setComplianceDetail=()=>{
  654. compliance.form.product_ids=props.detailInfo.product_ids
  655. compliance.form.contract_register_id=props.detailInfo.contract_register_id
  656. compliance.form.crm_contract_id=props.detailInfo.crm_contract_id
  657. compliance.form.contract_code=props.detailInfo.contract_code
  658. compliance.form.company_name=props.detailInfo.company_name
  659. compliance.form.currency_unit=props.detailInfo.currency_unit
  660. compliance.form.seller_ids=props.detailInfo.seller_ids
  661. compliance.form.seller_id=props.detailInfo.seller_id || props.detailInfo.rai_seller_id
  662. compliance.form.contract_status=props.detailInfo.contract_status
  663. compliance.form.start_date=props.detailInfo.start_date
  664. compliance.form.end_date=props.detailInfo.end_date
  665. compliance.form.contract_amount=props.detailInfo.contract_amount
  666. compliance.form.contract_type=props.detailInfo.contract_type
  667. compliance.form.has_payment=props.detailInfo.has_payment
  668. compliance.form.has_invoice=props.detailInfo.has_invoice
  669. compliance.form.actual_pay_companies=props.detailInfo.actual_pay_companies
  670. compliance.form.relate_contract_code=props.detailInfo.relate_contract_code
  671. compliance.form.relate_contract_main_code=props.detailInfo.relate_contract_main_code
  672. compliance.form.sign_date=props.detailInfo.sign_date
  673. compliance.form.agreed_pay_time=props.detailInfo.agreed_pay_time
  674. compliance.form.service_remark=props.detailInfo.service_remark
  675. compliance.form.remark=props.detailInfo.remark
  676. compliance.form.contract_source=props.detailInfo.contract_source
  677. // 有效期回显
  678. compliance.contractValidityDate=[compliance.form.start_date,compliance.form.end_date]
  679. // 合同类型回显
  680. compliance.contractTypeCheck = [compliance.form.has_payment,compliance.form.contract_type]
  681. // 销售显示
  682. sellerListType.value=props.detailInfo.sellerListType
  683. if(sellerListType.value==3){
  684. cascaderSelectSeller.value = compliance.form.seller_ids.split(',').map(item => +item)
  685. }
  686. compliance.hasQYSeller = props.detailInfo.rai_seller_id?true:false
  687. // 套餐金额
  688. compliance.form.services_amount = props.detailInfo.service_amount_list.find(it => it.product_id==1)?
  689. props.detailInfo.service_amount_list.find(it => it.product_id==1).service_amount:0
  690. compliance.form.services_Qy_amount = props.detailInfo.service_amount_list.find(it => it.product_id==2)?
  691. props.detailInfo.service_amount_list.find(it => it.product_id==2).service_amount:0
  692. serviceDataHandle(props.detailInfo.services)
  693. }
  694. // 回显套餐数据
  695. const serviceDataHandle=(services)=>{
  696. services.map(item =>{
  697. if(item.service_template_id==2){
  698. // ficc小套餐
  699. compliance.form.services.push({
  700. service_template_id:item.service_template_id,
  701. value:item.value,
  702. chart_permission_ids:item.chart_permission_ids,
  703. chart_permission_id:item.chart_permission_id,
  704. title:item.title
  705. })
  706. serviceData.checkedPermission=item.chart_permission_ids.split(',')
  707. }else if(item.service_template_id==11 || item.service_template_id==12){
  708. // 权益大套餐
  709. serviceData.checkedPermissionQyBig = [item.service_template_id]
  710. compliance.form.services.push(item)
  711. }else if([19,20,21,22,23,24,25,26,27].includes(item.service_template_id)){
  712. // 行业套餐
  713. serviceData.checkedPermissionQySmall.push(item.service_template_id)
  714. compliance.form.services.push(item)
  715. }else{
  716. compliance.form.services.push(item)
  717. }
  718. })
  719. serviceData.checkedService=services.map(item => {
  720. if(item.product_id==1){
  721. let serviceId=item.service_template_id
  722. // 大套餐或者小套餐
  723. if(serviceId==1 || serviceId==2) serciveChange(true,serviceId,'ficc',false)
  724. return serviceId
  725. }
  726. }).filter(Boolean)
  727. serviceData.checkedServiceQy=services.map(item => {
  728. if(item.product_id==2){
  729. let serviceId=item.service_template_id
  730. // 权益大套餐或者行业套餐
  731. if(serviceId==10 || serviceId==13) serciveChange(true,serviceId==10?1:2,'qy',false)
  732. return serviceId
  733. }
  734. }).filter(Boolean)
  735. }
  736. // --------------------------------------开始
  737. defineExpose({
  738. complianceSubmit
  739. })
  740. </script>
  741. <template>
  742. <div id="contractProgress-compliance">
  743. <div class="info-row" id="contract-info-container">
  744. <div class="info-row-title">合同信息</div>
  745. <div style="margin: 0px 42px 0 62px;">
  746. <el-form :model="compliance.form" inline ref="contractInfoForm" label-width="130"
  747. :disabled="operationtype!='compliance'"
  748. :rules="compliance.rules" class="contractInfo-form">
  749. <el-form-item label="合同来源" prop="contract_source" >
  750. <el-select v-model="compliance.form.contract_source" :disabled="compliance.form.supplement!=0"
  751. placeholder="请选择合同来源" @change="contractSourceChange">
  752. <el-option :label="item" :value="index"
  753. v-for="(item,index) in contractSourceArray" :key="item"></el-option>
  754. </el-select>
  755. </el-form-item>
  756. <el-form-item label="合同编号" prop="contract_code" id="selectContract">
  757. <el-input v-model="compliance.form.contract_code" placeholder="请输入合同编号"
  758. v-if="compliance.form.contract_source==0" >
  759. <template #prefix v-if="compliance.form.has_payment==1">
  760. <span>{{ compliance.form.has_invoice==1?'代付方':'实际使用方' }}</span>
  761. </template>
  762. </el-input>
  763. <scrollableSelect :loadMoreMethod="loadContractNoMore" v-model="compliance.form.contract_code" placeholder="请搜索合同编号" v-else
  764. :searchMethod="contractNoSearch" @change="selectContractNo" useLoading :isLoading="contractNoInfo.contractNoLoading"
  765. >
  766. <template #prefix v-if="compliance.form.has_payment==1">
  767. <span>{{ compliance.form.has_invoice==1?'代付方':'实际使用方' }}</span>
  768. </template>
  769. <el-option :label="item.contract_code" :value="item.contract_code" v-for="item in contractNoInfo.contractNoArray" :key="item.contract_id"></el-option>
  770. </scrollableSelect>
  771. </el-form-item>
  772. <el-form-item label="客户名称" prop="company_name">
  773. <el-input v-model="compliance.form.company_name"
  774. placeholder="请输入客户名称(实际使用方)" />
  775. </el-form-item>
  776. <el-form-item label="销售" prop="seller_ids">
  777. <el-cascader v-if="sellerListType==3" filterable style="min-width: 320px;width: 15vw;"
  778. :options="sellerData.all_list" placeholder="请选择销售" @change="sellerChange"
  779. :show-all-levels="false" v-model="cascaderSelectSeller"
  780. :clearable="false" :props="{multiple:true,label:'seller_name',value:'seller_id',children:'child'}"
  781. key="seller" >
  782. </el-cascader>
  783. <el-select v-else-if="!sellerListType" placeholder="请选择销售" filterable >
  784. <el-option :label="item" :value="item" v-for="item in []" :key="item"></el-option>
  785. </el-select>
  786. <el-cascader v-else filterable style="min-width: 320px;width: 15vw;"
  787. :options="sellerListType==1?onlyFICCSellerData:onlyQYSellerData" @change="selectSeller"
  788. placeholder="请选择销售" :show-all-levels="false" v-model="compliance.form.seller_id"
  789. :clearable="false" :props="{multiple:false,label:'seller_name',value:'seller_id',children:'child',emitPath:false}"
  790. key="seller-single" >
  791. </el-cascader>
  792. </el-form-item>
  793. <el-form-item label="合同金额" id="contractInfo-contractAmount"
  794. prop="contract_amount">
  795. <el-input v-model.trim="compliance.form.contract_amount"
  796. placeholder="请输入合同金额" />
  797. <el-select v-model="compliance.form.currency_unit" placeholder="请选择货币类型"
  798. style="margin-left: 20px;" :disabled="compliance.form.supplement!=0">
  799. <el-option v-for="item in currencyList" :key="item.code" :label="item.name" :value="item.code">
  800. </el-option>
  801. </el-select>
  802. </el-form-item>
  803. <el-form-item label="合同有效期"
  804. prop="start_date">
  805. <el-date-picker type="daterange"
  806. v-model="compliance.contractValidityDate" @change="contractValidityDateChane"
  807. start-placeholder="开始日期" end-placeholder="结束日期" value-format="YYYY-MM-DD"
  808. :clearable="false">
  809. </el-date-picker>
  810. </el-form-item>
  811. <el-form-item label="合同类型" prop="contract_type" id="contractInfo-contractType">
  812. <el-cascader :options="contractTypeArray" placeholder="请选择合同类型" @change="contractTypeChange"
  813. v-model="compliance.contractTypeCheck" :clearable="false" key="contractType">
  814. </el-cascader>
  815. </el-form-item>
  816. <el-form-item label="关联主合同" prop="relate_contract_main_code"
  817. v-if="compliance.form.contract_type==4">
  818. <el-input v-model="compliance.form.relate_contract_main_code"
  819. placeholder="请输入关联主合同" />
  820. </el-form-item>
  821. <el-form-item label="合同所属方" prop="has_invoice"
  822. :rules="{required:true,message:'合同所属方不能为空',trigger:'blur'}"
  823. v-if="compliance.form.has_payment==1">
  824. <el-select v-model="compliance.form.has_invoice"
  825. placeholder="请选择合同所属方" >
  826. <el-option :label="item" :value="index" v-for="(item,index) in contractOwnereArray" :key="item"></el-option>
  827. </el-select>
  828. </el-form-item>
  829. <el-form-item label="代付方" prop="actual_pay_companies" class="actual_pay_companies"
  830. :rules="compliance.form.contract_source==0?{required:true,message:'代付方不能为空',trigger:'blur'}:{required:false}"
  831. v-if="compliance.form.has_payment==1">
  832. <div v-overflowTooltip="'#overflow-input'">
  833. <el-tooltip placement="top" :content="compliance.form.actual_pay_companies" >
  834. <el-input v-model="compliance.form.actual_pay_companies"
  835. placeholder="请输入代付方信息" id="overflow-input" />
  836. </el-tooltip>
  837. </div>
  838. </el-form-item>
  839. <el-form-item :label="compliance.form.has_invoice==1?'关联客户合同':'关联代付合同'" prop="relate_contract_code" v-if="compliance.form.has_payment">
  840. <el-input v-model="compliance.form.relate_contract_code"
  841. :placeholder="compliance.form.has_invoice==1?'请输入实际使用方合同编号':'请输入代付合同编号'" />
  842. </el-form-item>
  843. <el-form-item label="合同状态" prop="contract_status">
  844. <el-select v-model="compliance.form.contract_status"
  845. placeholder="请选择合同状态" >
  846. <el-option :label="item.label" :value="item.id" v-for="item in contractStatusArray" :key="item.id"></el-option>
  847. </el-select>
  848. </el-form-item>
  849. <el-form-item label="签订日" prop="sign_date" >
  850. <el-date-picker v-model="compliance.form.sign_date"
  851. placeholder="请选择签订日" value-format="YYYY-MM-DD"
  852. :clearable="false">
  853. </el-date-picker>
  854. </el-form-item>
  855. <el-form-item label="约定付款时间" prop="agreed_pay_time">
  856. <el-input v-model="compliance.form.agreed_pay_time"
  857. placeholder="请输入约定付款时间" />
  858. </el-form-item>
  859. </el-form>
  860. </div>
  861. </div>
  862. <div class="info-row">
  863. <div class="info-row-title" >套餐信息</div>
  864. <div class="info-row-services">
  865. <div class="info-row-services-header" id="info-row-services-header">
  866. <span>FICC套餐</span>
  867. <el-input v-model="compliance.form.services_amount" :disabled="operationtype!='compliance'"
  868. placeholder="请输入套餐金额" style="width: 200px;" />
  869. </div>
  870. <el-checkbox-group :disabled="operationtype!='compliance'"
  871. v-model="serviceData.checkedService" class="info-service-box" id="service-information">
  872. <!-- 大套餐 -->
  873. <el-checkbox :label="serviceItem.serviceArray[0]?.service_template_id" @change="(e) => serciveChange(e,1)"
  874. :class="{'viewService':canServiceShow(serviceItem.serviceArray[0]?.service_template_id)}"
  875. :disabled="serviceData.serviceType==2" @click="viewService(serviceItem.serviceArray[0]?.service_template_id)">
  876. {{serviceItem.serviceArray[0]?.title}}
  877. </el-checkbox>
  878. <!-- 小套餐 -->
  879. <div class="service-small">
  880. <el-checkbox :label="serviceItem.serviceArray[1]?.service_template_id" style="margin-right: 0;"
  881. @change="(e) => serciveChange(e,2)"
  882. :class="{'viewService':canServiceShow(serviceItem.serviceArray[1]?.service_template_id)}"
  883. :disabled="serviceData.serviceType==1" @click="viewService(serviceItem.serviceArray[1]?.service_template_id)">
  884. {{serviceItem.serviceArray[1]?.title}}
  885. </el-checkbox>
  886. <span v-if="(serviceData.serviceVarietyShow&&operationtype=='compliance')"
  887. @click="selectVariety" class="select-variety">选择品种</span>
  888. </div>
  889. <!-- 市场策略 -->
  890. <el-checkbox :label="serviceItem.serviceArray[2]?.service_template_id"
  891. @click="viewService(serviceItem.serviceArray[2]?.service_template_id)"
  892. :class="{'viewService':canServiceShow(serviceItem.serviceArray[2]?.service_template_id)}">
  893. {{serviceItem.serviceArray[2]?.title}}
  894. </el-checkbox>
  895. <!-- 财富管理类似没有详情的套餐 -->
  896. <el-checkbox v-for="item in serviceItem.serviceArray.slice(3)" :label="item.service_template_id">
  897. {{item.title}}
  898. </el-checkbox>
  899. </el-checkbox-group>
  900. </div>
  901. <div class="info-row-services" v-show="compliance.hasQYSeller!==false">
  902. <div class="info-row-services-header" id="info-row-services-header">
  903. <span>权益套餐</span>
  904. <el-input v-model="compliance.form.services_Qy_amount" :disabled="operationtype!='compliance'"
  905. placeholder="请输入套餐金额" style="width: 200px;" />
  906. </div>
  907. <el-checkbox-group :disabled="operationtype!='compliance'"
  908. v-model="serviceData.checkedServiceQy" class="info-service-box" id="service-information">
  909. <!-- 权益大套餐、行业套餐 -->
  910. <div class="service-small" v-for="(item,index) in [1,2]" :key="item">
  911. <el-checkbox :label="serviceItem.serviceArrayQy[index]?.service_template_id" style="margin-right: 0;"
  912. @change="(e) => serciveChange(e,item,'qy')"
  913. :class="{'viewService':canServiceShow(serviceItem.serviceArrayQy[index]?.service_template_id)}"
  914. :disabled="serviceData.serviceTypeQy!=0 && serviceData.serviceTypeQy != item"
  915. @click="viewServiceQy(serviceItem.serviceArrayQy[index]?.service_template_id,item)">
  916. {{serviceItem.serviceArrayQy[index]?.title}}
  917. </el-checkbox>
  918. <span v-if="(serviceData.serviceVarietyShowQy&&serviceData.qYDiaType==item&&operationtype=='compliance')"
  919. @click="selectVarietyQy(item)" class="select-variety">选择品种</span>
  920. </div>
  921. <!-- 非行业套餐 -->
  922. <el-checkbox v-for="item in serviceItem.serviceArrayQy.slice(2)" :label="item.service_template_id">
  923. {{item.title}}
  924. </el-checkbox>
  925. </el-checkbox-group>
  926. </div>
  927. <div class="remark info-service-remark">
  928. <span style="white-space: nowrap;font-size: 14px;margin-right: 20px;">套餐备注</span>
  929. <el-input style="flex-grow: 1;" :disabled="operationtype!='compliance'"
  930. v-model="compliance.form.service_remark" placeholder="请输入备注"
  931. />
  932. </div>
  933. </div>
  934. <div class="info-row">
  935. <div class="info-row-title">备注</div>
  936. <div class="info-row-remark">
  937. <span style="white-space: nowrap;font-size: 14px;margin-right: 20px;">备注</span>
  938. <el-input style="flex-grow: 1;" :disabled="operationtype!='compliance'"
  939. v-model="compliance.form.remark" placeholder="请输入备注"
  940. />
  941. </div>
  942. </div>
  943. <!-- 小套餐选择品种弹窗 -->
  944. <permission-dia v-model:visible="serviceData.varietyDiaShow" :type="serviceData.varietyDiaType"
  945. @selectFinish="getPermissionChecked" :hasCheckedPermission="serviceData.checkedPermission"></permission-dia>
  946. <!-- 权益大套餐、行业套餐选择品种弹窗 -->
  947. <permission-qy-dia v-model:visible="serviceData.varietyDiaShowQy" :type="serviceData.varietyDiaType"
  948. @selectFinish="getPermissionQYChecked" :serviceType="serviceData.qYDiaType"
  949. :permissionData="serviceData.qYDiaType==1?serviceItem.serviceArrayQy[0]?.children:serviceItem.serviceArrayQy[1]?.children"
  950. :hasCheckedPermission="serviceData.qYDiaType==1?serviceData.checkedPermissionQyBig:serviceData.checkedPermissionQySmall"></permission-qy-dia>
  951. <!-- 查看套餐弹窗 -->
  952. <el-dialog v-model="serviceData.serviceShow" style="min-width: 800px;" title="" width="70vw" top="5vh">
  953. <template #header>
  954. <div style="text-align: center;">{{previewImageTitle}}</div>
  955. </template>
  956. <img style="width: 100%; display: block; margin: 0 auto 20px auto"
  957. :src="previewImage" />
  958. <div style="text-align: center; margin: 30px 0 10px">
  959. <el-button type="primary" @click="serviceData.serviceShow=false">知道了</el-button>
  960. </div>
  961. </el-dialog>
  962. </div>
  963. </template>
  964. <style lang="scss" scoped>
  965. </style>
  966. <style lang="scss">
  967. #contractProgress-compliance{
  968. #contract-info-container{
  969. .el-select,.el-date-editor,.actual_pay_companies{
  970. .el-input__wrapper,.el-input{
  971. min-width: 320px;
  972. width: 15vw;
  973. }
  974. }
  975. .el-form-item{
  976. .el-form-item__content{
  977. min-width: 320px;
  978. width: 15vw;
  979. flex-wrap: nowrap;
  980. }
  981. }
  982. }
  983. #contractInfo-contractAmount{
  984. .el-input__wrapper,.el-input{
  985. min-width: 200px;
  986. flex-grow: 1;
  987. }
  988. .el-select{
  989. .el-input__wrapper,.el-input{
  990. min-width: 100px;
  991. width: 100px;
  992. }
  993. }
  994. }
  995. #contractInfo-contractType{
  996. display: flex;
  997. .el-cascader{
  998. min-width: 180px;
  999. flex-grow: 1;
  1000. }
  1001. .el-checkbox{
  1002. min-width: 120px;
  1003. width: 120px;
  1004. }
  1005. }
  1006. #info-row-services-header{
  1007. .el-input__wrapper{
  1008. height: 30px;
  1009. }
  1010. }
  1011. #service-information{
  1012. .el-checkbox{
  1013. margin-right: 40px;
  1014. }
  1015. }
  1016. .viewService{
  1017. .el-checkbox__label{
  1018. cursor: pointer;
  1019. color: $themeColor;
  1020. }
  1021. }
  1022. }
  1023. </style>