duplicatesCustomer.vue 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. <template>
  2. <div>
  3. <el-button size="mini" type="primary" @click="queryRule">{{
  4. $t("查看重复")
  5. }}</el-button>
  6. <el-dialog
  7. :title="$t('重复客户')"
  8. :visible.sync="dialogTableVisible"
  9. append-to-body
  10. width="1000px"
  11. @close="onClose"
  12. >
  13. <tableLayout
  14. :layout="tablecols"
  15. :data="list"
  16. :opwidth="200"
  17. height="calc(100vh - 550px)"
  18. :width="true"
  19. :custom="true"
  20. >
  21. <template v-slot:customcol="scope">
  22. <div v-if="scope.column.columnname === 'tag'">
  23. <div
  24. v-for="item in scope.column.data.tag_sys"
  25. :key="item.index"
  26. style="float: left; margin-left: 5px; margin-bottom: 5px"
  27. >
  28. <el-tag color="#3874F6" size="mini" type="primary" effect="dark">
  29. <span>{{ $t(item) }}</span>
  30. </el-tag>
  31. </div>
  32. <div
  33. v-for="item in scope.column.data.tag"
  34. :key="item.index"
  35. style="float: left; margin-left: 5px; margin-bottom: 5px"
  36. >
  37. <el-tag color="#FA8C16" size="mini" type="warning" effect="dark">
  38. <span>{{ $t(item) }}</span>
  39. </el-tag>
  40. </div>
  41. </div>
  42. <div v-else-if="scope.column.columnname === 'leader'">
  43. <span>{{
  44. scope.column.data.leader
  45. ? scope.column.data.leader.length !== 0
  46. ? scope.column.data.leader[0].name
  47. : "--"
  48. : "--"
  49. }}</span>
  50. </div>
  51. <p v-else>
  52. <span v-if="scope.column.data[scope.column.columnname]">
  53. <span :style="{color:scope.column.data.chars[0][scope.column.columnname] && scope.column.data[scope.column.columnname].includes(scope.column.data.chars[0][scope.column.columnname])?'red':'#666'}">
  54. {{scope.column.data[scope.column.columnname]}}
  55. </span>
  56. </span>
  57. <span v-else>
  58. --
  59. </span>
  60. </p>
  61. </template>
  62. </tableLayout>
  63. <div class="container normal-panel" style="text-align: right">
  64. <el-pagination
  65. background
  66. @size-change="handleSizeChange"
  67. @current-change="handleCurrentChange"
  68. :current-page="currentPage"
  69. :page-sizes="[20, 50, 100, 200]"
  70. :page-size="20"
  71. layout="total,sizes, prev, pager, next, jumper"
  72. :total="total"
  73. ></el-pagination>
  74. </div>
  75. </el-dialog>
  76. </div>
  77. </template>
  78. <script>
  79. export default {
  80. name: "duplicatesCustomer",
  81. props: ["data"],
  82. data() {
  83. return {
  84. dialogTableVisible: false,
  85. list: [],
  86. tablecols: [],
  87. total: 0,
  88. currentPage: 0,
  89. param: {
  90. id: 20221208172002,
  91. pageNumber: 1,
  92. pageSize: 999,
  93. content: {
  94. sa_customersid: "",
  95. enterprisename: "",
  96. taxno: "",
  97. address: "",
  98. },
  99. },
  100. fields1: [],
  101. fields2: [],
  102. fields3: [],
  103. };
  104. },
  105. methods: {
  106. async queryData() {
  107. this.fields1.forEach((item) => {
  108. this.param.content[item] = this.data[item] || "";
  109. });
  110. this.fields2.forEach((item) => {
  111. this.param.content[item] = this.data[item] || "";
  112. });
  113. this.fields3.forEach((item) => {
  114. this.param.content[item] = this.data[item] || "";
  115. });
  116. this.param.content.sa_customersid = this.data.sa_customersid;
  117. // this.param.content.enterprisename = this.data.enterprisename
  118. // this.param.content.taxno = this.data.taxno
  119. // this.param.content.address = this.data.address
  120. const res = await this.$api.requested(this.param);
  121. this.list = res.data;
  122. this.total = res.total;
  123. this.currentPage = res.pageNumber;
  124. this.dialogTableVisible = true;
  125. if (res.data.length !== 0) {
  126. this.tagData(this.$route.query.id);
  127. }
  128. },
  129. handleSizeChange(val) {
  130. // console.log(`每页 ${val} 条`);
  131. this.param.content.pageSize = val;
  132. this.queryData();
  133. },
  134. handleCurrentChange(val) {
  135. // console.log(`当前页: ${val}`);
  136. this.param.content.pageNumber = val;
  137. this.queryData();
  138. },
  139. /*查询规则*/
  140. async queryRule() {
  141. const res = await this.$api.requested({
  142. id: "20230410090502",
  143. content: {},
  144. });
  145. this.fields1 = res.data.custcheckrule.fields1;
  146. this.fields2 = res.data.custcheckrule.fields2;
  147. this.fields3 = res.data.custcheckrule.fields3;
  148. this.queryData();
  149. },
  150. // 获取标签数据
  151. async tagData(id) {
  152. const res = await this.$api.requested({
  153. content: {
  154. ownertable: "sa_customers",
  155. ownerid: this.$route.query.id,
  156. },
  157. id: 20220929085401,
  158. });
  159. var resTagData = [];
  160. resTagData = res.data.datatag;
  161. let flag = 0;
  162. for (var i = 0; i < res.data.datatag.length; i++) {
  163. if (res.data.datatag[i] === "疑似重复") {
  164. flag = 1;
  165. break;
  166. }
  167. }
  168. if (flag === 1) {
  169. this.setTag(id, resTagData);
  170. } else {
  171. resTagData.push("疑似重复");
  172. this.setTag(id, resTagData);
  173. }
  174. },
  175. async setTag(id, data) {
  176. const res = await this.$api.requested({
  177. id: 20220929090901,
  178. content: {
  179. ownertable: "sa_customers",
  180. ownerid: id,
  181. datatag: data,
  182. },
  183. });
  184. },
  185. onClose() {
  186. this.dialogTableVisible = false;
  187. this.$emit("onSuccessTag");
  188. },
  189. },
  190. mounted() {},
  191. created() {
  192. this.tablecols = this.tool.tabelCol(
  193. this.$route.name
  194. ).duplicatesCustomerTable.tablecols;
  195. },
  196. };
  197. </script>
  198. <style scoped>
  199. /deep/.el-dialog__title {
  200. line-height: 20px;
  201. font-size: 16px;
  202. color: #303133;
  203. }
  204. </style>