You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

680 lines
21 KiB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
  1. <template>
  2. <div class="mod-config">
  3. <div>
  4. <span @click="favoriteFunction()">
  5. <icon-svg :name="favorite?'xiangqufill':'xiangqu'" class="sl-svg"></icon-svg>
  6. </span>
  7. </div>
  8. <el-form :inline="true" label-position="top" :model="searchData" @keyup.enter.native="getDataList()">
  9. <el-form-item :label="'BU'">
  10. <el-select v-model="searchData.buDesc" placeholder="请选择" clearable style="width: 130px">
  11. <el-option
  12. v-for = "i in userBuList"
  13. :key = "i.buNo"
  14. :label = "i.buDesc"
  15. :value = "i.buDesc">
  16. </el-option>
  17. </el-select>
  18. </el-form-item>
  19. <el-form-item :label="'机修人员分类编码'">
  20. <el-input v-model="searchData.adminLevelID" style="width: 120px"></el-input>
  21. </el-form-item>
  22. <el-form-item :label="'机修人员分类名称'">
  23. <el-input v-model="searchData.adminLevelDesc" style="width: 120px"></el-input>
  24. </el-form-item>
  25. <el-form-item :label="'在用'">
  26. <el-select filterable v-model="searchData.active" style="width: 130px">
  27. <el-option label="全部" value=""></el-option>
  28. <el-option label="是" value="Y"></el-option>
  29. <el-option label="否" value="N"></el-option>
  30. </el-select>
  31. </el-form-item>
  32. <el-form-item :label="' '">
  33. <el-button @click="getDataList()">查询</el-button>
  34. <el-button type="primary" @click="addModal()">新增</el-button>
  35. <download-excel
  36. :fields="fields()"
  37. :data="exportData"
  38. type="xls"
  39. :name="exportName"
  40. :header="exportHeader"
  41. :footer="exportFooter"
  42. :fetch="createExportData"
  43. :before-generate="startDownload"
  44. :before-finish="finishDownload"
  45. worksheet="导出信息"
  46. class="el-button el-button--primary el-button--medium">
  47. {{ "导出" }}
  48. </download-excel>
  49. </el-form-item>
  50. </el-form>
  51. <el-table
  52. :height="height"
  53. :data="dataList"
  54. border
  55. style="width: 100%;">
  56. <el-table-column
  57. v-for="(item,index) in columnList" :key="index"
  58. :sortable="item.columnSortable"
  59. :prop="item.columnProp"
  60. :header-align="item.headerAlign"
  61. :show-overflow-tooltip="item.showOverflowTooltip"
  62. :align="item.align"
  63. :fixed="item.fixed==''?false:item.fixed"
  64. :min-width="item.columnWidth"
  65. :label="item.columnLabel">
  66. <template slot-scope="scope">
  67. <span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
  68. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  69. </template>
  70. </el-table-column>
  71. <el-table-column
  72. fixed="right"
  73. header-align="center"
  74. align="center"
  75. width="100"
  76. label="操作">
  77. <template slot-scope="scope">
  78. <a type="text" size="small" @click="updateModal(scope.row)">修改</a>
  79. <a type="text" size="small" @click="deleteAdminLevel(scope.row)">删除</a>
  80. </template>
  81. </el-table-column>
  82. </el-table>
  83. <el-pagination
  84. @size-change="sizeChangeHandle"
  85. @current-change="currentChangeHandle"
  86. :current-page="pageIndex"
  87. :page-sizes="[20, 50, 100, 200, 500]"
  88. :page-size="pageSize"
  89. :total="totalPage"
  90. layout="total, sizes, prev, pager, next, jumper">
  91. </el-pagination>
  92. <el-dialog title="机修人员等级" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="430px">
  93. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  94. <el-form-item label="BU" prop="bu" :rules="rules.bu">
  95. <el-select v-model="modalData.bu" placeholder="请选择" :disabled="modalDisableFlag" style="width: 230px">
  96. <el-option
  97. v-for = "i in userBuList"
  98. :key = "i.buNo"
  99. :label = "i.buNo"
  100. :value = "i.buNo">
  101. <span style="float: left;width: 100px">{{ i.sitename }}</span>
  102. <span style="float: right; color: #8492a6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; font-size: 11px;width: 60px">
  103. {{ i.buDesc }}
  104. </span>
  105. </el-option>
  106. </el-select>
  107. </el-form-item>
  108. <el-form-item label="是否在用:" prop="active" :rules="rules.activeType">
  109. <el-select filterable v-model="modalData.active" style="width: 140px">
  110. <el-option label="是" value="Y"></el-option>
  111. <el-option label="否" value="N"></el-option>
  112. </el-select>
  113. </el-form-item>
  114. </el-form>
  115. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  116. <el-form-item label="机修人员分类编码:" prop="adminLevelID" :rules="rules.adminLevelIdType">
  117. <el-input v-model="modalData.adminLevelID" :disabled="modalDisableFlag" style="width: 140px"></el-input>
  118. </el-form-item>
  119. <el-form-item label="机修人员分类名称:" prop="adminLevelDesc" :rules="rules.adminLevelDescType">
  120. <el-input v-model="modalData.adminLevelDesc" style="width: 230px"></el-input>
  121. </el-form-item>
  122. </el-form>
  123. <el-footer style="height:40px;margin-top: 10px;text-align:center">
  124. <el-button type="primary" @click="saveData()">保存</el-button>
  125. <el-button type="primary" @click="modalFlag = false">关闭</el-button>
  126. </el-footer>
  127. </el-dialog>
  128. </div>
  129. </template>
  130. <script>
  131. import {
  132. eamAdminLevelSearch,
  133. eamAdminLevelSave,
  134. eamAdminLevelEdit,
  135. eamAdminLevelDelete,
  136. getSiteAndBuByUserName
  137. } from "@/api/eam/eam.js"
  138. import {userFavoriteList, saveUserFavorite, removeUserFavorite} from '@/api/userFavorite.js'
  139. import {
  140. getTableDefaultListLanguage,
  141. getTableUserListLanguage,
  142. } from "@/api/table.js"
  143. export default {
  144. watch: {
  145. searchData: {
  146. deep: true,
  147. handler: function (newV, oldV) {
  148. this.searchData.adminLevelID = this.searchData.adminLevelID.toUpperCase()
  149. }
  150. },
  151. modalData: {
  152. deep: true,
  153. handler: function (newV, oldV) {
  154. this.modalData.adminLevelID = this.modalData.adminLevelID.toUpperCase()
  155. }
  156. }
  157. },
  158. data () {
  159. return {
  160. // 是否收藏
  161. favorite: false,
  162. // 导出 start
  163. exportData: [],
  164. exportName: "机修人员等级" + this.dayjs().format('YYYYMMDDHHmmss'),
  165. exportHeader: ["机修人员等级"],
  166. exportFooter: [],
  167. exportList:[],
  168. // 导出 end
  169. searchData: {
  170. site: this.$store.state.user.site,
  171. userName: this.$store.state.user.name,
  172. adminLevelID: '',
  173. adminLevelDesc: '',
  174. buDesc: '',
  175. active: 'Y',
  176. page: 1,
  177. limit: 10,
  178. },
  179. height: 200,
  180. pageIndex: 1,
  181. pageSize: 20,
  182. totalPage: 0,
  183. dataList: [],
  184. dataListSelections: [],
  185. modalFlag: false,
  186. modalDisableFlag: false,
  187. modalData: {
  188. flag: '',
  189. bu: '',
  190. site: this.$store.state.user.site,
  191. adminLevelID: '',
  192. adminLevelDesc: '',
  193. active: '',
  194. createBy: this.$store.state.user.name,
  195. updateBy: this.$store.state.user.name,
  196. },
  197. departmentList: [],
  198. // 展示列集
  199. columnList: [
  200. {
  201. userId: this.$store.state.user.name,
  202. functionId: 101001006,
  203. serialNumber: '101001006Table1BuDesc',
  204. tableId: "101001006Table1",
  205. tableName: "机修人员分类表",
  206. columnProp: 'buDesc',
  207. headerAlign: "center",
  208. align: "center",
  209. columnLabel: 'BU',
  210. columnHidden: false,
  211. columnImage: false,
  212. columnSortable: false,
  213. sortLv: 0,
  214. status: true,
  215. fixed: '',
  216. columnWidth: 100,
  217. },
  218. {
  219. userId: this.$store.state.user.name,
  220. functionId: 101001006,
  221. serialNumber: '101001006Table1AdminLevelID',
  222. tableId: "101001006Table1",
  223. tableName: "机修人员分类表",
  224. columnProp: 'adminLevelID',
  225. headerAlign: "center",
  226. align: "center",
  227. columnLabel: '机修人员分类编码',
  228. columnHidden: false,
  229. columnImage: false,
  230. columnSortable: false,
  231. sortLv: 0,
  232. status: true,
  233. fixed: '',
  234. columnWidth: 120,
  235. },
  236. {
  237. userId: this.$store.state.user.name,
  238. functionId: 101001006,
  239. serialNumber: '101001006Table1AdminLevelDesc',
  240. tableId: "101001006Table1",
  241. tableName: "机修人员分类表",
  242. columnProp: 'adminLevelDesc',
  243. headerAlign: "center",
  244. align: "left",
  245. columnLabel: '机修人员分类名称',
  246. columnHidden: false,
  247. columnImage: false,
  248. columnSortable: false,
  249. sortLv: 0,
  250. status: true,
  251. fixed: '',
  252. columnWidth: 200,
  253. },
  254. {
  255. userId: this.$store.state.user.name,
  256. functionId: 101001006,
  257. serialNumber: '101001006TableActive',
  258. tableId: "101001006Table",
  259. tableName: "机修人员分类表",
  260. columnProp: 'active',
  261. headerAlign: "center",
  262. align: "center",
  263. columnLabel: '在用',
  264. columnHidden: false,
  265. columnImage: false,
  266. columnSortable: false,
  267. sortLv: 0,
  268. status: true,
  269. fixed: '',
  270. columnWidth: 80,
  271. },
  272. {
  273. userId: this.$store.state.user.name,
  274. functionId: 101001006,
  275. serialNumber: '101001006Table1CreateDate',
  276. tableId: "101001006Table1",
  277. tableName: "机修人员分类表",
  278. columnProp: 'createDate',
  279. headerAlign: "center",
  280. align: "center",
  281. columnLabel: '创建时间',
  282. columnHidden: false,
  283. columnImage: false,
  284. columnSortable: false,
  285. sortLv: 0,
  286. status: true,
  287. fixed: '',
  288. columnWidth: 150,
  289. },
  290. {
  291. userId: this.$store.state.user.name,
  292. functionId: 101001006,
  293. serialNumber: '101001006Table1CreateBy',
  294. tableId: "101001006Table1",
  295. tableName: "机修人员分类表",
  296. columnProp: 'createBy',
  297. headerAlign: "center",
  298. align: "left",
  299. columnLabel: '创建人',
  300. columnHidden: false,
  301. columnImage: false,
  302. columnSortable: false,
  303. sortLv: 0,
  304. status: true,
  305. fixed: '',
  306. columnWidth: 100,
  307. },
  308. {
  309. userId: this.$store.state.user.name,
  310. functionId: 101001006,
  311. serialNumber: '101001006Table1UpdateDate',
  312. tableId: "101001006Table1",
  313. tableName: "机修人员分类表",
  314. columnProp: 'updateDate',
  315. headerAlign: "center",
  316. align: "center",
  317. columnLabel: '更新时间',
  318. columnHidden: false,
  319. columnImage: false,
  320. columnSortable: false,
  321. sortLv: 0,
  322. status: true,
  323. fixed: '',
  324. columnWidth: 150,
  325. },
  326. {
  327. userId: this.$store.state.user.name,
  328. functionId: 101001006,
  329. serialNumber: '101001006Table1UpdateBy',
  330. tableId: "101001006Table1",
  331. tableName: "机修人员分类表",
  332. columnProp: 'updateBy',
  333. headerAlign: "center",
  334. align: "left",
  335. columnLabel: '更新人',
  336. columnHidden: false,
  337. columnImage: false,
  338. columnSortable: false,
  339. sortLv: 0,
  340. status: true,
  341. fixed: '',
  342. columnWidth: 100,
  343. },
  344. ],
  345. levelList: [],
  346. rules: {
  347. adminLevelIdType:[
  348. {
  349. required: true,
  350. message: ' ',
  351. trigger: 'change'
  352. }
  353. ],
  354. adminLevelDescType:[
  355. {
  356. required: true,
  357. message: ' ',
  358. trigger: 'change'
  359. }
  360. ],
  361. activeType:[
  362. {
  363. required: true,
  364. message: ' ',
  365. trigger: 'change'
  366. }
  367. ],
  368. bu:[
  369. {
  370. required: true,
  371. message: ' ',
  372. trigger: 'change'
  373. }
  374. ]
  375. },
  376. userBuList: []
  377. }
  378. },
  379. mounted () {
  380. this.$nextTick(() => {
  381. this.height = window.innerHeight - 210
  382. })
  383. },
  384. created () {
  385. // 获取用户的 site 和 bu
  386. this.getSiteAndBuByUserName()
  387. // 校验用户是否收藏
  388. this.favoriteIsOk()
  389. // 获取数据列表
  390. this.getDataList()
  391. // 动态列
  392. this.getTableUserColumn(this.$route.meta.menuId+'table1',1)
  393. },
  394. methods: {
  395. // 获取用户的bu
  396. getSiteAndBuByUserName () {
  397. let tempData = {
  398. username: this.$store.state.user.name,
  399. }
  400. getSiteAndBuByUserName(tempData).then(({data}) => {
  401. if (data.code === 0) {
  402. this.userBuList = data.rows
  403. }
  404. })
  405. },
  406. // 校验用户是否收藏
  407. favoriteIsOk () {
  408. let userFavorite = {
  409. userId: this.$store.state.user.id,
  410. languageCode: this.$i18n.locale
  411. }
  412. userFavoriteList(userFavorite).then(({data}) => {
  413. for (let i = 0; i < data.list.length; i++) {
  414. if(this.$route.meta.menuId==data.list[i].menuId){
  415. this.favorite = true
  416. }
  417. }
  418. })
  419. },
  420. // 收藏 OR 取消收藏
  421. favoriteFunction () {
  422. let userFavorite = {
  423. userId: this.$store.state.user.id,
  424. functionId: this.$route.meta.menuId,
  425. }
  426. if (this.favorite) {
  427. removeUserFavorite(userFavorite).then(({data}) => {
  428. this.$message.success(data.msg)
  429. this.favorite = false
  430. })
  431. } else {
  432. // 收藏
  433. saveUserFavorite(userFavorite).then(({data}) => {
  434. this.$message.success(data.msg)
  435. this.favorite = true
  436. })
  437. }
  438. },
  439. // 获取数据列表
  440. getDataList () {
  441. this.searchData.limit = this.pageSize
  442. this.searchData.page = this.pageIndex
  443. eamAdminLevelSearch(this.searchData).then(({data}) => {
  444. if (data.code === 0) {
  445. this.dataList = data.page.list
  446. this.pageIndex = data.page.currPage
  447. this.pageSize = data.page.pageSize
  448. this.totalPage = data.page.totalCount
  449. }
  450. })
  451. },
  452. // 每页数
  453. sizeChangeHandle (val) {
  454. this.pageSize = val
  455. this.pageIndex = 1
  456. this.getDataList()
  457. },
  458. // 当前页
  459. currentChangeHandle (val) {
  460. this.pageIndex = val
  461. this.getDataList()
  462. },
  463. // 多选
  464. selectionChangeHandle (val) {
  465. this.dataListSelections = val
  466. },
  467. addModal () {
  468. this.modalData = {
  469. flag: '1',
  470. bu: this.userBuList[0].buNo,
  471. site: this.$store.state.user.site,
  472. adminLevelID: '',
  473. adminLevelDesc: '',
  474. active: 'Y',
  475. createBy: this.$store.state.user.name,
  476. updateBy: this.$store.state.user.name,
  477. }
  478. this.modalDisableFlag = false
  479. this.modalFlag = true
  480. },
  481. updateModal (row) {
  482. this.modalData = {
  483. flag: '2',
  484. bu: row.site + '_' + row.buNo,
  485. site: row.site,
  486. adminLevelID: row.adminLevelID,
  487. adminLevelDesc: row.adminLevelDesc,
  488. active: row.active,
  489. updateBy: this.$store.state.user.name,
  490. }
  491. this.modalDisableFlag = true
  492. this.modalFlag = true
  493. },
  494. // 删除
  495. deleteAdminLevel (row) {
  496. this.$confirm(`是否删除这个机修人员等级?`, '提示', {
  497. confirmButtonText: '确定',
  498. cancelButtonText: '取消',
  499. type: 'warning'
  500. }).then(() => {
  501. eamAdminLevelDelete(row).then(({data}) => {
  502. if (data && data.code === '0') {
  503. this.getDataList()
  504. this.$message({
  505. message: '操作成功',
  506. type: 'success',
  507. duration: 1500,
  508. onClose: () => {}
  509. })
  510. } else {
  511. this.$alert(data.msg, '错误', {
  512. confirmButtonText: '确定'
  513. })
  514. }
  515. })
  516. }).catch(() => {
  517. })
  518. },
  519. saveData () {
  520. if (this.modalData.bu === '' || this.modalData.bu == null) {
  521. this.$message.warning('请选择BU!')
  522. return
  523. }
  524. if (this.modalData.adminLevelID === '' || this.modalData.adminLevelID == null) {
  525. this.$message.warning('请输入机修人员等级编码!')
  526. return
  527. }
  528. if (this.modalData.adminLevelDesc === '' || this.modalData.adminLevelDesc == null) {
  529. this.$message.warning('请输入机修人员等级名称!')
  530. return
  531. }
  532. if (this.modalData.active === '' || this.modalData.active == null) {
  533. this.$message.warning('选择是否在用!')
  534. return
  535. }
  536. if (this.modalData.flag === '1') {
  537. eamAdminLevelSave(this.modalData).then(({data}) => {
  538. if (data && data.code === '0') {
  539. this.getDataList()
  540. this.modalFlag = false
  541. this.$message({
  542. message: '操作成功',
  543. type: 'success',
  544. duration: 1500,
  545. onClose: () => {}
  546. })
  547. } else {
  548. this.$alert(data.msg, '错误', {
  549. confirmButtonText: '确定'
  550. })
  551. }
  552. })
  553. } else {
  554. eamAdminLevelEdit(this.modalData).then(({data}) => {
  555. if (data && data.code === '0') {
  556. this.getDataList()
  557. this.modalFlag=false
  558. this.$message({
  559. message: '操作成功',
  560. type: 'success',
  561. duration: 1500,
  562. onClose: () => {}
  563. })
  564. } else {
  565. this.$alert(data.msg, '错误', {
  566. confirmButtonText: '确定'
  567. })
  568. }
  569. })
  570. }
  571. },
  572. //导出excel
  573. async createExportData () {
  574. this.searchData.limit = -1
  575. this.searchData.page = 1
  576. await eamAdminLevelSearch(this.searchData).then(({data}) => {
  577. this.exportList = data.page.list
  578. })
  579. return this.exportList
  580. },
  581. startDownload () {},
  582. finishDownload () {},
  583. fields () {
  584. let json = "{"
  585. this.columnList.forEach((item, index) => {
  586. if (index == this.columnList.length - 1) {
  587. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\""
  588. } else {
  589. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\"" + ","
  590. }
  591. })
  592. json += "}"
  593. let s = eval("(" + json + ")")
  594. return s
  595. },
  596. // 动态列开始 获取 用户保存的 格式列
  597. async getTableUserColumn (tableId, columnId) {
  598. let queryTableUser = {
  599. userId: this.$store.state.user.name,
  600. functionId: this.$route.meta.menuId,
  601. tableId: tableId,
  602. status: true,
  603. languageCode: this.$i18n.locale
  604. }
  605. await getTableUserListLanguage(queryTableUser).then(({data}) => {
  606. if (data.rows.length > 0) {
  607. //this.columnList1 = []
  608. switch (columnId) {
  609. case 1:
  610. this.columnList = data.rows
  611. break;
  612. // case 2:
  613. // this.detailColumnList = data.rows
  614. // break;
  615. // case 3:
  616. // this.columnList2 = data.rows
  617. // break;
  618. // case 4:
  619. // this.columnList3 = data.rows
  620. // break;
  621. }
  622. } else {
  623. this.getColumnList(tableId, columnId)
  624. }
  625. })
  626. },
  627. // 获取 tableDefault 列
  628. async getColumnList (tableId, columnId) {
  629. let queryTable = {
  630. functionId: this.$route.meta.menuId,
  631. tableId: tableId,
  632. languageCode: this.$i18n.locale
  633. }
  634. await getTableDefaultListLanguage(queryTable).then(({data}) => {
  635. if (!data.rows.length == 0) {
  636. switch (columnId) {
  637. case 1:
  638. this.columnList = data.rows
  639. break;
  640. // case 2:
  641. // this.detailColumnList = data.rows
  642. // break;
  643. // case 3:
  644. // this.columnList2 = data.rows
  645. // break;
  646. // case 4:
  647. // this.columnList3 = data.rows
  648. // break;
  649. }
  650. } else {
  651. // this.showDefault = true.
  652. }
  653. })
  654. },
  655. }
  656. }
  657. </script>