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.

1059 lines
34 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
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="'机修人员编码'">
  10. <el-input v-model="searchData.adminID" clearable style="width: 120px"></el-input>
  11. </el-form-item>
  12. <el-form-item :label="'机修人员姓名'">
  13. <el-input v-model="searchData.adminName" clearable style="width: 120px"></el-input>
  14. </el-form-item>
  15. <el-form-item :label="'所属部门'">
  16. <el-input v-model="searchData.departmentName" clearable style="width: 120px"></el-input>
  17. </el-form-item>
  18. <el-form-item :label="'在用'">
  19. <el-select filterable v-model="searchData.active" style="width: 130px">
  20. <el-option label="全部" value=""></el-option>
  21. <el-option label="是" value="Y"></el-option>
  22. <el-option label="否" value="N"></el-option>
  23. </el-select>
  24. </el-form-item>
  25. <el-form-item :label="' '">
  26. <el-button @click="getDataList()">查询</el-button>
  27. <el-button type="primary" @click="addModal()">新增</el-button>
  28. <download-excel
  29. :fields="fields()"
  30. :data="exportData"
  31. type="xls"
  32. :name="exportName"
  33. :header="exportHeader"
  34. :footer="exportFooter"
  35. :fetch="createExportData"
  36. :before-generate="startDownload"
  37. :before-finish="finishDownload"
  38. worksheet="导出信息"
  39. class="el-button el-button--primary el-button--medium">
  40. {{ "导出" }}
  41. </download-excel>
  42. </el-form-item>
  43. </el-form>
  44. <el-table
  45. :height="height"
  46. :data="dataList"
  47. border
  48. v-loading="dataListLoading"
  49. style="width: 100%;">
  50. <!-- <el-table-column-->
  51. <!-- prop="adminID"-->
  52. <!-- header-align="center"-->
  53. <!-- align="center"-->
  54. <!-- label="机修人员编码"-->
  55. <!-- :width="flexColumnWidth('机修人员编码','adminID')">-->
  56. <!-- </el-table-column>-->
  57. <!-- <el-table-column-->
  58. <!-- prop="adminName"-->
  59. <!-- header-align="center"-->
  60. <!-- align="center"-->
  61. <!-- label="机修人员姓名"-->
  62. <!-- :width="flexColumnWidth('机修人员姓名','adminName')">-->
  63. <!-- </el-table-column>-->
  64. <!-- <el-table-column-->
  65. <!-- prop="active"-->
  66. <!-- header-align="center"-->
  67. <!-- align="center"-->
  68. <!-- label="在用">-->
  69. <!-- <template slot-scope="scope">-->
  70. <!-- <div v-if="scope.row.active === 'Y'">-->
  71. <!-- -->
  72. <!-- </div>-->
  73. <!-- <div v-if="scope.row.active === 'N'">-->
  74. <!-- -->
  75. <!-- </div>-->
  76. <!-- </template>-->
  77. <!-- </el-table-column>-->
  78. <!-- <el-table-column-->
  79. <!-- prop="departmentName"-->
  80. <!-- header-align="center"-->
  81. <!-- align="left"-->
  82. <!-- label="部门"-->
  83. <!-- :width="flexColumnWidth('部门','departmentName')">-->
  84. <!-- </el-table-column>-->
  85. <el-table-column
  86. v-for="(item,index) in columnList" :key="index"
  87. :sortable="item.columnSortable"
  88. :prop="item.columnProp"
  89. :header-align="item.headerAlign"
  90. :show-overflow-tooltip="item.showOverflowTooltip"
  91. :align="item.align"
  92. :fixed="item.fixed==''?false:item.fixed"
  93. :min-width="item.columnWidth"
  94. :label="item.columnLabel">
  95. <template slot-scope="scope">
  96. <span v-if="!item.columnHidden"> {{ scope.row[item.columnProp] }}</span>
  97. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  98. </template>
  99. </el-table-column>
  100. <el-table-column
  101. fixed="right"
  102. header-align="center"
  103. align="center"
  104. width="100"
  105. label="操作">
  106. <template slot-scope="scope">
  107. <a type="text" size="small" @click="updateModal(scope.row)">修改</a>
  108. <a type="text" size="small" @click="deleteAdmin(scope.row)">删除</a>
  109. </template>
  110. </el-table-column>
  111. </el-table>
  112. <el-pagination
  113. @size-change="sizeChangeHandle"
  114. @current-change="currentChangeHandle"
  115. :current-page="pageIndex"
  116. :page-sizes="[20, 50, 100, 200, 500]"
  117. :page-size="pageSize"
  118. :total="totalPage"
  119. layout="total, sizes, prev, pager, next, jumper">
  120. </el-pagination>
  121. <el-dialog title="机修人员" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="430px">
  122. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  123. <el-form-item label="机修人员编码:" prop="adminID" :rules="rules.adminIdType">
  124. <el-input v-model="modalData.adminID" :disabled="modalDisableFlag" style="width: 120px"></el-input>
  125. </el-form-item>
  126. <el-form-item label="机修人员姓名:" prop="adminName" :rules="rules.adminNameType">
  127. <el-input v-model="modalData.adminName" style="width: 120px"></el-input>
  128. </el-form-item>
  129. <el-form-item label="是否在用:" prop="active" :rules="rules.activeType">
  130. <el-select filterable v-model="modalData.active" style="width: 120px">
  131. <el-option label="是" value="Y"></el-option>
  132. <el-option label="否" value="N"></el-option>
  133. </el-select>
  134. </el-form-item>
  135. </el-form>
  136. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  137. <el-form-item prop="departmentName" :rules="rules.departmentNameType">
  138. <span slot="label" style="" @click="getDepartmentList()"><a>部门</a></span>
  139. <el-input v-model="modalData.departmentName" style="width: 383px"></el-input>
  140. </el-form-item>
  141. <el-form-item label="手机号码:">
  142. <el-input v-model="modalData.phone" style="width: 189px"></el-input>
  143. </el-form-item>
  144. <el-form-item label="公司座机:">
  145. <el-input v-model="modalData.tel" style="width: 189px"></el-input>
  146. </el-form-item>
  147. </el-form>
  148. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  149. <el-form-item label="邮箱:">
  150. <el-input v-model="modalData.email" style="width: 189px"></el-input>
  151. </el-form-item>
  152. <el-form-item prop="levelDesc" :rules="rules.levelDescType">
  153. <span slot="label" style="" @click="getBaseList(202)"><a herf="#">工种</a></span>
  154. <el-input v-model="modalData.levelDesc" style="width: 189px"></el-input>
  155. </el-form-item>
  156. </el-form>
  157. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  158. <el-form-item label="登录账号:">
  159. <el-select v-model="modalData.mesUser" placeholder="请选择" style="width: 234px">
  160. <el-option
  161. v-for = "i in mesList"
  162. :key = "i.username"
  163. :label = "i.username"
  164. :value = "i.username">
  165. </el-option>
  166. </el-select>
  167. </el-form-item>
  168. </el-form>
  169. <el-footer style="height:40px;margin-top: 10px;text-align:center">
  170. <el-button type="primary" @click="saveData()">保存</el-button>
  171. <el-button type="primary" @click="modalFlag = false">关闭</el-button>
  172. </el-footer>
  173. </el-dialog>
  174. <!-- 部门 -->
  175. <el-dialog title="部门清单" :close-on-click-modal="false" v-drag :visible.sync="departmentModelFlag" width="520px">
  176. <div class="rq">
  177. <el-form :inline="true" label-position="top" :model="departmentData">
  178. <el-form-item :label="'部门编码'">
  179. <el-input v-model="departmentData.deptId" clearable style="width: 120px"></el-input>
  180. </el-form-item>
  181. <el-form-item :label="'部门名称'">
  182. <el-input v-model="departmentData.deptName" clearable style="width: 120px"></el-input>
  183. </el-form-item>
  184. <el-form-item :label="' '">
  185. <el-button type="primary" @click="getDepartmentList()">查询</el-button>
  186. </el-form-item>
  187. </el-form>
  188. <el-table
  189. :height="300"
  190. :data="departmentList"
  191. ref="departmentTable"
  192. @row-click="departmentClickRow"
  193. @selection-change="selectionDepartment"
  194. :row-key="getRowKeys"
  195. border
  196. v-loading="dataListLoading"
  197. style="width: 100%;">
  198. <el-table-column
  199. type="selection"
  200. header-align="center"
  201. align="center"
  202. :reserve-selection="true"
  203. width="50">
  204. </el-table-column>
  205. <el-table-column
  206. v-for="(item,index) in departmentDetailList" :key="index"
  207. :sortable="item.columnSortable"
  208. :prop="item.columnProp"
  209. :header-align="item.headerAlign"
  210. :show-overflow-tooltip="item.showOverflowTooltip"
  211. :align="item.align"
  212. :fixed="item.fixed==''?false:item.fixed"
  213. :min-width="item.columnWidth"
  214. :label="item.columnLabel">
  215. <template slot-scope="scope">
  216. <span v-if="!item.columnHidden">{{scope.row[item.columnProp]}}</span>
  217. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  218. </template>
  219. </el-table-column>
  220. </el-table>
  221. </div>
  222. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  223. <el-button type="primary" @click="confirmDepartment()">确认</el-button>
  224. <el-button type="primary" @click="departmentModelFlag = false">关闭</el-button>
  225. </el-footer>
  226. </el-dialog>
  227. <Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
  228. </div>
  229. </template>
  230. <script>
  231. import {
  232. eamAdminSearch,
  233. eamAdminSave,
  234. eamAdminEdit,
  235. eamAdminDelete,
  236. getEmpyDeptList,
  237. getMesList, // 获取可用的MES账号
  238. } from "@/api/eam/eam.js"
  239. import Chooselist from '@/views/modules/common/Chooselist_eam'
  240. import {userFavoriteList, saveUserFavorite, removeUserFavorite} from '@/api/userFavorite.js'
  241. export default {
  242. components: {
  243. Chooselist
  244. },
  245. watch: {
  246. searchData: {
  247. deep: true,
  248. handler: function (newV, oldV) {
  249. this.searchData.adminID = this.searchData.adminID.toUpperCase()
  250. }
  251. },
  252. modalData: {
  253. deep: true,
  254. handler: function (newV, oldV) {
  255. this.modalData.adminID = this.modalData.adminID.toUpperCase()
  256. this.modalData.levelID = this.modalData.levelID.toUpperCase()
  257. //this.modalData.department= this.modalData.department.toUpperCase()
  258. }
  259. }
  260. },
  261. data () {
  262. return {
  263. // 是否收藏
  264. favorite: false,
  265. // 导出 start
  266. exportData: [],
  267. exportName: "机修人员" + this.dayjs().format('YYYYMMDDHHmmss'),
  268. exportHeader: ["机修人员"],
  269. exportFooter: [],
  270. exportList:[],
  271. // 导出 end
  272. tagNo:'',
  273. searchData: {
  274. site: this.$store.state.user.site,
  275. adminID: '',
  276. adminName: '',
  277. departmentName: '',
  278. active: 'Y',
  279. page: 1,
  280. limit: 10,
  281. },
  282. pageIndex: 1,
  283. pageSize: 50,
  284. totalPage: 0,
  285. height: 200,
  286. dataList: [],
  287. dataListLoading: false,
  288. dataListSelections: [],
  289. modalFlag:false,
  290. modalDisableFlag:false,
  291. modalData:{
  292. flag:'',
  293. site: this.$store.state.user.site,
  294. adminID:'',
  295. adminName:'',
  296. active:'',
  297. department:'',
  298. departmentName:'',
  299. phone:'',
  300. tel:'',
  301. email:'',
  302. levelID:'',
  303. levelDesc: '',
  304. mesUser:'',
  305. createdBy: this.$store.state.user.name,
  306. updateBy: this.$store.state.user.name,
  307. },
  308. departmentList:[],
  309. // 展示列集
  310. columnList: [
  311. {
  312. userId: this.$store.state.user.name,
  313. functionId: 101001007,
  314. serialNumber: '101001007Table1AdminID',
  315. tableId: "101001007Table1",
  316. tableName: "机修人员表",
  317. columnProp: 'adminID',
  318. headerAlign: "center",
  319. align: "left",
  320. columnLabel: '机修人员编码',
  321. columnHidden: false,
  322. columnImage: false,
  323. columnSortable: false,
  324. sortLv: 0,
  325. status: true,
  326. fixed: '',
  327. columnWidth: 80,
  328. },
  329. {
  330. userId: this.$store.state.user.name,
  331. functionId: 101001007,
  332. serialNumber: '101001007Table1AdminName',
  333. tableId: "101001007Table1",
  334. tableName: "机修人员表",
  335. columnProp: 'adminName',
  336. headerAlign: "center",
  337. align: "left",
  338. columnLabel: '机修人员姓名',
  339. columnHidden: false,
  340. columnImage: false,
  341. columnSortable: false,
  342. sortLv: 0,
  343. status: true,
  344. fixed: '',
  345. columnWidth: 117,
  346. },
  347. {
  348. userId: this.$store.state.user.name,
  349. functionId: 101001007,
  350. serialNumber: '101001007Table1Active',
  351. tableId: "101001007Table1",
  352. tableName: "机修人员表",
  353. columnProp: 'active',
  354. headerAlign: "center",
  355. align: "center",
  356. columnLabel: '在用',
  357. columnHidden: false,
  358. columnImage: false,
  359. columnSortable: false,
  360. sortLv: 0,
  361. status: true,
  362. fixed: '',
  363. columnWidth: 70,
  364. },
  365. {
  366. userId: this.$store.state.user.name,
  367. functionId: 101001007,
  368. serialNumber: '101001007Table1DepartmentName',
  369. tableId: "101001007Table1",
  370. tableName: "机修人员表",
  371. columnProp: 'departmentName',
  372. headerAlign: "center",
  373. align: "left",
  374. columnLabel: '部门',
  375. columnHidden: false,
  376. columnImage: false,
  377. columnSortable: false,
  378. sortLv: 0,
  379. status: true,
  380. fixed: '',
  381. columnWidth: 370,
  382. },
  383. {
  384. userId: this.$store.state.user.name,
  385. functionId: 101001007,
  386. serialNumber: '101001007Table1Phone',
  387. tableId: "101001007Table1",
  388. tableName: "机修人员表",
  389. columnProp: 'phone',
  390. headerAlign: "center",
  391. align: "center",
  392. columnLabel: '手机号码',
  393. columnHidden: false,
  394. columnImage: false,
  395. columnSortable: false,
  396. sortLv: 0,
  397. status: true,
  398. fixed: '',
  399. columnWidth: 80,
  400. },
  401. {
  402. userId: this.$store.state.user.name,
  403. functionId: 101001007,
  404. serialNumber: '101001007Table1Tel',
  405. tableId: "101001007Table1",
  406. tableName: "机修人员表",
  407. columnProp: 'tel',
  408. headerAlign: "center",
  409. align: "center",
  410. columnLabel: '公司座机',
  411. columnHidden: false,
  412. columnImage: false,
  413. columnSortable: false,
  414. sortLv: 0,
  415. status: true,
  416. fixed: '',
  417. columnWidth: 90,
  418. },
  419. {
  420. userId: this.$store.state.user.name,
  421. functionId: 101001007,
  422. serialNumber: '101001007Table1Email',
  423. tableId: "101001007Table1",
  424. tableName: "机修人员表",
  425. columnProp: 'email',
  426. headerAlign: "center",
  427. align: "left",
  428. columnLabel: '邮箱',
  429. columnHidden: false,
  430. columnImage: false,
  431. columnSortable: false,
  432. sortLv: 0,
  433. status: true,
  434. fixed: '',
  435. columnWidth: 161,
  436. },
  437. {
  438. userId: this.$store.state.user.name,
  439. functionId: 101001007,
  440. serialNumber: '101001007Table1AdminLevelDesc',
  441. tableId: "101001007Table1",
  442. tableName: "机修人员表",
  443. columnProp: 'adminLevelDesc',
  444. headerAlign: "center",
  445. align: "left",
  446. columnLabel: '工种',
  447. columnHidden: false,
  448. columnImage: false,
  449. columnSortable: false,
  450. sortLv: 0,
  451. status: true,
  452. fixed: '',
  453. columnWidth: 143,
  454. },
  455. {
  456. userId: this.$store.state.user.name,
  457. functionId: 101001007,
  458. serialNumber: '101001007Table1MesUser',
  459. tableId: "101001007Table1",
  460. tableName: "机修人员表",
  461. columnProp: 'mesUser',
  462. headerAlign: "center",
  463. align: "left",
  464. columnLabel: '登录账号',
  465. columnHidden: false,
  466. columnImage: false,
  467. columnSortable: false,
  468. sortLv: 0,
  469. status: true,
  470. fixed: '',
  471. columnWidth: 70,
  472. },
  473. {
  474. userId: this.$store.state.user.name,
  475. functionId: 101001007,
  476. serialNumber: '101001007Table1CreatedDate',
  477. tableId: "101001007Table1",
  478. tableName: "机修人员表",
  479. columnProp: 'createdDate',
  480. headerAlign: "center",
  481. align: "center",
  482. columnLabel: '创建时间',
  483. columnHidden: false,
  484. columnImage: false,
  485. columnSortable: false,
  486. sortLv: 0,
  487. status: true,
  488. fixed: '',
  489. columnWidth: 125,
  490. },
  491. {
  492. userId: this.$store.state.user.name,
  493. functionId: 101001007,
  494. serialNumber: '101001007Table1CreatedBy',
  495. tableId: "101001007Table1",
  496. tableName: "机修人员表",
  497. columnProp: 'createdBy',
  498. headerAlign: "center",
  499. align: "left",
  500. columnLabel: '创建人',
  501. columnHidden: false,
  502. columnImage: false,
  503. columnSortable: false,
  504. sortLv: 0,
  505. status: true,
  506. fixed: '',
  507. columnWidth: 70,
  508. },
  509. {
  510. userId: this.$store.state.user.name,
  511. functionId: 101001007,
  512. serialNumber: '101001007Table1UpdateDate',
  513. tableId: "101001007Table1",
  514. tableName: "机修人员表",
  515. columnProp: 'updateDate',
  516. headerAlign: "center",
  517. align: "center",
  518. columnLabel: '更新时间',
  519. columnHidden: false,
  520. columnImage: false,
  521. columnSortable: false,
  522. sortLv: 0,
  523. status: true,
  524. fixed: '',
  525. columnWidth: 125,
  526. },
  527. {
  528. userId: this.$store.state.user.name,
  529. functionId: 101001007,
  530. serialNumber: '101001007Table1UpdateBy',
  531. tableId: "101001007Table1",
  532. tableName: "机修人员表",
  533. columnProp: 'updateBy',
  534. headerAlign: "center",
  535. align: "left",
  536. columnLabel: '更新人',
  537. columnHidden: false,
  538. columnImage: false,
  539. columnSortable: false,
  540. sortLv: 0,
  541. status: true,
  542. fixed: '',
  543. columnWidth: 70,
  544. },
  545. ],
  546. levelList:[],
  547. departmentModelFlag: false,
  548. departmentData: {
  549. site: this.$store.state.user.site,
  550. deptId: '',
  551. deptName: '',
  552. },
  553. departmentListSelections: [],
  554. departmentDetailList: [
  555. {
  556. columnProp: 'deptId',
  557. headerAlign: "center",
  558. align: "left",
  559. columnLabel: '部门编码',
  560. columnHidden: false,
  561. columnImage: false,
  562. columnSortable: false,
  563. sortLv: 0,
  564. status: true,
  565. fixed: '',
  566. },
  567. {
  568. columnProp: 'deptName',
  569. headerAlign: "center",
  570. align: "left",
  571. columnLabel: '部门名称',
  572. columnHidden: false,
  573. columnImage: false,
  574. columnSortable: false,
  575. sortLv: 0,
  576. status: true,
  577. fixed: '',
  578. },
  579. ],
  580. mesList: [],
  581. rules:{
  582. adminIdType:[
  583. {
  584. required: true,
  585. message: ' ',
  586. trigger: 'change'
  587. }
  588. ],
  589. adminNameType:[
  590. {
  591. required: true,
  592. message: ' ',
  593. trigger: 'change'
  594. }
  595. ],
  596. activeType:[
  597. {
  598. required: true,
  599. message: ' ',
  600. trigger: 'change'
  601. }
  602. ],
  603. departmentNameType:[
  604. {
  605. required: true,
  606. message: ' ',
  607. trigger: 'change'
  608. }
  609. ],
  610. levelDescType:[
  611. {
  612. required: true,
  613. message: ' ',
  614. trigger: 'change'
  615. }
  616. ],
  617. }
  618. }
  619. },
  620. mounted () {
  621. this.$nextTick(() => {
  622. this.height = window.innerHeight - 210
  623. })
  624. },
  625. created () {
  626. this.favoriteIsOk()
  627. this.getDataList()
  628. // 动态列
  629. this.getTableUserColumn(this.$route.meta.menuId+'table1',1)
  630. },
  631. methods: {
  632. /**
  633. * 自适应
  634. * @param label
  635. * @param prop
  636. * @returns {string}
  637. */
  638. flexColumnWidth (label, prop) {
  639. // 1.获取该列的所有数据
  640. const arr = this.dataList.map(x => x[prop])
  641. arr.push(label) // 把每列的表头也加进去算
  642. // 2.计算每列内容最大的宽度 + 表格的内间距(依据实际情况而定)
  643. return (this.getMaxLength(arr) + 25) + 'px'
  644. },
  645. getTextWidth (str) {
  646. let width = 0
  647. const html = document.createElement('span')
  648. html.innerText = str
  649. html.className = 'getTextWidth'
  650. document.querySelector('body').appendChild(html)
  651. width = document.querySelector('.getTextWidth').offsetWidth
  652. document.querySelector('.getTextWidth').remove()
  653. return width
  654. },
  655. getMaxLength (arr) {
  656. return arr.reduce((acc, item) => {
  657. if (item) {
  658. const calcLen = this.getTextWidth(item)
  659. if (acc < calcLen) {
  660. acc = calcLen
  661. }
  662. }
  663. return acc
  664. }, 0)
  665. },
  666. // 部门
  667. departmentClickRow(row){
  668. this.$refs.departmentTable.toggleRowSelection(row);
  669. },
  670. // 多选
  671. selectionDepartment (val) {
  672. this.departmentListSelections = val
  673. },
  674. getRowKeys(row) {
  675. //唯一值,一般都为id
  676. return row.deptId;
  677. },
  678. selectFlag(){
  679. return true;
  680. },
  681. // 确认多选部门
  682. confirmDepartment(){
  683. if(this.departmentListSelections.length === 0){
  684. this.$alert('请勾选部门!', '提示', {
  685. confirmButtonText: '确定'
  686. })
  687. return false
  688. }
  689. this.modalData.department = ''
  690. this.modalData.departmentName = ''
  691. for (let i = 0; i < this.departmentListSelections.length; i++) {
  692. this.modalData.department = this.modalData.department + ";" + this.departmentListSelections[i].deptId
  693. this.modalData.departmentName = this.modalData.departmentName + ";" + this.departmentListSelections[i].deptName
  694. }
  695. this.modalData.department = this.modalData.department.substring(1)
  696. this.modalData.departmentName = this.modalData.departmentName.substring(1)
  697. this.departmentModelFlag = false
  698. },
  699. // 获取基础数据列表S
  700. getBaseList (val) {
  701. this.tagNo = val
  702. this.$nextTick(() => {
  703. let strVal = ''
  704. if (val === 202) {
  705. strVal = this.modalData.levelID
  706. }
  707. this.$refs.baseList.init(val, strVal)
  708. })
  709. },
  710. /* 列表方法的回调 */
  711. getBaseData (val) {
  712. if (this.tagNo === 202) {
  713. this.modalData.levelID = val.AdminLevelID
  714. this.$set(this.modalData,'levelDesc',val.AdminLevelDesc);
  715. }
  716. },
  717. //导出excel
  718. async createExportData() {
  719. // this.searchData.limit = -1
  720. // this.searchData.page = 1
  721. await eamAdminSearch(this.searchData).then(({data}) => {
  722. this.exportList= data.rows
  723. })
  724. return this.exportList;
  725. },
  726. startDownload() {
  727. },
  728. finishDownload() {
  729. },
  730. fields() {
  731. let json = "{"
  732. this.columnList.forEach((item, index) => {
  733. if (index == this.columnList.length - 1) {
  734. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\""
  735. } else {
  736. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\"" + ","
  737. }
  738. })
  739. json += "}"
  740. let s = eval("(" + json + ")")
  741. return s
  742. },
  743. // 导出 end
  744. // 获取数据列表
  745. getDataList () {
  746. // this.searchData.limit = this.pageSize
  747. // this.searchData.page = this.pageIndex
  748. eamAdminSearch(this.searchData).then(({data}) => {
  749. if (data.code === 0) {
  750. this.dataList = data.rows
  751. // this.pageIndex = data.page.currPage
  752. // this.pageSize = data.page.pageSize
  753. // this.totalPage = data.page.totalCount
  754. }
  755. this.dataListLoading = false
  756. })
  757. },
  758. // 每页数
  759. sizeChangeHandle (val) {
  760. this.pageSize = val
  761. this.pageIndex = 1
  762. this.getDataList()
  763. },
  764. // 当前页
  765. currentChangeHandle (val) {
  766. this.pageIndex = val
  767. this.getDataList()
  768. },
  769. // 多选
  770. selectionChangeHandle (val) {
  771. this.dataListSelections = val
  772. },
  773. addModal(){
  774. this.modalData = {
  775. flag:'1',
  776. site: this.$store.state.user.site,
  777. adminID:'',
  778. adminName:'',
  779. active:'Y',
  780. departmentName: '',
  781. department:'',
  782. phone:'',
  783. tel:'',
  784. email:'',
  785. levelID:'',
  786. levelDesc:'',
  787. mesUser:'',
  788. createdBy: this.$store.state.user.name,
  789. updateBy: this.$store.state.user.name,
  790. };
  791. let inData = {
  792. site: this.$store.state.user.site,
  793. }
  794. getMesList(inData).then(({data}) => {
  795. this.mesList = data.rows
  796. })
  797. this.modalDisableFlag = false;
  798. this.modalFlag = true;
  799. },
  800. updateModal(row){
  801. this.modalData = {
  802. flag: '2',
  803. site: row.site,
  804. adminID: row.adminID,
  805. adminName: row.adminName,
  806. active: row.active,
  807. department: row.department,
  808. departmentName: row.departmentName,
  809. phone: row.phone,
  810. tel: row.tel,
  811. email: row.email,
  812. levelID: row.levelID,
  813. levelDesc: row.adminLevelDesc,
  814. mesUser: row.mesUser,
  815. updateBy: this.$store.state.user.name,
  816. };
  817. let inData = {
  818. site: this.$store.state.user.site,
  819. }
  820. getMesList(inData).then(({data}) => {
  821. this.mesList = data.rows
  822. })
  823. this.modalDisableFlag = true;
  824. this.modalFlag = true;
  825. },
  826. // 删除
  827. deleteAdmin (row) {
  828. this.$confirm(`是否删除这个机修人员?`, '提示', {
  829. confirmButtonText: '确定',
  830. cancelButtonText: '取消',
  831. type: 'warning'
  832. }).then(() => {
  833. eamAdminDelete(row).then(({data}) => {
  834. if (data && data.code === '0') {
  835. this.getDataList()
  836. this.$message({
  837. message: '操作成功',
  838. type: 'success',
  839. duration: 1500,
  840. onClose: () => {
  841. }
  842. })
  843. } else {
  844. this.$alert(data.msg, '错误', {
  845. confirmButtonText: '确定'
  846. })
  847. }
  848. })
  849. }).catch(() => {
  850. })
  851. },
  852. saveData(){
  853. if (this.modalData.adminID === '' || this.modalData.adminID == null) {
  854. this.$alert('请输入机修人员编码!', '错误', {
  855. confirmButtonText: '确定'
  856. })
  857. return false
  858. }
  859. if (this.modalData.adminName === '' || this.modalData.adminName == null) {
  860. this.$alert('请输入机修人员姓名!', '错误', {
  861. confirmButtonText: '确定'
  862. })
  863. return false
  864. }
  865. if (this.modalData.active === '' || this.modalData.active == null) {
  866. this.$alert('选择是否在用!', '错误', {
  867. confirmButtonText: '确定'
  868. })
  869. return false
  870. }
  871. if (this.modalData.department === '' || this.modalData.department == null) {
  872. this.$alert('请选择部门!', '错误', {
  873. confirmButtonText: '确定'
  874. })
  875. return false
  876. }
  877. if (this.modalData.levelID === '' || this.modalData.levelID == null) {
  878. this.$alert('请选择工种!', '错误', {
  879. confirmButtonText: '确定'
  880. })
  881. return false
  882. }
  883. if(this.modalData.flag === '1'){
  884. eamAdminSave(this.modalData).then(({data}) => {
  885. if (data && data.code === '0') {
  886. this.getDataList()
  887. this.modalFlag = false
  888. this.$message({
  889. message: '操作成功',
  890. type: 'success',
  891. duration: 1500,
  892. onClose: () => {
  893. }
  894. })
  895. } else {
  896. this.$alert(data.msg, '错误', {
  897. confirmButtonText: '确定'
  898. })
  899. }
  900. })
  901. }else {
  902. eamAdminEdit(this.modalData).then(({data}) => {
  903. if (data && data.code === '0') {
  904. this.getDataList()
  905. this.modalFlag=false
  906. this.$message({
  907. message: '操作成功',
  908. type: 'success',
  909. duration: 1500,
  910. onClose: () => {
  911. }
  912. })
  913. } else {
  914. this.$alert(data.msg, '错误', {
  915. confirmButtonText: '确定'
  916. })
  917. }
  918. })
  919. }
  920. },
  921. // 获取部门列表
  922. getDepartmentList(){
  923. // 先清空缓存选中
  924. this.$nextTick(() => this.$refs.departmentTable.clearSelection())
  925. // 拿到选中的部门编号
  926. let tempDataList = (this.modalData.department == null ? '' : this.modalData.department).split(';')
  927. // 查询所有部门
  928. getEmpyDeptList(this.departmentData).then(({data}) => {
  929. if (data && data.code === 0) {
  930. this.departmentList = data.rows
  931. this.departmentList.forEach(val => {
  932. // 回显选中的部门
  933. if (tempDataList.includes(val.deptId)) {
  934. this.$nextTick(() => this.$refs.departmentTable.toggleRowSelection(val, true))
  935. }
  936. })
  937. this.departmentModelFlag = true;
  938. }else {
  939. this.$alert(data.msg, '错误', {
  940. confirmButtonText: '确定'
  941. })
  942. }
  943. })
  944. },
  945. // 校验用户是否收藏
  946. favoriteIsOk() {
  947. let userFavorite = {
  948. userId: this.$store.state.user.id,
  949. languageCode: this.$i18n.locale
  950. }
  951. userFavoriteList(userFavorite).then(({data}) => {
  952. for (let i = 0; i < data.list.length; i++) {
  953. if(this.$route.meta.menuId==data.list[i].menuId){
  954. this.favorite = true
  955. }
  956. }
  957. })
  958. },
  959. // 收藏 OR 取消收藏
  960. favoriteFunction() {
  961. let userFavorite = {
  962. userId: this.$store.state.user.id,
  963. functionId: this.$route.meta.menuId,
  964. }
  965. if (this.favorite) {
  966. removeUserFavorite(userFavorite).then(({data}) => {
  967. this.$message.success(data.msg)
  968. this.favorite = false
  969. })
  970. } else {
  971. // 收藏
  972. saveUserFavorite(userFavorite).then(({data}) => {
  973. this.$message.success(data.msg)
  974. this.favorite = true
  975. })
  976. }
  977. },
  978. // 动态列开始 获取 用户保存的 格式列
  979. async getTableUserColumn(tableId, columnId) {
  980. let queryTableUser = {
  981. userId: this.$store.state.user.name,
  982. functionId: this.$route.meta.menuId,
  983. tableId: tableId,
  984. status: true,
  985. languageCode: this.$i18n.locale
  986. }
  987. await getTableUserListLanguage(queryTableUser).then(({data}) => {
  988. if (data.rows.length > 0) {
  989. //this.columnList1 = []
  990. switch (columnId) {
  991. case 1:
  992. this.columnList = data.rows
  993. break;
  994. // case 2:
  995. // this.detailColumnList = data.rows
  996. // break;
  997. // case 3:
  998. // this.columnList2 = data.rows
  999. // break;
  1000. // case 4:
  1001. // this.columnList3 = data.rows
  1002. // break;
  1003. }
  1004. } else {
  1005. this.getColumnList(tableId, columnId)
  1006. }
  1007. })
  1008. },
  1009. // 获取 tableDefault 列
  1010. async getColumnList(tableId, columnId) {
  1011. this.queryTable.tableId = tableId
  1012. let queryTable= {
  1013. functionId: this.$route.meta.menuId,
  1014. tableId: tableId,
  1015. languageCode: this.$i18n.locale
  1016. }
  1017. await getTableDefaultListLanguage(queryTable).then(({data}) => {
  1018. if (!data.rows.length == 0) {
  1019. switch (columnId) {
  1020. case 1:
  1021. this.columnList = data.rows
  1022. break;
  1023. // case 2:
  1024. // this.detailColumnList = data.rows
  1025. // break;
  1026. // case 3:
  1027. // this.columnList2 = data.rows
  1028. // break;
  1029. // case 4:
  1030. // this.columnList3 = data.rows
  1031. // break;
  1032. }
  1033. } else {
  1034. // this.showDefault = true.
  1035. }
  1036. })
  1037. },
  1038. //动态列结束
  1039. },
  1040. }
  1041. </script>