@@ -0,0 +1,281 @@ | |||
<!-- | |||
* @Author: zwq | |||
* @Date: 2021-11-18 14:16:25 | |||
* @LastEditors: DY | |||
* @LastEditTime: 2023-11-11 20:33:12 | |||
* @Description: | |||
--> | |||
<template> | |||
<div class="alarm-handle"> | |||
<DialogForm | |||
ref="orderForm" | |||
key="orderForm" | |||
v-model="orderForm" | |||
:disabled="readOnly" | |||
:has-files="false" | |||
label-position="top" | |||
:rows="orderFormRows" /> | |||
<small-title style="margin: 16px 0" :no-padding="true" size="sm"> | |||
处理方式 | |||
</small-title> | |||
<DialogForm | |||
key="handleMethodForm" | |||
ref="handleMethodForm" | |||
v-model="handleMethodForm" | |||
:disabled="readOnly" | |||
:has-files="true" | |||
label-position="top" | |||
:rows="handleMethodFormRows" /> | |||
</div> | |||
</template> | |||
<script> | |||
import SmallTitle from './SmallTitle'; | |||
import { getworkerAll } from '@/api/base/materialUseLog'; | |||
import Editor from '@/components/Editor'; | |||
import DialogForm from '@/components/DialogForm'; | |||
export default { | |||
name: 'AlarmHandle', | |||
props: ['readOnly', 'logId'], | |||
components: { SmallTitle, DialogForm, Editor }, | |||
data() { | |||
return { | |||
orderForm: { | |||
id: null, | |||
equipment: null, | |||
createTime: null, | |||
alarmContent: null, | |||
alarmValue: null, | |||
// 缺少报警编号字段, 用 alarmValue 代替 | |||
}, | |||
orderFormRows: [ | |||
[ | |||
{ | |||
input: true, | |||
label: '设备编码', | |||
prop: 'equipment', | |||
}, | |||
{ | |||
datetime: true, | |||
label: '报警时间', | |||
prop: 'createTime', | |||
}, | |||
{ | |||
input: true, | |||
label: '报警编号', | |||
prop: 'alarmValue', | |||
}, | |||
{ | |||
input: true, | |||
label: '报警内容', | |||
prop: 'alarmContent', | |||
}, | |||
], | |||
], | |||
handleMethodFormRows: [ | |||
[ | |||
{ | |||
select: true, | |||
label: '处理人', | |||
prop: 'hander', | |||
url: '/base/core-worker/listAll', | |||
rules: [ | |||
{ required: true, message: '类型名称不能为空', trigger: 'blur' }, | |||
], | |||
}, | |||
{ | |||
upload: true, | |||
label: '上传资料', | |||
prop: 'files', | |||
}, | |||
], | |||
[ | |||
{ | |||
key: 'handerMode', | |||
subcomponent: Editor, | |||
label: '处理方式', | |||
prop: 'handerMode', | |||
bind: { | |||
'min-height': 200, | |||
}, | |||
}, | |||
], | |||
], | |||
handleMethodForm: { | |||
id: null, | |||
logId: null, | |||
hander: null, | |||
handerMode: null, | |||
remark: null, | |||
files: [ | |||
// { | |||
// fileName: '', | |||
// fileType: '', | |||
// fileUrl: '' | |||
// } | |||
], | |||
}, | |||
workersList: [], | |||
}; | |||
}, | |||
mounted() { | |||
this.getDict().then(() => { | |||
this.init(); | |||
}); | |||
}, | |||
methods: { | |||
/** | |||
* 获取员工数据 | |||
*/ | |||
async getDict() { | |||
const workerRes = await getworkerAll(); | |||
this.workersList = workerRes.data; | |||
}, | |||
/** | |||
* 初始化 | |||
*/ | |||
async init() { | |||
this.initTop(); | |||
this.initDown(); | |||
}, | |||
/** | |||
* 初始化上部表单 | |||
*/ | |||
async initTop() { | |||
if (!this.logId) { | |||
this.$msgError('缺少报警日志id'); | |||
this.$emit('close'); | |||
} | |||
const url = '/base/equipment-alarm-log/get'; | |||
const { data, code } = await this.$axios({ | |||
url: url, | |||
method: 'get', | |||
params: { | |||
id: this.logId, | |||
}, | |||
}); | |||
if (code == 0) { | |||
this.orderForm = data; | |||
} | |||
}, | |||
/** | |||
* 初始化下部表单 | |||
*/ | |||
async initDown() { | |||
if (!this.logId) { | |||
this.$msgError('缺少报警日志id'); | |||
this.$emit('close'); | |||
} | |||
const url = '/base/equipment-alarm-hand/get'; | |||
const { data, code } = await this.$axios({ | |||
url: url, | |||
method: 'get', | |||
params: { | |||
id: this.logId, | |||
}, | |||
}); | |||
if (code == 0) { | |||
this.handleMethodForm = data; | |||
} | |||
}, | |||
/** | |||
* 更新表单 | |||
*/ | |||
async submit() { | |||
const result = await Promise.all([ | |||
await this.updateTop(), | |||
await this.updateHandleMethod(), | |||
]); | |||
if (result[0] == true && result[1] == true) { | |||
this.$modal.msgSuccess('更新成功'); | |||
this.$emit('refreshDataList'); | |||
} else { | |||
this.$modal.msgError('更新失败'); | |||
} | |||
}, | |||
/** | |||
* 更新下部表单 | |||
*/ | |||
async updateHandleMethod() { | |||
const url = '/base/equipment-alarm-hand'; | |||
const valid = await this.$refs.orderForm.validate(); | |||
if (!valid) { | |||
return false; | |||
} | |||
const { code, data } = await this.$axios({ | |||
url: url + (this.handleMethodForm.id ? '/update' : '/create'), | |||
method: this.handleMethodForm.id ? 'put' : 'post', | |||
data: { ...this.handleMethodForm, logId: this.logId }, | |||
}); | |||
if (code == 0) { | |||
return true; | |||
} | |||
return false; | |||
}, | |||
/** | |||
* 更新上部分表单 | |||
*/ | |||
async updateTop() { | |||
const url = '/base/equipment-alarm-log'; | |||
const valid = await this.$refs.handleMethodForm.validate(); | |||
if (!valid) { | |||
return false; | |||
} | |||
const { code, data } = await this.$axios({ | |||
url: url + '/update', | |||
method: 'put', | |||
data: this.orderForm, | |||
}); | |||
if (code == 0) { | |||
return true; | |||
} | |||
return false; | |||
}, | |||
// 表单提交 | |||
dataFormSubmit() { | |||
this.$refs['dataForm'].validate((valid) => { | |||
if (!valid) { | |||
return false; | |||
} | |||
if (this.file) { | |||
const temp = this.file.split(','); // 获取文件个数 | |||
let arry = []; | |||
temp.forEach((item) => { | |||
arry.push({ | |||
fileType: 2, | |||
fileUrl: item, | |||
}); | |||
}); | |||
this.dataForm.files = arry; | |||
} | |||
this.urlOptions.createURL(this.dataForm).then((response) => { | |||
this.$modal.msgSuccess('新增成功'); | |||
this.visible = false; | |||
this.$emit('refreshDataList'); | |||
}); | |||
}); | |||
}, | |||
}, | |||
}; | |||
</script> | |||
<style scoped> | |||
.alarm-handle { | |||
padding: 0; | |||
} | |||
.alarm-handle__method >>> .el-select { | |||
width: 100% !important; | |||
} | |||
</style> |
@@ -40,7 +40,7 @@ $pxls: (xl, 28px) (lg, 24px) (de, 20px) (md, 18px) (sm, 16px); | |||
$mgr: 8px; | |||
@each $size, $height in $pxls { | |||
.#{$size}-title { | |||
font-size: 18px; | |||
font-size: $height; | |||
line-height: $height; | |||
color: #000; | |||
font-weight: 500; | |||
@@ -53,7 +53,7 @@ $mgr: 8px; | |||
width: 4px; | |||
height: $height + 2px; | |||
border-radius: 1px; | |||
margin-right: $mgr; | |||
margin-right: 4px; | |||
background-color: #0b58ff; | |||
} | |||
} | |||
@@ -1,195 +0,0 @@ | |||
<!-- | |||
* @Author: zwq | |||
* @Date: 2021-11-18 14:16:25 | |||
* @LastEditors: DY | |||
* @LastEditTime: 2023-11-11 20:33:12 | |||
* @Description: | |||
--> | |||
<template> | |||
<div> | |||
<small-title | |||
style="margin: 16px 0; padding-left: 8px" | |||
:no-padding="true"> | |||
系统自带 | |||
</small-title> | |||
<el-form | |||
:model="dataForm1" | |||
ref="dataForm1" | |||
label-width="80px"> | |||
<el-row :gutter="20"> | |||
<el-col :span="12"> | |||
<el-form-item label="设备编码" prop="equipment"> | |||
<el-input | |||
v-model="dataForm1.equipment" | |||
disabled | |||
placeholder="请输入设备编码" /> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="12"> | |||
<el-form-item label="报警时间" prop="createTime"> | |||
<el-input | |||
v-model="dataForm1.createTime" | |||
disabled | |||
placeholder="请输入报警时间" /> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
<el-row :gutter="20"> | |||
<el-col :span="12"> | |||
<el-form-item label="报警编号" prop="code"> | |||
<!-- 接口缺参数 --> | |||
<el-input | |||
v-model="dataForm1.code" | |||
disabled | |||
placeholder="请输入报警编号" /> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="12"> | |||
<el-form-item label="报警内容" prop="alarmContent"> | |||
<el-input | |||
v-model="dataForm1.alarmContent" | |||
disabled | |||
placeholder="请输入报警内容" /> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
</el-form> | |||
<small-title | |||
style="margin: 16px 0; padding-left: 8px" | |||
:no-padding="true"> | |||
处理方式 | |||
</small-title> | |||
<el-form | |||
:model="dataForm" | |||
:rules="dataRule" | |||
ref="dataForm" | |||
label-width="80px"> | |||
<el-form-item label="处理人" prop="hander"> | |||
<el-select | |||
v-model="dataForm.hander" | |||
:disabled="isdetail" | |||
placeholder="请选择处理人" | |||
> | |||
<el-option | |||
v-for="dict in workersList" | |||
:key="dict.id" | |||
:label="dict.name" | |||
:value="dict.name" /> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item label="处理方式" prop="handerMode"> | |||
<editor v-model="dataForm.handerMode" :read-only="isdetail" :min-height="200"/> | |||
</el-form-item> | |||
<el-form-item label="附件" prop="file"> | |||
<!-- <el-input | |||
v-model="dataForm.file" | |||
type="textarea" | |||
min-size="3" | |||
placeholder="请输入处理方式" /> --> | |||
<FileUpload v-model="file" :disabled="isdetail" /> | |||
</el-form-item> | |||
</el-form> | |||
</div> | |||
</template> | |||
<script> | |||
import basicAdd from '../../../../core/mixins/basic-add'; | |||
import SmallTitle from './SmallTitle'; | |||
import { getworkerAll } from "@/api/base/materialUseLog"; | |||
import { createAlarmHand, getAlarmLog } from '@/api/equipment/base/alarm/records'; | |||
import FileUpload from "@/components/FileUpload"; | |||
import Editor from "@/components/Editor"; | |||
export default { | |||
components: { SmallTitle, FileUpload, Editor }, | |||
mixins: [basicAdd], | |||
data() { | |||
return { | |||
urlOptions: { | |||
createURL: createAlarmHand, | |||
infoURL: getAlarmLog, | |||
}, | |||
dataForm1: { | |||
id: undefined, | |||
equipment: undefined, | |||
createTime: undefined, | |||
alarmContent: undefined, | |||
code: undefined | |||
}, | |||
file: '', | |||
dataForm: { | |||
id: undefined, | |||
hander: undefined, | |||
handerMode: undefined | |||
}, | |||
isdetail: false, | |||
workersList: [], | |||
dataRule: { | |||
hander: [{ required: true, message: "处理人不能为空", trigger: "change" }], | |||
handerMode: [{ required: true, message: "处理方式不能为空", trigger: "blur" }] | |||
} | |||
}; | |||
}, | |||
mounted() { | |||
this.getDict() | |||
console.log('我看看', this.dataForm) | |||
}, | |||
methods: { | |||
async getDict() { | |||
// 获得员工 | |||
const workerRes = await getworkerAll() | |||
this.workersList = workerRes.data | |||
}, | |||
// 表单提交 | |||
dataFormSubmit() { | |||
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; | |||
// } | |||
// 添加的提交 | |||
if (this.file) { | |||
const temp = this.file.split(',') // 获取文件个数 | |||
let arry = [] | |||
temp.forEach(item => { | |||
arry.push({ | |||
fileType: 2, | |||
fileUrl: item | |||
}) | |||
}) | |||
this.dataForm.files = arry | |||
} | |||
this.urlOptions.createURL(this.dataForm).then(response => { | |||
this.$modal.msgSuccess("新增成功"); | |||
this.visible = false; | |||
this.$emit("refreshDataList"); | |||
}); | |||
}); | |||
}, | |||
init(id, isdetail) { | |||
this.dataForm1.id = id || ""; | |||
this.isdetail = isdetail || false | |||
this.visible = true; | |||
this.$nextTick(() => { | |||
this.$refs["dataForm1"].resetFields(); | |||
this.$refs["dataForm"].resetFields(); | |||
if (this.dataForm1.id) { | |||
this.urlOptions.infoURL(id).then(response => { | |||
if (response.data) { | |||
this.dataForm1 = response.data; | |||
} | |||
}); | |||
} | |||
}); | |||
}, | |||
}, | |||
}; | |||
</script> |
@@ -45,20 +45,23 @@ | |||
:disabled="mode == 'detail'" | |||
:has-files="false" | |||
:rows="rows" /> --> | |||
<add-or-update | |||
ref="addOrUpdate" | |||
@refreshDataList="successSubmit" /> | |||
<AddOrUpdate | |||
v-if="open" | |||
ref="addOrUpdate" | |||
:read-only="readOnly" | |||
:log-id="chosedLogId" | |||
@close="cancel" | |||
@refreshDataList="successSubmit" /> | |||
</base-dialog> | |||
</div> | |||
</template> | |||
<script> | |||
import moment from 'moment'; | |||
import basicPageMixin from '@/mixins/lb/basicPageMixin'; | |||
import AddOrUpdate from './add-or-updata.vue' | |||
import { publicFormatter } from '@/utils/dict'; | |||
// const timeFilter = (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'); | |||
import AddOrUpdate from './AddOrUpdate.vue'; | |||
import moment from 'moment'; | |||
const timeFilter = (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'); | |||
const btn = { | |||
name: 'tableBtn', | |||
@@ -68,7 +71,10 @@ const btn = { | |||
}, | |||
methods: { | |||
handleClick() { | |||
this.$emit('emitData', { action: this.injectData.name, value: this.injectData }); | |||
this.$emit('emitData', { | |||
action: this.injectData.name, | |||
value: this.injectData, | |||
}); | |||
}, | |||
}, | |||
render: function (h) { | |||
@@ -80,14 +86,14 @@ const btn = { | |||
}, | |||
}; | |||
export default { | |||
name: 'Record', | |||
components: { AddOrUpdate }, | |||
mixins: [basicPageMixin], | |||
data() { | |||
return { | |||
readOnly: false, | |||
chosedLogId: false, | |||
searchBarKeys: ['equipmentName', 'recordTime'], | |||
tableBtn: [ | |||
// this.$auth.hasPermi('equipment:spare-parts-config:update') | |||
@@ -113,12 +119,16 @@ export default { | |||
{ prop: 'productionLine', label: '产线' }, | |||
{ prop: 'workshopSection', label: '工段' }, | |||
{ prop: 'equipment', label: '设备名称' }, | |||
{ prop: 'alarmGrade', label: '报警级别', filter: publicFormatter(this.DICT_TYPE.EQU_ALARM_LEVEL) }, | |||
{ prop: 'responsible', label: '报警时间' }, // 接口缺 | |||
{ prop: 'responsible1', label: '设备报警码' }, // 接口缺 | |||
{ | |||
prop: 'alarmGrade', | |||
label: '报警级别', | |||
filter: publicFormatter(this.DICT_TYPE.EQU_ALARM_LEVEL), | |||
}, | |||
{ prop: 'createTime', label: '报警时间', filter: timeFilter }, // 接口缺 | |||
{ prop: 'alarmCode', label: '设备报警码' }, // 接口缺 | |||
{ prop: 'alarmContent', label: '报警内容' }, | |||
{ prop: 'opt1', label: '处理记录', name: '查看', subcomponent: btn }, | |||
{ prop: 'opt2', label: '处理', name: '报警处理', subcomponent: btn }, // TODO: 是否换成按钮, 群里问 | |||
{ prop: 'opt2', label: '处理', name: '报警处理', subcomponent: btn }, // TODO: 是否换成按钮, 群里问 | |||
// { prop: 'remark', label: '备注' }, | |||
], | |||
searchBarFormConfig: [ | |||
@@ -135,8 +145,8 @@ export default { | |||
dateType: 'daterange', // datetimerange | |||
// format: 'yyyy-MM-dd HH:mm:ss', | |||
format: 'yyyy-MM-dd', | |||
// valueFormat: 'timestamp', | |||
valueFormat: 'yyyy-MM-dd HH:mm:ss', | |||
valueFormat: 'timestamp', | |||
// valueFormat: 'yyyy-MM-dd HH:mm:ss', | |||
rangeSeparator: '-', | |||
startPlaceholder: '开始日期', | |||
endPlaceholder: '结束日期', | |||
@@ -196,9 +206,10 @@ export default { | |||
pageSize: 10, | |||
lineId: null, | |||
equipmentId: null, | |||
recordTime: [] | |||
}, | |||
basePath: '/base/equipment-alarm-log', | |||
list: [] | |||
list: [], | |||
}; | |||
}, | |||
created() { | |||
@@ -206,21 +217,20 @@ export default { | |||
}, | |||
methods: { | |||
handleEmitFun(val) { | |||
console.log('你好', val) | |||
if (val.action === '报警处理') { | |||
// this.chosedLogId = val.value.alarmId; | |||
this.chosedLogId = val.value.id; | |||
// 报警处理 | |||
this.open = true | |||
this.title = '报警处理' | |||
this.$nextTick(() => { | |||
this.$refs.addOrUpdate.init(val.value.id); | |||
}); | |||
this.open = true; | |||
this.title = '报警处理'; | |||
this.readOnly = false; | |||
} else { | |||
// this.chosedLogId = val.value.alarmId; | |||
this.chosedLogId = val.value.id; | |||
// 查看 | |||
this.open = true | |||
this.title = '查看' | |||
this.$nextTick(() => { | |||
this.$refs.addOrUpdate.init(val.value.id, true); | |||
}); | |||
this.open = true; | |||
this.title = '查看'; | |||
this.readOnly = true; | |||
} | |||
}, | |||
/** 查询列表 */ | |||
@@ -234,9 +244,9 @@ export default { | |||
}); | |||
}, | |||
successSubmit() { | |||
this.cancel() | |||
this.getList() | |||
}, | |||
this.cancel(); | |||
this.getList(); | |||
}, | |||
/** 取消按钮 */ | |||
cancel() { | |||
this.open = false; | |||
@@ -282,7 +292,7 @@ export default { | |||
}, | |||
/** 提交按钮 */ | |||
submitForm() { | |||
this.$refs.addOrUpdate.dataFormSubmit() | |||
this.$refs.addOrUpdate.submit(); | |||
// this.$refs['form'].validate((valid) => { | |||
// if (!valid) { | |||
// return; | |||