index.vue 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467
  1. <template>
  2. <div>
  3. <div class="d-flex flex-between pt7">
  4. <div>
  5. <el-button type="primary" @click="addRy">添加</el-button>
  6. <el-button
  7. type="danger"
  8. :disabled="multipleSelection.length == 0"
  9. @click="delRy"
  10. >撤销</el-button
  11. >
  12. </div>
  13. <el-form :inline="true" :model="searchForm">
  14. <el-form-item class="mr10" label="">
  15. <el-select
  16. v-model="searchForm.jb"
  17. placeholder="请选择级别"
  18. @change="getListData"
  19. clearable
  20. >
  21. <el-option
  22. v-for="item in rankList"
  23. :key="item.value"
  24. :label="item.label"
  25. :value="item.value"
  26. ></el-option>
  27. </el-select>
  28. </el-form-item>
  29. <el-form-item class="mr10" label="">
  30. <el-select
  31. v-model="searchForm.dj"
  32. placeholder="请选择等级"
  33. @change="getListData"
  34. clearable
  35. >
  36. <el-option
  37. v-for="item in levelList"
  38. :key="item.value"
  39. :label="item.label"
  40. :value="item.value"
  41. ></el-option>
  42. </el-select>
  43. </el-form-item>
  44. <el-form-item class="mr10" label="">
  45. <el-input
  46. v-model="searchForm.hjfs"
  47. placeholder="请输入获奖方式"
  48. clearable
  49. @clear="getListData"
  50. ></el-input>
  51. </el-form-item>
  52. <el-button type="primary" @click="getListData">搜索</el-button>
  53. </el-form>
  54. </div>
  55. <el-table
  56. :data="listData"
  57. v-loading="loading"
  58. tooltip-effect="dark"
  59. style="width: 100%"
  60. @selection-change="handleSelectionChange"
  61. >
  62. <el-table-column type="selection" align="center" width="55">
  63. </el-table-column>
  64. <el-table-column
  65. label="所获荣誉名称"
  66. prop="xdxr_shrymc"
  67. width="200"
  68. ></el-table-column>
  69. <el-table-column label="姓名" prop="xdxr_xsxm" width="">
  70. </el-table-column>
  71. <el-table-column label="奖励级别" prop="xdxr_jljb" width="">
  72. </el-table-column>
  73. <el-table-column label="奖励等级" prop="xdxr_jldj" width="">
  74. </el-table-column>
  75. <el-table-column label="荣获称号时间" prop="xdxr_rychsj" width="200">
  76. </el-table-column>
  77. <el-table-column label="获奖项目" prop="xdxr_hjxm" width="">
  78. </el-table-column>
  79. <el-table-column label="获奖方式" prop="xdxr_hjfs" width="">
  80. </el-table-column>
  81. <el-table-column label="颁奖(授予)部门" prop="xdxr_bjsybm" width="200">
  82. </el-table-column>
  83. </el-table>
  84. <footer
  85. class="flex-item-none"
  86. style="display: flex; justify-content: flex-end; margin-top: 30px"
  87. >
  88. <el-pagination
  89. background
  90. layout="total,prev, pager, next"
  91. :page-size="limit"
  92. :total="total"
  93. :current-page.sync="cur_page"
  94. @current-change="handleCurrentChange"
  95. ></el-pagination>
  96. </footer>
  97. <el-dialog
  98. title="添加荣誉"
  99. :visible.sync="addDialogVisible"
  100. width="780px"
  101. v-loading="loading"
  102. >
  103. <el-form
  104. :model="addForm"
  105. ref="addForm"
  106. :rules="rules"
  107. label-width="150px"
  108. >
  109. <div class="d-flex">
  110. <div class="flex-1">
  111. <el-form-item label="学生姓名:">
  112. <el-input v-model="xdxr_xsxm" disabled></el-input>
  113. </el-form-item>
  114. </div>
  115. <div class="flex-1">
  116. <el-form-item label="学籍号:">
  117. <el-input v-model="xdxr_xsxh" disabled></el-input>
  118. </el-form-item>
  119. </div>
  120. </div>
  121. <div class="d-flex">
  122. <div class="flex-1">
  123. <el-form-item label="所获荣誉名称:" prop="xdxr_shrymc">
  124. <el-input v-model="addForm.xdxr_shrymc"></el-input>
  125. </el-form-item>
  126. </div>
  127. <div class="flex-1">
  128. <el-form-item label="奖励级别:" prop="xdxr_jljb">
  129. <el-select
  130. v-model="addForm.xdxr_jljb"
  131. placeholder="请选择级别"
  132. style="width: 220px"
  133. >
  134. <el-option
  135. v-for="item in rankList"
  136. v-if="item.value != 0"
  137. :key="item.value"
  138. :label="item.label"
  139. :value="item.value"
  140. ></el-option>
  141. </el-select>
  142. </el-form-item>
  143. </div>
  144. </div>
  145. <div class="d-flex">
  146. <div class="flex-1">
  147. <el-form-item label="荣获称号时间:" prop="xdxr_rychsj">
  148. <el-date-picker
  149. style="width: 220px"
  150. clearable
  151. v-model="addForm.xdxr_rychsj"
  152. type="date"
  153. value-format="yyyy-MM-dd"
  154. placeholder="请选择日期"
  155. >
  156. </el-date-picker>
  157. </el-form-item>
  158. </div>
  159. <div class="flex-1">
  160. <el-form-item label="颁奖(授予)部门:" prop="xdxr_bjsybm">
  161. <el-input v-model="addForm.xdxr_bjsybm"></el-input>
  162. </el-form-item>
  163. </div>
  164. </div>
  165. <div class="d-flex">
  166. <div class="flex-1">
  167. <el-form-item label="获奖项目:" prop="xdxr_hjxm">
  168. <el-input v-model="addForm.xdxr_hjxm"></el-input>
  169. </el-form-item>
  170. </div>
  171. <div class="flex-1">
  172. <el-form-item label="获奖等级:" prop="xdxr_jldj">
  173. <el-select
  174. v-model="addForm.xdxr_jldj"
  175. placeholder="请选择等级"
  176. style="width: 220px"
  177. >
  178. <el-option
  179. v-for="item in levelList"
  180. v-if="item.value != 0"
  181. :key="item.value"
  182. :label="item.label"
  183. :value="item.value"
  184. ></el-option>
  185. </el-select>
  186. </el-form-item>
  187. </div>
  188. </div>
  189. <div class="d-flex">
  190. <div class="flex-1">
  191. <el-form-item label="获奖方式:" prop="xdxr_hjfs">
  192. <el-input
  193. v-model="addForm.xdxr_hjfs"
  194. style="width: 220px"
  195. ></el-input>
  196. </el-form-item>
  197. </div>
  198. </div>
  199. <el-form-item label="上传附件" prop="xdxr_scfj">
  200. <FileUpload
  201. :limit="5"
  202. :full.sync="addForm.xdxr_scfj"
  203. :key="timestamp"
  204. multiple
  205. >
  206. <div slot="tip" class="el-upload__tip">
  207. 支持文件类型:doc(.docx)、.ppt(.pptx)、.xls(.xlsx)、.pps、.wps、.pdf、.txt文件格式。
  208. </div>
  209. </FileUpload>
  210. </el-form-item>
  211. <el-form-item label="获奖原因" prop="xdxr_hjyy">
  212. <el-input
  213. type="textarea"
  214. :rows="3"
  215. placeholder="请输入内容"
  216. v-model="addForm.xdxr_hjyy"
  217. >
  218. </el-input>
  219. </el-form-item>
  220. </el-form>
  221. <div slot="footer">
  222. <el-button @click="addForm = false">取 消</el-button>
  223. <el-button type="primary" @click="addFormSubmit('addForm')"
  224. >确 定</el-button
  225. >
  226. </div>
  227. </el-dialog>
  228. </div>
  229. </template>
  230. <script>
  231. import { ry_list, ry_add, ry_edit } from "./api";
  232. import FileUpload from "@/components/FileUpload/index.vue";
  233. export default {
  234. name: "index",
  235. components: {
  236. FileUpload,
  237. },
  238. data() {
  239. return {
  240. id: "",
  241. listData: [],
  242. limit: 10,
  243. total: 0,
  244. cur_page: 1,
  245. loading: false,
  246. multipleSelection: [],
  247. searchForm: {
  248. jb: "",
  249. dj: "",
  250. hjfs: "",
  251. },
  252. rankList: [
  253. {
  254. value: "0",
  255. label: "全部",
  256. },
  257. {
  258. value: "1",
  259. label: "国家级",
  260. },
  261. {
  262. value: "2",
  263. label: "省",
  264. },
  265. {
  266. value: "3",
  267. label: "市",
  268. },
  269. {
  270. value: "4",
  271. label: "县",
  272. },
  273. {
  274. value: "5",
  275. label: "单位",
  276. },
  277. ],
  278. levelList: [
  279. {
  280. value: "0",
  281. label: "全部",
  282. },
  283. {
  284. value: "1",
  285. label: "一等奖",
  286. },
  287. {
  288. value: "2",
  289. label: "二等奖",
  290. },
  291. {
  292. value: "3",
  293. label: "三等奖",
  294. },
  295. {
  296. value: "4",
  297. label: "四等奖",
  298. },
  299. {
  300. value: "5",
  301. label: "五等奖",
  302. },
  303. ],
  304. addDialogVisible: false,
  305. xdxr_xsxm: "",
  306. xdxr_xsxh: "",
  307. addForm: {
  308. xdxr_shrymc: "",
  309. xdxr_jljb: "",
  310. xdxr_rychsj: "",
  311. xdxr_bjsybm: "",
  312. xdxr_hjxm: "",
  313. xdxr_jldj: "",
  314. xdxr_hjfs: "",
  315. xdxr_scfj: "",
  316. xdxr_hjyy: "",
  317. },
  318. rules: {
  319. xdxr_shrymc: [
  320. { required: true, message: "请输入荣誉名称", trigger: "blur" },
  321. ],
  322. xdxr_jljb: [
  323. { required: true, message: "请选择奖励级别", trigger: "change" },
  324. ],
  325. xdxr_rychsj: [
  326. { required: true, message: "请选择时间", trigger: "blur" },
  327. ],
  328. xdxr_bjsybm: [
  329. { required: true, message: "请输入部门", trigger: "blur" },
  330. ],
  331. xdxr_hjxm: [
  332. { required: true, message: "请输入获奖项目", trigger: "blur" },
  333. ],
  334. xdxr_jldj: [
  335. { required: true, message: "请选择奖励等级", trigger: "change" },
  336. ],
  337. xdxr_hjfs: [
  338. { required: true, message: "请输入获奖方式", trigger: "blur" },
  339. ],
  340. xdxr_hjyy: [
  341. { required: true, message: "请输入获奖原因", trigger: "blur" },
  342. ],
  343. },
  344. timestamp: Date.now(),
  345. };
  346. },
  347. methods: {
  348. handleSelectionChange(val) {
  349. this.multipleSelection = val;
  350. },
  351. getListData() {
  352. this.loading = true;
  353. let data = {
  354. page: this.cur_page,
  355. limit: this.limit,
  356. xdxr_xsxh: this.xdxr_xsxh,
  357. xdxr_jldj: this.searchForm.dj,
  358. xdxr_jljb: this.searchForm.jb,
  359. xdxr_hjfs: this.searchForm.hjfs,
  360. isdelete: "0",
  361. };
  362. ry_list(data).then((res) => {
  363. if (res.code == 1) {
  364. this.loading = false;
  365. this.listData = res.data.page_data;
  366. this.cur_page = Number(res.data.page_now);
  367. this.total = Number(res.data.total_rows);
  368. }
  369. });
  370. },
  371. handleCurrentChange(val) {
  372. this.cur_page = val;
  373. this.getListData();
  374. },
  375. addRy() {
  376. this.addForm = {
  377. xdxr_shrymc: "",
  378. xdxr_jljb: "",
  379. xdxr_rychsj: "",
  380. xdxr_bjsybm: "",
  381. xdxr_hjxm: "",
  382. xdxr_jldj: "",
  383. xdxr_hjfs: "",
  384. xdxr_scfj: "",
  385. xdxr_hjyy: "",
  386. };
  387. this.addDialogVisible = true;
  388. },
  389. addFormSubmit(formName) {
  390. this.$refs[formName].validate((valid) => {
  391. if (valid) {
  392. this.loading = true;
  393. let data = {
  394. xdxr_xsxm: this.xdxr_xsxm,
  395. xdxr_xsxh: this.xdxr_xsxh,
  396. xdxr_shrymc: this.addForm.xdxr_shrymc,
  397. xdxr_jljb: this.addForm.xdxr_jljb,
  398. xdxr_rychsj: this.addForm.xdxr_rychsj,
  399. xdxr_bjsybm: this.addForm.xdxr_bjsybm,
  400. xdxr_hjxm: this.addForm.xdxr_hjxm,
  401. xdxr_jldj: this.addForm.xdxr_jldj,
  402. xdxr_hjfs: this.addForm.xdxr_hjfs,
  403. xdxr_scfj: this.addForm.xdxr_scfj,
  404. };
  405. ry_add(data).then((res) => {
  406. if (res.code == 1) {
  407. this.$message({
  408. message: "荣誉增加成功!",
  409. type: "success",
  410. });
  411. this.addDialogVisible = false;
  412. this.getListData();
  413. } else {
  414. this.$message({
  415. message: res.msg,
  416. type: "error",
  417. });
  418. }
  419. });
  420. }
  421. });
  422. },
  423. delRy() {
  424. let del_arr = [];
  425. for (let i in this.multipleSelection) {
  426. del_arr.push(this.multipleSelection[i].xdxr_id);
  427. }
  428. this.$confirm("确定要撤销这些荣誉?", "提示", {
  429. confirmButtonText: "确定",
  430. cancelButtonText: "取消",
  431. type: "warning",
  432. })
  433. .then(() => {
  434. let data = {
  435. xdxr_id: del_arr,
  436. };
  437. ry_edit(data).then((res) => {
  438. if (res.code == 1) {
  439. this.$message({
  440. message: "荣誉撤销成功!",
  441. type: "success",
  442. });
  443. this.getListData();
  444. } else {
  445. this.$message({
  446. message: res.msg,
  447. type: "error",
  448. });
  449. }
  450. });
  451. })
  452. .catch(() => {});
  453. },
  454. },
  455. mounted() {
  456. this.xdxr_xsxh = this.$route.params.no;
  457. this.xdxr_xsxm = this.$route.params.xm;
  458. this.getListData();
  459. },
  460. };
  461. </script>
  462. <style scoped>
  463. </style>