index.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450
  1. <template>
  2. <div>
  3. <div class="d-flex flex-between pt7">
  4. <div>
  5. <el-button class="" type="primary" @click="exportAll">导出</el-button>
  6. </div>
  7. <el-form :inline="true">
  8. <el-form-item label="">
  9. <el-select
  10. v-model="firstForm.grade"
  11. placeholder="请选择年级"
  12. clearable
  13. @change="getListData"
  14. >
  15. <el-option
  16. v-for="item in gradeList"
  17. :key="item.grade_id"
  18. :label="item.grade_name"
  19. :value="item.grade_name"
  20. ></el-option>
  21. </el-select>
  22. </el-form-item>
  23. <el-form-item label="">
  24. <el-select
  25. v-model="firstForm.class"
  26. placeholder="请选择班级"
  27. clearable
  28. @change="getListData"
  29. >
  30. <el-option
  31. v-for="item in classList"
  32. :label="item.class_name"
  33. :value="item.class_name"
  34. ></el-option>
  35. </el-select>
  36. </el-form-item>
  37. <el-form-item label="">
  38. <el-select
  39. placeholder="请选择优胜班级"
  40. v-model="xdbs_ysbj"
  41. clearable
  42. @change="getListData"
  43. >
  44. <el-option
  45. v-for="item in ysbjList"
  46. :label="item.v"
  47. :value="item.n"
  48. ></el-option>
  49. </el-select>
  50. </el-form-item>
  51. <el-form-item class="mr10" label="">
  52. <el-date-picker
  53. v-model="firstForm.time"
  54. clearable
  55. @change="getTime"
  56. type="daterange"
  57. value-format="yyyy-MM-dd"
  58. range-separator="至"
  59. start-placeholder="开始日期"
  60. end-placeholder="结束日期"
  61. >
  62. </el-date-picker>
  63. </el-form-item>
  64. <!-- <el-form-item class="mr10" label="时间:">
  65. <el-date-picker v-model="firstForm.time" clearable @change="getTime" type="daterange" value-format="yyyy-MM-dd" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期">
  66. </el-date-picker>
  67. </el-form-item> -->
  68. <!-- <el-form-item prop="keyword">
  69. <el-input
  70. placeholder="请输入分值"
  71. v-model="keyword"
  72. clearable
  73. @clear="getListData"
  74. size="small"
  75. ></el-input>
  76. </el-form-item>
  77. <el-form-item prop="keyword">
  78. <el-input
  79. placeholder="请输入分值"
  80. v-model="keyword"
  81. clearable
  82. @clear="getListData"
  83. size="small"
  84. ></el-input>
  85. </el-form-item> -->
  86. <el-button type="primary" class="ml5" @click="getListData"
  87. >搜索</el-button
  88. >
  89. <!-- <el-button type="primary" class="ml5" @click="clearData">清空</el-button> -->
  90. </el-form>
  91. </div>
  92. <!-- <div class="big">
  93. <div class="small"><span class="ml-20px">优胜班级个数:</span>10{{num}}个</div>
  94. </div> -->
  95. <el-table
  96. @selection-change="handleSelectionChange"
  97. :data="tableData"
  98. tooltip-effect="dark"
  99. v-loading="loading"
  100. style="width: 100%"
  101. >
  102. <el-table-column type="selection" align="center" width="55">
  103. </el-table-column>
  104. <el-table-column label="年级" prop="grade_name" width="">
  105. </el-table-column>
  106. <el-table-column label="班级" prop="class_name" width="">
  107. </el-table-column>
  108. <el-table-column label="时间" prop="xdbs_sj" width="200">
  109. </el-table-column>
  110. <el-table-column
  111. label="常规分值"
  112. prop="xdbs_cgxmfz"
  113. align="center"
  114. width=""
  115. >
  116. </el-table-column>
  117. <el-table-column
  118. label="卫生分值"
  119. prop="xdbs_wsxmfz"
  120. align="center"
  121. width=""
  122. >
  123. </el-table-column>
  124. <el-table-column label="总分值" prop="xdbs_sjzdf" align="center" width="">
  125. </el-table-column>
  126. <el-table-column label="操作" width="300">
  127. <template slot-scope="scope">
  128. <el-button
  129. type="text"
  130. class="btn"
  131. v-if="scope.row.xdbs_hqbj_option_k == 0"
  132. @click="hqbjSet(scope.row.xdbb_id)"
  133. >设为红旗班级</el-button
  134. >
  135. <el-button
  136. type="text"
  137. v-else
  138. class="btn"
  139. style="color: #a0a0a0"
  140. disabled
  141. >设为红旗班级</el-button
  142. >
  143. <el-button
  144. type="text"
  145. class="btn"
  146. v-if="scope.row.xdbs_ysbj_option_k == 0"
  147. @click="ysbjSet(scope.row.xdbb_id)"
  148. >设为优胜班级</el-button
  149. >
  150. <el-button
  151. type="text"
  152. v-else
  153. class="btn"
  154. style="color: #a0a0a0"
  155. disabled
  156. >设为优胜班级</el-button
  157. >
  158. <el-button type="text" @click="rate(scope.row)">总评 </el-button>
  159. </template>
  160. </el-table-column>
  161. </el-table>
  162. <footer
  163. class="flex-item-none"
  164. style="display: flex; justify-content: flex-end; margin-top: 30px"
  165. >
  166. <el-pagination
  167. background
  168. layout="total,prev, pager, next"
  169. :page-size="limit"
  170. :total="total"
  171. :current-page.sync="cur_page"
  172. @current-change="handleCurrentChange"
  173. ></el-pagination>
  174. </footer>
  175. <el-dialog
  176. title="总评"
  177. :visible.sync="commentDialogVisible"
  178. width="550px"
  179. v-loading="loading"
  180. >
  181. <el-form
  182. :model="commentForm"
  183. ref="commentForm"
  184. :rules="rules"
  185. label-width="80px"
  186. >
  187. <el-form-item label="班级总评" prop="xdbs_zp">
  188. <el-input
  189. type="textarea"
  190. :rows="5"
  191. placeholder="请输入总评"
  192. v-model="commentForm.xdbs_zp"
  193. >
  194. </el-input>
  195. </el-form-item>
  196. </el-form>
  197. <div slot="footer">
  198. <el-button @click="commentDialogVisible = false">取 消</el-button>
  199. <el-button type="primary" @click="formSubmit('commentForm')"
  200. >确 定</el-button
  201. >
  202. </div>
  203. </el-dialog>
  204. </div>
  205. </template>
  206. <script>
  207. import { bjpb_list, bjpb_edit, grade_search, class_search } from "./api";
  208. import { useUserStore } from "@/stores/user";
  209. const { token } = useUserStore();
  210. export default {
  211. name: "index",
  212. data() {
  213. return {
  214. limit: 10,
  215. total: 12,
  216. cur_page: 1,
  217. keyword: "",
  218. grade_name: "",
  219. class_name: "",
  220. grade_id: "",
  221. class_id: "",
  222. xdbs_sj: "",
  223. xdbs_ysbj: "",
  224. tableData: [],
  225. gradeList: [],
  226. classList: [],
  227. firstForm: {
  228. grade: "",
  229. class: "",
  230. time: [],
  231. },
  232. num: "0",
  233. loading: false,
  234. commentForm: {
  235. xdbs_zp: "",
  236. },
  237. xdbb_id: "",
  238. commentDialogVisible: false,
  239. multipleSelection1: [],
  240. rules: {
  241. xdbs_zp: [{ required: true, message: "请输入总评", trigger: "blur" }],
  242. },
  243. ysbjList: [
  244. {
  245. v: "是",
  246. n: "2",
  247. },
  248. {
  249. v: "否",
  250. n: "0",
  251. },
  252. ],
  253. };
  254. },
  255. methods: {
  256. handleCurrentChange(val) {
  257. this.cur_page = val;
  258. this.getListData();
  259. },
  260. getListData() {
  261. this.loading = true;
  262. let data = {
  263. page: this.cur_page,
  264. limit: this.limit,
  265. grade_name: this.firstForm.grade,
  266. class_name: this.firstForm.class,
  267. xdbs_sj: this.xdbs_sj,
  268. xdbs_ysbj: this.xdbs_ysbj,
  269. };
  270. if (this.firstForm.time.length > 0) {
  271. data.xdbs_sj = this.firstForm.time[0] + " - " + this.firstForm.time[1];
  272. } else {
  273. data.xdbs_sj = "";
  274. }
  275. bjpb_list(data).then((res) => {
  276. this.loading = false;
  277. this.tableData = res.data.page_data;
  278. this.cur_page = Number(res.data.page_now);
  279. this.total = Number(res.data.total_rows);
  280. // for (let i = 0; i < this.tableData.length; i++) {
  281. // console.log(this.tableData[i].xdbs_ysbj, 111);
  282. // if (this.tableData[i].xdbs_ysbj == "是") {
  283. // this.num++
  284. // }
  285. // }
  286. });
  287. },
  288. gradeListData() {
  289. this.loading = true;
  290. let data = {};
  291. grade_search(data).then((res) => {
  292. this.loading = false;
  293. this.gradeList = res.data.page_data;
  294. });
  295. },
  296. classListData() {
  297. this.loading = true;
  298. let data = {};
  299. class_search(data).then((res) => {
  300. this.loading = false;
  301. this.classList = res.data.page_data;
  302. });
  303. },
  304. getTime() {
  305. if (!this.firstForm.time) {
  306. this.firstForm.time = [];
  307. }
  308. this.cur_page = 1;
  309. this.getListData();
  310. },
  311. ysbjSet(id) {
  312. let data = {
  313. xdbb_id: id,
  314. xdbs_ysbj: "2",
  315. };
  316. bjpb_edit(data).then((res) => {
  317. if (res.code == "1") {
  318. res.data.one_info.xdbs_ysbj = "2";
  319. this.$message({
  320. message: "优胜班级设置成功。",
  321. type: "success",
  322. });
  323. this.getListData();
  324. } else {
  325. this.$message({
  326. message: res.msg,
  327. type: "error",
  328. });
  329. }
  330. });
  331. },
  332. hqbjSet(id) {
  333. let data = {
  334. xdbb_id: id,
  335. xdbs_hqbj: "2",
  336. };
  337. bjpb_edit(data).then((res) => {
  338. if (res.code == "1") {
  339. res.data.one_info.xdbs_hqbj = "2";
  340. this.$message({
  341. message: "红旗班级设置成功。",
  342. type: "success",
  343. });
  344. this.getListData();
  345. } else {
  346. this.$message({
  347. message: res.msg,
  348. type: "error",
  349. });
  350. }
  351. });
  352. },
  353. rate(item) {
  354. this.title = "总评";
  355. this.id = item.xdbb_id;
  356. this.commentForm.xdbs_zp = item.xdbs_zp;
  357. this.commentDialogVisible = true;
  358. },
  359. formSubmit(formName) {
  360. this.$refs[formName].validate((valid) => {
  361. if (valid) {
  362. let data = {
  363. xdbs_zp: this.commentForm.xdbs_zp,
  364. };
  365. data.xdbb_id = this.id;
  366. bjpb_edit(data).then((res) => {
  367. if (res.code == 1) {
  368. this.$message({
  369. message: "评价成功!",
  370. type: "success",
  371. });
  372. this.commentDialogVisible = false;
  373. this.getListData();
  374. } else {
  375. this.$message({
  376. message: res.msg,
  377. type: "error",
  378. });
  379. }
  380. });
  381. }
  382. });
  383. },
  384. handleSelectionChange(val) {
  385. this.multipleSelection1 = [];
  386. for (let i in val) {
  387. this.multipleSelection1.push(val[i].xdbb_id);
  388. console.log(this.multipleSelection1, 123);
  389. }
  390. },
  391. exportAll() {
  392. let time = "";
  393. if (this.firstForm.time.length > 0) {
  394. time = this.firstForm.time[0] + " - " + this.firstForm.time[1];
  395. } else {
  396. time = "";
  397. }
  398. let link =
  399. window.globalVariables.api +
  400. "/xddy/dygl_bjzzpb_bjpfgl/index?api=xls&page=1&limit=10000&token=" +
  401. token +
  402. "&xdbb_id=" +
  403. this.multipleSelection1.join(",");
  404. window.open(link, "_blank");
  405. },
  406. clearData() {
  407. this.firstForm.grade = "";
  408. this.firstForm.class = "";
  409. this.firstForm.time = "";
  410. },
  411. },
  412. mounted() {
  413. this.getListData();
  414. this.gradeListData();
  415. this.classListData();
  416. },
  417. };
  418. </script>
  419. <style lang="scss" scoped>
  420. .big {
  421. width: 204px;
  422. height: 40px;
  423. border: 1px solid #dcdfe6;
  424. border-radius: 4px;
  425. padding: 0 15px;
  426. }
  427. ::v-deep .el-input {
  428. width: 160px;
  429. }
  430. ::v-deep .el-date-editor.el-input,
  431. .el-date-editor.el-input__inner {
  432. width: 300px;
  433. }
  434. ::v-deep .el-date-editor .el-range-separator {
  435. width: 8%;
  436. }
  437. </style>