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.

350 lines
11 KiB

1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
  1. <script>
  2. import {queryWorkCenterCost, updateWorkCenterCost} from "../../../api/base/workCenterCost";
  3. export default {
  4. name: "workCenterCost",
  5. props:{
  6. height:{
  7. type: [Number],
  8. }
  9. },
  10. data(){
  11. return{
  12. scrollHeight:0,
  13. dataList:[],
  14. queryLoading:false,
  15. workCenterCost:{
  16. },
  17. queryParams:{
  18. workCenterNo:'',
  19. workCenterDesc:'',
  20. workCenterType:'',
  21. active:'',
  22. },
  23. no:1,
  24. size:50,
  25. total:0,
  26. saveLoading:false,
  27. saveVisible:false,
  28. rules:{
  29. currentWorkCenterCost:[{required: true,message: '加工中心成本不能为空',trigger: ['change','blur']}]
  30. },
  31. columns:[
  32. {
  33. userId: this.$store.state.user.name,
  34. functionId: 100001011,
  35. serialNumber: '100001011Table1WorkCenterNo',
  36. tableId: '100001011Table1',
  37. tableName: '加工中心信息表',
  38. columnProp: 'workCenterNo',
  39. headerAlign: 'center',
  40. align: 'left',
  41. columnLabel: '加工中心编码',
  42. columnHidden: false,
  43. columnImage: false,
  44. columnSortable: false,
  45. sortLv: 0,
  46. status: true,
  47. fixed: '',
  48. columnWidth: 140
  49. },
  50. {
  51. userId: this.$store.state.user.name,
  52. functionId: 100001011,
  53. serialNumber: '100001011Table1WorkCenterDesc',
  54. tableId: '100001011Table1',
  55. tableName: '加工中心信息表',
  56. columnProp: 'workCenterDesc',
  57. headerAlign: 'center',
  58. align: 'left',
  59. columnLabel: '加工中心描述',
  60. columnHidden: false,
  61. columnImage: false,
  62. columnSortable: false,
  63. sortLv: 0,
  64. status: true,
  65. fixed: '',
  66. columnWidth: 180
  67. },
  68. {
  69. userId: this.$store.state.user.name,
  70. functionId: 100001011,
  71. serialNumber: '100001011Table1WorkCenterType',
  72. tableId: '100001011Table1',
  73. tableName: '加工中心信息表',
  74. columnProp: 'workCenterType',
  75. headerAlign: 'center',
  76. align: 'center',
  77. columnLabel: '加工中心类型',
  78. columnHidden: false,
  79. columnImage: false,
  80. columnSortable: false,
  81. sortLv: 0,
  82. status: true,
  83. fixed: '',
  84. columnWidth: 80
  85. },
  86. {
  87. userId: this.$store.state.user.name,
  88. functionId: 100001011,
  89. serialNumber: '100001011Table1CurrentWorkCenterCost',
  90. tableId: '100001011Table1',
  91. tableName: '加工中心信息表',
  92. columnProp: 'currentWorkCenterCost',
  93. headerAlign: 'center',
  94. align: 'right',
  95. columnLabel: '加工中心成本',
  96. columnHidden: false,
  97. columnImage: false,
  98. columnSortable: false,
  99. sortLv: 0,
  100. status: true,
  101. fixed: '',
  102. columnWidth: 100
  103. },
  104. {
  105. userId: this.$store.state.user.name,
  106. functionId: 100001011,
  107. serialNumber: '100001011Table1Active',
  108. tableId: '100001011Table1',
  109. tableName: '加工中心信息表',
  110. columnProp: 'active',
  111. headerAlign: 'center',
  112. align: 'center',
  113. columnLabel: '是否在用',
  114. columnHidden: false,
  115. columnImage: false,
  116. columnSortable: false,
  117. sortLv: 0,
  118. status: true,
  119. fixed: '',
  120. columnWidth: 80
  121. },
  122. ],
  123. }
  124. },
  125. methods:{
  126. handleQuery(){
  127. let params = {
  128. ...this.queryParams,
  129. site:this.$store.state.user.site,
  130. no:this.no,
  131. size:this.size
  132. }
  133. this.queryLoading = true;
  134. queryWorkCenterCost(params).then(({data})=>{
  135. if (data && data.code === 0){
  136. this.dataList = data.rows;
  137. this.total = data.total;
  138. }else {
  139. this.$message.error(data.msg)
  140. }
  141. this.queryLoading = false;
  142. }).catch(err=>{
  143. this.$message.error(err);
  144. this.queryLoading = false;
  145. })
  146. },
  147. handleUpdate(row){
  148. this.workCenterCost = {
  149. ...row
  150. }
  151. this.saveVisible = true;
  152. },
  153. handleSizeChange(val){
  154. this.size = val;
  155. this.handleQuery();
  156. },
  157. handlePageChange(val){
  158. this.no = val;
  159. this.handleQuery();
  160. },
  161. handleUpdateWorkCenterCost(){
  162. this.$refs.saveForm.validate((valid,obj) => {
  163. if (valid){
  164. let params = {
  165. ...this.workCenterCost,
  166. }
  167. this.saveLoading = true;
  168. updateWorkCenterCost(params).then(({data})=>{
  169. if (data && data.code === 0){
  170. this.saveVisible = false;
  171. this.$message.success(data.msg)
  172. this.handleQuery();
  173. }else {
  174. this.$message.warning(data.msg)
  175. }
  176. this.saveLoading = false;
  177. }).catch((error)=>{
  178. this.$message.error(error)
  179. this.saveLoading = false;
  180. })
  181. }else {
  182. let i = 1;
  183. for (let key in obj){
  184. this.$message.warning(obj[key][0].message)
  185. if (i === 1){
  186. return
  187. }
  188. i++;
  189. }
  190. }
  191. })
  192. },
  193. setScrollHeight(){
  194. this.scrollHeight = window.innerHeight-120
  195. }
  196. },
  197. watch:{
  198. queryLoading(newVal,oldVal){
  199. if (newVal){
  200. setTimeout(()=>{
  201. this.queryLoading = false;
  202. },5000)
  203. }
  204. },
  205. saveLoading(newVal,oldVal){
  206. if (newVal){
  207. setTimeout(()=>{
  208. this.saveLoading = false;
  209. },5000)
  210. }
  211. }
  212. },
  213. created() {
  214. this.handleQuery();
  215. if (!this.height){
  216. this.setScrollHeight()
  217. window.addEventListener('resize',this.setScrollHeight)
  218. }else {
  219. this.scrollHeight = this.height
  220. }
  221. },
  222. destroyed() {
  223. window.removeEventListener('resize',this.setScrollHeight)
  224. }
  225. }
  226. </script>
  227. <template>
  228. <div class="full-block flex-layout" :style="{height:scrollHeight+'px'}">
  229. <el-form class="flex-none" :model="queryParams" label-position="top" style="width: 1000px">
  230. <el-row :gutter="10">
  231. <el-col :span="4">
  232. <el-form-item label="加工中心编码">
  233. <el-input v-model="queryParams.workCenterNo"></el-input>
  234. </el-form-item>
  235. </el-col>
  236. <el-col :span="4">
  237. <el-form-item label="加工中心描述">
  238. <el-input v-model="queryParams.workCenterDesc"></el-input>
  239. </el-form-item>
  240. </el-col>
  241. <el-col :span="3">
  242. <el-form-item label="加工中心类型">
  243. <el-select v-model="queryParams.workCenterType" style="width: 100%">
  244. <el-option label="全部" value=""></el-option>
  245. <el-option label="内部" value="内部"></el-option>
  246. <el-option label="外部" value="外部"></el-option>
  247. </el-select>
  248. </el-form-item>
  249. </el-col>
  250. <el-col :span="3">
  251. <el-form-item label="是否在用">
  252. <el-select v-model="queryParams.active" style="width: 100%">
  253. <el-option label="全部" value=""></el-option>
  254. <el-option label="Y" value="Y"></el-option>
  255. <el-option label="N" value="N"></el-option>
  256. </el-select>
  257. </el-form-item>
  258. </el-col>
  259. <el-col :span="4">
  260. <el-form-item label=" ">
  261. <el-button type="primary" @click="handleQuery">查询</el-button>
  262. </el-form-item>
  263. </el-col>
  264. </el-row>
  265. </el-form>
  266. <el-table class="flex-auto" :data="dataList" v-loading="queryLoading" border height="100%">
  267. <el-table-column
  268. v-for="(item,index) in columns" :key="index"
  269. :sortable="item.columnSortable"
  270. :prop="item.columnProp"
  271. :header-align="item.headerAlign"
  272. :show-overflow-tooltip="item.showOverflowTooltip"
  273. :align="item.align"
  274. :fixed="item.fixed===''?false:item.fixed"
  275. :min-width="item.columnWidth"
  276. :label="item.columnLabel">
  277. <template slot-scope="scope">
  278. <span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
  279. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  280. </template>
  281. </el-table-column>
  282. <el-table-column label="操作" align="center">
  283. <template slot-scope="{row,$index}">
  284. <a @click="handleUpdate(row)">编辑</a>
  285. </template>
  286. </el-table-column>
  287. </el-table>
  288. <el-pagination class="flex-none"
  289. @size-change="handleSizeChange"
  290. @current-change="handlePageChange"
  291. :current-page="no"
  292. :page-sizes="[50, 100, 200, 500]"
  293. :page-size="size"
  294. :total="total"
  295. layout="total,sizes, prev, pager, next, jumper">
  296. </el-pagination>
  297. <el-dialog v-drag title="加工中心" :visible.sync="saveVisible" width="400px" :close-on-click-modal="false">
  298. <el-form :model="workCenterCost" ref="saveForm" label-position="top" :rules="rules">
  299. <el-row :gutter="10">
  300. <el-col :span="12">
  301. <el-form-item label="加工中心编码">
  302. <el-input v-model="workCenterCost.workCenterNo" disabled></el-input>
  303. </el-form-item>
  304. </el-col>
  305. <el-col :span="12">
  306. <el-form-item label="加工中心描述">
  307. <el-input v-model="workCenterCost.workCenterDesc" disabled></el-input>
  308. </el-form-item>
  309. </el-col>
  310. <el-col :span="12">
  311. <el-form-item label="加工中心成本" prop="currentWorkCenterCost" :show-message="false">
  312. <el-input-number v-model="workCenterCost.currentWorkCenterCost" :min="0" :controls="false"></el-input-number>
  313. </el-form-item>
  314. </el-col>
  315. <el-col :span="12">
  316. <el-form-item label="加工中心类型">
  317. <el-select v-model="workCenterCost.workCenterType" style="width: 100%" disabled>
  318. <el-option label="内部" value="内部"></el-option>
  319. <el-option label="外部" value="外部"></el-option>
  320. </el-select>
  321. </el-form-item>
  322. </el-col>
  323. <el-col :span="12">
  324. <el-form-item label="是否在用">
  325. <el-select v-model="workCenterCost.active" style="width: 100%" disabled>
  326. <el-option label="Y" value="Y"></el-option>
  327. <el-option label="N" value="N"></el-option>
  328. </el-select>
  329. </el-form-item>
  330. </el-col>
  331. </el-row>
  332. </el-form>
  333. <div slot="footer" class="dialog-footer">
  334. <el-button type="primary" :loading="saveLoading" @click="handleUpdateWorkCenterCost"> </el-button>
  335. <el-button @click="saveVisible = false"> </el-button>
  336. </div>
  337. </el-dialog>
  338. </div>
  339. </template>
  340. <style scoped>
  341. </style>