Browse Source

fix: 联调监督检查

sy-water-data-board-ui
panyuyi 1 year ago
parent
commit
d0f5658937
  1. 90
      src/api/sluice/index.js
  2. 4
      src/assets/styles/index.scss
  3. 2
      src/assets/styles/space.scss
  4. 16
      src/views/dike/runManage/superVisionInspetion/methodsManage/details.vue
  5. 9
      src/views/dike/runManage/superVisionInspetion/methodsManage/index.vue
  6. 60
      src/views/dike/runManage/superVisionInspetion/methodsManage/itemsDetails.vue
  7. 117
      src/views/sluice/runManage/supervisionInspetion/methodsManage/details.vue
  8. 214
      src/views/sluice/runManage/supervisionInspetion/methodsManage/index.vue
  9. 195
      src/views/sluice/runManage/supervisionInspetion/methodsManage/itemsDetails.vue
  10. 46
      src/views/sluice/runManage/supervisionInspetion/methodsManage/itemsList.vue
  11. 8
      vue.config.js

90
src/api/sluice/index.js

@ -150,6 +150,7 @@ export function getSluiceWaterRainRecordsList(data) {
/**** 监督检查办法模块 ****/ /**** 监督检查办法模块 ****/
// 获取监督检查办法列表 // 获取监督检查办法列表
export function getSuperviseWayList(data){ export function getSuperviseWayList(data){
return request({ return request({
@ -158,3 +159,92 @@ export function getSuperviseWayList(data){
data data
}) })
} }
// 新增或修改监督检查办法
export function postSuperviseWayData(data){
return request({
url: `/run/sz/superviseWay`,
method: 'post',
data
})
}
// 获取监督检查办法详情
export function getSuperviseWayDetails(id){
return request({
url: `/run/sz/superviseWay/${id}`,
method: 'get',
})
}
// 复制监督检查办法
export function copySuperviseWayData(id){
return request({
url: `/run/sz/superviseWay/copy/${id}`,
method: 'post',
})
}
// 新增监督检查办法项目
export function addSuperviseWayItemData(data){
return request({
url: `/run/sz/superviseWay/data/add`,
method: 'post',
data
})
}
// 督检查办法项目列表
export function getSuperviseWayItemListData(id){
return request({
url: `/run/sz/superviseWay/dataList/${id}`,
method: 'get',
})
}
// 督检查办法项目配置详情
export function getSuperviseWayItemDetailsData(id){
return request({
url: `/run/sz/superviseWay/data/${id}`,
method: 'get',
})
}
// 督检查办法项目配置项删除
export function delSuperviseWayItemDetailsData(id){
return request({
url: `/run/sz/superviseWay/data/${id}`,
method: 'delete',
})
}
// 督检查办法项目配置项详情列表
export function getSuperviseWayItemDetailsListData(data){
return request({
url: `/run/sz/superviseWay/dataItemList`,
method: 'post',
data
})
}
// 督检查办法项目配置项详情新增
export function addSuperviseWayItemDetailsItemData(data){
return request({
url: `/run/sz/superviseWay/dataItem/add`,
method: 'post',
data
})
}
// 督检查办法项目配置项详情更新
export function updateSuperviseWayItemDetailsItemData(data){
return request({
url: `/run/sz/superviseWay/dataItem/update`,
method: 'put',
data
})
}
// 督检查办法项目配置项更新
export function updateSuperviseWayItemData(data){
return request({
url: `/run/sz/superviseWay/data/update`,
method: 'put',
data
})
}

4
src/assets/styles/index.scss

@ -320,3 +320,7 @@ aside {
.h-full{ .h-full{
height: 100%; height: 100%;
} }
.word-break{
word-break: break-all;
}

2
src/assets/styles/space.scss

@ -39,7 +39,7 @@
/***** padding ******/ /***** padding ******/
@for $i from 1 through 32 { @for $i from 1 through 32 {
.p-#{$i}{ .p-#{$i}{
margin: #{$i}px; padding: #{$i}px;
} }
.pl-#{$i}{ .pl-#{$i}{
padding-left: #{$i}px; padding-left: #{$i}px;

16
src/views/dike/runManage/superVisionInspetion/methodsManage/details.vue

@ -4,6 +4,7 @@
<div class="method-details-page"> <div class="method-details-page">
<div class="flex justify-between items-center"> <div class="flex justify-between items-center">
<el-upload <el-upload
v-if="$route.query.mode != 'preview'"
action="#" action="#"
class="avatar-uploader" class="avatar-uploader"
:http-request="handleUpload" :http-request="handleUpload"
@ -18,7 +19,8 @@
fileUrl ? "重新上传" : "上传文件" fileUrl ? "重新上传" : "上传文件"
}}</el-button> }}</el-button>
</el-upload> </el-upload>
<span v-if="editTitle"> <div v-else>&nbsp;</div>
<span v-if="editTitle && $route.query.mode === 'edit'">
<el-input class="input" v-model="title"></el-input> <el-input class="input" v-model="title"></el-input>
<i <i
class="el-icon-check cursor-pointer ml-4 font-16" class="el-icon-check cursor-pointer ml-4 font-16"
@ -29,6 +31,7 @@
<span v-else <span v-else
>{{ title }} >{{ title }}
<i <i
v-if="$route.query.mode === 'edit'"
class="el-icon-edit cursor-pointer ml-4 font-16" class="el-icon-edit cursor-pointer ml-4 font-16"
style="color: #409eff" style="color: #409eff"
@click="editTitle = !editTitle" @click="editTitle = !editTitle"
@ -56,18 +59,23 @@ export default {
data() { data() {
return { return {
fileList: [], fileList: [],
fileUrl: fileUrl: "", //http://gateway.product.dev.com:30115/data-platform-ui/objs/http://minio:9000/data-platform-protocol-model/20240229/11b754af7aef4dc6bff17d5e0bcd919e.pdf
"http://shuili-admin.product.dev.com/tianhui-admin-web/profile/2024/03/04/c8d11ca0-89b4-4fab-8104-b89ec8935ec6.pdf", //http://gateway.product.dev.com:30115/data-platform-ui/objs/http://minio:9000/data-platform-protocol-model/20240229/11b754af7aef4dc6bff17d5e0bcd919e.pdf
editTitle: false, editTitle: false,
title: "标题", title: "标题",
}; };
}, },
created() { created() {
if (this.$route.query.id) { if (this.$route.query.id) {
this.initData();
} }
}, },
methods: { methods: {
initData() {}, initData() {
getSupervisionMethodDetails(this.$route.query.id).then((res) => {
this.title = res.name;
this.fileUrl = res.superviseCheckWay;
});
},
// //
beforeUpload(e) { beforeUpload(e) {
console.log("上传前e >>>>> ", e); console.log("上传前e >>>>> ", e);

9
src/views/dike/runManage/superVisionInspetion/methodsManage/index.vue

@ -181,12 +181,6 @@ export default {
} }
}); });
}, },
//
resetSearch() {
this.name = "";
this.selectStatus = "2";
this.getTableData();
},
// //
getEmbData() { getEmbData() {
listDikeInfo({ listDikeInfo({
@ -228,9 +222,6 @@ export default {
// //
this.getTableData(); this.getTableData();
this.getEmbData(); this.getEmbData();
this.getDicts("embankment_level").then((res) => {
this.dikeLevel = res.data;
});
this.getDicts("dh_jh_type").then((res) => { this.getDicts("dh_jh_type").then((res) => {
this.controlType = res.data; this.controlType = res.data;
}); });

60
src/views/dike/runManage/superVisionInspetion/methodsManage/itemsDetails.vue

@ -61,38 +61,50 @@
<div class="item-row-content">操作</div> <div class="item-row-content">操作</div>
</el-col> </el-col>
</el-row> </el-row>
<el-row class="item-row" v-for="(item, index) in list" :key="item"> <el-row
class="item-row"
v-for="(item, index) in questList"
:key="index"
>
<el-col :span="2"> <el-col :span="2">
<div class="item-row-content">2</div> <div class="item-row-content">{{ index + 1 }}</div>
</el-col> </el-col>
<el-col :span="3"> <el-col :span="3">
<div class="item-row-content">12122</div> <div class="item-row-content">{{ item.pro }}</div>
</el-col> </el-col>
<el-col :span="11"> <el-col :span="11">
<div class="item-row-content"> <div class="item-row-content">
<div>这是内容</div> <div>{{ item.content }}</div>
</div> </div>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<div class="item-row-content item-row-content2"> <div class="item-row-content item-row-content2">
<div class="flex w-full title-2 h-full"> <div class="flex w-full title-2 h-full">
<div class="flex-1 text-center items-center pt-4 pb-4"> <div class="flex-1 text-center items-center pt-4 pb-4">
一般 {{ item.sameGrade }}
</div> </div>
<div class="flex-1 text-center items-center pt-4 pb-4"> <div class="flex-1 text-center items-center pt-4 pb-4">
较重 {{ item.heavyGrade }}
</div> </div>
<div class="flex-1 text-center items-center pt-4 pb-4"> <div class="flex-1 text-center items-center pt-4 pb-4">
严重 {{ item.seriousGrade }}
</div> </div>
</div> </div>
</div> </div>
</el-col> </el-col>
<el-col :span="2"> <el-col :span="2">
<div class="item-row-content"> <div class="item-row-content">
<el-button type="text" v-if="index == 0">添加</el-button> <el-button
<el-button type="text" v-else>修改</el-button> type="text"
<el-button type="text">删除</el-button> v-if="index == questList.length - 1"
@click="handleAddNewItem"
>添加</el-button
>
<el-button type="text" v-if="!item.edit">修改</el-button>
<el-button type="text" v-else>保存</el-button>
<el-button type="text" v-if="questList.length > 1"
>删除</el-button
>
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
@ -107,21 +119,31 @@ export default {
editTitle: false, editTitle: false,
title: "标题", title: "标题",
searchVal: "", searchVal: "",
list: [ questList: [
{ {
pro: "项目A", pro: "带过来的项目",
questions: ["问题描述111"], content: "问题描述啊",
questionLevel: { sameGrade: "一般问题",
1: "实例1", heavyGrade: "较重问题",
2: "实例2 ", seriousGrade: "严重问题",
3: "实例3", edit: false,
},
}, },
], ],
}; };
}, },
created() {}, created() {},
methods: {}, methods: {
handleAddNewItem() {
this.questList.push({
pro: "带过来的项目",
content: "问题描述啊",
sameGrade: "一般问题",
heavyGrade: "较重问题",
seriousGrade: "严重问题",
edit: true,
});
},
},
}; };
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">

117
src/views/sluice/runManage/supervisionInspetion/methodsManage/details.vue

@ -1,34 +1,48 @@
<template> <template>
<div class="body slider-right"> <div class="body slider-right">
<div class="top-title">基础信息管理</div> <div class="top-title">监督检测办法管理</div>
<div class="method-details-page"> <div class="method-details-page">
<div class="flex justify-between items-center"> <div class="flex justify-between items-center">
<el-upload
v-if="$route.query.mode != 'preview'"
action="#"
class="avatar-uploader"
:http-request="handleUpload"
:auto-upload="true"
:before-upload="beforeUpload"
:showFileList="false"
accept=".PDF"
:maxLength="1"
>
<el-button type="primary">{{ <el-button type="primary">{{
fileUrl ? "重新上传" : "上传文件" detailsData.superviseCheckWay ? "重新上传" : "上传文件"
}}</el-button> }}</el-button>
<span v-if="editTitle"> </el-upload>
<el-input class="input" v-model="title"></el-input> <div v-else>&nbsp;</div>
<span v-if="editName && $route.query.mode === 'edit'">
<el-input class="input" v-model="detailsData.name"></el-input>
<i <i
class="el-icon-check cursor-pointer ml-4 font-16" class="el-icon-check cursor-pointer ml-4 font-16"
style="color: #409eff" style="color: #409eff"
@click="editTitle = !editTitle" @click="handleSaveName"
></i> ></i>
</span> </span>
<span v-else <span v-else
>{{ title }} >{{ detailsData.name }}
<i <i
v-if="$route.query.mode === 'edit'"
class="el-icon-edit cursor-pointer ml-4 font-16" class="el-icon-edit cursor-pointer ml-4 font-16"
style="color: #409eff" style="color: #409eff"
@click="editTitle = !editTitle" @click="editName = !editName"
></i ></i
></span> ></span>
<el-button @click="$router.go(-1)">返回</el-button> <el-button @click="$router.go(-1)">返回</el-button>
</div> </div>
<div class="pdf-preview"> <div class="pdf-preview">
<object <object
v-if="fileUrl" v-if="detailsData.superviseCheckWay"
class="pdf-box" class="pdf-box"
:data="fileUrl" :data="detailsData.superviseCheckWay"
type="application/pdf" type="application/pdf"
></object> ></object>
<div v-else style="color: #333">暂无文件请上传</div> <div v-else style="color: #333">暂无文件请上传</div>
@ -37,16 +51,91 @@
</div> </div>
</template> </template>
<script> <script>
import { uploadFileData } from "@/api/system/upload";
import { getSuperviseWayDetails, postSuperviseWayData } from "@/api/sluice";
export default { export default {
data() { data() {
return { return {
fileUrl: "", //http://gateway.product.dev.com:30115/data-platform-ui/objs/http://minio:9000/data-platform-protocol-model/20240229/11b754af7aef4dc6bff17d5e0bcd919e.pdf detailsData: {
editTitle: false, superviseCheckWay: "",
title: "标题", status: "",
name: "",
},
editName: false,
}; };
}, },
created() {}, created() {
methods: {}, if (this.$route.query.id) {
this.initData();
}
},
methods: {
initData() {
getSuperviseWayDetails(this.$route.query.id).then((res) => {
if (res.data) {
this.$set(this.detailsData, "name", res.data.name);
this.$set(
this.detailsData,
"superviseCheckWay",
res.data.superviseCheckWay
);
this.$set(this.detailsData, "status", res.data.status);
}
});
},
handleSaveName() {
postSuperviseWayData({
id: this.$route.query.id || null,
name: this.detailsData.name,
superviseCheckWay: this.detailsData.superviseCheckWay,
status: this.detailsData.status ? this.detailsData.status : null,
})
.then((res) => {
this.editName = false;
this.$message.success("修改成功");
})
.catch(() => {
this.$message.error("修改失败");
});
},
//
beforeUpload(e) {
console.log("上传前e >>>>> ", e);
if (e.type.indexOf("pdf") < 0) {
this.$message.warning("只允许上传pdf");
return false;
}
return true;
},
//
async handleUpload(e) {
try {
const { file } = e;
let formData = new FormData();
formData.append("file", file);
const res = await uploadFileData(formData);
if (res?.url) {
let data = {
id: this.$route.query.id || null,
name: file.name.split(".")[0],
superviseCheckWay: res.url,
status: this.detailsData.status ? this.detailsData.status : null,
};
const res2 = await postSuperviseWayData(data);
if (res2) {
this.detailsData.superviseCheckWay = res.url;
this.detailsData.name = file.name.split(".")[0];
this.$message.success("新增成功");
}
} else {
this.$message.error("新增失败");
}
} catch (error) {
this.$message.error("新增失败");
}
},
},
}; };
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">

214
src/views/sluice/runManage/supervisionInspetion/methodsManage/index.vue

@ -1,34 +1,15 @@
<!-- 监督检查办法管理-水闸 --> <!-- 监督检查办法管理-水闸 -->
<script> <script>
import { import {
putDFPreventionControlPlan, getSuperviseWayList,
deleteDFMaintenancePlan, postSuperviseWayData,
postDFNewPreventionControlPlan, copySuperviseWayData,
getDFPreventionControlPlan, } from "@/api/sluice";
listUser,
} from "@/api/management";
import { listDikeInfo } from "@/api/yg/dikeInfo";
import { getSuperviseWayList } from "@/api/sluice";
export default { export default {
name: "InspectionItems", name: "InspectionItems",
data() { data() {
return { return {
paramsData: {
name: "",
type: null,
dikeName: "",
selectLevel: "",
selectType: "",
},
dialogVisible: false,
prohibitEditing: false,
dikeTypeList: [],
personnelList: [], //
patrolType: [], //
workMonth: [], //
embankmentList: [], //
controlType: [], //
tableData: [], // tableData: [], //
pageData: { pageData: {
pageNum: 1, // pageNum: 1, //
@ -38,32 +19,62 @@ export default {
}, },
}; };
}, },
watch: { watch: {},
dialogVisible(newVal, oldVal) {
if (oldVal) {
this.prohibitEditing = false;
}
},
},
methods: { methods: {
// //
addMethod() { handleAddMethod() {
this.$router.push("methodManageDetails"); this.$router.push("methodManageDetails");
}, },
// //
deleteTableItem(row) { handleEditMethod(row) {
deleteDFMaintenancePlan(row.id).then((res) => { this.$router.push({
this.getTableData(); path: "methodManageDetails",
this.$message.success("删除成功"); query: {
id: row.id,
mode: "edit",
},
});
},
//
handlePreviewMethod(row) {
this.$router.push({
path: "methodManageDetails",
query: {
id: row.id,
mode: "preview",
},
}); });
}, },
// //
deleteWorkTableItem(id) { handleExportMethod(row) {
const index = this.workTable.findIndex((item) => item.id === id); if (row.superviseCheckWay && /^http/.test(row.superviseCheckWay)) {
if (index !== -1) { fetch(row.superviseCheckWay)
this.workTable.splice(index, 1); .then((response) => response.blob())
.then((blob) => {
const url = URL.createObjectURL(blob);
const a = document.createElement("a");
a.href = url;
a.setAttribute("download", row.name);
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
URL.revokeObjectURL(url);
});
} else {
this.$message("文件路径格式不正确");
} }
}, },
//
handleCopyMethod(row) {
copySuperviseWayData(row.id)
.then((res) => {
this.$message.success("复制成功");
this.getTableData();
})
.catch(() => {
this.$message.error("复制失败");
});
},
// //
getTableData() { getTableData() {
getSuperviseWayList({ getSuperviseWayList({
@ -90,34 +101,6 @@ export default {
} }
}); });
}, },
//
resetSearch() {
this.name = "";
this.selectStatus = "2";
this.getTableData();
},
//
getEmbData() {
listDikeInfo({
pageNum: 1,
pageSize: 20,
ids: null,
data: {
embankmentName: null,
endStationNumber: null,
embankmentType: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sort: "desc",
},
}).then((res) => {
this.embankmentList = res?.records || [];
});
},
// //
handleToItemsList(row) { handleToItemsList(row) {
this.$router.push({ this.$router.push({
@ -127,19 +110,25 @@ export default {
}, },
}); });
}, },
}, handleChangeStatus(row, status) {
created() { console.log("handleChangeStatus >>>>> ", row, status);
this.getDicts("embankment_type").then((response) => { postSuperviseWayData({
this.dikeTypeList = response.data; ...row,
status,
})
.then((res) => {
this.$message.success("修改成功");
this.getTableData();
})
.catch((err) => {
this.$message.error("修改失败");
}); });
}, },
},
created() {},
mounted() { mounted() {
// //
this.getTableData(); this.getTableData();
this.getEmbData();
this.getDicts("dh_jh_type").then((res) => {
this.controlType = res.data;
});
}, },
}; };
</script> </script>
@ -152,7 +141,7 @@ export default {
class="search-btn" class="search-btn"
style="margin-right: 16px; margin-bottom: 8px; float: right" style="margin-right: 16px; margin-bottom: 8px; float: right"
type="success" type="success"
@click="addMethod()" @click="handleAddMethod()"
>添加</el-button >添加</el-button
> >
<el-table class="table" height="640" :data="tableData" border> <el-table class="table" height="640" :data="tableData" border>
@ -161,18 +150,50 @@ export default {
<el-table-column prop="createTime" align="center" label="发布时间"> <el-table-column prop="createTime" align="center" label="发布时间">
</el-table-column> </el-table-column>
<el-table-column prop="updateTime" align="center" label="更新时间" /> <el-table-column prop="updateTime" align="center" label="更新时间" />
<el-table-column <el-table-column prop="status" align="center" label="当前状态">
prop="status" <template #default="{ row }">
align="center" <el-popconfirm
sortable title="确定停用吗"
label="当前状态" v-if="row.status == '0'"
/> @confirm="handleChangeStatus(row, '1')"
>
<span slot="reference" class="status-start">启用状态</span>
</el-popconfirm>
<el-popconfirm
title="确定启用吗"
v-if="row.status == '1'"
@confirm="handleChangeStatus(row, '0')"
>
<span slot="reference" class="status-stop">停用状态</span>
</el-popconfirm>
</template>
</el-table-column>
<el-table-column prop="address" align="center" label="操作"> <el-table-column prop="address" align="center" label="操作">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" size="small">编辑</el-button> <el-button
<el-button type="text" size="small">预览</el-button> type="text"
<el-button type="text" size="small">导出</el-button> size="small"
<el-button type="text" size="small">复制</el-button> @click="handleEditMethod(scope.row)"
>编辑</el-button
>
<el-button
type="text"
size="small"
@click="handlePreviewMethod(scope.row)"
>预览</el-button
>
<el-button
type="text"
size="small"
@click="handleExportMethod(scope.row)"
>导出</el-button
>
<el-button
type="text"
size="small"
@click="handleCopyMethod(scope.row)"
>复制</el-button
>
<el-button <el-button
type="text" type="text"
size="small" size="small"
@ -246,6 +267,21 @@ export default {
background-color: #2b8070; background-color: #2b8070;
} }
} }
.status-start {
color: #36b29e;
background: #ebf7f5;
padding: 2px 4px;
border-radius: 2px;
cursor: pointer;
}
.status-stop {
color: #f13939;
background: #feebeb;
padding: 2px 4px;
border-radius: 2px;
cursor: pointer;
}
} }
/deep/.el-input__count { /deep/.el-input__count {

195
src/views/sluice/runManage/supervisionInspetion/methodsManage/itemsDetails.vue

@ -4,15 +4,15 @@
<div class="method-details-page"> <div class="method-details-page">
<div class="flex justify-between items-center"> <div class="flex justify-between items-center">
<span v-if="editTitle"> <span v-if="editTitle">
<el-input class="input" v-model="title"></el-input> <el-input class="input" v-model="itemName"></el-input>
<i <i
class="el-icon-check cursor-pointer ml-4 font-16" class="el-icon-check cursor-pointer ml-4 font-16"
style="color: #409eff" style="color: #409eff"
@click="editTitle = !editTitle" @click="handleSaveTitle"
></i> ></i>
</span> </span>
<span v-else <span v-else
>{{ title }} >{{ itemName }}
<i <i
class="el-icon-edit cursor-pointer ml-4 font-16" class="el-icon-edit cursor-pointer ml-4 font-16"
style="color: #409eff" style="color: #409eff"
@ -38,20 +38,20 @@
<el-col :span="3"> <el-col :span="3">
<div class="item-row-content">检查项目</div> <div class="item-row-content">检查项目</div>
</el-col> </el-col>
<el-col :span="11"> <el-col :span="9">
<div class="item-row-content">问题描述</div> <div class="item-row-content">问题描述</div>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="8">
<div class="item-row-content item-row-content2"> <div class="item-row-content item-row-content2">
<div class="title-1">问题等级</div> <div class="title-1">问题等级</div>
<div class="flex w-full title-2"> <div class="flex w-full title-2">
<div class="flex-1 text-center items-center pt-4 pb-4"> <div class="w-33 justify-center flex items-center pt-4 pb-4">
一般 一般
</div> </div>
<div class="flex-1 text-center items-center pt-4 pb-4"> <div class="w-33 justify-center flex items-center pt-4 pb-4">
较重 较重
</div> </div>
<div class="flex-1 text-center items-center pt-4 pb-4"> <div class="flex-1 justify-center flex items-center pt-4 pb-4">
严重 严重
</div> </div>
</div> </div>
@ -61,38 +61,67 @@
<div class="item-row-content">操作</div> <div class="item-row-content">操作</div>
</el-col> </el-col>
</el-row> </el-row>
<el-row class="item-row" v-for="(item, index) in list" :key="item"> <el-row
class="item-row color-333"
v-for="(item, index) in questList"
:key="index"
>
<el-col :span="2"> <el-col :span="2">
<div class="item-row-content">2</div> <div class="item-row-content">{{ index + 1 }}</div>
</el-col> </el-col>
<el-col :span="3"> <el-col :span="3">
<div class="item-row-content">12122</div> <div class="item-row-content">{{ item.projectName }}</div>
</el-col> </el-col>
<el-col :span="11"> <el-col :span="9">
<div class="item-row-content"> <div class="item-row-content">
<div>这是内容</div> <el-input v-if="item.edit" v-model="item.content"></el-input>
<div v-else>{{ item.content }}</div>
</div> </div>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="8">
<div class="item-row-content item-row-content2"> <div class="item-row-content item-row-content2">
<div class="flex w-full title-2 h-full"> <div class="flex w-full title-2 h-full">
<div class="flex-1 text-center items-center pt-4 pb-4"> <div class="w-33 text-center flex items-center p-10">
一般 <el-input
v-if="item.edit"
v-model="item.sameGrade"
></el-input>
<div v-else class="word-break">{{ item.sameGrade }}</div>
</div> </div>
<div class="flex-1 text-center items-center pt-4 pb-4"> <div class="w-33 text-center flex items-center p-10">
较重 <el-input
v-if="item.edit"
v-model="item.heavyGrade"
></el-input>
<div v-else class="word-break">{{ item.heavyGrade }}</div>
</div> </div>
<div class="flex-1 text-center items-center pt-4 pb-4"> <div class="flex-1 text-center flex items-center p-10">
严重 <el-input
v-if="item.edit"
v-model="item.seriousGrade"
></el-input>
<div v-else class="word-break">{{ item.seriousGrade }}</div>
</div> </div>
</div> </div>
</div> </div>
</el-col> </el-col>
<el-col :span="2"> <el-col :span="2">
<div class="item-row-content"> <div class="item-row-content">
<el-button type="text" v-if="index == 0">添加</el-button> <el-button
<el-button type="text" v-else>修改</el-button> type="text"
<el-button type="text">删除</el-button> v-if="index == questList.length - 1"
@click="handleAddNewItem"
>添加</el-button
>
<el-button type="text" v-if="!item.edit" @click="item.edit = true"
>修改</el-button
>
<el-button type="text" v-else @click="handleSaveItem(item)"
>保存</el-button
>
<el-button type="text" v-if="questList.length > 1"
>删除</el-button
>
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
@ -101,27 +130,109 @@
</div> </div>
</template> </template>
<script> <script>
import {
getSuperviseWayItemDetailsData,
getSuperviseWayItemDetailsListData,
addSuperviseWayItemDetailsItemData,
updateSuperviseWayItemDetailsItemData,
updateSuperviseWayItemData,
} from "@/api/sluice";
export default { export default {
data() { data() {
return { return {
itemName: "",
editTitle: false, editTitle: false,
title: "标题",
searchVal: "", searchVal: "",
list: [ questList: [],
{ };
pro: "项目A",
questions: ["问题描述111"],
questionLevel: {
1: "实例1",
2: "实例2 ",
3: "实例3",
}, },
created() {
this.initData();
}, },
], methods: {
initData() {
getSuperviseWayItemDetailsData(this.$route.query.id).then((res) => {
this.itemName = res?.data?.name;
getSuperviseWayItemDetailsListData({
projectId: this.$route.query.id,
}).then((res) => {
this.questList = res.data.map((v) => {
return {
...v,
edit: false,
}; };
});
if (this.questList.length <= 0) {
console.log("????");
this.questList.push({
projectName: this.itemName,
content: "",
sameGrade: "",
heavyGrade: "",
seriousGrade: "",
edit: true,
});
}
});
});
},
handleAddNewItem() {
this.questList.push({
projectName: this.itemName,
content: "",
sameGrade: "",
heavyGrade: "",
seriousGrade: "",
edit: true,
});
},
handleSaveItem(item) {
if (!item.content) {
this.$message.warning("请填写问题描述");
return;
}
if (item.id) {
updateSuperviseWayItemDetailsItemData({
...item,
projectName: this.itemName,
projectId: this.$route.query.id,
})
.then((res) => {
item.edit = false;
})
.catch(() => {
this.$message.error("修改失败");
});
} else {
addSuperviseWayItemDetailsItemData({
...item,
projectName: this.itemName,
projectId: this.$route.query.id,
})
.then((res) => {
if (res.data) {
item.id = res.data.id;
}
item.edit = false;
})
.catch(() => {
this.$message.error("保存失败");
});
}
},
handleSaveTitle() {
updateSuperviseWayItemData({
id: this.$route.query.id,
name: this.itemName,
}).then((res) => {
this.$message.success("修改成功");
this.editTitle = !this.editTitle;
this.questList.forEach((item) => {
item.projectName = this.itemName;
});
});
},
}, },
created() {},
methods: {},
}; };
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
@ -156,6 +267,9 @@ export default {
padding: 10px; padding: 10px;
border: 1px solid #ccc; border: 1px solid #ccc;
height: 100%; height: 100%;
display: flex;
align-items: center;
flex-wrap: wrap;
} }
.item-row-content2 { .item-row-content2 {
padding: 0; padding: 0;
@ -166,10 +280,10 @@ export default {
width: 100%; width: 100%;
padding: 4px; padding: 4px;
text-align: center; text-align: center;
border-bottom: 1px solid #ccc; border-bottom: 2px solid #ccc;
} }
.title-2 { .title-2 {
border-top: 1px solid #ccc; // border-top: 1px solid #ccc;
& > *:nth-of-type(2) { & > *:nth-of-type(2) {
border-left: 2px solid #ccc; border-left: 2px solid #ccc;
border-right: 2px solid #ccc; border-right: 2px solid #ccc;
@ -182,5 +296,12 @@ export default {
.input { .input {
width: 200px; width: 200px;
} }
.w-33 {
width: 33%;
}
.color-333 {
color: #333;
}
} }
</style> </style>

46
src/views/sluice/runManage/supervisionInspetion/methodsManage/itemsList.vue

@ -11,11 +11,14 @@
v-for="item in listData" v-for="item in listData"
:key="item.id" :key="item.id"
class="items-list-item" class="items-list-item"
@click="handleToItemsSetting" @click="handleToItemsSetting(item)"
> >
<div class="font-14 font-bold">{{ item.name }}</div> <div class="font-14 font-bold">{{ item.name }}</div>
<div class="font-12 mt-12">2024-2-29 17:30:59</div> <div class="font-12 mt-12">{{ item.updateTime }}</div>
<i class="el-icon-error font-14 del-btn" @click.stop="() => {}"></i> <i
class="el-icon-error font-14 del-btn"
@click.stop="handleDel(item)"
></i>
</div> </div>
<div <div
v-if="!listData || !listData.length" v-if="!listData || !listData.length"
@ -57,6 +60,11 @@
</div> </div>
</template> </template>
<script> <script>
import {
addSuperviseWayItemData,
getSuperviseWayItemListData,
delSuperviseWayItemDetailsData,
} from "@/api/sluice";
export default { export default {
data() { data() {
return { return {
@ -70,8 +78,15 @@ export default {
}, },
}; };
}, },
created() {}, created() {
this.initData();
},
methods: { methods: {
initData() {
getSuperviseWayItemListData(this.$route.query.id).then((res) => {
this.listData = res.data || [];
});
},
handleAddNew() { handleAddNew() {
this.showAddDialog = true; this.showAddDialog = true;
}, },
@ -82,20 +97,28 @@ export default {
submitForm() { submitForm() {
this.$refs.ruleForm.validate((valid) => { this.$refs.ruleForm.validate((valid) => {
if (valid) { if (valid) {
this.listData.push({ addSuperviseWayItemData({
id: Math.random() * 10, wayId: this.$route.query.id,
name: this.ruleForm.name, name: this.ruleForm.name,
}); }).then((res) => {
this.listData.push(res.data);
this.$refs.ruleForm.resetFields(); this.$refs.ruleForm.resetFields();
this.showAddDialog = false; this.showAddDialog = false;
});
} }
}); });
}, },
handleToItemsSetting() { handleDel(row) {
console.log("??????"); delSuperviseWayItemDetailsData(row.id).then((res) => {
this.initData();
});
},
handleToItemsSetting(row) {
this.$router.push({ this.$router.push({
path: "methodsItemsDetails", path: "methodsItemsDetails",
query: {}, query: {
id: row.id,
},
}); });
}, },
}, },
@ -134,8 +157,9 @@ export default {
.items-list-item { .items-list-item {
position: relative; position: relative;
width: 240px; width: 240px;
height: 160px; height: 120px;
padding: 20px; padding: 20px;
box-sizing: border-box;
border: 1px solid #eee; border: 1px solid #eee;
border-radius: 10px; border-radius: 10px;
cursor: pointer; cursor: pointer;

8
vue.config.js

@ -36,6 +36,14 @@ module.exports = {
open: true, open: true,
proxy: { proxy: {
// detail: https://cli.vuejs.org/config/#devserver-proxy // detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VUE_APP_BASE_API + '/run/sz/superviseWay']: {
target: "http://172.16.34.27:18082",
changeOrigin: true,
// logLevel: 'debug',
pathRewrite: {
[process.env.VUE_APP_BASE_API +'/run/sz/superviseWay']: '/tianhui-admin-web/run/sz/superviseWay'
}
},
[process.env.VUE_APP_BASE_API]: { [process.env.VUE_APP_BASE_API]: {
target: "http://shuili-admin.product.dev.com:30115", target: "http://shuili-admin.product.dev.com:30115",
// target: "http://127.0.0.1:18082", // target: "http://127.0.0.1:18082",

Loading…
Cancel
Save