projects/mes-zhp #418

Merged
juzi merged 4 commits from projects/mes-zhp into projects/mes-test 2025-01-08 16:21:21 +08:00
15 changed files with 172 additions and 163 deletions

View File

@ -78,3 +78,11 @@ export function deleteLogDet(id) {
method: 'delete'
})
}
export function getEqMaintainPlanPageData(query) {
return request({
url: '/base/equipment-maintain-plan-det/page',
method: 'get',
params: query
})
}

View File

@ -109,7 +109,9 @@ export default {
}
},
// 处理搜索栏按钮
handleSearchBarBtnClick(btn) {
handleSearchBarBtnClick(btn) {
console.log(btn);
// const keys = ['name', 'createTime']; // timeVal // 已被 searchBarKeys 替代
switch (btn.btnName) {
case 'search':

View File

@ -119,12 +119,12 @@ export default {
return {
searchBarKeys: ['groupId', 'equipmentName'],
tableBtn: [
this.$auth.hasPermi('equipment:bind-group:update')
? {
type: 'detail',
btnName: '查看报警',
}
: undefined,
// this.$auth.hasPermi('equipment:bind-group:update')
// ? {
// type: 'detail',
// btnName: '',
// }
// : undefined,
this.$auth.hasPermi('equipment:bind-group:update')
? {
type: 'edit',
@ -371,8 +371,8 @@ export default {
},
handleTableBtnClick({ data, type }) {
switch (type) {
case 'edit':
this.handleDetail(data, 'edit');
case 'edit':
this.handleUpdate(data)
break;
case 'delete':
this.handleDelete(data);
@ -397,7 +397,7 @@ export default {
this.reset();
this.open = true;
this.title = '添加设备与分组绑定';
},
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
@ -432,19 +432,19 @@ export default {
});
},
//
handleDetail(row, mode = 'detail') {
const { equipmentId, equipmentName, groupCode, groupId, groupName, id } =
row;
//
this.editMode = mode;
this.alarmForm.id = groupId;
this.alarmForm.equipmentGroupCode = groupCode;
this.alarmForm.equipmentGroupName = groupName;
this.editVisible = true;
this.$nextTick(() => {
this.$refs['drawer'].init();
});
},
// handleDetail(row, mode = 'detail') {
// const { equipmentId, equipmentName, groupCode, groupId, groupName, id } =
// row;
// //
// this.editMode = mode;
// this.alarmForm.id = groupId;
// this.alarmForm.equipmentGroupCode = groupCode;
// this.alarmForm.equipmentGroupName = groupName;
// this.editVisible = true;
// this.$nextTick(() => {
// this.$refs['drawer'].init();
// });
// },
/** 删除按钮操作 */
handleDelete(row) {
const id = row.id;

View File

@ -198,8 +198,8 @@ export default {
},
{
type: 'select',
label: '关联表编码',
placeholder: '请选择关联表编码',
label: '标识名称',
placeholder: '请选择标识名称',
param: 'plcId',
selectOptions: [],
filterable: true,

View File

@ -195,7 +195,9 @@ export default {
},
methods: {
/** 批量确认 */
async searchBarClicked(btn) {
async handleSearchBarBtnClick(btn) {
console.log(11111);
switch (btn.btnName) {
case 'batchConfirm':
if (this.$refs['waiting-list-table'].selectedPlan.length == 0) {
@ -258,7 +260,16 @@ export default {
res.code == 0 && this.$modal.msgSuccess('确认成功');
res.code != 0 && this.$modal.msgError('确认失败');
})
.catch(() => {});
.catch(() => { });
break;
case 'search':
this.getList()
break;
case 'add':
this.addOrUpdateVisible = true;
this.$nextTick(() => {
this.$refs.addOrUpdate.init();
});
break;
}
},

View File

@ -201,7 +201,7 @@ export default {
this.groupOptions =
res1.data.map((item) => {
item.label =
item.name + ' - ' + getDictDataLabel('workshop', item.roomNameDict);
item.name + (getDictDataLabel('workshop', item.roomNameDict) ? ' - ' + getDictDataLabel('workshop', item.roomNameDict) : '')
return item;
}) || [];
// const res = await getEquipmentAll()

View File

@ -29,9 +29,9 @@ export default {
},
created() {
},
mounted() {
this.getDataList()
},
// mounted() {
// this.getDataList()
// },
methods: {
// 获取数据列表
getDataList() {

View File

@ -39,7 +39,7 @@ export default {
const t = new Date();
const [y, m, d] = [t.getFullYear(), t.getMonth(), t.getDate()];
return {
searchBarKeys: ['equipmentName', 'createTime'],
searchBarKeys: ['equipmentTypeId'],
equipmentTypeList:[],
tableBtn: [
{
@ -124,7 +124,7 @@ export default {
created() {
this.initSearchBar()
this.getList();
},
},
methods: {
/** 查询列表 */
getList() {
@ -230,13 +230,14 @@ export default {
return;
}
//
this.post(this.form).then((response) => {
this.post(this.form).then((res) => {
console.log('res', res)
this.$modal.msgSuccess('新增成功');
this.open = false;
this.getList()
this.showDetailVisible = true
this.$nextTick(() => {
this.$refs.showDetail.init(this.form.equipmentTypeId)
this.$refs.showDetail.init(res.data)
})
});
});

View File

@ -100,9 +100,10 @@ export default {
// console.log(this.tableData)
},
getDataList(id) {
console.log(id)
this.dataListLoading = true;
this.queryParams.equipmentTypeId = id
console.log(id);
console.log(this.queryParams.equipmentTypeId)
this.urlOptions.getDataListURL(this.queryParams).then(response => {
this.tableData = response.data.list;
this.listQuery.total = response.data.total;

View File

@ -37,8 +37,8 @@
</el-form>
<div class="blue-title">保养内容</div>
<base-table v-loading="dataListLoading" :table-props="tableProps" :table-data="tableData">
<method-btn v-if="tableBtn.length" slot="handleBtn" :width="80" label="操作" :method-list="tableBtn"
@clickBtn="handleClick" />
<!-- <method-btn v-if="tableBtn.length" slot="handleBtn" :width="80" label="操作" :method-list="tableBtn"
@clickBtn="handleClick" /> -->
</base-table>
</div>
</el-drawer>

View File

@ -289,7 +289,7 @@ export default {
const id = row.id;
this.info({ id }).then((response) => {
this.form = response.data;
this.form.responsible = this.form.responsible ? this.form.responsible.split(',') : undefined
// this.form.responsible = this.form.responsible ? this.form.responsible.split(',') : undefined
this.open = true;
this.title = '修改备品备件配置';
});
@ -300,7 +300,7 @@ export default {
if (!valid) {
return;
}
this.form.responsible = this.form.responsible.join(',')
// this.form.responsible = this.form.responsible.join(',')/
//
if (this.form.id != null) {
this.put(this.form).then((response) => {

View File

@ -136,8 +136,8 @@ export default {
select: true,
label: '备件名称',
prop: 'productMaterialId',
url: '/base/core-product-material/listAll', // TODO:
// options: [],
// url: '/base/core-product-material/listAll', // TODO:
options: [],
bind: {
filterable: true,
clearable: false,
@ -404,19 +404,19 @@ export default {
.catch(() => {});
},
async getDict() {
const materRes = await getMaterialTree(); //
let typeId = materRes.data.find((item) => item.product === 2).id;
const listQuery = {
typeId: typeId,
};
const materData = await getMaterialList(listQuery);
this.rows[0][0].options = (materData.data || []).map((item) => ({
label: item.name,
value: item.id,
...item
}));
// const materRes = await getMaterialTree();
// let typeId = materRes.data.find((item) => item.product === 2);
// const listQuery = {
// typeId: typeId,
// };
const materData = await getMaterialList();
this.rows[0][0].options = (materData.data || []).filter(item => item.typeId === 3)
.map(item => ({ label: item.name, value: item.id,...item }))
console.log(this.rows[0][0].options);
},
updateDialogFormZ(val) {
updateDialogFormZ(val) {
// console.log(this.rows[0][0].options)
const selectData = this.rows[0][0].options.find(
(item) => item.id === val.productMaterialId
);

View File

@ -61,9 +61,9 @@ function getTodayStart(today) {
/** 颜色配置 */
const types = [
{ name: '运行', color: '#288AFF' },
{ name: '故障', color: '#FC9C91' },
{ name: '运行', color: '#288AFF' },
{ name: '计划停机', color: '#FFDC94' },
{ name: '故障', color: '#FC9C91' },
{ name: '空白', color: '#F2F4F9' },
];
@ -251,7 +251,7 @@ export default class GanttGraph {
y: 0,
},
data: arr.map(item => ({
name: ['运行', '故障', '计划停机'][item.status],
name: ['运行', '计划停机', '故障'][item.status],
value: [0, item.startTime, item.startTime + item.duration * 60 * 1000, 0],
itemStyle: {
color: types[item.status].color,

View File

@ -6,29 +6,19 @@
-->
<template>
<div
class="status-timegraph-container"
style="background: #f2f4f9; flex: 1; display: flex; flex-direction: column">
<el-row
class=""
style="
<div class="status-timegraph-container" style="background: #f2f4f9; flex: 1; display: flex; flex-direction: column">
<el-row class="" style="
margin-bottom: 12px;
background: #fff;
padding: 16px 16px 0;
border-radius: 8px;
">
<div class="blue-title">生产节拍时序图</div>
<SearchBar
:formConfigs="searchBarFormConfig"
ref="search-bar"
:remove-blue="true"
@select-changed="handleSearchBarSelectChange"
@headBtnClick="handleSearchBarBtnClick" />
</el-row>
<div class="blue-title">生产节拍时序图</div>
<SearchBar :formConfigs="searchBarFormConfig" ref="search-bar" :remove-blue="true"
@select-changed="handleSearchBarSelectChange" @headBtnClick="handleSearchBarBtnClick" />
</el-row>
<el-row
class=""
style="
<el-row class="" style="
height: 1px;
flex: 1;
margin-bottom: 12px;
@ -38,60 +28,40 @@
display: flex;
flex-direction: column;
">
<el-row :gutter="20">
<el-col :span="6">
<div class="blue-title">设备状态时序图</div>
</el-col>
<el-col :span="18" class="legend-row">
<div class="legend">
<div class="icon running"></div>
<div>运行中</div>
</div>
<div class="legend">
<div class="icon fault"></div>
<div>故障</div>
</div>
<div class="legend">
<div class="icon stop"></div>
<div>计划停机</div>
</div>
</el-col>
</el-row>
<div
class="main-area"
style="flex: 1; display: flex; flex-direction: column">
<div
class="graphs"
v-show="graphList.length"
id="status-chart"
style="height: 1px; flex: 1"></div>
<h2 v-if="!graphList || graphList.length == 0" class="no-data-bg"></h2>
</div>
</el-row>
<el-row :gutter="20">
<el-col :span="6">
<div class="blue-title">设备状态时序图</div>
</el-col>
<el-col :span="18" class="legend-row">
<div class="legend">
<div class="icon running"></div>
<div>运行中</div>
</div>
<div class="legend">
<div class="icon stop"></div>
<div>计划停机</div>
</div>
<div class="legend">
<div class="icon fault"></div>
<div>故障</div>
</div>
</el-col>
</el-row>
<div class="main-area" style="flex: 1; display: flex; flex-direction: column">
<div class="graphs" v-show="graphList.length" id="status-chart" style="height: 1px; flex: 1"></div>
<h2 v-if="!graphList || graphList.length == 0" class="no-data-bg"></h2>
</div>
</el-row>
<!-- 对话框(添加 / 修改) -->
<base-dialog
dialogTitle="添加设备"
:dialogVisible="open"
width="500px"
@close="open = false"
@cancel="open = false"
@confirm="submitForm">
<el-select
v-if="open"
style="width: 100%"
filterable
clearable
v-model="queryParams.equipmentId"
placeholder="请选择一个设备">
<el-option
v-for="eq in eqList"
:key="eq.id"
:value="eq.id"
:label="eq.name"></el-option>
</el-select>
</base-dialog>
</div>
<!-- 对话框(添加 / 修改) -->
<base-dialog dialogTitle="添加设备" :dialogVisible="open" width="500px" @close="open = false" @cancel="open = false"
@confirm="submitForm">
<el-select v-if="open" style="width: 100%" filterable clearable v-model="queryParams.equipmentId"
placeholder="请选择一个设备">
<el-option v-for="eq in eqList" :key="eq.id" :value="eq.id" :label="eq.name"></el-option>
</el-select>
</base-dialog>
</div>
</template>
<script>
@ -103,12 +73,6 @@ export default {
components: {},
props: {},
data() {
const today = new Date();
const todayStart = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate()
);
return {
chart: null,
searchBarFormConfig: [
@ -138,7 +102,7 @@ export default {
placeholder: '选择日期',
param: 'recordTime',
required: true,
defaultSelect: moment(todayStart).format('YYYY-MM-DD HH:mm:ss'),
defaultSelect:null,
},
{
type: 'button',
@ -191,14 +155,24 @@ export default {
// ],
};
},
computed: {},
created() {
this.initProductline();
this.initWorksection();
this.initEquipment();
computed: {},
created () {
this.initProductline();
this.initWorksection();
this.initEquipment();
},
mounted() {
const today = new Date();
const todayStart = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate()
);
this.searchBarFormConfig[2].defaultSelect = moment(todayStart).format('YYYY-MM-DD HH:mm:ss')
console.log('111111', this.searchBarFormConfig[2].defaultSelect)
// this.getList();
},
mounted() {},
// mounted() {},
watch: {
graphList: {
handler(val) {
@ -246,7 +220,7 @@ export default {
});
},
async getList() {
async getList() {
const { code, data } = await this.$axios({
url: '/monitoring/equipment-monitor/status-series',
method: 'get',
@ -312,7 +286,7 @@ export default {
if (!value) {
this.searchBarFormConfig[1].selectOptions = [];
return;
}
}
switch (param) {
case 'lineId':
this.$axios({
@ -322,7 +296,8 @@ export default {
id: value,
},
}).then(({ code, data }) => {
if (code == 0) {
if (code == 0) {
this.searchBarFormConfig[2].defaultSelect = null
this.searchBarFormConfig[1].selectOptions = data.map((item) => {
return {
name: item.name,

View File

@ -91,7 +91,13 @@ export default {
btnName: '查询',
name: 'search',
color: 'primary',
},
},
{
type: 'button',
btnName: '返回',
name: 'return',
color: 'primary',
},
],
queryParams: {
equipmentId: null,
@ -278,19 +284,24 @@ export default {
);
},
async handleSearchBarBtnClick({ btnName, timeVal }) {
if (timeVal && timeVal.length > 0) {
console.log('nihc ', timeVal)
if (new Date(timeVal[1]).getTime() - new Date(timeVal[0]).getTime() <= 30 * 60 * 1000) {
this.queryParams.recordTime = timeVal;
await this.handleQuery();
} else {
this.$message.warning('时间范围最大30分钟限制')
}
} else {
this.queryParams.recordTime = [];
this.$message.warning('时间段必选!')
}
async handleSearchBarBtnClick({ btnName, timeVal }) {
console.log(btnName);
if (btnName === 'search') {
if (timeVal && timeVal.length > 0) {
console.log('nihc ', timeVal)
if (new Date(timeVal[1]).getTime() - new Date(timeVal[0]).getTime() <= 30 * 60 * 1000) {
this.queryParams.recordTime = timeVal;
await this.handleQuery();
} else {
this.$message.warning('时间范围最大30分钟限制')
}
} else {
this.queryParams.recordTime = [];
this.$message.warning('时间段必选!')
}
} else {
this.$router.go(-1)
}
},