index.vue 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. <template>
  2. <basic-container>
  3. <div class="search-content">
  4. <el-form :model="searchFrom" label-width="120px">
  5. <el-row>
  6. <el-col :span="6">
  7. <el-form-item label="年度">
  8. <el-date-picker clearable class="w100" v-model="searchFrom.year" type="year" placeholder="选择年" format="yyyy" value-format="yyyy"> </el-date-picker>
  9. </el-form-item>
  10. </el-col>
  11. <el-col :span="6">
  12. <el-form-item label="季度">
  13. <el-select v-model="searchFrom.quarter" placeholder="请选择服务类型" class="w100" clearable>
  14. <el-option label="第一季度" :value="1"></el-option>
  15. <el-option label="第二季度" :value="2"></el-option>
  16. <el-option label="第三季度" :value="3"></el-option>
  17. <el-option label="第四季度" :value="4"></el-option>
  18. </el-select>
  19. </el-form-item>
  20. </el-col>
  21. <el-col :span="6">
  22. <el-form-item label="代表提交时间">
  23. <el-date-picker class="w100" clearable v-model="searchFrom.createTime" type="date" placeholder="选择日期" format="yyyy-MM-dd" value-format="yyyy-MM-dd">
  24. </el-date-picker>
  25. </el-form-item>
  26. </el-col>
  27. <el-col :span="6">
  28. <el-form-item label="服务类型">
  29. <el-select v-model="searchFrom.taskTypeId" placeholder="请选择服务类型" class="w100" clearable>
  30. <el-option :label="item.name" :value="item.id" v-for="item in taskTypeAvailArr" :key="item.id"></el-option>
  31. </el-select>
  32. </el-form-item>
  33. </el-col>
  34. </el-row>
  35. <el-row>
  36. <el-col :span="6">
  37. <el-form-item label="服务包所属省份">
  38. <el-select v-model="searchFrom.provAbbr" placeholder="请选择省份" class="w100" clearable>
  39. <el-option v-for="province in abbreviationsProvincesList" :key="province" :label="province" :value="province" />
  40. </el-select>
  41. </el-form-item>
  42. </el-col>
  43. <el-col :span="6">
  44. <el-form-item label="生产企业">
  45. <el-select v-model="searchFrom.mahName" placeholder="请选择省份" class="w100" clearable @change="">
  46. <el-option v-for="item in mahName" :key="mahNameArr" :label="item.label" :value="item.value" />
  47. </el-select>
  48. </el-form-item>
  49. </el-col>
  50. <el-col :span="6">
  51. <el-button type="success" @click="clickBtn">搜索</el-button>
  52. </el-col>
  53. </el-row>
  54. </el-form>
  55. </div>
  56. <vxe-table border allAlign="center" show-overflow highlight-hover-row height="1000" :loading="tableLoading" :data="tableData" :scroll-y="{ enabled: false }">
  57. <vxe-table-column type="seq" title="序号" width="100"></vxe-table-column>
  58. <vxe-table-column field="taskNumber" title="服务编号"></vxe-table-column>
  59. <vxe-table-column field="pkgName" title="执行包名称"></vxe-table-column>
  60. <vxe-table-column field="taskTypeName" title="服务类型" width="200"></vxe-table-column>
  61. <vxe-table-column field="taskScore" title="服务分值" width="100"></vxe-table-column>
  62. <vxe-table-column field="salesName" title="推广员姓名" width="150"></vxe-table-column>
  63. <vxe-table-column field="createTime" title="服务提交时间"></vxe-table-column>
  64. <vxe-table-column field="taskStatusName" title="审核状态" width="100"></vxe-table-column>
  65. <vxe-table-column field="entName" title="服务提供商"></vxe-table-column>
  66. <vxe-table-column field="skuName" title="服务产品"></vxe-table-column>
  67. <vxe-table-column field="mahName" title="所属生产企业"></vxe-table-column>
  68. <vxe-table-column field="provAbbr" title="所属省份"></vxe-table-column>
  69. </vxe-table>
  70. <vxe-pager
  71. :current-page.sync="page.currentPage"
  72. :page-size.sync="page.pageSize"
  73. :total="page.total"
  74. :page-sizes="page.pageSizes"
  75. @page-change="pageChange"
  76. :layouts="['PrevJump', 'PrevPage', 'JumpNumber', 'NextPage', 'NextJump', 'Sizes', 'FullJump', 'Total']"
  77. >
  78. </vxe-pager>
  79. </basic-container>
  80. </template>
  81. <script>
  82. import { getTaskV2PageApi, getTaskTypeAvailApi } from '@/api/serviceManagement/servicesToBeReviewed/index.js';
  83. import { tableOptin } from './index.js';
  84. import { getDictType } from '@/api/common';
  85. import abbreviationsProvinces from '@/const/abbreviationsProvinces.js';
  86. export default {
  87. data() {
  88. return {
  89. tableOptin,
  90. tableData: [],
  91. tableLoading: false,
  92. taskStatusArr: [],
  93. taskTypeAvailArr: [],
  94. mahNameArr: [],
  95. abbreviationsProvincesList: abbreviationsProvinces,
  96. searchFrom: {
  97. year: '',
  98. taskTypeId: '',
  99. quarter: '',
  100. createTime: '',
  101. provAbbr: '',
  102. mahName: ''
  103. },
  104. page: {
  105. pageSizes: [10, 50, 100, 300, 500],
  106. total: 0, // 总页数
  107. currentPage: 1, // 当前页数
  108. pageSize: 300 // 每页显示多少条
  109. }
  110. };
  111. },
  112. async created() {
  113. await this.getDict();
  114. this.getList();
  115. },
  116. methods: {
  117. getDict() {
  118. getDictType({ type: 'task_status' }).then((res) => {
  119. this.taskStatusArr = res.data.data;
  120. });
  121. getDictType({ type: 'mah_name' }).then((res) => {
  122. this.mahNameArr = res.data.data;
  123. });
  124. getTaskTypeAvailApi().then((res) => {
  125. this.taskTypeAvailArr = res.data.data;
  126. });
  127. },
  128. async getList() {
  129. this.tableLoading = true;
  130. const obj = Object.assign(
  131. {
  132. current: this.page.currentPage,
  133. size: this.page.pageSize
  134. },
  135. {
  136. nodeId: 1,
  137. year: 2024,
  138. quarter: 4
  139. },
  140. this.searchFrom
  141. );
  142. const res = await getTaskV2PageApi(obj);
  143. this.tableLoading = false;
  144. if (res.data.code === 0) {
  145. this.tableData = res.data.data.records;
  146. this.tableData.forEach((item) => {
  147. const currA = this.taskTypeAvailArr.find((itn) => itn.id === item.taskTypeId);
  148. const currB = this.taskStatusArr.find((itn) => itn.value === item.taskStatus);
  149. item.taskTypeName = currA?.name ?? '';
  150. item.taskStatusName = currB?.label ?? '';
  151. });
  152. this.page.total = res.data.data.total;
  153. }
  154. },
  155. clickBtn() {
  156. this.tableData = [];
  157. this.page.currentPage = 1;
  158. this.getList();
  159. },
  160. pageChange(obj) {
  161. console.log('obj', obj);
  162. this.page.currentPage = obj.currentPage;
  163. this.page.pageSize = obj.pageSize;
  164. this.getList();
  165. }
  166. }
  167. };
  168. </script>
  169. <style lang="scss" scoped></style>