changeCustomer.vue 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876
  1. <template>
  2. <div>
  3. <el-button size="mini" :type="disabled || data.status === '已无效' || data.status === '已过期'?'':'primary'" @click="onShow" :disabled="disabled || data.status === '已无效' || data.status === '已过期'" >转化客户</el-button>
  4. <el-drawer
  5. title="转化为客户"
  6. :visible.sync="drawer"
  7. size="600px"
  8. direction="rtl"
  9. :show-close="false"
  10. append-to-body
  11. @close="onClose">
  12. <div class="drawer__panel">
  13. <el-row :gutter="20">
  14. <el-form :model="form" :rules="rules" ref="form" label-width="85px" label-position="right" size="mini">
  15. <el-col :span="20">
  16. <el-form-item label="客户名称:" prop="enterprisename_customer">
  17. <el-input v-model="form.enterprisename_customer" placeholder="请输入客户名称" style="width: 100%"></el-input>
  18. </el-form-item>
  19. </el-col>
  20. <el-col :span="4">
  21. <businessMessage :keyWord="form.enterprisename_customer" @businessData="onBusinessData"></businessMessage>
  22. </el-col>
  23. <el-col :span="24">
  24. <el-form-item label="企业简称:" prop="abbreviation">
  25. <el-input v-model="form.abbreviation" placeholder="请输入企业简称" style="width: 100%"></el-input>
  26. </el-form-item>
  27. </el-col>
  28. <el-col :span="24" >
  29. <el-form-item label="客户类型:" prop="type">
  30. <el-select v-model="form.type" placeholder="请选择客户类型" style="width: 100%">
  31. <el-option
  32. v-for="item in options.type"
  33. :key="item.value"
  34. :label="item.value"
  35. :value="item.value">
  36. <!-- <span style="float: left">{{ item.value }}</span>
  37. <span v-if="item.remarks !== ''" style="float: right; color: #8492a6; font-size: 10px">{{ item.remarks }}</span>-->
  38. <span style="float: left">{{ item.value }}</span>
  39. <span style="float: right; color: #8492a6; font-size: 12px">{{ item.remarks?item.remarks:'暂无描述' }}</span>
  40. </el-option>
  41. </el-select>
  42. </el-form-item>
  43. </el-col>
  44. <el-col :span="24">
  45. <el-form-item label="客户等级:" prop="grade">
  46. <el-select v-model="form.grade" placeholder="请选择客户等级" style="width: 100%">
  47. <el-option
  48. v-for="item in options.customerGrade"
  49. :key="item.rowindex"
  50. :label="item.value "
  51. :value="item.value">
  52. <span style="float: left">{{ item.value }}</span>
  53. <span style="float: right; color: #8492a6; font-size: 12px">{{ item.remarks?item.remarks:'暂无描述' }}</span>
  54. </el-option>
  55. </el-select>
  56. </el-form-item>
  57. </el-col>
  58. <el-col :span="24">
  59. <el-form-item label="客户分类:" prop="customergrade">
  60. <el-select v-model="form.customergrade" placeholder="请选择客户分类" style="width: 100%">
  61. <el-option
  62. v-for="item in options.customerClassification"
  63. :key="item.rowindex"
  64. :label="item.value "
  65. :value="item.value">
  66. <span style="float: left">{{ item.value }}</span>
  67. <span style="float: right; color: #8492a6; font-size: 12px">{{ item.remarks?item.remarks:'暂无描述' }}</span>
  68. </el-option>
  69. </el-select>
  70. </el-form-item>
  71. </el-col>
  72. <el-col :span="24">
  73. <el-form-item label="客户行业:" prop="industry">
  74. <el-select
  75. ref="sle"
  76. style="width:100%;"
  77. v-model="form.industry"
  78. multiple
  79. placeholder="请选择所属行业"
  80. size="mini"
  81. >
  82. <el-option
  83. v-for="item in options.industryData"
  84. :key="item.value"
  85. :label="item.value"
  86. :value="item.value"
  87. >
  88. <span style="float: left">{{ item.value }}</span>
  89. <span style="float: right; color: #8492a6; font-size: 12px">{{ item.remarks?item.remarks:'暂无描述' }}</span>
  90. </el-option>
  91. </el-select>
  92. </el-form-item>
  93. </el-col>
  94. <el-col :span="24">
  95. <el-form-item label="联系人:" prop="contactsinfo.name">
  96. <el-popover
  97. placement="bottom-start"
  98. width="900"
  99. v-model="enterpriseContact.show"
  100. trigger="click">
  101. <el-tabs type="border-card" @tab-click="changeTab" v-model="activeName">
  102. <el-tab-pane label="企业联系人" name="first" >
  103. <el-table
  104. border
  105. height="500px"
  106. :data="enterpriseContact.listData"
  107. @row-click="enterpriseContactSelect"
  108. :header-cell-style="{background:'#EEEEEE',color:'#333'}"
  109. size="mini">
  110. <el-table-column width="80" label="姓名">
  111. <template slot-scope="scope">
  112. <span >{{ scope.row.name?scope.row.name:'--' }}</span>
  113. </template>
  114. </el-table-column>
  115. <el-table-column width="120" label="手机号">
  116. <template slot-scope="scope">
  117. <span >{{ scope.row.phonenumber?scope.row.phonenumber:'--' }}</span>
  118. </template>
  119. </el-table-column>
  120. <el-table-column width="200" label="邮箱">
  121. <template slot-scope="scope">
  122. <span >{{ scope.row.email?scope.row.email:'--' }}</span>
  123. </template>
  124. </el-table-column>
  125. <el-table-column width="120" label="部门">
  126. <template slot-scope="scope">
  127. <span >{{ scope.row.position?scope.row.position:'--' }}</span>
  128. </template>
  129. </el-table-column>
  130. <el-table-column width="120" label="职位">
  131. <template slot-scope="scope">
  132. <span >{{ scope.row.depname?scope.row.depname:'--' }}</span>
  133. </template>
  134. </el-table-column>
  135. <el-table-column width="80" label="性别">
  136. <template slot-scope="scope">
  137. <span >{{ scope.row.sex?scope.row.sex:'--' }}</span>
  138. </template>
  139. </el-table-column>
  140. <el-table-column width="120" label="生日">
  141. <template slot-scope="scope">
  142. <span >{{ scope.row.birthday?scope.row.birthday:'--' }}</span>
  143. </template>
  144. </el-table-column>
  145. <el-table-column width="300" label="家庭住址">
  146. <template slot-scope="scope">
  147. <span >{{ scope.row.address?scope.row.address:'--' }}</span>
  148. </template>
  149. </el-table-column>
  150. <el-table-column width="200" label="备注">
  151. <template slot-scope="scope">
  152. <span >{{ scope.row.remarks?scope.row.remarks:'--' }}</span>
  153. </template>
  154. </el-table-column>
  155. </el-table>
  156. <div style="display:flex;align-items:center;flex-direction:row-reverse;justify-content:space-between">
  157. <div class="container normal-panel" style="text-align:right">
  158. <el-pagination
  159. background
  160. @size-change="handleSizeChangeEnterprise"
  161. @current-change="handleCurrentChangeEnterprise"
  162. :current-page="enterpriseContact.currentPage"
  163. :page-sizes="[20, 50, 100, 200]"
  164. :page-size="20"
  165. layout="total,sizes, prev, pager, next, jumper"
  166. :total="enterpriseContact.total">
  167. </el-pagination>
  168. </div>
  169. <slot name="footerLeft"></slot>
  170. </div>
  171. </el-tab-pane>
  172. <el-tab-pane label="我的联系人" name="second">
  173. <el-table
  174. border
  175. :data="myContacts.listData"
  176. height="500px"
  177. @row-click="myContactSelect"
  178. :header-cell-style="{background:'#EEEEEE',color:'#333'}"
  179. size="mini">
  180. <el-table-column width="80" label="姓名">
  181. <template slot-scope="scope">
  182. <span >{{ scope.row.name?scope.row.name:'--' }}</span>
  183. </template>
  184. </el-table-column>
  185. <el-table-column width="120" label="手机号">
  186. <template slot-scope="scope">
  187. <span >{{ scope.row.phonenumber?scope.row.phonenumber:'--' }}</span>
  188. </template>
  189. </el-table-column>
  190. <el-table-column width="200" label="邮箱">
  191. <template slot-scope="scope">
  192. <span >{{ scope.row.email?scope.row.email:'--' }}</span>
  193. </template>
  194. </el-table-column>
  195. <el-table-column width="120" label="部门">
  196. <template slot-scope="scope">
  197. <span >{{ scope.row.position?scope.row.position:'--' }}</span>
  198. </template>
  199. </el-table-column><el-table-column width="120" label="职位">
  200. <template slot-scope="scope">
  201. <span >{{ scope.row.depname?scope.row.depname:'--' }}</span>
  202. </template>
  203. </el-table-column><el-table-column width="80" label="性别">
  204. <template slot-scope="scope">
  205. <span >{{ scope.row.sex?scope.row.sex:'--' }}</span>
  206. </template>
  207. </el-table-column><el-table-column width="120" label="生日">
  208. <template slot-scope="scope">
  209. <span >{{ scope.row.birthday?scope.row.birthday:'--' }}</span>
  210. </template>
  211. </el-table-column>
  212. <el-table-column width="300" label="家庭住址">
  213. <template slot-scope="scope">
  214. <span >{{ scope.row.address?scope.row.address:'--' }}</span>
  215. </template>
  216. </el-table-column>
  217. <el-table-column width="200" label="备注">
  218. <template slot-scope="scope">
  219. <span >{{ scope.row.remarks?scope.row.remarks:'--' }}</span>
  220. </template>
  221. </el-table-column>
  222. </el-table>
  223. <div style="display:flex;align-items:center;flex-direction:row-reverse;justify-content:space-between">
  224. <div class="container normal-panel" style="text-align:right">
  225. <el-pagination
  226. background
  227. @size-change="handleSizeChangeMy"
  228. @current-change="handleCurrentChangeMy"
  229. :current-page="myContacts.currentPage"
  230. :page-sizes="[20, 50, 100, 200]"
  231. :page-size="20"
  232. layout="total,sizes, prev, pager, next, jumper"
  233. :total="myContacts.total">
  234. </el-pagination>
  235. </div>
  236. <slot name="footerLeft"></slot>
  237. </div>
  238. </el-tab-pane>
  239. </el-tabs>
  240. <el-input slot="reference" autosize v-model="form.contactsinfo.name" placeholder="请输入联系人姓名" @input="searchData"></el-input>
  241. </el-popover>
  242. </el-form-item>
  243. </el-col>
  244. <el-col :span="24" v-if="isPhone">
  245. <el-form-item label="联系方式:" prop="contactsinfo.phonenumber">
  246. <el-button-group>
  247. <!-- <el-button type="primary" size="mini" @click="phoneChang('手机')">手机号</el-button>
  248. <el-button type="" size="mini" @click="phoneChang('座机')">座机电话</el-button>-->
  249. <el-radio v-model="isPhone" :label="true" @change="phoneChang('手机')">手机号</el-radio>
  250. <el-radio v-model="isPhone" :label="false" @change="phoneChang('座机')">座机电话</el-radio>
  251. </el-button-group>
  252. <el-input v-model="form.contactsinfo.phonenumber" placeholder="请输入手机号" style="width: 100%;margin-top: 10px" ></el-input>
  253. </el-form-item>
  254. </el-col>
  255. <el-col :span="24" v-if="!isPhone">
  256. <el-form-item label="联系方式:" prop="contactsinfo.telephone">
  257. <el-button-group>
  258. <!-- <el-button type="" size="mini" @click="phoneChang('手机')">手机号</el-button>
  259. <el-button type="primary" size="mini" @click="phoneChang('座机')">座机电话</el-button>-->
  260. <el-radio v-model="isPhone" :label="true" @change="phoneChang('手机')">手机号</el-radio>
  261. <el-radio v-model="isPhone" :label="false" @change="phoneChang('座机')">座机电话</el-radio>
  262. </el-button-group>
  263. <el-input v-model="form.contactsinfo.telephone" placeholder="请输入座机电话" style="width: 100%;margin-top: 10px" ></el-input>
  264. </el-form-item>
  265. </el-col>
  266. <el-col :span="24">
  267. <el-form-item label="税号:" prop="taxno">
  268. <el-input v-model="form.taxno" placeholder="请输入企业税号" style="width: 100%"></el-input>
  269. </el-form-item>
  270. </el-col>
  271. <el-col :span="24">
  272. <el-form-item label="法人:" prop="contact">
  273. <el-input v-model="form.contact" placeholder="请输入法人信息" style="width: 100%"></el-input>
  274. </el-form-item>
  275. </el-col>
  276. <el-col :span="24">
  277. <el-form-item label="联系电话:" prop="telephone">
  278. <el-input v-model="form.telephone" placeholder="请输入联系电话" style="width: 100%"></el-input>
  279. </el-form-item>
  280. </el-col>
  281. <el-col :span="24">
  282. <el-form-item label="省市县:" prop="province">
  283. <el-cascader
  284. style="width: 100%"
  285. v-model="value"
  286. :options="basicData.data().areaData"
  287. @change="cascaderChange" clearable>
  288. </el-cascader>
  289. </el-form-item>
  290. </el-col>
  291. <el-col :span="24">
  292. <el-form-item label="详细地址:" prop="address">
  293. <el-input v-model="form.address" placeholder="请输入企业地址" style="width: 100%"></el-input>
  294. </el-form-item>
  295. </el-col>
  296. <el-col :span="24">
  297. <el-form-item label="上级企业:" prop="superiorenterprisename">
  298. <el-popover
  299. placement="bottom"
  300. width="700"
  301. trigger="click"
  302. v-model="customerShow"
  303. @show="customerList">
  304. <el-input
  305. style="width:300px;margin-bottom: 10px"
  306. placeholder="请输入内容"
  307. v-model="customerParam.content.where.condition"
  308. clearable
  309. @clear="customerList(customerParam.content.pageNumber = 1)"
  310. size="mini"
  311. @keyup.enter.native="customerList(customerParam.content.pageNumber = 1)">
  312. <i slot="prefix" class="el-icon-search" @click="customerList(customerParam.content.pageNumber = 1)"></i>
  313. </el-input>
  314. <el-table :data="customer.customerData" @row-click="customerData" height="396px" :header-cell-style="{background:'#EEEEEE',color:'#333'}" size="mini">
  315. <el-table-column
  316. label="客户编号"
  317. width="75">
  318. <template slot-scope="scope">
  319. <span style="margin-left: 10px">{{ scope.row.sa_customersid?scope.row.sa_customersid:'--' }}</span>
  320. </template>
  321. </el-table-column>
  322. <el-table-column
  323. label="客户名称"
  324. width="260">
  325. <template slot-scope="scope">
  326. <span style="margin-left: 10px">{{ scope.row.enterprisename?scope.row.enterprisename:'--'}}</span>
  327. </template>
  328. </el-table-column>
  329. <el-table-column
  330. label="地址"
  331. >
  332. <template slot-scope="scope">
  333. <span style="margin-left: 10px">{{ scope.row.address?scope.row.address:'--' }}</span>
  334. </template>
  335. </el-table-column>
  336. </el-table>
  337. <div class="container normal-panel" style="text-align:right">
  338. <el-pagination
  339. background
  340. small
  341. @size-change="handleSizeChangeCustomer"
  342. @current-change="handleCurrentChangeCustomer"
  343. :page-sizes="[10,20,50,100,]"
  344. layout="total,sizes, prev, pager, next, jumper"
  345. :current-page="customer.currentPage"
  346. :total="customer.total">
  347. </el-pagination>
  348. </div>
  349. <el-input slot="reference" :readonly="true" v-model="form.superiorenterprisename" autocomplete="off" placeholder="请选择客户" @input="selectCustomer"></el-input>
  350. </el-popover>
  351. </el-form-item>
  352. </el-col>
  353. <el-col :span="24">
  354. <el-form-item label="客户来源:" prop="source">
  355. <el-input v-model="form.source" placeholder="请输入客户来源" style="width: 100%"></el-input>
  356. </el-form-item>
  357. </el-col>
  358. </el-form>
  359. </el-row>
  360. </div>
  361. <div class="fixed__btn__panel">
  362. <el-button size="small" @click="onClose" class="normal-btn-width inline-16">取 消</el-button>
  363. <duplicateCheck :data="form" ref="check" @checkSuccess="checkSuccess" @onSuccess="onClose" @onCheck="onCheck"></duplicateCheck>
  364. <el-button size="small" type="primary" @click="onSave" class="normal-btn-width">确 定</el-button>
  365. </div>
  366. </el-drawer>
  367. </div>
  368. </template>
  369. <script>
  370. import businessMessage from '@/components/businessMessage/index'
  371. import duplicateCheck from "@/components/duplicatesCheck/customerChangeCheck";
  372. export default {
  373. props:["disabled","data"],
  374. name: "changeCustomer",
  375. components:{businessMessage,duplicateCheck},
  376. data(){
  377. return {
  378. activeName:'first',
  379. drawer:false,
  380. customerShow:false,
  381. checkResults:'',
  382. rules:{
  383. phonenumber: [
  384. { required: true, message: '请输入手机号码', trigger: 'blur' },
  385. { pattern:/^1[3-9]\d{9}$/, message: '请输入正确手机号码',trigger: 'blur' }
  386. ],
  387. enterprisename_customer: [
  388. { required: true, message: '请输入客户名称', trigger: 'blur' },
  389. ],
  390. roleids: [
  391. { required: true, message: '请选择授权角色', trigger: 'change' }
  392. ],
  393. type: [
  394. { required: true, message: '请选择客户类型', trigger: 'change' }
  395. ],
  396. contact: [
  397. { required: false, message: '请输入法人', trigger: 'change,blur' },
  398. ],
  399. telephone: [
  400. { required: false, message: '请输入联系电话', trigger: 'change,blur' },
  401. { pattern:/^1[3-9]\d{9}$/, message: '请输入正确手机号码',trigger: 'change' }
  402. ],
  403. province: [
  404. { required: true, message: '请选择省市县', trigger: 'change,blur' },
  405. ],
  406. 'contactsinfo.name':[
  407. { required: true, message: '请输入联系人姓名', trigger: 'change,blur' }
  408. ],
  409. 'contactsinfo.phonenumber': [
  410. { required: true, message: '请输入联系电话', trigger: 'change' },
  411. { pattern:/^1[3-9]\d{9}$/, message: '请输入正确手机号码',trigger: 'change' }
  412. ],
  413. 'contactsinfo.telephone': [
  414. { required: true, message: '请输入座机电话', trigger: 'change' },
  415. { pattern:/^0\d{2,3}-\d{7,8}$/, message: '请输入正确座机电话',trigger: 'change' }
  416. ],
  417. },
  418. form:{
  419. "sat_orderclueid": '',
  420. "enterprisename_customer":'',
  421. "sa_customersid": 0, //新增是传0
  422. "parentid": 0, //上级客户ID,默认或没有上级的时候传0
  423. "sys_enterpriseid": 0, //合作企业档案ID,新增是传0,更新
  424. "enterprisename": "", //客户名称(企业名称)
  425. "type": "", //客户类型
  426. "source": "", //客户来源
  427. "province": "", //非必填,可选
  428. "city": "", //非必填,可选
  429. "county": "", //非必填,可选
  430. "address": "", //非必填,可选
  431. "abbreviation": "", //非必填,可选
  432. "taxno": "", //税号,非必填,可选
  433. "grade": '', // 客户等级(商户等级)
  434. "industry": [], //非必填,可选,所属行业
  435. "contact": "", //非必填,可选
  436. "phonenumber": "", //非必填,可选
  437. "customergrade": "", //客户等级
  438. "contactsinfo": {
  439. "name": "",
  440. "telephone": "",
  441. "phonenumber": ""
  442. },
  443. },
  444. customerParam:{
  445. "id": 20220920083901,
  446. "content": {
  447. "pageNumber": 1,
  448. "pageSize": 10,
  449. "where": {
  450. "condition": "",
  451. "type":6,
  452. "sa_projectid":""
  453. }
  454. }
  455. },
  456. customer:{
  457. customerData:[],
  458. total:0,
  459. currentPage:0,
  460. },
  461. value:'',
  462. options:{
  463. type:[],
  464. parentCustomers:[],
  465. gradeData:[],
  466. industryData:[],
  467. customerGrade:[],
  468. customerClassification:[],
  469. distributor:[]
  470. },
  471. isPhone:true,
  472. enterpriseContact:{
  473. param:{
  474. "content": {
  475. "sys_enterpriseid": '',
  476. "pageNumber": 1,
  477. "pageSize": 20,
  478. "where": {
  479. "condition": ""
  480. }
  481. },
  482. "id": 20221219193002,
  483. },
  484. listData:[],
  485. total:0,
  486. currentPage:0,
  487. show:false
  488. },
  489. myContacts:{
  490. param:{
  491. "id": 20221219161202,
  492. "content": {
  493. "pageNumber": 1,
  494. "pageSize": 20,
  495. "ownertable":'sa_customers',
  496. "ownerid":'',
  497. "where": {
  498. "condition": ""
  499. }
  500. }
  501. },
  502. listData:[],
  503. total:0,
  504. currentPage:0,
  505. show:false
  506. },
  507. }
  508. },
  509. methods:{
  510. onShow(){
  511. console.log(this.data,"转化客户信息")
  512. this.drawer = true
  513. this.form = Object.assign({},this.form,this.data)
  514. this.form.source = this.form.cluesource
  515. this.value = [this.form.province,this.form.city,this.form.county]
  516. console.log(this.form,"获取的表单数据")
  517. this.gradeList()
  518. this.industryList()
  519. this.typeList()
  520. this.queryCustomerGrade()
  521. this.enterpriseContactList()
  522. },
  523. /*查重检查*/
  524. onCheck(){
  525. this.$refs.form.validate((valid) => {
  526. if (!valid) return false
  527. this.$refs.check.queryRule()
  528. })
  529. },
  530. /*自动查重判断*/
  531. duplicateCheck(){
  532. this.$refs.form.validate(async (valid) => {
  533. if (!valid) return false
  534. const res = await this.$api.requested({
  535. "id": 20221208172002,
  536. "content": {
  537. "sa_customersid":0,
  538. "enterprisename":this.form.enterprisename_customer,
  539. "taxno":this.form.taxno,
  540. "address":this.form.address
  541. },
  542. })
  543. console.log(res,"查重结果")
  544. if (res.data.length !== 0){
  545. console.log("重复")
  546. }
  547. this.checkResults = res.data.length
  548. this.onSave()
  549. })
  550. },
  551. onSave(){
  552. this.form.enterprisename = this.form.enterprisename_customer
  553. this.$refs.form.validate((valid) => {
  554. if (!valid) return false
  555. this.$refs.check.creatShow = true
  556. this.$refs.check.queryRule()
  557. })
  558. },
  559. async setTag(id){
  560. const res = await this.$api.requested({
  561. "id": 20220929090901,
  562. "content": {
  563. "ownertable":"sa_customers",
  564. "ownerid":id,
  565. "datatag":[
  566. "疑似重复",
  567. ]
  568. }
  569. })
  570. this.$emit('onChangeCustomer')
  571. this.$refs['form'].resetFields();
  572. this.form = {
  573. "sat_orderclueid": '',
  574. "enterprisename_customer":'',
  575. "sa_customersid": 0, //新增是传0
  576. "parentid": 0, //上级客户ID,默认或没有上级的时候传0
  577. "sys_enterpriseid": 0, //合作企业档案ID,新增是传0,更新
  578. "enterprisename": "", //客户名称(企业名称)
  579. "type": "", //客户类型
  580. "source": "", //客户来源
  581. "province": "", //非必填,可选
  582. "city": "", //非必填,可选
  583. "county": "", //非必填,可选
  584. "address": "", //非必填,可选
  585. "abbreviation": "", //非必填,可选
  586. "taxno": "", //税号,非必填,可选
  587. "grade": '', // 客户等级(商户等级)
  588. "industry": "", //非必填,可选,所属行业
  589. "contact": "", //非必填,可选
  590. "phonenumber": "", //非必填,可选
  591. "customergrade": "", //客户等级
  592. }
  593. this.drawer = false
  594. this.checkResults = ''
  595. this.value = ''
  596. },
  597. onSubmit(){
  598. this.form.enterprisename = this.form.enterprisename_customer
  599. this.$refs.form.validate(async (valid)=>{
  600. if (!valid) return false
  601. const res = await this.$api.requested({
  602. "id": 20221216184302,
  603. "content": this.form,
  604. })
  605. this.tool.showMessage(res,()=>{
  606. console.log(this.checkResults,"查重结果")
  607. if (this.checkResults === 0){
  608. this.$emit('onChangeCustomer')
  609. this.$refs['form'].resetFields();
  610. this.form = {
  611. }
  612. this.drawer = false
  613. this.checkResults = ''
  614. this.value = ''
  615. }else {
  616. this.setTag(res.data.sa_customersid)
  617. }
  618. })
  619. })
  620. },
  621. onClose(){
  622. this.$refs['form'].resetFields();
  623. this.isPhone = true
  624. /* this.form = {
  625. "sat_orderclueid": '',
  626. "enterprisename_customer":'',
  627. "sa_customersid": 0, //新增是传0
  628. "parentid": 0, //上级客户ID,默认或没有上级的时候传0
  629. "sys_enterpriseid": 0, //合作企业档案ID,新增是传0,更新
  630. "enterprisename": "", //客户名称(企业名称)
  631. "type": "", //客户类型
  632. "source": "", //客户来源
  633. "province": "", //非必填,可选
  634. "city": "", //非必填,可选
  635. "county": "", //非必填,可选
  636. "address": "", //非必填,可选
  637. "abbreviation": "", //非必填,可选
  638. "taxno": "", //税号,非必填,可选
  639. "grade": '', // 客户等级(商户等级)
  640. "industry": "", //非必填,可选,所属行业
  641. "contact": "", //非必填,可选
  642. "phonenumber": "", //非必填,可选
  643. "customergrade": "", //客户等级
  644. }*/
  645. this.drawer = false
  646. this.checkResults = ''
  647. this.value = ''
  648. this.$emit('onChangeCustomer')
  649. },
  650. /*获取工商信息*/
  651. onBusinessData(val){
  652. this.form.enterprisename_customer = val.companyName
  653. this.form.enterprisename = val.companyName
  654. this.form.address = val.address === "-" ? '' : val.address
  655. this.form.taxno = val.taxNum
  656. this.value = [val.regProvince,val.regCity,val.regArea]
  657. this.form.province = val.regProvince
  658. this.form.city = val.regCity
  659. this.form.county = val.regArea
  660. this.form.contact = val.legalPerson
  661. },
  662. /*省市县*/
  663. cascaderChange (val) {
  664. this.form.province = val[0]
  665. if (val.length === 1)
  666. return this.form = Object.assign({},this.form,{province:val[0],city:'',county:''})
  667. this.form = Object.assign({},this.form,{province:val[0],city:val[1],county:val[2]})
  668. this.$refs.form.validateField('province')
  669. },
  670. /*客户分类*/
  671. async gradeList(){
  672. const siteid = JSON.parse(sessionStorage.getItem('active_account')).siteid
  673. const res = await this.$api.requested({
  674. "classname": "sysmanage.develop.optiontype.optiontype",
  675. "method": "optiontypeselect",
  676. "content": {
  677. "pageNumber": 1,
  678. "pageSize": 20,
  679. "typename": "customergrade",
  680. "parameter": {
  681. "siteid": siteid
  682. }
  683. }
  684. })
  685. console.log("客户等级",res.data)
  686. /*for (var i=0;i<res.data.length; i++){
  687. if (res.data[i].remarks !== ''){
  688. this.options.gradeData[i] = res.data[i].value + "——" + res.data[i].remarks
  689. }else{
  690. this.options.gradeData[i] = res.data[i].value
  691. }
  692. }*/
  693. this.options.customerClassification = res.data
  694. console.log("处理后客户等级",this.options.customerClassification)
  695. },
  696. /*客户等级*/
  697. queryCustomerGrade(){
  698. this.$store.dispatch('optiontypeselect','agentgrade').then(res=>{
  699. this.options.customerGrade = res.data
  700. })
  701. },
  702. /*行业列表*/
  703. async industryList(){
  704. console.log("行业类别")
  705. const siteid = JSON.parse(sessionStorage.getItem('active_account')).siteid
  706. const res = await this.$api.requested({
  707. "classname": "sysmanage.develop.optiontype.optiontype",
  708. "method": "optiontypeselect",
  709. "content": {
  710. "pageNumber": 1,
  711. "pageSize": 20,
  712. "typename": "industry",
  713. "parameter": {
  714. "siteid": siteid
  715. }
  716. }
  717. })
  718. this.options.industryData = res.data
  719. },
  720. async customerList(){
  721. const res = await this.$api.requested(this.customerParam)
  722. this.customer.customerData = res.data
  723. this.customer.total = res.total
  724. this.customer.currentPage = res.pageNumber
  725. },
  726. selectCustomer(){
  727. this.customerParam.content.where.condition = this.form.superiorenterprisename
  728. this.customerList()
  729. },
  730. /*客户选择信息*/
  731. customerData(val){
  732. this.form.parentid = val.sa_customersid
  733. this.form.superiorenterprisename = val.enterprisename
  734. this.customerShow = false
  735. },
  736. /*客户分页*/
  737. handleSizeChangeCustomer(val) {
  738. // console.log(`每页 ${val} 条`);
  739. this.customerParam.content.pageSize = val
  740. this.customerList()
  741. },
  742. handleCurrentChangeCustomer(val) {
  743. // console.log(`当前页: ${val}`);
  744. this.customerParam.content.pageNumber = val
  745. this.customerList()
  746. },
  747. /*客户类型列表*/
  748. async typeList(){
  749. const siteid = JSON.parse(sessionStorage.getItem('active_account')).siteid
  750. const res = await this.$api.requested({
  751. "classname": "sysmanage.develop.optiontype.optiontype",
  752. "method": "optiontypeselect",
  753. "content": {
  754. "pageNumber": 1,
  755. "pageSize": 20,
  756. "typename": "customertypemx",
  757. "parameter": {
  758. "siteid": siteid
  759. }
  760. }
  761. })
  762. this.options.type = res.data
  763. },
  764. checkSuccess(val){
  765. this.checkResults = val
  766. },
  767. phoneChang(val){
  768. if (val === '座机'){
  769. this.isPhone = false
  770. }else {
  771. this.isPhone = true
  772. }
  773. },
  774. searchData(){
  775. this.changeTab()
  776. },
  777. changeTab(){
  778. this.enterpriseContactList()
  779. this.myContactList()
  780. },
  781. /*企业联系人*/
  782. async enterpriseContactList(){
  783. console.log(this.enterpriseContact.param,'企业联系人')
  784. this.enterpriseContact.param.content.where.condition = this.form.contactsinfo.name
  785. this.enterpriseContact.param.content.sys_enterpriseid = 0
  786. const res = await this.$api.requested(this.enterpriseContact.param)
  787. this.enterpriseContact.listData = res.data
  788. this.enterpriseContact.total = res.total
  789. this.enterpriseContact.currentPage = res.pageNumber
  790. },
  791. /*选择企业联系人*/
  792. enterpriseContactSelect(val){
  793. this.form.contactsinfo.name = val.name
  794. if (val.phonenumber.indexOf('-') != '-1'){
  795. this.isPhone = false
  796. let areaCode = val.phonenumber.substring(0,val.phonenumber.indexOf('-'))
  797. let telephone = val.phonenumber.substring(areaCode.length+1)
  798. this.form.contactsinfo.telephone = areaCode + '-' + telephone
  799. this.form.contactsinfo.phonenumber = ''
  800. }else {
  801. this.isPhone = true
  802. this.form.contactsinfo.phonenumber = val.phonenumber
  803. this.form.contactsinfo.telephone = ''
  804. }
  805. this.enterpriseContact.show = false
  806. },
  807. handleSizeChangeEnterprise(val) {
  808. // console.log(`每页 ${val} 条`);
  809. this.enterpriseContact.param.content.pageSize = val
  810. this.enterpriseContactList()
  811. },
  812. handleCurrentChangeEnterprise(val) {
  813. // console.log(`当前页: ${val}`);
  814. this.enterpriseContact.param.content.pageNumber = val
  815. this.enterpriseContactList()
  816. },
  817. /*我的联系人*/
  818. async myContactList(){
  819. console.log(this.myContacts.param,'我的联系人')
  820. this.myContacts.param.content.where.condition = this.form.contactsinfo.name
  821. this.myContacts.param.content.sys_enterpriseid = 0
  822. this.myContacts.param.content.ownerid = 0
  823. const res = await this.$api.requested(this.myContacts.param)
  824. this.myContacts.listData = res.data
  825. this.myContacts.total = res.total
  826. this.myContacts.currentPage = res.pageNumber
  827. },
  828. /*选择我的联系人*/
  829. myContactSelect(val){
  830. this.form.contactsinfo.name = val.name
  831. if (val.phonenumber.indexOf('-') != '-1'){
  832. this.isPhone = false
  833. let areaCode = val.phonenumber.substring(0,val.phonenumber.indexOf('-'))
  834. let telephone = val.phonenumber.substring(areaCode.length+1)
  835. this.form.contactsinfo.telephone = areaCode + '-' + telephone
  836. this.form.contactsinfo.phonenumber = ''
  837. }else {
  838. this.isPhone = true
  839. this.form.contactsinfo.phonenumber = val.phonenumber
  840. this.form.contactsinfo.telephone = ''
  841. }
  842. this.enterpriseContact.show = false
  843. },
  844. handleSizeChangeMy(val) {
  845. // console.log(`每页 ${val} 条`);
  846. this.myContacts.param.content.pageSize = val
  847. this.myContactList()
  848. },
  849. handleCurrentChangeMy(val) {
  850. // console.log(`当前页: ${val}`);
  851. this.myContacts.param.content.pageNumber = val
  852. this.myContactList()
  853. },
  854. },
  855. mounted() {
  856. }
  857. }
  858. </script>
  859. <style scoped>
  860. /deep/.el-input__prefix {
  861. display: flex;
  862. align-items: center;
  863. }
  864. </style>