duplicatesProject.vue 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. <template>
  2. <div>
  3. <el-button size="mini" type="primary" @click="onShow">{{
  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. <div v-else-if="scope.column.columnname == 'projectname'">
  52. <span v-for="item in scope.column.data.projectname" :key="item.index">
  53. <span :style="{color:item.color}">{{item.text}}</span>
  54. </span>
  55. </div>
  56. <div v-else-if="scope.column.columnname == 'address'">
  57. <span :style="{color:scope.column.data.chars.address && scope.column.data.address.includes(scope.column.data.chars.address)?'red':'#666'}">{{scope.column.data.address || scope.column.data.province?scope.column.data.province+scope.column.data.city+scope.column.data.county+scope.column.data.address:'--'}}</span>
  58. </div>
  59. <p v-else>
  60. <span v-if="scope.column.data[scope.column.columnname]">
  61. <span :style="{color:scope.column.data.chars[scope.column.columnname] && scope.column.data[scope.column.columnname].includes(scope.column.data.chars[scope.column.columnname])?'red':'#666'}">
  62. {{scope.column.data[scope.column.columnname]}}
  63. </span>
  64. </span>
  65. <span v-else>
  66. --
  67. </span>
  68. </p>
  69. </template>
  70. </tableLayout>
  71. <div class="container normal-panel" style="text-align: right">
  72. <el-pagination
  73. background
  74. @size-change="handleSizeChange"
  75. @current-change="handleCurrentChange"
  76. :current-page="currentPage"
  77. :page-sizes="[20, 50, 100, 200]"
  78. :page-size="20"
  79. layout="total,sizes, prev, pager, next, jumper"
  80. :total="total"
  81. ></el-pagination>
  82. </div>
  83. </el-dialog>
  84. </div>
  85. </template>
  86. <script>
  87. export default {
  88. name: "duplicatesProject",
  89. props: ["data"],
  90. data() {
  91. return {
  92. dialogTableVisible: false,
  93. tablecols: [],
  94. list: [],
  95. total: 0,
  96. currentPage: 0,
  97. param: {
  98. id: 20221208184202,
  99. pageNumber: 1,
  100. pageSize: 999,
  101. content: {
  102. sa_projectid: "",
  103. projectname: "",
  104. address: "",
  105. },
  106. },
  107. fields1: [],
  108. fields2: [],
  109. fields3: [],
  110. };
  111. },
  112. methods: {
  113. onShow() {
  114. this.queryRule();
  115. // this.queryData()
  116. },
  117. async queryData() {
  118. this.fields1.forEach((item) => {
  119. this.param.content[item] = this.data[item] || "";
  120. });
  121. this.fields2.forEach((item) => {
  122. this.param.content[item] = this.data[item] || "";
  123. });
  124. this.fields3.forEach((item) => {
  125. this.param.content[item] = this.data[item] || "";
  126. });
  127. this.param.content.sa_projectid = this.data.sa_projectid;
  128. const res = await this.$api.requested(this.param);
  129. this.list = res.data;
  130. this.total = res.total
  131. this.tool.getCheckFontProject(res.data)
  132. this.currentPage = res.pageNumber
  133. this.dialogTableVisible = true;
  134. if (res.data.length !== 0) {
  135. this.tagData(this.$route.query.id);
  136. }
  137. },
  138. handleSizeChange(val) {
  139. // console.log(`每页 ${val} 条`);
  140. this.param.content.pageSize = val;
  141. this.queryData();
  142. },
  143. handleCurrentChange(val) {
  144. // console.log(`当前页: ${val}`);
  145. this.param.content.pageNumber = val;
  146. this.queryData();
  147. },
  148. /*查询规则*/
  149. async queryRule() {
  150. const res = await this.$api.requested({
  151. id: "20230410090502",
  152. content: {},
  153. });
  154. this.fields1 = res.data.projectcheckrule.fields1;
  155. this.fields2 = res.data.projectcheckrule.fields2;
  156. this.fields3 = res.data.projectcheckrule.fields3;
  157. this.queryData();
  158. },
  159. // 获取标签数据
  160. async tagData(id) {
  161. const res = await this.$api.requested({
  162. content: {
  163. ownertable: "sa_project",
  164. ownerid: this.$route.query.id,
  165. },
  166. id: 20220929085401,
  167. });
  168. var resTagData = [];
  169. resTagData = res.data.datatag;
  170. let flag = 0;
  171. for (var i = 0; i < res.data.datatag.length; i++) {
  172. if (res.data.datatag[i] === "疑似重复") {
  173. flag = 1;
  174. break;
  175. }
  176. }
  177. if (flag === 1) {
  178. this.setTag(id, resTagData);
  179. } else {
  180. resTagData.push("疑似重复");
  181. this.setTag(id, resTagData);
  182. }
  183. },
  184. async setTag(id, data) {
  185. const res = await this.$api.requested({
  186. id: 20220929090901,
  187. content: {
  188. ownertable: "sa_project",
  189. ownerid: id,
  190. datatag: data,
  191. },
  192. });
  193. },
  194. onClose() {
  195. this.$emit("dialogClose");
  196. },
  197. },
  198. created() {
  199. this.tablecols = this.tool.tabelCol(
  200. this.$route.name
  201. ).duplicatesProjectTable.tablecols;
  202. },
  203. };
  204. </script>
  205. <style scoped>
  206. /deep/.el-dialog__title {
  207. line-height: 20px;
  208. font-size: 16px;
  209. color: #303133;
  210. }
  211. </style>