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.

640 lines
20 KiB

1 year ago
  1. <template>
  2. <div class="mod-config">
  3. <el-form :inline="true" label-position="top" label-width="100px" style="margin-top: 0px;">
  4. <el-button @click="getData()" type="primary" style="margin-left: 2px;margin-top: 0px">{{buttons.search}}</el-button>
  5. <el-button @click="addModal()" :disabled = "authAdd" type="primary" style="margin-left: 2px;margin-top: 0px">{{buttons.add}}</el-button>
  6. <el-button @click="userSetting" type="primary">{{ buttons.settingTable }}</el-button>
  7. <el-button v-if="isAuth('sys:setting')" @click="saveColumnList()" type="primary">{{ buttons.defaultTable }}</el-button>
  8. <download-excel
  9. :fields="fields()"
  10. :data="exportData"
  11. type="xls"
  12. :name="exportName"
  13. :header="exportHeader"
  14. :footer="exportFooter"
  15. :fetch="createExportData"
  16. :before-generate="startDownload"
  17. :before-finish="finishDownload"
  18. worksheet="导出信息"
  19. class="el-button el-button--primary el-button--medium">
  20. {{ buttons.download }}
  21. </download-excel>
  22. </el-form>
  23. <el-table
  24. :height="height"
  25. :data="dataList"
  26. border
  27. v-loading="dataListLoading"
  28. style="width: 100%;">
  29. <el-table-column
  30. header-align="center"
  31. align="center"
  32. width="150"
  33. :label=buttons.work>
  34. <template slot-scope="scope">
  35. <a type="text" size="small" v-if="!authEdit" @click="editModel(scope.row)">{{buttons.update}}</a>
  36. <a type="text" size="small" v-if="!authDelete" @click="deleteData(scope.row)">{{buttons.delete}}</a>
  37. </template>
  38. </el-table-column>
  39. <el-table-column
  40. v-for="(item,index) in columnList" :key="index"
  41. :sortable="item.columnSortable"
  42. :prop="item.columnProp"
  43. :header-align="item.headerAlign"
  44. :show-overflow-tooltip="item.showOverflowTooltip"
  45. :align="item.align"
  46. :fixed="item.fixed==''?false:item.fixed"
  47. :min-width="item.columnWidth"
  48. :label="item.columnLabel">
  49. <template slot-scope="scope">
  50. <span v-if="!item.columnHidden"> {{scope.row[item.columnProp]}}</span>
  51. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]"
  52. style="width: 100px; height: 80px"/></span>
  53. </template>
  54. </el-table-column>
  55. </el-table>
  56. <el-dialog :title="buttons.umidModal" :close-on-click-modal="false" v-drag :visible.sync="modelFlag" width="350px" >
  57. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  58. <el-form-item :label=buttons.site>
  59. <el-input v-model="modelData.site" :disabled="modelInputFlag" style="width: 130px"></el-input>
  60. </el-form-item>
  61. <el-form-item :label=buttons.umid>
  62. <el-input v-model="modelData.umid" :disabled="modelInputFlag" style="width: 130px" onblur="this.value=this.value.toUpperCase()"></el-input>
  63. </el-form-item>
  64. </el-form>
  65. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  66. <el-form-item :label=buttons.uMName>
  67. <el-input v-model="modelData.uMName" style="width: 130px"></el-input>
  68. </el-form-item>
  69. <el-form-item :label=buttons.active>
  70. <el-select filterable v-model="modelData.active" style="width: 130px">
  71. <el-option :label=buttons.yes value="Y"></el-option>
  72. <el-option :label=buttons.no value="N"></el-option>
  73. </el-select>
  74. </el-form-item>
  75. </el-form>
  76. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  77. <el-button type="primary" @click="ModelSave()">{{buttons.save}}</el-button>
  78. <el-button type="primary" @click="modelFlag = false">{{buttons.close}}</el-button>
  79. </el-footer>
  80. </el-dialog>
  81. <!-- 动态列 -->
  82. <column v-if="visible" ref="column" @refreshData="getTableUserColumn"></column>
  83. </div>
  84. </template>
  85. <script>
  86. import column from "../common/column";
  87. import {
  88. searchSysLanguagePackList,
  89. searchSysLanguageParam,
  90. searchFunctionButtonList,
  91. saveButtonList,
  92. searchSysLanguage,
  93. searchLanguageListByLanguageCode,
  94. saveSysLanguageOne,
  95. searchPageLanguageData,
  96. removerLanguage
  97. } from "@/api/sysLanguage.js"
  98. import {
  99. saveTableDefaultList,
  100. saveTableUser,
  101. getTableDefaultListLanguage,
  102. getTableUserListLanguage,
  103. removerDefault,
  104. removerUser
  105. } from "@/api/table.js"
  106. import {
  107. getUMData,
  108. saveUMData,
  109. deleteUMData
  110. } from "@/api/base/site.js"
  111. export default {
  112. name: "unitMeasure",
  113. components: {column},
  114. data() {
  115. return {
  116. // 多语言 start
  117. buttonList: [
  118. {
  119. functionId: this.$route.meta.menuId,
  120. languageValue: '计量单位',
  121. objectId: 'umidModal',
  122. objectType: "button",
  123. tableId: "6003Table"
  124. },
  125. {
  126. functionId: this.$route.meta.menuId,
  127. languageValue: '设置默认配置',
  128. objectId: 'defaultTable',
  129. objectType: "button",
  130. tableId: "6003Table"
  131. },
  132. {
  133. functionId: this.$route.meta.menuId,
  134. languageValue: '查询',
  135. objectId: 'search',
  136. objectType: "button",
  137. tableId: "6003Table"
  138. },
  139. {
  140. functionId: this.$route.meta.menuId,
  141. languageValue: '新增',
  142. objectId: 'add',
  143. objectType: "button",
  144. tableId: "6003Table"
  145. },
  146. {
  147. functionId: this.$route.meta.menuId,
  148. languageValue: '导出',
  149. objectId: 'download',
  150. objectType: "button",
  151. tableId: "6003Table"
  152. },
  153. {
  154. functionId: this.$route.meta.menuId,
  155. languageValue: '设置列表',
  156. objectId: 'settingTable',
  157. objectType: "button",
  158. tableId: "6003Table"
  159. },
  160. {
  161. functionId: this.$route.meta.menuId,
  162. languageValue: '操作',
  163. objectId: 'work',
  164. objectType: "button",
  165. tableId: "6003Table"
  166. },
  167. {
  168. functionId: this.$route.meta.menuId,
  169. languageValue: '数据维护',
  170. objectId: 'dataUpdate',
  171. objectType: "button",
  172. tableId: "6003Table"
  173. },
  174. {
  175. functionId: this.$route.meta.menuId,
  176. languageValue: '工厂编码',
  177. objectId: 'site',
  178. objectType: "button",
  179. tableId: "6003Table"
  180. },
  181. {
  182. functionId: this.$route.meta.menuId,
  183. languageValue: '编辑',
  184. objectId: 'update',
  185. objectType: "button",
  186. tableId: "6003Table"
  187. },
  188. {
  189. functionId: this.$route.meta.menuId,
  190. languageValue: '删除',
  191. objectId: 'delete',
  192. objectType: "button",
  193. tableId: "6003Table"
  194. },
  195. {
  196. functionId: this.$route.meta.menuId,
  197. languageValue: '保存',
  198. objectId: 'save',
  199. objectType: "button",
  200. tableId: "6003Table"
  201. },
  202. {
  203. functionId: this.$route.meta.menuId,
  204. languageValue: '关闭',
  205. objectId: 'close',
  206. objectType: "button",
  207. tableId: "6003Table"
  208. },
  209. {
  210. functionId: this.$route.meta.menuId,
  211. languageValue: '计量单位',
  212. objectId: 'umid',
  213. objectType: "button",
  214. tableId: "6003Table"
  215. },
  216. {
  217. functionId: this.$route.meta.menuId,
  218. languageValue: '计量单位名称',
  219. objectId: 'uMName',
  220. objectType: "button",
  221. tableId: "6003Table"
  222. },
  223. {
  224. functionId: this.$route.meta.menuId,
  225. languageValue: '是',
  226. objectId: 'yes',
  227. objectType: "button",
  228. tableId: "6003Table"
  229. },
  230. {
  231. functionId: this.$route.meta.menuId,
  232. languageValue: '否',
  233. objectId: 'no',
  234. objectType: "button",
  235. tableId: "6003Table"
  236. },
  237. {
  238. functionId: this.$route.meta.menuId,
  239. languageValue: '是否在用',
  240. objectId: 'active',
  241. objectType: "button",
  242. tableId: "6003Table"
  243. }
  244. ],
  245. showDefault:false,
  246. // 语言词典集合
  247. sysLanguageParams: [],
  248. dataListLoading: false,
  249. // 用户table 配置集合
  250. userColumnList: [],
  251. queryTableUser: {
  252. userId: this.$store.state.user.name,
  253. functionId: this.$route.meta.menuId,
  254. tableId: "6003Table",
  255. status: true,
  256. languageCode: this.$i18n.locale
  257. },
  258. buttons:{
  259. umidModal:'计量单位',
  260. defaultTable:'设置默认配置',
  261. search:'查询',
  262. add:'新增',
  263. download:'导出',
  264. settingTable: '设置列表',
  265. work:'操作',
  266. dataUpdate:'数据维护',
  267. site:'工厂编码',
  268. update:'编辑',
  269. delete:'删除',
  270. save:'保存',
  271. close:'关闭',
  272. umid:'计量单位',
  273. uMName:'计量单位名称',
  274. active:'是否在用',
  275. yes:'是',
  276. no:'否',
  277. },
  278. // 默认table 查询参数
  279. queryTable: {
  280. functionId: this.$route.meta.menuId,
  281. tableId: "6003Table",
  282. languageCode: this.$i18n.locale
  283. },
  284. languageList: [],
  285. queryLanguage: {},
  286. visible:false,
  287. // 多语言 end
  288. // 导出 start
  289. exportData: [],
  290. exportName: "计量单位"+this.dayjs().format('YYYYMMDDHHmmss'),
  291. exportHeader: ["计量单位"],
  292. exportFooter: [],
  293. // 导出 end
  294. height: 200,
  295. modelFlag:false,
  296. modelInputFlag:true,
  297. selectList:[],
  298. modelData: {
  299. add:'',
  300. site:'',
  301. umid:'',
  302. uMName:'',
  303. active:'',
  304. user:'',
  305. },
  306. dataList:[],
  307. columnList: [
  308. {
  309. userId: this.$store.state.user.name,
  310. functionId: this.$route.meta.menuId,
  311. serialNumber: '6003TableUmid',
  312. tableId: "6003Table",
  313. tableName: "计量单位表",
  314. columnProp: "umid",
  315. headerAlign: "center",
  316. align: "left",
  317. columnLabel: "计量单位",
  318. columnHidden: false,
  319. columnImage: false,
  320. columnSortable: false,
  321. sortLv: 0,
  322. status: true,
  323. fixed: '',
  324. columnWidth: 100
  325. },
  326. {
  327. userId: this.$store.state.user.name,
  328. functionId: this.$route.meta.menuId,
  329. serialNumber: '6003TableUMName',
  330. tableId: "6003Table",
  331. tableName: "计量单位表",
  332. columnProp: "uMName",
  333. headerAlign: "center",
  334. align: "left",
  335. columnLabel: "名称",
  336. columnHidden: false,
  337. columnImage: false,
  338. columnSortable: false,
  339. sortLv: 1,
  340. status: true,
  341. fixed: '',
  342. columnWidth: 200
  343. },
  344. {
  345. userId: this.$store.state.user.name,
  346. functionId: this.$route.meta.menuId,
  347. serialNumber: '6003TableActive',
  348. tableId: "6003Table",
  349. tableName: "计量单位表",
  350. columnProp: "active",
  351. headerAlign: "center",
  352. align: "left",
  353. columnLabel: "在用",
  354. columnHidden: false,
  355. columnImage: false,
  356. columnSortable: false,
  357. sortLv: 2,
  358. status: true,
  359. fixed: '',
  360. columnWidth: 60
  361. },
  362. {
  363. userId: this.$store.state.user.name,
  364. functionId: this.$route.meta.menuId,
  365. serialNumber: '6003TableSite',
  366. tableId: "6003Table",
  367. tableName: "物料分类表",
  368. columnProp: "site",
  369. headerAlign: "center",
  370. align: "left",
  371. columnLabel: "工厂编码",
  372. columnHidden: false,
  373. columnImage: false,
  374. columnSortable: false,
  375. sortLv: 3,
  376. status: true,
  377. fixed: '',
  378. columnWidth: 80
  379. }
  380. ],
  381. authEdit: false,
  382. authAdd: false,
  383. authDelete: false,
  384. menuId: this.$route.meta.menuId,
  385. }
  386. },
  387. watch: {
  388. modelData: {
  389. deep: true,
  390. handler: function (newV, oldV) {
  391. this.modelData.umid = this.modelData.umid.toUpperCase()
  392. }
  393. }
  394. },
  395. mounted() {
  396. this.$nextTick(() => {
  397. this.height = window.innerHeight - 140;
  398. })
  399. },
  400. methods: {
  401. //多语言start
  402. // 获取页面多语言
  403. getMsgLanguage() {
  404. this.dataListLoading = true
  405. let queryLang = {
  406. functionId: this.$route.meta.menuId,
  407. table_id: '6003Table',
  408. languageCode: this.$i18n.locale
  409. }
  410. searchPageLanguageData(queryLang).then((data) => {
  411. if (data.code == 0) {
  412. this.pageLanguageData = data.data
  413. } else {
  414. }
  415. })
  416. this.dataListLoading = false
  417. },
  418. // 获取button的词典
  419. getFunctionButtonList() {
  420. searchFunctionButtonList(this.queryTable).then(({data}) => {
  421. if (data.code == 0) {
  422. this.buttons = data.data
  423. } else {
  424. // saveButtonList(this.buttonList).then(({data}) => {
  425. // })
  426. }
  427. })
  428. },
  429. // 获取语言词典
  430. getSysLanguageParamList() {
  431. searchSysLanguageParam(this.queryTable).then(({data}) => {
  432. this.sysLanguageParams = data.rows
  433. })
  434. },
  435. // 打开页面设置
  436. userSetting() {
  437. this.visible = true;
  438. let queryTable = {
  439. userId: this.$route.meta.menuId,
  440. functionId: this.$route.meta.menuId,
  441. tableId: "6003Table",
  442. languageCode: this.$i18n.locale
  443. }
  444. this.$nextTick(() => {
  445. this.$refs.column.init(queryTable);
  446. });
  447. },
  448. // 获取 用户保存的 格式列
  449. getTableUserColumn() {
  450. getTableUserListLanguage(this.queryTableUser).then(({data}) => {
  451. if (data.rows.length>0) {
  452. //this.columnList = []
  453. this.columnList = data.rows
  454. } else {
  455. this.getColumnList()
  456. }
  457. })
  458. },
  459. // 保存 默认配置 列
  460. saveColumnList() {
  461. // 删除所有的该页面下保存的数据
  462. if (this.userColumnList) {
  463. //删除 user自定义的数据
  464. removerUser(this.queryTable)
  465. }
  466. // 删除默认配置
  467. removerDefault(this.queryTable)
  468. // 删除语言
  469. removerLanguage(this.queryTable)
  470. // 保存页面 table属性
  471. let sumColumnList = this.columnList;
  472. saveTableDefaultList(sumColumnList).then(({data}) => {
  473. })
  474. // 保存页面 button label title 属性
  475. saveButtonList(this.buttonList).then(({data}) => {
  476. })
  477. this.getFunctionButtonList()
  478. this.getColumnList()
  479. },
  480. // 获取 tableDefault 列
  481. getColumnList() {
  482. getTableDefaultListLanguage(this.queryTable).then(({data}) => {
  483. if (data.rows.length>0) {
  484. // this.showDefault = false
  485. this.columnList = data.rows
  486. } else {
  487. // this.showDefault = true
  488. }
  489. })
  490. },
  491. //多语言 end
  492. getData(){
  493. let inData={
  494. user:this.$store.state.user.name
  495. }
  496. getUMData(inData).then(({data}) => {
  497. this.dataList = data.rows
  498. })
  499. },
  500. addModal(){
  501. this.modelData={
  502. add:'',
  503. site:this.$store.state.user.site,
  504. umid:'',
  505. uMName:'',
  506. active:'',
  507. user:'',
  508. };
  509. this.modelData.add=0;
  510. this.modelInputFlag=false;
  511. this.modelData.active='Y';
  512. this.modelFlag=true;
  513. },
  514. editModel(row){
  515. this.modelData=JSON.parse(JSON.stringify(row));
  516. this.modelData.add=1;
  517. this.modelInputFlag=true;
  518. this.modelFlag=true;
  519. },
  520. ModelSave(){
  521. if(this.modelData.umid==''||this.modelData.umid==null){
  522. this.$alert("请输入计量单位!",'错误',{
  523. confirmButtonText:'确定'
  524. })
  525. return false;
  526. }
  527. if(this.modelData.uMName==''||this.modelData.uMName==null){
  528. this.$alert("请输入名称!",'错误',{
  529. confirmButtonText:'确定'
  530. })
  531. return false;
  532. }
  533. if(this.modelData.active==''||this.modelData.active==null){
  534. this.$alert("请选择是否在用!",'错误',{
  535. confirmButtonText:'确定'
  536. })
  537. return false;
  538. }
  539. if(this.modelData.site==''||this.modelData.site==null){
  540. this.$alert("请输入工厂编码!",'错误',{
  541. confirmButtonText:'确定'
  542. })
  543. return false;
  544. }
  545. this.modelData.user=this.$store.state.user.name;
  546. saveUMData(this.modelData).then(({data}) => {
  547. if (data && data.code == 200) {
  548. this.modelFlag = false
  549. this.getData();
  550. this.$message.success( '操作成功')
  551. } else {
  552. this.$alert(data.msg, '错误', {
  553. confirmButtonText: '确定'
  554. })
  555. }
  556. })
  557. },
  558. deleteData(row){
  559. this.$confirm(`是否删除此条计量单位?`, '提示', {
  560. confirmButtonText: '确定',
  561. cancelButtonText: '取消',
  562. type: 'warning'
  563. }).then(() => {
  564. let inData = {
  565. umid: row.umid,
  566. site:row.site
  567. }
  568. deleteUMData(inData).then(({data}) => {
  569. if (data && data.code == 200) {
  570. this.modelFlag = false
  571. this.getData();
  572. this.$message.success('操作成功')
  573. } else {
  574. this.$alert(data.msg, '错误', {
  575. confirmButtonText: '确定'
  576. })
  577. }
  578. })
  579. })
  580. },
  581. //导出excel
  582. createExportData() {
  583. return this.dataList;
  584. },
  585. startDownload() {
  586. // this.exportData = this.dataList
  587. },
  588. finishDownload() {
  589. },
  590. fields() {
  591. let json = "{"
  592. this.columnList.forEach((item, index) => {
  593. if (index == this.columnList.length - 1) {
  594. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\""
  595. } else {
  596. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\"" + ","
  597. }
  598. })
  599. json += "}"
  600. let s = eval("(" + json + ")")
  601. return s
  602. },
  603. // 导出 end
  604. //获取按钮的权限数据
  605. getButtonAuthData(){
  606. let updateFlag = this.isAuth(this.menuId+":revise");
  607. let fullControFlag = this.isAuth(this.menuId+":fullContro");
  608. let deleteFlag = this.isAuth(this.menuId+":remove");
  609. //处理页面的权限数据
  610. this.authEdit = !updateFlag ||!fullControFlag;
  611. this.authAdd = !fullControFlag;
  612. this.authDelete = !deleteFlag;
  613. },
  614. },
  615. created() {
  616. this.getTableUserColumn()
  617. this.getSysLanguageParamList()
  618. this.getFunctionButtonList()
  619. this.getMsgLanguage()
  620. this.getData();
  621. //获取按钮的权限
  622. this.getButtonAuthData();
  623. }
  624. }
  625. </script>
  626. <style >
  627. .el-textarea__inner {
  628. padding: 5px 5px;
  629. }
  630. </style>