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.

434 lines
14 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. <script xmlns="http://www.w3.org/1999/html">
  2. import {editDrawing, removeDrawing, searchDrawingDetailList, searchDrawingList} from "../../../api/code/codeDrawing";
  3. import dayjs from "dayjs";
  4. import {queryCodeErpPartNo} from "../../../api/code/codeParameterDef";
  5. export default {
  6. name: "CodeList",
  7. data(){
  8. return{
  9. drawingList:[],
  10. searchModel:{
  11. site:this.$store.state.user.site,
  12. drawingNo:undefined,
  13. creator:undefined,
  14. drawingDesc:undefined,
  15. remark:undefined,
  16. erpPartNo:undefined,
  17. erpPartDesc:undefined,
  18. startDate:"",
  19. endDate:"",
  20. },
  21. drawing:{
  22. },
  23. drawingDetailList:[],
  24. detailLoading:false,
  25. detailDialogVisible:false,
  26. saveDialogVisible:false,
  27. columns: [
  28. {
  29. userId: this.$store.state.user.name,
  30. functionId: 9009003,
  31. serialNumber: '9009003Table1DrawingNo',
  32. tableId: '9009003Table1',
  33. tableName: '编码信息',
  34. columnProp: 'drawingNo',
  35. headerAlign: 'center',
  36. align: 'left',
  37. columnLabel: '编码',
  38. columnHidden: false,
  39. columnImage: false,
  40. columnSortable: false,
  41. sortLv: 0,
  42. status: true,
  43. fixed: '',
  44. columnWidth: 140
  45. },
  46. {
  47. userId: this.$store.state.user.name,
  48. functionId: 9009003,
  49. serialNumber: '9009003Table1DrawingDesc',
  50. tableId: '9009003Table1',
  51. tableName: '编码描述',
  52. columnProp: 'drawingDesc',
  53. headerAlign: 'center',
  54. align: 'left',
  55. columnLabel: '编码',
  56. columnHidden: false,
  57. columnImage: false,
  58. columnSortable: false,
  59. sortLv: 0,
  60. status: true,
  61. fixed: '',
  62. columnWidth: 600
  63. },
  64. {
  65. userId: this.$store.state.user.name,
  66. functionId: 9009003,
  67. serialNumber: '9009003Table1ErpPartNo',
  68. tableId: '9009003Table1',
  69. tableName: '编码描述',
  70. columnProp: 'erpPartNo',
  71. headerAlign: 'center',
  72. align: 'left',
  73. columnLabel: 'IFS Part No',
  74. columnHidden: false,
  75. columnImage: false,
  76. columnSortable: false,
  77. sortLv: 0,
  78. status: true,
  79. fixed: '',
  80. columnWidth: 150
  81. },
  82. {
  83. userId: this.$store.state.user.name,
  84. functionId: 9009003,
  85. serialNumber: '9009003Table1ErpPartDesc',
  86. tableId: '9009003Table1',
  87. tableName: '编码描述',
  88. columnProp: 'erpPartDesc',
  89. headerAlign: 'center',
  90. align: 'left',
  91. columnLabel: 'IFS Part Description',
  92. columnHidden: false,
  93. columnImage: false,
  94. columnSortable: false,
  95. sortLv: 0,
  96. status: true,
  97. fixed: '',
  98. columnWidth: 180
  99. },
  100. {
  101. userId: this.$store.state.user.name,
  102. functionId: 9009003,
  103. serialNumber: '9009003Table1Creator',
  104. tableId: '9009003Table1',
  105. tableName: '编码描述',
  106. columnProp: 'creator',
  107. headerAlign: 'center',
  108. align: 'left',
  109. columnLabel: '创建人',
  110. columnHidden: false,
  111. columnImage: false,
  112. columnSortable: false,
  113. sortLv: 0,
  114. status: true,
  115. fixed: '',
  116. columnWidth: 100
  117. },
  118. {
  119. userId: this.$store.state.user.name,
  120. functionId: 9009003,
  121. serialNumber: '9009003Table1CreateDate',
  122. tableId: '9009003Table1',
  123. tableName: '编码描述',
  124. columnProp: 'createDate',
  125. headerAlign: 'center',
  126. align: 'center',
  127. columnLabel: '创建时间',
  128. columnHidden: false,
  129. columnImage: false,
  130. columnSortable: false,
  131. sortLv: 0,
  132. status: true,
  133. fixed: '',
  134. columnWidth: 100
  135. },
  136. {
  137. userId: this.$store.state.user.name,
  138. functionId: 9009003,
  139. serialNumber: '9009003Table1Remark',
  140. tableId: '9009003Table1',
  141. tableName: '编码描述',
  142. columnProp: 'remark',
  143. headerAlign: 'center',
  144. align: 'left',
  145. columnLabel: '备注',
  146. columnHidden: false,
  147. columnImage: false,
  148. columnSortable: false,
  149. sortLv: 0,
  150. status: true,
  151. fixed: '',
  152. columnWidth: 100
  153. },
  154. ],
  155. exportData:[],
  156. exportName: '编码列表'+this.dayjs().format('YYYYMMDDHHmmss'),
  157. exportHeader: ["编码列表"],
  158. exportFooter: [],
  159. }
  160. },
  161. created() {
  162. this.searchModel.startDate = dayjs().hour(0).minute(0).second(0).format("YYYY-MM-DD HH:mm:ss");
  163. this.searchDrawingList();
  164. },
  165. methods:{
  166. fields() {
  167. let json = "{"
  168. this.columns.forEach((item, index) => {
  169. if (index === this.columns.length - 1) {
  170. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\""
  171. } else {
  172. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\"" + ","
  173. }
  174. })
  175. json += "}"
  176. return eval("(" + json + ")")
  177. },
  178. createExportData() {
  179. return this.drawingList;
  180. },
  181. searchDrawingList(){
  182. searchDrawingList(this.searchModel).then(({data})=>{
  183. if (data && data.code === 0){
  184. this.drawingList = data.rows;
  185. }else {
  186. this.$message.warning(data.msg);
  187. }
  188. }).catch((error)=>{
  189. this.$message.error(error);
  190. })
  191. },
  192. handleDelete(row){
  193. this.$confirm(`该操作将删除编码${row.drawingNo}, 是否继续?`).then(() => {
  194. removeDrawing(row).then(({data})=>{
  195. if (data && data.code === 0){
  196. this.searchDrawingList();
  197. this.$message.success(data.msg);
  198. }else {
  199. this.$message.warning(data.msg);
  200. }
  201. }).catch((error)=>{
  202. this.$message.error(error);
  203. });
  204. })
  205. },
  206. handleEdit(row){
  207. this.drawing = {...row}
  208. this.saveDialogVisible = true;
  209. },
  210. editDrawing(){
  211. if (this.drawing.erpPartNo && !this.drawing.erpPartDesc){
  212. this.$message.warning("IFS Part No 不存在");
  213. return;
  214. }
  215. editDrawing(this.drawing).then(({data})=>{
  216. if (data && data.code === 0){
  217. this.searchDrawingList();
  218. this.$message.success(data.msg);
  219. this.saveDialogVisible = false;
  220. }else {
  221. this.$message.warning(data.msg);
  222. }
  223. }).catch((error)=>{
  224. this.$message.error(error);
  225. });
  226. },
  227. handleBlurErpPartNo(){
  228. let params = {
  229. erpPartNo:this.drawing.erpPartNo,
  230. }
  231. queryCodeErpPartNo(params).then(({data})=>{
  232. if (data && data.code === 0){
  233. if (data.row){
  234. this.drawing.erpPartDesc = data.row.partDesc
  235. }else {
  236. this.drawing.erpPartDesc = ''
  237. }
  238. }else {
  239. this.$message.warning(data.msg)
  240. }
  241. }).catch((error)=>{
  242. this.$message.error(error)
  243. })
  244. },
  245. handleDetail(row){
  246. this.detailLoading = true;
  247. this.drawingDetailList = [];
  248. this.detailDialogVisible = true;
  249. searchDrawingDetailList(row).then(({data})=>{
  250. if (data && data.code === 0){
  251. this.drawingDetailList = data.rows;
  252. }else {
  253. this.$message.warning(data.msg);
  254. }
  255. this.detailLoading = false;
  256. }).catch((error)=>{
  257. this.$message.error(error);
  258. this.detailLoading = false;
  259. })
  260. }
  261. }
  262. }
  263. </script>
  264. <template>
  265. <div>
  266. <el-form label-position="top" :model="searchModel">
  267. <el-row :gutter="10">
  268. <el-col :span="3">
  269. <el-form-item label="编码:">
  270. <el-input v-model="searchModel.drawingNo"></el-input>
  271. </el-form-item>
  272. </el-col>
  273. <el-col :span="3">
  274. <el-form-item label="编码描述:">
  275. <el-input v-model="searchModel.drawingDesc" ></el-input>
  276. </el-form-item>
  277. </el-col>
  278. <el-col :span="3">
  279. <el-form-item label="备注:">
  280. <el-input v-model="searchModel.remark" ></el-input>
  281. </el-form-item>
  282. </el-col>
  283. <el-col :span="3">
  284. <el-form-item label="创建人:">
  285. <el-input v-model="searchModel.creator" ></el-input>
  286. </el-form-item>
  287. </el-col>
  288. </el-row>
  289. <el-row :gutter="10">
  290. <el-col :span="3">
  291. <el-form-item label="IFS Part No:">
  292. <el-input v-model="searchModel.erpPartNo" ></el-input>
  293. </el-form-item>
  294. </el-col>
  295. <el-col :span="3">
  296. <el-form-item label="IFS Part Description:">
  297. <el-input v-model="searchModel.erpPartDesc" ></el-input>
  298. </el-form-item>
  299. </el-col>
  300. <el-col :span="3">
  301. <el-form-item label="开始日期:">
  302. <el-date-picker
  303. value-format="yyyy-MM-dd HH:mm:ss"
  304. v-model="searchModel.startDate"
  305. style="width: 100%"
  306. type="date"
  307. placeholder="开始日期">
  308. </el-date-picker>
  309. </el-form-item>
  310. </el-col>
  311. <el-col :span="3">
  312. <el-form-item label="结束日期:">
  313. <el-date-picker value-format="yyyy-MM-dd HH:mm:ss" v-model="searchModel.endDate" style="width: 100%" type="date" placeholder="选择日期"></el-date-picker>
  314. </el-form-item>
  315. </el-col>
  316. <el-col :span="6">
  317. <el-form-item label=" ">
  318. <el-button type="primary" @click="searchDrawingList">搜索</el-button>
  319. <download-excel
  320. :fields="fields()"
  321. :data="exportData"
  322. type="xls"
  323. :name="exportName"
  324. :header="exportHeader"
  325. :footer="exportFooter"
  326. :fetch="createExportData"
  327. worksheet="导出信息"
  328. class="el-button el-button--primary el-button--medium">
  329. {{ '导出' }}
  330. </download-excel>
  331. </el-form-item>
  332. </el-col>
  333. </el-row>
  334. </el-form>
  335. <el-table :data="drawingList" height="750" border style="width: 100%">
  336. <el-table-column
  337. v-for="(item,index) in columns" :key="index"
  338. :sortable="item.columnSortable"
  339. :prop="item.columnProp"
  340. :header-align="item.headerAlign"
  341. :show-overflow-tooltip="item.showOverflowTooltip"
  342. :align="item.align"
  343. :fixed="item.fixed===''?false:item.fixed"
  344. :min-width="item.columnWidth"
  345. :label="item.columnLabel">
  346. <template slot-scope="scope">
  347. <template>
  348. <span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
  349. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  350. </template>
  351. </template>
  352. </el-table-column>
  353. <el-table-column header-align="center" width="140" align="center" fixed="right" label="操作">
  354. <template slot-scope="{row}">
  355. <el-link style="cursor:pointer;" type="text" @click="handleEdit(row)">编辑</el-link>
  356. <el-link style="cursor:pointer;" type="text" @click="handleDelete(row)">删除</el-link>
  357. <el-link style="cursor:pointer;" type="text" @click="handleDetail(row)">详情</el-link>
  358. </template>
  359. </el-table-column>
  360. </el-table>
  361. <el-dialog title="编辑编码" :close-on-click-modal="false" :visible.sync="saveDialogVisible" width="1000px">
  362. <!-- <fieldset-->
  363. <!-- style="margin-top: 2px;border-color: rgb(255,255,255);">-->
  364. <!-- <legend>更改前信息</legend>-->
  365. <el-form label-position="top" :model="drawing" ref="drawingForm">
  366. <el-row :gutter="10">
  367. <el-col :span="6">
  368. <el-form-item label="编码:">
  369. <el-input readonly v-model="drawing.drawingNo" ></el-input>
  370. </el-form-item>
  371. </el-col>
  372. <el-col :span="4">
  373. <el-form-item label="IFS Part No:">
  374. <el-input v-model="drawing.erpPartNo" @blur="handleBlurErpPartNo"></el-input>
  375. </el-form-item>
  376. </el-col>
  377. <el-col :span="6">
  378. <el-form-item label="IFS Part Description:">
  379. <el-input v-model="drawing.erpPartDesc" disabled></el-input>
  380. </el-form-item>
  381. </el-col>
  382. <el-col :span="24">
  383. <el-form-item label="编码描述:">
  384. <el-input v-model="drawing.drawingDesc" readonly></el-input>
  385. </el-form-item>
  386. </el-col>
  387. <el-col :span="24">
  388. <el-form-item label="备注:">
  389. <el-input v-model="drawing.remark" ></el-input>
  390. </el-form-item>
  391. </el-col>
  392. </el-row>
  393. </el-form>
  394. <!-- </fieldset>-->
  395. <!-- <fieldset-->
  396. <!-- style="margin-top: 2px;border-color: rgb(255,255,255);">-->
  397. <!-- <legend>更改后信息</legend>-->
  398. <!-- <el-form label-position="top" :model="drawing" ref="drawingForm">-->
  399. <!-- <el-form-item label="编码:">-->
  400. <!-- <el-input v-model="drawing.drawingNo" style="width: 200px"></el-input>-->
  401. <!-- </el-form-item>-->
  402. <!-- <el-form-item label="编码描述:">-->
  403. <!-- <el-input readonly v-model="drawing.drawingDesc"></el-input>-->
  404. <!-- </el-form-item>-->
  405. <!-- <el-form-item label="备注:">-->
  406. <!-- <el-input readonly v-model="drawing.remark"></el-input>-->
  407. <!-- </el-form-item>-->
  408. <!-- </el-form>-->
  409. <!-- </fieldset>-->
  410. <el-footer style="height:30px;margin-top: 20px;text-align:center">
  411. <el-button type="primary" @click="editDrawing">保存</el-button>
  412. <el-button type="primary" @click="saveDialogVisible = false">关闭</el-button>
  413. </el-footer>
  414. </el-dialog>
  415. <el-dialog title="编码详情" :close-on-click-modal="false" v-drag :visible.sync="detailDialogVisible" :loading="detailLoading">
  416. <el-table :data="drawingDetailList" height="400" border style="width: 100%">
  417. <el-table-column prop="itemNo" header-align="center" width="140" align="right" label="序号"></el-table-column>
  418. <el-table-column prop="itemDesc" header-align="center" width="140" align="left" label="描述"></el-table-column>
  419. <el-table-column prop="itemName" header-align="center" width="140" align="left" label="元素名称"></el-table-column>
  420. <el-table-column prop="itemType" show-overflow-tooltip header-align="center" align="left" label="类型"></el-table-column>
  421. <el-table-column prop="itemLabel" show-overflow-tooltip header-align="center" align="left" label="选中项描述"></el-table-column>
  422. <el-table-column prop="itemValue" show-overflow-tooltip header-align="center" align="left" label="选中项值"></el-table-column>
  423. </el-table>
  424. </el-dialog>
  425. </div>
  426. </template>
  427. <style scoped>
  428. </style>