Reviewed-on: http://git.picaiba.com/mt-fe-group/yudao-dev/pulls/385pull/389/head
@@ -1,7 +1,7 @@ | |||
### | |||
# @Author: Do not edit | |||
# @Date: 2023-08-29 09:40:39 | |||
# @LastEditTime: 2023-11-21 10:36:47 | |||
# @LastEditTime: 2024-07-29 15:00:13 | |||
# @LastEditors: DY | |||
# @Description: | |||
### | |||
@@ -13,10 +13,10 @@ VUE_APP_TITLE = MES系统 | |||
# 芋道管理系统/开发环境 | |||
# VUE_APP_BASE_API = 'http://100.64.0.26:48082' | |||
# VUE_APP_BASE_API = 'http://192.168.0.33:48082' | |||
VUE_APP_BASE_API = 'http://192.168.0.33:48082' | |||
# VUE_APP_BASE_API = 'http://192.168.1.164:48082' | |||
# VUE_APP_BASE_API = 'http://192.168.2.173:48080' | |||
VUE_APP_BASE_API = 'http://192.168.1.81:48082' | |||
# VUE_APP_BASE_API = 'http://192.168.1.81:48082' | |||
# VUE_APP_BASE_API = 'http://192.168.1.8:48082' | |||
# VUE_APP_BASE_API = 'http://192.168.4.159:48080' | |||
# VUE_APP_BASE_API = 'http://192.168.1.56:48082' | |||
@@ -48,11 +48,12 @@ | |||
"benz-amr-recorder": "^1.1.5", | |||
"bpmn-js-token-simulation": "0.10.0", | |||
"clipboard": "2.0.8", | |||
"code-brick-zj": "^1.0.2", | |||
"code-brick-zj": "^1.0.5", | |||
"core-js": "^3.26.0", | |||
"crypto-js": "^4.0.0", | |||
"diagram-js": "^12.3.0", | |||
"echarts": "5.4.0", | |||
"el-tree-transfer": "^2.4.7", | |||
"element-ui": "2.15.12", | |||
"file-saver": "^2.0.5", | |||
"fuse.js": "6.6.2", | |||
@@ -125,11 +125,8 @@ export default { | |||
// 取消自动聚焦 start | |||
this.Quill?.enable(false); | |||
this.$nextTick(() => { | |||
this.Quill?.enable(true); | |||
this.Quill?.blur(); | |||
// if (!this.readOnly) { | |||
// this.Quill?.enable(); | |||
// } | |||
this.Quill?.enable(true); | |||
}); | |||
// 如果设置了上传地址则自定义图片上传事件 | |||
if (this.type === 'url') { | |||
@@ -56,214 +56,207 @@ | |||
import Navbar from './components/Navbar'; | |||
import { debounce } from '@/utils/debounce'; | |||
export default { | |||
components: { Navbar }, | |||
name: 'choicePart', | |||
data() { | |||
return { | |||
boxReset: '', | |||
scale: 1, | |||
menuArr1: [ | |||
{ | |||
name: 'Core', | |||
title: '基础核心', | |||
visible: false, | |||
meta: { | |||
title: '', | |||
}, | |||
}, | |||
{ | |||
name: 'Order', | |||
title: '订单管理', | |||
visible: false, | |||
meta: { | |||
title: '', | |||
}, | |||
}, | |||
{ | |||
name: 'Equipment', | |||
title: '设备管理', | |||
visible: false, | |||
meta: { | |||
title: '', | |||
}, | |||
}, | |||
{ | |||
name: 'Group', | |||
title: '班组管理', | |||
visible: false, | |||
meta: { | |||
title: '', | |||
}, | |||
}, | |||
{ | |||
name: 'Quality', | |||
title: '质量管理', | |||
visible: false, | |||
meta: { | |||
title: '', | |||
}, | |||
}, | |||
{ | |||
name: 'Warehouse', | |||
title: '仓库管理', | |||
visible: false, | |||
meta: { | |||
title: '', | |||
}, | |||
}, | |||
{ | |||
name: 'Energy', | |||
title: '能源管理', | |||
visible: false, | |||
meta: { | |||
title: '', | |||
}, | |||
}, | |||
], | |||
menuArr2: [ | |||
{ | |||
name: 'Packaging', | |||
title: '包装管理', | |||
visible: false, | |||
meta: { | |||
title: '', | |||
}, | |||
}, | |||
{ | |||
name: 'Material', | |||
title: '物料管理', | |||
visible: false, | |||
meta: { | |||
title: '', | |||
}, | |||
}, | |||
{ | |||
name: 'Extend', | |||
title: '工艺管理', | |||
visible: false, | |||
meta: { | |||
title: '', | |||
}, | |||
}, | |||
{ | |||
name: 'Delivery', | |||
title: '成品发货', | |||
visible: false, | |||
meta: { | |||
title: '', | |||
}, | |||
}, | |||
{ | |||
name: 'Report', | |||
title: '报表管理', | |||
visible: false, | |||
meta: { | |||
title: '', | |||
}, | |||
}, | |||
{ | |||
name: 'System', | |||
title: '系统管理', | |||
visible: false, | |||
meta: { | |||
title: '', | |||
}, | |||
}, | |||
{ | |||
name: 'Devconfig', | |||
title: '开发配置', | |||
visible: false, | |||
meta: { | |||
title: '', | |||
}, | |||
}, | |||
], | |||
showItem: false, | |||
}; | |||
}, | |||
// computed:{ | |||
// ...mapGetters(['sidebarRouters']) | |||
// }, | |||
mounted() { | |||
this.getMsg(); | |||
this.boxReset = debounce(() => { | |||
this.resetSize(); | |||
}, 300); | |||
this.boxReset(); | |||
window.addEventListener('resize', () => { | |||
this.boxReset(); | |||
}); | |||
}, | |||
methods: { | |||
getMsg() { | |||
let menuList = this.$store.state.permission.sidebarRouters; | |||
console.log(menuList); | |||
if (menuList.length > 0) { | |||
for (let i = 0; i < menuList.length; i++) { | |||
for (let k = 0; k < 7; k++) { | |||
if (menuList[i].name === this.menuArr1[k].name) { | |||
this.menuArr1[k].visible = true; | |||
this.menuArr1[k].id = menuList[i].id; | |||
this.menuArr1[k].choicepart = i; | |||
this.menuArr1[k].children = menuList[i].children; | |||
this.menuArr1[k].meta = menuList[i].meta; | |||
} | |||
} | |||
for (let j = 0; j < 7; j++) { | |||
if (menuList[i].name === this.menuArr2[j].name) { | |||
this.menuArr2[j].visible = true; | |||
this.menuArr2[j].id = menuList[i].id; | |||
this.menuArr2[j].choicepart = i; | |||
this.menuArr2[j].children = menuList[i].children; | |||
this.menuArr2[j].meta = menuList[i].meta; | |||
} | |||
} | |||
} | |||
} | |||
console.log(this.menuArr1); | |||
console.log(this.menuArr2); | |||
}, | |||
handelClick(item, index) { | |||
// this.$router.push({name: 'SystemUser'}) | |||
this.$store.dispatch('app/setChoicepart', index); | |||
this.toRouter(item); | |||
// if (item.meta.unuse) { | |||
// this.$message.warning(this.$t('暂无数据')) | |||
// } else { | |||
// this.toRouter(item) | |||
// } | |||
}, | |||
toRouter(item) { | |||
console.log(item); | |||
if (item.children) { | |||
this.toRouter(item.children[0]); | |||
} else { | |||
this.$router.push({ name: item.name }); | |||
} | |||
}, | |||
resetSize() { | |||
let _this = this; | |||
_this.showItem = false; | |||
_this.loading = true; | |||
let choicepartBox = document.querySelector('#choicepartBox'); | |||
let rw = parseFloat(window.innerWidth); | |||
let rh = parseFloat(window.innerHeight); | |||
let bw = parseFloat(choicepartBox.style.width); | |||
let bh = parseFloat(choicepartBox.style.height); | |||
let wx = 0.82 / (bw / rw); | |||
let hx = 0.56 / (bh / rh); | |||
_this.scale = wx > hx ? hx : wx; | |||
setTimeout(_this.showItemFun, 700); | |||
}, | |||
showItemFun() { | |||
this.loading = false; | |||
this.showItem = true; | |||
}, | |||
}, | |||
beforeDestroy() { | |||
this.showItem = false; | |||
}, | |||
}; | |||
components: { Navbar }, | |||
name: 'choicePart', | |||
data() { | |||
return { | |||
boxReset: '', | |||
scale: 1, | |||
menuArr1: [ | |||
{ | |||
name: 'Core', | |||
title: '基础核心', | |||
visible: false, | |||
meta: { | |||
title: '' | |||
} | |||
}, | |||
{ | |||
name: 'Produce', | |||
title: '生产管理', | |||
visible: false, | |||
meta: { | |||
title: '' | |||
} | |||
}, | |||
{ | |||
name: 'Equipment', | |||
title: '设备管理', | |||
visible: false, | |||
meta: { | |||
title: '' | |||
} | |||
}, | |||
{ | |||
name: 'Group', | |||
title: '班组管理', | |||
visible: false, | |||
meta: { | |||
title: '' | |||
} | |||
}, | |||
{ | |||
name: 'Quality', | |||
title: '质量管理', | |||
visible: false, | |||
meta: { | |||
title: '' | |||
} | |||
}, | |||
{ | |||
name: 'Warehouse', | |||
title: '仓库管理', | |||
visible: false, | |||
meta: { | |||
title: '' | |||
} | |||
}, | |||
{ | |||
name: 'Energy', | |||
title: '能源管理', | |||
visible: false, | |||
meta: { | |||
title: '' | |||
} | |||
} | |||
], | |||
menuArr2: [ | |||
{ | |||
name: 'Packaging', | |||
title: '包装管理', | |||
visible: false, | |||
meta: { | |||
title: '' | |||
} | |||
}, | |||
{ | |||
name: 'Material', | |||
title: '物料管理', | |||
visible: false, | |||
meta: { | |||
title: '' | |||
} | |||
}, | |||
{ | |||
name: 'Extend', | |||
title: '工艺管理', | |||
visible: false, | |||
meta: { | |||
title: '' | |||
} | |||
}, | |||
{ | |||
name: 'Delivery', | |||
title: '成品发货', | |||
visible: false, | |||
meta: { | |||
title: '' | |||
} | |||
}, | |||
{ | |||
name: 'Report', | |||
title: '报表管理', | |||
visible: false, | |||
meta: { | |||
title: '' | |||
} | |||
}, | |||
{ | |||
name: 'System', | |||
title: '系统管理', | |||
visible: false, | |||
meta: { | |||
title: '' | |||
} | |||
} | |||
], | |||
showItem: false | |||
} | |||
}, | |||
// computed:{ | |||
// ...mapGetters(['sidebarRouters']) | |||
// }, | |||
mounted() { | |||
this.getMsg() | |||
this.boxReset = debounce(() => { | |||
this.resetSize() | |||
}, 300) | |||
this.boxReset() | |||
window.addEventListener('resize', () => { | |||
this.boxReset() | |||
}) | |||
}, | |||
methods: { | |||
getMsg() { | |||
let menuList = this.$store.state.permission.sidebarRouters | |||
console.log('sss', menuList) | |||
console.log(menuList) | |||
if (menuList.length > 0) { | |||
for (let i = 0; i < menuList.length; i ++) { | |||
for (let k = 0; k < 7; k++) { | |||
if (menuList[i].name === this.menuArr1[k].name) { | |||
this.menuArr1[k].visible = true | |||
this.menuArr1[k].id = menuList[i].id | |||
this.menuArr1[k].choicepart = i | |||
this.menuArr1[k].children = menuList[i].children | |||
this.menuArr1[k].meta = menuList[i].meta | |||
} | |||
} | |||
for (let j = 0; j < 6; j++) { | |||
if (menuList[i].name === this.menuArr2[j].name) { | |||
this.menuArr2[j].visible = true | |||
this.menuArr2[j].id = menuList[i].id | |||
this.menuArr2[j].choicepart = i | |||
this.menuArr2[j].children = menuList[i].children | |||
this.menuArr2[j].meta = menuList[i].meta | |||
} | |||
} | |||
} | |||
} | |||
console.log(this.menuArr1) | |||
console.log(this.menuArr2) | |||
}, | |||
handelClick(item, index) { | |||
// this.$router.push({name: 'SystemUser'}) | |||
this.$store.dispatch('app/setChoicepart', index) | |||
this.toRouter(item) | |||
// if (item.meta.unuse) { | |||
// this.$message.warning(this.$t('暂无数据')) | |||
// } else { | |||
// this.toRouter(item) | |||
// } | |||
}, | |||
toRouter(item) { | |||
console.log(item) | |||
if (item.children) { | |||
this.toRouter(item.children[0]) | |||
} else { | |||
this.$router.push({ name: item.name }) | |||
} | |||
}, | |||
resetSize() { | |||
let _this = this | |||
_this.showItem = false | |||
_this.loading = true | |||
let choicepartBox = document.querySelector('#choicepartBox') | |||
let rw = parseFloat(window.innerWidth) | |||
let rh = parseFloat(window.innerHeight) | |||
let bw = parseFloat(choicepartBox.style.width) | |||
let bh = parseFloat(choicepartBox.style.height) | |||
let wx = 0.82/(bw / rw) | |||
let hx = 0.56/(bh / rh) | |||
_this.scale = wx > hx ? hx : wx | |||
setTimeout(_this.showItemFun, 700) | |||
}, | |||
showItemFun() { | |||
this.loading = false | |||
this.showItem = true | |||
} | |||
}, | |||
beforeDestroy() { | |||
this.showItem = false | |||
} | |||
} | |||
</script> | |||
<style lang="scss" scoped> | |||
.choicepart-container { | |||
@@ -0,0 +1,100 @@ | |||
<!-- | |||
* @Author: zwq | |||
* @Date: 2023-08-02 15:12:42 | |||
* @LastEditors: DY | |||
* @LastEditTime: 2023-10-13 16:35:03 | |||
* @Description: | |||
--> | |||
<template> | |||
<div class="app-container"> | |||
<search-bar | |||
:formConfigs="[{ label: '产线在制产品', type: 'title' }]" | |||
ref="searchBarForm" /> | |||
<base-table | |||
v-loading="dataListLoading" | |||
:table-props="tableProps" | |||
:page="listQuery.pageNo" | |||
:limit="listQuery.pageSize" | |||
:table-data="tableData" | |||
@emitFun="inputChange" /> | |||
<pagination | |||
:limit.sync="listQuery.pageSize" | |||
:page.sync="listQuery.pageNo" | |||
:total="listQuery.total" | |||
@pagination="getDataList" /> | |||
</div> | |||
</template> | |||
<script> | |||
import basicPage from '../../mixins/basic-page'; | |||
import { parseTime } from '../../mixins/code-filter'; | |||
import { getLineBindProductPage } from '@/api/core/base/lineBindProduct'; | |||
import selectProduct from './selectProduct'; | |||
import { getProductPage } from '@/api/core/base/product'; | |||
const tableProps = [ | |||
{ | |||
prop: 'lineName', | |||
label: '产线' | |||
}, | |||
{ | |||
prop: 'productName', | |||
label: '在制产品', | |||
list: [], | |||
subcomponent: selectProduct, | |||
}, | |||
{ | |||
prop: 'recordTime', | |||
label: '开始时间', | |||
filter: parseTime, | |||
}, | |||
]; | |||
export default { | |||
mixins: [basicPage, selectProduct], | |||
data() { | |||
return { | |||
urlOptions: { | |||
getDataListURL: getLineBindProductPage, | |||
}, | |||
tableProps, | |||
tableData: [], | |||
// formConfig: [ | |||
// { | |||
// type: 'button', | |||
// btnName: '同步', | |||
// name: 'search', | |||
// color: 'primary', | |||
// }, | |||
// ], | |||
}; | |||
}, | |||
components: {}, | |||
created() { | |||
const params = { | |||
pageSize: 100, | |||
pageNo: 1, | |||
}; | |||
getProductPage(params).then((response) => { | |||
this.tableProps[1].list = response.data.list; | |||
console.log('打印', this.tableProps[1].list) | |||
}); | |||
}, | |||
methods: { | |||
buttonClick(val) { | |||
switch (val.btnName) { | |||
case 'search': | |||
this.listQuery.pageNo = 1; | |||
this.listQuery.pageSize = 10; | |||
this.getDataList(); | |||
break; | |||
default: | |||
console.log(val); | |||
} | |||
}, | |||
inputChange() { | |||
this.getDataList(); | |||
}, | |||
}, | |||
}; | |||
</script> |
@@ -0,0 +1,79 @@ | |||
<!-- | |||
* @Author: zwq | |||
* @Date: 2023-08-03 14:09:18 | |||
* @LastEditors: DY | |||
* @LastEditTime: 2023-10-13 16:47:25 | |||
* @Description: | |||
--> | |||
<template> | |||
<div class="tableInner"> | |||
<el-popover | |||
placement="top" | |||
title="切换在制产品" | |||
width="160" | |||
v-model="visible"> | |||
<el-select v-model="list.string" style="margin: 5px;" filterable> | |||
<el-option | |||
v-for="item in injectData.list" | |||
:key="item.id" | |||
:label="item.name" | |||
:value="item.id + '+' + item.name"></el-option> | |||
</el-select> | |||
<div style="text-align: right; margin: 0"> | |||
<el-button size="mini" type="text" @click="visible = false"> | |||
取消 | |||
</el-button> | |||
<el-button type="primary" size="mini" @click="changeInput"> | |||
确定 | |||
</el-button> | |||
</div> | |||
<el-button type="text" slot="reference"> | |||
<svg-icon icon-class="changelogo"/> | |||
</el-button> | |||
</el-popover> | |||
<el-input readonly v-model="list.productName" style="width: 50%;margin-left: 5px" ></el-input> | |||
</div> | |||
</template> | |||
<script> | |||
import { switchLineBindProduct } from '@/api/core/base/lineBindProduct'; | |||
export default { | |||
props: { | |||
injectData: { | |||
type: Object, | |||
default: () => ({}), | |||
}, | |||
}, | |||
data() { | |||
return { | |||
list: this.injectData, | |||
visible: false, | |||
}; | |||
}, | |||
mounted() { | |||
console.log('hello', this.list) | |||
}, | |||
methods: { | |||
changeInput() { | |||
const data = { | |||
id: this.list.id, | |||
productId: this.list.string.split('+')[0], | |||
productName: this.list.string.split('+')[1], | |||
}; | |||
switchLineBindProduct(data).then((response) => { | |||
this.$modal.msgSuccess('修改成功'); | |||
this.visible = false; | |||
this.list.productName = this.list.string.split('+')[1] | |||
this.$emit('emitData'); | |||
}); | |||
}, | |||
}, | |||
}; | |||
</script> | |||
<style scoped> | |||
.tableInner .el-input__inner { | |||
border: none; | |||
padding: 0; | |||
height: 33px; | |||
} | |||
</style> |
@@ -0,0 +1,144 @@ | |||
<template> | |||
<div class="app-container"> | |||
<search-bar | |||
:formConfigs="formConfig" | |||
ref="searchBarForm" | |||
@headBtnClick="buttonClick" /> | |||
<base-table | |||
v-loading="dataListLoading" | |||
:table-props="tableProps" | |||
:page="listQuery.pageNo" | |||
:limit="listQuery.pageSize" | |||
:table-data="tableData" /> | |||
<pagination | |||
:limit.sync="listQuery.pageSize" | |||
:page.sync="listQuery.pageNo" | |||
:total="listQuery.total" | |||
@pagination="getDataList" /> | |||
</div> | |||
</template> | |||
<script> | |||
import basicPage from '../../mixins/basic-page'; | |||
import { parseTime } from '../../mixins/code-filter'; | |||
import { getLineBindProductLogPage } from '@/api/core/base/lineBindProductLog'; | |||
import { getProductionLinePage } from '@/api/core/base/productionLine'; | |||
import { getProductPage } from '@/api/core/base/product'; | |||
const tableProps = [ | |||
{ | |||
prop: 'productionLineName', | |||
label: '产线' | |||
}, | |||
{ | |||
prop: 'productName', | |||
label: '在制产品' | |||
}, | |||
{ | |||
prop: 'startTime', | |||
label: '开始时间', | |||
filter: parseTime, | |||
}, | |||
{ | |||
prop: 'endTime', | |||
label: '结束时间', | |||
filter: parseTime, | |||
}, | |||
]; | |||
export default { | |||
mixins: [basicPage], | |||
data() { | |||
return { | |||
urlOptions: { | |||
getDataListURL: getLineBindProductLogPage, | |||
}, | |||
tableProps, | |||
tableData: [], | |||
optionArrUrl: [getProductionLinePage, getProductPage], | |||
formConfig: [ | |||
{ | |||
type: 'select', | |||
label: '产线', | |||
selectOptions: [], | |||
param: 'productionLineId', | |||
defaultSelect: '', | |||
filterable: true, | |||
}, | |||
{ | |||
type: 'select', | |||
label: '在制产品', | |||
selectOptions: [], | |||
param: 'productId', | |||
defaultSelect: '', | |||
filterable: true, | |||
}, | |||
{ | |||
type: 'datePicker', | |||
label: '时间', | |||
dateType: 'daterange', | |||
format: 'yyyy-MM-dd', | |||
valueFormat: 'yyyy-MM-dd HH:mm:ss', | |||
rangeSeparator: '-', | |||
startPlaceholder: '开始时间', | |||
endPlaceholder: '结束时间', | |||
param: 'startTime', | |||
valueFormat: 'timestamp' | |||
}, | |||
{ | |||
type: 'button', | |||
btnName: '搜索', | |||
name: 'search', | |||
color: 'primary', | |||
}, | |||
{ | |||
type: 'button', | |||
btnName: '重置', | |||
name: 'reset', | |||
}, | |||
], | |||
}; | |||
}, | |||
components: { | |||
}, | |||
created() { | |||
this.getArr(); | |||
}, | |||
methods: { | |||
getArr() { | |||
const params = { | |||
page: 1, | |||
limit: 500, | |||
}; | |||
this.optionArrUrl.forEach((item, index) => { | |||
item(params).then((response) => { | |||
this.formConfig[index].selectOptions = response.data.list; | |||
}); | |||
}); | |||
}, | |||
buttonClick(val) { | |||
switch (val.btnName) { | |||
case 'search': | |||
this.listQuery.pageNo = 1; | |||
this.listQuery.pageSize = 10; | |||
this.listQuery.productionLineId = val.productionLineId; | |||
this.listQuery.productId = val.productId; | |||
this.listQuery.startTime = val.startTime; | |||
this.getDataList(); | |||
break; | |||
case 'reset': | |||
this.$refs.searchBarForm.resetForm(); | |||
this.listQuery = { | |||
pageSize: 10, | |||
pageNo: 1, | |||
total: 1, | |||
}; | |||
this.getDataList(); | |||
break; | |||
default: | |||
console.log(val); | |||
} | |||
}, | |||
}, | |||
}; | |||
</script> |
@@ -0,0 +1,448 @@ | |||
<template> | |||
<el-drawer | |||
:visible.sync="visible" | |||
:show-close="false" | |||
:wrapper-closable="false" | |||
class="drawer" | |||
size="60%"> | |||
<small-title slot="title" :no-padding="true"> | |||
{{ isdetail ? '详情' : !dataForm.id ? '新增' : '编辑' }} | |||
</small-title> | |||
<div class="content"> | |||
<div class="visual-part"> | |||
<el-form | |||
ref="dataForm" | |||
:model="dataForm" | |||
:rules="dataRule" | |||
label-width="100px" | |||
label-position="top" | |||
@keyup.enter.native="dataFormSubmit"> | |||
<el-row :gutter="20"> | |||
<el-col :span="12"> | |||
<el-form-item label="产品编码" prop="code"> | |||
<el-input | |||
v-model="dataForm.code" | |||
clearable | |||
:disabled="isdetail" | |||
placeholder="请输入产品编码" /> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="12"> | |||
<el-form-item label="产品名称" prop="name"> | |||
<el-input | |||
v-model="dataForm.name" | |||
clearable | |||
:disabled="isdetail" | |||
placeholder="请输入产品名称" /> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
<el-row :gutter="20"> | |||
<el-col :span="12"> | |||
<el-form-item label="产品类型" prop="typeDictValue"> | |||
<el-select | |||
v-model="dataForm.typeDictValue" | |||
style="width: 100%" | |||
:disabled="isdetail" | |||
placeholder="请选择产品类型"> | |||
<el-option | |||
v-for="dict in getDictDatas(DICT_TYPE.PRODUCT_TYPE)" | |||
:key="dict.value" | |||
:label="dict.label" | |||
:value="dict.value" /> | |||
</el-select> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="12"> | |||
<el-form-item label="单位" prop="unitDictValue"> | |||
<el-select | |||
v-model="dataForm.unitDictValue" | |||
style="width: 100%" | |||
:disabled="isdetail" | |||
placeholder="请选择单位"> | |||
<el-option | |||
v-for="dict in getDictDatas(DICT_TYPE.UNIT_DICT)" | |||
:key="dict.value" | |||
:label="dict.label" | |||
:value="dict.value" /> | |||
</el-select> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
<el-row :gutter="20"> | |||
<el-col :span="12"> | |||
<el-form-item label="规格" prop="specifications"> | |||
<el-input | |||
:disabled="isdetail" | |||
v-model="dataForm.specifications" | |||
placeholder="请输入规格" /> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="12"> | |||
<el-form-item label="单位平方数" prop="area"> | |||
<el-input | |||
:disabled="isdetail" | |||
v-model="dataForm.area" | |||
placeholder="请输入单位平方数" /> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
<el-row :gutter="20"> | |||
<el-col :span="24"> | |||
<el-form-item label="完成单位产品用时" prop="processTime"> | |||
<el-input | |||
:disabled="isdetail" | |||
v-model="dataForm.processTime" | |||
placeholder="请输入完成单位产品用时" /> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
</el-form> | |||
<small-title | |||
style="margin: 16px 0; padding-left: 8px" | |||
:no-padding="true"> | |||
产品属性列表 | |||
</small-title> | |||
<div class="attr-list"> | |||
<base-table | |||
:table-props="tableProps" | |||
:page="listQuery.pageNo" | |||
:limit="listQuery.pageSize" | |||
:add-button-show="isdetail ? null : '添加属性'" | |||
@emitButtonClick="addNew()" | |||
:table-data="productAttributeList"> | |||
<method-btn | |||
v-if="!isdetail" | |||
slot="handleBtn" | |||
:width="120" | |||
label="操作" | |||
:method-list="tableBtn" | |||
@clickBtn="handleClick" /> | |||
</base-table> | |||
<pagination | |||
v-show="listQuery.total > 0" | |||
:total="listQuery.total" | |||
:page.sync="listQuery.pageNo" | |||
:limit.sync="listQuery.pageSize" | |||
:page-sizes="[5, 10, 15]" | |||
@pagination="getList" /> | |||
</div> | |||
</div> | |||
</div> | |||
<!-- <div style="position: absolute; bottom: 24px; right: 24px"> | |||
<el-button style="margin-right: 10px" @click="goback()">返回</el-button> | |||
<el-button v-if="isdetail" type="primary" @click="goEdit()"> | |||
编辑 | |||
</el-button> | |||
<span v-if="!isdetail"> | |||
<el-button type="primary" @click="dataFormSubmit()">保存</el-button> | |||
<el-button | |||
v-if="dataForm.id && !isdetail" | |||
type="primary" | |||
@click="addNew()"> | |||
添加属性 | |||
</el-button> | |||
</span> | |||
</div> --> | |||
<div class="drawer-body__footer"> | |||
<el-button style="" @click="goback()">取消</el-button> | |||
<el-button v-if="isdetail" type="primary" @click="goEdit()"> | |||
编辑 | |||
</el-button> | |||
<el-button v-else type="primary" @click="dataFormSubmit()">确定</el-button> | |||
</div> | |||
<product-attr-add | |||
v-if="addOrUpdateVisible" | |||
ref="addOrUpdate" | |||
:product-id="dataForm.id" | |||
@refreshDataList="getList" /> | |||
</el-drawer> | |||
</template> | |||
<script> | |||
import { | |||
deleteProductAttr, | |||
getProductAttrPage, | |||
} from '@/api/core/base/productAttr'; | |||
import { | |||
createProduct, | |||
updateProduct, | |||
getProduct, | |||
getCode, | |||
} from '@/api/core/base/product'; | |||
import productAttrAdd from './attr-add'; | |||
import { parseTime } from '../../mixins/code-filter'; | |||
import SmallTitle from './SmallTitle'; | |||
const tableBtn = [ | |||
{ | |||
type: 'edit', | |||
btnName: '编辑', | |||
}, | |||
{ | |||
type: 'delete', | |||
btnName: '删除', | |||
}, | |||
]; | |||
const tableProps = [ | |||
{ | |||
prop: 'createTime', | |||
label: '添加时间', | |||
filter: parseTime, | |||
}, | |||
{ | |||
prop: 'name', | |||
label: '属性名', | |||
}, | |||
{ | |||
prop: 'value', | |||
label: '属性值', | |||
}, | |||
]; | |||
export default { | |||
components: { productAttrAdd, SmallTitle }, | |||
data() { | |||
return { | |||
visible: false, | |||
addOrUpdateVisible: false, | |||
tableBtn, | |||
tableProps, | |||
productAttributeList: [], | |||
dataForm: { | |||
id: null, | |||
name: '', // 产品名称 | |||
code: '', // 产品编码 | |||
area: 0, // 单位平方数(float only) | |||
typeDictValue: null, // 产品类型id | |||
processTime: null, // 单位产品用时 (s) | |||
specifications: '', // 规格 | |||
unitDictValue: '', // 单位id | |||
}, | |||
listQuery: { | |||
pageSize: 10, | |||
pageNo: 1, | |||
total: 0, | |||
}, | |||
dataRule: { | |||
code: [ | |||
{ | |||
required: true, | |||
message: '产品编码不能为空', | |||
trigger: 'blur', | |||
}, | |||
// { | |||
// type: 'number', | |||
// message: '产品编码为数字类型', | |||
// trigger: 'blur', | |||
// transfom: 'val => Number(val)', | |||
// }, | |||
], | |||
name: [ | |||
{ | |||
required: true, | |||
message: '产品名称不能为空', | |||
trigger: 'blur', | |||
}, | |||
], | |||
typeDictValue: [ | |||
{ | |||
required: true, | |||
message: '产品类型不能为空', | |||
trigger: 'blur', | |||
}, | |||
], | |||
area: [ | |||
{ | |||
type: 'number', | |||
message: '请输入正确的数值', | |||
trigger: 'change', | |||
transform: (val) => Number(val), | |||
}, | |||
], | |||
processTime: [ | |||
{ | |||
required: true, | |||
message: '完成单位产品用时不能为空', | |||
trigger: 'blur', | |||
}, | |||
{ | |||
type: 'number', | |||
message: '请输入正确的数值', | |||
trigger: 'blur', | |||
transform: (val) => Number(val), | |||
}, | |||
], | |||
}, | |||
isdetail: false, | |||
}; | |||
}, | |||
methods: { | |||
initData() { | |||
this.productAttributeList.splice(0); | |||
this.listQuery.total = 0; | |||
}, | |||
init(id, isdetail) { | |||
this.initData(); | |||
this.isdetail = isdetail || false; | |||
this.dataForm.id = id || null; | |||
this.visible = true; | |||
this.$nextTick(() => { | |||
this.$refs['dataForm'].resetFields(); | |||
if (this.dataForm.id) { | |||
// 获取产品详情 | |||
getProduct(id).then((response) => { | |||
this.dataForm = response.data; | |||
}); | |||
// 获取产品的属性列表 | |||
this.getList(); | |||
} else { | |||
getCode().then((res) => { | |||
this.dataForm.code = res.data; | |||
}); | |||
} | |||
}); | |||
}, | |||
getList() { | |||
// 获取产品的属性列表 | |||
getProductAttrPage({ | |||
...this.listQuery, | |||
productId: this.dataForm.id, | |||
}).then((response) => { | |||
this.productAttributeList = response.data.list; | |||
this.listQuery.total = response.data.total; | |||
}); | |||
}, | |||
handleClick(raw) { | |||
if (raw.type === 'delete') { | |||
this.$confirm( | |||
`确定对${ | |||
raw.data.name | |||
? '[名称=' + raw.data.name + ']' | |||
: '[序号=' + raw.data._pageIndex + ']' | |||
}进行删除操作?`, | |||
'提示', | |||
{ | |||
confirmButtonText: '确定', | |||
cancelButtonText: '取消', | |||
type: 'warning', | |||
} | |||
) | |||
.then(() => { | |||
deleteProductAttr(raw.data.id).then(({ data }) => { | |||
this.$message({ | |||
message: '操作成功', | |||
type: 'success', | |||
duration: 1500, | |||
onClose: () => { | |||
this.getList(); | |||
}, | |||
}); | |||
}); | |||
}) | |||
.catch(() => {}); | |||
} else { | |||
this.addNew(raw.data.id); | |||
} | |||
}, | |||
// 表单提交 | |||
dataFormSubmit() { | |||
this.$refs['dataForm'].validate((valid) => { | |||
if (valid) { | |||
// 修改的提交 | |||
if (this.dataForm.id) { | |||
updateProduct(this.dataForm).then((response) => { | |||
this.$modal.msgSuccess('修改成功'); | |||
this.visible = false; | |||
this.$emit('refreshDataList'); | |||
}); | |||
return; | |||
} | |||
// 添加的提交 | |||
createProduct(this.dataForm).then((response) => { | |||
this.$modal.msgSuccess('新增成功'); | |||
this.visible = false; | |||
this.$emit('refreshDataList'); | |||
}); | |||
} | |||
}); | |||
}, | |||
goEdit() { | |||
this.isdetail = false; | |||
}, | |||
// 新增 / 修改 | |||
addNew(id) { | |||
this.addOrUpdateVisible = true; | |||
this.$nextTick(() => { | |||
this.$refs.addOrUpdate.init(id); | |||
}); | |||
}, | |||
goback() { | |||
this.$emit('refreshDataList'); | |||
this.visible = false; | |||
this.initData(); | |||
}, | |||
}, | |||
}; | |||
</script> | |||
<style scoped> | |||
.drawer >>> .el-drawer { | |||
border-radius: 8px 0 0 8px; | |||
display: flex; | |||
flex-direction: column; | |||
} | |||
.drawer >>> .el-form-item__label { | |||
padding: 0; | |||
} | |||
.drawer >>> .el-drawer__header { | |||
margin: 0; | |||
padding: 32px 32px 24px; | |||
border-bottom: 1px solid #dcdfe6; | |||
} | |||
.drawer >>> .el-drawer__body { | |||
flex: 1; | |||
height: 1px; | |||
display: flex; | |||
flex-direction: column; | |||
} | |||
.drawer >>> .content { | |||
padding: 30px 24px; | |||
flex: 1; | |||
display: flex; | |||
flex-direction: column; | |||
/* height: 100%; */ | |||
} | |||
.drawer >>> .visual-part { | |||
flex: 1 auto; | |||
max-height: 76vh; | |||
overflow: hidden; | |||
overflow-y: scroll; | |||
padding-right: 10px; /* 调整滚动条样式 */ | |||
} | |||
.drawer >>> .el-form, | |||
.drawer >>> .attr-list { | |||
padding: 0 16px; | |||
} | |||
.drawer-body__footer { | |||
display: flex; | |||
justify-content: flex-end; | |||
padding: 18px; | |||
} | |||
</style> |
@@ -0,0 +1,139 @@ | |||
<template> | |||
<el-dialog | |||
:visible.sync="visible" | |||
:width="'35%'" | |||
:append-to-body="true" | |||
:close-on-click-modal="false" | |||
class="dialog"> | |||
<template #title> | |||
<slot name="title"> | |||
<div class="titleStyle"> | |||
{{ !dataForm.id ? '新增' : '编辑' }} | |||
</div> | |||
</slot> | |||
</template> | |||
<el-form | |||
ref="dataForm" | |||
:model="dataForm" | |||
:rules="dataRule" | |||
label-width="100px" | |||
@keyup.enter.native="dataFormSubmit()"> | |||
<el-form-item label="属性名" prop="name"> | |||
<el-input | |||
v-model="dataForm.name" | |||
placeholder="请输入属性名" | |||
clearable /> | |||
</el-form-item> | |||
<el-form-item label="属性值" prop="value"> | |||
<el-input | |||
v-model="dataForm.value" | |||
placeholder="请输入属性值" | |||
clearable /> | |||
</el-form-item> | |||
</el-form> | |||
<el-row style="text-align: right"> | |||
<el-button @click="visible = false">取消</el-button> | |||
<el-button type="primary" @click="dataFormSubmit()">确定</el-button> | |||
</el-row> | |||
</el-dialog> | |||
</template> | |||
<script> | |||
import { | |||
createProductAttr, | |||
updateProductAttr, | |||
getProductAttr, | |||
} from '@/api/core/base/productAttr'; | |||
export default { | |||
props: { | |||
productId: { | |||
type: String, | |||
default: '', | |||
}, | |||
}, | |||
data() { | |||
return { | |||
visible: false, | |||
dataForm: { | |||
id: 0, | |||
name: '', | |||
value: '', | |||
}, | |||
dataRule: { | |||
name: [{ required: true, message: '名称不能为空', trigger: 'blur' }], | |||
}, | |||
}; | |||
}, | |||
methods: { | |||
init(id) { | |||
this.dataForm.id = id || ''; | |||
this.visible = true; | |||
this.$nextTick(() => { | |||
this.$refs['dataForm'].resetFields(); | |||
if (this.dataForm.id) { | |||
getProductAttr(this.dataForm.id).then((res) => { | |||
const { name, value } = res.data; | |||
this.dataForm.name = name; | |||
this.dataForm.value = value; | |||
}); | |||
} | |||
}); | |||
}, | |||
// 表单提交 | |||
dataFormSubmit() { | |||
this.$refs['dataForm'].validate((valid) => { | |||
if (valid) { | |||
// 修改的提交 | |||
if (this.dataForm.id) { | |||
updateProductAttr({ | |||
...this.dataForm, | |||
productId: this.productId, | |||
}).then((response) => { | |||
this.$modal.msgSuccess('修改成功'); | |||
this.visible = false; | |||
this.$emit('refreshDataList'); | |||
}); | |||
return; | |||
} | |||
// 添加的提交 | |||
createProductAttr({ | |||
...this.dataForm, | |||
productId: this.productId, | |||
}).then((response) => { | |||
this.$modal.msgSuccess('新增成功'); | |||
this.visible = false; | |||
this.$emit('refreshDataList'); | |||
}); | |||
} | |||
}); | |||
}, | |||
}, | |||
}; | |||
</script> | |||
<style scoped> | |||
.dialog >>> .el-dialog__body { | |||
padding: 30px 24px; | |||
} | |||
.dialog >>> .el-dialog__header { | |||
font-size: 16px; | |||
color: rgba(0, 0, 0, 0.85); | |||
font-weight: 500; | |||
padding: 13px 24px; | |||
border-bottom: 1px solid #e9e9e9; | |||
} | |||
.dialog >>> .el-dialog__header .titleStyle::before { | |||
content: ''; | |||
display: inline-block; | |||
width: 4px; | |||
height: 16px; | |||
background-color: #0b58ff; | |||
border-radius: 1px; | |||
margin-right: 8px; | |||
position: relative; | |||
top: 2px; | |||
} | |||
</style> |
@@ -0,0 +1,200 @@ | |||
<!-- | |||
* @Author: zwq | |||
* @Date: 2023-08-01 14:55:51 | |||
* @LastEditors: DY | |||
* @LastEditTime: 2023-10-13 10:27:00 | |||
* @Description: | |||
--> | |||
<template> | |||
<div class="app-container"> | |||
<search-bar | |||
:formConfigs="formConfig" | |||
ref="searchBarForm" | |||
@headBtnClick="buttonClick" /> | |||
<base-table | |||
:table-props="tableProps" | |||
:page="listQuery.pageNo" | |||
:limit="listQuery.pageSize" | |||
:table-data="tableData"> | |||
<method-btn | |||
v-if="tableBtn.length" | |||
slot="handleBtn" | |||
:width="120" | |||
label="操作" | |||
:method-list="tableBtn" | |||
@clickBtn="handleClick" /> | |||
</base-table> | |||
<pagination | |||
:limit.sync="listQuery.pageSize" | |||
:page.sync="listQuery.pageNo" | |||
:total="listQuery.total" | |||
@pagination="getDataList" /> | |||
<add-or-update | |||
v-if="addOrUpdateVisible" | |||
ref="addOrUpdate" | |||
@refreshDataList="getDataList" /> | |||
</div> | |||
</template> | |||
<script> | |||
import AddOrUpdate from './add-or-updata'; | |||
import unitDict from './unitDict'; | |||
import basicPage from '../../mixins/basic-page'; | |||
import { parseTime } from '../../mixins/code-filter'; | |||
import { | |||
deleteProduct, | |||
getProductPage, | |||
exportProductExcel, | |||
} from '@/api/core/base/product'; | |||
const tableProps = [ | |||
{ | |||
prop: 'code', | |||
label: '产品编码' | |||
}, | |||
{ | |||
prop: 'name', | |||
label: '产品名称' | |||
}, | |||
{ | |||
prop: 'specifications', | |||
label: '规格' | |||
}, | |||
{ | |||
prop: 'unitDictValue', | |||
label: '单位', | |||
subcomponent: unitDict, | |||
}, | |||
{ | |||
prop: 'createTime', | |||
label: '创建时间', | |||
filter: parseTime | |||
}, | |||
]; | |||
export default { | |||
mixins: [basicPage], | |||
data() { | |||
return { | |||
urlOptions: { | |||
getDataListURL: getProductPage, | |||
deleteURL: deleteProduct, | |||
exportURL: exportProductExcel, | |||
}, | |||
tableProps, | |||
tableBtn: [ | |||
this.$auth.hasPermi(`base:product:update`) | |||
? { | |||
type: 'edit', | |||
btnName: '编辑', | |||
} | |||
: undefined, | |||
this.$auth.hasPermi(`base:product:delete`) | |||
? { | |||
type: 'delete', | |||
btnName: '删除', | |||
} | |||
: undefined, | |||
this.$auth.hasPermi(`base:product:update`) | |||
? { | |||
type: 'detail', | |||
btnName: '详情', | |||
} | |||
: undefined, | |||
].filter((v) => v), | |||
tableData: [], | |||
formConfig: [ | |||
{ | |||
type: 'input', | |||
label: '产品编码', | |||
placeholder: '产品编码', | |||
param: 'code', | |||
}, | |||
{ | |||
type: 'input', | |||
label: '产品名称', | |||
placeholder: '产品名称', | |||
param: 'name', | |||
}, | |||
{ | |||
type: 'button', | |||
btnName: '搜索', | |||
name: 'search', | |||
color: 'primary', | |||
}, | |||
// { | |||
// type: 'separate', | |||
// }, | |||
// { | |||
// type: 'button', | |||
// btnName: '重置', | |||
// name: 'reset', | |||
// }, | |||
{ | |||
type: 'separate', | |||
}, | |||
{ | |||
type: this.$auth.hasPermi('base:product:create') ? 'button' : '', | |||
btnName: '新增', | |||
name: 'add', | |||
color: 'success', | |||
plain: true, | |||
}, | |||
// { | |||
// type: 'separate', | |||
// type: this.$auth.hasPermi('base:product:create') ? 'separate' : '', | |||
// }, | |||
// { | |||
// type: this.$auth.hasPermi('base:product:export') ? 'button' : '', | |||
// btnName: '导出', | |||
// name: 'export', | |||
// color: 'warning', | |||
// }, | |||
], | |||
}; | |||
}, | |||
components: { | |||
AddOrUpdate, | |||
}, | |||
created() {}, | |||
methods: { | |||
buttonClick(val) { | |||
switch (val.btnName) { | |||
case 'search': | |||
this.listQuery.pageNo = 1; | |||
this.listQuery.pageSize = 10; | |||
this.listQuery.name = val.name; | |||
this.listQuery.code = val.code; | |||
this.getDataList(); | |||
break; | |||
case 'reset': | |||
this.$refs.searchBarForm.resetForm(); | |||
this.listQuery = { | |||
pageSize: 10, | |||
pageNo: 1, | |||
total: 1, | |||
}; | |||
this.getDataList(); | |||
break; | |||
case 'add': | |||
this.addOrEditTitle = '新增'; | |||
this.addOrUpdateVisible = true; | |||
this.addOrUpdateHandle(); | |||
break; | |||
case 'export': | |||
this.handleExport(); | |||
break; | |||
default: | |||
console.log(val); | |||
} | |||
}, | |||
otherMethods(val) { | |||
this.addOrUpdateVisible = true; | |||
this.addOrEditTitle = '详情'; | |||
this.$nextTick(() => { | |||
this.$refs.addOrUpdate.init(val.data.id, true); | |||
}); | |||
}, | |||
}, | |||
}; | |||
</script> |
@@ -0,0 +1,228 @@ | |||
<template> | |||
<div class="app-container"> | |||
<!-- 搜索工作栏 --> | |||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> | |||
<el-form-item label="名称" prop="name"> | |||
<el-input v-model="queryParams.name" placeholder="请输入名称" clearable @keyup.enter.native="handleQuery"/> | |||
</el-form-item> | |||
<el-form-item label="产品id,关联产品表" prop="productId"> | |||
<el-input v-model="queryParams.productId" placeholder="请输入产品id,关联产品表" clearable @keyup.enter.native="handleQuery"/> | |||
</el-form-item> | |||
<el-form-item label="属性值" prop="value"> | |||
<el-input v-model="queryParams.value" placeholder="请输入属性值" clearable @keyup.enter.native="handleQuery"/> | |||
</el-form-item> | |||
<el-form-item label="创建时间" prop="createTime"> | |||
<el-date-picker v-model="queryParams.createTime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss" type="daterange" | |||
range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00', '23:59:59']" /> | |||
</el-form-item> | |||
<el-form-item> | |||
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button> | |||
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button> | |||
</el-form-item> | |||
</el-form> | |||
<!-- 操作工具栏 --> | |||
<el-row :gutter="10" class="mb8"> | |||
<el-col :span="1.5"> | |||
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" | |||
v-hasPermi="['base:product-attr:create']">新增</el-button> | |||
</el-col> | |||
<el-col :span="1.5"> | |||
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading" | |||
v-hasPermi="['base:product-attr:export']">导出</el-button> | |||
</el-col> | |||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> | |||
</el-row> | |||
<!-- 列表 --> | |||
<el-table v-loading="loading" :data="list"> | |||
<el-table-column label="ID" align="center" prop="id" /> | |||
<el-table-column label="名称" align="center" prop="name" /> | |||
<el-table-column label="产品id,关联产品表" align="center" prop="productId" /> | |||
<el-table-column label="属性值" align="center" prop="value" /> | |||
<el-table-column label="创建时间" align="center" prop="createTime" width="180"> | |||
<template v-slot="scope"> | |||
<span>{{ parseTime(scope.row.createTime) }}</span> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> | |||
<template v-slot="scope"> | |||
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" | |||
v-hasPermi="['base:product-attr:update']">修改</el-button> | |||
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" | |||
v-hasPermi="['base:product-attr:delete']">删除</el-button> | |||
</template> | |||
</el-table-column> | |||
</el-table> | |||
<!-- 分页组件 --> | |||
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" | |||
@pagination="getList"/> | |||
<!-- 对话框(添加 / 修改) --> | |||
<el-dialog :title="title" :visible.sync="open" width="500px" v-dialogDrag append-to-body> | |||
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> | |||
<el-form-item label="名称" prop="name"> | |||
<el-input v-model="form.name" placeholder="请输入名称" /> | |||
</el-form-item> | |||
<el-form-item label="产品id,关联产品表" prop="productId"> | |||
<el-input v-model="form.productId" placeholder="请输入产品id,关联产品表" /> | |||
</el-form-item> | |||
<el-form-item label="属性值" prop="value"> | |||
<el-input v-model="form.value" placeholder="请输入属性值" /> | |||
</el-form-item> | |||
</el-form> | |||
<div slot="footer" class="dialog-footer"> | |||
<el-button type="primary" @click="submitForm">确 定</el-button> | |||
<el-button @click="cancel">取 消</el-button> | |||
</div> | |||
</el-dialog> | |||
</div> | |||
</template> | |||
<script> | |||
import { createProductAttr, updateProductAttr, deleteProductAttr, getProductAttr, getProductAttrPage, exportProductAttrExcel } from "@/api/core/base/productAttr"; | |||
export default { | |||
name: "ProductAttr", | |||
components: { | |||
}, | |||
data() { | |||
return { | |||
// 遮罩层 | |||
loading: true, | |||
// 导出遮罩层 | |||
exportLoading: false, | |||
// 显示搜索条件 | |||
showSearch: true, | |||
// 总条数 | |||
total: 0, | |||
// 产品属性列表 | |||
list: [], | |||
// 弹出层标题 | |||
title: "", | |||
// 是否显示弹出层 | |||
open: false, | |||
// 查询参数 | |||
queryParams: { | |||
pageNo: 1, | |||
pageSize: 10, | |||
name: null, | |||
productId: null, | |||
value: null, | |||
createTime: [], | |||
}, | |||
// 表单参数 | |||
form: {}, | |||
// 表单校验 | |||
rules: { | |||
name: [{ required: true, message: "名称不能为空", trigger: "blur" }], | |||
productId: [{ required: true, message: "产品id,关联产品表不能为空", trigger: "blur" }], | |||
} | |||
}; | |||
}, | |||
created() { | |||
this.getList(); | |||
}, | |||
methods: { | |||
/** 查询列表 */ | |||
getList() { | |||
this.loading = true; | |||
// 执行查询 | |||
getProductAttrPage(this.queryParams).then(response => { | |||
this.list = response.data.list; | |||
this.total = response.data.total; | |||
this.loading = false; | |||
}); | |||
}, | |||
/** 取消按钮 */ | |||
cancel() { | |||
this.open = false; | |||
this.reset(); | |||
}, | |||
/** 表单重置 */ | |||
reset() { | |||
this.form = { | |||
id: undefined, | |||
name: undefined, | |||
productId: undefined, | |||
value: undefined, | |||
}; | |||
this.resetForm("form"); | |||
}, | |||
/** 搜索按钮操作 */ | |||
handleQuery() { | |||
this.queryParams.pageNo = 1; | |||
this.getList(); | |||
}, | |||
/** 重置按钮操作 */ | |||
resetQuery() { | |||
this.resetForm("queryForm"); | |||
this.handleQuery(); | |||
}, | |||
/** 新增按钮操作 */ | |||
handleAdd() { | |||
this.reset(); | |||
this.open = true; | |||
this.title = "添加产品属性"; | |||
}, | |||
/** 修改按钮操作 */ | |||
handleUpdate(row) { | |||
this.reset(); | |||
const id = row.id; | |||
getProductAttr(id).then(response => { | |||
this.form = response.data; | |||
this.open = true; | |||
this.title = "修改产品属性"; | |||
}); | |||
}, | |||
/** 提交按钮 */ | |||
submitForm() { | |||
this.$refs["form"].validate(valid => { | |||
if (!valid) { | |||
return; | |||
} | |||
// 修改的提交 | |||
if (this.form.id != null) { | |||
updateProductAttr(this.form).then(response => { | |||
this.$modal.msgSuccess("修改成功"); | |||
this.open = false; | |||
this.getList(); | |||
}); | |||
return; | |||
} | |||
// 添加的提交 | |||
createProductAttr(this.form).then(response => { | |||
this.$modal.msgSuccess("新增成功"); | |||
this.open = false; | |||
this.getList(); | |||
}); | |||
}); | |||
}, | |||
/** 删除按钮操作 */ | |||
handleDelete(row) { | |||
const id = row.id; | |||
this.$modal.confirm('是否确认删除产品属性编号为"' + id + '"的数据项?').then(function() { | |||
return deleteProductAttr(id); | |||
}).then(() => { | |||
this.getList(); | |||
this.$modal.msgSuccess("删除成功"); | |||
}).catch(() => {}); | |||
}, | |||
/** 导出按钮操作 */ | |||
handleExport() { | |||
// 处理查询参数 | |||
let params = {...this.queryParams}; | |||
params.pageNo = undefined; | |||
params.pageSize = undefined; | |||
this.$modal.confirm('是否确认导出所有产品属性数据项?').then(() => { | |||
this.exportLoading = true; | |||
return exportProductAttrExcel(params); | |||
}).then(response => { | |||
this.$download.excel(response, '产品属性.xls'); | |||
this.exportLoading = false; | |||
}).catch(() => {}); | |||
} | |||
} | |||
}; | |||
</script> |
@@ -0,0 +1,153 @@ | |||
<!-- | |||
* @Author: zwq | |||
* @Date: 2023-08-01 13:52:10 | |||
* @LastEditors: DY | |||
* @LastEditTime: 2023-09-21 15:45:07 | |||
* @Description: | |||
--> | |||
<template> | |||
<el-form | |||
class="dialog-inner__form" | |||
:model="dataForm" | |||
:rules="dataRule" | |||
ref="dataForm" | |||
@keyup.enter.native="dataFormSubmit()" | |||
label-width="90px"> | |||
<el-row :gutter="20"> | |||
<el-col :span="12"> | |||
<el-form-item label="产线编码" prop="code"> | |||
<el-input | |||
v-model="dataForm.code" | |||
clearable | |||
placeholder="请输入产线编码" /> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="12"> | |||
<el-form-item label="产线名称" prop="name"> | |||
<el-input | |||
v-model="dataForm.name" | |||
clearable | |||
placeholder="请输入产线名称" /> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
<el-row :gutter="20"> | |||
<el-col :span="12"> | |||
<el-form-item prop="factoryId" label="工厂名称"> | |||
<el-select | |||
v-model="dataForm.factoryId" | |||
filterable | |||
clearable | |||
placeholder="请选择工厂"> | |||
<el-option | |||
v-for="item in urlOptions.optionArr.arr0" | |||
:key="item.id" | |||
:label="item.name" | |||
:value="item.id"></el-option> | |||
</el-select> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="12"> | |||
<el-form-item label="产线TT值(h)" prop="tvalue"> | |||
<el-input | |||
v-model="dataForm.tvalue" | |||
clearable | |||
placeholder="请输入每小时下片数量" /> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
<el-row :gutter="20"> | |||
<el-col :span="12"> | |||
<el-form-item label="额外编码" prop="externalCode"> | |||
<el-input | |||
v-model="dataForm.externalCode" | |||
clearable | |||
placeholder="请输入额外编码" /> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="12"> | |||
<el-form-item label="备注" prop="remark"> | |||
<el-input | |||
v-model="dataForm.remark" | |||
clearable | |||
placeholder="请输入备注" /> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
<el-row> | |||
<el-col> | |||
<el-form-item label="描述" prop="description"> | |||
<el-input | |||
v-model="dataForm.description" | |||
type="textarea" | |||
placeholder="请输入内容" /> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
</el-form> | |||
</template> | |||
<script> | |||
import basicAdd from '../../mixins/basic-add'; | |||
import { | |||
createProductionLine, | |||
updateProductionLine, | |||
getProductionLine, | |||
getCode, | |||
} from '@/api/core/base/productionLine'; | |||
import { getFactoryPage } from '@/api/core/base/factory'; | |||
export default { | |||
mixins: [basicAdd], | |||
data() { | |||
return { | |||
urlOptions: { | |||
getOption: true, | |||
isGetCode: true, | |||
codeURL: getCode, | |||
createURL: createProductionLine, | |||
updateURL: updateProductionLine, | |||
infoURL: getProductionLine, | |||
optionArrUrl: [getFactoryPage], | |||
}, | |||
dataForm: { | |||
id: undefined, | |||
code: undefined, | |||
name: undefined, | |||
tvalue: undefined, | |||
factoryId: undefined, | |||
externalCode: undefined, | |||
remark: undefined, | |||
description: undefined, | |||
}, | |||
dataRule: { | |||
code: [ | |||
{ required: true, message: '产线编码不能为空', trigger: 'blur' }, | |||
], | |||
name: [ | |||
{ required: true, message: '产线名称不能为空', trigger: 'blur' }, | |||
], | |||
factoryId: [ | |||
{ required: true, message: '工厂不能为空', trigger: 'change' }, | |||
], | |||
tvalue: [ | |||
{ | |||
type: 'number', | |||
message: '请输入正确的数字', | |||
trigger: 'change', | |||
transform: (val) => Number(val), | |||
}, | |||
], | |||
}, | |||
}; | |||
}, | |||
methods: {}, | |||
}; | |||
</script> | |||
<style scoped> | |||
.dialog-inner__form >>> .el-select { | |||
width: 100%; | |||
} | |||
</style> |
@@ -0,0 +1,217 @@ | |||
<template> | |||
<div class="app-container"> | |||
<search-bar | |||
:formConfigs="formConfig" | |||
ref="searchBarForm" | |||
@headBtnClick="buttonClick" /> | |||
<base-table | |||
v-loading="dataListLoading" | |||
:table-props="tableProps" | |||
:page="listQuery.pageNo" | |||
:limit="listQuery.pageSize" | |||
:table-data="tableData"> | |||
<method-btn | |||
v-if="tableBtn.length" | |||
slot="handleBtn" | |||
:width="120" | |||
label="操作" | |||
:method-list="tableBtn" | |||
@clickBtn="handleClick" /> | |||
</base-table> | |||
<pagination | |||
:limit.sync="listQuery.pageSize" | |||
:page.sync="listQuery.pageNo" | |||
:total="listQuery.total" | |||
@pagination="getDataList" /> | |||
<base-dialog | |||
:dialogTitle="addOrEditTitle" | |||
:dialogVisible="addOrUpdateVisible" | |||
@cancel="handleCancel" | |||
@confirm="handleConfirm" | |||
:before-close="handleCancel" | |||
width="50%"> | |||
<add-or-update | |||
ref="addOrUpdate" | |||
@refreshDataList="successSubmit"></add-or-update> | |||
</base-dialog> | |||
</div> | |||
</template> | |||
<script> | |||
import AddOrUpdate from './add-or-updata'; | |||
import basicPage from '../../mixins/basic-page'; | |||
import codeFilter from '../../mixins/code-filter'; | |||
import { parseTime } from '../../mixins/code-filter'; | |||
import { | |||
deleteProductionLine, | |||
getProductionLinePage, | |||
exportProductionLineExcel, | |||
getStatus, | |||
} from '@/api/core/base/productionLine'; | |||
const tableProps = [ | |||
{ | |||
prop: 'code', | |||
label: '产线编码' | |||
}, | |||
{ | |||
prop: 'name', | |||
label: '产线名称' | |||
}, | |||
{ | |||
prop: 'factoryName', | |||
label: '工厂' | |||
}, | |||
{ | |||
prop: 'externalCode', | |||
label: '额外编码' | |||
}, | |||
{ | |||
prop: 'status', | |||
label: '当前状态', | |||
filter: codeFilter('lineStatus'), | |||
}, | |||
{ | |||
prop: 'description', | |||
label: '描述' | |||
}, | |||
{ | |||
prop: 'remark', | |||
label: '备注' | |||
}, | |||
{ | |||
prop: 'createTime', | |||
label: '创建时间', | |||
filter: parseTime | |||
}, | |||
]; | |||
export default { | |||
mixins: [basicPage], | |||
data() { | |||
return { | |||
urlOptions: { | |||
getDataListURL: getProductionLinePage, | |||
deleteURL: deleteProductionLine, | |||
exportURL: exportProductionLineExcel, | |||
}, | |||
tableProps, | |||
tableBtn: [ | |||
this.$auth.hasPermi(`base:production-line:update`) | |||
? { | |||
type: 'edit', | |||
btnName: '编辑', | |||
} | |||
: undefined, | |||
this.$auth.hasPermi(`base:production-line:delete`) | |||
? { | |||
type: 'delete', | |||
btnName: '删除', | |||
} | |||
: undefined, | |||
].filter((v) => v), | |||
tableData: [], | |||
formConfig: [ | |||
{ | |||
type: 'input', | |||
label: '产线名称', | |||
placeholder: '产线名称', | |||
param: 'name', | |||
}, | |||
{ | |||
type: 'button', | |||
btnName: '搜索', | |||
name: 'search', | |||
color: 'primary', | |||
}, | |||
// { | |||
// type: 'separate', | |||
// }, | |||
// { | |||
// type: 'button', | |||
// btnName: '重置', | |||
// name: 'reset', | |||
// }, | |||
{ | |||
type: 'separate', | |||
}, | |||
{ | |||
type: this.$auth.hasPermi('base:production-line:create') | |||
? 'button' | |||
: '', | |||
btnName: '新增', | |||
name: 'add', | |||
color: 'success', | |||
plain: true, | |||
}, | |||
// { | |||
// type: this.$auth.hasPermi('base:production-line:create') ? 'separate' : '', | |||
// }, | |||
// { | |||
// type: this.$auth.hasPermi('base:production-line:export') ? 'button' : '', | |||
// btnName: '导出', | |||
// name: 'export', | |||
// color: 'warning', | |||
// }, | |||
], | |||
}; | |||
}, | |||
components: { | |||
AddOrUpdate, | |||
}, | |||
created() {}, | |||
methods: { | |||
// 获取数据列表 | |||
getDataList() { | |||
this.dataListLoading = true; | |||
this.urlOptions.getDataListURL(this.listQuery).then((response) => { | |||
this.listQuery.total = response.data.total; | |||
this.getStatus(response.data.list); | |||
this.dataListLoading = false; | |||
}); | |||
}, | |||
getStatus(list) { | |||
const ids = list.map((i) => { | |||
return i.id; | |||
}); | |||
getStatus(ids).then((response) => { | |||
response.forEach((a) => { | |||
list.forEach((b) => { | |||
if (b.id === a.id) b.status = a.status; | |||
}); | |||
}); | |||
this.tableData = list; | |||
}); | |||
}, | |||
buttonClick(val) { | |||
switch (val.btnName) { | |||
case 'search': | |||
this.listQuery.pageNo = 1; | |||
this.listQuery.pageSize = 10; | |||
this.listQuery.name = val.name; | |||
this.getDataList(); | |||
break; | |||
case 'reset': | |||
this.$refs.searchBarForm.resetForm(); | |||
this.listQuery = { | |||
pageSize: 10, | |||
pageNo: 1, | |||
total: 1, | |||
}; | |||
this.getDataList(); | |||
break; | |||
case 'add': | |||
this.addOrEditTitle = '新增'; | |||
this.addOrUpdateVisible = true; | |||
this.addOrUpdateHandle(); | |||
break; | |||
case 'export': | |||
this.handleExport(); | |||
break; | |||
default: | |||
console.log(val); | |||
} | |||
}, | |||
}, | |||
}; | |||
</script> |
@@ -0,0 +1,271 @@ | |||
<template> | |||
<div class="app-container"> | |||
<!-- 搜索工作栏 --> | |||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> | |||
<el-form-item label="产线id" prop="productionLineId"> | |||
<el-input v-model="queryParams.productionLineId" placeholder="请输入产线id" clearable @keyup.enter.native="handleQuery"/> | |||
</el-form-item> | |||
<el-form-item label="上一次记录时间至该条记录时间段内上片数量" prop="inputNum"> | |||
<el-input v-model="queryParams.inputNum" placeholder="请输入上一次记录时间至该条记录时间段内上片数量" clearable @keyup.enter.native="handleQuery"/> | |||
</el-form-item> | |||
<el-form-item label="上一次记录时间至该条记录时间段内下片数量" prop="outputNum"> | |||
<el-input v-model="queryParams.outputNum" placeholder="请输入上一次记录时间至该条记录时间段内下片数量" clearable @keyup.enter.native="handleQuery"/> | |||
</el-form-item> | |||
<el-form-item label="该记录时间点的累计上片数量" prop="sumInputNum"> | |||
<el-input v-model="queryParams.sumInputNum" placeholder="请输入该记录时间点的累计上片数量" clearable @keyup.enter.native="handleQuery"/> | |||
</el-form-item> | |||
<el-form-item label="该记录时间点的累计下片数量" prop="sumOutputNum"> | |||
<el-input v-model="queryParams.sumOutputNum" placeholder="请输入该记录时间点的累计下片数量" clearable @keyup.enter.native="handleQuery"/> | |||
</el-form-item> | |||
<el-form-item label="记录时间" prop="recordTime"> | |||
<el-date-picker v-model="queryParams.recordTime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss" type="daterange" | |||
range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00', '23:59:59']" /> | |||
</el-form-item> | |||
<el-form-item label="合格率(%)" prop="passRate"> | |||
<el-input v-model="queryParams.passRate" placeholder="请输入合格率(%)" clearable @keyup.enter.native="handleQuery"/> | |||
</el-form-item> | |||
<el-form-item label="创建时间" prop="createTime"> | |||
<el-date-picker v-model="queryParams.createTime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss" type="daterange" | |||
range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00', '23:59:59']" /> | |||
</el-form-item> | |||
<el-form-item> | |||
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button> | |||
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button> | |||
</el-form-item> | |||
</el-form> | |||
<!-- 操作工具栏 --> | |||
<el-row :gutter="10" class="mb8"> | |||
<el-col :span="1.5"> | |||
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" | |||
v-hasPermi="['base:production-line-rec-day:create']">新增</el-button> | |||
</el-col> | |||
<el-col :span="1.5"> | |||
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading" | |||
v-hasPermi="['base:production-line-rec-day:export']">导出</el-button> | |||
</el-col> | |||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> | |||
</el-row> | |||
<!-- 列表 --> | |||
<el-table v-loading="loading" :data="list"> | |||
<el-table-column label="ID" align="center" prop="id" /> | |||
<el-table-column label="产线id" align="center" prop="productionLineId" /> | |||
<el-table-column label="上一次记录时间至该条记录时间段内上片数量" align="center" prop="inputNum" /> | |||
<el-table-column label="上一次记录时间至该条记录时间段内下片数量" align="center" prop="outputNum" /> | |||
<el-table-column label="该记录时间点的累计上片数量" align="center" prop="sumInputNum" /> | |||
<el-table-column label="该记录时间点的累计下片数量" align="center" prop="sumOutputNum" /> | |||
<el-table-column label="记录时间" align="center" prop="recordTime" width="180"> | |||
<template v-slot="scope"> | |||
<span>{{ parseTime(scope.row.recordTime) }}</span> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="合格率(%)" align="center" prop="passRate" /> | |||
<el-table-column label="创建时间" align="center" prop="createTime" width="180"> | |||
<template v-slot="scope"> | |||
<span>{{ parseTime(scope.row.createTime) }}</span> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> | |||
<template v-slot="scope"> | |||
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" | |||
v-hasPermi="['base:production-line-rec-day:update']">修改</el-button> | |||
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" | |||
v-hasPermi="['base:production-line-rec-day:delete']">删除</el-button> | |||
</template> | |||
</el-table-column> | |||
</el-table> | |||
<!-- 分页组件 --> | |||
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" | |||
@pagination="getList"/> | |||
<!-- 对话框(添加 / 修改) --> | |||
<el-dialog :title="title" :visible.sync="open" width="500px" v-dialogDrag append-to-body> | |||
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> | |||
<el-form-item label="产线id" prop="productionLineId"> | |||
<el-input v-model="form.productionLineId" placeholder="请输入产线id" /> | |||
</el-form-item> | |||
<el-form-item label="上一次记录时间至该条记录时间段内上片数量" prop="inputNum"> | |||
<el-input v-model="form.inputNum" placeholder="请输入上一次记录时间至该条记录时间段内上片数量" /> | |||
</el-form-item> | |||
<el-form-item label="上一次记录时间至该条记录时间段内下片数量" prop="outputNum"> | |||
<el-input v-model="form.outputNum" placeholder="请输入上一次记录时间至该条记录时间段内下片数量" /> | |||
</el-form-item> | |||
<el-form-item label="该记录时间点的累计上片数量" prop="sumInputNum"> | |||
<el-input v-model="form.sumInputNum" placeholder="请输入该记录时间点的累计上片数量" /> | |||
</el-form-item> | |||
<el-form-item label="该记录时间点的累计下片数量" prop="sumOutputNum"> | |||
<el-input v-model="form.sumOutputNum" placeholder="请输入该记录时间点的累计下片数量" /> | |||
</el-form-item> | |||
<el-form-item label="记录时间" prop="recordTime"> | |||
<el-date-picker clearable v-model="form.recordTime" type="date" value-format="timestamp" placeholder="选择记录时间" /> | |||
</el-form-item> | |||
<el-form-item label="合格率(%)" prop="passRate"> | |||
<el-input v-model="form.passRate" placeholder="请输入合格率(%)" /> | |||
</el-form-item> | |||
</el-form> | |||
<div slot="footer" class="dialog-footer"> | |||
<el-button type="primary" @click="submitForm">确 定</el-button> | |||
<el-button @click="cancel">取 消</el-button> | |||
</div> | |||
</el-dialog> | |||
</div> | |||
</template> | |||
<script> | |||
import { createProductionLineRecDay, updateProductionLineRecDay, deleteProductionLineRecDay, getProductionLineRecDay, getProductionLineRecDayPage, exportProductionLineRecDayExcel } from "@/api/core/base/productionLineRecDay"; | |||
export default { | |||
name: "ProductionLineRecDay", | |||
components: { | |||
}, | |||
data() { | |||
return { | |||
// 遮罩层 | |||
loading: true, | |||
// 导出遮罩层 | |||
exportLoading: false, | |||
// 显示搜索条件 | |||
showSearch: true, | |||
// 总条数 | |||
total: 0, | |||
// 产线生产定时记录表 一天添加一次数据列表 | |||
list: [], | |||
// 弹出层标题 | |||
title: "", | |||
// 是否显示弹出层 | |||
open: false, | |||
// 查询参数 | |||
queryParams: { | |||
pageNo: 1, | |||
pageSize: 10, | |||
productionLineId: null, | |||
inputNum: null, | |||
outputNum: null, | |||
sumInputNum: null, | |||
sumOutputNum: null, | |||
recordTime: [], | |||
passRate: null, | |||
createTime: [], | |||
}, | |||
// 表单参数 | |||
form: {}, | |||
// 表单校验 | |||
rules: { | |||
inputNum: [{ required: true, message: "上一次记录时间至该条记录时间段内上片数量不能为空", trigger: "blur" }], | |||
outputNum: [{ required: true, message: "上一次记录时间至该条记录时间段内下片数量不能为空", trigger: "blur" }], | |||
sumInputNum: [{ required: true, message: "该记录时间点的累计上片数量不能为空", trigger: "blur" }], | |||
sumOutputNum: [{ required: true, message: "该记录时间点的累计下片数量不能为空", trigger: "blur" }], | |||
} | |||
}; | |||
}, | |||
created() { | |||
this.getList(); | |||
}, | |||
methods: { | |||
/** 查询列表 */ | |||
getList() { | |||
this.loading = true; | |||
// 执行查询 | |||
getProductionLineRecDayPage(this.queryParams).then(response => { | |||
this.list = response.data.list; | |||
this.total = response.data.total; | |||
this.loading = false; | |||
}); | |||
}, | |||
/** 取消按钮 */ | |||
cancel() { | |||
this.open = false; | |||
this.reset(); | |||
}, | |||
/** 表单重置 */ | |||
reset() { | |||
this.form = { | |||
id: undefined, | |||
productionLineId: undefined, | |||
inputNum: undefined, | |||
outputNum: undefined, | |||
sumInputNum: undefined, | |||
sumOutputNum: undefined, | |||
recordTime: undefined, | |||
passRate: undefined, | |||
}; | |||
this.resetForm("form"); | |||
}, | |||
/** 搜索按钮操作 */ | |||
handleQuery() { | |||
this.queryParams.pageNo = 1; | |||
this.getList(); | |||
}, | |||
/** 重置按钮操作 */ | |||
resetQuery() { | |||
this.resetForm("queryForm"); | |||
this.handleQuery(); | |||
}, | |||
/** 新增按钮操作 */ | |||
handleAdd() { | |||
this.reset(); | |||
this.open = true; | |||
this.title = "添加产线生产定时记录表 一天添加一次数据"; | |||
}, | |||
/** 修改按钮操作 */ | |||
handleUpdate(row) { | |||
this.reset(); | |||
const id = row.id; | |||
getProductionLineRecDay(id).then(response => { | |||
this.form = response.data; | |||
this.open = true; | |||
this.title = "修改产线生产定时记录表 一天添加一次数据"; | |||
}); | |||
}, | |||
/** 提交按钮 */ | |||
submitForm() { | |||
this.$refs["form"].validate(valid => { | |||
if (!valid) { | |||
return; | |||
} | |||
// 修改的提交 | |||
if (this.form.id != null) { | |||
updateProductionLineRecDay(this.form).then(response => { | |||
this.$modal.msgSuccess("修改成功"); | |||
this.open = false; | |||
this.getList(); | |||
}); | |||
return; | |||
} | |||
// 添加的提交 | |||
createProductionLineRecDay(this.form).then(response => { | |||
this.$modal.msgSuccess("新增成功"); | |||
this.open = false; | |||
this.getList(); | |||
}); | |||
}); | |||
}, | |||
/** 删除按钮操作 */ | |||
handleDelete(row) { | |||
const id = row.id; | |||
this.$modal.confirm('是否确认删除产线生产定时记录表 一天添加一次数据编号为"' + id + '"的数据项?').then(function() { | |||
return deleteProductionLineRecDay(id); | |||
}).then(() => { | |||
this.getList(); | |||
this.$modal.msgSuccess("删除成功"); | |||
}).catch(() => {}); | |||
}, | |||
/** 导出按钮操作 */ | |||
handleExport() { | |||
// 处理查询参数 | |||
let params = {...this.queryParams}; | |||
params.pageNo = undefined; | |||
params.pageSize = undefined; | |||
this.$modal.confirm('是否确认导出所有产线生产定时记录表 一天添加一次数据数据项?').then(() => { | |||
this.exportLoading = true; | |||
return exportProductionLineRecDayExcel(params); | |||
}).then(response => { | |||
this.$download.excel(response, '产线生产定时记录表 一天添加一次数据.xls'); | |||
this.exportLoading = false; | |||
}).catch(() => {}); | |||
} | |||
} | |||
}; | |||
</script> |
@@ -0,0 +1,271 @@ | |||
<template> | |||
<div class="app-container"> | |||
<!-- 搜索工作栏 --> | |||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> | |||
<el-form-item label="产线id" prop="productionLineId"> | |||
<el-input v-model="queryParams.productionLineId" placeholder="请输入产线id" clearable @keyup.enter.native="handleQuery"/> | |||
</el-form-item> | |||
<el-form-item label="上一次记录时间至该条记录时间端内上片数量" prop="inputNum"> | |||
<el-input v-model="queryParams.inputNum" placeholder="请输入上一次记录时间至该条记录时间端内上片数量" clearable @keyup.enter.native="handleQuery"/> | |||
</el-form-item> | |||
<el-form-item label="上一次记录时间至该条记录时间端内下片数量" prop="outputNum"> | |||
<el-input v-model="queryParams.outputNum" placeholder="请输入上一次记录时间至该条记录时间端内下片数量" clearable @keyup.enter.native="handleQuery"/> | |||
</el-form-item> | |||
<el-form-item label="该记录时间点的累计上片数量" prop="sumInputNum"> | |||
<el-input v-model="queryParams.sumInputNum" placeholder="请输入该记录时间点的累计上片数量" clearable @keyup.enter.native="handleQuery"/> | |||
</el-form-item> | |||
<el-form-item label="该记录时间点的累计下片数量" prop="sumOutputNum"> | |||
<el-input v-model="queryParams.sumOutputNum" placeholder="请输入该记录时间点的累计下片数量" clearable @keyup.enter.native="handleQuery"/> | |||
</el-form-item> | |||
<el-form-item label="记录时间" prop="recordTime"> | |||
<el-date-picker v-model="queryParams.recordTime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss" type="daterange" | |||
range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00', '23:59:59']" /> | |||
</el-form-item> | |||
<el-form-item label="合格率(%)" prop="passRate"> | |||
<el-input v-model="queryParams.passRate" placeholder="请输入合格率(%)" clearable @keyup.enter.native="handleQuery"/> | |||
</el-form-item> | |||
<el-form-item label="创建时间" prop="createTime"> | |||
<el-date-picker v-model="queryParams.createTime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss" type="daterange" | |||
range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00', '23:59:59']" /> | |||
</el-form-item> | |||
<el-form-item> | |||
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button> | |||
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button> | |||
</el-form-item> | |||
</el-form> | |||
<!-- 操作工具栏 --> | |||
<el-row :gutter="10" class="mb8"> | |||
<el-col :span="1.5"> | |||
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" | |||
v-hasPermi="['base:production-line-rec-sch:create']">新增</el-button> | |||
</el-col> | |||
<el-col :span="1.5"> | |||
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading" | |||
v-hasPermi="['base:production-line-rec-sch:export']">导出</el-button> | |||
</el-col> | |||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> | |||
</el-row> | |||
<!-- 列表 --> | |||
<el-table v-loading="loading" :data="list"> | |||
<el-table-column label="ID" align="center" prop="id" /> | |||
<el-table-column label="产线id" align="center" prop="productionLineId" /> | |||
<el-table-column label="上一次记录时间至该条记录时间端内上片数量" align="center" prop="inputNum" /> | |||
<el-table-column label="上一次记录时间至该条记录时间端内下片数量" align="center" prop="outputNum" /> | |||
<el-table-column label="该记录时间点的累计上片数量" align="center" prop="sumInputNum" /> | |||
<el-table-column label="该记录时间点的累计下片数量" align="center" prop="sumOutputNum" /> | |||
<el-table-column label="记录时间" align="center" prop="recordTime" width="180"> | |||
<template v-slot="scope"> | |||
<span>{{ parseTime(scope.row.recordTime) }}</span> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="合格率(%)" align="center" prop="passRate" /> | |||
<el-table-column label="创建时间" align="center" prop="createTime" width="180"> | |||
<template v-slot="scope"> | |||
<span>{{ parseTime(scope.row.createTime) }}</span> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> | |||
<template v-slot="scope"> | |||
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" | |||
v-hasPermi="['base:production-line-rec-sch:update']">修改</el-button> | |||
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" | |||
v-hasPermi="['base:production-line-rec-sch:delete']">删除</el-button> | |||
</template> | |||
</el-table-column> | |||
</el-table> | |||
<!-- 分页组件 --> | |||
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" | |||
@pagination="getList"/> | |||
<!-- 对话框(添加 / 修改) --> | |||
<el-dialog :title="title" :visible.sync="open" width="500px" v-dialogDrag append-to-body> | |||
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> | |||
<el-form-item label="产线id" prop="productionLineId"> | |||
<el-input v-model="form.productionLineId" placeholder="请输入产线id" /> | |||
</el-form-item> | |||
<el-form-item label="上一次记录时间至该条记录时间端内上片数量" prop="inputNum"> | |||
<el-input v-model="form.inputNum" placeholder="请输入上一次记录时间至该条记录时间端内上片数量" /> | |||
</el-form-item> | |||
<el-form-item label="上一次记录时间至该条记录时间端内下片数量" prop="outputNum"> | |||
<el-input v-model="form.outputNum" placeholder="请输入上一次记录时间至该条记录时间端内下片数量" /> | |||
</el-form-item> | |||
<el-form-item label="该记录时间点的累计上片数量" prop="sumInputNum"> | |||
<el-input v-model="form.sumInputNum" placeholder="请输入该记录时间点的累计上片数量" /> | |||
</el-form-item> | |||
<el-form-item label="该记录时间点的累计下片数量" prop="sumOutputNum"> | |||
<el-input v-model="form.sumOutputNum" placeholder="请输入该记录时间点的累计下片数量" /> | |||
</el-form-item> | |||
<el-form-item label="记录时间" prop="recordTime"> | |||
<el-date-picker clearable v-model="form.recordTime" type="date" value-format="timestamp" placeholder="选择记录时间" /> | |||
</el-form-item> | |||
<el-form-item label="合格率(%)" prop="passRate"> | |||
<el-input v-model="form.passRate" placeholder="请输入合格率(%)" /> | |||
</el-form-item> | |||
</el-form> | |||
<div slot="footer" class="dialog-footer"> | |||
<el-button type="primary" @click="submitForm">确 定</el-button> | |||
<el-button @click="cancel">取 消</el-button> | |||
</div> | |||
</el-dialog> | |||
</div> | |||
</template> | |||
<script> | |||
import { createProductionLineRecSch, updateProductionLineRecSch, deleteProductionLineRecSch, getProductionLineRecSch, getProductionLineRecSchPage, exportProductionLineRecSchExcel } from "@/api/core/base/productionLineRecSch"; | |||
export default { | |||
name: "ProductionLineRecSch", | |||
components: { | |||
}, | |||
data() { | |||
return { | |||
// 遮罩层 | |||
loading: true, | |||
// 导出遮罩层 | |||
exportLoading: false, | |||
// 显示搜索条件 | |||
showSearch: true, | |||
// 总条数 | |||
total: 0, | |||
// 产线生产定时记录表 一小时添加一次数据 至少需要一个上片设备和下片设备才会自动添加列表 | |||
list: [], | |||
// 弹出层标题 | |||
title: "", | |||
// 是否显示弹出层 | |||
open: false, | |||
// 查询参数 | |||
queryParams: { | |||
pageNo: 1, | |||
pageSize: 10, | |||
productionLineId: null, | |||
inputNum: null, | |||
outputNum: null, | |||
sumInputNum: null, | |||
sumOutputNum: null, | |||
recordTime: [], | |||
passRate: null, | |||
createTime: [], | |||
}, | |||
// 表单参数 | |||
form: {}, | |||
// 表单校验 | |||
rules: { | |||
inputNum: [{ required: true, message: "上一次记录时间至该条记录时间端内上片数量不能为空", trigger: "blur" }], | |||
outputNum: [{ required: true, message: "上一次记录时间至该条记录时间端内下片数量不能为空", trigger: "blur" }], | |||
sumInputNum: [{ required: true, message: "该记录时间点的累计上片数量不能为空", trigger: "blur" }], | |||
sumOutputNum: [{ required: true, message: "该记录时间点的累计下片数量不能为空", trigger: "blur" }], | |||
} | |||
}; | |||
}, | |||
created() { | |||
this.getList(); | |||
}, | |||
methods: { | |||
/** 查询列表 */ | |||
getList() { | |||
this.loading = true; | |||
// 执行查询 | |||
getProductionLineRecSchPage(this.queryParams).then(response => { | |||
this.list = response.data.list; | |||
this.total = response.data.total; | |||
this.loading = false; | |||
}); | |||
}, | |||
/** 取消按钮 */ | |||
cancel() { | |||
this.open = false; | |||
this.reset(); | |||
}, | |||
/** 表单重置 */ | |||
reset() { | |||
this.form = { | |||
id: undefined, | |||
productionLineId: undefined, | |||
inputNum: undefined, | |||
outputNum: undefined, | |||
sumInputNum: undefined, | |||
sumOutputNum: undefined, | |||
recordTime: undefined, | |||
passRate: undefined, | |||
}; | |||
this.resetForm("form"); | |||
}, | |||
/** 搜索按钮操作 */ | |||
handleQuery() { | |||
this.queryParams.pageNo = 1; | |||
this.getList(); | |||
}, | |||
/** 重置按钮操作 */ | |||
resetQuery() { | |||
this.resetForm("queryForm"); | |||
this.handleQuery(); | |||
}, | |||
/** 新增按钮操作 */ | |||
handleAdd() { | |||
this.reset(); | |||
this.open = true; | |||
this.title = "添加产线生产定时记录表 一小时添加一次数据 至少需要一个上片设备和下片设备才会自动添加"; | |||
}, | |||
/** 修改按钮操作 */ | |||
handleUpdate(row) { | |||
this.reset(); | |||
const id = row.id; | |||
getProductionLineRecSch(id).then(response => { | |||
this.form = response.data; | |||
this.open = true; | |||
this.title = "修改产线生产定时记录表 一小时添加一次数据 至少需要一个上片设备和下片设备才会自动添加"; | |||
}); | |||
}, | |||
/** 提交按钮 */ | |||
submitForm() { | |||
this.$refs["form"].validate(valid => { | |||
if (!valid) { | |||
return; | |||
} | |||
// 修改的提交 | |||
if (this.form.id != null) { | |||
updateProductionLineRecSch(this.form).then(response => { | |||
this.$modal.msgSuccess("修改成功"); | |||
this.open = false; | |||
this.getList(); | |||
}); | |||
return; | |||
} | |||
// 添加的提交 | |||
createProductionLineRecSch(this.form).then(response => { | |||
this.$modal.msgSuccess("新增成功"); | |||
this.open = false; | |||
this.getList(); | |||
}); | |||
}); | |||
}, | |||
/** 删除按钮操作 */ | |||
handleDelete(row) { | |||
const id = row.id; | |||
this.$modal.confirm('是否确认删除产线生产定时记录表 一小时添加一次数据 至少需要一个上片设备和下片设备才会自动添加编号为"' + id + '"的数据项?').then(function() { | |||
return deleteProductionLineRecSch(id); | |||
}).then(() => { | |||
this.getList(); | |||
this.$modal.msgSuccess("删除成功"); | |||
}).catch(() => {}); | |||
}, | |||
/** 导出按钮操作 */ | |||
handleExport() { | |||
// 处理查询参数 | |||
let params = {...this.queryParams}; | |||
params.pageNo = undefined; | |||
params.pageSize = undefined; | |||
this.$modal.confirm('是否确认导出所有产线生产定时记录表 一小时添加一次数据 至少需要一个上片设备和下片设备才会自动添加数据项?').then(() => { | |||
this.exportLoading = true; | |||
return exportProductionLineRecSchExcel(params); | |||
}).then(response => { | |||
this.$download.excel(response, '产线生产定时记录表 一小时添加一次数据 至少需要一个上片设备和下片设备才会自动添加.xls'); | |||
this.exportLoading = false; | |||
}).catch(() => {}); | |||
} | |||
} | |||
}; | |||
</script> |
@@ -0,0 +1,112 @@ | |||
<!-- | |||
* @Author: zwq | |||
* @Date: 2023-08-01 13:52:10 | |||
* @LastEditors: DY | |||
* @LastEditTime: 2023-10-16 13:40:00 | |||
* @Description: | |||
--> | |||
<template> | |||
<el-form | |||
:model="dataForm" | |||
:rules="dataRule" | |||
ref="dataForm" | |||
@keyup.enter.native="dataFormSubmit()" | |||
label-width="90px"> | |||
<el-row :gutter="20"> | |||
<el-col :span="12"> | |||
<el-form-item label="工段编码" prop="code"> | |||
<el-input | |||
v-model="dataForm.code" | |||
clearable | |||
placeholder="请输入工段编码" /> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="12"> | |||
<el-form-item label="工段名称" prop="name"> | |||
<el-input | |||
v-model="dataForm.name" | |||
clearable | |||
placeholder="请输入工段名称" /> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
<el-row :gutter="20"> | |||
<el-col :span="12"> | |||
<el-form-item prop="productionLineId" label="产线"> | |||
<el-select | |||
v-model="dataForm.productionLineId" filterable clearable placeholder="请选择产线"> | |||
<el-option | |||
v-for="item in urlOptions.optionArr.arr0" | |||
:key="item.id" | |||
:label="item.name" | |||
:value="item.id" | |||
> | |||
</el-option> | |||
</el-select> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="12"> | |||
<el-form-item label="排序" prop="sort"> | |||
<el-input-number v-model="dataForm.sort" :min="1" :max="100" clearable placeholder="请输入排序" /> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
<el-form-item label="备注" prop="remark"> | |||
<el-input v-model="dataForm.remark" clearable placeholder="请输入备注" /> | |||
</el-form-item> | |||
</el-form> | |||
</template> | |||
<script> | |||
import basicAdd from '../../mixins/basic-add'; | |||
import { | |||
createWorkshopSection, | |||
updateWorkshopSection, | |||
getWorkshopSection, | |||
getCode, | |||
} from '@/api/core/base/workshopSection'; | |||
import { | |||
getProductionLinePage, | |||
} from '@/api/core/base/productionLine'; | |||
export default { | |||
mixins: [basicAdd], | |||
data() { | |||
return { | |||
urlOptions: { | |||
getOption: true, | |||
isGetCode: true, | |||
codeURL: getCode, | |||
createURL: createWorkshopSection, | |||
updateURL: updateWorkshopSection, | |||
infoURL: getWorkshopSection, | |||
optionArrUrl: [getProductionLinePage], | |||
}, | |||
dataForm: { | |||
id: undefined, | |||
code: undefined, | |||
productionLineId: undefined, | |||
sort: undefined, | |||
name: undefined, | |||
remark: undefined, | |||
}, | |||
dataRule: { | |||
code: [ | |||
{ required: true, message: '工段编码不能为空', trigger: 'blur' }, | |||
], | |||
name: [ | |||
{ required: true, message: '工段名称不能为空', trigger: 'blur' }, | |||
], | |||
sort: [ | |||
{ required: true, message: '排序不能为空', trigger: 'blur' }, | |||
], | |||
productionLineId: [ | |||
{ required: true, message: '产线不能为空', trigger: 'change' }, | |||
], | |||
}, | |||
}; | |||
}, | |||
methods: { | |||
}, | |||
}; | |||
</script> |
@@ -0,0 +1,182 @@ | |||
<template> | |||
<div class="app-container"> | |||
<search-bar | |||
:formConfigs="formConfig" | |||
ref="searchBarForm" | |||
@headBtnClick="buttonClick" /> | |||
<base-table | |||
v-loading="dataListLoading" | |||
:table-props="tableProps" | |||
:page="listQuery.pageNo" | |||
:limit="listQuery.pageSize" | |||
:table-data="tableData"> | |||
<method-btn | |||
v-if="tableBtn.length" | |||
slot="handleBtn" | |||
:width="120" | |||
label="操作" | |||
:method-list="tableBtn" | |||
@clickBtn="handleClick" /> | |||
</base-table> | |||
<pagination | |||
:limit.sync="listQuery.pageSize" | |||
:page.sync="listQuery.pageNo" | |||
:total="listQuery.total" | |||
@pagination="getDataList" /> | |||
<base-dialog | |||
:dialogTitle="addOrEditTitle" | |||
:dialogVisible="addOrUpdateVisible" | |||
@cancel="handleCancel" | |||
@confirm="handleConfirm" | |||
:before-close="handleCancel" | |||
width="50%"> | |||
<add-or-update | |||
ref="addOrUpdate" | |||
@refreshDataList="successSubmit"></add-or-update> | |||
</base-dialog> | |||
</div> | |||
</template> | |||
<script> | |||
import AddOrUpdate from './add-or-updata'; | |||
import basicPage from '../../mixins/basic-page'; | |||
import { parseTime } from '../../mixins/code-filter'; | |||
import { | |||
deleteWorkshopSection, | |||
getWorkshopSectionPage, | |||
exportWorkshopSectionExcel | |||
} from "@/api/core/base/workshopSection"; | |||
const tableProps = [ | |||
{ | |||
prop: 'code', | |||
label: '工段编码' | |||
}, | |||
{ | |||
prop: 'name', | |||
label: '工段名称' | |||
}, | |||
{ | |||
prop: 'productionLineName', | |||
label: '产线' | |||
}, | |||
{ | |||
prop: 'sort', | |||
label: '排序' | |||
}, | |||
{ | |||
prop: 'remark', | |||
label: '备注' | |||
}, | |||
{ | |||
prop: 'createTime', | |||
label: '创建时间', | |||
filter: parseTime | |||
}, | |||
]; | |||
export default { | |||
mixins: [basicPage], | |||
data() { | |||
return { | |||
urlOptions: { | |||
getDataListURL: getWorkshopSectionPage, | |||
deleteURL: deleteWorkshopSection, | |||
exportURL: exportWorkshopSectionExcel, | |||
}, | |||
tableProps, | |||
tableBtn: [ | |||
this.$auth.hasPermi(`base:workshop-section:update`) | |||
? { | |||
type: 'edit', | |||
btnName: '编辑', | |||
} | |||
: undefined, | |||
this.$auth.hasPermi(`base:workshop-section:delete`) | |||
? { | |||
type: 'delete', | |||
btnName: '删除', | |||
} | |||
: undefined, | |||
].filter((v)=>v), | |||
tableData: [], | |||
formConfig: [ | |||
{ | |||
type: 'input', | |||
label: '工段名称', | |||
placeholder: '工段名称', | |||
param: 'name', | |||
}, | |||
{ | |||
type: 'button', | |||
btnName: '搜索', | |||
name: 'search', | |||
color: 'primary', | |||
}, | |||
// { | |||
// type: 'separate', | |||
// }, | |||
// { | |||
// type: 'button', | |||
// btnName: '重置', | |||
// name: 'reset', | |||
// }, | |||
{ | |||
type: 'separate', | |||
}, | |||
{ | |||
type: this.$auth.hasPermi('base:workshop-section:create') ? 'button' : '', | |||
btnName: '新增', | |||
name: 'add', | |||
color: 'success', | |||
plain: true, | |||
}, | |||
// { | |||
// type: this.$auth.hasPermi('base:workshop-section:create') ? 'separate' : '', | |||
// }, | |||
// { | |||
// type: this.$auth.hasPermi('base:workshop-section:export') ? 'button' : '', | |||
// btnName: '导出', | |||
// name: 'export', | |||
// color: 'warning', | |||
// }, | |||
], | |||
}; | |||
}, | |||
components: { | |||
AddOrUpdate, | |||
}, | |||
created() {}, | |||
methods: { | |||
buttonClick(val) { | |||
switch (val.btnName) { | |||
case 'search': | |||
this.listQuery.pageNo = 1; | |||
this.listQuery.pageSize = 10; | |||
this.listQuery.name = val.name; | |||
this.getDataList(); | |||
break; | |||
case 'reset': | |||
this.$refs.searchBarForm.resetForm(); | |||
this.listQuery = { | |||
pageSize: 10, | |||
pageNo: 1, | |||
total: 1, | |||
}; | |||
this.getDataList(); | |||
break; | |||
case 'add': | |||
this.addOrEditTitle = '新增'; | |||
this.addOrUpdateVisible = true; | |||
this.addOrUpdateHandle(); | |||
break; | |||
case 'export': | |||
this.handleExport(); | |||
break; | |||
default: | |||
console.log(val); | |||
} | |||
}, | |||
}, | |||
}; | |||
</script> |
@@ -84,10 +84,10 @@ export default { | |||
: undefined, | |||
].filter((v) => v), | |||
tableProps: [ | |||
{ prop: 'program', label: '巡检项目' }, | |||
{ prop: 'content', label: '巡检内容' }, | |||
{ prop: 'code', label: '巡检内容编码' }, | |||
{ prop: 'remark', label: '备注' }, | |||
{ prop: 'program', label: '巡检项目', showOverflowtooltip: true }, | |||
{ prop: 'content', label: '巡检内容', minWidth: 150, showOverflowtooltip: true }, | |||
{ prop: 'code', label: '巡检内容编码', showOverflowtooltip: true }, | |||
{ prop: 'remark', label: '备注', showOverflowtooltip: true }, | |||
], | |||
searchBarFormConfig: [ | |||
{ | |||
@@ -60,110 +60,112 @@ | |||
</el-col> | |||
</el-row> | |||
<el-divider style="margin-top: -10px" /> | |||
<el-divider /> | |||
<small-title style="margin: 16px 0; padding-left: 8px" :no-padding="true"> | |||
{{ '设备维修信息' }} | |||
</small-title> | |||
<el-row :gutter="20"> | |||
<el-col :span="6"> | |||
<el-form-item | |||
label="维修开始时间" | |||
prop="maintenanceStartTime" | |||
:rules="[{ required: true, message: '维修开始时间不能为空', trigger: 'blur' }]"> | |||
<el-date-picker | |||
v-model="dataForm.maintenanceStartTime" | |||
type="datetime" | |||
:disabled="disabled" | |||
placeholder="请选择维修开始时间" | |||
value-format="timestamp" /> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="6"> | |||
<el-form-item | |||
label="维修结束时间" | |||
prop="maintenanceFinishTime" | |||
:rules="[{ required: true, message: '维修结束时间不能为空', trigger: 'blur' }]"> | |||
<el-date-picker | |||
v-model="dataForm.maintenanceFinishTime" | |||
type="datetime" | |||
:disabled="disabled" | |||
placeholder="请选择维修开始时间" | |||
value-format="timestamp" /> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="6"> | |||
<el-form-item | |||
label="维修方式" | |||
prop="repairMode" | |||
:rules="[{ required: true, message: '维修方式不能为空', trigger: 'blur' }]"> | |||
<el-select | |||
:disabled="disabled" | |||
v-model="dataForm.repairMode" | |||
placeholder="请选择维修方式"> | |||
<el-option | |||
v-for="opt in getDictDatas('repair-mode')" | |||
:key="opt.value" | |||
:label="opt.label" | |||
:value="opt.value" /> | |||
</el-select> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="6"> | |||
<el-form-item label="故障类型" prop="faultType"> | |||
<el-select | |||
:disabled="disabled" | |||
v-model="dataForm.faultType" | |||
placeholder="请选择故障类型"> | |||
<el-option | |||
v-for="opt in getDictDatas('fault-type')" | |||
:key="opt.value" | |||
:label="opt.label" | |||
:value="opt.value" /> | |||
</el-select> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
<div v-if=" disabled && dataForm.maintenanceStatus === 1 ? true : !disabled ? true : false"> | |||
<small-title style="margin: 16px 0; padding-left: 8px" :no-padding="true"> | |||
{{ '设备维修信息' }} | |||
</small-title> | |||
<el-row :gutter="20"> | |||
<el-col :span="6"> | |||
<el-form-item | |||
label="维修开始时间" | |||
prop="maintenanceStartTime" | |||
:rules="[{ required: true, message: '维修开始时间不能为空', trigger: 'blur' }]"> | |||
<el-date-picker | |||
v-model="dataForm.maintenanceStartTime" | |||
type="datetime" | |||
:disabled="disabled" | |||
placeholder="请选择维修开始时间" | |||
value-format="timestamp" /> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="6"> | |||
<el-form-item | |||
label="维修结束时间" | |||
prop="maintenanceFinishTime" | |||
:rules="[{ required: true, message: '维修结束时间不能为空', trigger: 'blur' }]"> | |||
<el-date-picker | |||
v-model="dataForm.maintenanceFinishTime" | |||
type="datetime" | |||
:disabled="disabled" | |||
placeholder="请选择维修开始时间" | |||
value-format="timestamp" /> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="6"> | |||
<el-form-item | |||
label="维修方式" | |||
prop="repairMode" | |||
:rules="[{ required: true, message: '维修方式不能为空', trigger: 'blur' }]"> | |||
<el-select | |||
:disabled="disabled" | |||
v-model="dataForm.repairMode" | |||
placeholder="请选择维修方式"> | |||
<el-option | |||
v-for="opt in getDictDatas('repair-mode')" | |||
:key="opt.value" | |||
:label="opt.label" | |||
:value="opt.value" /> | |||
</el-select> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="6"> | |||
<el-form-item label="故障类型" prop="faultType"> | |||
<el-select | |||
:disabled="disabled" | |||
v-model="dataForm.faultType" | |||
placeholder="请选择故障类型"> | |||
<el-option | |||
v-for="opt in getDictDatas('fault-type')" | |||
:key="opt.value" | |||
:label="opt.label" | |||
:value="opt.value" /> | |||
</el-select> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
<el-row :gutter="20"> | |||
<el-col> | |||
<el-form-item | |||
label="故障明细" | |||
prop="faultDetail" | |||
:rules="[{ required: true, message: '故障明细不能为空', trigger: 'blur' }]"> | |||
<!-- // 富文本 --> | |||
<editor v-model="dataForm.faultDetail" :read-only="disabled" :min-height="150"/> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
<el-row :gutter="20"> | |||
<el-col> | |||
<el-form-item | |||
label="故障明细" | |||
prop="faultDetail" | |||
:rules="[{ required: true, message: '故障明细不能为空', trigger: 'blur' }]"> | |||
<!-- // 富文本 --> | |||
<editor v-model="dataForm.faultDetail" :read-only="disabled" :min-height="150"/> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
<el-row :gutter="20"> | |||
<el-col> | |||
<el-form-item label="维修记录" prop="maintenanceDetail"> | |||
<!-- // 富文本 --> | |||
<editor v-model="dataForm.maintenanceDetail" :read-only="disabled" :min-height="150"/> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
<el-row :gutter="20"> | |||
<el-col> | |||
<el-form-item label="维修记录" prop="maintenanceDetail"> | |||
<!-- // 富文本 --> | |||
<editor v-model="dataForm.maintenanceDetail" :read-only="disabled" :min-height="150"/> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
<el-row :gutter="20"> | |||
<el-col> | |||
<el-form-item label="维修附件" prop="file"> | |||
<FileUpload v-model="file" :limit="1" :f-name="fileName" :disabled="disabled" @name="setFileName" /> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
<el-row :gutter="20"> | |||
<el-col> | |||
<el-form-item label="维修附件" prop="file"> | |||
<FileUpload v-model="file" :limit="1" :f-name="fileName" :disabled="disabled" @name="setFileName" /> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
<el-row :gutter="20"> | |||
<el-col> | |||
<el-form-item label="备注" prop="remark"> | |||
<el-input | |||
v-model="dataForm.remark" | |||
:placeholder="`请输入备注`" | |||
:disabled="disabled" /> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
<el-row :gutter="20"> | |||
<el-col> | |||
<el-form-item label="备注" prop="remark"> | |||
<el-input | |||
v-model="dataForm.remark" | |||
:placeholder="`请输入备注`" | |||
:disabled="disabled" /> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
</div> | |||
</el-form> | |||
<div v-if="!disabled" class="drawer-body__footer"> | |||
@@ -249,7 +251,7 @@ export default { | |||
getEqRepair(this.dataForm.id).then(response => { | |||
this.formLoading = false | |||
this.dataForm = response.data; | |||
this.dataForm.maintenanceStatus = row.maintenanceStatus || 0 | |||
this.dataForm.maintenanceStatus = this.dataForm.maintenanceStatus || 0 | |||
if (this.dataForm.files.length > 0) { | |||
this.file = this.dataForm.files[0].fileUrl | |||
this.fileName = this.dataForm.files[0].fileName | |||
@@ -121,7 +121,7 @@ export default { | |||
{ prop: 'lineName', label: '产线' }, | |||
{ prop: 'sectionName', label: '工段' }, | |||
{ prop: 'equipmentName', label: '设备名称', minWidth: 100, showOverflowtooltip: true }, | |||
{ prop: 'maintenanceDetail', label: '维修明细' }, | |||
{ prop: 'maintenanceDetail', label: '维修明细', minWidth: 100, showOverflowtooltip: true }, | |||
{ prop: 'repairman', label: '维修工', minWidth: 100, showOverflowtooltip: true }, | |||
{ prop: 'repairmanPhone', label: '联系方式', minWidth: 100, showOverflowtooltip: true }, | |||
{ prop: 'remark', label: '备注', minWidth: 120, showOverflowtooltip: true }, | |||
@@ -9,72 +9,80 @@ | |||
<el-drawer | |||
:visible.sync="visible" | |||
:show-close="false" | |||
:wrapper-closable="false" | |||
:wrapper-closable="disabled" | |||
class="drawer" | |||
size="60%"> | |||
size="60%" | |||
@closed="$emit('destroy')"> | |||
<small-title slot="title" :no-padding="true"> | |||
{{ disabled ? '查看备件' : '添加备件' }} | |||
</small-title> | |||
<el-form | |||
ref="form" | |||
:model="dataForm" | |||
label-width="100px" | |||
v-loading="formLoading"> | |||
<el-row :gutter="20"> | |||
<el-col :span="12"> | |||
<el-form-item label="配置名" prop="name"> | |||
<span>{{ dataForm.name }}</span> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="12"> | |||
<el-form-item label="设备名称" prop="equipmentName"> | |||
<span>{{ dataForm.equipmentName }}</span> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
<el-row :gutter="20"> | |||
<el-col :span="12"> | |||
<el-form-item label="负责人" prop="responsible"> | |||
<span>{{ dataForm.responsible }}</span> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
<el-form-item label="描述" prop="faultTime"> | |||
<editor v-model="dataForm.description" read-only :min-height="200"/> | |||
</el-form-item> | |||
</el-form> | |||
<div class="content"> | |||
<el-form | |||
ref="form" | |||
:model="dataForm" | |||
label-width="100px" | |||
label-position="top" | |||
v-loading="formLoading"> | |||
<el-row :gutter="20"> | |||
<el-col :span="6"> | |||
<el-form-item label="配置名" prop="name"> | |||
<span>{{ dataForm.name }}</span> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="6"> | |||
<el-form-item label="设备名称" prop="equipmentName"> | |||
<span>{{ dataForm.equipmentName }}</span> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="6"> | |||
<el-form-item label="负责人" prop="responsible"> | |||
<span>{{ dataForm.responsible }}</span> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
<el-form-item label="描述" prop="description"> | |||
<div v-html="dataForm.description" style="padding: 5px; margin: 0; border: 1px solid #dfdfdf" /> | |||
<!-- <editor v-model="dataForm.description" read-only :min-height="200"/> --> | |||
</el-form-item> | |||
</el-form> | |||
<div v-if="!disabled" class="action_btn"> | |||
<template> | |||
<span style="display: inline-block;" @click="addNew()"> | |||
<svg-icon style="width: 14px; height: 14px" class="item-icon" icon-class="table_add" /> | |||
<span class="add">添加</span> | |||
</span> | |||
</template> | |||
</div> | |||
<base-table | |||
:table-props="tableProps" | |||
:page="listQuery.pageNo" | |||
:limit="listQuery.pageSize" | |||
:table-data="list"> | |||
<method-btn | |||
v-if="!disabled" | |||
slot="handleBtn" | |||
:width="120" | |||
label="操作" | |||
:method-list="tableBtn" | |||
@clickBtn="handleClick" /> | |||
</base-table> | |||
<pagination | |||
v-show="listQuery.total > 0" | |||
:total="listQuery.total" | |||
:page.sync="listQuery.pageNo" | |||
:limit.sync="listQuery.pageSize" | |||
:page-sizes="[5, 10, 15]" | |||
@pagination="getList" /> | |||
<div> | |||
<small-title style="margin: 16px 0; padding-left: 8px" :no-padding="true"> | |||
{{ '备品备件' }} | |||
</small-title> | |||
<div v-if="!disabled" class="action_btn"> | |||
<template> | |||
<span style="display: inline-block;" @click="addNew()"> | |||
<svg-icon style="width: 14px; height: 14px" class="item-icon" icon-class="table_add" /> | |||
<span class="add">添加</span> | |||
</span> | |||
</template> | |||
</div> | |||
<base-table | |||
:table-props="tableProps" | |||
:page="listQuery.pageNo" | |||
:limit="listQuery.pageSize" | |||
:table-data="list"> | |||
<method-btn | |||
v-if="!disabled" | |||
slot="handleBtn" | |||
:width="120" | |||
label="操作" | |||
:method-list="tableBtn" | |||
@clickBtn="handleClick" /> | |||
</base-table> | |||
<pagination | |||
v-show="listQuery.total > 0" | |||
:total="listQuery.total" | |||
:page.sync="listQuery.pageNo" | |||
:limit.sync="listQuery.pageSize" | |||
:page-sizes="[5, 10, 15]" | |||
@pagination="getList" /> | |||
</div> | |||
<div class="drawer-body__footer"> | |||
<el-button type="primary" @click="goback()">关闭</el-button> | |||
<div v-if="!disabled" class="drawer-body__footer"> | |||
<el-button type="primary" @click="goback()">关闭</el-button> | |||
</div> | |||
</div> | |||
<attr-add | |||
@@ -255,10 +263,10 @@ export default { | |||
padding: 18px; | |||
} | |||
.action_btn { | |||
/* float: right; */ | |||
float: right; | |||
display: flex; | |||
justify-content: right; | |||
margin: 5px 15px; | |||
margin: -35px 15px; | |||
font-size: 14px; | |||
} | |||
.add { | |||
@@ -312,4 +320,7 @@ export default { | |||
justify-content: flex-end; | |||
padding: 18px; | |||
} | |||
.content { | |||
padding: 0 20px; | |||
} | |||
</style> |
@@ -17,7 +17,7 @@ | |||
v-if="tableBtn.length" | |||
slot="handleBtn" | |||
label="操作" | |||
:width="250" | |||
:width="180" | |||
:method-list="tableBtn" | |||
@clickBtn="handleTableBtnClick" /> | |||
</base-table> | |||
@@ -34,7 +34,7 @@ | |||
<base-dialog | |||
:dialogTitle="title" | |||
:dialogVisible="open" | |||
width="35%" | |||
width="50%" | |||
@close="cancel" | |||
@cancel="cancel" | |||
@confirm="submitForm"> | |||
@@ -44,12 +44,14 @@ | |||
v-model="form" | |||
:disabled="mode == 'detail'" | |||
:has-files="false" | |||
:rows="rows" /> | |||
:rows="rows" | |||
style="margin: 0 30px" /> | |||
</base-dialog> | |||
<addSparts | |||
v-if="addOrUpdateVisible" | |||
ref="addOrUpdate" | |||
@refreshDataList="getList" /> | |||
@refreshDataList="getList" | |||
@destroy="addOrUpdateVisible = false" /> | |||
</div> | |||
</template> | |||
@@ -79,22 +81,24 @@ export default { | |||
// btnName: '详情', | |||
// } | |||
// : undefined, | |||
this.$auth.hasPermi('equipment:spare-parts-config:update') | |||
this.$auth.hasPermi('equipment:spare-parts-config:addParts') | |||
? { | |||
type: 'edit', | |||
btnName: '修改', | |||
type: 'addParts', | |||
btnName: '添加', | |||
showTip: '添加备件' | |||
} | |||
: undefined, | |||
this.$auth.hasPermi('equipment:spare-parts-config:queryParts') | |||
? { | |||
type: 'queryParts', | |||
btnName: '查看备件', | |||
btnName: '查看', | |||
showTip: '查看备件' | |||
} | |||
: undefined, | |||
this.$auth.hasPermi('equipment:spare-parts-config:addParts') | |||
this.$auth.hasPermi('equipment:spare-parts-config:update') | |||
? { | |||
type: 'addParts', | |||
btnName: '添加备件', | |||
type: 'edit', | |||
btnName: '修改', | |||
} | |||
: undefined, | |||
this.$auth.hasPermi('equipment:spare-parts-config:delete') | |||
@@ -105,15 +109,15 @@ export default { | |||
: undefined, | |||
].filter((v) => v), | |||
tableProps: [ | |||
{ prop: 'name', label: '配置名' }, | |||
{ prop: 'lineName', label: '产线' }, | |||
{ prop: 'sectionName', label: '工段' }, | |||
{ prop: 'equipmentName', label: '设备名' }, | |||
{ prop: 'equipmentCode', label: '设备编码' }, | |||
{ prop: 'responsible', label: '负责人' }, | |||
{ prop: 'name', label: '配置名', minWidth: 100, showOverflowtooltip: true }, | |||
{ prop: 'lineName', label: '产线', minWidth: 100, showOverflowtooltip: true }, | |||
{ prop: 'sectionName', label: '工段', minWidth: 100, showOverflowtooltip: true }, | |||
{ prop: 'equipmentName', label: '设备名', minWidth: 120, showOverflowtooltip: true }, | |||
{ prop: 'equipmentCode', label: '设备编码', minWidth: 100, showOverflowtooltip: true }, | |||
{ prop: 'responsible', label: '负责人', minWidth: 150, showOverflowtooltip: true }, | |||
// { prop: 'unit', label: '单位', filter: publicFormatter('unit_dict') }, | |||
{ prop: 'description', label: '描述', subcomponent: htmls }, | |||
{ prop: 'sparePartNumber', label: '备品备件数量' }, | |||
{ prop: 'description', label: '描述', subcomponent: htmls, minWidth: 120, showOverflowtooltip: true }, | |||
{ prop: 'sparePartNumber', label: '备品备件数量', width: 130 }, | |||
// { prop: 'remark', label: '备注' }, | |||
], | |||
searchBarFormConfig: [ | |||
@@ -198,7 +202,7 @@ export default { | |||
prop: 'description', // TODO: 富文本 | |||
subcomponent: Editor, | |||
bind: { | |||
'min-height': 192 | |||
'min-height': 150 | |||
} | |||
}, | |||
], | |||
@@ -9,81 +9,84 @@ | |||
<el-drawer | |||
:visible.sync="visible" | |||
:show-close="false" | |||
:wrapper-closable="false" | |||
:wrapper-closable="!isLog" | |||
class="drawer" | |||
size="60%"> | |||
<small-title slot="title" :no-padding="true"> | |||
{{ !isLog ? '操作页面' : '更换记录' }} | |||
</small-title> | |||
<el-form | |||
ref="form" | |||
:model="dataForm" | |||
label-width="100px" | |||
v-loading="formLoading"> | |||
<el-row :gutter="20"> | |||
<el-col :span="12"> | |||
<el-form-item v-if="!isLog" label="配置名" prop="name"> | |||
<span>{{ dataForm.name }}</span> | |||
</el-form-item> | |||
<el-form-item v-else label="产线名称" prop="lineName"> | |||
<span>{{ dataForm.lineName }}</span> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="12"> | |||
<el-form-item label="设备名称" prop="equipmentName"> | |||
<span>{{ dataForm.equipmentName }}</span> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
<el-form-item label="描述" prop="faultTime"> | |||
<editor v-model="dataForm.description" read-only :min-height="200"/> | |||
</el-form-item> | |||
</el-form> | |||
<div v-if="!isLog"> | |||
<base-table | |||
:table-props="tableProps" | |||
:page="listQuery.pageNo" | |||
:limit="listQuery.pageSize" | |||
:table-data="list"> | |||
<method-btn | |||
v-if="!isLog" | |||
slot="handleBtn" | |||
:width="120" | |||
label="操作" | |||
:method-list="tableBtn" | |||
@clickBtn="handleClick" /> | |||
</base-table> | |||
<pagination | |||
v-show="listQuery.total > 0" | |||
:total="listQuery.total" | |||
:page.sync="listQuery.pageNo" | |||
:limit.sync="listQuery.pageSize" | |||
:page-sizes="[5, 10, 15]" | |||
@pagination="getList" /> | |||
</div> | |||
<div class="content"> | |||
<el-form | |||
ref="form" | |||
:model="dataForm" | |||
label-width="90px" | |||
v-loading="formLoading"> | |||
<el-row :gutter="20"> | |||
<el-col :span="12"> | |||
<el-form-item v-if="!isLog" label="配置名" prop="name"> | |||
<span style="margin-left: 5px">{{ dataForm.name }}</span> | |||
</el-form-item> | |||
<el-form-item v-else label="产线名称" prop="lineName"> | |||
<span style="margin-left: 5px">{{ dataForm.lineName }}</span> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="12"> | |||
<el-form-item label="设备名称" prop="equipmentName"> | |||
<span style="margin-left: 5px">{{ dataForm.equipmentName }}</span> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
<el-form-item label="描述" prop="description"> | |||
<div v-html="dataForm.description" style="padding: 5px; margin-left: 5px; border: 1px solid #dfdfdf" /> | |||
<!-- <editor v-model="dataForm.description" :read-only="true" :min-height="200"/> --> | |||
</el-form-item> | |||
</el-form> | |||
<div v-if="!isLog"> | |||
<base-table | |||
:table-props="tableProps" | |||
:page="listQuery.pageNo" | |||
:limit="listQuery.pageSize" | |||
:table-data="list"> | |||
<method-btn | |||
v-if="!isLog" | |||
slot="handleBtn" | |||
:width="120" | |||
label="操作" | |||
:method-list="tableBtn" | |||
@clickBtn="handleClick" /> | |||
</base-table> | |||
<pagination | |||
v-show="listQuery.total > 0" | |||
:total="listQuery.total" | |||
:page.sync="listQuery.pageNo" | |||
:limit.sync="listQuery.pageSize" | |||
:page-sizes="[5, 10, 15]" | |||
@pagination="getList" /> | |||
</div> | |||
<div v-else> | |||
<!-- 搜索工作栏 --> | |||
<SearchBar | |||
:formConfigs="formConfig" | |||
ref="search-bar" | |||
@headBtnClick="buttonClick" /> | |||
<base-table | |||
:table-props="tableProps1" | |||
:page="listQuery1.pageNo" | |||
:limit="listQuery1.pageSize" | |||
:table-data="list1" /> | |||
<pagination | |||
v-show="listQuery1.total > 0" | |||
:total="listQuery1.total" | |||
:page.sync="listQuery1.pageNo" | |||
:limit.sync="listQuery1.pageSize" | |||
:page-sizes="[5, 10, 15]" | |||
@pagination="getList1" /> | |||
<div v-else> | |||
<!-- 搜索工作栏 --> | |||
<SearchBar | |||
:formConfigs="formConfig" | |||
ref="search-bar" | |||
@headBtnClick="buttonClick" /> | |||
<base-table | |||
:table-props="tableProps1" | |||
:page="listQuery1.pageNo" | |||
:limit="listQuery1.pageSize" | |||
:table-data="list1" /> | |||
<pagination | |||
v-show="listQuery1.total > 0" | |||
:total="listQuery1.total" | |||
:page.sync="listQuery1.pageNo" | |||
:limit.sync="listQuery1.pageSize" | |||
:page-sizes="[5, 10, 15]" | |||
@pagination="getList1" /> | |||
</div> | |||
</div> | |||
<div class="drawer-body__footer"> | |||
<div v-if="isLog" class="drawer-body__footer"> | |||
<el-button type="primary" @click="goback()">关闭</el-button> | |||
</div> | |||
@@ -429,4 +432,7 @@ export default { | |||
justify-content: flex-end; | |||
padding: 18px; | |||
} | |||
.content { | |||
padding: 0 20px; | |||
} | |||
</style> |
@@ -74,8 +74,7 @@ const remainBox = { | |||
value() { | |||
const temp = this.injectData[this.injectData.prop] || null; | |||
if (temp) { | |||
console.log('12', temp); | |||
return temp === 'Green' ? 'green' : 'red'; | |||
return temp === 'Green' ? '未超期' : temp === 'Red' ? '已超期' : '即将超期'; | |||
} | |||
return this.injectData[this.injectData.prop] || null; | |||
}, | |||
@@ -83,7 +82,7 @@ const remainBox = { | |||
if (this.value) { | |||
// const v = +this.value; | |||
// return v < 0 ? 'red' : v >= 0 && v < 2 ? 'yellow' : 'green'; | |||
return this.value; | |||
return this.value === '未超期' ? '#37D97F' : this.value === '已超期' ? '#FF5454' : '#FFD767'; | |||
} | |||
return 'unset'; | |||
}, | |||
@@ -95,9 +94,9 @@ const remainBox = { | |||
this.color | |||
// this.color == 'Green' ? 'green' : this.color == 'Red' ? 'red' : 'yellow' | |||
}; position:absolute; inset: 0; padding: 0 10px; display: flex; align-items: center; color: ${ | |||
this.color == 'red' || this.color == 'green' ? '#fff' : 'unset' | |||
'#fff' | |||
}`}> | |||
{this.injectData[this.injectData.prop] || ''} | |||
{this.value} | |||
</div> | |||
); | |||
}, | |||
@@ -155,18 +154,19 @@ export default { | |||
// : undefined, | |||
].filter((v) => v), | |||
tableProps: [ | |||
{ prop: 'name', label: '配置名' }, | |||
{ prop: 'lineName', label: '产线名称' }, | |||
{ prop: 'sectionName', label: '工段名' }, | |||
{ prop: 'equipmentName', label: '设备名称' }, | |||
{ prop: 'responsible', label: '负责人' }, | |||
{ prop: 'name', label: '配置名', showOverflowtooltip: true }, | |||
{ prop: 'lineName', label: '产线名称', showOverflowtooltip: true }, | |||
{ prop: 'sectionName', label: '工段名', showOverflowtooltip: true }, | |||
{ prop: 'equipmentName', label: '设备名称', showOverflowtooltip: true }, | |||
{ prop: 'responsible', label: '负责人', minWidth: 130, showOverflowtooltip: true }, | |||
{ prop: 'color', label: '是否超期', subcomponent: remainBox }, | |||
{ prop: 'opt1', label: '备件更换', name: '操作', subcomponent: btn }, | |||
{ prop: 'opt1', label: '备件更换', name: '操作', subcomponent: btn, width: 110 }, | |||
{ | |||
prop: 'opt2', | |||
label: '更换记录', | |||
name: '更新记录', | |||
subcomponent: btn, | |||
width: 110 | |||
}, // TODO: 是否换成按钮, 群里问 | |||
// { prop: 'remark', label: '备注' }, | |||
], | |||
@@ -0,0 +1,105 @@ | |||
<!-- | |||
* @Author: zwq | |||
* @Date: 2021-11-18 14:16:25 | |||
* @LastEditors: DY | |||
* @LastEditTime: 2023-11-22 10:27:50 | |||
* @Description: | |||
--> | |||
<template> | |||
<el-form | |||
:model="dataForm" | |||
:rules="dataRule" | |||
ref="dataForm" | |||
@keyup.enter.native="dataFormSubmit()" | |||
label-width="80px"> | |||
<el-row :gutter="20"> | |||
<el-col :span="12"> | |||
<el-form-item label="客户编号" prop="code"> | |||
<el-input v-model="dataForm.code" clearable placeholder="请输入客户编号" /> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="12"> | |||
<el-form-item label="客户名称" prop="name"> | |||
<el-input v-model="dataForm.name" clearable placeholder="请输入客户名称" /> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
<el-row :gutter="20"> | |||
<el-col :span="12"> | |||
<el-form-item label="联系人" prop="contact"> | |||
<el-input v-model="dataForm.contact" clearable placeholder="请输入联系人" /> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="12"> | |||
<el-form-item label="联系电话" prop="telephone"> | |||
<el-input | |||
v-model="dataForm.telephone" | |||
maxlength="11" | |||
placeholder="请输入联系电话" /> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
<el-form-item label="地址" prop="address"> | |||
<el-input | |||
v-model="dataForm.address" | |||
placeholder="请输入地址" /> | |||
</el-form-item> | |||
<el-form-item label="备注" prop="remark"> | |||
<el-input | |||
v-model="dataForm.remark" | |||
placeholder="请输入备注" /> | |||
</el-form-item> | |||
</el-form> | |||
</template> | |||
<script> | |||
import basicAdd from '../../core/mixins/basic-add'; | |||
import { createCustomer, updateCustomer, getCustomer, getCode } from "@/api/base/coreCustomer"; | |||
export default { | |||
mixins: [basicAdd], | |||
data() { | |||
return { | |||
urlOptions: { | |||
isGetCode: true, | |||
codeURL: getCode, | |||
createURL: createCustomer, | |||
updateURL: updateCustomer, | |||
infoURL: getCustomer | |||
}, | |||
dataForm: { | |||
id: undefined, | |||
code: undefined, | |||
name: undefined, | |||
telephone: undefined, | |||
contact: undefined, | |||
address: undefined, | |||
remark: undefined | |||
}, | |||
dataRule: { | |||
code: [{ required: true, message: "客户编号不能为空", trigger: "blur" }], | |||
name: [{ required: true, message: "客户名称不能为空", trigger: "blur" }], | |||
contact: [{ required: true, message: "联系人不能为空", trigger: "blur" }], | |||
telephone: [ | |||
{ required: false, trigger: "blur", message: "手机号不能为空" }, | |||
{ | |||
validator: function (rule, value, callback) { | |||
if (value) { | |||
if (/^(?:(?:\+|00)86)?1(?:3[\d]|4[5-79]|5[0-35-9]|6[5-7]|7[0-8]|8[\d]|9[189])\d{8}$/.test(value) === false) { | |||
callback(new Error("手机号格式错误")); | |||
} else { | |||
callback(); | |||
} | |||
} else { | |||
callback(); | |||
} | |||
}, trigger: "blur" | |||
} | |||
] | |||
} | |||
}; | |||
}, | |||
mounted() {}, | |||
methods: {} | |||
}; | |||
</script> |
@@ -0,0 +1,176 @@ | |||
<template> | |||
<div class="app-container"> | |||
<search-bar | |||
:formConfigs="formConfig" | |||
ref="searchBarForm" | |||
@headBtnClick="buttonClick" /> | |||
<base-table | |||
v-loading="dataListLoading" | |||
:table-props="tableProps" | |||
:page="listQuery.pageNo" | |||
:limit="listQuery.pageSize" | |||
:table-data="tableData"> | |||
<method-btn | |||
v-if="tableBtn.length" | |||
slot="handleBtn" | |||
:width="120" | |||
label="操作" | |||
:method-list="tableBtn" | |||
@clickBtn="handleClick" /> | |||
</base-table> | |||
<pagination | |||
:limit.sync="listQuery.pageSize" | |||
:page.sync="listQuery.pageNo" | |||
:total="listQuery.total" | |||
@pagination="getDataList" /> | |||
<base-dialog | |||
:dialogTitle="addOrEditTitle" | |||
:dialogVisible="addOrUpdateVisible" | |||
@cancel="handleCancel" | |||
@confirm="handleConfirm" | |||
:before-close="handleCancel" | |||
width="50%"> | |||
<add-or-update | |||
ref="addOrUpdate" | |||
@refreshDataList="successSubmit"></add-or-update> | |||
</base-dialog> | |||
</div> | |||
</template> | |||
<script> | |||
import AddOrUpdate from './add-or-updata'; | |||
import basicPage from '../../core/mixins/basic-page'; | |||
import { parseTime } from '../../core/mixins/code-filter'; | |||
import { | |||
getCustomerPage, | |||
deleteCustomer | |||
} from '@/api/base/coreCustomer'; | |||
const tableProps = [ | |||
{ | |||
prop: 'createTime', | |||
label: '添加时间', | |||
filter: parseTime | |||
}, | |||
{ | |||
prop: 'name', | |||
label: '客户名称' | |||
}, | |||
{ | |||
prop: 'code', | |||
label: '客户编码' | |||
}, | |||
{ | |||
prop: 'contact', | |||
label: '联系人' | |||
}, | |||
{ | |||
prop: 'telephone', | |||
label: '联系电话' | |||
}, | |||
{ | |||
prop: 'address', | |||
label: '地址' | |||
}, | |||
{ | |||
prop: 'remark', | |||
label: '备注' | |||
}, | |||
]; | |||
export default { | |||
mixins: [basicPage], | |||
data() { | |||
return { | |||
urlOptions: { | |||
getDataListURL: getCustomerPage, | |||
deleteURL: deleteCustomer | |||
}, | |||
tableProps, | |||
tableBtn: [ | |||
this.$auth.hasPermi(`base:core-customer:update`) | |||
? { | |||
type: 'edit', | |||
btnName: '编辑', | |||
} | |||
: undefined, | |||
this.$auth.hasPermi(`base:core-customer:delete`) | |||
? { | |||
type: 'delete', | |||
btnName: '删除', | |||
} | |||
: undefined, | |||
].filter((v)=>v), | |||
tableData: [], | |||
formConfig: [ | |||
{ | |||
type: 'input', | |||
label: '客户名称', | |||
placeholder: '客户名称', | |||
param: 'name', | |||
}, | |||
{ | |||
type: 'button', | |||
btnName: '查询', | |||
name: 'search', | |||
color: 'primary', | |||
}, | |||
{ | |||
type: 'separate', | |||
}, | |||
{ | |||
type: this.$auth.hasPermi('base:core-customer:create') ? 'button' : '', | |||
btnName: '新增', | |||
name: 'add', | |||
color: 'success', | |||
plain: true | |||
}, | |||
], | |||
}; | |||
}, | |||
components: { | |||
AddOrUpdate, | |||
}, | |||
created() {}, | |||
methods: { | |||
// 获取数据列表 | |||
// getDataList() { | |||
// this.dataListLoading = true; | |||
// this.urlOptions.getDataListURL(this.listQuery).then(response => { | |||
// this.tableData = response.data.list; | |||
// this.listQuery.total = response.data.total; | |||
// this.dataListLoading = false; | |||
// }); | |||
// }, | |||
buttonClick(val) { | |||
switch (val.btnName) { | |||
case 'search': | |||
this.listQuery.pageNo = 1; | |||
this.listQuery.pageSize = 10; | |||
this.listQuery.name = val.name ? val.name : undefined; | |||
this.getDataList(); | |||
break; | |||
case 'reset': | |||
this.$refs.searchBarForm.resetForm(); | |||
this.listQuery = { | |||
pageSize: 10, | |||
pageNo: 1, | |||
total: 1, | |||
}; | |||
this.getDataList(); | |||
break; | |||
case 'add': | |||
this.addOrEditTitle = '新增'; | |||
this.addOrUpdateVisible = true; | |||
this.addOrUpdateHandle(); | |||
break; | |||
case 'export': | |||
this.handleExport(); | |||
break; | |||
default: | |||
console.log(val); | |||
} | |||
}, | |||
}, | |||
}; | |||
</script> |
@@ -0,0 +1,130 @@ | |||
<!-- | |||
* @Author: zwq | |||
* @Date: 2021-11-18 14:16:25 | |||
* @LastEditors: DY | |||
* @LastEditTime: 2023-11-22 10:27:43 | |||
* @Description: | |||
--> | |||
<template> | |||
<el-form | |||
:model="dataForm" | |||
:rules="dataRule" | |||
ref="dataForm" | |||
@keyup.enter.native="dataFormSubmit()" | |||
label-width="100px"> | |||
<el-row :gutter="20"> | |||
<el-col :span="12"> | |||
<el-form-item label="供应商编号" prop="code"> | |||
<el-input v-model="dataForm.code" clearable placeholder="请输入供应商编号" /> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="12"> | |||
<el-form-item label="供应商名称" prop="name"> | |||
<el-input v-model="dataForm.name" clearable placeholder="请输入供应商名称" /> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
<el-row :gutter="20"> | |||
<el-col :span="12"> | |||
<el-form-item label="联系人" prop="contact"> | |||
<el-input v-model="dataForm.contact" clearable placeholder="请输入联系人" /> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="12"> | |||
<el-form-item label="联系电话" prop="telephone"> | |||
<el-input | |||
v-model="dataForm.telephone" | |||
maxlength="11" | |||
placeholder="请输入联系电话" /> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
<el-form-item label="地址" prop="address"> | |||
<el-input | |||
v-model="dataForm.address" | |||
placeholder="请输入地址" /> | |||
</el-form-item> | |||
<el-form-item label="备注" prop="remark"> | |||
<el-input | |||
v-model="dataForm.remark" | |||
placeholder="请输入备注" /> | |||
</el-form-item> | |||
</el-form> | |||
</template> | |||
<script> | |||
import basicAdd from '../../core/mixins/basic-add'; | |||
import { createCoreSupplier, updateCoreSupplier, getCoreSupplier, getCode } from "@/api/base/coreSupplier"; | |||
export default { | |||
mixins: [basicAdd], | |||
data() { | |||
return { | |||
urlOptions: { | |||
isGetCode: true, | |||
codeURL: getCode, | |||
createURL: createCoreSupplier, | |||
updateURL: updateCoreSupplier, | |||
infoURL: getCoreSupplier | |||
}, | |||
dataForm: { | |||
id: undefined, | |||
code: undefined, | |||
name: undefined, | |||
telephone: undefined, | |||
contact: undefined, | |||
address: undefined, | |||
remark: undefined | |||
}, | |||
dataRule: { | |||
code: [{ required: true, message: "供应商编号不能为空", trigger: "blur" }], | |||
name: [{ required: true, message: "供应商名称不能为空", trigger: "blur" }], | |||
contact: [{ required: true, message: "联系人不能为空", trigger: "blur" }], | |||
telephone: [ | |||
{ required: false, trigger: "blur", message: "手机号不能为空" }, | |||
{ | |||
validator: function (rule, value, callback) { | |||
if (value) { | |||
if (/^(?:(?:\+|00)86)?1(?:3[\d]|4[5-79]|5[0-35-9]|6[5-7]|7[0-8]|8[\d]|9[189])\d{8}$/.test(value) === false) { | |||
callback(new Error("手机号格式错误")); | |||
} else { | |||
callback(); | |||
} | |||
} else { | |||
callback(); | |||
} | |||
}, trigger: "blur" | |||
} | |||
] | |||
} | |||
}; | |||
}, | |||
mounted() {}, | |||
methods: { | |||
// 表单提交 | |||
dataFormSubmit() { | |||
console.log('你好', this.dataForm) | |||
this.$refs["dataForm"].validate((valid) => { | |||
if (!valid) { | |||
return false; | |||
} | |||
// 修改的提交 | |||
if (this.dataForm.id) { | |||
this.urlOptions.updateURL(this.dataForm).then(response => { | |||
this.$modal.msgSuccess("修改成功"); | |||
this.visible = false; | |||
this.$emit("refreshDataList"); | |||
}); | |||
return; | |||
} | |||
// 添加的提交 | |||
this.urlOptions.createURL(this.dataForm).then(response => { | |||
this.$modal.msgSuccess("新增成功"); | |||
this.visible = false; | |||
this.$emit("refreshDataList"); | |||
}); | |||
}); | |||
}, | |||
} | |||
}; | |||
</script> |
@@ -0,0 +1,176 @@ | |||
<template> | |||
<div class="app-container"> | |||
<search-bar | |||
:formConfigs="formConfig" | |||
ref="searchBarForm" | |||
@headBtnClick="buttonClick" /> | |||
<base-table | |||
v-loading="dataListLoading" | |||
:table-props="tableProps" | |||
:page="listQuery.pageNo" | |||
:limit="listQuery.pageSize" | |||
:table-data="tableData"> | |||
<method-btn | |||
v-if="tableBtn.length" | |||
slot="handleBtn" | |||
:width="120" | |||
label="操作" | |||
:method-list="tableBtn" | |||
@clickBtn="handleClick" /> | |||
</base-table> | |||
<pagination | |||
:limit.sync="listQuery.pageSize" | |||
:page.sync="listQuery.pageNo" | |||
:total="listQuery.total" | |||
@pagination="getDataList" /> | |||
<base-dialog | |||
:dialogTitle="addOrEditTitle" | |||
:dialogVisible="addOrUpdateVisible" | |||
@cancel="handleCancel" | |||
@confirm="handleConfirm" | |||
:before-close="handleCancel" | |||
width="50%"> | |||
<add-or-update | |||
ref="addOrUpdate" | |||
@refreshDataList="successSubmit"></add-or-update> | |||
</base-dialog> | |||
</div> | |||
</template> | |||
<script> | |||
import AddOrUpdate from './add-or-updata'; | |||
import basicPage from '../../core/mixins/basic-page'; | |||
import { parseTime } from '../../core/mixins/code-filter'; | |||
import { | |||
getCoreSupplierPage, | |||
deleteCoreSupplier | |||
} from '@/api/base/coreSupplier'; | |||
const tableProps = [ | |||
{ | |||
prop: 'createTime', | |||
label: '添加时间', | |||
filter: parseTime | |||
}, | |||
{ | |||
prop: 'code', | |||
label: '供应商编码' | |||
}, | |||
{ | |||
prop: 'name', | |||
label: '供应商名称' | |||
}, | |||
{ | |||
prop: 'contact', | |||
label: '联系人' | |||
}, | |||
{ | |||
prop: 'telephone', | |||
label: '联系电话' | |||
}, | |||
{ | |||
prop: 'address', | |||
label: '地址' | |||
}, | |||
{ | |||
prop: 'remark', | |||
label: '备注' | |||
}, | |||
]; | |||
export default { | |||
mixins: [basicPage], | |||
data() { | |||
return { | |||
urlOptions: { | |||
getDataListURL: getCoreSupplierPage, | |||
deleteURL: deleteCoreSupplier | |||
}, | |||
tableProps, | |||
tableBtn: [ | |||
this.$auth.hasPermi(`base:core-supplier:update`) | |||
? { | |||
type: 'edit', | |||
btnName: '编辑', | |||
} | |||
: undefined, | |||
this.$auth.hasPermi(`base:core-supplier:delete`) | |||
? { | |||
type: 'delete', | |||
btnName: '删除', | |||
} | |||
: undefined, | |||
].filter((v)=>v), | |||
tableData: [], | |||
formConfig: [ | |||
{ | |||
type: 'input', | |||
label: '供应商', | |||
placeholder: '供应商名称', | |||
param: 'name', | |||
}, | |||
{ | |||
type: 'button', | |||
btnName: '查询', | |||
name: 'search', | |||
color: 'primary', | |||
}, | |||
{ | |||
type: 'separate', | |||
}, | |||
{ | |||
type: this.$auth.hasPermi('base:core-supplier:create') ? 'button' : '', | |||
btnName: '新增', | |||
name: 'add', | |||
color: 'success', | |||
plain: true | |||
}, | |||
], | |||
}; | |||
}, | |||
components: { | |||
AddOrUpdate, | |||
}, | |||
created() {}, | |||
methods: { | |||
// 获取数据列表 | |||
// getDataList() { | |||
// this.dataListLoading = true; | |||
// this.urlOptions.getDataListURL(this.listQuery).then(response => { | |||
// this.tableData = response.data.list; | |||
// this.listQuery.total = response.data.total; | |||
// this.dataListLoading = false; | |||
// }); | |||
// }, | |||
buttonClick(val) { | |||
switch (val.btnName) { | |||
case 'search': | |||
this.listQuery.pageNo = 1; | |||
this.listQuery.pageSize = 10; | |||
this.listQuery.name = val.name ? val.name : undefined; | |||
this.getDataList(); | |||
break; | |||
case 'reset': | |||
this.$refs.searchBarForm.resetForm(); | |||
this.listQuery = { | |||
pageSize: 10, | |||
pageNo: 1, | |||
total: 1, | |||
}; | |||
this.getDataList(); | |||
break; | |||
case 'add': | |||
this.addOrEditTitle = '新增'; | |||
this.addOrUpdateVisible = true; | |||
this.addOrUpdateHandle(); | |||
break; | |||
case 'export': | |||
this.handleExport(); | |||
break; | |||
default: | |||
console.log(val); | |||
} | |||
}, | |||
}, | |||
}; | |||
</script> |
@@ -0,0 +1,141 @@ | |||
<template> | |||
<el-dialog | |||
:visible.sync="visible" | |||
:width="'30%'" | |||
:append-to-body="true" | |||
:close-on-click-modal="false" | |||
class="dialog"> | |||
<template #title> | |||
<slot name="title"> | |||
<div class="titleStyle"> | |||
{{ !dataForm.id ? '新增' : '编辑' }} | |||
</div> | |||
</slot> | |||
</template> | |||
<el-form | |||
ref="dataForm" | |||
:model="dataForm" | |||
:rules="dataRule" | |||
label-width="70px" | |||
@keyup.enter.native="dataFormSubmit()"> | |||
<el-form-item label="属性名" prop="attrName"> | |||
<el-input | |||
v-model="dataForm.attrName" | |||
placeholder="请输入属性名" | |||
clearable /> | |||
</el-form-item> | |||
<el-form-item label="属性值" prop="attrValue"> | |||
<el-input | |||
v-model="dataForm.attrValue" | |||
placeholder="请输入属性值" | |||
clearable /> | |||
</el-form-item> | |||
</el-form> | |||
<el-row style="text-align: right"> | |||
<el-button @click="visible = false">取消</el-button> | |||
<el-button type="primary" @click="dataFormSubmit()">确定</el-button> | |||
</el-row> | |||
</el-dialog> | |||
</template> | |||
<script> | |||
import { | |||
createMaterialAttr, | |||
updateMaterialAttr, | |||
getMaterialAttr | |||
} from '@/api/base/material'; | |||
export default { | |||
props: { | |||
materialId: { | |||
type: String, | |||
default: '', | |||
}, | |||
}, | |||
data() { | |||
return { | |||
visible: false, | |||
dataForm: { | |||
id: undefined, | |||
attrName: '', | |||
attrValue: '', | |||
}, | |||
dataRule: { | |||
attrName: [{ required: true, message: '名称不能为空', trigger: 'blur' }], | |||
}, | |||
}; | |||
}, | |||
methods: { | |||
init(id) { | |||
this.dataForm.id = id || ''; | |||
this.visible = true; | |||
this.$nextTick(() => { | |||
this.$refs['dataForm'].resetFields(); | |||
if (this.dataForm.id) { | |||
getMaterialAttr({ | |||
id: this.dataForm.id | |||
}).then((res) => { | |||
const { attrName, attrValue } = res.data; | |||
this.dataForm.attrName = attrName; | |||
this.dataForm.attrValue = attrValue; | |||
}); | |||
} | |||
}); | |||
}, | |||
// 表单提交 | |||
dataFormSubmit() { | |||
this.$refs['dataForm'].validate((valid) => { | |||
if (valid) { | |||
// 修改的提交 | |||
if (this.dataForm.id) { | |||
updateMaterialAttr({ | |||
...this.dataForm, | |||
materialId: this.materialId, | |||
}).then((response) => { | |||
this.$modal.msgSuccess('修改成功'); | |||
this.visible = false; | |||
this.$emit('refreshDataList'); | |||
}); | |||
return; | |||
} | |||
// 添加的提交 | |||
createMaterialAttr({ | |||
...this.dataForm, | |||
materialId: this.materialId, | |||
}).then((response) => { | |||
this.$modal.msgSuccess('新增成功'); | |||
this.visible = false; | |||
this.$emit('refreshDataList'); | |||
}); | |||
} | |||
}); | |||
}, | |||
}, | |||
}; | |||
</script> | |||
<style scoped> | |||
.dialog >>> .el-dialog__body { | |||
padding: 30px 24px; | |||
} | |||
.dialog >>> .el-dialog__header { | |||
font-size: 16px; | |||
color: rgba(0, 0, 0, 0.85); | |||
font-weight: 500; | |||
padding: 13px 24px; | |||
border-bottom: 1px solid #e9e9e9; | |||
} | |||
.dialog >>> .el-dialog__header .titleStyle::before { | |||
content: ''; | |||
display: inline-block; | |||
width: 4px; | |||
height: 16px; | |||
background-color: #0b58ff; | |||
border-radius: 1px; | |||
margin-right: 8px; | |||
position: relative; | |||
top: 2px; | |||
} | |||
</style> |
@@ -0,0 +1,65 @@ | |||
<!-- | |||
* @Author: zwq | |||
* @Date: 2023-08-01 15:27:31 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-08-01 16:25:54 | |||
* @Description: | |||
--> | |||
<template> | |||
<div :class="[className, { 'p-0': noPadding }]"> | |||
<slot /> | |||
</div> | |||
</template> | |||
<script> | |||
export default { | |||
props: { | |||
size: { | |||
// 取值范围: xl lg md sm | |||
type: String, | |||
default: 'de', | |||
validator: function (val) { | |||
return ['xl', 'lg', 'de', 'md', 'sm'].indexOf(val) !== -1; | |||
}, | |||
}, | |||
noPadding: { | |||
type: Boolean, | |||
default: false, | |||
}, | |||
}, | |||
computed: { | |||
className: function () { | |||
return `${this.size}-title`; | |||
}, | |||
}, | |||
}; | |||
</script> | |||
<style lang="scss" scoped> | |||
$pxls: (xl, 28px) (lg, 24px) (de, 20px) (md, 18px) (sm, 16px); | |||
$mgr: 8px; | |||
@each $size, $height in $pxls { | |||
.#{$size}-title { | |||
font-size: 18px; | |||
line-height: $height; | |||
color: #000; | |||
font-weight: 500; | |||
font-family: '微软雅黑', 'Microsoft YaHei', Arial, Helvetica, sans-serif; | |||
&::before { | |||
content: ''; | |||
display: inline-block; | |||
vertical-align: top; | |||
width: 4px; | |||
height: $height + 2px; | |||
border-radius: 1px; | |||
margin-right: $mgr; | |||
background-color: #0b58ff; | |||
} | |||
} | |||
} | |||
.p-0 { | |||
padding: 0; | |||
} | |||
</style> |