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.

642 lines
20 KiB

11 months ago
  1. <template>
  2. <div class="mod-config">
  3. <el-form :inline="true" label-position="top" :model="searchData">
  4. <el-form-item :label="'BU'">
  5. <el-select v-model="searchData.buNo" placeholder="请选择" clearable style="width: 130px">
  6. <el-option
  7. v-for = "i in buList"
  8. :key = "i.buNo"
  9. :label = "i.buDesc"
  10. :value = "i.buNo">
  11. </el-option>
  12. </el-select>
  13. </el-form-item>
  14. <el-form-item :label="'物料编码'">
  15. <el-input v-model="searchData.partNo" clearable style="width: 120px"></el-input>
  16. </el-form-item>
  17. <el-form-item :label="'物料描述'">
  18. <el-input v-model="searchData.partDesc" clearable style="width: 210px"></el-input>
  19. </el-form-item>
  20. <el-form-item :label="'录入时间'">
  21. <el-date-picker
  22. style="width: 120px"
  23. v-model="searchData.startDate"
  24. type="date"
  25. value-format="yyyy-MM-dd"
  26. placeholder="选择日期">
  27. </el-date-picker>
  28. </el-form-item>
  29. <el-form-item style="margin-top: 23px;">
  30. <label style="margin-left: 0px;font-size: 19px">&#10142</label>
  31. </el-form-item>
  32. <el-form-item :label="' '">
  33. <el-date-picker
  34. style="width: 120px"
  35. v-model="searchData.endDate"
  36. type="date"
  37. value-format="yyyy-MM-dd"
  38. placeholder="选择日期">
  39. </el-date-picker>
  40. </el-form-item>
  41. <el-form-item :label="' '">
  42. <el-button @click="searchTable">查询</el-button>
  43. <!-- <el-button type="primary" @click="delModal()">删除</el-button>-->
  44. <download-excel
  45. :fields="fields()"
  46. :data="exportData"
  47. type="xls"
  48. :name="exportName"
  49. :header="exportHeader"
  50. :footer="exportFooter"
  51. :fetch="createExportData"
  52. :before-generate="startDownload"
  53. :before-finish="finishDownload"
  54. worksheet="导出信息"
  55. class="el-button el-button--primary el-button--medium">
  56. {{ "导出" }}
  57. </download-excel>
  58. </el-form-item>
  59. </el-form>
  60. <el-table
  61. :height="height"
  62. :data="dataList"
  63. border
  64. v-loading="dataListLoading"
  65. style="width: 100%;">
  66. <el-table-column
  67. header-align="center"
  68. align="center"
  69. width="80"
  70. label="操作">
  71. <template slot-scope="scope">
  72. <a type="text" size="small" @click="hsCodeModel(scope.row)">维护</a>
  73. </template>
  74. </el-table-column>
  75. <el-table-column
  76. v-for="(item,index) in columnList" :key="index"
  77. :sortable="item.columnSortable"
  78. :prop="item.columnProp"
  79. :header-align="item.headerAlign"
  80. :show-overflow-tooltip="item.showOverflowTooltip"
  81. :align="item.align"
  82. :fixed="item.fixed==''?false:item.fixed"
  83. :min-width="item.columnWidth"
  84. :label="item.columnLabel">
  85. <template slot-scope="scope">
  86. <span v-if="!item.columnHidden"> {{scope.row[item.columnProp]}}</span>
  87. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]"
  88. style="width: 100px; height: 80px"/></span>
  89. </template>
  90. </el-table-column>
  91. </el-table>
  92. <el-pagination
  93. @size-change="sizeChangeHandle"
  94. @current-change="currentChangeHandle"
  95. :current-page="pageIndex"
  96. :page-sizes="[20, 50, 100, 1000]"
  97. :page-size="pageSize"
  98. :total="totalPage"
  99. layout="total, sizes, prev, pager, next, jumper">
  100. </el-pagination>
  101. <el-dialog title="维护HSCode" :close-on-click-modal="false" v-drag :visible.sync="hsCodeModelFlag" width="500px">
  102. <el-form label-position="top" style="margin-left: 7px;margin-top: -5px;">
  103. <el-row :gutter="20">
  104. <el-col :span="8">
  105. <el-form-item :label="'物料编码:'">
  106. <el-input v-model="hsCodeModelData.partNo" disabled ></el-input>
  107. </el-form-item>
  108. </el-col>
  109. <el-col :span="16">
  110. <el-form-item :label="'物料名称'" >
  111. <el-input v-model="hsCodeModelData.partDesc" disabled ></el-input>
  112. </el-form-item>
  113. </el-col>
  114. <el-col :span="8">
  115. <el-form-item :label="'HS Code'" >
  116. <el-input v-model="hsCodeModelData.hsCode" ></el-input>
  117. </el-form-item>
  118. </el-col>
  119. <el-col :span="8">
  120. <el-form-item :label="'品名'" >
  121. <el-input v-model="hsCodeModelData.hsCodeDesc" ></el-input>
  122. </el-form-item>
  123. </el-col>
  124. </el-row>
  125. </el-form>
  126. <el-footer style="height:40px;margin-top: 10px;text-align:center">
  127. <el-button type="primary" @click="saveHSCode()">保存</el-button>
  128. <el-button type="primary" @click="hsCodeModelFlag=false">关闭</el-button>
  129. </el-footer>
  130. </el-dialog>
  131. </div>
  132. </template>
  133. <script>
  134. import {
  135. partInformationHsCode,savePartHSCode,
  136. }from "@/api/ecss/ecss.js"
  137. import {} from "@/api/sysLanguage.js"
  138. import {getAllBuList}from '@/api/factory/site.js'
  139. export default {
  140. name: "null",
  141. components:{
  142. },
  143. data() {
  144. return {
  145. // 导出
  146. exportData: [],
  147. exportName: '物料HsCode' + this.dayjs().format('YYYYMMDDHHmmss'),
  148. exportHeader: ['物料HsCode'],
  149. exportFooter: [],
  150. pageIndex: 1,
  151. pageSize: 100,
  152. totalPage: 0,
  153. height: 200,
  154. dataList:[],
  155. dataListLoading: false,
  156. searchData: {
  157. site: '',
  158. userName: this.$store.state.user.name,
  159. buNo: '',
  160. partNo: '',
  161. startDate: '',
  162. endDate: '',
  163. partDesc: '',
  164. page: 1,
  165. limit: 10
  166. },
  167. buttons:{
  168. search:'查询',
  169. },
  170. columnList: [
  171. {
  172. userId: this.$store.state.user.name,
  173. functionId: 801005,
  174. serialNumber: '801005Table1Bu',
  175. tableId: '801005Table1',
  176. tableName: '物料信息表',
  177. columnProp: 'buDesc',
  178. headerAlign: 'center',
  179. align: 'center',
  180. columnLabel: 'BU',
  181. columnHidden: false,
  182. columnImage: false,
  183. columnSortable: false,
  184. sortLv: 0,
  185. status: true,
  186. fixed: '',
  187. columnWidth: 80
  188. },
  189. {
  190. userId: this.$store.state.user.name,
  191. functionId: 801005,
  192. serialNumber: '801005Table1PartNo',
  193. tableId: '801005Table1',
  194. tableName: '物料信息表',
  195. columnProp: 'partNo',
  196. headerAlign: 'center',
  197. align: 'left',
  198. columnLabel: '物料编码',
  199. columnHidden: false,
  200. columnImage: false,
  201. columnSortable: false,
  202. sortLv: 0,
  203. status: true,
  204. fixed: '',
  205. columnWidth: 120
  206. },
  207. {
  208. userId: this.$store.state.user.name,
  209. functionId: 801005,
  210. serialNumber: '801005Table1PartDesc',
  211. tableId: '801005Table1',
  212. tableName: '物料信息表',
  213. columnProp: 'partDesc',
  214. headerAlign: 'center',
  215. align: 'left',
  216. columnLabel: '物料描述',
  217. columnHidden: false,
  218. columnImage: false,
  219. columnSortable: false,
  220. sortLv: 0,
  221. status: true,
  222. fixed: '',
  223. columnWidth: 300
  224. },
  225. {
  226. userId: this.$store.state.user.name,
  227. functionId: 801005,
  228. serialNumber: '801005Table1HsCode',
  229. tableId: '801005Table1',
  230. tableName: '物料信息表',
  231. columnProp: 'hsCode',
  232. headerAlign: 'center',
  233. align: 'left',
  234. columnLabel: 'HsCode',
  235. columnHidden: false,
  236. columnImage: false,
  237. columnSortable: false,
  238. sortLv: 0,
  239. status: true,
  240. fixed: '',
  241. columnWidth: 80
  242. },
  243. {
  244. userId: this.$store.state.user.name,
  245. functionId: 801005,
  246. serialNumber: '801005Table1HsCodeDesc',
  247. tableId: '801005Table1',
  248. tableName: '物料信息表',
  249. columnProp: 'hsCodeDesc',
  250. headerAlign: 'center',
  251. align: 'left',
  252. columnLabel: '品名',
  253. columnHidden: false,
  254. columnImage: false,
  255. columnSortable: false,
  256. sortLv: 0,
  257. status: true,
  258. fixed: '',
  259. columnWidth: 200
  260. },
  261. {
  262. userId: this.$store.state.user.name,
  263. functionId: 801005,
  264. serialNumber: '801005Table1PartDesceEn',
  265. tableId: '801005Table1',
  266. tableName: '物料信息表',
  267. columnProp: 'partDesceEn',
  268. headerAlign: 'center',
  269. align: 'left',
  270. columnLabel: '物料描述(英文)',
  271. columnHidden: false,
  272. columnImage: false,
  273. columnSortable: false,
  274. sortLv: 0,
  275. status: true,
  276. fixed: '',
  277. columnWidth: 300
  278. },
  279. {
  280. userId: this.$store.state.user.name,
  281. functionId: 801005,
  282. serialNumber: '801005Table1Spec',
  283. tableId: '801005Table1',
  284. tableName: '物料信息表',
  285. columnProp: 'spec',
  286. headerAlign: 'center',
  287. align: 'left',
  288. columnLabel: '规格',
  289. columnHidden: false,
  290. columnImage: false,
  291. columnSortable: false,
  292. sortLv: 0,
  293. status: true,
  294. fixed: '',
  295. columnWidth: 300
  296. },
  297. {
  298. userId: this.$store.state.user.name,
  299. functionId: 801005,
  300. serialNumber: '801005Table1ActiveDesc',
  301. tableId: '801005Table1',
  302. tableName: '物料信息表',
  303. columnProp: 'activeDesc',
  304. headerAlign: 'center',
  305. align: 'center',
  306. columnLabel: '是否在用',
  307. columnHidden: false,
  308. columnImage: false,
  309. columnSortable: false,
  310. sortLv: 0,
  311. status: true,
  312. fixed: '',
  313. columnWidth: 80
  314. },
  315. {
  316. userId: this.$store.state.user.name,
  317. functionId: 801005,
  318. serialNumber: '801005Table1PartType2Desc',
  319. tableId: '801005Table1',
  320. tableName: '物料信息表',
  321. columnProp: 'partType2Desc',
  322. headerAlign: 'center',
  323. align: 'left',
  324. columnLabel: '零件类型',
  325. columnHidden: false,
  326. columnImage: false,
  327. columnSortable: false,
  328. sortLv: 0,
  329. status: true,
  330. fixed: '',
  331. columnWidth: 100
  332. },
  333. {
  334. userId: this.$store.state.user.name,
  335. functionId: 801005,
  336. serialNumber: '801005Table1UmId',
  337. tableId: '801005Table1',
  338. tableName: '物料信息表',
  339. columnProp: 'umId2',
  340. headerAlign: 'center',
  341. align: 'left',
  342. columnLabel: '计量单位编码',
  343. columnHidden: false,
  344. columnImage: false,
  345. columnSortable: false,
  346. sortLv: 0,
  347. status: true,
  348. fixed: '',
  349. columnWidth: 100
  350. },
  351. {
  352. userId: this.$store.state.user.name,
  353. functionId: 801005,
  354. serialNumber: '801005Table1UmName',
  355. tableId: '801005Table1',
  356. tableName: '物料信息表',
  357. columnProp: 'umName',
  358. headerAlign: 'center',
  359. align: 'left',
  360. columnLabel: '计量单位名称',
  361. columnHidden: false,
  362. columnImage: false,
  363. columnSortable: false,
  364. sortLv: 0,
  365. status: true,
  366. fixed: '',
  367. columnWidth: 150
  368. },
  369. {
  370. userId: this.$store.state.user.name,
  371. functionId: 801005,
  372. serialNumber: '801005Table1FamilyID',
  373. tableId: '801005Table1',
  374. tableName: '物料信息表',
  375. columnProp: 'familyID',
  376. headerAlign: 'center',
  377. align: 'left',
  378. columnLabel: '物料分类编码',
  379. columnHidden: false,
  380. columnImage: false,
  381. columnSortable: false,
  382. sortLv: 0,
  383. status: true,
  384. fixed: '',
  385. columnWidth: 100
  386. },
  387. {
  388. userId: this.$store.state.user.name,
  389. functionId: 801005,
  390. serialNumber: '801005Table1FamilyName',
  391. tableId: '801005Table1',
  392. tableName: '物料信息表',
  393. columnProp: 'familyName',
  394. headerAlign: 'center',
  395. align: 'left',
  396. columnLabel: '物料分类名称',
  397. columnHidden: false,
  398. columnImage: false,
  399. columnSortable: false,
  400. sortLv: 0,
  401. status: true,
  402. fixed: '',
  403. columnWidth: 150
  404. },
  405. {
  406. userId: this.$store.state.user.name,
  407. functionId: 801005,
  408. serialNumber: '801005Table1OtherGroup1',
  409. tableId: '801005Table1',
  410. tableName: '物料信息表',
  411. columnProp: 'productGroupId1',
  412. headerAlign: 'center',
  413. align: 'left',
  414. columnLabel: '商品组1编码',
  415. columnHidden: false,
  416. columnImage: false,
  417. columnSortable: false,
  418. sortLv: 0,
  419. status: true,
  420. fixed: '',
  421. columnWidth: 100
  422. },
  423. {
  424. userId: this.$store.state.user.name,
  425. functionId: 801005,
  426. serialNumber: '801005Table1OtherGroupName1',
  427. tableId: '801005Table1',
  428. tableName: '物料信息表',
  429. columnProp: 'productGroupName1',
  430. headerAlign: 'center',
  431. align: 'left',
  432. columnLabel: '商品组1名称',
  433. columnHidden: false,
  434. columnImage: false,
  435. columnSortable: false,
  436. sortLv: 0,
  437. status: true,
  438. fixed: '',
  439. columnWidth: 150
  440. },
  441. {
  442. userId: this.$store.state.user.name,
  443. functionId: 801005,
  444. serialNumber: '801005Table1OtherGroup2',
  445. tableId: '801005Table1',
  446. tableName: '物料信息表',
  447. columnProp: 'productGroupId2',
  448. headerAlign: 'center',
  449. align: 'left',
  450. columnLabel: '商品组2编码',
  451. columnHidden: false,
  452. columnImage: false,
  453. columnSortable: false,
  454. sortLv: 0,
  455. status: true,
  456. fixed: '',
  457. columnWidth: 100
  458. },
  459. {
  460. userId: this.$store.state.user.name,
  461. functionId: 801005,
  462. serialNumber: '801005Table1OtherGroupName2',
  463. tableId: '801005Table1',
  464. tableName: '物料信息表',
  465. columnProp: 'productGroupName2',
  466. headerAlign: 'center',
  467. align: 'left',
  468. columnLabel: '商品组2名称',
  469. columnHidden: false,
  470. columnImage: false,
  471. columnSortable: false,
  472. sortLv: 0,
  473. status: true,
  474. fixed: '',
  475. columnWidth: 150
  476. },
  477. {
  478. userId: this.$store.state.user.name,
  479. functionId: 801005,
  480. serialNumber: '801005Table1OtherGroup3',
  481. tableId: '801005Table1',
  482. tableName: '物料信息表',
  483. columnProp: 'productGroupId3',
  484. headerAlign: 'center',
  485. align: 'left',
  486. columnLabel: '商品组3编码',
  487. columnHidden: false,
  488. columnImage: false,
  489. columnSortable: false,
  490. sortLv: 0,
  491. status: true,
  492. fixed: '',
  493. columnWidth: 100
  494. },
  495. {
  496. userId: this.$store.state.user.name,
  497. functionId: 801005,
  498. serialNumber: '801005Table1OtherGroupName3',
  499. tableId: '801005Table1',
  500. tableName: '物料信息表',
  501. columnProp: 'productGroupName3',
  502. headerAlign: 'center',
  503. align: 'left',
  504. columnLabel: '商品组3名称',
  505. columnHidden: false,
  506. columnImage: false,
  507. columnSortable: false,
  508. sortLv: 0,
  509. status: true,
  510. fixed: '',
  511. columnWidth: 150
  512. },
  513. ],
  514. hsCodeModelFlag:false,
  515. hsCodeModelData:{
  516. site: '',
  517. buNo: '',
  518. buDesc: '',
  519. partNo: '',
  520. partDesc: '',
  521. hsCode:'',
  522. hsCodeDesc:'',
  523. },
  524. }
  525. },
  526. mounted() {
  527. this.$nextTick(() => {
  528. this.height = window.innerHeight - 240;
  529. })
  530. },
  531. methods: {
  532. // 每页数
  533. sizeChangeHandle (val) {
  534. this.pageSize = val
  535. this.pageIndex = 1
  536. this.searchTable()
  537. },
  538. // 当前页
  539. currentChangeHandle (val) {
  540. this.pageIndex = val
  541. this.searchTable()
  542. },
  543. searchTable(){
  544. this.searchData.limit = this.pageSize
  545. this.searchData.page = this.pageIndex
  546. partInformationHsCode(this.searchData).then(({data}) => {
  547. //区分请求成功和失败的状况
  548. if (data && data.code == 0) {
  549. this.dataList = data.page.list
  550. this.pageIndex = data.page.currPage
  551. this.pageSize = data.page.pageSize
  552. this.totalPage = data.page.totalCount
  553. } else {
  554. this.dataList = [];
  555. }
  556. });
  557. },
  558. async createExportData () {
  559. this.searchData.limit = -1
  560. this.searchData.page = 1
  561. await partInformationHsCode(this.searchData).then(({data}) => {
  562. this.resultList = data.page.list
  563. })
  564. return this.resultList
  565. },
  566. startDownload () {},
  567. finishDownload () {},
  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. getBu () {
  582. let tempData = {
  583. username: this.$store.state.user.name,
  584. }
  585. getAllBuList(tempData).then(({data}) => {
  586. if (data.code === 0) {
  587. this.buList = data.rows
  588. }
  589. })
  590. },
  591. hsCodeModel(row){
  592. this.hsCodeModelData=JSON.parse(JSON.stringify(row))
  593. this.hsCodeModelFlag=true
  594. },
  595. saveHSCode(){
  596. if(this.hsCodeModelData.hsCode===''||this.hsCodeModelData.hsCode==null){
  597. this.$alert('请输入HSCODE!', '错误', {
  598. confirmButtonText: '确定'
  599. })
  600. return false
  601. }
  602. if(this.hsCodeModelData.hsCodeDesc===''||this.hsCodeModelData.hsCodeDesc==null){
  603. this.$alert('请输入品名!', '错误', {
  604. confirmButtonText: '确定'
  605. })
  606. return false
  607. }
  608. savePartHSCode(this.hsCodeModelData).then(({data}) => {
  609. if (data && data.code === 0) {
  610. this.searchTable()
  611. this.hsCodeModelFlag=false
  612. this.$message({
  613. message: '操作成功',
  614. type: 'success',
  615. duration: 1500,
  616. onClose: () => {}
  617. })
  618. } else {
  619. this.$alert(data.msg, '错误', {
  620. confirmButtonText: '确定'
  621. })
  622. }
  623. })
  624. },
  625. },
  626. created() {
  627. this.getBu();
  628. }
  629. }
  630. </script>
  631. <style scoped>
  632. </style>