projects/mes-test #133
281
src/views/equipment/base/alarm/Record/AddOrUpdate.vue
Normal file
281
src/views/equipment/base/alarm/Record/AddOrUpdate.vue
Normal file
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user