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.

708 lines
22 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 v-if="!authSearch" @click="getDataList()">查询</el-button>
  34. <el-button v-if="!authSave" 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 v-if="!authUpdate" type="text" size="small" @click="updateModal(scope.row)">修改</a>
  79. <a v-if="!authDelete" 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.sitename"
  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: 100,
  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: 170,
  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: "center",
  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: 170,
  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: ['blur','change']
  352. }
  353. ],
  354. adminLevelDescType:[
  355. {
  356. required: true,
  357. message: ' ',
  358. trigger: ['blur','change']
  359. }
  360. ],
  361. activeType:[
  362. {
  363. required: true,
  364. message: ' ',
  365. trigger: ['blur','change']
  366. }
  367. ],
  368. bu:[
  369. {
  370. required: true,
  371. message: ' ',
  372. trigger: ['blur','change']
  373. }
  374. ]
  375. },
  376. userBuList: [],
  377. authSearch: false,
  378. authSave: false,
  379. authUpdate: false,
  380. authDelete: false,
  381. menuId: this.$route.meta.menuId,
  382. }
  383. },
  384. mounted () {
  385. this.$nextTick(() => {
  386. this.height = window.innerHeight - 210
  387. })
  388. },
  389. created () {
  390. // 按钮控制
  391. this.getButtonAuthData()
  392. // 获取用户的 site 和 bu
  393. this.getSiteAndBuByUserName()
  394. // 校验用户是否收藏
  395. this.favoriteIsOk()
  396. // 动态列
  397. this.getTableUserColumn(this.$route.meta.menuId+'table1',1)
  398. if (!this.authSearch) {
  399. // 获取数据列表
  400. this.getDataList()
  401. }
  402. },
  403. methods: {
  404. // 获取用户的bu
  405. getSiteAndBuByUserName () {
  406. let tempData = {
  407. username: this.$store.state.user.name,
  408. }
  409. getSiteAndBuByUserName(tempData).then(({data}) => {
  410. if (data.code === 0) {
  411. this.userBuList = data.rows
  412. }
  413. })
  414. },
  415. // 校验用户是否收藏
  416. favoriteIsOk () {
  417. let userFavorite = {
  418. userId: this.$store.state.user.id,
  419. languageCode: this.$i18n.locale
  420. }
  421. userFavoriteList(userFavorite).then(({data}) => {
  422. for (let i = 0; i < data.list.length; i++) {
  423. if(this.$route.meta.menuId==data.list[i].menuId){
  424. this.favorite = true
  425. }
  426. }
  427. })
  428. },
  429. // 收藏 OR 取消收藏
  430. favoriteFunction () {
  431. let userFavorite = {
  432. userId: this.$store.state.user.id,
  433. functionId: this.$route.meta.menuId,
  434. }
  435. if (this.favorite) {
  436. removeUserFavorite(userFavorite).then(({data}) => {
  437. this.$message.success(data.msg)
  438. this.favorite = false
  439. })
  440. } else {
  441. // 收藏
  442. saveUserFavorite(userFavorite).then(({data}) => {
  443. this.$message.success(data.msg)
  444. this.favorite = true
  445. })
  446. }
  447. },
  448. // 获取数据列表
  449. getDataList () {
  450. this.searchData.limit = this.pageSize
  451. this.searchData.page = this.pageIndex
  452. eamAdminLevelSearch(this.searchData).then(({data}) => {
  453. if (data.code === 0) {
  454. this.dataList = data.page.list
  455. this.pageIndex = data.page.currPage
  456. this.pageSize = data.page.pageSize
  457. this.totalPage = data.page.totalCount
  458. }
  459. })
  460. },
  461. // 每页数
  462. sizeChangeHandle (val) {
  463. this.pageSize = val
  464. this.pageIndex = 1
  465. this.getDataList()
  466. },
  467. // 当前页
  468. currentChangeHandle (val) {
  469. this.pageIndex = val
  470. this.getDataList()
  471. },
  472. // 多选
  473. selectionChangeHandle (val) {
  474. this.dataListSelections = val
  475. },
  476. addModal () {
  477. this.modalData = {
  478. flag: '1',
  479. bu: this.userBuList[0].buNo,
  480. site: this.$store.state.user.site,
  481. adminLevelID: '',
  482. adminLevelDesc: '',
  483. active: 'Y',
  484. createBy: this.$store.state.user.name,
  485. updateBy: this.$store.state.user.name,
  486. }
  487. this.modalDisableFlag = false
  488. this.modalFlag = true
  489. },
  490. updateModal (row) {
  491. this.modalData = {
  492. flag: '2',
  493. bu: row.site + '_' + row.buNo,
  494. site: row.site,
  495. adminLevelID: row.adminLevelID,
  496. adminLevelDesc: row.adminLevelDesc,
  497. active: row.active,
  498. updateBy: this.$store.state.user.name,
  499. }
  500. this.modalDisableFlag = true
  501. this.modalFlag = true
  502. },
  503. // 删除
  504. deleteAdminLevel (row) {
  505. this.$confirm(`是否删除这个机修人员等级?`, '提示', {
  506. confirmButtonText: '确定',
  507. cancelButtonText: '取消',
  508. type: 'warning'
  509. }).then(() => {
  510. eamAdminLevelDelete(row).then(({data}) => {
  511. if (data && data.code === '0') {
  512. this.getDataList()
  513. this.$message({
  514. message: '操作成功',
  515. type: 'success',
  516. duration: 1500,
  517. onClose: () => {}
  518. })
  519. } else {
  520. this.$alert(data.msg, '错误', {
  521. confirmButtonText: '确定'
  522. })
  523. }
  524. })
  525. }).catch(() => {
  526. })
  527. },
  528. saveData () {
  529. if (this.modalData.bu === '' || this.modalData.bu == null) {
  530. this.$message.warning('请选择BU!')
  531. return
  532. }
  533. if (this.modalData.adminLevelID === '' || this.modalData.adminLevelID == null) {
  534. this.$message.warning('请输入机修人员等级编码!')
  535. return
  536. }
  537. if (this.modalData.adminLevelDesc === '' || this.modalData.adminLevelDesc == null) {
  538. this.$message.warning('请输入机修人员等级名称!')
  539. return
  540. }
  541. if (this.modalData.active === '' || this.modalData.active == null) {
  542. this.$message.warning('选择是否在用!')
  543. return
  544. }
  545. if (this.modalData.flag === '1') {
  546. eamAdminLevelSave(this.modalData).then(({data}) => {
  547. if (data && data.code === '0') {
  548. this.getDataList()
  549. this.modalFlag = false
  550. this.$message({
  551. message: '操作成功',
  552. type: 'success',
  553. duration: 1500,
  554. onClose: () => {}
  555. })
  556. } else {
  557. this.$alert(data.msg, '错误', {
  558. confirmButtonText: '确定'
  559. })
  560. }
  561. })
  562. } else {
  563. eamAdminLevelEdit(this.modalData).then(({data}) => {
  564. if (data && data.code === '0') {
  565. this.getDataList()
  566. this.modalFlag=false
  567. this.$message({
  568. message: '操作成功',
  569. type: 'success',
  570. duration: 1500,
  571. onClose: () => {}
  572. })
  573. } else {
  574. this.$alert(data.msg, '错误', {
  575. confirmButtonText: '确定'
  576. })
  577. }
  578. })
  579. }
  580. },
  581. //导出excel
  582. async createExportData () {
  583. this.searchData.limit = -1
  584. this.searchData.page = 1
  585. await eamAdminLevelSearch(this.searchData).then(({data}) => {
  586. this.exportList = data.page.list
  587. })
  588. return this.exportList
  589. },
  590. startDownload () {},
  591. finishDownload () {},
  592. fields () {
  593. let json = "{"
  594. this.columnList.forEach((item, index) => {
  595. if (index == this.columnList.length - 1) {
  596. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\""
  597. } else {
  598. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\"" + ","
  599. }
  600. })
  601. json += "}"
  602. let s = eval("(" + json + ")")
  603. return s
  604. },
  605. // 动态列开始 获取 用户保存的 格式列
  606. async getTableUserColumn (tableId, columnId) {
  607. let queryTableUser = {
  608. userId: this.$store.state.user.name,
  609. functionId: this.$route.meta.menuId,
  610. tableId: tableId,
  611. status: true,
  612. languageCode: this.$i18n.locale
  613. }
  614. await getTableUserListLanguage(queryTableUser).then(({data}) => {
  615. if (data.rows.length > 0) {
  616. //this.columnList1 = []
  617. switch (columnId) {
  618. case 1:
  619. this.columnList = data.rows
  620. break;
  621. // case 2:
  622. // this.detailColumnList = data.rows
  623. // break;
  624. // case 3:
  625. // this.columnList2 = data.rows
  626. // break;
  627. // case 4:
  628. // this.columnList3 = data.rows
  629. // break;
  630. }
  631. } else {
  632. this.getColumnList(tableId, columnId)
  633. }
  634. })
  635. },
  636. // 获取 tableDefault 列
  637. async getColumnList (tableId, columnId) {
  638. let queryTable = {
  639. functionId: this.$route.meta.menuId,
  640. tableId: tableId,
  641. languageCode: this.$i18n.locale
  642. }
  643. await getTableDefaultListLanguage(queryTable).then(({data}) => {
  644. if (!data.rows.length == 0) {
  645. switch (columnId) {
  646. case 1:
  647. this.columnList = data.rows
  648. break;
  649. // case 2:
  650. // this.detailColumnList = data.rows
  651. // break;
  652. // case 3:
  653. // this.columnList2 = data.rows
  654. // break;
  655. // case 4:
  656. // this.columnList3 = data.rows
  657. // break;
  658. }
  659. } else {
  660. // this.showDefault = true.
  661. }
  662. })
  663. },
  664. //获取按钮的权限数据
  665. getButtonAuthData () {
  666. let searchFlag = this.isAuth(this.menuId+":search")
  667. let saveFlag = this.isAuth(this.menuId+":save")
  668. let updateFlag = this.isAuth(this.menuId+":update")
  669. let deleteFlag = this.isAuth(this.menuId+":delete")
  670. //处理页面的权限数据
  671. this.authSearch = !searchFlag
  672. this.authSave = !saveFlag
  673. this.authUpdate = !updateFlag
  674. this.authDelete = !deleteFlag
  675. },
  676. }
  677. }
  678. </script>
  679. <style scoped>
  680. .el-table /deep/ .cell{
  681. height: auto;
  682. line-height: 1.5;
  683. }
  684. </style>