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.

696 lines
22 KiB

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