QN;C^Uf`7_|oa
zv0wS`W#|8%3|)p+4HcC2p}i`Yf@Jz6zxXrrg!BC=j`7b?lgl>xc}Qa25-zWo6SDIvAzp;Wn6qO=oCw2_k^)}O|q
z2~b6-qk^Bw;A&vuwW&GYj9w{EZ0+>m&VOZWTr0vq31D8Djq)$hhWpqw4jIkRFdorm29ZuJsr&
zE`a2Jn4f0z{jniSw@HIG4bXR3Cb&YW<0B%9e6P@m*G3ZAXv5!B=yMhNDjTZzG_$X|NqS4`^bE^^32GIgRj(G=5D|QBKzv|59coO+x
z)l`F?)l#{jM$N)9iwd;ZWo(83?c_d;I`dQ=UsaC!C0*_YOB8?gk?A9IIufj)r%5?&
zNhw20U@{g9pc@$TJNH`jpBtvlctB~IFCVDa#A0gf(fI13OO
zZw~t)t3jPaUsvwEne;K43$~bMgG*E48_)K0qjaf+Ro0UvdWHf@Taamh5u`f7k!t`w
z(X6$te=vmhwMda8iPAy@<4Q@g@#8E*7tETc4-3Dxk=zuD+b>Rky
zZmsPfQgpwKz%2%wnRqAOe~;R-h>0X7(0@z0JUp8-^tC)VD?a}*eB*aHykKlFOH9l%
ayN4|~PO7Nj&}#rq;V8?iJujCv4gMef?6HFY
literal 1673
zcmV;426p+0P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@
z1ONa40RR91AfN*P1ONa40RR91AOHXW0IY^$^8f$^^GQTOR9Fd>S51r*MHGH-dS<$N
zH!^@R!ou*A>?S5AVuTz(Tb9XJ!h+~=G
zvSrttFIPFP2Wlk!LW*nl3np{qU?Z2~ERtGK`K2pj$I@_YeUV~>s+Y6sngAm
zJJkZqlY@kGmdB%(FkNC-BCh7v%>Ip
zOU1lMue)aAc$%J>3uKlw20Mls<&;5X7D2z)&9gni6kH0l)yWWPfy*B8MB;J6l!2nC
zZOj2{b{`}=CWBv}kcax;Ms}rw9(0*ThC&vBrkOO*X>lX>9*
zbVxACib%FbC>sUMxS8Pelv|6Y?p=PAD4Y|=teLy}=
z=5mhB$a9!?OE(2zRz=8jmXn-NI%Q>rfURMUm;zwc%?+`>>y{QAqY@%}4>dDwT_<
zJmUmO=SD*Wj-=Zcv=o30aL_6iJdQ`T#ORyZT0ov6*N*J6jiw=oOWb)F^YE~ZJ2M16
z6l8a@)m~Ua~a>sjVxT<;;VbYk+-f7|bScIN2OV~(EhM;cID
zAv1-xd|DRWHjuV?=^L2yyjc=+A}Pz0)hlv3FEU_2&6jCU?k8Su(8Ojo)k2TB$%8&tEE{IpV#=MMs?BvEsJ_c>fI!0nz
zB4sE`jE*s{0h2fGp*CayHGy%mp!yc7)1D!Tn$Y{$4-0)t|DV3cPpF84N=3e0RvxQQ2KD0`jypo&xS1?}oP
zDDsv3cA-`zQWJk@W&uVlEvdAVL=H{Gax804!Y
zY5*r}wX!^dr1=0PdFAy0T?UUk{d$PKi#kg10(RE^YFox%Zk+)8#)LeKzla|pkVB!#
z@+~)}s}T#_`^|Gxi}KAV-XRaPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@
z1ONa40RR91AfN*P1ONa40RR91AOHXW0IY^$^8f$^^GQTOR9Fd>S51r*MHGH-dS<$N
zH!^@R!ou*A>?S5AVuTz(Tb9XJ!h+~=G
zvSrttFIPFP2Wlk!LW*nl3np{qU?Z2~ERtGK`K2pj$I@_YeUV~>s+Y6sngAm
zJJkZqlY@kGmdB%(FkNC-BCh7v%>Ip
zOU1lMue)aAc$%J>3uKlw20Mls<&;5X7D2z)&9gni6kH0l)yWWPfy*B8MB;J6l!2nC
zZOj2{b{`}=CWBv}kcax;Ms}rw9(0*ThC&vBrkOO*X>lX>9*
zbVxACib%FbC>sUMxS8Pelv|6Y?p=PAD4Y|=teLy}=
z=5mhB$a9!?OE(2zRz=8jmXn-NI%Q>rfURMUm;zwc%?+`>>y{QAqY@%}4>dDwT_<
zJmUmO=SD*Wj-=Zcv=o30aL_6iJdQ`T#ORyZT0ov6*N*J6jiw=oOWb)F^YE~ZJ2M16
z6l8a@)m~Ua~a>sjVxT<;;VbYk+-f7|bScIN2OV~(EhM;cID
zAv1-xd|DRWHjuV?=^L2yyjc=+A}Pz0)hlv3FEU_2&6jCU?k8Su(8Ojo)k2TB$%8&tEE{IpV#=MMs?BvEsJ_c>fI!0nz
zB4sE`jE*s{0h2fGp*CayHGy%mp!yc7)1D!Tn$Y{$4-0)t|DV3cPpF84N=3e0RvxQQ2KD0`jypo&xS1?}oP
zDDsv3cA-`zQWJk@W&uVlEvdAVL=H{Gax804!Y
zY5*r}wX!^dr1=0PdFAy0T?UUk{d$PKi#kg10(RE^YFox%Zk+)8#)LeKzla|pkVB!#
z@+~)}s}T#_`^|Gxi}KAV-XRa
@@ -49,6 +50,7 @@
v-if="getType(n, c) === 'date'"
v-bind="configs.fields[(n - 1) * COLUMN_PER_ROW + (c - 1)].props"
:placeholder="getPlaceholder(n, c)"
+ value-format='yyyy-MM-ddTHH:mm:ss'
v-model="dataForm[configs.fields[(n - 1) * COLUMN_PER_ROW + (c - 1)].name]"
:disabled="isDetail" />
@@ -97,6 +99,7 @@
color: btnColor[operate.name]
}"
@click="handleClick(operate)"
+ :disabled='isDisabled'
>{{ btnName[operate.name] }}
@@ -120,7 +123,7 @@ const title = {
// 或者也可以改造成自定义颜色:
const btnType = {
- add :'#0b58ff',
+ add: '#0b58ff',
save: '#000',
update: '#0b58ff',
reset: ''
@@ -179,6 +182,8 @@ export default {
// },
data() {
return {
+ // 按钮防重复点击
+ isDisabled: false,
COLUMN_PER_ROW,
title,
/** 按钮相关属性 */
@@ -456,6 +461,7 @@ export default {
},
emitSelectChange(name, id) {
+ // console.log(id)
const currentField = this.configs.fields.find((item) => item.name === name)
if (currentField.relatedField) {
this.dataForm[currentField.relatedField] = null
@@ -476,7 +482,16 @@ export default {
/** 操作 */
switch (btn.name) {
case 'save':
+ this.isDisabled = true
+ setTimeout(() => {
+ this.isDisabled = false
+ }, 3000)
case 'update':
+ this.isDisabled = true
+ setTimeout(() => {
+ this.isDisabled = false
+ }, 3000)
+
/** 需要验证表单的操作 */
this.$refs['dataForm'].validate((valid) => {
if (valid) {
diff --git a/src/components/base-table/components/table-head.vue b/src/components/base-table/components/table-head.vue
index 042d1c4..c51360d 100644
--- a/src/components/base-table/components/table-head.vue
+++ b/src/components/base-table/components/table-head.vue
@@ -1,8 +1,18 @@
+
+
+
({})
}
+ },
+ methods: {
+ // 自定义表头列宽
+ flexColumnWidth(str) {
+ let flexWidth = 0
+ for (const char of str) {
+ if ((char >= 'A' && char <= 'Z') || (char >= 'a' && char <= 'z')) {
+ // 如果是英文字符,为字符分配8个单位宽度
+ flexWidth += 8
+ } else if (char >= '\u4e00' && char <= '\u9fa5') {
+ // 如果是中文字符,为字符分配20个单位宽度
+ flexWidth += 20
+ } else {
+ // 其他种类字符,为字符分配5个单位宽度
+ flexWidth += 5
+ }
+ }
+ // if (flexWidth < 50) {
+ // // 设置最小宽度
+ // flexWidth = 50
+ // }
+ if (flexWidth > 250) {
+ // 设置最大宽度
+ flexWidth = 250
+ }
+ return flexWidth + 'px'
+ },
}
}
diff --git a/src/components/base-table/index.vue b/src/components/base-table/index.vue
index a9b666a..2114896 100644
--- a/src/components/base-table/index.vue
+++ b/src/components/base-table/index.vue
@@ -109,7 +109,9 @@ export default {
maxHeight: {
type: Number,
// default: window.innerHeight - 325
- default: 500
+ // el-table高度
+ default: window.innerHeight - 100
+ // default: 500
},
spanMethod: {
type: Function,
diff --git a/src/i18n/en.js b/src/i18n/en.js
index d06475d..11c24c9 100644
--- a/src/i18n/en.js
+++ b/src/i18n/en.js
@@ -26,9 +26,9 @@ t.routes['设备'] = 'Equipment'
t.routes['字典管理'] = 'Dict Management'
t.routes['PLC信息'] = 'PLC'
t.routes['设备与PLC关联配置'] = 'Relations between plc & equipments'
-t.routes['设备生产实时数据'] = 'Realtime Equipment Data'
-t.routes['产线生产实时数据'] = 'Realtime Productline Data'
-t.routes['质量检查实时数据'] = 'Realtime Quality Inspection Data'
+t.routes['近24小时设备生产数据'] = 'Realtime Equipment Data(24h)'
+t.routes['近24小时产线生产数据'] = 'Realtime Productline Data(24h)'
+t.routes['近24小时质量检查数据'] = 'Realtime Quality Inspection Data(24h)'
t.routes['报表总览'] = 'Report Overview'
t.routes['报表分类'] = 'Report Types'
t.routes['报表详情'] = 'Report Detail'
@@ -152,6 +152,9 @@ t.ti = 'Time'
t.plcCode = 'PLC Code'
t.equName = 'Equipment Name'
t.equCode = 'Equipment Code'
+t.yAxisTime = 'Time (h)'
+t.yAxisRate = 'Percentage (%)'
+t.hourTime = '(h)'
t.graph = 'Graph'
@@ -182,6 +185,8 @@ t.timetype = 'Time Type'
t.reftimerange = 'By time range'
t.refdate = 'By date'
t.hour = 'Hour(s)'
+t.yes = 'yes'
+t.no = 'no'
t.errors = {}
t.errors.nosection = 'There is no sections on this product line.'
@@ -266,15 +271,15 @@ t.inspect.typeCount = 'Data of inspection types'
t.realtime = {}
-t.realtime.eq = 'Realtime data of equipments'
-t.realtime.pl = 'Realtime data of product lines'
-t.realtime.inspect = 'Realtime data of quality inspections'
+t.realtime.eq = 'Realtime data of equipments(24h)'
+t.realtime.pl = 'Realtime data of product lines(24h)'
+t.realtime.inspect = 'Realtime data of quality inspections(24h)'
t.realtime.in = 'in'
t.realtime.out = 'out'
t.realtime.data = 'scrap'
t.realtime.num = 'scrap quantity'
t.realtime.rate = 'scrap rate'
-t.realtime.total = 'total production'
+t.realtime.total = 'Equipment total production'
t.realtime.goodrate = 'Passed Rate'
t.realtime.runState = 'running state'
t.realtime.state = 'status'
@@ -387,6 +392,7 @@ t.pl.tvalue = 'TT Value'
t.pl.factoryHints = 'Please select a factory'
t.pl.process = 'Working procedure'
t.pl.add = 'Add Euipment'
+t.pl.add2 = 'Add Comparison Euipment'
t.pl.queryFirst = 'Please Query First'
t.pl.choose = 'Please select equipment'
t.pl.confirm = 'Confirm'
diff --git a/src/i18n/zh-CN.js b/src/i18n/zh-CN.js
index e95d2f3..58f13ff 100644
--- a/src/i18n/zh-CN.js
+++ b/src/i18n/zh-CN.js
@@ -27,9 +27,9 @@ t.routes['设备'] = '设备'
t.routes['字典管理'] = '字典管理'
t.routes['PLC信息'] = 'PLC信息'
t.routes['设备与PLC关联配置'] = '设备与PLC关联配置' // ?
-t.routes['设备生产实时数据'] = '设备生产实时数据'
-t.routes['产线生产实时数据'] = '产线生产实时数据'
-t.routes['质量检查实时数据'] = '质量检查实时数据'
+t.routes['近24小时设备生产数据'] = '近24小时设备生产数据'
+t.routes['近24小时产线生产数据'] = '近24小时产线生产数据'
+t.routes['近24小时质量检查数据'] = '近24小时质量检查数据'
t.routes['报表总览'] = '报表总览'
t.routes['报表分类'] = '报表分类'
t.routes['报表详情'] = '报表详情'
@@ -153,6 +153,9 @@ t.ti = '时间'
t.plcCode = 'PLC 编码'
t.equName = '设备名称'
t.equCode = '设备编码'
+t.yAxisTime = '时间 (h)'
+t.yAxisRate = '百分比 (%)'
+t.hourTime = '(时)'
t.graph = '图形'
t.category = '分类'
@@ -182,6 +185,9 @@ t.timetype = '时间类型'
t.reftimerange = '按时间段'
t.refdate = '按日期'
t.hour = '小时'
+t.yes = '是'
+t.no = '否'
+
t.errors = {}
t.errors.nosection = '该产线没有工段'
@@ -266,15 +272,15 @@ t.inspect.typeCount = '检测类型统计数据'
t.realtime = {}
-t.realtime.eq = '设备生产实时数据'
-t.realtime.pl = '产线生产实时数据'
-t.realtime.inspect = '质量检查实时数据'
+t.realtime.eq = '近24小时产线生产数据'
+t.realtime.pl = '近24小时产线生产数据'
+t.realtime.inspect = '近24小时质量检查数据'
t.realtime.in = '进数据'
t.realtime.out = '出数据'
t.realtime.data = '报废数据'
t.realtime.num = '报废数量'
t.realtime.rate = '报废比例'
-t.realtime.total = '总产量'
+t.realtime.total = '设备总产量'
t.realtime.goodrate = '良品率'
t.realtime.runState = '是否运行'
t.realtime.state = '状态'
@@ -386,6 +392,7 @@ t.pl.tvalue = '产线TT值(每小时下片数量)'
t.pl.factoryHints = '请选择所属工厂'
t.pl.process = '工序'
t.pl.add = '添加设备'
+t.pl.add2 = '添加对比设备'
t.pl.queryFirst = '请先查询数据'
t.pl.success = '新设备数据获取成功'
t.pl.choose = '请选择设备'
diff --git a/src/utils/filters.js b/src/utils/filters.js
index 1ee971d..67efcab 100644
--- a/src/utils/filters.js
+++ b/src/utils/filters.js
@@ -4,7 +4,7 @@
* @Author: fzq
* @Date: 2022-11-25 09:51:46
* @LastEditors: fzq
- * @LastEditTime: 2023-01-11 20:52:35
+ * @LastEditTime: 2023-02-01 09:39:37
*/
/** filters */
import moment from 'moment'
@@ -16,7 +16,7 @@ export const dictFilter = dictTypeId => {
}
export const timeFilter = (val) => {
- return moment(val).format('YYYY-MM-DD HH:mm:ss')
+ return val ? moment(val).format('YYYY-MM-DD HH:mm:ss') : '-'
}
export const pick = (obj, paths) => {
diff --git a/src/views/main-content.vue b/src/views/main-content.vue
index d4910bf..9cb1972 100644
--- a/src/views/main-content.vue
+++ b/src/views/main-content.vue
@@ -46,7 +46,7 @@ export default {
},
mounted() {
this.$nextTick(() => {
- // 通过加上ref,再删除数组第一个元素来把空元素删除,不知道为何会出现这个元素
+ // 通过加上ref,再删除数组第一个元素来把空元素删除,不知为何会出现这个元素
this.$store.state.contentTabs.splice(0, 1)
// 加个判断防止home页面报$children的错
if (this.$route.meta.hiddenSiderbar !== true) {
@@ -56,6 +56,16 @@ export default {
// console.log('11',this.$refs.tabs.$children[0].$refs.tabs[0])
// console.log('22',this.$store.state.contentTabs)
})
+
+ // setTimeout(function() {
+ // // 执行代码块
+ // // 不加.bind(this) 因为使用的是function() 这样函数就不会从你的类组件继承this,所以this是undefined
+ // this.$store.state.contentTabs.splice(0, 1)
+ // // 加个判断防止home页面报$children的错
+ // if (this.$route.meta.hiddenSiderbar !== true) {
+ // this.$refs.tabs.$children[0].$refs.tabs[0].style.display = 'none'
+ // }
+ // }.bind(this),0)
},
methods: {
// tabs, 是否通过iframe展示
diff --git a/src/views/main-navbar.vue b/src/views/main-navbar.vue
index e463bc2..a7c5546 100644
--- a/src/views/main-navbar.vue
+++ b/src/views/main-navbar.vue
@@ -217,7 +217,7 @@ import moment from 'moment'
// let logoutInterval = null
// const timeInterval = null
export default {
- inject: ['refresh'],
+ // inject: ['refresh'],
data() {
return {
// logoutTime: 1800000,
@@ -307,6 +307,9 @@ export default {
getLang() {
return Cookies.get('language')
},
+ refresh() {
+ this.$router.go(0)
+ },
// 切换语言环境
handleCommand(command) {
// 切换语言选项时,可能需要手动刷新页面
diff --git a/src/views/main-sidebar.vue b/src/views/main-sidebar.vue
index 0612c79..40dd720 100644
--- a/src/views/main-sidebar.vue
+++ b/src/views/main-sidebar.vue
@@ -29,7 +29,7 @@ export default {
mounted() {
// this.$store.state.sidebarMenuList = window.SITE_CONFIG['menuList']
this.$nextTick(() => {
- console.log(`window.SITE_CONFIG['menuList']`, window.SITE_CONFIG['menuList'])
+ // console.log(`window.SITE_CONFIG['menuList']`, window.SITE_CONFIG['menuList'])
this.unhiddenMenuList = this.getUnhiddenRoutesListFrom(window.SITE_CONFIG['menuList'])
/** 本地保存一份,store保存一份,感觉 store 都不需要保存... */
this.$store.state.sidebarMenuList = this.unhiddenMenuList
diff --git a/src/views/modules/monitoring/equipment.vue b/src/views/modules/monitoring/equipment.vue
index c474b40..d5b9be4 100644
--- a/src/views/modules/monitoring/equipment.vue
+++ b/src/views/modules/monitoring/equipment.vue
@@ -411,7 +411,7 @@ export default {
if (data && data.code === 0) {
this.dataList = data.data.list
// this.dataList = new Array(20).fill('1')
- // console.log('data list', this.dataList)
+ console.log('data list', this.dataList)
this.totalPage = data.data.total
} else {
this.dataList = []
diff --git a/src/views/modules/monitoring/equipmentCurrentState.vue b/src/views/modules/monitoring/equipmentCurrentState.vue
index 6b31b4b..e0dfe88 100644
--- a/src/views/modules/monitoring/equipmentCurrentState.vue
+++ b/src/views/modules/monitoring/equipmentCurrentState.vue
@@ -23,7 +23,14 @@
-
+
+ layout="total, sizes, prev, pager, next, jumper">
@@ -56,27 +62,41 @@ const tableConfigs = [
},
{ prop: 'equipmentName', name: i18n.t('realtime.eqName') },
{ prop: 'equipmentCode', name: i18n.t('realtime.eqCode') },
- { prop: 'inputNum', name: i18n.t('realtime.input') },
- { prop: 'outputNum', name: i18n.t('realtime.output') },
+ {
+ prop: 'inputNum',
+ name: i18n.t('realtime.input'),
+ filter: (val) => {
+ if (val !== null && val !== undefined) return val ? val : '-'
+ else return '-'
+ }
+ },
+ {
+ prop: 'outputNum',
+ name: i18n.t('realtime.output'),
+ filter: (val) => {
+ if (val !== null && val !== undefined) return val ? val : '-'
+ else return '-'
+ }
+ },
{
prop: 'run',
name: i18n.t('realtime.runState'),
- filter: val => {
- if (val !== null && val !== undefined) return val ? '是' : '否'
+ filter: (val) => {
+ if (val !== null && val !== undefined) return val ? i18n.t('yes') : i18n.t('no')
}
},
{
prop: 'status',
name: i18n.t('realtime.state'),
- filter: val => {
- if (val !== null && val !== undefined) return ['正常', '计划停机', '故障'][+val]
+ filter: (val) => {
+ if (val !== null && val !== undefined) return [i18n.t('normal'), i18n.t('planStop'), i18n.t('malfunction')][+val]
}
},
{
prop: 'error',
name: i18n.t('realtime.hasFault'),
- filter: val => {
- if (val !== null && val !== undefined) return val ? '是' : '否'
+ filter: (val) => {
+ if (val !== null && val !== undefined) return val ? i18n.t('yes') : i18n.t('no')
}
},
{ prop: 'quantityTime', name: i18n.t('realtime.productionSnapshotTime'), filter: timeFilter },
@@ -137,8 +157,8 @@ export default {
// destroy dialog
handleDestroyDialog() {
setTimeout(() => {
- this.addOrUpdateVisible= false
- }, /** after dialog animated */ 200);
+ this.addOrUpdateVisible = false
+ }, /** after dialog animated */ 200)
},
// 设备
getEqList() {
@@ -231,7 +251,7 @@ export default {
deleteHandle(id) {
var ids = id
? [id]
- : this.dataListSelections.map(item => {
+ : this.dataListSelections.map((item) => {
return item.id
})
this.$confirm(`${i18n.t('prompt.info', { handle: id ? i18n.t('delete').toLowerCase() : i18n.t('deleteBatch').toLowerCase() })}`, i18n.t('prompt.title'), {
diff --git a/src/views/modules/monitoring/equipmentEfficiency.vue b/src/views/modules/monitoring/equipmentEfficiency.vue
index 188cc18..70df6b5 100644
--- a/src/views/modules/monitoring/equipmentEfficiency.vue
+++ b/src/views/modules/monitoring/equipmentEfficiency.vue
@@ -8,7 +8,7 @@
-
+
@@ -124,8 +124,8 @@ const tableConfigs = [
{
name: i18n.t('eq.speedlost'),
children: [
- { prop: 'realYield', name: i18n.t('eq.realyield'), width: 120, filter: val => `${val} `+i18n.t('hour') },
- { prop: 'designYield', name: i18n.t('eq.designyield'), width: 120, filter: val => `${val} `+i18n.t('hour') },
+ { prop: 'realYield', name: i18n.t('eq.realyield'), width: 120, filter: val => `${val} `+'/'+i18n.t('hour') },
+ { prop: 'designYield', name: i18n.t('eq.designyield'), width: 120, filter: val => `${val} `+'/'+i18n.t('hour') },
{ prop: 'peEfficiency', name: i18n.t('eq.speedefficiency'), width: 120, filter: val => (val * 100).toFixed(2) + '%' }
]
},
@@ -242,7 +242,9 @@ export default {
}
})
},
-
+ handleftIdChange() {
+ this.getProductLineList()
+ },
// 时间类型预处理
getTimeRange() {
let startTime
diff --git a/src/views/modules/monitoring/equipmentEfficiencyGraph.vue b/src/views/modules/monitoring/equipmentEfficiencyGraph.vue
index 08b6e37..d74f640 100644
--- a/src/views/modules/monitoring/equipmentEfficiencyGraph.vue
+++ b/src/views/modules/monitoring/equipmentEfficiencyGraph.vue
@@ -2,15 +2,15 @@
/*
* @Author: lb
* @Date: 2022-07-24 13:30:00
-* @LastEditTime: 2022-07-28 09:30:00
-* @LastEditors: lb
+ * @LastEditTime: 2023-02-02 15:02:52
+ * @LastEditors: fzq
* @Description: 设备效率分析-echarts图
*/
-->
-
@@ -21,12 +21,12 @@
-
+
-
+
@@ -131,6 +131,7 @@ export default {
this.config.setTitle(this.injectData.equipmentName + i18n.t('eq.timetrend'))
await this.getList()
this.setLegend()
+ // console.log('this.dataType',this.dataType);
},
init(data) {
@@ -181,14 +182,14 @@ export default {
getList() {
const params = this.makeQuerys()
// 发起请求
- return this.getOEE(params).then(datalist => {
+ return this.getOEE(params).then((datalist) => {
console.log('getOEE res:', datalist)
this.timeList.splice(0)
this.rateList.splice(0)
this.xAxis.splice(0)
if (datalist.length) {
// 分流
- datalist.map(item => {
+ datalist.map((item) => {
const time = moment(item.time)
if (this.searchType === i18n.t('eq.monthgap')) {
this.xAxis.push(`${time.year()}${i18n.t('eq.year')}${time.month() + 1}${i18n.t('eq.month')}`)
@@ -241,7 +242,7 @@ export default {
const workTimeList = []
const stopTimeList = []
const downTimeList = []
- this.timeList.map(item => {
+ this.timeList.map((item) => {
workTimeList.push(item.workTime)
stopTimeList.push(item.stopTime)
downTimeList.push(item.downTime)
@@ -260,7 +261,7 @@ export default {
const timeEfficiencyList = []
const oeeList = []
const teepList = []
- this.rateList.map(item => {
+ this.rateList.map((item) => {
workRateList.push(item.workRate)
stopRateList.push(item.stopRate)
downRateList.push(item.downRate)
@@ -283,6 +284,18 @@ export default {
// 重新绘制图形
renderGraph() {
+ if (this.dataType === i18n.t('eq.time')) {
+ this.config.yAxis = {
+ type: 'value',
+ name: i18n.t('yAxisTime')
+ }
+ } else {
+ this.config.yAxis = {
+ type: 'value',
+ name: i18n.t('yAxisRate')
+ }
+ }
+ console.log('this.dataType', this.dataType)
console.log('latest config: ', JSON.stringify(this.config))
this.$nextTick(() => {
// this.chart.setOption(this.config)
diff --git a/src/views/modules/monitoring/equipmentGroup.vue b/src/views/modules/monitoring/equipmentGroup.vue
index 16f92a3..8d8e496 100644
--- a/src/views/modules/monitoring/equipmentGroup.vue
+++ b/src/views/modules/monitoring/equipmentGroup.vue
@@ -70,7 +70,7 @@ const tableConfigs = [
const addOrUpdateConfigs = {
type: 'dialog',
infoUrl: '/monitoring/equipmentGroup',
- fields: [{ name: 'name', required: true, label: i18n.t('eq.groupname') }, { name: 'code', required: true, label: i18n.t('eq.groupcode') }, 'remark'],
+ fields: [{ name: 'name', required: true, label: i18n.t('eq.groupname') }, { name: 'code', required: true, label: i18n.t('eq.groupcode'),api: '/monitoring/equipmentGroupAlarm/getCode' }, 'remark'],
operations: [
{ name: 'cancel', showAlways: true },
{ name: 'save', url: '/monitoring/equipmentGroup', permission: 'monitoring:equipmentgroup:save', showOnEdit: false },
diff --git a/src/views/modules/monitoring/equipmentHistoricalParameters.vue b/src/views/modules/monitoring/equipmentHistoricalParameters.vue
index 5ed69fe..dce0dab 100644
--- a/src/views/modules/monitoring/equipmentHistoricalParameters.vue
+++ b/src/views/modules/monitoring/equipmentHistoricalParameters.vue
@@ -1,16 +1,27 @@
-
-
- {{ $route.params.id }}
+
+
+
+
+ {{ equipmentName }}
+
+
+ {{ equipmentCode }}
+
-
+
@@ -21,11 +32,14 @@ import AddOrUpdate from '@/components/base-dialog/addOrUpdate'
import i18n from '@/i18n'
import BaseTable from '@/components/base-table'
import { pick } from 'lodash/object'
+import equipmentVue from './equipment.vue'
export default {
data() {
return {
calcMaxHeight,
+ equipmentName: null,
+ equipmentCode: null,
tableConfigs: [],
dataList: [],
dataListLoading: false,
@@ -42,12 +56,15 @@ export default {
mouted() {
this.getDataList()
},
+ created(){
+ // console.log('params',this.$route.params)
+ },
methods: {
// destroy dialog
handleDestroyDialog() {
setTimeout(() => {
- this.addOrUpdateVisible= false
- }, /** after dialog animated */ 200);
+ this.addOrUpdateVisible = false
+ }, /** after dialog animated */ 200)
},
// 获取数据列表
getDataList() {
@@ -56,6 +73,7 @@ export default {
url: this.$http.adornUrl(`/monitoring/equipmentValueMonitor/runLog/${this.$route.params.id}`),
method: 'get'
}).then(({ data: res }) => {
+ console.log('res',res)
if (
res &&
res.code === 0 &&
@@ -66,6 +84,9 @@ export default {
res.data[0].data &&
res.data[0].data.length > 0
) {
+ this.equipmentName = res.data[0].data[0].equName
+ this.equipmentCode = res.data[0].data[0].equCode
+ console.log(this.equipmentName)
this.setTableProps(res.data[0].nameData)
this.setTableData(res.data[0].data)
} else {
@@ -82,19 +103,19 @@ export default {
},
{ prop: 'time', name: this.$t('ti'), filter: timeFilter },
{ prop: 'plcCode', name: this.$t('plcCode') },
- { prop: 'equName', name: this.$t('equName') },
- { prop: 'equCode', name: this.$t('equCode') },
+ // { prop: 'equName', name: this.$t('equName') },
+ // { prop: 'equCode', name: this.$t('equCode') },
// ...['数值1', '数值2', '数值3'].map(name => {
// return { prop: name, name }
// })
- ...Array.from(new Set(nameData.map(item => item.name))).map(name => ({ prop: name, name }))
+ ...Array.from(new Set(nameData.map((item) => item.name))).map((name) => ({ prop: name, name }))
]
},
setTableData(data) {
- this.dataList = data.map(item => {
+ this.dataList = data.map((item) => {
const rowItem = pick(item, ['time', 'plcCode', 'equName', 'equCode'])
if (item.data && item.data.length > 0) {
- item.data.forEach(param => {
+ item.data.forEach((param) => {
rowItem[param.dynamicName] = param.dynamicValue
})
}
diff --git a/src/views/modules/monitoring/equipmentTimesequence.vue b/src/views/modules/monitoring/equipmentTimesequence.vue
index f258597..ed44d5b 100644
--- a/src/views/modules/monitoring/equipmentTimesequence.vue
+++ b/src/views/modules/monitoring/equipmentTimesequence.vue
@@ -35,7 +35,7 @@
- {{ $t('pl.add') }}
+ {{ $t('pl.add2') }}
@@ -489,8 +489,8 @@ export default {
const condition = {
startTime,
endTime,
- productlines: [this.dataForm.productlines],
- wsId: this.dataForm.wsId,
+ // productlines: [this.dataForm.productlines],
+ // wsId: this.dataForm.wsId,
eqId: this.eqId
}
diff --git a/src/views/modules/monitoring/equipmentType.vue b/src/views/modules/monitoring/equipmentType.vue
index a18220b..88569b9 100644
--- a/src/views/modules/monitoring/equipmentType.vue
+++ b/src/views/modules/monitoring/equipmentType.vue
@@ -72,7 +72,7 @@ const addOrUpdateConfigs = {
fields: [
{ name: 'name', required: true, label: i18n.t('eq.type') },
{ name: 'code', required: true, label: i18n.t('eq.typecode'), api: '/monitoring/equipmentType/getCode' },
- { name: 'parentId', label: i18n.t('eq.parent'), type: 'cascader', props: { label: 'name', value: 'id', checkStrictly: true, emitPath: false }, options: [] },
+ // { name: 'parentId', label: i18n.t('eq.parent'), type: 'cascader', props: { label: 'name', value: 'id', checkStrictly: true, emitPath: false }, options: [] },
'remark'
],
operations: [
@@ -133,16 +133,16 @@ export default {
},
// 获取设备类型树形数据
getTreeEquipmentType() {
- this.$http({
- url: this.$http.adornUrl('/monitoring/equipmentType/getTree'),
- method: 'post'
- }).then(({ data: res }) => {
- if (res && res.code === 0 && res.data.length) {
- this.addOrUpdateConfigs.fields.find(item => item.name === 'parentId').options = res.data
- } else {
- this.addOrUpdateConfigs.fields.find(item => item.name === 'parentId').options.splice(0)
- }
- })
+ // this.$http({
+ // url: this.$http.adornUrl('/monitoring/equipmentType/getTree'),
+ // method: 'post'
+ // }).then(({ data: res }) => {
+ // if (res && res.code === 0 && res.data.length) {
+ // this.addOrUpdateConfigs.fields.find(item => item.name === 'parentId').options = res.data
+ // } else {
+ // this.addOrUpdateConfigs.fields.find(item => item.name === 'parentId').options.splice(0)
+ // }
+ // })
},
// 获取数据列表
getDataList() {
diff --git a/src/views/modules/monitoring/product.vue b/src/views/modules/monitoring/product.vue
index 4f47198..2e27476 100644
--- a/src/views/modules/monitoring/product.vue
+++ b/src/views/modules/monitoring/product.vue
@@ -143,7 +143,9 @@ const addOrUpdateConfigs = {
relatedField: 'productId',
tableConfigs: [
{ type: 'index', width: 100, name: i18n.t('index') },
- { prop: 'createTime', name: i18n.t('createTime'), filter: (val) => (val ? moment(val).format('YYYY-MM-DD hh:mm:ss') : '-') },
+ // 12小时制的时间
+ // { prop: 'createTime', name: i18n.t('createTime'), filter: (val) => (val ? moment(val).format('YYYY-MM-DD hh:mm:ss') : '-') },
+ { prop: 'createTime', name: i18n.t('createTime'), filter: timeFilter },
{ prop: 'name', name: i18n.t('attrName'), formField: true, rules: [{ required: true, message: i18n.t('required'), trigger: 'blur' }] },
{ prop: 'code', name: i18n.t('attrValue'), formField: true },
{ prop: 'operations', name: i18n.t('handle'), fixed: 'right', width: 180, subcomponent: TableOperateComponent, options: ['edit', 'delete'] }
diff --git a/src/views/modules/monitoring/qualityInspectionBoxBtn.vue b/src/views/modules/monitoring/qualityInspectionBoxBtn.vue
index 0f9b60b..8af5a87 100644
--- a/src/views/modules/monitoring/qualityInspectionBoxBtn.vue
+++ b/src/views/modules/monitoring/qualityInspectionBoxBtn.vue
@@ -38,7 +38,7 @@
v-if="addOrUpdateVisible"
ref="addOrUpdate"
:configs="addOrUpdateConfigs"
- @refreshDataList="getDataList"
+ @refreshDataList="addSuccess"
@select-change="handleDialogSelectChange"
@destory-dialog="handleDestroyDialog" />
@@ -92,7 +92,7 @@ const addOrUpdateConfigs = {
fields: [
// { name: 'productionId', label: i18n.t('eq.name'), required: true },
{ name: 'productionId', label: i18n.t('pl.title'), required: true, type: 'select', options: [], relatedField: 'sectionId' },
- { name: 'sectionId', label: i18n.t('ws.title'), required: true, type: 'select', options: [] },
+ { name: 'sectionId', label: i18n.t('ws.title'), required: true, type: 'select', options: [], isDisabled: true },
{ name: 'model', label: i18n.t('andeng.btnBoxModel') },
{
// name: 'keyValue',
@@ -215,6 +215,7 @@ export default {
methods: {
// destroy dialog
handleDestroyDialog() {
+ this.$set(this.addOrUpdateConfigs.fields[1], 'isDisabled', true)
setTimeout(() => {
this.addOrUpdateVisible = false
}, /** after dialog animated */ 200)
@@ -332,8 +333,7 @@ export default {
this.addOrUpdateConfigs.fields.forEach((item) => {
// console.log('item',item)
// console.log('res',res)
- if (item.name === 'inspectionDetContent')
- item.options = res.data.list.map((item) => ({ label: item.content, value: item.content, inspectionDetId: item.code }))
+ if (item.name === 'inspectionDetContent') item.options = res.data.list.map((item) => ({ label: item.content, value: item.content, inspectionDetId: item.code }))
// console.log('item',item)
})
} else {
@@ -359,10 +359,19 @@ export default {
this.dataListSelections = val
},
// 对话框里的某个选择改变了
- handleDialogSelectChange({ name, id }) {
+ async handleDialogSelectChange({ name, id }) {
switch (name) {
case 'productionId':
- this.getWsList(id)
+ // this.getWsList(id)
+ if (name === 'productionId') {
+ // 如果选择了产线,就依据此更新工单的选项
+ if (id) {
+ this.$set(this.addOrUpdateConfigs.fields[1], 'isDisabled', false)
+ } else {
+ this.$set(this.addOrUpdateConfigs.fields[1], 'isDisabled', true)
+ }
+ await this.getWsList(id)
+ }
case 'inspectionDetContent':
// this.dataForm.inspectionDetId = id
// console.log(id)
@@ -377,6 +386,11 @@ export default {
console.log('addOrUpdateConfigs', this.addOrUpdateConfigs.fields)
}
},
+ addSuccess() {
+ this.getDataList()
+ this.$set(this.addOrUpdateConfigs.fields[1], 'options', [])
+ this.$set(this.addOrUpdateConfigs.fields[1], 'isDisabled', true)
+ },
handleOperations({ type, data: id }) {
switch (type) {
case 'view-detail':
diff --git a/src/views/modules/monitoring/qualityInspectionRecord.vue b/src/views/modules/monitoring/qualityInspectionRecord.vue
index 789094b..bfbf83a 100644
--- a/src/views/modules/monitoring/qualityInspectionRecord.vue
+++ b/src/views/modules/monitoring/qualityInspectionRecord.vue
@@ -3,7 +3,7 @@
{{ $t('pl.title') }}
-
+
@@ -11,7 +11,7 @@
{{ $t('inspect.det') }}
-
+
@@ -22,7 +22,7 @@
+ @clickTopBtn="clickTopBtn" />
+ layout="total, sizes, prev, pager, next, jumper">
@@ -49,10 +47,9 @@
v-if="addOrUpdateVisible"
ref="addOrUpdate"
:configs="addOrUpdateConfigs"
- @refreshDataList="getDataList"
+ @refreshDataList="addSuccess"
@destory-dialog="handleDestroyDialog"
- @select-change="handleSelectChange"
- />
+ @select-change="handleSelectChange" />
@@ -87,7 +84,7 @@ const tableConfigs = [
// { prop: 'productionId', name: i18n.t('pl.id') },
// { prop: 'sectionId', name: i18n.t('ws.id') },
{ prop: 'checkPerson', name: i18n.t('inspect.people') },
- { prop: 'source', name: i18n.t('source'), filter: val => ({ 1: i18n.t('manual'), 2: i18n.t('auto') }[val]) },
+ { prop: 'source', name: i18n.t('source'), filter: (val) => ({ 1: i18n.t('manual'), 2: i18n.t('auto') }[val]) },
{ prop: 'explainText', name: i18n.t('desc') },
{ prop: 'remark', name: i18n.t('remark') },
{ prop: 'operations', name: i18n.t('handle'), fixed: 'right', width: 180, subcomponent: TableOperateComponent, options: ['edit', 'delete'] }
@@ -98,8 +95,23 @@ const addOrUpdateConfigs = {
infoUrl: '/monitoring/qualityInspectionRecord',
fields: [
{ name: 'checkTime', required: true, label: i18n.t('inspect.time'), type: 'date', props: { style: 'width: 100%', type: 'datetime' }, placeholder: i18n.t('hints.checktime') },
+ // {
+ // name: 'checkTime',
+ // required: true,
+ // label: i18n.t('inspect.time'),
+ // type: 'date',
+ // props: {
+ // 'type': 'date', // element-ui 的配置
+ // 'placeholder': i18n.t('hints.date'),
+ // 'value-format': 'yyyy-MM-ddTHH:mm:ss',
+ // 'style': {
+ // width: '100%'
+ // }
+ // },
+ // placeholder: i18n.t('hints.checktime')
+ // },
{ name: 'productionId', required: true, label: i18n.t('pl.title'), type: 'select', options: [] },
- { name: 'sectionId', required: true, label: i18n.t('ws.title'), type: 'select', options: [] },
+ { name: 'sectionId', required: true, label: i18n.t('ws.title'), type: 'select', options: [] , isDisabled: true },
{
name: 'source',
label: i18n.t('source'),
@@ -155,15 +167,29 @@ export default {
methods: {
// destroy dialog
handleDestroyDialog() {
+ this.$set(this.addOrUpdateConfigs.fields[2], 'isDisabled', true)
setTimeout(() => {
this.addOrUpdateVisible = false
}, /** after dialog animated */ 200)
},
// handle
async handleSelectChange({ name, id }) {
+ // console.log('this',this)
if (name === 'productionId') {
// 如果选择了产线,就依据此更新工单的选项
+ if (id) {
+ this.$set(this.addOrUpdateConfigs.fields[2], 'isDisabled', false)
+ } else {
+ this.$set(this.addOrUpdateConfigs.fields[2], 'isDisabled', true)
+ }
await this.getWorkSections(id)
+
+ }
+ if (name === 'sectionId') {
+ // 如果选择了产线,就依据此更新工单的选项
+ // console.log('nihao',id);
+ // console.log('nihao2',this.addOrUpdateConfigs.fields[1].options == []);
+ // console.log('nihao2',this.addOrUpdateConfigs.fields[1].options );
}
},
// 获取检测内容
@@ -178,9 +204,9 @@ export default {
})
}).then(({ data: res }) => {
console.log('insdet:', res)
- const insDetOpt = this.addOrUpdateConfigs.fields.find(item => item.name === 'inspectionDetId')
+ const insDetOpt = this.addOrUpdateConfigs.fields.find((item) => item.name === 'inspectionDetId')
if (insDetOpt) {
- insDetOpt.options = res.data.list.map(item => ({ value: item.id, label: item.content })) || []
+ insDetOpt.options = res.data.list.map((item) => ({ value: item.id, label: item.content })) || []
}
})
},
@@ -190,11 +216,11 @@ export default {
url: this.$http.adornUrl('/monitoring/productionLine/list'),
method: 'get'
}).then(({ data: res }) => {
- const plOpt = this.addOrUpdateConfigs.fields.find(item => item.name === 'productionId')
+ const plOpt = this.addOrUpdateConfigs.fields.find((item) => item.name === 'productionId')
if (plOpt) {
- plOpt.options = res.data.map(item => ({ value: item.id, label: item.name })) || []
+ plOpt.options = res.data.map((item) => ({ value: item.id, label: item.name })) || []
}
- this.plList = res.data.map(item => ({ value: item.id, label: item.name })) || []
+ this.plList = res.data.map((item) => ({ value: item.id, label: item.name })) || []
})
},
// 获取工段
@@ -215,15 +241,23 @@ export default {
if (res.data.total === 0) {
this.$message.error(i18n.t('errors.nosection'))
} else {
+ // console.log('da',this.dataForm);
this.$message.success(i18n.t('errors.numsection', { num: res.data.total }))
}
}
- const wsOpt = this.addOrUpdateConfigs.fields.find(item => item.name === 'sectionId')
+ const wsOpt = this.addOrUpdateConfigs.fields.find((item) => item.name === 'sectionId')
+ // const wsOpt2 = this.addOrUpdateConfigs.fields.find((item) => item.name === 'productionId')
+ // console.log('wsOpt',wsOpt);
if (wsOpt) {
- wsOpt.options = res.data.list.map(item => ({ value: item.id, label: item.name })) || []
+ wsOpt.options = res.data.list.map((item) => ({ value: item.id, label: item.name })) || []
}
})
},
+ addSuccess() {
+ this.getDataList()
+ this.$set(this.addOrUpdateConfigs.fields[2], 'options', [])
+ this.$set(this.addOrUpdateConfigs.fields[2], 'isDisabled', true)
+ },
// 获取数据列表
getDataList() {
this.addOrUpdateVisible = false
@@ -245,6 +279,7 @@ export default {
method: 'get',
params: this.$http.adornParams(queryParams)
}).then(({ data }) => {
+ // console.log('data', data)
if (data && data.code === 0) {
this.dataList = data.data.list
this.totalPage = data.data.total
@@ -295,7 +330,7 @@ export default {
deleteHandle(id) {
var ids = id
? [id]
- : this.dataListSelections.map(item => {
+ : this.dataListSelections.map((item) => {
return item.id
})
this.$confirm(`${i18n.t('prompt.info', { handle: id ? i18n.t('delete').toLowerCase() : i18n.t('deleteBatch').toLowerCase() })}`, i18n.t('prompt.title'), {
diff --git a/src/views/modules/monitoring/realtimeEquipment.vue b/src/views/modules/monitoring/realtimeEquipment.vue
index 848f6fe..3093122 100644
--- a/src/views/modules/monitoring/realtimeEquipment.vue
+++ b/src/views/modules/monitoring/realtimeEquipment.vue
@@ -2,7 +2,7 @@
* @Author: lb
* @Date: 2022-06-22 14:00:17
* @LastEditors: fzq
- * @LastEditTime: 2023-01-03 10:18:14
+ * @LastEditTime: 2023-02-02 17:19:10
* @Description: 设备生产实时数据
-->
@@ -130,7 +130,7 @@ export default {
if (obj.recordTime) {
// 如果 obj.recordTime 是有效的
this.tableProps.push({
- label: moment(obj.recordTime).format('YYYY-MM-DD HH:mm:ss'),
+ label: moment(obj.recordTime).format('YYYY-MM-DD HH')+ moment(obj.recordTime).add(1,'hours').format('-HH')+i18n.t('hourTime'),
children: [
{ prop: obj.recordTime + '-inputNum', label: i18n.t('realtime.in') },
{ prop: obj.recordTime + '-outputNum', label: i18n.t('realtime.out') },
diff --git a/src/views/modules/monitoring/realtimeProductLine.vue b/src/views/modules/monitoring/realtimeProductLine.vue
index 848238f..30d5b9d 100644
--- a/src/views/modules/monitoring/realtimeProductLine.vue
+++ b/src/views/modules/monitoring/realtimeProductLine.vue
@@ -1,8 +1,8 @@
@@ -109,7 +109,7 @@ export default {
// Step2: 设置动态props
if (!this.dynamicPropSet) {
this.tableProps.push({
- label: moment(obj.recordTime).format('YYYY-MM-DD HH:mm:ss'),
+ label: moment(obj.recordTime).format('YYYY-MM-DD HH')+ moment(obj.recordTime).add(1,'hours').format('-HH')+i18n.t('hourTime'),
children: [
{ prop: obj.recordTime + '-inputNum', label: i18n.t('realtime.in') },
{ prop: obj.recordTime + '-outputNum', label: i18n.t('realtime.out') },
diff --git a/src/views/modules/monitoring/realtimeQualityInspection.vue b/src/views/modules/monitoring/realtimeQualityInspection.vue
index 955046d..568f5dc 100644
--- a/src/views/modules/monitoring/realtimeQualityInspection.vue
+++ b/src/views/modules/monitoring/realtimeQualityInspection.vue
@@ -138,14 +138,14 @@ export default {
// 保存为 props
for (const key of sortedTime) {
// const prop = { label: key, children: [] }
- const prop = { label: moment(key).format('YYYY-MM-DD HH:mm:ss'), children: [] }
+ const prop = { label: moment(key).format('YYYY-MM-DD HH')+ moment(key).add(1,'hours').format('-HH')+i18n.t('hourTime'), children: [] }
for (const subKey in timeMap[key]) {
prop.children.push({ label: subKey, prop: key + subKey })
}
dynamicPropNames.push(prop)
}
- return [{ prop: 'checkType', label: i18n.t('inspect.type'), isFixed: true }, ...dynamicPropNames]
+ return [{ prop: 'checkType', label: i18n.t('inspect.det'), isFixed: true }, ...dynamicPropNames]
}
}
}
diff --git a/src/views/modules/monitoring/workShopSection.vue b/src/views/modules/monitoring/workShopSection.vue
index 5de8ff8..35c56bd 100644
--- a/src/views/modules/monitoring/workShopSection.vue
+++ b/src/views/modules/monitoring/workShopSection.vue
@@ -75,7 +75,7 @@ const addOrUpdateConfigs = {
fields: [
{ name: 'name', required: true, label: i18n.t('ws.name') },
{ name: 'code', required: true, label: i18n.t('ws.code'), api: '/monitoring/workshopSection/getCode' },
- { name: 'productionLineId', label: i18n.t('ws.belong'), type: 'select', options: [] },
+ { name: 'productionLineId', required: true, label: i18n.t('ws.belong'), type: 'select', options: [] },
'description',
'remark'
],
diff --git a/src/views/modules/monitoring/workshopSectionDialog.vue b/src/views/modules/monitoring/workshopSectionDialog.vue
index af7464c..db912b0 100644
--- a/src/views/modules/monitoring/workshopSectionDialog.vue
+++ b/src/views/modules/monitoring/workshopSectionDialog.vue
@@ -124,7 +124,8 @@ export default {
},
dataFormRules: {
name: [{ required: true, message: i18n.t('validate.required'), trigger: 'blur' }],
- code: [{ required: true, message: i18n.t('validate.required'), trigger: 'blur' }]
+ code: [{ required: true, message: i18n.t('validate.required'), trigger: 'blur' }],
+ productionLineId: [{ required: true, message: i18n.t('validate.required'), trigger: 'blur' }]
},
limit: 5,
page: 1,
diff --git a/src/views/modules/sys/dict-type.vue b/src/views/modules/sys/dict-type.vue
index 9689f71..98bafe3 100644
--- a/src/views/modules/sys/dict-type.vue
+++ b/src/views/modules/sys/dict-type.vue
@@ -17,9 +17,9 @@
{{ $t('query') }}
-
+
{{ $t('deleteBatch') }}
diff --git a/src/views/modules/sys/user-add-or-update.vue b/src/views/modules/sys/user-add-or-update.vue
index f62ed34..167d95b 100644
--- a/src/views/modules/sys/user-add-or-update.vue
+++ b/src/views/modules/sys/user-add-or-update.vue
@@ -105,7 +105,8 @@ export default {
confirmPassword: [{ validator: validateConfirmPassword, trigger: 'blur' }],
realName: [{ required: true, message: this.$t('validate.required'), trigger: 'blur' }],
email: [{ validator: validateEmail, trigger: 'blur' }],
- mobile: [{ validator: validateMobile, trigger: 'blur' }],
+ // 解除手机号输入限制
+ // mobile: [{ validator: validateMobile, trigger: 'blur' }],
roleIdList: [{ required: true, message: '至少选择一个角色', trigger: 'change' }]
}
}
diff --git a/src/views/modules/sys/user.vue b/src/views/modules/sys/user.vue
index c487157..1645337 100644
--- a/src/views/modules/sys/user.vue
+++ b/src/views/modules/sys/user.vue
@@ -4,7 +4,7 @@
* @Author: fzq
* @Date: 2022-11-25 09:51:46
* @LastEditors: fzq
- * @LastEditTime: 2023-01-13 09:06:52
+ * @LastEditTime: 2023-02-02 15:36:55
-->
@@ -58,7 +58,7 @@
{{ $t('user.status1') }}
-
+
{{ $t('update') }}