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.

299 lines
9.0 KiB

2 years ago
  1. <template>
  2. <div class="mod-config">
  3. <el-form label-position="top" style="margin-top: 1px; margin-left: 0px;">
  4. <el-form :inline="true" label-position="top" style="margin-top: 0px">
  5. <el-button type="primary" @click="searchTable">刷新</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. {{ '导出' }}
  19. </download-excel>
  20. </el-form>
  21. </el-form>
  22. <el-table
  23. :data="dataList"
  24. :height="height"
  25. border
  26. v-loading="dataListLoading"
  27. style="width: 100%; ">
  28. <el-table-column
  29. v-for="(item,index) in columnList1" :key="index"
  30. :sortable="item.columnSortable"
  31. :prop="item.columnProp"
  32. :header-align="item.headerAlign"
  33. :show-overflow-tooltip="item.showOverflowTooltip"
  34. :align="item.align"
  35. :fixed="item.fixed==''?false:item.fixed"
  36. :min-width="item.columnWidth"
  37. :label="item.columnLabel">
  38. <template slot-scope="scope">
  39. <span v-if="!item.columnHidden"> {{ scope.row[item.columnProp] }}</span>
  40. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]"
  41. style="width: 100px; height: 80px"/></span>
  42. </template>
  43. </el-table-column>
  44. <el-table-column
  45. header-align="center"
  46. align="center"
  47. width="150"
  48. fixed="right"
  49. label="操作">
  50. <template slot-scope="scope">
  51. <a type="text" size="small" @click="updateModel(scope.row)">修改</a>
  52. </template>
  53. </el-table-column>
  54. </el-table>
  55. <el-dialog
  56. width="320px"
  57. :title="!dataForm.id ? '添加' :'编辑'"
  58. :close-on-click-modal="false"
  59. :visible.sync="visible">
  60. <el-form :inline="true" label-position="top" label-width="100px" >
  61. <el-form-item :label="'工厂编码'">
  62. <el-input v-model="dataForm.site" style="width: 130px" disabled></el-input>
  63. </el-form-item>
  64. <el-form-item :label="'加工中心编码'">
  65. <el-input v-model="dataForm.workCenterNo" style="width: 130px" disabled></el-input>
  66. </el-form-item>
  67. </el-form>
  68. <el-form :inline="true" label-position="top" label-width="100px" >
  69. <el-form-item :label="'模板'" required="required">
  70. <el-select v-model="dataForm.itemType" style="width: 130px" placeholder="请选择">
  71. <el-option v-for="item in itemList" :key="index" :label="item.typeDesc" :value="item.itemType"></el-option>
  72. </el-select>
  73. </el-form-item>
  74. </el-form>
  75. <span slot="footer" class="dialog-footer">
  76. <el-button type="primary" @click="saveData()">{{'确定'}}</el-button>
  77. <el-button type="primary" @click="visible = false">{{'关闭'}}</el-button>
  78. </span>
  79. </el-dialog>
  80. <Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
  81. </div>
  82. </template>
  83. <script>
  84. import {
  85. searchWorkCenterBMType,
  86. getPlmRouteItemType,
  87. updateWorkCenterBMType,
  88. } from "@/api/base/site.js"
  89. import Chooselist from '@/views/modules/common/Chooselist'
  90. export default {
  91. components: {
  92. Chooselist
  93. },
  94. data() {
  95. return {
  96. height:300,
  97. dataList: [],
  98. searchData: {
  99. site:this.$store.state.user.site
  100. },
  101. exportList:[],
  102. visible:false,
  103. dataListLoading: false,
  104. currentRow:'',
  105. columnList1:[
  106. {
  107. userId: this.$store.state.user.name,
  108. functionId: 100003001,
  109. serialNumber: '100003001Table1Site',
  110. tableId: "100003001Table1",
  111. tableName: "加工中心BM组件",
  112. columnProp: "site",
  113. headerAlign: "center",
  114. align: "left",
  115. columnLabel: "工厂编码",
  116. columnHidden: false,
  117. columnImage: false,
  118. columnSortable: false,
  119. sortLv: 0,
  120. status: true,
  121. fixed: '',
  122. columnWidth: 80
  123. },{
  124. userId: this.$store.state.user.name,
  125. functionId: 100003001,
  126. serialNumber: '100003001Table1WorkCenterNo',
  127. tableId: "100003001Table1",
  128. tableName: "加工中心BM组件",
  129. columnProp: "workCenterNo",
  130. headerAlign: "center",
  131. align: "left",
  132. columnLabel: "工厂编码",
  133. columnHidden: false,
  134. columnImage: false,
  135. columnSortable: false,
  136. sortLv: 0,
  137. status: true,
  138. fixed: '',
  139. columnWidth: 80
  140. },{
  141. userId: this.$store.state.user.name,
  142. functionId: 100003001,
  143. serialNumber: '100003001Table1WorkCenterDesc',
  144. tableId: "100003001Table1",
  145. tableName: "加工中心BM组件",
  146. columnProp: "workCenterDesc",
  147. headerAlign: "left",
  148. align: "left",
  149. columnLabel: "加工中心名称",
  150. columnHidden: false,
  151. columnImage: false,
  152. columnSortable: false,
  153. sortLv: 0,
  154. status: true,
  155. fixed: '',
  156. columnWidth: 80
  157. },{
  158. userId: this.$store.state.user.name,
  159. functionId: 100003001,
  160. serialNumber: '100003001Table1TypeDesc',
  161. tableId: "100003001Table1",
  162. tableName: "加工中心BM组件",
  163. columnProp: "typeDesc",
  164. headerAlign: "left",
  165. align: "left",
  166. columnLabel: "BenchMark模板",
  167. columnHidden: false,
  168. columnImage: false,
  169. columnSortable: false,
  170. sortLv: 0,
  171. status: true,
  172. fixed: '',
  173. columnWidth: 80
  174. }
  175. ],
  176. dataForm:{
  177. id:'',
  178. site: '',
  179. workCenterNo: '',
  180. itemType:'',
  181. },
  182. // 导出 start
  183. exportData: [],
  184. exportName: '加工中心BM组件'+this.dayjs().format('YYYYMMDDHHmmss'),
  185. exportHeader: ["加工中心BM组件"],
  186. exportFooter: [],
  187. // 导出 end
  188. itemList:[],
  189. }
  190. },
  191. created() {
  192. this.searchTable()
  193. },
  194. mounted () {
  195. this.$nextTick(() => {
  196. this.height = window.innerHeight - 180
  197. })
  198. },
  199. methods: {
  200. // 获取基础数据列表S
  201. getBaseList (val, type) {
  202. this.tagNo = val
  203. this.tagNo1 = type
  204. this.$nextTick(() => {
  205. let strVal = ''
  206. if (val === 1013) {
  207. if(type==1) {
  208. strVal = this.dataForm.partType
  209. }
  210. }
  211. this.$refs.baseList.init(val, strVal)
  212. })
  213. },
  214. /* 列表方法的回调 */
  215. getBaseData (val) {
  216. if (this.tagNo === 1013) {
  217. if(this.tagNo1==1) {
  218. this.dataForm.partType = val.Base_id
  219. this.dataForm.partTypeDesc = val.Base_desc
  220. }
  221. }
  222. },
  223. searchTable(){
  224. searchWorkCenterBMType(this.searchData).then(({data}) => {
  225. //区分请求成功和失败的状况
  226. if (data && data.code == 0) {
  227. this.dataList = data.rows;
  228. } else {
  229. this.dataList = [];
  230. }
  231. });
  232. },
  233. updateModel(row){
  234. this.dataForm={
  235. site: row.site,
  236. workCenterNo:row.workCenterNo,
  237. itemType: row.itemType,
  238. }
  239. getPlmRouteItemType(this.dataForm).then(({data})=>{
  240. this.itemList=data.rows
  241. })
  242. this.visible=true;
  243. },
  244. saveData(){
  245. if(this.dataForm.itemType==''||this.dataForm.itemType==null){
  246. this.$alert('请选择模板!', '错误', {
  247. confirmButtonText: '确定'
  248. })
  249. return false;
  250. }
  251. updateWorkCenterBMType(this.dataForm).then(({data}) => {
  252. if (data && data.code === 0) {
  253. this.$message.success( '操作成功')
  254. this.visible = false
  255. this.searchTable();
  256. } else {
  257. this.$message.error(data.msg)
  258. }
  259. })
  260. },
  261. //导出excel
  262. //导出excel
  263. async createExportData() {
  264. return this.dataList;
  265. },
  266. startDownload() {
  267. // this.exportData = this.dataList
  268. },
  269. finishDownload() {
  270. },
  271. fields() {
  272. let json = "{"
  273. this.columnList1.forEach((item, index) => {
  274. if (index == this.columnList1.length - 1) {
  275. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\""
  276. } else {
  277. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\"" + ","
  278. }
  279. })
  280. json += "}"
  281. let s = eval("(" + json + ")")
  282. return s
  283. },
  284. },
  285. }
  286. </script>
  287. <style scoped>
  288. </style>