嘉禾二期设备管理
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

548 lines
15 KiB

<!-- 检定管理 -->
<template>
<basic-container>
<div class="main">
<SearchHeader
style="margin-left: -10px"
:searchForm="searchForm"
:searchText="searchText"
@searchHandle="searchHandle"
@addHandle="addHandle"
>
<el-select
class="inputHeight"
v-model="searchForm.status"
placeholder="请选择状态"
size="small"
clearable
>
<el-option
v-for="item in statusList"
:key="item.dictKey"
:label="item.dictValue"
:value="item.dictKey"
>
</el-option>
</el-select>
</SearchHeader>
<avue-crud
id="avue-id"
v-model="form"
:option="option"
:table-loading="loading"
:data="tableData"
:page.sync="page"
ref="crud"
:row-key="getRowKeys"
@selection-change="selectionChange"
@current-change="currentChange"
@size-change="sizeChange"
@row-save="rowSave"
@row-update="rowUpdate"
@row-del="rowDel"
>
<template slot-scope="{ row, index }" slot="menu">
<el-button @click="$refs.crud.rowEdit(row, index)">编辑</el-button>
<el-button @click="$refs.crud.rowDel(row, index)">删除</el-button>
<el-button type="primary" @click="testHandle(row, index)"
>检定</el-button
>
</template>
<template slot="menuForm">
<el-button size="small" @click="$refs.crud.closeDialog()"
>取消</el-button
>
<el-button size="small" @click="$refs.crud.rowSave()">确定</el-button>
</template>
<template slot-scope="{ row }" slot="status">
<span :style="{ color: row.status == 1 ? '#999' : '#EE922F' }"
>●{{ row.status | statusFl }}</span
>
</template>
</avue-crud>
</div>
<el-dialog
title="设备检定"
:visible.sync="dialogVisible"
width="920px"
class="custom el-custom"
>
<div>
<avue-form v-model="testObj" :option="testOption" @submit="submit">
<template slot="menuForm">
<el-button class="cus-cencel" size="small" @click="testCloseDialog"
>取 消</el-button
>
<el-button class="cus-confirm" size="small" @click="submit()"
>提 交</el-button
>
</template>
</avue-form>
</div>
</el-dialog>
<el-dialog
title="多项设备检定"
width="60%"
:visible.sync="selectdialogVisible"
:close-on-click-modal="false"
>
<div class="q_add">
<el-input
type="text"
v-model="verificationMechanism"
placeholder="检定机构"
style="width: 255px; margin-right: 20px"
></el-input>
<el-button @click="addDept" style="background-color: #1e60f5; color:#fff;">确认检定机构</el-button>
<el-input
style="width: 255px; margin: 0 20px"
type="text"
v-model="verificationInfo"
placeholder="检定情况"
></el-input>
<el-button @click="addReamrk" style="background-color: #1e60f5; color:#fff;">确认检定情况</el-button>
</div>
<el-table
:data="selectionList"
:row-style="{ height: '66px' }"
:header-cell-style="{
background: '#f6f8fa',
color: '#999999',
fontWeight: '400',
height: '66px',
}"
tooltip-effect="dark"
style="width: 100%; color: #333333"
>
<el-table-column
:align="left"
prop="code"
label="设备编号"
></el-table-column>
<el-table-column :align="left" prop="equipStatus" label="设备情况">
<template slot-scope="scope">
<el-select
v-model="scope.row.equipStatus"
placeholder="请选择设备情况"
>
<el-option
v-for="item in situationList"
:key="item.dictKey"
:label="item.dictValue"
:value="item.dictKey"
>
</el-option>
</el-select>
</template>
</el-table-column>
<el-table-column
:align="left"
prop="verificationMechanism"
label="设备机构"
>
<template slot-scope="scope">
<el-input
type="text"
v-model="scope.row.verificationMechanism"
placeholder="设备机构"
></el-input>
</template>
</el-table-column>
<el-table-column :align="left" prop="verificationTime" label="检定时间">
<template slot-scope="scope">
<el-date-picker
v-model="scope.row.verificationTime"
type="date"
placeholder="检定时间"
value-format="yyyy-MM-dd HH:mm:ss"
style="width: 99%"
>
</el-date-picker>
</template>
</el-table-column>
<el-table-column :align="left" prop="verificationInfo" label="检定情况">
<template slot-scope="scope">
<el-input
type="text"
v-model="scope.row.verificationInfo"
placeholder="检定情况"
></el-input>
</template>
</el-table-column>
</el-table>
<div class="footer">
<el-button class="cus-cencel" size="small" @click="cencel"> </el-button>
<el-button class="cus-confirm" size="small" @click="testSubmit" :loading="testSubmitLoading"
> </el-button
>
</div>
</el-dialog>
</basic-container>
</template>
<script>
import {
getList,
remove,
add,
update,
getStatus,
addTest,
getSituation,
verification
} from "@/api/capital/test.js";
import { dateFormat } from '@/util/date'
import { tableOption } from "@/const/capital/test.js";
let that;
export default {
data() {
return {
testSubmitLoading: false,
verificationMechanism: "",
verificationInfo: "",
selectionList: [],
selectdialogVisible: false,
// 检定
dialogVisible: false,
testObj: {
},
testOption: {
labelPosition: "top",
gutter: 60,
// 提交
submitBtn: false,
// 清空
emptyBtn: false,
// emptyBtn:true,//隐藏清空按钮
column: [
{
type: "input",
span: 8,
label: "设备编号",
prop: "code",
readonly: true,
},
{
type: "input",
label: "设备名称",
span: 8,
prop: "equipName",
rules: [{ required: true, message: "设备名称必须填写" }],
readonly: true,
},
{
type: "select",
label: "设备情况",
overHidden: true,
span: 8,
prop: "equipStatus",
dicUrl: "/api/blade-system/dict-biz/dictionary?code=test_equipment",
required: true,
props: {
label: "dictValue",
value: "dictKey",
},
rules: [{ required: true, message: "设备情况必须填写" }],
},
{
type: "input",
label: "检定机构",
span: 8,
prop: "verificationMechanism",
rules: [{ required: true, message: "请输入检定机构" }],
},
// {
// span: 8,
// hide: true,
// display: true,
// type: "select",
// overHidden: true,
// label: "检定人员",
// prop: "verificationUser",
// component: "wf-user-select",
// rules: [{ required: true, message: "请选择检定人员" }],
// },
{
label: "检定时间",
prop: "verificationTime",
span: 8,
align: "left",
overHidden: "true",
type: "date",
format: "yyyy-MM-dd",
valueFormat: "yyyy-MM-dd HH:mm:ss",
rules: [{ required: true, message: "请输入检定机构" }],
},
{
type: "textarea",
label: "检定情况",
span: 24,
prop: "verificationInfo",
overHidden: true,
},
],
},
// 状态
statusList: [],
// 查询
searchForm: {
equipName: "",
},
searchText: {
flag: 3,
addText: "批量检定",
},
// 表格
loading: false,
option: tableOption,
tableData: [],
page: {
pageSize: 10,
currentPage: 1,
total: 0,
},
// 从仪器设备传来的仪器设备对象
equipmentObj: {},
situationList: [],
};
},
filters: {
statusFl: (data) => {
for (const i in that.statusList) {
const element = that.statusList[i];
if (data == element.dictKey) {
return element.dictValue;
}
}
},
},
beforeCreate() {
that = this;
},
created() {
// 获取状态list
getStatus().then((res) => {
this.statusList = res.data.data;
});
getSituation().then((res) => {
this.situationList = res.data.data;
});
if (this.$route.query.row) {
this.equipmentObj = JSON.parse(this.$route.query.row);
this.form = Object.assign({
equipName: this.equipmentObj.name,
equipModel: this.equipmentObj.model,
manufacturerOrBrand: this.equipmentObj.manufacturerBrand,
status: "0",
code: this.equipmentObj.code,
enableTime: this.equipmentObj.enableDate,
saveById: this.equipmentObj.saveById,
warnBefore: 30,
cycle: "1",
instrumentId: String(this.equipmentObj.id)
});
Object.assign(this.searchForm, { instrumentId: String(this.equipmentObj.id) });
getList(this.page.currentPage, this.page.pageSize, this.searchForm).then(
(res) => {
let tempTotal = res.data.data.total;
if (tempTotal === 0) {
// 调起新增弹框
this.$refs.crud.rowAdd();
}
}
);
}
},
mounted() {
if (JSON.stringify(this.$store.state.client.testParams) !== "{}") {
this.searchForm = this.$store.state.client.testParams;
}
this.onLoad(this.page);
},
methods: {
// 填充机构数据
addDept() {
this.selectionList = this.selectionList.map((item) => {
return {
...item,
verificationMechanism: this.verificationMechanism,
};
});
this.verificationMechanism = "";
},
// 填充设备情况数据
addReamrk() {
this.selectionList = this.selectionList.map((item) => {
return {
...item,
verificationInfo: this.verificationInfo,
};
});
this.verificationInfo = "";
},
// 取消
cencel() {
this.selectdialogVisible = false;
},
testSubmit() {
this.testSubmitLoading = true
verification({verificationList: this.selectionList}).then(res => {
this.$message.success("批量检定成功!")
this.testSubmitLoading = false
this.selectdialogVisible = false
this.onLoad(this.page)
})
},
selectionChange(list) {
this.selectionList = list;
},
getRowKeys(row) {
return row.id;
},
// 检定-跳转检定记录
testHandle(row) {
this.testObj = { ...row };
this.testObj.equipStatus = "1"
this.testObj.verificationTime = dateFormat(new Date())
this.dialogVisible = true;
},
// 检定提交
submit() {
addTest(this.testObj).then((res) => {
this.$message.success("检定成功!");
this.dialogVisible = false;
this.$router.push({
path: "/repair/verificationRecord",
query: { row: JSON.stringify(this.testObj) },
});
this.testObj = {};
});
},
testCloseDialog() {
this.dialogVisible = false;
},
// 分页
currentChange(currentPage) {
this.page.currentPage = currentPage;
this.onLoad(this.page);
},
sizeChange(pagesize) {
this.page.pagesize = pagesize;
this.onLoad(this.page);
},
/**
* 列表查询
*/
onLoad(page, params = {}) {
this.loading = true;
getList(
page.currentPage,
page.pageSize,
Object.assign(params, this.searchForm)
).then((res) => {
const { total, records } = res.data.data;
this.page.total = total;
this.tableData = records;
this.loading = false;
});
},
/**
* 搜索组件
*/
searchHandle(item, index) {
this.searchForm.equipName = item.name;
this.page.currentPage = 1;
if (index === 1) {
this.searchForm = { equipName: "" };
this.onLoad(this.page);
} else {
this.onLoad(this.page, item);
}
this.$store.dispatch("changeSetting", {
title: "testParams",
form: this.searchForm,
});
},
// 新增弹框
addHandle() {
if (this.selectionList.length === 0) {
this.$message.warning("请选择勾选数据项!");
} else {
this.selectionList = this.selectionList.map((item) => {
return {
...item,
equipStatus: "1",
verificationTime: dateFormat(new Date()),
};
});
this.selectdialogVisible = true;
}
},
// 新增
rowSave(row, done, loading) {
add(row).then(
(res) => {
// 获取新增数据的相关字段
const data = res.data.data;
row.id = data.id;
// row.tenantId = data.tenantId
this.$message({ type: "success", message: "新增成功!" });
this.onLoad(this.page);
// 数据回调进行刷新
done(row);
},
(error) => {
window.console.log(error);
loading();
}
);
},
// 编辑
rowUpdate(row, index, done, loading) {
update(row).then(
() => {
this.$message({ type: "success", message: "修改成功!" });
this.onLoad(this.page);
// 数据回调进行刷新
done(row);
},
(error) => {
window.console.log(error);
loading();
}
);
},
// 行删除
rowDel(row, index) {
this.$confirm("此操作会删除该数据,且无法恢复,确定删除数据?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
remove(row.id).then((res) => {
this.$message.success("删除成功!");
this.onLoad(this.page);
});
});
},
},
};
</script>
<style lang="scss" scoped>
/deep/ .avue-crud__menu {
display: none;
}
.q_add {
display: flex;
margin: 20px 0;
}
.footer {
margin-top: 30px;
margin-bottom: 20px;
display: flex;
justify-content: flex-end;
}
</style>