0


CRM项目前端复用封装好的代码实现删除线索和批量删除线索------CRM项目

  1. <template>
  2. <el-button type="primary" class="btn">导入线索</el-button>
  3. <el-button type="success" class="btn" @click="importExcel()">导入线索(Excel)</el-button>
  4. <el-button type="danger" class="btn" @click="batchDel()">批量删除</el-button>
  5. <el-table
  6. :data="clueList"
  7. style="width: 100%"
  8. @selection-change="handleSelectionChange">
  9. <el-table-column type="selection" width="33%"/>
  10. <el-table-column type="index" label="序号" width="60%"/>
  11. <el-table-column property="ownerDO.name" label="负责人" width="120" />
  12. <el-table-column property="activityDO.name" label="所属活动"/>
  13. <el-table-column label="姓名">
  14. <template #default="scope">
  15. <a href="javascript:" @click="view(scope.row.id)">{{ scope.row.fullName }}</a>
  16. </template>
  17. </el-table-column>
  18. <el-table-column property="appellationDO.typeValue" label="称呼"/>
  19. <el-table-column property="phone" label="手机" width="120"/>
  20. <el-table-column property="weixin" label="微信" width="120"/>
  21. <el-table-column property="needLoanDO.typeValue" label="是否贷款"/>
  22. <el-table-column property="intentionStateDO.typeValue" label="意向状态"/>
  23. <el-table-column property="intentionProductDO.name" label="意向产品"/>
  24. <el-table-column property="stateDO.typeValue" label="线索状态"/>
  25. <el-table-column property="sourceDO.typeValue" label="线索来源"/>
  26. <el-table-column property="nextContactTime" label="下次联系时间" width="165"/>
  27. <el-table-column label="操作" width="230">
  28. <template #default="scope">
  29. <el-button type="primary" @click="view(scope.row.id)">详情</el-button>
  30. <el-button type="success" @click="edit(scope.row.id)">编辑</el-button>
  31. <el-button type="danger" @click="del(scope.row.id)">删除</el-button>
  32. </template>
  33. </el-table-column>
  34. </el-table>
  35. <div class="parent">
  36. <el-pagination
  37. background
  38. layout="prev, pager, next"
  39. :page-size="pageSize"
  40. :total="total"
  41. @prev-click="toPage"
  42. @next-click="toPage"
  43. @current-change="toPage"
  44. />
  45. </div>
  46. <!--导入线索Excel的弹窗(对话框)-->
  47. <el-dialog v-model="importExcelDialogVisible" title="导入线索Excel" width="55%" center draggable>
  48. <el-upload
  49. ref="uploadRef"
  50. method="post"
  51. :http-request="uploadFile"
  52. :auto-upload="false"
  53. >
  54. <template #trigger>
  55. <el-button type="primary">选择Excel文件</el-button>
  56. </template>
  57. 仅支持后缀名为.xls或.xlxs的文件
  58. <template #tip>
  59. <div class="fileTip">
  60. <div>重要提示:</div>
  61. <ul>
  62. <li>上传仅支持后缀名为.xls或.xlsx的文件;</li>
  63. <li>给定Excel文件的第一行将视为字段名;</li>
  64. <li>请确认您的文件大小不超过50MB;</li>
  65. <li>日期值以文本形式保存,必须符合yyyy-MM-dd格式;</li>
  66. <li>日期时间以文本形式保存,必须符合yyyy-MM-dd HH:mm:ss的格式;</li>
  67. </ul>
  68. </div>
  69. </template>
  70. </el-upload>
  71. <template #footer>
  72. <span class="dialog-footer">
  73. <el-button @click="importExcelDialogVisible = false">关 闭</el-button>
  74. <el-button class="ml-3" type="success" @click="submitUpload">上 传</el-button>
  75. </span>
  76. </template>
  77. </el-dialog>
  78. </template>
  79. <script>
  80. import { doGet, doPost, doDelete } from '../http/httpRequest.js';
  81. import { messageTip, messageConfirm } from '../util/util.js';
  82. export default {
  83. name : "clubView",
  84. inject : ["reload"],
  85. data(){
  86. return {
  87. // 分页大小
  88. pageSize : 0,
  89. // 总分页
  90. total : 0,
  91. // 线索列表
  92. clueList : [{
  93. ownerDO : {},
  94. activityDO : {},
  95. appellationDO : {},
  96. needLoanDO : {},
  97. intentionStateDO : {},
  98. intentionProductDO : {},
  99. stateDO : {},
  100. sourceDO : {}
  101. }],
  102. selectedIds : {},
  103. // Excel弹出框控制
  104. importExcelDialogVisible : false
  105. }
  106. },
  107. mounted(){
  108. this.getData(1);
  109. },
  110. methods : {
  111. // 勾选或者取消勾选触发
  112. handleSelectionChange(selectionItems){
  113. this.selectedIds = [];
  114. // 将已经勾选的数据传给我们
  115. selectionItems.forEach(data => {
  116. this.selectedIds.push(data.id);
  117. });
  118. },
  119. batchDel(){
  120. if(!this.selectedIds.length){
  121. messageTip("请选择要删除的数据","warning");
  122. return;
  123. }
  124. messageConfirm("注意:删除后不可恢复","您确定要删除?").then(() => {
  125. let ids = this.selectedIds.join(",");
  126. doDelete("/api/club/batchDel",{ids : ids}).then(resp => {
  127. if(resp.data.code === 200){
  128. messageTip("批量删除成功","success");
  129. this.reload();
  130. }
  131. else{
  132. messageTip("批量删除失败:"+resp.data.msg,"error");
  133. }
  134. });
  135. }).catch(() => {
  136. messageTip("已取消批量删除","warning");
  137. });
  138. },
  139. del(id){
  140. messageConfirm("注意:删除后不可恢复","您确定要删除?").then(() => {
  141. doDelete("/api/club/delete/"+id,{}).then(resp => {
  142. if(resp.data.code === 200){
  143. messageTip("删除成功","success");
  144. this.reload();
  145. }
  146. else{
  147. messageTip("删除失败:"+resp.data.msg,"error");
  148. }
  149. });
  150. }).catch(() => {
  151. messageTip("已取消删除","warning");
  152. });
  153. },
  154. // 真正的http上传文件
  155. uploadFile(file){
  156. let fileObj = file.file;
  157. let formData = new FormData();
  158. formData.append('file',fileObj);
  159. doPost("/api/club/importExcel",formData).then(resp => {
  160. console.log(resp)
  161. if(resp.data.code === 200){
  162. messageTip("录入成功","success");
  163. this.$refs.uploadRef.clearFiles();
  164. this.reload();
  165. }
  166. else{
  167. messageTip("录入失败","error");
  168. }
  169. });
  170. },
  171. // 发起表单提交
  172. submitUpload(){
  173. this.$refs.uploadRef.submit();
  174. },
  175. // 点击提交Excel按钮触发
  176. importExcel(){
  177. this.importExcelDialogVisible = true;
  178. },
  179. // 自动传参
  180. toPage(current){
  181. // 把当前页作为current传递给获取数据方法,就可以实现分页查询了
  182. this.getData(current);
  183. },
  184. // 获取分页信息
  185. getData(current){
  186. //获取数据,查询用户列表数据
  187. doGet("api/clues",{
  188. // 当前查询第几页
  189. current : current
  190. }).then(resp => {
  191. if(resp.data.code === 200){
  192. this.clueList = resp.data.data.list;
  193. this.total = resp.data.data.total;
  194. this.pageSize = resp.data.data.pageSize;
  195. }
  196. else{
  197. messageTip("网络错误","error");
  198. }
  199. });
  200. },
  201. }
  202. }
  203. </script>
  204. <style scoped>
  205. .fileTip{
  206. padding-top: 3%;
  207. }
  208. </style>
<template>
  1. <el-button type="primary" class="btn">导入线索</el-button>
  2. <el-button type="success" class="btn" @click="importExcel()">导入线索(Excel)</el-button>
  3. <el-button type="danger" class="btn" @click="batchDel()">批量删除</el-button>
  4. <el-table
  5. :data="clueList"
  6. style="width: 100%"
  7. @selection-change="handleSelectionChange">
  8. <el-table-column type="selection" width="33%"/>
  9. <el-table-column type="index" label="序号" width="60%"/>
  10. <el-table-column property="ownerDO.name" label="负责人" width="120" />
  11. <el-table-column property="activityDO.name" label="所属活动"/>
  12. <el-table-column label="姓名">
  13. <template #default="scope">
  14. <a href="javascript:" @click="view(scope.row.id)">{{ scope.row.fullName }}</a>
  15. </template>
  16. </el-table-column>
  17. <el-table-column property="appellationDO.typeValue" label="称呼"/>
  18. <el-table-column property="phone" label="手机" width="120"/>
  19. <el-table-column property="weixin" label="微信" width="120"/>
  20. <el-table-column property="needLoanDO.typeValue" label="是否贷款"/>
  21. <el-table-column property="intentionStateDO.typeValue" label="意向状态"/>
  22. <el-table-column property="intentionProductDO.name" label="意向产品"/>
  23. <el-table-column property="stateDO.typeValue" label="线索状态"/>
  24. <el-table-column property="sourceDO.typeValue" label="线索来源"/>
  25. <el-table-column property="nextContactTime" label="下次联系时间" width="165"/>
  26. <el-table-column label="操作" width="230">
  27. <template #default="scope">
  28. <el-button type="primary" @click="view(scope.row.id)">详情</el-button>
  29. <el-button type="success" @click="edit(scope.row.id)">编辑</el-button>
  30. <el-button type="danger" @click="del(scope.row.id)">删除</el-button>
  31. </template>
  32. </el-table-column>
</el-table>
  1. <el-pagination
  2. background
  3. layout="prev, pager, next"
  4. :page-size="pageSize"
  5. :total="total"
  6. @prev-click="toPage"
  7. @next-click="toPage"
  8. @current-change="toPage"
  9. />
  10. </div>
<el-dialog v-model="importExcelDialogVisible" title="导入线索Excel" width="55%" center draggable>
  1. <el-upload
  2. ref="uploadRef"
  3. method="post"
  4. :http-request="uploadFile"
  5. :auto-upload="false"
  1. <template #trigger>
  2. <el-button type="primary">选择Excel文件</el-button>
  3. </template>
  4. 仅支持后缀名为.xls或.xlxs的文件
  5. <template #tip>
  6. <div class="fileTip">
  7. <div>重要提示:</div>
  8. <ul>
  9. <li>上传仅支持后缀名为.xls或.xlsx的文件;</li>
  10. <li>给定Excel文件的第一行将视为字段名;</li>
  11. <li>请确认您的文件大小不超过50MB;</li>
  12. <li>日期值以文本形式保存,必须符合yyyy-MM-dd格式;</li>
  13. <li>日期时间以文本形式保存,必须符合yyyy-MM-dd HH:mm:ss的格式;</li>
  14. </ul>
  15. </div>
  16. </template>
</el-upload>
  1. <template #footer>
  2. <span class="dialog-footer">
  3. <el-button @click="importExcelDialogVisible = false">关 闭</el-button>
  4. <el-button class="ml-3" type="success" @click="submitUpload">上 传</el-button>
  5. </span>
  6. </template>
</el-dialog> </template> <script> import { doGet, doPost, doDelete } from '../http/httpRequest.js'; import { messageTip, messageConfirm } from '../util/util.js'; export default { name : "clubView", inject : ["reload"], data(){ return { // 分页大小 pageSize : 0, // 总分页 total : 0, // 线索列表 clueList : [{ ownerDO : {}, activityDO : {}, appellationDO : {}, needLoanDO : {}, intentionStateDO : {}, intentionProductDO : {}, stateDO : {}, sourceDO : {} }], selectedIds : {}, // Excel弹出框控制 importExcelDialogVisible : false } }, mounted(){ this.getData(1); }, methods : { // 勾选或者取消勾选触发 handleSelectionChange(selectionItems){ this.selectedIds = []; // 将已经勾选的数据传给我们 selectionItems.forEach(data => { this.selectedIds.push(data.id); }); }, batchDel(){ if(!this.selectedIds.length){ messageTip("请选择要删除的数据","warning"); return; } messageConfirm("注意:删除后不可恢复","您确定要删除?").then(() => { let ids = this.selectedIds.join(","); doDelete("/api/club/batchDel",{ids : ids}).then(resp => { if(resp.data.code === 200){ messageTip("批量删除成功","success"); this.reload(); } else{ messageTip("批量删除失败:"+resp.data.msg,"error"); } }); }).catch(() => { messageTip("已取消批量删除","warning"); }); }, del(id){ messageConfirm("注意:删除后不可恢复","您确定要删除?").then(() => { doDelete("/api/club/delete/"+id,{}).then(resp => { if(resp.data.code === 200){ messageTip("删除成功","success"); this.reload(); } else{ messageTip("删除失败:"+resp.data.msg,"error"); } }); }).catch(() => { messageTip("已取消删除","warning"); }); }, // 真正的http上传文件 uploadFile(file){ let fileObj = file.file; let formData = new FormData(); formData.append('file',fileObj); doPost("/api/club/importExcel",formData).then(resp => { console.log(resp) if(resp.data.code === 200){ messageTip("录入成功","success"); this.$refs.uploadRef.clearFiles(); this.reload(); } else{ messageTip("录入失败","error"); } }); }, // 发起表单提交 submitUpload(){ this.$refs.uploadRef.submit(); }, // 点击提交Excel按钮触发 importExcel(){ this.importExcelDialogVisible = true; }, // 自动传参 toPage(current){ // 把当前页作为current传递给获取数据方法,就可以实现分页查询了 this.getData(current); }, // 获取分页信息 getData(current){ //获取数据,查询用户列表数据 doGet("api/clues",{ // 当前查询第几页 current : current }).then(resp => { if(resp.data.code === 200){ this.clueList = resp.data.data.list; this.total = resp.data.data.total; this.pageSize = resp.data.data.pageSize; } else{ messageTip("网络错误","error"); } }); }, } } </script> <style scoped> .fileTip{ padding-top: 3%; } </style>

本文转载自: https://blog.csdn.net/2201_75960169/article/details/136340428
版权归原作者 旧约Alatus 所有, 如有侵权,请联系我们删除。

“CRM项目前端复用封装好的代码实现删除线索和批量删除线索------CRM项目”的评论:

还没有评论