editPlanEvaluate.vue 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323
  1. <template>
  2. <div class="rule-type">
  3. <DialogCom
  4. @colse="onHide"
  5. :title="`外包评价${isEvaluate == 1 ? '查看' : ''}`"
  6. :visible.sync="isShow"
  7. width="1500px"
  8. >
  9. <!-- :visible.sync="isShow" -->
  10. <div class="page-body">
  11. <el-form
  12. :model="formData"
  13. size="small"
  14. ref="form"
  15. label-position="right"
  16. label-width="130px"
  17. label-prefix=":"
  18. >
  19. <el-row>
  20. <el-col :span="8">
  21. <el-form-item label="外包评价名称:">
  22. {{ formData.evaluateName }}
  23. </el-form-item>
  24. </el-col>
  25. <el-col :span="8">
  26. <el-form-item label="评价机构:">
  27. {{ formData.orgName }}
  28. </el-form-item>
  29. </el-col>
  30. <el-col :span="8">
  31. <el-form-item label="评价计划时间:">
  32. {{ formData.startTime + "-" }}{{ formData.endTime }}
  33. </el-form-item>
  34. </el-col>
  35. </el-row>
  36. <el-row>
  37. <el-col :span="8">
  38. <el-form-item label="状态:">
  39. {{ formData.status | filterStatus }}
  40. </el-form-item>
  41. </el-col>
  42. <el-col :span="8">
  43. <el-form-item label="评价周期:">
  44. {{ formData.evaluateCycle }}
  45. </el-form-item>
  46. </el-col>
  47. </el-row>
  48. </el-form>
  49. <!-- tableData -->
  50. <div class="line_box">
  51. <div class="line"></div>
  52. <div class="titleEvaluate">
  53. {{ isEvaluate == 1 ? "评价记录" : "评价内容" }}
  54. </div>
  55. </div>
  56. <el-form v-if="isEvaluate == 0">
  57. <el-row v-for="(item, index) in tableData" :key="item.id">
  58. <el-col :span="24">
  59. <el-form-item
  60. class="formItemTitle"
  61. :label="`${index + 1}.${item.content}`"
  62. >
  63. </el-form-item>
  64. </el-col>
  65. <!-- 文本 -->
  66. <el-col :span="24" v-if="item.contentType == 1">
  67. <el-form-item label=" ">
  68. <el-input
  69. type="textarea"
  70. :rows="2"
  71. :disabled="isEvaluate == '1'"
  72. placeholder="请输入内容"
  73. v-model="item.score"
  74. >
  75. </el-input>
  76. </el-form-item>
  77. </el-col>
  78. <!-- 评分 -->
  79. <el-col :span="24" v-else>
  80. <el-form-item label=" ">
  81. <el-rate
  82. :max="10"
  83. v-model="item.score"
  84. text-color="#ff9900"
  85. show-score
  86. score-template="{value}星"
  87. ></el-rate>
  88. </el-form-item>
  89. </el-col>
  90. </el-row>
  91. </el-form>
  92. <div v-else>
  93. <el-form v-for="(item, index) in tableDataContentVOS" :key="item.id">
  94. <el-card class="box-card">
  95. <el-row>
  96. <el-col :span="12">
  97. <el-form-item label="评价时间"
  98. >{{ item.completeTime }}
  99. </el-form-item>
  100. </el-col>
  101. <el-col :span="12">
  102. <el-form-item label="评价人"
  103. >{{ item.evaluateBy }}
  104. </el-form-item>
  105. </el-col>
  106. </el-row>
  107. <el-row
  108. v-for="sonItem in item.coreEvaluateTaskContentList"
  109. :key="sonItem.code"
  110. >
  111. <el-col :span="24">
  112. <el-form-item
  113. class="formItemTitle"
  114. :label="`${sonItem.code}.${sonItem.content}`"
  115. >
  116. </el-form-item>
  117. </el-col>
  118. <!-- 文本 -->
  119. <el-col :span="24" v-if="sonItem.contentType == 1">
  120. <el-form-item label=" ">
  121. <span class="scoreText">
  122. {{ sonItem.score }}
  123. </span>
  124. </el-form-item>
  125. </el-col>
  126. <!-- 评分 -->
  127. <el-col :span="24" v-else>
  128. <el-form-item label=" ">
  129. <el-rate
  130. :max="10"
  131. v-model="sonItem.score"
  132. text-color="#ff9900"
  133. show-score
  134. score-template="{value}星"
  135. ></el-rate>
  136. </el-form-item>
  137. </el-col>
  138. </el-row>
  139. </el-card>
  140. </el-form>
  141. </div>
  142. </div>
  143. <div slot="footer" class="dialog-footer">
  144. <el-button type="primary" @click="onSubmit" v-if="isEvaluate == '0'"
  145. >确定</el-button
  146. >
  147. <el-button @click="onHide">取消</el-button>
  148. </div>
  149. </DialogCom>
  150. </div>
  151. </template>
  152. <script>
  153. import { mapGetters } from "vuex";
  154. import {
  155. getEvaluateById,
  156. editEvaluate,
  157. getevaluateByid,
  158. } from "@/api/core/evalulateTask.js";
  159. export default {
  160. data() {
  161. return {
  162. isEvaluate: "",
  163. tableData: [],
  164. tableDataContentVOS: [],
  165. id: null,
  166. isShow: false,
  167. formData: {},
  168. };
  169. },
  170. filters: {
  171. filterStatus(val) {
  172. switch (val) {
  173. case "0":
  174. return "待完成";
  175. break;
  176. case "1":
  177. return "进行中";
  178. break;
  179. case "2":
  180. return "已完成";
  181. break;
  182. case "3":
  183. return "已逾期";
  184. break;
  185. }
  186. },
  187. },
  188. computed: {
  189. ...mapGetters(["orgId", "orgName"]),
  190. },
  191. mounted() {},
  192. methods: {
  193. async show(id = "", isEvaluate) {
  194. this.id = id;
  195. this.tableData = [];
  196. this.tableDataContentVOS = [];
  197. this.isEvaluate = isEvaluate + "";
  198. // isEvaluate 1 查看 0 评价
  199. if (isEvaluate == 1) {
  200. await getevaluateByid(id).then((res) => {
  201. let { code, msg, data } = res;
  202. if (code == 200) {
  203. Object.assign(this.formData, data);
  204. this.tableDataContentVOS = data.coreEvaluateTaskUserContentVOS;
  205. this.tableDataContentVOS.forEach((item) => {
  206. item.coreEvaluateTaskContentList.forEach((i) => {
  207. if (i.contentType == 2) {
  208. i.score = +i.score;
  209. }
  210. });
  211. });
  212. console.log(this.tableDataContentVOS);
  213. delete this.formData.coreEvaluateTaskUserContentVOS;
  214. } else {
  215. this.$message.error(msg);
  216. }
  217. });
  218. } else {
  219. await getEvaluateById(id).then((res) => {
  220. let { code, msg, data } = res;
  221. if (code == 200) {
  222. Object.assign(this.formData, data);
  223. this.tableData = data.coreEvaluateContentList;
  224. delete this.formData.coreEvaluateContentList;
  225. } else {
  226. this.$message.error(msg);
  227. }
  228. });
  229. }
  230. this.isShow = true;
  231. },
  232. // 事件
  233. onHide() {
  234. this.$refs.form.resetFields();
  235. this.isShow = false;
  236. this.formData = {};
  237. this.tableData = [];
  238. },
  239. onSubmit() {
  240. console.log(this.tableData);
  241. let falg = false;
  242. this.tableData.forEach((item) => {
  243. if (!item.score) {
  244. falg = true;
  245. }
  246. });
  247. if (falg) {
  248. return this.$message.error("存在未评价的项,请检查!");
  249. }
  250. let obj = {
  251. id: this.formData.id,
  252. coreEvaluateTaskContentList: JSON.parse(JSON.stringify(this.tableData)),
  253. };
  254. obj.coreEvaluateTaskContentList.forEach((item) => {
  255. item.score = item.score + "";
  256. });
  257. editEvaluate(obj).then((res) => {
  258. let { code } = res;
  259. if (code == 200) {
  260. this.$emit("success");
  261. this.$message.success('评价成功')
  262. this.onHide();
  263. }
  264. });
  265. },
  266. },
  267. };
  268. </script>
  269. <style lang="scss" scoped>
  270. .brand_info {
  271. .el-form {
  272. width: 600px;
  273. padding-top: 40px;
  274. }
  275. }
  276. .line_box {
  277. display: flex;
  278. height: 20px;
  279. margin-bottom: 20px;
  280. .titleEvaluate {
  281. color: #008cd6;
  282. vertical-align: middle;
  283. }
  284. .line {
  285. height: 100%;
  286. width: 4px;
  287. margin-right: 10px;
  288. background-color: #008cd6;
  289. }
  290. }
  291. ::v-deep.formItemTitle {
  292. .el-form-item__label {
  293. font-size: 20px !important;
  294. color: black;
  295. }
  296. }
  297. .box-card {
  298. margin-bottom: 20px;
  299. .scoreText {
  300. font-size: 20px !important;
  301. }
  302. }
  303. .form-item-comment {
  304. font-size: 12px;
  305. color: #999;
  306. height: 10px;
  307. }
  308. </style>