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.

683 lines
22 KiB

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