plm前端
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.

534 lines
16 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. <template>
  2. <div class="mod-config">
  3. <!-- 查询条件 -->
  4. <el-form :inline="true" label-position="top" :model="searchData" @keyup.enter.native="getDataList()">
  5. <el-form-item :label="'单位编码'">
  6. <el-input v-model="searchData.umId" clearable style="width: 120px"></el-input>
  7. </el-form-item>
  8. <el-form-item :label="'单位名称'">
  9. <el-input v-model="searchData.umName" clearable style="width: 210px"></el-input>
  10. </el-form-item>
  11. <el-form-item :label="'是否在用'">
  12. <el-select clearable v-model="searchData.active" style="width: 120px">
  13. <el-option label="是" value="Y"></el-option>
  14. <el-option label="否" value="N"></el-option>
  15. </el-select>
  16. </el-form-item>
  17. <el-form-item :label="' '">
  18. <el-button @click="getDataList()">查询</el-button>
  19. <el-button type="primary" @click="addModal()">新增</el-button>
  20. <download-excel
  21. :fields="fields()"
  22. :data="exportData"
  23. type="xls"
  24. :name="exportName"
  25. :header="exportHeader"
  26. :footer="exportFooter"
  27. :fetch="createExportData"
  28. :before-generate="startDownload"
  29. :before-finish="finishDownload"
  30. worksheet="导出信息"
  31. class="el-button el-button--primary el-button--medium">
  32. {{ "导出" }}
  33. </download-excel>
  34. </el-form-item>
  35. </el-form>
  36. <!-- 单位列表 -->
  37. <el-table
  38. :height="height"
  39. :data="dataList"
  40. border
  41. v-loading="dataListLoading"
  42. style="width: 100%;">
  43. <el-table-column
  44. v-for="(item,index) in columnList" :key="index"
  45. :sortable="item.columnSortable"
  46. :prop="item.columnProp"
  47. :header-align="item.headerAlign"
  48. :show-overflow-tooltip="item.showOverflowTooltip"
  49. :align="item.align"
  50. :fixed="item.fixed === ''?false:item.fixed"
  51. :min-width="item.columnWidth"
  52. :label="item.columnLabel">
  53. <template slot-scope="scope">
  54. <span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
  55. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  56. </template>
  57. </el-table-column>
  58. <el-table-column
  59. fixed="right"
  60. header-align="center"
  61. align="center"
  62. width="100"
  63. label="操作">
  64. <template slot-scope="scope">
  65. <el-link style="cursor: pointer" @click="updateModal(scope.row)">编辑</el-link>
  66. <el-link style="cursor: pointer" @click="delModal(scope.row)">删除</el-link>
  67. </template>
  68. </el-table-column>
  69. </el-table>
  70. <!-- 分页插件 -->
  71. <el-pagination style="margin-top: 0px"
  72. @size-change="sizeChangeHandle"
  73. @current-change="currentChangeHandle"
  74. :current-page="pageIndex"
  75. :page-sizes="[20, 50, 100, 200, 500]"
  76. :page-size="pageSize"
  77. :total="totalPage"
  78. layout="total, sizes, prev, pager, next, jumper">
  79. </el-pagination>
  80. <!-- 单位新增/编辑模态框 -->
  81. <el-dialog :title="modalData.title" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="495px">
  82. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  83. <el-form-item label="单位编码" prop="umId" :rules="rules.umId">
  84. <el-input v-model="modalData.umId" :disabled="modalDisableFlag" style="width: 221px"></el-input>
  85. </el-form-item>
  86. <el-form-item label="单位名称" prop="umName" :rules="rules.umName">
  87. <el-input v-model="modalData.umName" style="width: 221px"></el-input>
  88. </el-form-item>
  89. </el-form>
  90. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  91. <el-form-item label="是否在用" prop="active" :rules="rules.active">
  92. <el-select v-model="modalData.active" style="width: 221px">
  93. <el-option label="是" value="Y"></el-option>
  94. <el-option label="否" value="N"></el-option>
  95. </el-select>
  96. </el-form-item>
  97. </el-form>
  98. <el-footer style="height:30px;margin-top: 20px;text-align:center">
  99. <el-button type="primary" @click="saveData()">保存</el-button>
  100. <el-button type="primary" @click="modalFlag = false">关闭</el-button>
  101. </el-footer>
  102. </el-dialog>
  103. <!-- chooseList模态框 -->
  104. <Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
  105. </div>
  106. </template>
  107. <script>
  108. import {
  109. umInformationSearch, // 单位信息列表查询
  110. umInformationSave, // 单位信息新增
  111. umInformationEdit, // 单位信息编辑
  112. umInformationDelete // 单位信息删除
  113. } from '@/api/part/umInformation.js'
  114. import Chooselist from '@/views/modules/common/Chooselist'
  115. export default {
  116. components: {
  117. Chooselist
  118. },
  119. watch: {
  120. searchData: {
  121. deep: true,
  122. handler: function (newV, oldV) {
  123. this.searchData.umId = this.searchData.umId.toUpperCase()
  124. }
  125. },
  126. modalData: {
  127. deep: true,
  128. handler: function (newV, oldV) {
  129. this.modalData.umId = this.modalData.umId.toUpperCase()
  130. }
  131. }
  132. },
  133. data () {
  134. return {
  135. // 导出
  136. exportData: [],
  137. exportName: '计量单位' + this.dayjs().format('YYYYMMDDHHmmss'),
  138. exportHeader: ['计量单位'],
  139. exportFooter: [],
  140. resultList: [],
  141. // ======== 行高 ========
  142. height: 200,
  143. // ======== 分页 ========
  144. pageIndex: 1,
  145. pageSize: 50,
  146. totalPage: 0,
  147. // 条件查询
  148. searchData: {
  149. site: this.$store.state.user.site,
  150. umId: '',
  151. umName: '',
  152. active: '',
  153. page: 1,
  154. limit: 10
  155. },
  156. // 其它
  157. dataListLoading: false,
  158. // ======== 数据对象 ========
  159. modalData: {
  160. flag: '',
  161. title: '',
  162. site: this.$store.state.user.site,
  163. umId: '',
  164. umName: '',
  165. active: '',
  166. createBy: '',
  167. updateBy: ''
  168. },
  169. // ======== 数据列表 ========
  170. dataList: [],
  171. // ======== 列表表头 ========
  172. columnList: [
  173. {
  174. userId: this.$store.state.user.name,
  175. functionId: 100003,
  176. serialNumber: '100003Table1UmId',
  177. tableId: '100003Table1',
  178. tableName: '单位信息表',
  179. columnProp: 'umId',
  180. headerAlign: 'center',
  181. align: 'left',
  182. columnLabel: '单位编码',
  183. columnHidden: false,
  184. columnImage: false,
  185. columnSortable: false,
  186. sortLv: 0,
  187. status: true,
  188. fixed: '',
  189. columnWidth: 120
  190. },
  191. {
  192. userId: this.$store.state.user.name,
  193. functionId: 100003,
  194. serialNumber: '100003Table1UmName',
  195. tableId: '100003Table1',
  196. tableName: '单位信息表',
  197. columnProp: 'umName',
  198. headerAlign: 'center',
  199. align: 'left',
  200. columnLabel: '单位名称',
  201. columnHidden: false,
  202. columnImage: false,
  203. columnSortable: false,
  204. sortLv: 0,
  205. status: true,
  206. fixed: '',
  207. columnWidth: 120
  208. },
  209. {
  210. userId: this.$store.state.user.name,
  211. functionId: 100003,
  212. serialNumber: '100003Table1Active',
  213. tableId: '100003Table1',
  214. tableName: '单位信息表',
  215. columnProp: 'active',
  216. headerAlign: 'center',
  217. align: 'center',
  218. columnLabel: '是否在用',
  219. columnHidden: false,
  220. columnImage: false,
  221. columnSortable: false,
  222. sortLv: 0,
  223. status: true,
  224. fixed: '',
  225. columnWidth: 120
  226. },
  227. {
  228. userId: this.$store.state.user.name,
  229. functionId: 100003,
  230. serialNumber: '100003Table1CreateDate',
  231. tableId: '100003Table1',
  232. tableName: '单位信息表',
  233. columnProp: 'createDate',
  234. headerAlign: 'center',
  235. align: 'center',
  236. columnLabel: '创建时间',
  237. columnHidden: false,
  238. columnImage: false,
  239. columnSortable: false,
  240. sortLv: 0,
  241. status: true,
  242. fixed: '',
  243. },
  244. {
  245. userId: this.$store.state.user.name,
  246. functionId: 100003,
  247. serialNumber: '100003Table1CreatedBy',
  248. tableId: "100003Table1",
  249. tableName: "单位信息表",
  250. columnProp: 'createBy',
  251. headerAlign: "center",
  252. align: "center",
  253. columnLabel: '创建人',
  254. columnHidden: false,
  255. columnImage: false,
  256. columnSortable: false,
  257. sortLv: 0,
  258. status: true,
  259. fixed: '',
  260. },
  261. {
  262. userId: this.$store.state.user.name,
  263. functionId: 100003,
  264. serialNumber: '100003Table1UpdateDate',
  265. tableId: "100003Table1",
  266. tableName: "单位信息表",
  267. columnProp: 'updateDate',
  268. headerAlign: "center",
  269. align: "center",
  270. columnLabel: '更新时间',
  271. columnHidden: false,
  272. columnImage: false,
  273. columnSortable: false,
  274. sortLv: 0,
  275. status: true,
  276. fixed: '',
  277. },
  278. {
  279. userId: this.$store.state.user.name,
  280. functionId: 100003,
  281. serialNumber: '100003Table1UpdateBy',
  282. tableId: "100003Table1",
  283. tableName: "单位信息表",
  284. columnProp: 'updateBy',
  285. headerAlign: "center",
  286. align: "center",
  287. columnLabel: '更新人',
  288. columnHidden: false,
  289. columnImage: false,
  290. columnSortable: false,
  291. sortLv: 0,
  292. status: true,
  293. fixed: '',
  294. },
  295. ],
  296. // ======== 必填规则 ========
  297. rules: {
  298. umId: [
  299. {
  300. required: true,
  301. message: ' ',
  302. trigger: 'change'
  303. }
  304. ],
  305. umName: [
  306. {
  307. required: true,
  308. message: ' ',
  309. trigger: 'change'
  310. }
  311. ],
  312. active: [
  313. {
  314. required: true,
  315. message: ' ',
  316. trigger: 'change'
  317. }
  318. ],
  319. },
  320. // ======== 模态框开关控制 ========
  321. modalFlag: false,
  322. modalDisableFlag: false,
  323. }
  324. },
  325. mounted () {
  326. this.$nextTick(() => {
  327. this.height = window.innerHeight - 210
  328. })
  329. },
  330. created () {
  331. this.getDataList()
  332. },
  333. methods: {
  334. // ======== 分页相关方法 ========
  335. /**
  336. * 每页数
  337. * @param val
  338. */
  339. sizeChangeHandle (val) {
  340. this.pageSize = val
  341. this.pageIndex = 1
  342. this.getDataList()
  343. },
  344. /**
  345. * 当前页
  346. * @param val
  347. */
  348. currentChangeHandle (val) {
  349. this.pageIndex = val
  350. this.getDataList()
  351. },
  352. // ======== 列表数据刷新方法 ========
  353. /**
  354. * 获取数据列表
  355. */
  356. getDataList () {
  357. this.searchData.limit = this.pageSize
  358. this.searchData.page = this.pageIndex
  359. umInformationSearch(this.searchData).then(({data}) => {
  360. if (data.code === 0) {
  361. this.dataList = data.page.list
  362. this.pageIndex = data.page.currPage
  363. this.pageSize = data.page.pageSize
  364. this.totalPage = data.page.totalCount
  365. this.$refs.selectDiv.setLengthAll( this.dataList.length)
  366. }
  367. this.dataListLoading = false
  368. })
  369. },
  370. // ======== 新增/编辑模态框 ========
  371. /**
  372. * 单位信息新增模态框
  373. */
  374. addModal () {
  375. this.modalData = {
  376. flag: '1',
  377. title: '单位新增',
  378. site: this.$store.state.user.site,
  379. createBy: this.$store.state.user.name,
  380. umId: '',
  381. umName: '',
  382. active: 'Y',
  383. }
  384. this.modalDisableFlag = false
  385. this.modalFlag = true
  386. },
  387. /**
  388. * 单位信息编辑模态框
  389. * @param row
  390. */
  391. updateModal (row) {
  392. this.modalData = {
  393. flag: '2',
  394. title: '单位编辑',
  395. site: row.site,
  396. umId: row.umId,
  397. umName: row.umName,
  398. active: row.active,
  399. updateBy: this.$store.state.user.name,
  400. }
  401. this.modalDisableFlag = true
  402. this.modalFlag = true
  403. },
  404. // ======== 新增/编辑/删除方法 ========
  405. /**
  406. * 单位信息新增/编辑
  407. */
  408. saveData () {
  409. if (this.modalData.umId === '' || this.modalData.umId == null) {
  410. this.$message.warning('请填写单位编码!')
  411. return
  412. }
  413. if (this.modalData.umName === '' || this.modalData.umName == null) {
  414. this.$message.warning('请填写单位名称!')
  415. return
  416. }
  417. if (this.modalData.active === '' || this.modalData.active == null) {
  418. this.$message.warning('请选择是否可用!')
  419. return
  420. }
  421. if (this.modalData.flag === '1') {
  422. umInformationSave(this.modalData).then(({data}) => {
  423. if (data && data.code === 0) {
  424. this.getDataList()
  425. this.modalFlag = false
  426. this.$message({
  427. message: '操作成功',
  428. type: 'success',
  429. duration: 1500,
  430. onClose: () => {}
  431. })
  432. } else {
  433. this.$alert(data.msg, '错误', {
  434. confirmButtonText: '确定'
  435. })
  436. }
  437. })
  438. } else {
  439. umInformationEdit(this.modalData).then(({data}) => {
  440. if (data && data.code === 0) {
  441. this.getDataList()
  442. this.modalFlag = false
  443. this.$message({
  444. message: '操作成功',
  445. type: 'success',
  446. duration: 1500,
  447. onClose: () => {}
  448. })
  449. } else {
  450. this.$alert(data.msg, '错误', {
  451. confirmButtonText: '确定'
  452. })
  453. }
  454. })
  455. }
  456. },
  457. /**
  458. * 单位信息删除
  459. */
  460. delModal (row) {
  461. this.$confirm(`是否删除这条单位信息?`, '提示', {
  462. confirmButtonText: '确定',
  463. cancelButtonText: '取消',
  464. type: 'warning'
  465. }).then(() => {
  466. umInformationDelete(row).then(({data}) => {
  467. if (data && data.code === 0) {
  468. this.getDataList()
  469. this.partSelections = []
  470. this.$message({
  471. message: '操作成功',
  472. type: 'success',
  473. duration: 1500,
  474. onClose: () => {}
  475. })
  476. } else {
  477. this.$alert(data.msg, '错误', {
  478. confirmButtonText: '确定'
  479. })
  480. }
  481. })
  482. }).catch(() => {
  483. })
  484. },
  485. // ======== 导出相关方法 ========
  486. /**
  487. * 导出excel
  488. */
  489. async createExportData () {
  490. this.searchData.limit = -1
  491. this.searchData.page = 1
  492. await umInformationSearch(this.searchData).then(({data}) => {
  493. this.resultList = data.page.list
  494. })
  495. return this.resultList
  496. },
  497. startDownload () {
  498. },
  499. finishDownload () {
  500. },
  501. fields () {
  502. let json = '{'
  503. this.columnList.forEach((item, index) => {
  504. if (index == this.columnList.length - 1) {
  505. json += '"' + item.columnLabel + '"' + ':' + '"' + item.columnProp + '"'
  506. } else {
  507. json += '"' + item.columnLabel + '"' + ':' + '"' + item.columnProp + '"' + ','
  508. }
  509. })
  510. json += '}'
  511. let s = eval('(' + json + ')')
  512. return s
  513. }
  514. }
  515. }
  516. </script>
  517. <style scoped lang="scss">
  518. /deep/ .customer-tab .el-tabs__content {
  519. padding: 0px !important;
  520. height: 459px;
  521. }
  522. </style>