index.vue 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344
  1. <template>
  2. <div class="app-container">
  3. <!--用户数据-->
  4. <el-col>
  5. <!-- 搜索条件 -->
  6. <div class="main-search-box">
  7. <el-form
  8. :model="queryParams"
  9. ref="queryForm"
  10. size="small"
  11. :inline="true"
  12. v-show="showSearch"
  13. >
  14. <el-form-item label="机构类型">
  15. <el-select
  16. @change="cleanExecOrgList"
  17. prop="orgType"
  18. label="机构类型"
  19. v-model="queryParams.orgType"
  20. placeholder="请选择机构类型"
  21. clearable
  22. >
  23. <el-option
  24. v-for="item in dict.type.sys_org_type"
  25. :key="item.value"
  26. :label="item.label"
  27. :value="item.value"
  28. >
  29. </el-option>
  30. </el-select>
  31. </el-form-item>
  32. <el-form-item label="指标分类">
  33. <el-select
  34. v-model="queryParams.typeCode"
  35. clearable
  36. placeholder="请选择指标分类"
  37. @change="changeTargetList"
  38. >
  39. <el-option
  40. v-for="item in targetList"
  41. :key="item.id"
  42. :label="item.name"
  43. :value="item.code"
  44. >
  45. </el-option>
  46. </el-select>
  47. </el-form-item>
  48. <el-form-item label="指标项目">
  49. <el-form-item>
  50. <el-select
  51. v-model="queryParams.projectCode"
  52. placeholder="请选择指标项目"
  53. clearable
  54. @change="changeTargetListChild"
  55. >
  56. <el-option
  57. v-for="item in targetListChild"
  58. :key="item.id"
  59. :label="item.name"
  60. :value="item.code"
  61. />
  62. </el-select>
  63. </el-form-item>
  64. </el-form-item>
  65. <el-form-item label="指标要点">
  66. <el-form-item>
  67. <el-select
  68. v-model="queryParams.pointCode"
  69. placeholder="请选择指标要点"
  70. clearable
  71. >
  72. <el-option
  73. v-for="item in targetListGrandson"
  74. :key="item.id"
  75. :label="item.name"
  76. :value="item.code"
  77. />
  78. </el-select>
  79. </el-form-item>
  80. </el-form-item>
  81. </el-form>
  82. <!-- 按纽 -->
  83. <el-row :gutter="10" class="mb8">
  84. <el-col :span="1.5">
  85. <el-button
  86. type="primary"
  87. icon="el-icon-search"
  88. size="mini"
  89. @click="handleQuery"
  90. >搜索</el-button
  91. >
  92. <el-button icon="el-icon-refresh" type="primary" size="mini" @click="resetQuery"
  93. >重置</el-button
  94. >
  95. <el-button
  96. type="primary"
  97. icon="el-icon-plus"
  98. size="mini"
  99. @click="handleAdd"
  100. v-hasPermi="['system:user:add']"
  101. >新增</el-button
  102. >
  103. </el-col>
  104. </el-row>
  105. </div>
  106. <el-table
  107. border
  108. height="650"
  109. size="small"
  110. v-loading="loading"
  111. :data="dataList"
  112. align="center"
  113. fixed
  114. @selection-change="handleSelectionChange"
  115. >
  116. <el-table-column
  117. label="序号"
  118. type="index"
  119. width="100"
  120. ></el-table-column>
  121. <el-table-column label="机构类型" prop="orgTypeText" />
  122. <el-table-column label="指标分类" prop="typeCodeText" />
  123. <el-table-column label="指标项目" prop="projectCodeText" />
  124. <el-table-column label="指标要点" prop="pointCodeText" />
  125. <el-table-column
  126. label="扣分方式"
  127. prop="evaluateCycle"
  128. :formatter="formatterScore"
  129. />
  130. <el-table-column label="分值" prop="score" />
  131. <el-table-column
  132. label="操作"
  133. width="180"
  134. fixed="right"
  135. class-name="small-padding fixed-width"
  136. >
  137. <template slot-scope="{ row }">
  138. <el-button
  139. size="mini"
  140. @click="editHandler(row)"
  141. type="text"
  142. class="el-icon-edit-outline"
  143. >编辑</el-button
  144. ><el-button
  145. size="mini"
  146. @click="deleteHandler(row)"
  147. type="text"
  148. class="el-icon-delete"
  149. >删除</el-button
  150. >
  151. </template>
  152. </el-table-column>
  153. </el-table>
  154. <pagination
  155. v-show="total > 0"
  156. :total="total"
  157. :page.sync="queryParams.pageNum"
  158. :limit.sync="queryParams.pageSize"
  159. @pagination="getList"
  160. />
  161. </el-col>
  162. <editEvaluate ref="Evaluate" :targetList="targetList" @success="getList()"></editEvaluate>
  163. </div>
  164. </template>
  165. <script>
  166. import { mapGetters } from "vuex";
  167. import { findAllRole } from "@/api/system/role";
  168. import { list, getTargetList ,delelteEvaluate} from "@/api/evaluateRule/rule.js";
  169. import OrgTree from "@/components/orgTree";
  170. import { toTree } from "@/api/tool/tree.js";
  171. import editEvaluate from "./editEvaluationRuleDialog.vue";
  172. import {targetChange} from './targetChangeMixins.js'
  173. export default {
  174. name: "SocWebIndex",
  175. dicts: ["sys_org_type", "plan_status"],
  176. mixins:[targetChange],
  177. components: {
  178. OrgTree,
  179. editEvaluate,
  180. },
  181. data() {
  182. const { params, query } = this.$route;
  183. return {
  184. targetList: [],
  185. targetListChild: [],
  186. targetListGrandson: [],
  187. loading: false,
  188. selectedValues: [],
  189. planRoles: [],
  190. queryParams: {
  191. orgType: null,
  192. typeCode: null,
  193. projectCode: null,
  194. pointCode: null,
  195. pageNum: 1,
  196. pageSize: 10,
  197. },
  198. // 显示搜索条件
  199. showSearch: true,
  200. total: 0,
  201. dataList: [],
  202. };
  203. },
  204. created() {
  205. this.getList();
  206. this.getTargetListHandler();
  207. },
  208. mounted() {},
  209. computed: {
  210. ...mapGetters(["orgId"]),
  211. },
  212. methods: {
  213. formatterScore({ deductionType }) {
  214. switch (deductionType) {
  215. case 1:
  216. return "直接扣分";
  217. break;
  218. case 2:
  219. return "最高扣分";
  220. break;
  221. default:
  222. break;
  223. }
  224. },
  225. //获取指标列表
  226. getTargetListHandler() {
  227. getTargetList().then((res) => {
  228. let { msg, code, rows } = res;
  229. if (code == 200) {
  230. this.targetList = toTree(rows, {
  231. id: "code",
  232. children: "children",
  233. pid: "parentCode",
  234. });
  235. }
  236. });
  237. },
  238. //获取列表
  239. getList() {
  240. this.loading = true;
  241. // this.queryParams.orgId=this.orgId
  242. list(this.queryParams).then((res) => {
  243. this.dataList = res?.rows || [];
  244. this.total = res?.total || [];
  245. this.loading = false;
  246. });
  247. },
  248. // 多选框选中数据
  249. handleSelectionChange(selection) {},
  250. /** 新增按钮操作 */
  251. handleAdd() {
  252. this.$refs.Evaluate.show();
  253. },
  254. editHandler(row) {
  255. this.$refs.Evaluate.show(row.id);
  256. },
  257. deleteHandler(row) {
  258. this.$modal
  259. .confirm("是否确认删除?")
  260. .then(function () {})
  261. .then(() => {
  262. delelteEvaluate(row.id).then((res) => {
  263. let { code, msg } = res;
  264. if (code == 200) {
  265. this.getList();
  266. this.$modal.msgSuccess("删除成功");
  267. } else {
  268. this.$modal.msgSuccess(msg);
  269. }
  270. });
  271. });
  272. },
  273. //单选框状态改变
  274. checkChange(state) {
  275. this.queryParams.checkSub = state;
  276. this.getList();
  277. },
  278. // 节点单击事件
  279. clickTreeNode(data) {
  280. this.queryParams.orgId = data.id;
  281. this.getList();
  282. },
  283. getRolesByOrg() {
  284. let params = {
  285. orgType: null,
  286. };
  287. findAllRole(params).then((res) => {
  288. this.planRoles = res.data;
  289. });
  290. },
  291. cleanExecOrgList() {
  292. this.execOrgIds = null;
  293. this.queryParams.execOrgList = [];
  294. },
  295. handleRolesChange(val) {
  296. this.selectedValues = val.toString().split(",");
  297. },
  298. getDefaultKey(key) {
  299. this.queryParams.orgId = key;
  300. this.getList();
  301. },
  302. /** 搜索按钮操作 */
  303. handleQuery() {
  304. this.queryParams.pageNum = 1;
  305. this.getList();
  306. },
  307. /** 重置按钮操作 */
  308. resetQuery() {
  309. this.queryParams = {
  310. orgType: null,
  311. typeCode: null,
  312. projectCode: null,
  313. pointCode: null,
  314. pageNum: 1,
  315. pageSize: 10,
  316. };
  317. this.getList();
  318. },
  319. //树形数据点击事件
  320. handleNodeClick() {},
  321. },
  322. };
  323. </script>
  324. <style lang="scss" scoped></style>