index.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698
  1. <template>
  2. <div class="app-container">
  3. <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
  4. <el-form-item label="创建日期" prop="createDate">
  5. <el-date-picker clearable
  6. v-model="queryParams.createDate"
  7. type="date"
  8. value-format="yyyy-MM-dd"
  9. placeholder="请选择创建日期">
  10. </el-date-picker>
  11. </el-form-item>
  12. <el-form-item label="部门名称" prop="departmentName">
  13. <el-input
  14. v-model="queryParams.departmentName"
  15. placeholder="请输入部门名称"
  16. clearable
  17. @keyup.enter.native="handleQuery"
  18. />
  19. </el-form-item>
  20. <el-form-item label="部门编码" prop="departmentCode">
  21. <el-input
  22. v-model="queryParams.departmentCode"
  23. placeholder="请输入部门编码"
  24. clearable
  25. @keyup.enter.native="handleQuery"
  26. />
  27. </el-form-item>
  28. <el-form-item label="销售区域" prop="area">
  29. <el-input
  30. v-model="queryParams.area"
  31. placeholder="请输入销售区域"
  32. clearable
  33. @keyup.enter.native="handleQuery"
  34. />
  35. </el-form-item>
  36. <el-form-item label="销售组织" prop="organization">
  37. <el-input
  38. v-model="queryParams.organization"
  39. placeholder="请输入销售组织"
  40. clearable
  41. @keyup.enter.native="handleQuery"
  42. />
  43. </el-form-item>
  44. <el-form-item label="最佳拜访地点" prop="visitPlace">
  45. <el-input
  46. v-model="queryParams.visitPlace"
  47. placeholder="请输入最佳拜访地点"
  48. clearable
  49. @keyup.enter.native="handleQuery"
  50. />
  51. </el-form-item>
  52. <el-form-item label="最佳拜访时间" prop="visitTime">
  53. <el-date-picker clearable
  54. v-model="queryParams.visitTime"
  55. type="date"
  56. value-format="yyyy-MM-dd"
  57. placeholder="请选择最佳拜访时间">
  58. </el-date-picker>
  59. </el-form-item>
  60. <el-form-item label="家庭地址" prop="address">
  61. <el-input
  62. v-model="queryParams.address"
  63. placeholder="请输入家庭地址"
  64. clearable
  65. @keyup.enter.native="handleQuery"
  66. />
  67. </el-form-item>
  68. <el-form-item label="邮件" prop="mail">
  69. <el-input
  70. v-model="queryParams.mail"
  71. placeholder="请输入邮件"
  72. clearable
  73. @keyup.enter.native="handleQuery"
  74. />
  75. </el-form-item>
  76. <el-form-item label="联系电话" prop="telephone">
  77. <el-input
  78. v-model="queryParams.telephone"
  79. placeholder="请输入联系电话"
  80. clearable
  81. @keyup.enter.native="handleQuery"
  82. />
  83. </el-form-item>
  84. <el-form-item label="关键决策人" prop="decisionMaker">
  85. <el-input
  86. v-model="queryParams.decisionMaker"
  87. placeholder="请输入关键决策人"
  88. clearable
  89. @keyup.enter.native="handleQuery"
  90. />
  91. </el-form-item>
  92. <el-form-item label="擅长领域" prop="fieldExpertise">
  93. <el-input
  94. v-model="queryParams.fieldExpertise"
  95. placeholder="请输入擅长领域"
  96. clearable
  97. @keyup.enter.native="handleQuery"
  98. />
  99. </el-form-item>
  100. <el-form-item label="支持度" prop="support">
  101. <el-input
  102. v-model="queryParams.support"
  103. placeholder="请输入支持度"
  104. clearable
  105. @keyup.enter.native="handleQuery"
  106. />
  107. </el-form-item>
  108. <el-form-item label="决策力" prop="power">
  109. <el-input
  110. v-model="queryParams.power"
  111. placeholder="请输入决策力"
  112. clearable
  113. @keyup.enter.native="handleQuery"
  114. />
  115. </el-form-item>
  116. <el-form-item label="职称" prop="jobTitle">
  117. <el-input
  118. v-model="queryParams.jobTitle"
  119. placeholder="请输入职称"
  120. clearable
  121. @keyup.enter.native="handleQuery"
  122. />
  123. </el-form-item>
  124. <el-form-item label="职务" prop="position">
  125. <el-input
  126. v-model="queryParams.position"
  127. placeholder="请输入职务"
  128. clearable
  129. @keyup.enter.native="handleQuery"
  130. />
  131. </el-form-item>
  132. <el-form-item label="任职科室" prop="section">
  133. <el-input
  134. v-model="queryParams.section"
  135. placeholder="请输入任职科室"
  136. clearable
  137. @keyup.enter.native="handleQuery"
  138. />
  139. </el-form-item>
  140. <el-form-item label="上级联系人" prop="superiorContact">
  141. <el-input
  142. v-model="queryParams.superiorContact"
  143. placeholder="请输入上级联系人"
  144. clearable
  145. @keyup.enter.native="handleQuery"
  146. />
  147. </el-form-item>
  148. <el-form-item label="状态" prop="state">
  149. <el-input
  150. v-model="queryParams.state"
  151. placeholder="请输入状态"
  152. clearable
  153. @keyup.enter.native="handleQuery"
  154. />
  155. </el-form-item>
  156. <el-form-item label="业务爱好" prop="hobby">
  157. <el-input
  158. v-model="queryParams.hobby"
  159. placeholder="请输入业务爱好"
  160. clearable
  161. @keyup.enter.native="handleQuery"
  162. />
  163. </el-form-item>
  164. <el-form-item label="籍贯" prop="birthplace">
  165. <el-input
  166. v-model="queryParams.birthplace"
  167. placeholder="请输入籍贯"
  168. clearable
  169. @keyup.enter.native="handleQuery"
  170. />
  171. </el-form-item>
  172. <el-form-item label="生日" prop="birthday">
  173. <el-date-picker clearable
  174. v-model="queryParams.birthday"
  175. type="date"
  176. value-format="yyyy-MM-dd"
  177. placeholder="请选择生日">
  178. </el-date-picker>
  179. </el-form-item>
  180. <el-form-item label="联系人分类" prop="contactClassification">
  181. <el-input
  182. v-model="queryParams.contactClassification"
  183. placeholder="请输入联系人分类"
  184. clearable
  185. @keyup.enter.native="handleQuery"
  186. />
  187. </el-form-item>
  188. <el-form-item label="所属客户名称" prop="customerName">
  189. <el-input
  190. v-model="queryParams.customerName"
  191. placeholder="请输入所属客户名称"
  192. clearable
  193. @keyup.enter.native="handleQuery"
  194. />
  195. </el-form-item>
  196. <el-form-item label="所属客户编码" prop="customerCode">
  197. <el-input
  198. v-model="queryParams.customerCode"
  199. placeholder="请输入所属客户编码"
  200. clearable
  201. @keyup.enter.native="handleQuery"
  202. />
  203. </el-form-item>
  204. <el-form-item label="性别" prop="gander">
  205. <el-input
  206. v-model="queryParams.gander"
  207. placeholder="请输入性别"
  208. clearable
  209. @keyup.enter.native="handleQuery"
  210. />
  211. </el-form-item>
  212. <el-form-item label="姓名" prop="name">
  213. <el-input
  214. v-model="queryParams.name"
  215. placeholder="请输入姓名"
  216. clearable
  217. @keyup.enter.native="handleQuery"
  218. />
  219. </el-form-item>
  220. <el-form-item label="编号" prop="code">
  221. <el-input
  222. v-model="queryParams.code"
  223. placeholder="请输入编号"
  224. clearable
  225. @keyup.enter.native="handleQuery"
  226. />
  227. </el-form-item>
  228. <el-form-item>
  229. <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
  230. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
  231. </el-form-item>
  232. </el-form>
  233. <el-row :gutter="10" class="mb8">
  234. <el-col :span="1.5">
  235. <el-button
  236. type="primary"
  237. plain
  238. icon="el-icon-plus"
  239. size="mini"
  240. @click="handleAdd"
  241. v-hasPermi="['system:contact:add']"
  242. >新增</el-button>
  243. </el-col>
  244. <el-col :span="1.5">
  245. <el-button
  246. type="success"
  247. plain
  248. icon="el-icon-edit"
  249. size="mini"
  250. :disabled="single"
  251. @click="handleUpdate"
  252. v-hasPermi="['system:contact:edit']"
  253. >修改</el-button>
  254. </el-col>
  255. <el-col :span="1.5">
  256. <el-button
  257. type="danger"
  258. plain
  259. icon="el-icon-delete"
  260. size="mini"
  261. :disabled="multiple"
  262. @click="handleDelete"
  263. v-hasPermi="['system:contact:remove']"
  264. >删除</el-button>
  265. </el-col>
  266. <el-col :span="1.5">
  267. <el-button
  268. type="warning"
  269. plain
  270. icon="el-icon-download"
  271. size="mini"
  272. @click="handleExport"
  273. v-hasPermi="['system:contact:export']"
  274. >导出</el-button>
  275. </el-col>
  276. <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
  277. </el-row>
  278. <el-table v-loading="loading" :data="contactList" @selection-change="handleSelectionChange">
  279. <el-table-column type="selection" width="55" align="center" />
  280. <el-table-column label="商机id" align="center" prop="boId" />
  281. <el-table-column label="创建日期" align="center" prop="createDate" width="180">
  282. <template slot-scope="scope">
  283. <span>{{ parseTime(scope.row.createDate, '{y}-{m}-{d}') }}</span>
  284. </template>
  285. </el-table-column>
  286. <el-table-column label="部门名称" align="center" prop="departmentName" />
  287. <el-table-column label="部门编码" align="center" prop="departmentCode" />
  288. <el-table-column label="销售区域" align="center" prop="area" />
  289. <el-table-column label="销售组织" align="center" prop="organization" />
  290. <el-table-column label="最佳拜访地点" align="center" prop="visitPlace" />
  291. <el-table-column label="最佳拜访时间" align="center" prop="visitTime" width="180">
  292. <template slot-scope="scope">
  293. <span>{{ parseTime(scope.row.visitTime, '{y}-{m}-{d}') }}</span>
  294. </template>
  295. </el-table-column>
  296. <el-table-column label="家庭地址" align="center" prop="address" />
  297. <el-table-column label="邮件" align="center" prop="mail" />
  298. <el-table-column label="联系电话" align="center" prop="telephone" />
  299. <el-table-column label="关键决策人" align="center" prop="decisionMaker" />
  300. <el-table-column label="擅长领域" align="center" prop="fieldExpertise" />
  301. <el-table-column label="支持度" align="center" prop="support" />
  302. <el-table-column label="决策力" align="center" prop="power" />
  303. <el-table-column label="职称" align="center" prop="jobTitle" />
  304. <el-table-column label="职务" align="center" prop="position" />
  305. <el-table-column label="任职科室" align="center" prop="section" />
  306. <el-table-column label="上级联系人" align="center" prop="superiorContact" />
  307. <el-table-column label="状态" align="center" prop="state" />
  308. <el-table-column label="业务爱好" align="center" prop="hobby" />
  309. <el-table-column label="籍贯" align="center" prop="birthplace" />
  310. <el-table-column label="生日" align="center" prop="birthday" width="180">
  311. <template slot-scope="scope">
  312. <span>{{ parseTime(scope.row.birthday, '{y}-{m}-{d}') }}</span>
  313. </template>
  314. </el-table-column>
  315. <el-table-column label="联系人分类" align="center" prop="contactClassification" />
  316. <el-table-column label="所属客户名称" align="center" prop="customerName" />
  317. <el-table-column label="所属客户编码" align="center" prop="customerCode" />
  318. <el-table-column label="性别" align="center" prop="gander" />
  319. <el-table-column label="姓名" align="center" prop="name" />
  320. <el-table-column label="编号" align="center" prop="code" />
  321. <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
  322. <template slot-scope="scope">
  323. <el-button
  324. size="mini"
  325. type="text"
  326. icon="el-icon-edit"
  327. @click="handleUpdate(scope.row)"
  328. v-hasPermi="['system:contact:edit']"
  329. >修改</el-button>
  330. <el-button
  331. size="mini"
  332. type="text"
  333. icon="el-icon-delete"
  334. @click="handleDelete(scope.row)"
  335. v-hasPermi="['system:contact:remove']"
  336. >删除</el-button>
  337. </template>
  338. </el-table-column>
  339. </el-table>
  340. <pagination
  341. v-show="total>0"
  342. :total="total"
  343. :page.sync="queryParams.pageNum"
  344. :limit.sync="queryParams.pageSize"
  345. @pagination="getList"
  346. />
  347. <!-- 添加或修改联系人管理对话框 -->
  348. <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
  349. <el-form ref="form" :model="form" :rules="rules" label-width="80px">
  350. <el-form-item label="商机id" prop="boId">
  351. <el-input v-model="form.boId" placeholder="请输入商机id" />
  352. </el-form-item>
  353. <el-form-item label="创建日期" prop="createDate">
  354. <el-date-picker clearable
  355. v-model="form.createDate"
  356. type="date"
  357. value-format="yyyy-MM-dd"
  358. placeholder="请选择创建日期">
  359. </el-date-picker>
  360. </el-form-item>
  361. <el-form-item label="部门名称" prop="departmentName">
  362. <el-input v-model="form.departmentName" placeholder="请输入部门名称" />
  363. </el-form-item>
  364. <el-form-item label="部门编码" prop="departmentCode">
  365. <el-input v-model="form.departmentCode" placeholder="请输入部门编码" />
  366. </el-form-item>
  367. <el-form-item label="销售区域" prop="area">
  368. <el-input v-model="form.area" placeholder="请输入销售区域" />
  369. </el-form-item>
  370. <el-form-item label="销售组织" prop="organization">
  371. <el-input v-model="form.organization" placeholder="请输入销售组织" />
  372. </el-form-item>
  373. <el-form-item label="最佳拜访地点" prop="visitPlace">
  374. <el-input v-model="form.visitPlace" placeholder="请输入最佳拜访地点" />
  375. </el-form-item>
  376. <el-form-item label="最佳拜访时间" prop="visitTime">
  377. <el-date-picker clearable
  378. v-model="form.visitTime"
  379. type="date"
  380. value-format="yyyy-MM-dd"
  381. placeholder="请选择最佳拜访时间">
  382. </el-date-picker>
  383. </el-form-item>
  384. <el-form-item label="家庭地址" prop="address">
  385. <el-input v-model="form.address" placeholder="请输入家庭地址" />
  386. </el-form-item>
  387. <el-form-item label="邮件" prop="mail">
  388. <el-input v-model="form.mail" placeholder="请输入邮件" />
  389. </el-form-item>
  390. <el-form-item label="联系电话" prop="telephone">
  391. <el-input v-model="form.telephone" placeholder="请输入联系电话" />
  392. </el-form-item>
  393. <el-form-item label="关键决策人" prop="decisionMaker">
  394. <el-input v-model="form.decisionMaker" placeholder="请输入关键决策人" />
  395. </el-form-item>
  396. <el-form-item label="擅长领域" prop="fieldExpertise">
  397. <el-input v-model="form.fieldExpertise" placeholder="请输入擅长领域" />
  398. </el-form-item>
  399. <el-form-item label="支持度" prop="support">
  400. <el-input v-model="form.support" placeholder="请输入支持度" />
  401. </el-form-item>
  402. <el-form-item label="决策力" prop="power">
  403. <el-input v-model="form.power" placeholder="请输入决策力" />
  404. </el-form-item>
  405. <el-form-item label="职称" prop="jobTitle">
  406. <el-input v-model="form.jobTitle" placeholder="请输入职称" />
  407. </el-form-item>
  408. <el-form-item label="职务" prop="position">
  409. <el-input v-model="form.position" placeholder="请输入职务" />
  410. </el-form-item>
  411. <el-form-item label="任职科室" prop="section">
  412. <el-input v-model="form.section" placeholder="请输入任职科室" />
  413. </el-form-item>
  414. <el-form-item label="上级联系人" prop="superiorContact">
  415. <el-input v-model="form.superiorContact" placeholder="请输入上级联系人" />
  416. </el-form-item>
  417. <el-form-item label="状态" prop="state">
  418. <el-input v-model="form.state" placeholder="请输入状态" />
  419. </el-form-item>
  420. <el-form-item label="业务爱好" prop="hobby">
  421. <el-input v-model="form.hobby" placeholder="请输入业务爱好" />
  422. </el-form-item>
  423. <el-form-item label="籍贯" prop="birthplace">
  424. <el-input v-model="form.birthplace" placeholder="请输入籍贯" />
  425. </el-form-item>
  426. <el-form-item label="生日" prop="birthday">
  427. <el-date-picker clearable
  428. v-model="form.birthday"
  429. type="date"
  430. value-format="yyyy-MM-dd"
  431. placeholder="请选择生日">
  432. </el-date-picker>
  433. </el-form-item>
  434. <el-form-item label="联系人分类" prop="contactClassification">
  435. <el-input v-model="form.contactClassification" placeholder="请输入联系人分类" />
  436. </el-form-item>
  437. <el-form-item label="所属客户名称" prop="customerName">
  438. <el-input v-model="form.customerName" placeholder="请输入所属客户名称" />
  439. </el-form-item>
  440. <el-form-item label="所属客户编码" prop="customerCode">
  441. <el-input v-model="form.customerCode" placeholder="请输入所属客户编码" />
  442. </el-form-item>
  443. <el-form-item label="性别" prop="gander">
  444. <el-input v-model="form.gander" placeholder="请输入性别" />
  445. </el-form-item>
  446. <el-form-item label="姓名" prop="name">
  447. <el-input v-model="form.name" placeholder="请输入姓名" />
  448. </el-form-item>
  449. <el-form-item label="编号" prop="code">
  450. <el-input v-model="form.code" placeholder="请输入编号" />
  451. </el-form-item>
  452. </el-form>
  453. <div slot="footer" class="dialog-footer">
  454. <el-button type="primary" @click="submitForm">确 定</el-button>
  455. <el-button @click="cancel">取 消</el-button>
  456. </div>
  457. </el-dialog>
  458. </div>
  459. </template>
  460. <script>
  461. import { listContact, getContact, delContact, addContact, updateContact } from "@/api/business/spd/bo/contact";
  462. export default {
  463. name: "Contact",
  464. data() {
  465. return {
  466. // 遮罩层
  467. loading: true,
  468. // 选中数组
  469. ids: [],
  470. // 非单个禁用
  471. single: true,
  472. // 非多个禁用
  473. multiple: true,
  474. // 显示搜索条件
  475. showSearch: true,
  476. // 总条数
  477. total: 0,
  478. // 联系人管理表格数据
  479. contactList: [],
  480. // 弹出层标题
  481. title: "",
  482. // 是否显示弹出层
  483. open: false,
  484. // 查询参数
  485. queryParams: {
  486. pageNum: 1,
  487. pageSize: 10,
  488. boId: null,
  489. createDate: null,
  490. departmentName: null,
  491. departmentCode: null,
  492. area: null,
  493. organization: null,
  494. visitPlace: null,
  495. visitTime: null,
  496. address: null,
  497. mail: null,
  498. telephone: null,
  499. decisionMaker: null,
  500. fieldExpertise: null,
  501. support: null,
  502. power: null,
  503. jobTitle: null,
  504. position: null,
  505. section: null,
  506. superiorContact: null,
  507. state: null,
  508. hobby: null,
  509. birthplace: null,
  510. birthday: null,
  511. contactClassification: null,
  512. customerName: null,
  513. customerCode: null,
  514. gander: null,
  515. name: null,
  516. code: null,
  517. },
  518. // 表单参数
  519. form: {},
  520. // 表单校验
  521. rules: {
  522. area: [
  523. { required: true, message: "销售区域不能为空", trigger: "blur" }
  524. ],
  525. organization: [
  526. { required: true, message: "销售组织不能为空", trigger: "blur" }
  527. ],
  528. address: [
  529. { required: true, message: "家庭地址不能为空", trigger: "blur" }
  530. ],
  531. telephone: [
  532. { required: true, message: "联系电话不能为空", trigger: "blur" }
  533. ],
  534. decisionMaker: [
  535. { required: true, message: "关键决策人不能为空", trigger: "blur" }
  536. ],
  537. power: [
  538. { required: true, message: "决策力不能为空", trigger: "blur" }
  539. ],
  540. jobTitle: [
  541. { required: true, message: "职称不能为空", trigger: "blur" }
  542. ],
  543. position: [
  544. { required: true, message: "职务不能为空", trigger: "blur" }
  545. ],
  546. section: [
  547. { required: true, message: "任职科室不能为空", trigger: "blur" }
  548. ],
  549. customerName: [
  550. { required: true, message: "所属客户名称不能为空", trigger: "blur" }
  551. ],
  552. gander: [
  553. { required: true, message: "性别不能为空", trigger: "blur" }
  554. ],
  555. name: [
  556. { required: true, message: "姓名不能为空", trigger: "blur" }
  557. ],
  558. code: [
  559. { required: true, message: "编号不能为空", trigger: "blur" }
  560. ],
  561. }
  562. };
  563. },
  564. created() {
  565. this.getList();
  566. },
  567. methods: {
  568. /** 查询联系人管理列表 */
  569. getList() {
  570. this.loading = true;
  571. listContact(this.queryParams).then(response => {
  572. this.contactList = response.rows;
  573. this.total = response.total;
  574. this.loading = false;
  575. });
  576. },
  577. // 取消按钮
  578. cancel() {
  579. this.open = false;
  580. this.reset();
  581. },
  582. // 表单重置
  583. reset() {
  584. this.form = {
  585. boId: null,
  586. delFlag: null,
  587. updateTime: null,
  588. updateBy: null,
  589. createDate: null,
  590. createBy: null,
  591. departmentName: null,
  592. departmentCode: null,
  593. area: null,
  594. organization: null,
  595. visitPlace: null,
  596. visitTime: null,
  597. address: null,
  598. mail: null,
  599. telephone: null,
  600. decisionMaker: null,
  601. fieldExpertise: null,
  602. support: null,
  603. power: null,
  604. jobTitle: null,
  605. position: null,
  606. section: null,
  607. superiorContact: null,
  608. state: null,
  609. hobby: null,
  610. birthplace: null,
  611. birthday: null,
  612. contactClassification: null,
  613. customerName: null,
  614. customerCode: null,
  615. gander: null,
  616. name: null,
  617. code: null,
  618. id: null
  619. };
  620. this.resetForm("form");
  621. },
  622. /** 搜索按钮操作 */
  623. handleQuery() {
  624. this.queryParams.pageNum = 1;
  625. this.getList();
  626. },
  627. /** 重置按钮操作 */
  628. resetQuery() {
  629. this.resetForm("queryForm");
  630. this.handleQuery();
  631. },
  632. // 多选框选中数据
  633. handleSelectionChange(selection) {
  634. this.ids = selection.map(item => item.id)
  635. this.single = selection.length!==1
  636. this.multiple = !selection.length
  637. },
  638. /** 新增按钮操作 */
  639. handleAdd() {
  640. this.reset();
  641. this.open = true;
  642. this.title = "添加联系人管理";
  643. },
  644. /** 修改按钮操作 */
  645. handleUpdate(row) {
  646. this.reset();
  647. const id = row.id || this.ids
  648. getContact(id).then(response => {
  649. this.form = response.data;
  650. this.open = true;
  651. this.title = "修改联系人管理";
  652. });
  653. },
  654. /** 提交按钮 */
  655. submitForm() {
  656. this.$refs["form"].validate(valid => {
  657. if (valid) {
  658. if (this.form.id != null) {
  659. updateContact(this.form).then(response => {
  660. this.$modal.msgSuccess("修改成功");
  661. this.open = false;
  662. this.getList();
  663. });
  664. } else {
  665. addContact(this.form).then(response => {
  666. this.$modal.msgSuccess("新增成功");
  667. this.open = false;
  668. this.getList();
  669. });
  670. }
  671. }
  672. });
  673. },
  674. /** 删除按钮操作 */
  675. handleDelete(row) {
  676. const ids = row.id || this.ids;
  677. this.$modal.confirm('是否确认删除联系人管理编号为"' + ids + '"的数据项?').then(function() {
  678. return delContact(ids);
  679. }).then(() => {
  680. this.getList();
  681. this.$modal.msgSuccess("删除成功");
  682. }).catch(() => {});
  683. },
  684. /** 导出按钮操作 */
  685. handleExport() {
  686. this.download('system/contact/export', {
  687. ...this.queryParams
  688. }, `contact_${new Date().getTime()}.xlsx`)
  689. }
  690. }
  691. };
  692. </script>