3c5dc7a9bc50a8961604d494650ed0465a6c67e5.svn-base 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466
  1. <template>
  2. <el-container>
  3. <el-main>
  4. <div>
  5. 选择通知填报项目:
  6. <el-radio v-model="radio" label="1">批次测评填报</el-radio>
  7. <el-radio v-model="radio" label="2">年度测评填报</el-radio>
  8. <div style="display: inline-block;margin-left: 20px;">
  9. 填报截止时间:
  10. <el-date-picker
  11. v-model="fillInDate"
  12. type="date"
  13. value-format="yyyy-MM-dd"
  14. placeholder="选择日期">
  15. </el-date-picker>
  16. </div>
  17. </div>
  18. <el-card shadow="hover" style="margin: 20px 0;width: 500px;" v-show="false">
  19. <el-form ref="form" :model="form" label-width="180px">
  20. <el-form-item label="选择年度">
  21. <el-select v-model="form.year" placeholder="">
  22. <el-option :label="item.label" :value="item.value" v-for="(item,index) in yearList"
  23. :key="index"></el-option>
  24. </el-select>
  25. </el-form-item>
  26. <el-form-item label="选择批次">
  27. <el-select v-model="form.batch" placeholder="">
  28. <el-option :label="item.label" :value="item.value" v-for="(item,index) in batchList"
  29. :key="index"></el-option>
  30. </el-select>
  31. </el-form-item>
  32. <el-form-item label="选择角色">
  33. <el-select v-model="form.role" placeholder="">
  34. <el-option :label="item.label" :value="item.value" v-for="(item,index) in roleList"
  35. :key="index"></el-option>
  36. </el-select>
  37. </el-form-item>
  38. <el-form-item label="设置批次测评开放时间为">
  39. <el-select v-model="form.openTime" placeholder="">
  40. <el-option :label="item.label" :value="item.value" v-for="(item,index) in openTimeList"
  41. :key="index"></el-option>
  42. </el-select>
  43. </el-form-item>
  44. <el-form-item>
  45. <el-button type="primary" @click="onSubmit">确定</el-button>
  46. </el-form-item>
  47. </el-form>
  48. </el-card>
  49. <el-card shadow="hover" style="margin: 20px 0;">
  50. <el-form ref="searchForm" :model="searchForm" label-width="80px" inline>
  51. <el-form-item label="选择年度">
  52. <el-select v-model="searchForm.year" placeholder="" style="width: 120px" @change="yearChange">
  53. <el-option :label="item.year" :value="item.year" :key="item.id" v-for="item in yearList"></el-option>
  54. </el-select>
  55. </el-form-item>
  56. <el-form-item label="选择批次">
  57. <el-select v-model="searchForm.batch" placeholder="" style="width: 120px" clearable>
  58. <el-option :label="item.batch" :value="item.batch" :key="item.id" v-for="item in batchList"></el-option>
  59. </el-select>
  60. </el-form-item>
  61. <el-form-item label="选择角色">
  62. <el-select v-model="searchForm.roleType" placeholder="" style="width: 120px" clearable>
  63. <el-option :label="item.label" :value="item.value" v-for="(item,index) in roleList"
  64. :key="index"></el-option>
  65. </el-select>
  66. </el-form-item>
  67. <el-form-item label="姓名">
  68. <el-input v-model="searchForm.name" style="width: 120px" clearable placeholder=""></el-input>
  69. </el-form-item>
  70. <el-form-item label="通知状态">
  71. <el-select v-model="searchForm.state" placeholder="" style="width: 120px" clearable>
  72. <el-option :label="item.label" :value="item.value" v-for="(item,index) in stateList"
  73. :key="index"></el-option>
  74. </el-select>
  75. </el-form-item>
  76. <el-form-item>
  77. <el-button type="primary" @click="getTableData">查询</el-button>
  78. </el-form-item>
  79. </el-form>
  80. <el-table
  81. v-loading="loading"
  82. ref="multipleTable"
  83. :data="tableData"
  84. tooltip-effect="dark"
  85. style="width: 100%"
  86. border
  87. :height="tableHeight"
  88. @select="isSelected"
  89. @selection-change="handleSelectionChange">
  90. <el-table-column
  91. type="selection"
  92. width="55">
  93. </el-table-column>
  94. <el-table-column
  95. label="序号"
  96. type="index"
  97. width="50">
  98. </el-table-column>
  99. <el-table-column
  100. prop="roleType"
  101. label="角色"
  102. width="120">
  103. <template slot-scope="scope">
  104. <span>{{scope.row.roleType | rolefilter}}</span>
  105. </template>
  106. </el-table-column>
  107. <el-table-column
  108. prop="batches"
  109. label="参加批次"
  110. width="120">
  111. </el-table-column>
  112. <el-table-column
  113. prop="name"
  114. label="姓名"
  115. show-overflow-tooltip>
  116. </el-table-column>
  117. <el-table-column
  118. prop="age"
  119. label="年龄"
  120. show-overflow-tooltip>
  121. </el-table-column>
  122. <el-table-column
  123. prop="mobilenumb"
  124. label="手机号"
  125. show-overflow-tooltip>
  126. </el-table-column>
  127. <el-table-column
  128. prop="idNo"
  129. label="身份证号"
  130. show-overflow-tooltip>
  131. </el-table-column>
  132. <el-table-column
  133. prop="state"
  134. label="通知状态"
  135. show-overflow-tooltip>
  136. <template slot-scope="scope">
  137. <span :class="{'orange': scope.row.state == '1','green': scope.row.state == '0'}">{{scope.row.state == '0' ? '未通知' : scope.row.state == '1' ? '已通知' : ''}}</span>
  138. </template>
  139. </el-table-column>
  140. </el-table>
  141. <el-pagination style="margin-left: 30px;" :pager-count="5" :current-page="pageIndex" background
  142. :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total"
  143. :page-sizes="[10, 20, 50, 100]"
  144. @current-change="pageIndexChange" @size-change="handleSizeChange"
  145. ></el-pagination>
  146. <el-button type="primary" style="float:right" @click="onSubmit">确定</el-button>
  147. </el-card>
  148. </el-main>
  149. </el-container>
  150. </template>
  151. <script>
  152. import request from '@util/gw_ajax_request.js'
  153. export default {
  154. data() {
  155. return {
  156. tableHeight: window.innerHeight - 360,
  157. form: {
  158. year: '2019',
  159. batch: '',
  160. role: '',
  161. openTime: ''
  162. },
  163. searchForm: {
  164. year: '',
  165. batch: '',
  166. roleType: '',
  167. name: '',
  168. type: 1,
  169. state: ''
  170. },
  171. stateList: [
  172. {label: '未通知', value: '0'},
  173. {label: '已通知', value: '1'}
  174. ],
  175. radio: '1',
  176. yearList: [
  177. {year: '2019', id: '2019'}
  178. ],
  179. batchList: [
  180. {batch: '1', value: '1'},
  181. {batch: '2', value: '2'},
  182. {batch: '3', value: '3'},
  183. {batch: '4', value: '4'},
  184. {batch: '5', value: '5'},
  185. {batch: '6', value: '6'},
  186. {batch: '7', value: '7'},
  187. {batch: '8', value: '8'},
  188. {batch: '9', value: '9'},
  189. {batch: '10', value: '10'},
  190. ],
  191. roleListYear: [
  192. {label: '前期专家', value: '11'},
  193. {label: '建管专家', value: '12'},
  194. {label: '计划专家', value: '13'},
  195. {label: '财务专家', value: '14'},
  196. {label: '质量专家', value: '15'},
  197. {label: '安全专家', value: '16'},
  198. {label: '助理', value: '19'},
  199. {label: '稽察组长', value: '20'}
  200. ],
  201. roleListBatch: [
  202. {label: '助理', value: '19'},
  203. {label: '稽察组长', value: '20'}
  204. ],
  205. roleList: [],
  206. openTimeList: [
  207. {label: '3', value: '1'},
  208. {label: '4', value: '2'},
  209. {label: '5', value: '3'},
  210. {label: '6', value: '4'},
  211. {label: '7', value: '5'}
  212. ],
  213. tableData: [{
  214. roleType: '助理',
  215. batches: '1、3',
  216. name: '',
  217. age: '',
  218. mobilenumb: '',
  219. idNo: ''
  220. }, {
  221. roleType: '前期专家',
  222. batches: '3、4',
  223. name: '',
  224. age: '',
  225. mobilenumb: '',
  226. idNo: ''
  227. }, {
  228. roleType: '建管专家',
  229. batches: '1',
  230. name: '',
  231. age: '',
  232. mobilenumb: '',
  233. idNo: ''
  234. }, {
  235. roleType: '计划专家',
  236. batches: '4',
  237. name: '',
  238. age: '',
  239. mobilenumb: '',
  240. idNo: ''
  241. }, {
  242. roleType: '财务专家',
  243. batches: '',
  244. name: '',
  245. age: '',
  246. mobilenumb: '',
  247. idNo: ''
  248. }, {
  249. roleType: '质量专家',
  250. batches: '',
  251. name: '',
  252. age: '',
  253. mobilenumb: '',
  254. idNo: ''
  255. }, {
  256. roleType: '安全专家',
  257. batches: '',
  258. name: '',
  259. age: '',
  260. mobilenumb: '',
  261. idNo: ''
  262. }
  263. ],
  264. multipleSelection: [],
  265. pageIndex: 1,
  266. pageSize: 20,
  267. total: 0,
  268. loading: true,
  269. fillInDate: ''
  270. }
  271. },
  272. computed: {
  273. persId() {
  274. return localStorage.getItem('userid') ? localStorage.getItem('userid') : ''
  275. }
  276. },
  277. mounted() {
  278. this.roleList = this.roleListBatch
  279. this.getYearPc()
  280. },
  281. methods: {
  282. getYearPc() {
  283. request.post(`/tac/insp/year/list`, {}).then(res => {
  284. if (res.success) {
  285. this.$nextTick(() => {
  286. this.yearList = res.data;
  287. this.searchForm.year = this.yearList[0].year
  288. // this.getBatchList()
  289. this.getTableData()
  290. })
  291. }
  292. })
  293. },
  294. getBatchList() {
  295. request.post(`/tac/insp/batch/getBatchListAuditByYear`, {year: this.searchForm.year}).then(res => {
  296. if (res.success) {
  297. this.batchList = res.data;
  298. this.searchForm.batch = this.batchList[0].batch
  299. this.getTableData()
  300. }
  301. })
  302. },
  303. getTableData() {
  304. let _this = this
  305. this.searchForm['pageNum'] = this.pageIndex
  306. this.searchForm['pageSize'] = this.pageSize
  307. request.post(`/tac/evalation/inform/getInformPage`, this.searchForm).then(res => {
  308. if (res.success) {
  309. this.loading = false
  310. this.tableData = res.data.list;
  311. this.total = res.data.total
  312. this.$nextTick(function () {
  313. if (this.multipleSelection.length && this.tableData.length) {
  314. let selectedRows = []
  315. this.multipleSelection.forEach(ele => {
  316. let id = ele.id
  317. _this.tableData.forEach(element => {
  318. if (id == element.id) {
  319. selectedRows.push(element)
  320. }
  321. })
  322. })
  323. selectedRows.forEach(row => {
  324. _this.$refs.multipleTable.toggleRowSelection(row, true);
  325. });
  326. }
  327. })
  328. } else {
  329. this.$message.error(res.message)
  330. }
  331. })
  332. },
  333. onSubmit() {
  334. let dataObj = {
  335. cutTime: this.fillInDate,
  336. year: this.searchForm.year,
  337. batch: this.searchForm.batch,
  338. type: this.searchForm.type,
  339. persId: this.persId,
  340. dtoList: this.multipleSelection
  341. }
  342. if (!dataObj.cutTime) {
  343. this.$message.warning('请选择填报截止时间')
  344. return
  345. }
  346. if (!dataObj.batch) {
  347. this.$message.warning('请选择批次')
  348. return
  349. }
  350. if (!dataObj.dtoList.length) {
  351. this.$message.warning('请选择通知人员')
  352. return
  353. }
  354. request.post(`/tac/evalation/inform/sendMessage`, dataObj).then(res => {
  355. if (res.success) {
  356. this.$message.success('通知成功')
  357. this.getTableData()
  358. this.multipleSelection = []
  359. } else {
  360. this.$message.error(res.message)
  361. }
  362. })
  363. },
  364. yearChange() {
  365. this.getBatchList()
  366. },
  367. handleSelectionChange(val) {
  368. //this.multipleSelection不能赋值为[],因为带的有之前已选中的数据
  369. if (val.length) {
  370. val.forEach(ele => {
  371. this.multipleSelection.push(ele)
  372. })
  373. this.multipleSelection = this.multipleSelection
  374. }
  375. let allArr = []
  376. for (var i = 0; i < this.multipleSelection.length; i++) {
  377. let flag = true;
  378. for (var j = 0; j < allArr.length; j++) {
  379. if (this.multipleSelection[i].id == allArr[j].id) {
  380. flag = false;
  381. }
  382. ;
  383. }
  384. ;
  385. if (flag) {
  386. allArr.push(this.multipleSelection[i]);
  387. }
  388. ;
  389. }
  390. ;
  391. this.multipleSelection = allArr
  392. // this.multipleSelection = Array.from(new Set(this.multipleSelection))
  393. },
  394. isSelected(rows, row) {
  395. let _this = this
  396. let selected = rows.length && rows.indexOf(row) !== -1
  397. if (!selected) {
  398. this.multipleSelection.forEach((ele, index) => {
  399. if (ele.id == row.id) {
  400. this.multipleSelection.splice(index, 1)
  401. }
  402. })
  403. }
  404. },
  405. pageIndexChange(val) {
  406. this.pageIndex = val
  407. this.getTableData()
  408. },
  409. handleSizeChange(val) {
  410. this.pageSize = val
  411. }
  412. },
  413. watch: {
  414. radio(val) {
  415. if (val == '1') {
  416. this.roleList = this.roleListBatch
  417. this.searchForm.type = 1
  418. } else {
  419. this.roleList = this.roleListYear
  420. this.searchForm.type = 2
  421. }
  422. this.getTableData()
  423. }
  424. },
  425. filters: {
  426. rolefilter(val) {
  427. if (val == '11') {
  428. return '前期专家'
  429. } else if (val == '12') {
  430. return '建管专家'
  431. }
  432. if (val == '13') {
  433. return '计划专家'
  434. }
  435. if (val == '14') {
  436. return '财务专家'
  437. }
  438. if (val == '15') {
  439. return '质量专家'
  440. }
  441. if (val == '16') {
  442. return '安全专家'
  443. }
  444. if (val == '19') {
  445. return '助理'
  446. }
  447. if (val == '20') {
  448. return '稽察组长'
  449. } else {
  450. return val
  451. }
  452. }
  453. }
  454. }
  455. </script>
  456. <style lang="scss" scoped>
  457. .green {
  458. color: #67c23a
  459. }
  460. .orange {
  461. color: #e6a23c
  462. }
  463. </style>