order.vue 50 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222
  1. <template>
  2. <div class="app-container">
  3. <div class="title-container">
  4. <breadcrumb id="breadcrumb-container" class="breadcrumb-container" />
  5. </div>
  6. <div class="form-container">
  7. <y-detail-page-layout ref="myPersonalOrder" @save="handleCreate" :editStatus="couldEdit" @doRecall="doRecall" :couldBack="couldBack" :rules="rules">
  8. <el-form ref="personalForm" :model="personal">
  9. <div class="createMajor-main-container">
  10. <div class="postInfo-container">
  11. <div>
  12. <el-divider content-position="left">
  13. <h3 class="title">
  14. <div class="avatar-wrapper icon-title">订单</div>
  15. <div class="icon-info">个贷订单</div>
  16. </h3>
  17. </el-divider>
  18. </div>
  19. <el-row class="row-style">
  20. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  21. <el-form-item
  22. label="客户经理:"
  23. prop="clientManager"
  24. :rules="{required: true, message: '客户经理不能为空', trigger: 'blur'}"
  25. label-width="120px"
  26. class="postInfo-container-item"
  27. >
  28. <el-input :value="personal.clientManager" class="filter-item" readonly disabled style=" width: 225px" />
  29. </el-form-item>
  30. </el-col>
  31. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  32. <el-form-item
  33. label="评估目的:"
  34. prop="evaluateAim"
  35. :rules="{required: true, message: '评估目的不能为空', trigger: 'blur'}"
  36. label-width="120px"
  37. class="postInfo-container-item"
  38. >
  39. <el-select v-model="personal.evaluateAim" placeholder="请选择">
  40. <el-option label="按揭" value="按揭"></el-option>
  41. <el-option label="抵押" value="抵押"></el-option>
  42. <el-option label="咨询" value="咨询"></el-option>
  43. </el-select>
  44. </el-form-item>
  45. </el-col>
  46. <el-col :xs="24" :sm="12" :lg="12" :span="6">
  47. <el-form-item
  48. label="房屋用途:"
  49. prop="purpose"
  50. label-width="160px"
  51. :rules="{required: true, message: '房屋用途不能为空', trigger: 'blur'}"
  52. class="postInfo-container-item"
  53. >
  54. <el-checkbox-group v-model="personal.purpose">
  55. <el-checkbox-button label="HOUSE" name="purpose">住宅</el-checkbox-button>
  56. <el-checkbox-button label="BUSINESS" name="purpose">商业</el-checkbox-button>
  57. <el-checkbox-button label="OFFICE" name="purpose">办公</el-checkbox-button>
  58. <el-checkbox-button label="INDUSTRIAL" name="purpose">工业</el-checkbox-button>
  59. <el-checkbox-button label="OTHER" name="purpose">其他</el-checkbox-button>
  60. </el-checkbox-group>
  61. </el-form-item>
  62. </el-col>
  63. </el-row>
  64. <el-row class="row-style">
  65. <el-col :xs="12" :sm="12" :lg="23" :span="6">
  66. <el-form-item
  67. label="坐落:"
  68. prop="location"
  69. :rules="{required: true, message: '坐落不能为空', trigger: 'blur'}"
  70. label-width="120px"
  71. class="postInfo-container-item"
  72. >
  73. <el-input v-model="personal.location" class="filter-item" style=" width: 100%"/>
  74. </el-form-item>
  75. </el-col>
  76. </el-row>
  77. <el-row class="row-style">
  78. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  79. <el-form-item
  80. label="客户类型:"
  81. prop="clienteleType"
  82. :rules="{required: true, message: '客户类型不能为空', trigger: 'blur'}"
  83. label-width="120px"
  84. class="postInfo-container-item"
  85. >
  86. <el-select v-model="personal.clienteleType" placeholder="请选择" @change="changeCustomerType(0)" >
  87. <el-option label="企业" value="企业"></el-option>
  88. <el-option label="个人" value="个人"></el-option>
  89. </el-select>
  90. </el-form-item>
  91. </el-col>
  92. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  93. <el-form-item
  94. label="客户名称:"
  95. prop="clienteleId"
  96. label-width="120px"
  97. :rules="{required: true, message: '客户名称不能为空', trigger: 'blur'}"
  98. class="postInfo-container-item"
  99. >
  100. <el-select v-model="personal.clienteleId" placeholder="请选择(可搜索)" @change="findSubClientele(0)" clearable filterable v-if="couldEdit">
  101. <el-option v-for="(c,id) in customerCompany" :label="c.name" :value="c.id"></el-option>
  102. </el-select>
  103. <el-input :value="personal.cclienteleName" class="filter-item" style=" width: 225px" v-else/>
  104. </el-form-item>
  105. </el-col>
  106. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  107. <el-form-item
  108. label="业务来源:"
  109. prop="clienteleSubId"
  110. label-width="120px"
  111. :rules="{required: true, message: '业务来源不能为空', trigger: 'blur'}"
  112. class="postInfo-container-item"
  113. >
  114. <el-select v-model="personal.clienteleSubId" placeholder="请选择(可搜索)" @change="getCustomerContract" clearable filterable v-if="couldEdit">
  115. <el-option v-for="(s,id) in subCustomerCompany" :label="s.name" :value="s.id"></el-option>
  116. </el-select>
  117. <el-input :value="personal.cclienteleSubName" class="filter-item" style=" width: 225px" v-else />
  118. </el-form-item>
  119. </el-col>
  120. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  121. <el-form-item
  122. label="客户联系人:"
  123. prop="clienteleContactId"
  124. :rules="{required: true, message: '客户联系人不能为空', trigger: 'blur'}"
  125. label-width="120px"
  126. class="postInfo-container-item"
  127. >
  128. <div v-if="couldEdit">
  129. <el-select v-model="personal.clienteleContactId" placeholder="请选择(可搜索)" clearable filterable @change="getContactInfo" style="width:60%">
  130. <el-option v-for="(c,id) in customerContract" :label="c.name" :value="c.id"></el-option>
  131. </el-select>
  132. <el-tooltip class="item" effect="dark" content="没有联系人?点击新增" placement="top-end">
  133. <span style="margin-left:5%;color:RGB(64,158,255);cursor:pointer" @click="createLinkman(false)">新增</span>
  134. </el-tooltip>
  135. </div>
  136. <el-input :value="personal.cclienteleContactName" class="filter-item" style=" width: 225px" v-else/>
  137. </el-form-item>
  138. </el-col>
  139. </el-row>
  140. <el-row class="row-style">
  141. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  142. <el-form-item
  143. label="联系人电话:"
  144. prop="clienteleContactId"
  145. label-width="120px"
  146. class="postInfo-container-item"
  147. >
  148. <el-input :value="personal.cmobile" class="filter-item" style=" width: 225px"/>
  149. </el-form-item>
  150. </el-col>
  151. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  152. <el-form-item
  153. label="联系人部门:"
  154. prop="clienteleContactId"
  155. label-width="120px"
  156. class="postInfo-container-item"
  157. >
  158. <el-input :value="personal.cdepartment" class="filter-item" style=" width: 225px"/>
  159. </el-form-item>
  160. </el-col>
  161. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  162. <el-form-item
  163. label="联系人职务:"
  164. prop="clienteleContactId"
  165. label-width="120px"
  166. class="postInfo-container-item"
  167. >
  168. <el-input :value="personal.cduty" class="filter-item" style=" width: 225px"/>
  169. </el-form-item>
  170. </el-col>
  171. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  172. <el-form-item
  173. label="中介:"
  174. prop="agent"
  175. label-width="120px"
  176. class="postInfo-container-item"
  177. >
  178. <el-input :value="personal.agent" class="filter-item" style=" width: 225px" />
  179. </el-form-item>
  180. </el-col>
  181. </el-row>
  182. <el-row class="row-style">
  183. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  184. <el-form-item
  185. label="贷款性质:"
  186. prop="loanNature"
  187. label-width="120px"
  188. class="postInfo-container-item"
  189. >
  190. <el-input v-model="personal.loanNature" class="filter-item" style=" width: 225px" />
  191. </el-form-item>
  192. </el-col>
  193. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  194. <el-form-item
  195. label="贷款用途:"
  196. prop="loanAim"
  197. label-width="120px"
  198. class="postInfo-container-item"
  199. >
  200. <el-input v-model="personal.loanAim" class="filter-item" style=" width: 225px" />
  201. </el-form-item>
  202. </el-col>
  203. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  204. <el-form-item
  205. label="贷款额度:"
  206. prop="loanLimit"
  207. label-width="120px"
  208. :rules="{required: true, message: '贷款额度不能为空', trigger: 'blur'}"
  209. class="postInfo-container-item"
  210. >
  211. <el-input v-model="personal.loanLimit" class="filter-item" style=" width: 225px" >
  212. <template slot="append">万元</template>
  213. </el-input>
  214. </el-form-item>
  215. </el-col>
  216. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  217. <el-form-item
  218. label="贷款期限:"
  219. prop="loanPeriod"
  220. label-width="120px"
  221. class="postInfo-container-item"
  222. >
  223. <el-input v-model="personal.loanPeriod" class="filter-item" style=" width: 225px" >
  224. <template slot="append">年</template>
  225. </el-input>
  226. </el-form-item>
  227. </el-col>
  228. </el-row>
  229. <el-row class="row-style">
  230. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  231. <el-form-item
  232. label="贷款是否到期:"
  233. prop="loanExpire"
  234. label-width="140px"
  235. class="postInfo-container-item"
  236. >
  237. <el-radio v-model="personal.loanExpire" :label="false" border size="medium" >否</el-radio>
  238. <el-radio v-model="personal.loanExpire" :label="true" border size="medium" >是</el-radio>
  239. </el-form-item>
  240. </el-col>
  241. <el-col :xs="24" :sm="12" :lg="12" :span="6">
  242. <el-form-item
  243. label="资料说明:"
  244. prop="credentials"
  245. label-width="120px"
  246. class="postInfo-container-item"
  247. >
  248. <el-checkbox-group v-model="personal.credentials">
  249. <el-checkbox-button label="HOUSE_CERTIFICATE" name="credentials">房产证</el-checkbox-button>
  250. <el-checkbox-button label="LAND_CERTIFICATE" name="credentials">国土证</el-checkbox-button>
  251. <el-checkbox-button label="IMMOVABLE_CERTIFICATE" name="credentials">不动产权证</el-checkbox-button>
  252. <el-checkbox-button label="LEASE_CONTRACT" name="credentials">租赁合同</el-checkbox-button>
  253. <el-checkbox-button label="IDENTITY_CARD" name="credentials">身份证</el-checkbox-button>
  254. <el-checkbox-button label="NONE" name="credentials">无资料</el-checkbox-button>
  255. </el-checkbox-group>
  256. </el-form-item>
  257. </el-col>
  258. </el-row>
  259. <el-row class="row-style">
  260. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  261. <el-form-item
  262. label="委托人1:"
  263. prop="bailorA"
  264. label-width="120px"
  265. class="postInfo-container-item"
  266. >
  267. <el-input v-model="personal.bailorA" class="filter-item" style=" width: 225px" />
  268. </el-form-item>
  269. </el-col>
  270. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  271. <el-form-item
  272. label="委托人1电话:"
  273. prop="bailorATel"
  274. label-width="120px"
  275. class="postInfo-container-item"
  276. >
  277. <el-input v-model="personal.bailorATel" class="filter-item" style=" width: 225px"/>
  278. </el-form-item>
  279. </el-col>
  280. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  281. <el-form-item
  282. label="委托人2:"
  283. prop="bailorB"
  284. label-width="120px"
  285. class="postInfo-container-item"
  286. >
  287. <el-input v-model="personal.bailorB" class="filter-item" style=" width: 225px" />
  288. </el-form-item>
  289. </el-col>
  290. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  291. <el-form-item
  292. label="委托人2电话:"
  293. prop="bailorBTel"
  294. label-width="120px"
  295. class="postInfo-container-item"
  296. >
  297. <el-input v-model="personal.bailorBTel" class="filter-item" style=" width: 225px" />
  298. </el-form-item>
  299. </el-col>
  300. </el-row>
  301. <el-row class="row-style">
  302. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  303. <el-form-item
  304. label="终端客户类型:"
  305. prop="terminalClienteleType"
  306. label-width="140px"
  307. class="postInfo-container-item"
  308. >
  309. <el-select v-model="personal.terminalClienteleType" placeholder="请选择" style="width:205px">
  310. <el-option label="企业" value="企业"></el-option>
  311. <el-option label="个人" value="个人"></el-option>
  312. </el-select>
  313. </el-form-item>
  314. </el-col>
  315. <el-col :xs="24" :sm="12" :lg="6" :span="6" v-if="personal.terminalClienteleType==='企业'">
  316. <el-form-item
  317. label="终端客户名称:"
  318. prop="terminalClienteleId"
  319. label-width="140px"
  320. :rules="{required: true, message: '终端客户名称不能为空', trigger: 'blur'}"
  321. class="postInfo-container-item"
  322. >
  323. <div v-if="couldEdit">
  324. <el-select v-model="personal.terminalClienteleId" placeholder="请选择(可搜索)" @change="findSubClientele(1)" clearable filterable style="width:80%">
  325. <el-option v-for="(c,id) in tCustomerCompany" :label="c.name" :value="c.id"></el-option>
  326. </el-select>
  327. <el-tooltip class="item" effect="dark" content="没有终端客户?点击新增" placement="top-end">
  328. <span style="margin-left:5%;color:RGB(64,158,255);cursor:pointer" @click="createTerminalClient()">新增</span>
  329. </el-tooltip>
  330. </div>
  331. <el-input :value="personal.tterminalClienteleName" class="filter-item" style=" width: 225px" v-else/>
  332. </el-form-item>
  333. </el-col>
  334. <el-col :xs="24" :sm="12" :lg="6" :span="6" v-if="personal.terminalClienteleType==='个人'">
  335. <el-form-item
  336. label="终端联系人:"
  337. prop="terminalClienteleContactId"
  338. label-width="120px"
  339. :rules="{required: true, message: '终端联系人不能为空', trigger: 'blur'}"
  340. class="postInfo-container-item"
  341. >
  342. <div v-if="couldEdit">
  343. <el-select v-model="personal.terminalClienteleContactId" placeholder="请选择(可搜索)" clearable filterable @change="getTcontactInfo" style="width:80%">
  344. <el-option v-for="(c,id) in tCustomerContract" :label="c.name" :value="c.id"></el-option>
  345. </el-select>
  346. <el-tooltip class="item" effect="dark" content="没有联系人?点击新增" placement="top-end">
  347. <span style="margin-left:5%;color:RGB(64,158,255);cursor:pointer" @click="createTlinkman()">新增</span>
  348. </el-tooltip>
  349. </div>
  350. <el-input :value="personal.tterminalClienteleContactName" class="filter-item" style=" width: 225px" v-else/>
  351. </el-form-item>
  352. </el-col>
  353. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  354. <el-form-item
  355. label="终端联系电话:"
  356. prop="clienteleType"
  357. label-width="130px"
  358. class="postInfo-container-item"
  359. >
  360. <el-input :value="personal.tmobile" class="filter-item" style=" width: 215px"/>
  361. </el-form-item>
  362. </el-col>
  363. </el-row>
  364. <el-row class="row-style">
  365. <el-col :xs="24" :sm="12" :lg="23" :span="12">
  366. <el-form-item
  367. label="订单备注:"
  368. prop="remark"
  369. label-width="120px"
  370. class="postInfo-container-item"
  371. >
  372. <el-input v-model="personal.remark" :autosize="{ minRows: 4, maxRows: 4}" class="filter-item" type="textarea" />
  373. </el-form-item>
  374. </el-col>
  375. </el-row>
  376. </div>
  377. </div>
  378. </el-form>
  379. </y-detail-page-layout>
  380. </div>
  381. <el-dialog :visible.sync="createLinkmanVisible" width="70%" custom-class="createLinkman">
  382. <el-divider content-position="left">新增客户联系人</el-divider>
  383. <el-form ref="linkmanFrom" :model="linkmanFrom" :rules="rules">
  384. <el-row>
  385. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  386. <el-form-item
  387. label="客户类型:"
  388. prop="clienteleType"
  389. :rules="{required: true, message: '客户类型不能为空', trigger: 'blur'}"
  390. label-width="120px"
  391. class="postInfo-container-item"
  392. >
  393. <el-select v-model="linkmanFrom.clienteleType" disabled readonly>
  394. <el-option label="企业" value="企业"></el-option>
  395. <el-option label="个人" value="个人"></el-option>
  396. </el-select>
  397. </el-form-item>
  398. </el-col>
  399. <el-col :xs="24" :sm="12" :lg="6" :span="6" v-if="personal.clienteleType==='企业'">
  400. <el-form-item
  401. label="客户名称:"
  402. prop="clienteleId"
  403. :rules="{required: true, message: '客户名称不能为空', trigger: 'blur'}"
  404. label-width="120px"
  405. class="postInfo-container-item"
  406. >
  407. <el-select v-model="linkmanFrom.clienteleId" disabled readonly>
  408. <el-option v-for="(c,id) in customerCompany" :label="c.name" :value="c.id"></el-option>
  409. </el-select>
  410. </el-form-item>
  411. </el-col>
  412. <el-col :xs="24" :sm="12" :lg="6" :span="6" v-if="personal.clienteleType==='企业'">
  413. <el-form-item
  414. label="业务来源:"
  415. prop="clienteleSubId"
  416. :rules="{required: true, message: '业务来源不能为空', trigger: 'blur'}"
  417. label-width="120px"
  418. class="postInfo-container-item"
  419. >
  420. <el-select v-model="linkmanFrom.clienteleSubId" disabled readonly>
  421. <el-option v-for="(s,id) in subCustomerCompany" :label="s.name" :value="s.id"></el-option>
  422. </el-select>
  423. </el-form-item>
  424. </el-col>
  425. </el-row>
  426. <el-row>
  427. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  428. <el-form-item
  429. label="联系人姓名:"
  430. prop="name"
  431. :rules="{required: true, message: '联系人姓名不能为空', trigger: 'blur'}"
  432. label-width="120px"
  433. class="postInfo-container-item"
  434. >
  435. <el-input v-model.trim="linkmanFrom.name" class="filter-item" />
  436. </el-form-item>
  437. </el-col>
  438. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  439. <el-form-item
  440. label="联系电话:"
  441. prop="mobile"
  442. label-width="120px"
  443. class="postInfo-container-item"
  444. >
  445. <el-input v-model.trim="linkmanFrom.mobile" class="filter-item" />
  446. </el-form-item>
  447. </el-col>
  448. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  449. <el-form-item
  450. label="性别:"
  451. prop="sex"
  452. label-width="120px"
  453. class="postInfo-container-item"
  454. >
  455. <el-select v-model=linkmanFrom.sex>
  456. <el-option label="男" value="男">男</el-option>
  457. <el-option label="女" value="女">女</el-option>
  458. </el-select>
  459. </el-form-item>
  460. </el-col>
  461. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  462. <el-form-item
  463. label="身份证号:"
  464. prop="idNo"
  465. label-width="120px"
  466. class="postInfo-container-item"
  467. >
  468. <el-input v-model.trim="linkmanFrom.idNo" class="filter-item" />
  469. </el-form-item>
  470. </el-col>
  471. </el-row>
  472. <el-row>
  473. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  474. <el-form-item
  475. label="微信号:"
  476. prop="wechatNo"
  477. label-width="120px"
  478. class="postInfo-container-item"
  479. >
  480. <el-input v-model.trim="linkmanFrom.wechatNo" class="filter-item" />
  481. </el-form-item>
  482. </el-col>
  483. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  484. <el-form-item
  485. label="QQ号:"
  486. prop="qqNo"
  487. label-width="120px"
  488. class="postInfo-container-item"
  489. >
  490. <el-input v-model.trim="linkmanFrom.qqNo" class="filter-item" />
  491. </el-form-item>
  492. </el-col>
  493. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  494. <el-form-item
  495. label="毕业院校:"
  496. prop="school"
  497. label-width="120px"
  498. class="postInfo-container-item"
  499. >
  500. <el-input v-model.trim="linkmanFrom.school" class="filter-item" />
  501. </el-form-item>
  502. </el-col>
  503. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  504. <el-form-item
  505. label="毕业专业:"
  506. prop="industry"
  507. label-width="120px"
  508. class="postInfo-container-item"
  509. >
  510. <el-input v-model.trim="linkmanFrom.industry" class="filter-item" />
  511. </el-form-item>
  512. </el-col>
  513. </el-row>
  514. <el-row>
  515. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  516. <el-form-item
  517. label="所在部门:"
  518. prop="department"
  519. label-width="120px"
  520. class="postInfo-container-item"
  521. >
  522. <el-input v-model.trim="linkmanFrom.department" class="filter-item" />
  523. </el-form-item>
  524. </el-col>
  525. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  526. <el-form-item
  527. label="职位:"
  528. prop="duty"
  529. label-width="120px"
  530. class="postInfo-container-item"
  531. >
  532. <el-input v-model.trim="linkmanFrom.duty" class="filter-item" />
  533. </el-form-item>
  534. </el-col>
  535. </el-row>
  536. <el-row>
  537. <el-col :xs="24" :sm="12" :lg="24" :span="6">
  538. <el-form-item
  539. label="备注:"
  540. prop="description"
  541. label-width="120px"
  542. class="postInfo-container-item"
  543. >
  544. <el-input v-model.trim="linkmanFrom.description" class="filter-item" type="textarea" />
  545. </el-form-item>
  546. </el-col>
  547. </el-row>
  548. <el-button type="primary" @click="saveLinkman()" style="position:absolute;top:45px;right:20px">保存</el-button>
  549. </el-form>
  550. </el-dialog>
  551. <el-dialog :visible.sync="createTlinkmanVisible" width="70%" custom-class="createLinkman">
  552. <el-divider content-position="left">新增终端客户联系人</el-divider>
  553. <el-form ref="tLinkmanFrom" :model="tLinkmanFrom" :rules="rules" >
  554. <el-row>
  555. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  556. <el-form-item
  557. label="联系人姓名:"
  558. prop="name"
  559. :rules="{required: true, message: '联系人姓名不能为空', trigger: 'blur'}"
  560. label-width="120px"
  561. class="postInfo-container-item"
  562. >
  563. <el-input v-model.trim="tLinkmanFrom.name" class="filter-item" />
  564. </el-form-item>
  565. </el-col>
  566. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  567. <el-form-item
  568. label="联系电话:"
  569. prop="mobile"
  570. label-width="120px"
  571. class="postInfo-container-item"
  572. >
  573. <el-input v-model.trim="tLinkmanFrom.mobile" class="filter-item" />
  574. </el-form-item>
  575. </el-col>
  576. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  577. <el-form-item
  578. label="性别:"
  579. prop="sex"
  580. label-width="120px"
  581. class="postInfo-container-item"
  582. >
  583. <el-select v-model=tLinkmanFrom.sex>
  584. <el-option label="男" value="男">男</el-option>
  585. <el-option label="女" value="女">女</el-option>
  586. </el-select>
  587. </el-form-item>
  588. </el-col>
  589. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  590. <el-form-item
  591. label="身份证号:"
  592. prop="idNo"
  593. label-width="120px"
  594. class="postInfo-container-item"
  595. >
  596. <el-input v-model.trim="tLinkmanFrom.idNo" class="filter-item" />
  597. </el-form-item>
  598. </el-col>
  599. </el-row>
  600. <el-row>
  601. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  602. <el-form-item
  603. label="微信号:"
  604. prop="wechatNo"
  605. label-width="120px"
  606. class="postInfo-container-item"
  607. >
  608. <el-input v-model.trim="tLinkmanFrom.wechatNo" class="filter-item" />
  609. </el-form-item>
  610. </el-col>
  611. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  612. <el-form-item
  613. label="QQ号:"
  614. prop="qqNo"
  615. label-width="120px"
  616. class="postInfo-container-item"
  617. >
  618. <el-input v-model.trim="tLinkmanFrom.qqNo" class="filter-item" />
  619. </el-form-item>
  620. </el-col>
  621. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  622. <el-form-item
  623. label="毕业院校:"
  624. prop="school"
  625. label-width="120px"
  626. class="postInfo-container-item"
  627. >
  628. <el-input v-model.trim="tLinkmanFrom.school" class="filter-item" />
  629. </el-form-item>
  630. </el-col>
  631. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  632. <el-form-item
  633. label="毕业专业:"
  634. prop="industry"
  635. label-width="120px"
  636. class="postInfo-container-item"
  637. >
  638. <el-input v-model.trim="tLinkmanFrom.industry" class="filter-item" />
  639. </el-form-item>
  640. </el-col>
  641. </el-row>
  642. <el-row>
  643. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  644. <el-form-item
  645. label="所在部门:"
  646. prop="department"
  647. label-width="120px"
  648. class="postInfo-container-item"
  649. >
  650. <el-input v-model.trim="tLinkmanFrom.department" class="filter-item" />
  651. </el-form-item>
  652. </el-col>
  653. <el-col :xs="24" :sm="12" :lg="6" :span="6">
  654. <el-form-item
  655. label="职位:"
  656. prop="duty"
  657. label-width="120px"
  658. class="postInfo-container-item"
  659. >
  660. <el-input v-model.trim="tLinkmanFrom.duty" class="filter-item" />
  661. </el-form-item>
  662. </el-col>
  663. </el-row>
  664. <el-row>
  665. <el-col :xs="24" :sm="12" :lg="24" :span="6">
  666. <el-form-item
  667. label="备注:"
  668. prop="description"
  669. label-width="120px"
  670. class="postInfo-container-item"
  671. >
  672. <el-input v-model.trim="tLinkmanFrom.description" class="filter-item" type="textarea" />
  673. </el-form-item>
  674. </el-col>
  675. </el-row>
  676. <el-button type="primary" @click="saveTlinkman()" style="position:absolute;top:45px;right:20px">保存</el-button>
  677. </el-form>
  678. </el-dialog>
  679. <el-dialog :visible.sync="createTerminalClientVisible" width="70%" custom-class="createLinkman">
  680. <el-divider content-position="left">新增终端客户</el-divider>
  681. <el-form ref="terminalClientFrom" :model="terminalClientFrom" :rules="rules" >
  682. <el-row>
  683. <el-col :xs="24" :sm="12" :lg="8" :span="6">
  684. <el-form-item
  685. label="客户名称:"
  686. prop="name"
  687. :rules="{required: true, message: '联系人姓名不能为空', trigger: 'blur'}"
  688. label-width="120px"
  689. class="postInfo-container-item"
  690. >
  691. <el-input v-model.trim="terminalClientFrom.name" class="filter-item" />
  692. </el-form-item>
  693. </el-col>
  694. <el-col :xs="24" :sm="12" :lg="8" :span="6">
  695. <el-form-item
  696. label="企业类型:"
  697. prop="companyType"
  698. :rules="{required: true, message: '联系电话不能为空', trigger: 'blur'}"
  699. label-width="120px"
  700. class="postInfo-container-item"
  701. >
  702. <el-input v-model.trim="terminalClientFrom.companyType" class="filter-item" />
  703. </el-form-item>
  704. </el-col>
  705. <el-col :xs="24" :sm="12" :lg="8" :span="6">
  706. <el-form-item
  707. label="联系电话:"
  708. prop="phone"
  709. label-width="120px"
  710. class="postInfo-container-item"
  711. >
  712. <el-input v-model.trim="terminalClientFrom.phone" class="filter-item" />
  713. </el-form-item>
  714. </el-col>
  715. </el-row>
  716. <el-row>
  717. <el-col :xs="24" :sm="12" :lg="24" :span="6">
  718. <el-form-item
  719. label="客户地址:"
  720. prop="address"
  721. label-width="120px"
  722. class="postInfo-container-item"
  723. >
  724. <el-input v-model.trim="terminalClientFrom.address" class="filter-item" />
  725. </el-form-item>
  726. </el-col>
  727. </el-row>
  728. <el-button type="primary" @click="saveClient()" style="position:absolute;top:45px;right:20px">保存</el-button>
  729. </el-form>
  730. </el-dialog>
  731. </div>
  732. </template>
  733. <script>
  734. import Breadcrumb from '@/components/Breadcrumb'
  735. import YDetailPageLayout from '@/components/YDetailPageLayout/index_detail'
  736. import {isNumber,phoneNumber,postiveInteger,isIdNumber} from '@/utils/validate'
  737. export default {
  738. name: 'personalDoOrder',
  739. components: {
  740. Breadcrumb,
  741. YDetailPageLayout,
  742. },
  743. watch:{
  744. },
  745. computed: {
  746. },
  747. data() {
  748. return {
  749. rules:{
  750. loanLimit:[{required:true,message:"贷款额度不能为空",trigger:'blur'},{validator:isNumber,trigger:'blur'}],
  751. },
  752. personal:{
  753. id:null,
  754. clientManagerId:this.$store.getters.userInfo.id,
  755. clientManager:this.$store.getters.userInfo.name,
  756. evaluateAim:null,
  757. purpose:[],
  758. location:null,
  759. clienteleType:null,
  760. cclienteleName:null,
  761. cclienteleSubName:null,
  762. agent:null,
  763. cclienteleContactName:null,
  764. cmobile:null,
  765. cdepartment:null,
  766. cduty:null,
  767. loanNature:null,
  768. loanAim:null,
  769. loanLimit:null,
  770. loanPeriod:null,
  771. loanExpire:false,
  772. credentials:[],
  773. bailorA:null,
  774. bailorATel:null,
  775. bailorB:null,
  776. bailorBTel:null,
  777. terminalClienteleType:null,
  778. tterminalClienteleName:null,
  779. tterminalClienteleContactName:null,
  780. tmobile:null,
  781. remark:null
  782. },
  783. createLinkmanVisible:false,
  784. linkmanFrom:{
  785. clienteleType:null,
  786. clienteleSubId:null,
  787. clienteleId:null,
  788. ccId:null,
  789. name:null,
  790. mobile:null,
  791. phone:null,
  792. sex:null,
  793. idNo:null,
  794. wechatNo:null,
  795. qqNo:null,
  796. school:null,
  797. industry:null,
  798. department:null,
  799. duty:null,
  800. terminal:false,
  801. description:null
  802. },
  803. createTerminalClientVisible:false,
  804. terminalClientFrom:{
  805. name:null,
  806. companyType:null,
  807. address:null,
  808. phone:null,
  809. terminal:true
  810. },
  811. createTlinkmanVisible:false,
  812. tLinkmanFrom:{
  813. ccId:null,
  814. name:null,
  815. mobile:null,
  816. phone:null,
  817. sex:null,
  818. idNo:null,
  819. wechatNo:null,
  820. qqNo:null,
  821. school:null,
  822. industry:null,
  823. department:null,
  824. duty:null,
  825. terminal:false,
  826. description:null
  827. },
  828. customerCompany:[],
  829. subCustomerCompany:[],
  830. customerContract:[],
  831. tCustomerCompany:[],
  832. tSubCustomerCompany:[],
  833. tCustomerContract:[],
  834. }
  835. },
  836. created() {
  837. this.personal.id = this.$route.query.id
  838. this.couldEdit = this.$route.query.couldEdit ==='true';
  839. this.couldBack = this.$route.query.couldBack ==='true';
  840. this.getPersonal();
  841. this.getCustomerCompany(0);
  842. this.getCustomerCompany(1);
  843. },
  844. methods: {
  845. handleCreate(){
  846. this.$refs.personalForm.validate(valid => {
  847. if (valid) {
  848. this.personal.purpose = JSON.stringify(this.personal.purpose);
  849. this.personal.credentials = JSON.stringify(this.personal.credentials);
  850. if (this.personal.id) {
  851. this.$api.personal.edit(this.personal).then(res => {
  852. if (res.code === 200) {
  853. this.$notify({
  854. title: '成功',
  855. message: '保存成功',
  856. type: 'success',
  857. duration: 2000
  858. });
  859. const back = this.$route.query.back;
  860. if (back) {
  861. this.$router.push(back)
  862. }
  863. this.initData();
  864. }
  865. })
  866. } else {
  867. this.$api.personal.add(this.personal).then(res => {
  868. if (res.code === 200) {
  869. if (res.data && res.data.instanceNodeId && res.data.state){
  870. this.$api.workflow.commit(res.data).then(result =>{
  871. if (result.code === 200 && result.data){
  872. this.$notify({
  873. title: '成功',
  874. message: '下单并提交流程成功',
  875. type: 'success',
  876. duration: 2000
  877. });
  878. }
  879. })
  880. }else{
  881. this.$notify({
  882. title: '成功',
  883. message: '下单成功,需要手动提交流程。',
  884. type: 'warning',
  885. duration: 2000
  886. });
  887. }
  888. const back = this.$route.query.back;
  889. if (back) {
  890. this.$router.push(back)
  891. }
  892. this.initData();
  893. }else{
  894. this.$notify({
  895. title: '失败',
  896. message: '下单失败,请稍后再试。',
  897. type: 'error',
  898. duration: 2000
  899. });
  900. }
  901. })
  902. }
  903. }
  904. })
  905. },
  906. changeCustomerType(val){
  907. if (val ===0){
  908. if (this.personal.clienteleId){
  909. this.personal.clienteleId = null;
  910. this.customerCompany=[]
  911. }
  912. if (this.personal.clienteleSubId){
  913. this.personal.clienteleSubId = null;
  914. this.subCustomerCompany=[]
  915. }
  916. if (this.personal.clienteleContactId){
  917. this.personal.clienteleContactId = null;
  918. this.customerContract =[]
  919. }
  920. if (this.personal.clienteleType==='个人'){
  921. let simpleAll = new Object();
  922. simpleAll.ccId = 1;
  923. simpleAll.terminal = 0;
  924. this.$api.customerLinkman.simpleAll(simpleAll).then(res=>{
  925. if (res.code === 200){
  926. this.customerContract = res.data;
  927. if (this.personal.clienteleContactId){
  928. this.personal.clienteleContactId = null
  929. }
  930. }
  931. })
  932. }
  933. if (this.personal.clienteleType==='企业'){
  934. this.getCustomerCompany(0)
  935. this.personal.clienteleContactId = null
  936. this.customerContract =[];
  937. }
  938. }else {
  939. if (this.personal.terminalClienteleType==='个人'){
  940. let simpleAll = new Object();
  941. simpleAll.ccId = 1;
  942. simpleAll.terminal = 1;
  943. this.$api.customerLinkman.simpleAll(simpleAll).then(res=>{
  944. if (res.code === 200){
  945. this.tCustomerContract = res.data;
  946. if (this.personal.terminalClienteleId){
  947. this.personal.terminalClienteleId = null
  948. }
  949. }
  950. })
  951. }
  952. if (this.personal.terminalClienteleType==='企业'){
  953. this.getCustomerCompany(1)
  954. if (this.personal.terminalClienteleContactId){
  955. this.personal.terminalClienteleContactId = null
  956. this.tCustomerContract =[];
  957. }
  958. }
  959. }
  960. },
  961. findSubClientele(val){
  962. if (val===0){
  963. if (this.personal.clienteleId){
  964. let simpleAll = new Object();
  965. simpleAll.terminal=val;
  966. simpleAll.parentId= this.personal.clienteleId;
  967. this.$api.customerCompany.simpleAll(simpleAll).then(res=>{
  968. if (res.code === 200){
  969. this.subCustomerCompany = res.data;
  970. if (this.personal.clienteleSubId){
  971. this.personal.clienteleSubId = null
  972. }
  973. if (this.personal.clienteleContactId){
  974. this.personal.clienteleContactId = null
  975. this.customerContract =[];
  976. }
  977. }
  978. })
  979. }
  980. }else {
  981. if (this.personal.terminalClienteleId){
  982. let simpleAll = new Object();
  983. simpleAll.terminal=val;
  984. simpleAll.ccId = this.personal.terminalClienteleId;
  985. this.$api.customerCompany.detail(this.personal.terminalClienteleId).then(res=>{
  986. if (res.code === 200){
  987. this.personal.tmobile = res.data.phone;
  988. }
  989. })
  990. }
  991. }
  992. },
  993. createTerminalClient(){
  994. this.createTerminalClientVisible = true;
  995. },
  996. getCustomerContract(){
  997. if (this.personal.clienteleSubId){
  998. let simpleAll = new Object();
  999. simpleAll.ccId = this.personal.clienteleSubId
  1000. this.$api.customerLinkman.simpleAll(simpleAll).then(res=>{
  1001. if (res.code === 200){
  1002. this.customerContract = res.data;
  1003. if (this.personal.clienteleContactId){
  1004. this.personal.clienteleContactId = null
  1005. }
  1006. }
  1007. })
  1008. }
  1009. },
  1010. getContactInfo(){
  1011. if (this.personal.clienteleContactId){
  1012. this.$api.customerLinkman.detail(this.personal.clienteleContactId).then(res=>{
  1013. if (res.code === 200){
  1014. this.personal.cmobile = res.data.mobile;
  1015. this.personal.cDepartment = res.data.department
  1016. this.personal.cDuty = res.data.duty
  1017. }
  1018. })
  1019. }
  1020. },
  1021. getTcontactInfo(){
  1022. if (this.personal.terminalClienteleContactId){
  1023. this.$api.customerLinkman.detail(this.personal.terminalClienteleContactId).then(res=>{
  1024. if (res.code === 200){
  1025. this.personal.tmobile = res.data.mobile;
  1026. }
  1027. })
  1028. }
  1029. },
  1030. getCustomerCompany(val){
  1031. if (val ===0){
  1032. let simpleAll = new Object();
  1033. simpleAll.terminal=val;
  1034. this.$api.customerCompany.simpleAll(simpleAll).then(res=>{
  1035. if (res.code === 200){
  1036. this.customerCompany = res.data;
  1037. }
  1038. })
  1039. }else{
  1040. let simpleAll = new Object();
  1041. simpleAll.terminal=val;
  1042. this.$api.customerCompany.simpleAll(simpleAll).then(res=>{
  1043. if (res.code === 200){
  1044. this.tCustomerCompany = res.data;
  1045. }
  1046. })
  1047. }
  1048. },
  1049. createLinkman(val){
  1050. this.createLinkmanVisible = true;
  1051. this.linkmanFrom.terminal = val;
  1052. this.linkmanFrom.clienteleType = this.major.clienteleType;
  1053. this.linkmanFrom.clienteleId = this.major.clienteleId;
  1054. this.linkmanFrom.clienteleSubId = this.major.clienteleSubId;
  1055. if (this.major.clienteleType==='企业'){
  1056. this.linkmanFrom.ccId = this.major.clienteleSubId
  1057. }else{
  1058. this.major.clienteleSubId = 1;
  1059. this.linkmanFrom.ccId = this.major.clienteleSubId;
  1060. }
  1061. },
  1062. createTlinkman(){
  1063. this.createTlinkmanVisible = true;
  1064. this.tLinkmanFrom.terminal = 1;
  1065. this.major.clienteleSubId = 1;
  1066. this.tLinkmanFrom.ccId = this.major.clienteleSubId;
  1067. },
  1068. saveLinkman(){
  1069. this.$refs.linkmanFrom.validate(valid =>{
  1070. if (valid){
  1071. this.$api.customerLinkman.add(this.linkmanFrom).then(res=>{
  1072. if (res.code ===200){
  1073. this.$notify({
  1074. title: '成功',
  1075. message: '新增客户联系人成功',
  1076. type: 'success',
  1077. duration: 2000
  1078. });
  1079. }
  1080. this.getCustomerContract();
  1081. setTimeout(()=>{
  1082. this.major.clienteleContactId = this.customerContract[0].id;
  1083. this.getContactInfo();
  1084. },2000)
  1085. this.createLinkmanVisible=false;
  1086. })
  1087. }
  1088. })
  1089. },
  1090. saveTlinkman(){
  1091. this.$refs.tLinkmanFrom.validate(valid =>{
  1092. if (valid){
  1093. this.$api.customerLinkman.add(this.tLinkmanFrom).then(res=>{
  1094. if (res.code ===200){
  1095. this.$notify({
  1096. title: '成功',
  1097. message: '新增终端联系人成功',
  1098. type: 'success',
  1099. duration: 2000
  1100. });
  1101. }
  1102. let simpleAll = new Object();
  1103. simpleAll.ccId = 1;
  1104. simpleAll.terminal = 1;
  1105. this.$api.customerLinkman.simpleAll(simpleAll).then(res=>{
  1106. if (res.code === 200){
  1107. this.tCustomerContract = res.data;
  1108. }
  1109. })
  1110. setTimeout(()=>{
  1111. this.major.terminalClienteleContactId = this.tCustomerContract[0].id;
  1112. this.getTcontactInfo();
  1113. },2000)
  1114. this.createTlinkmanVisible=false;
  1115. })
  1116. }
  1117. })
  1118. },
  1119. saveClient(){
  1120. this.$refs.terminalClientFrom.validate(valid =>{
  1121. if (valid){
  1122. this.$api.customerCompany.add(this.terminalClientFrom).then(res=>{
  1123. if (res.code ===200){
  1124. this.$notify({
  1125. title: '成功',
  1126. message: '新增客户成功',
  1127. type: 'success',
  1128. duration: 2000
  1129. });
  1130. }
  1131. this.getCustomerCompany(1);
  1132. setTimeout(()=>{
  1133. this.major.terminalClienteleId = this.tCustomerCompany[0].id;
  1134. this.findSubClientele(1);
  1135. },2000)
  1136. this.createTerminalClientVisible=false;
  1137. })
  1138. }
  1139. })
  1140. },
  1141. getPersonal(){
  1142. if (this.personal.id){
  1143. this.$api.personal.detail(this.personal.id).then(res=>{
  1144. if (res.code ===200 ){
  1145. res.data.credentials = JSON.parse(res.data.credentials);
  1146. res.data.purpose = JSON.parse(res.data.purpose);
  1147. this.personal = res.data;
  1148. }
  1149. })
  1150. }
  1151. },
  1152. doRecall(){
  1153. this.$confirm('请确认是否撤回此个贷订单的业务流程?','提示',{
  1154. confirmButtonText: '确定',
  1155. cancelButtonText: '取消',
  1156. type: 'warning',
  1157. center: true
  1158. }).then(()=>{
  1159. if (this.personal.id){
  1160. this.$api.personal.doRecall(this.personal.id).then(res=>{
  1161. if (res.code ===200 && res.data){
  1162. this.$notify({
  1163. title: '成功',
  1164. message: '业务流程撤回成功',
  1165. type: 'success',
  1166. duration: 2000
  1167. });
  1168. this.$refs.myPersonalOrder.initPageStatus(true,true);
  1169. this.couldEdit = true;
  1170. //this.$refs.myPersonalOrder.forceUpdate();
  1171. }else{
  1172. this.$notify({
  1173. title: '失败',
  1174. message: '业务流程撤回失败',
  1175. type: 'error',
  1176. duration: 2000
  1177. });
  1178. }
  1179. })
  1180. }
  1181. })
  1182. }
  1183. },
  1184. }
  1185. </script>
  1186. <style lang="scss" scoped>
  1187. .form-container{
  1188. margin-top: 50px;
  1189. }
  1190. .row-style{
  1191. margin-left:40px;
  1192. margin-right:1%;
  1193. }
  1194. .task-class{
  1195. /deep/ .el-form-item__label {
  1196. color: red;
  1197. }
  1198. }
  1199. .table {
  1200. /deep/ thead {
  1201. .el-table-column--selection {
  1202. .cell {
  1203. display: none;
  1204. }
  1205. }
  1206. }
  1207. }
  1208. /deep/.doWarehouseClass {
  1209. border-radius: 10px;
  1210. }
  1211. </style>