Browse Source

标准点位管理联调、检修区域管理联调

dev
wangxingyuan 9 months ago
parent
commit
3691411e36
4 changed files with 352 additions and 139 deletions
  1. +8
    -13
      src/api/area/area_management.js
  2. +48
    -2
      src/api/point/point_mang.js
  3. +151
    -51
      src/views/area/area_management.vue
  4. +145
    -73
      src/views/point/point_mang.vue

+ 8
- 13
src/api/area/area_management.js View File

@ -24,8 +24,6 @@ export function postAdd(query) {
}) })
} }
// 删除 // 删除
export function postRemove(query) { export function postRemove(query) {
return request({ return request({
@ -35,22 +33,19 @@ export function postRemove(query) {
}) })
} }
// 编辑查询
// export function getItem(query) {
// return request({
// url: `/basedata/alg/${query}`,
// method: 'get',
// })
// }
// 编辑 // 编辑
export function edit(query) { export function edit(query) {
// console.log(query,1111111)
// return
return request({ return request({
url: `/patrol/maintarea/update?lineId=${query.lineId}&enable=${query.enable}`, url: `/patrol/maintarea/update?lineId=${query.lineId}&enable=${query.enable}`,
method: 'get', method: 'get',
// data: query // data: query
}) })
}
// 区域下发
export function issue(query) {
return request({
url: `/patrol/maintarea/issue?ids=${query}`,
method: 'get',
// data: query
})
} }

+ 48
- 2
src/api/point/point_mang.js View File

@ -1,9 +1,55 @@
import request from '@/utils/request'; import request from '@/utils/request';
// 初始化树结构 // 初始化树结构
export function getTreeAreaDeviceSelect(query) { export function getTreeAreaDeviceSelect(query) {
if (query) {
return request({
url: `/basedata/devicetype/getCommpTypeTreeSelectByMainDevicetypeId?devicetypeId=${query}`,
method: 'get',
// params: query
})
} else {
return request({
url: `/basedata/devicetype/getCommpTypeTreeSelectByMainDevicetypeId`,
method: 'get',
// params: query
})
}
}
// 点击树结构
export function cilikList(query) {
return request({ return request({
url: '/basedata/prodevmnt/device/treeAreaDeviceSelect',
url: `/basedata/patrolpointmnt/stdpatrolpoint/list?mainDevicetypeId=${query}`,
method: 'get', method: 'get',
// params: query
})
}
// 数据格式
export function dataFormat(query) {
return request({
url: `/system/dict/data/type/data_format`,
method: 'get',
})
}
// 设备分类
export function devicetype(query) {
return request({
url: `/basedata/devicetype/list?powerMainEquFlag=Yes`,
method: 'get',
})
}
// 添加
export function add(query) {
return request({
url: `/basedata/patrolpointmnt/stdpatrolpoint/addBatchList`,
method: 'post',
data: query
})
}
// 删除
export function remove(query) {
return request({
url: `/basedata/patrolpointmnt/stdpatrolpoint/remove/${query}`,
method: 'post',
}) })
} }

+ 151
- 51
src/views/area/area_management.vue View File

@ -42,12 +42,21 @@
}}</el-button> }}</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="primary" plain>{{
$t("area_management.RegionalDistribution")
}}</el-button>
<el-button
type="primary"
plain
:disabled="ids.length <= 0"
@click="issueFn"
>{{ $t("area_management.RegionalDistribution") }}</el-button
>
</el-col> </el-col>
</el-row> </el-row>
<el-table :data="tableData" border style="width: 100%; margin-top: 10px">
<el-table
:data="tableData"
border
style="width: 100%; margin-top: 10px"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column <el-table-column
:label="$t('area_management.index')" :label="$t('area_management.index')"
@ -90,7 +99,11 @@
<!-- {{ $t("area_management.loseEfficacy") }} --> <!-- {{ $t("area_management.loseEfficacy") }} -->
{{ scope.row.enable == 1 ? "无效" : "有效" }} {{ scope.row.enable == 1 ? "无效" : "有效" }}
</el-button> </el-button>
<el-button type="text" icon="el-icon-delete" @click="handleDelete(scope.row.lineId)">
<el-button
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row.lineId)"
>
{{ $t("share.delete") }}</el-button {{ $t("share.delete") }}</el-button
> >
</template> </template>
@ -111,32 +124,43 @@
<el-row :gutter="10"> <el-row :gutter="10">
<el-col :span="9"> <el-col :span="9">
<el-input></el-input> <el-input></el-input>
<!-- :data="treeData"
:props="defaultProps"
@check-change="handleCheckChange"
:render-after-expand="false"
show-checkbox -->
<el-tree <el-tree
:props="defaultProps" :props="defaultProps"
:load="loadNode"
lazy
show-checkbox
></el-tree>
:data="treeData"
node-key="id"
:render-content="renderContent"
@check-change="handleCheckChange"
ref="tree"
>
</el-tree>
</el-col> </el-col>
<el-col :span="15"> <el-col :span="15">
<el-form :model="dialogForm" label-width="160px">
<el-form-item :label="$t('area_management.type')">
<el-form
:model="dialogForm"
label-width="160px"
:rules="rules"
ref="form"
>
<el-form-item
:label="$t('area_management.type')"
prop="deviceLevel"
>
<el-select <el-select
v-model="dialogForm.deviceLevel" v-model="dialogForm.deviceLevel"
:placeholder=" :placeholder="
$t('share.PleaseChoose') + $t('area_management.type') $t('share.PleaseChoose') + $t('area_management.type')
" "
@change="deviceLevelChange"
> >
<el-option label="item.label" value="item.value"> </el-option>
<el-option label="区域" value="area"></el-option>
<el-option label="主设备" value="main"></el-option>
<el-option label="部件" value="part"></el-option>
<el-option label="点位" value="point"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item <el-form-item
:label="$t('area_management.MaintenanceAreaConfigurationCode')" :label="$t('area_management.MaintenanceAreaConfigurationCode')"
prop="configCode"
> >
<el-input <el-input
v-model="dialogForm.configCode" v-model="dialogForm.configCode"
@ -146,7 +170,10 @@
" "
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item :label="$t('area_management.TimeAndDate')">
<el-form-item
:label="$t('area_management.TimeAndDate')"
prop="dateRange"
>
<el-date-picker <el-date-picker
v-model="dateRange" v-model="dateRange"
type="daterange" type="daterange"
@ -162,7 +189,9 @@
<el-button type="primary" @click="submitForm">{{ <el-button type="primary" @click="submitForm">{{
$t("share.confirm") $t("share.confirm")
}}</el-button> }}</el-button>
<el-button>{{ $t("share.cancel") }}</el-button>
<el-button @click="handleClose">{{
$t("share.cancel")
}}</el-button>
</div> </div>
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -179,6 +208,7 @@ import {
postRemove, postRemove,
postAdd, postAdd,
edit, edit,
issue,
} from "@/api/area/area_management"; } from "@/api/area/area_management";
export default { export default {
data() { data() {
@ -197,10 +227,37 @@ export default {
label: "label", label: "label",
isLeaf: "leaf", // isLeaf: "leaf", //
}, },
dialogForm: {},
dialogForm: {
deviceLevel: "area",
},
dateRange: [], dateRange: [],
ids: [],
rules: {
deviceLevel: [
{
required: true,
message: "请选择设备类型",
trigger: "change",
},
],
configCode: [
{
required: true,
message: "请输入检修区域配置编码",
trigger: "blur",
},
],
// dateRange: [
// {
// required: true,
// message: "",
// trigger: "change",
// },
// ],
},
}; };
}, },
created() { created() {
this.init(); this.init();
this.initTree(); this.initTree();
@ -210,6 +267,21 @@ export default {
submitForm() { submitForm() {
this.dialogForm.startTime = this.dateRange[0]; this.dialogForm.startTime = this.dateRange[0];
this.dialogForm.endTime = this.dateRange[1]; this.dialogForm.endTime = this.dateRange[1];
this.$refs["form"].validate((valid) => {
if (valid) {
// return
postAdd(this.dialogForm).then((res) => {
if (res.code == 200) {
this.dialogVisible = false;
this.$message({
message: `新增成功`,
type: "success",
});
this.init();
}
});
}
});
}, },
// //
init() { init() {
@ -251,39 +323,11 @@ export default {
}, },
handleClose() { handleClose() {
this.dialogVisible = false; this.dialogVisible = false;
this.dialogForm.deviceLevel = "area";
this.$refs.form.resetFields();
}, },
// flattenTree(tree) {
// return tree.reduce((acc, node) => {
// acc.push(node);
// if (node.children && node.children.length) {
// acc.push(...this.flattenTree(node.children));
// }
// return acc;
// }, []);
// },
//
handleCheckChange(data, checked, indeterminate) {
console.log(data, checked, indeterminate);
},
loadNode(node, resolve) {
console.log(node);
if (node.level === 0) {
setTimeout(() => {
resolve(this.treeData);
}, 50);
} else if (!node.data.children) {
setTimeout(() => {
resolve([]);
}, 50);
} else if (node.data.children) {
setTimeout(() => {
resolve(node.data.children);
console.log(node.data.children);
}, 50);
}
},
//
//
handleEdit(row) { handleEdit(row) {
// lineId // lineId
let data = { let data = {
@ -321,6 +365,62 @@ export default {
}); });
}); });
}, },
//
renderContent(h, { node, data, store }) {
const showCheckbox = data.type == this.dialogForm.deviceLevel;
return h("span", [
showCheckbox
? h("el-checkbox", {
style: { marginRight: "8px" },
on: {
change: (checked) => {
store.setChecked(node, checked, false);
},
},
})
: null,
h("span", node.label),
]);
},
handleCheckChange(data, checked, indeterminate) {
this.dialogForm.deviceList = null;
this.dialogForm.pointList = null;
let deviceList = [];
let pointList = [];
let allCheckedNodes = this.$refs.tree.getCheckedNodes();
allCheckedNodes.forEach((item) => {
deviceList.push(item.id);
if (item.children && item.children.length > 0) {
item.children.forEach((child) => {
pointList.push(child.id);
});
}
});
this.dialogForm.deviceList = deviceList.toString();
this.dialogForm.pointList = pointList.toString();
console.log(this.dialogForm);
// console.log(this.dialogForm, allCheckedNodes);
},
deviceLevelChange() {
this.dialogForm.deviceList = null;
this.dialogForm.pointList = null;
},
//
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.lineId);
},
issueFn() {
issue(this.ids.toString()).then((res) => {
if (res.code == 200) {
this.$message({
message: `下发成功`,
type: "success",
});
this.init();
}
});
},
}, },
}; };
</script> </script>


+ 145
- 73
src/views/point/point_mang.vue View File

@ -19,11 +19,15 @@
:data="treeData" :data="treeData"
:props="defaultProps" :props="defaultProps"
@node-click="handleNodeClick" @node-click="handleNodeClick"
node-key="devicetypeId"
ref="tree"
></el-tree> ></el-tree>
</el-col> </el-col>
<el-col :span="20">
<el-col :span="20" v-if="devicetypeId">
<div> <div>
<el-button type="primary">{{ $t("share.addTo") }}</el-button>
<el-button type="primary" @click="addBtn">{{
$t("share.addTo")
}}</el-button>
<span>0/200{{ $t("point_mang.tableHeadMsg") }}</span> <span>0/200{{ $t("point_mang.tableHeadMsg") }}</span>
</div> </div>
<el-table :data="tableData" max-height="700" style="margin-top: 10px"> <el-table :data="tableData" max-height="700" style="margin-top: 10px">
@ -35,7 +39,6 @@
align="center" align="center"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
prop="date"
:label="$t('point_mang.equipmentClassification')" :label="$t('point_mang.equipmentClassification')"
:render-header="addRedStar" :render-header="addRedStar"
align="center" align="center"
@ -46,14 +49,20 @@
$t('share.PleaseChoose') + $t('share.PleaseChoose') +
$t('point_mang.equipmentClassification') $t('point_mang.equipmentClassification')
" "
v-model="scope.row.componentDevicetypeId"
> >
<el-option label="item.label" value="item.value"> </el-option>
<el-option
:label="item.devicetypeName"
:value="item.devicetypeId"
v-for="item in DevicetypeIdOptions"
:key="item.devicetypeId"
>
</el-option>
</el-select> </el-select>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="date"
:label="$t('point_mang.InspectionStandards')" :label="$t('point_mang.InspectionStandards')"
:render-header="addRedStar" :render-header="addRedStar"
align="center" align="center"
@ -64,30 +73,27 @@
:placeholder=" :placeholder="
$t('share.PleaseChoose') + $t('point_mang.PleaseEnter') $t('share.PleaseChoose') + $t('point_mang.PleaseEnter')
" "
v-model="scope.row.patrolContent"
></el-input> ></el-input>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column
prop="date"
:label="$t('point_mang.dataFormat')"
align="center"
>
<el-table-column :label="$t('point_mang.dataFormat')" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<el-select
v-model="value"
multiple
<!-- multiple
filterable filterable
allow-create allow-create
default-first-option
default-first-option -->
<el-select
v-model="scope.row.mainDevicetypeId"
:placeholder=" :placeholder="
$t('share.PleaseChoose') + $t('point_mang.dataFormat') $t('share.PleaseChoose') + $t('point_mang.dataFormat')
" "
> >
<el-option <el-option
v-for="item in options" v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
:key="item.dictValue"
:label="item.dictLabel"
:value="item.dictValue"
> >
</el-option> </el-option>
</el-select> </el-select>
@ -100,7 +106,7 @@
> >
<template slot-scope="scope"> <template slot-scope="scope">
<span class="intelligenceType" @click="intelligenceTypeBtn" <span class="intelligenceType" @click="intelligenceTypeBtn"
>123123</span
>设置</span
> >
</template> </template>
</el-table-column> </el-table-column>
@ -109,16 +115,24 @@
<el-button size="mini" type="primary"> <el-button size="mini" type="primary">
{{ $t("share.copy") }} {{ $t("share.copy") }}
</el-button> </el-button>
<el-button size="mini" type="danger">{{
$t("share.delete")
}}</el-button>
<el-button
size="mini"
type="danger"
@click="handleDelete(scope.row)"
>{{ $t("share.delete") }}</el-button
>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div class="saveBtn"> <div class="saveBtn">
<el-button type="primary">{{ $t("share.save") }}</el-button>
<el-button type="primary" @click="submitForm">{{
$t("share.save")
}}</el-button>
</div> </div>
</el-col> </el-col>
<el-col :span="20" v-if="!devicetypeId">
<div style="line-height: 36px">请先选择左侧点位</div>
</el-col>
</el-row> </el-row>
<el-dialog <el-dialog
:title="$t('point_mang.SetIntelligentRecognitionType')" :title="$t('point_mang.SetIntelligentRecognitionType')"
@ -139,12 +153,12 @@
:label="$t('point_mang.index')" :label="$t('point_mang.index')"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
prop="name"
prop="componentDevicetypeId"
align="center" align="center"
:label="$t('point_mang.AlgorithmName')" :label="$t('point_mang.AlgorithmName')"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
prop="name"
prop="patrolContent"
align="center" align="center"
:label="$t('point_mang.ThresholdUpperLimit')" :label="$t('point_mang.ThresholdUpperLimit')"
:render-header="addRedStar" :render-header="addRedStar"
@ -154,7 +168,7 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="name"
prop="mainDevicetypeId"
align="center" align="center"
:label="$t('point_mang.LowerThresholdLimit')" :label="$t('point_mang.LowerThresholdLimit')"
:render-header="addRedStar" :render-header="addRedStar"
@ -165,72 +179,78 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">{{ $t('share.cancel') }}</el-button>
<el-button type="primary" @click="dialogVisible = false"
>{{ $t('share.confirm') }}</el-button
>
<el-button @click="dialogVisible = false">{{
$t("share.cancel")
}}</el-button>
<el-button type="primary" @click="dialogVisible = false">{{
$t("share.confirm")
}}</el-button>
</span> </span>
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
<script> <script>
import {
getTreeAreaDeviceSelect,
cilikList,
devicetype,
dataFormat,
add,
remove,
} from "@/api/point/point_mang";
export default { export default {
data() { data() {
return { return {
treeData: [
{
label: "一级 1",
type: 1,
children: [
{
label: "二级 1-1",
children: [
{
label: "三级 1-1-1",
children: [
{
label: "四级 1-1-1-1",
type: 4,
},
{
label: "四级 1-1-1-2",
type: 4,
},
],
},
],
},
],
},
],
treeData: [],
defaultProps: { defaultProps: {
children: "children", children: "children",
label: "label",
label: "devicetypeName",
}, },
tableData: [{}],
options: [
{
value: "HTML",
label: "HTML",
},
{
value: "CSS",
label: "CSS",
},
{
value: "JavaScript",
label: "JavaScript",
},
],
tableData: [],
DevicetypeIdOptions: [],
options: [],
value: [], value: [],
dialogVisible: false, dialogVisible: false,
intelligenceTypeData: [], intelligenceTypeData: [],
devicetypeId: null,
}; };
}, },
created() {},
mounted() {
this.init();
devicetype().then((res) => {
if (res.code == 200) {
res.data.forEach((item) => {
if (item.devicetypeId !== 1) {
this.DevicetypeIdOptions.push(item);
}
});
}
});
dataFormat().then((res) => {
if (res.code == 200) {
console.log(this.options, res.data);
res.data.forEach((item) => {
item.dictValue = String(item.dictValue);
});
this.options = res.data;
}
});
},
methods: { methods: {
init(qurey) {
getTreeAreaDeviceSelect(qurey).then((res) => {
this.tableData = [];
if (res.code == 200) {
res.data.forEach((item) => {
if (item.devicetypeId !== 1) {
this.treeData.push(item);
}
});
}
});
},
// * // *
addRedStar(h, { column }) { addRedStar(h, { column }) {
return [ return [
@ -248,6 +268,58 @@ export default {
h("span", " " + column.label), h("span", " " + column.label),
]; ];
}, },
//
handleNodeClick(data) {
console.log(data, 11111111111);
this.devicetypeId = data.devicetypeId;
this.tableData = [];
this.initClickList(data);
},
initClickList(data) {
cilikList(data.devicetypeId).then((res) => {
if (res.code == 200) {
console.log(res, 111);
this.tableData = res.rows;
}
});
},
addBtn() {
this.tableData.push({});
},
//
submitForm() {
if (!this.tableData.length) return;
let flag = this.tableData.every((item) => {
if (item.componentDevicetypeId && item.patrolContent) {
return true;
} else {
return false;
}
});
if (flag) {
add(this.tableData).then((res) => {
this.initClickList(this.devicetypeId);
});
} else {
this.$message({
type: "warning",
message: "必填项不能为空!",
});
}
},
//
handleDelete(row) {
remove(row.stdpatrolPointId).then((res) => {
if (res.code == 200) {
this.$message({
type: "success",
message: "删除成功!",
});
this.initClickList(row);
}
});
},
}, },
}; };
</script> </script>


Loading…
Cancel
Save