index.vue 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
  1. <template>
  2. <div class="app-container">
  3. <el-row :gutter="10">
  4. <el-col :span="4" :xs="24">
  5. <org-tree
  6. v-model="queryParams.orgId"
  7. @defaultKey="getDefaultKey"
  8. @checkChange="checkChange"
  9. @click="clickTreeNode"
  10. ></org-tree>
  11. </el-col>
  12. <el-col :span="20" :xs="24">
  13. <!--用户数据-->
  14. <div class="main-right-box">
  15. <!-- 搜索条件 -->
  16. <div class="main-search-box">
  17. <!-- 搜索条件 -->
  18. <el-form
  19. :model="queryParams"
  20. ref="queryForm"
  21. size="small"
  22. :inline="true"
  23. v-show="showSearch"
  24. label-width="100px"
  25. >
  26. <el-form-item label="外包评价名称" prop="evaluateName">
  27. <el-input
  28. :maxlength="20"
  29. v-model="queryParams.evaluateName"
  30. placeholder="请输入外包评价名称"
  31. clearable
  32. @keyup.enter.native="handleQuery"
  33. />
  34. </el-form-item>
  35. <el-form-item label="状态" prop="status">
  36. <el-select
  37. v-model="queryParams.status"
  38. placeholder="请选择状态"
  39. clearable
  40. >
  41. <el-option
  42. v-for="dict in dict.type.evaluate_task_status"
  43. :key="dict.value"
  44. :label="dict.label"
  45. :value="dict.value"
  46. />
  47. </el-select>
  48. </el-form-item>
  49. <el-form-item>
  50. <el-form-item prop="roleId" label="计划时间">
  51. <el-date-picker
  52. v-model="queryParams.dataTime"
  53. type="daterange"
  54. range-separator="至"
  55. start-placeholder="开始日期"
  56. end-placeholder="结束日期"
  57. format="yyyy-MM-DD"
  58. value-format="yyyy-MM-DD"
  59. >
  60. </el-date-picker>
  61. </el-form-item>
  62. <el-button
  63. type="primary"
  64. icon="el-icon-search"
  65. size="mini"
  66. @click="handleQuery"
  67. >搜索</el-button
  68. >
  69. <el-button
  70. icon="el-icon-refresh"
  71. size="mini"
  72. @click="resetQuery"
  73. >重置</el-button
  74. >
  75. </el-form-item>
  76. </el-form>
  77. </div>
  78. <!--用户数据-->
  79. <el-table
  80. border
  81. height="650"
  82. size="small"
  83. v-loading="loading"
  84. :data="dataList"
  85. align="center"
  86. fixed
  87. @selection-change="handleSelectionChange"
  88. >
  89. <el-table-column
  90. label="序号"
  91. type="index"
  92. width="100"
  93. ></el-table-column>
  94. <el-table-column label="评价机构" prop="orgName" />
  95. <el-table-column label="评价角色" prop="roleName" />
  96. <el-table-column label="外包评价名称" prop="evaluateName" />
  97. <el-table-column label="计划开始时间" prop="startTime" />
  98. <el-table-column label="计划结束时间" prop="endTime" />
  99. <el-table-column label="评价人" prop="evaluateBy" />
  100. <el-table-column label="评价时间" prop="evaluateName" />
  101. <el-table-column
  102. label="状态"
  103. prop="status"
  104. :formatter="statusChange"
  105. />
  106. <el-table-column
  107. label="操作"
  108. width="180"
  109. fixed="right"
  110. class-name="small-padding fixed-width"
  111. >
  112. <template slot-scope="{ row }">
  113. <el-button
  114. size="mini"
  115. v-if="isEvaluateHandler(row)"
  116. @click="evaluateHandler(row)"
  117. type="text"
  118. icon="el-icon-plus"
  119. >评价</el-button
  120. >
  121. <span
  122. v-else
  123. style="display: inline-block; width: 70px; height: 20px"
  124. ></span>
  125. <el-button
  126. size="mini"
  127. @click="editHandler(row)"
  128. type="text"
  129. class="el-icon-info"
  130. >详情</el-button
  131. >
  132. </template>
  133. </el-table-column>
  134. </el-table>
  135. <pagination
  136. v-show="total > 0"
  137. :total="total"
  138. :page.sync="queryParams.pageNum"
  139. :limit.sync="queryParams.pageSize"
  140. @pagination="getList"
  141. />
  142. </div>
  143. </el-col>
  144. </el-row>
  145. <editEvaluate ref="Evaluate" @success="getList()"></editEvaluate>
  146. </div>
  147. </template>
  148. <script>
  149. import { mapGetters } from "vuex";
  150. import { getEvaluatePage } from "@/api/core/evalulateTask.js";
  151. import OrgTree from "@/components/orgTree";
  152. import editEvaluate from "./editPlanEvaluate.vue";
  153. export default {
  154. name: "SocWebIndex",
  155. dicts: ["sys_org_type", "evaluate_task_status"],
  156. components: {
  157. OrgTree,
  158. editEvaluate,
  159. },
  160. data() {
  161. return {
  162. loading: false,
  163. queryParams: {
  164. orgId: null,
  165. checkSub: true,
  166. status: "",
  167. dataTime: [],
  168. evaluateName: "",
  169. pageNum: 1,
  170. pageSize: 10,
  171. },
  172. // 显示搜索条件
  173. showSearch: true,
  174. total: 0,
  175. dataList: [],
  176. };
  177. },
  178. created() {},
  179. mounted() {},
  180. computed: {
  181. ...mapGetters(["orgId", "roleList"]),
  182. },
  183. methods: {
  184. statusChange(row) {
  185. switch (row.status) {
  186. case "0":
  187. return "待完成";
  188. break;
  189. case "1":
  190. return "进行中";
  191. break;
  192. case "2":
  193. return "已完成";
  194. break;
  195. case "3":
  196. return "已超期";
  197. break;
  198. }
  199. },
  200. //获取列表
  201. getList() {
  202. this.loading = true;
  203. let obj = JSON.parse(JSON.stringify(this.queryParams));
  204. if (this.queryParams.dataTime.length > 0) {
  205. obj.startTime = this.queryParams.dataTime[0];
  206. obj.endTime = this.queryParams.dataTime[1];
  207. }
  208. delete obj.dataTime;
  209. getEvaluatePage(obj).then((res) => {
  210. this.dataList = res?.rows || [];
  211. this.total = res?.total || [];
  212. this.loading = false;
  213. });
  214. },
  215. // 多选框选中数据
  216. handleSelectionChange(selection) {},
  217. editHandler(row) {
  218. this.$refs.Evaluate.show(row.id, 1);
  219. },
  220. //判断是否能评价
  221. isEvaluateHandler(row) {
  222. let falg = false;
  223. row.roleName?.split(",").forEach((item) => {
  224. this.roleList.forEach((i) => {
  225. if (i.roleName == item) {
  226. falg = true;
  227. }
  228. });
  229. });
  230. return falg;
  231. // row
  232. },
  233. evaluateHandler(row) {
  234. this.$refs.Evaluate.show(row.id, 0);
  235. },
  236. //单选框状态改变
  237. checkChange(state) {
  238. this.queryParams.checkSub = state;
  239. this.getList();
  240. },
  241. // 节点单击事件
  242. clickTreeNode(data) {
  243. this.queryParams.orgId = data.id;
  244. this.getList();
  245. },
  246. cleanExecOrgList() {
  247. this.execOrgIds = null;
  248. this.queryParams.execOrgList = [];
  249. },
  250. getDefaultKey(key) {
  251. this.queryParams.orgId = key;
  252. this.getList();
  253. },
  254. /** 搜索按钮操作 */
  255. handleQuery() {
  256. this.queryParams.pageNum = 1;
  257. this.getList();
  258. },
  259. /** 重置按钮操作 */
  260. resetQuery() {
  261. this.resetForm("queryForm");
  262. this.queryParams.onlyManager = false;
  263. this.handleQuery();
  264. },
  265. },
  266. };
  267. </script>
  268. <style lang="scss" scoped></style>