Browse Source

调度运用模块接口对接完成

sy-water-data-board-ui
hejunjie 1 year ago
parent
commit
f7156770ac
  1. 43
      src/api/scheduling/index.js
  2. 43
      src/api/scheduling/operaRecord.js
  3. 2
      src/store/index.js
  4. 22
      src/store/modules/scheduling.js
  5. 205
      src/views/sluice/runManage/dispatch/plan/components/edit.vue
  6. 66
      src/views/sluice/runManage/dispatch/plan/components/preview.vue
  7. 161
      src/views/sluice/runManage/dispatch/plan/index.vue
  8. 94
      src/views/sluice/runManage/dispatch/record/components/edit.vue
  9. 186
      src/views/sluice/runManage/dispatch/record/index.vue
  10. 136
      src/views/sluice/runManage/dispatch/utilize/index.vue
  11. 7
      src/views/sluice/runManage/monitoring/sluice/index.vue
  12. 5
      src/views/sluice/runManage/monitoring/sluice/manage/components/edit.vue
  13. 15
      src/views/sluice/runManage/monitoring/sluice/manage/index.vue
  14. 10
      src/views/sluice/runManage/monitoring/sluice/record/index.vue
  15. 12
      src/views/sluice/runManage/supervisionInspetion/questionManage/index.vue
  16. 9
      vue.config.js

43
src/api/scheduling/index.js

@ -0,0 +1,43 @@
// 调度计划接口
import request from '@/utils/request'
// 调度计划列表
export function postRunSzSchedulingList(data) {
return request({
url: `/run/sz/scheduling/list`,
method: 'post',
data
})
}
// 调度计划新增
export function postRunSzScheduling(data) {
return request({
url: `/run/sz/scheduling`,
method: 'post',
data
})
}
// 调度计划修改
export function putRunSzScheduling(data) {
return request({
url: `/run/sz/scheduling`,
method: 'put',
data
})
}
// 调度计划详情
export function getRunSzScheduling(id) {
return request({
url: `/run/sz/scheduling/${id}`,
method: 'get'
})
}
// 调度计划删除
export function delRunSzScheduling(id) {
return request({
url: `/run/sz/scheduling/${id}`,
method: 'delete'
})
}

43
src/api/scheduling/operaRecord.js

@ -0,0 +1,43 @@
// 操作记录接口
import request from '@/utils/request'
// 操作记录列表
export function postRunSzOperaRecordList(data) {
return request({
url: `/run/sz/opera-record/list`,
method: 'post',
data
})
}
// 操作记录新增
export function postRunSzOperaRecord(data) {
return request({
url: `/run/sz/opera-record`,
method: 'post',
data
})
}
// 操作记录修改
export function putRunSzOperaRecord(data) {
return request({
url: `/run/sz/opera-record`,
method: 'put',
data
})
}
// 操作记录详情
export function getRunSzOperaRecord(id) {
return request({
url: `/run/sz/opera-record/${id}`,
method: 'get'
})
}
// 操作记录删除
export function delRunSzOperaRecord(id) {
return request({
url: `/run/sz/opera-record/${id}`,
method: 'delete'
})
}

2
src/store/index.js

@ -4,6 +4,7 @@ import app from './modules/app'
import dict from './modules/dict'
import user from './modules/user'
import tagsView from './modules/tagsView'
import scheduling from './modules/scheduling'
import permission from './modules/permission'
import settings from './modules/settings'
import getters from './getters'
@ -28,6 +29,7 @@ const store = new Vuex.Store({
app,
user,
tagsView,
scheduling,
permission,
settings,
dict,

22
src/store/modules/scheduling.js

@ -0,0 +1,22 @@
const state = {
wagaData: {}
}
const mutations = {
SET_WAGADATA: (state, view) => {
state.wagaData = view
}
}
const actions = {
setWageData({ commit }, view) {
commit('SET_WAGADATA', view)
}
}
export default {
namespaced: true,
state,
mutations,
actions
}

205
src/views/sluice/runManage/dispatch/plan/components/edit.vue

@ -1,5 +1,11 @@
<script>
import {
getRunSzScheduling
} from "@/api/scheduling";
import {getToken} from "@/utils/auth";
import preview from "./preview.vue";
import {uploadFileData} from "@/api/system/upload";
export default {
name: "Edit",
props: {
@ -8,46 +14,121 @@ export default {
default: null
}
},
components: {
preview
},
data() {
return {
dialog: {
title: '预览',
dom: '',
visible: false
},
preViewFile: '',
file: null,
fileList: [],
headers: {
shuili: "water " + getToken(),
},
ruleForm: {
sluice: '',
plan: '',
sponsor: '',
code: '',
responsibility: '',
programme: '',
drawing: ''
planName: '',
engineeringManagementUnit: '',
wagaCode: '',
wagaName: '',
docs: []
},
rules: {
sluice: [
{ required: true, message: "请输入闸门名称", trigger: "blur" },
wagaName: [
{required: true, message: "请输入闸门名称", trigger: "blur"},
],
plan: [
{ required: true, message: "请输入计划名称", trigger: "blur" },
planName: [
{required: true, message: "请输入计划名称", trigger: "blur"},
],
sponsor: [
{ required: true, message: "请选择主管单位", trigger: "blur" },
engineeringManagementUnit: [
{required: true, message: "请选择主管单位", trigger: "blur"},
],
code: [
{ required: true, message: "请输入注册编码", trigger: "blur" },
],
responsibility: [
{ required: true, message: "请选择三个责任人", trigger: "blur" },
{required: true, message: "请输入注册编码", trigger: "blur"},
],
docs: [
{required: true, message: "请上传调度方案", trigger: "blur"},
]
}
}
},
fileList: []
async mounted() {
if (this.model) {
const data = await getRunSzScheduling(this.model.id)
this.ruleForm.planName = data.data.planName
this.ruleForm.engineeringManagementUnit = data.data.engineeringManagementUnit
this.ruleForm.wagaCode = data.data.wagaCode
this.ruleForm.wagaName = data.data.wagaName
this.ruleForm.docs = data.data.docs
this.fileList = data.data.docs
} else {
this.ruleForm.engineeringManagementUnit = this.$store.state.scheduling.wagaData.engineeringManagementUnit
this.ruleForm.wagaCode = this.$store.state.scheduling.wagaData.wagaCode
this.ruleForm.wagaName = this.$store.state.scheduling.wagaData.wagaName
}
},
methods: {
submitForm(callback) {
this.$refs.ruleForm.validate((valid) => {
if (valid) {
callback({
...this.ruleForm
})
}
})
},
handleUpload(e) {
const {file} = e;
let formData = new FormData();
formData.append("file", file);
uploadFileData(formData)
.then((res) => {
this.ruleForm.docs.push({
name: res.fileName,
url: res.url,
})
this.fileList = this.ruleForm.docs
})
},
beforeUpload(file) {
this.file = file
const isLt2M = file.size / 1024 / 1024 < 50;
if (!isLt2M) {
this.file = false
this.$message.error('上传头像图片大小不能超过 50m!');
return false
}
},
handleOpinionRemove(file) {
let index = this.fileList.findIndex((item) => item.uid === file.uid);
//
this.ruleForm.docs.splice(index, 1);
},
submitOpinionUpload(res, file) {
this.ruleForm.docs.push({
name: res.fileName,
url: res.url,
})
},
// dialog
closeDialog() {
this.dialog.visible = false
},
handlePreview(file) {
console.log(file);
this.dialog.visible = true
this.preViewFile = file.url
},
handleExceed(files, fileList) {
this.$message.warning(`当前限制选择 5 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);
},
beforeRemove(file, fileList) {
return this.$confirm(`确定移除 ${ file.name }`);
if (this.file) {
return this.$confirm(`确定移除 ${file.name}`);
}
}
}
}
@ -73,31 +154,32 @@ export default {
ref="ruleForm"
label-width="100px"
>
<el-col :span="24">
<el-form-item label-width="120px" label="水闸名称" prop="sluice">
<el-input style="width: 202px" v-model="ruleForm.sluice" placeholder="请输入水闸名称"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label-width="120px" label="计划名称" prop="plan">
<el-input style="width: 202px" v-model="ruleForm.plan" placeholder="请输入计划名称"></el-input>
<el-form-item label-width="120px" label="水闸名称" prop="wagaName">
<el-input disabled style="width: 202px" v-model="ruleForm.wagaName" placeholder="请输入水闸名称"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label-width="120px" label="主管单位" prop="sponsor">
<el-input style="width: 202px" v-model="ruleForm.sponsor"></el-input>
<el-form-item label-width="120px" label="主管单位" prop="engineeringManagementUnit">
<el-input disabled style="width: 202px" v-model="ruleForm.engineeringManagementUnit"
placeholder="请输入主管单位"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label-width="120px" label="注册编码" prop="code">
<el-input style="width: 202px" v-model="ruleForm.code" placeholder="请输入注册编码"></el-input>
<el-form-item label-width="120px" label="计划名称" prop="planName">
<el-input style="width: 202px" v-model="ruleForm.planName" placeholder="请输入计划名称"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label-width="120px" label="三个责任人" prop="responsibility">
<el-input style="width: 202px" v-model="ruleForm.responsibility"></el-input>
<el-form-item label-width="120px" label="注册编码" prop="wagaCode">
<el-input disabled style="width: 202px" v-model="ruleForm.wagaCode" placeholder="请输入注册编码"></el-input>
</el-form-item>
</el-col>
<!-- <el-col :span="12">-->
<!-- <el-form-item label-width="120px" label="三个责任人" prop="responsibility">-->
<!-- <el-input style="width: 202px" v-model="ruleForm.responsibility"></el-input>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<el-col :span="24">
<div style="display: flex; margin-bottom: 16px">
@ -113,42 +195,55 @@ export default {
</div>
</el-col>
<el-col :span="12">
<el-form-item label-width="120px" label="调度方案" prop="programme">
<el-form-item label-width="120px" label="调度方案" prop="docs">
<el-upload
class="upload-demo"
action="https://jsonplaceholder.typicode.com/posts/"
class="avatar-uploader"
action="#"
:http-request="handleUpload"
:on-preview="handlePreview"
:before-remove="beforeRemove"
:before-upload="beforeUpload"
:on-remove="handleOpinionRemove"
:on-success="submitOpinionUpload"
multiple
accept=".doc, .docx, .pdf, .png, .jpg"
:limit="5"
:on-exceed="handleExceed"
:auto-upload="false"
:file-list="fileList">
<el-button size="small" type="primary">点击上传</el-button>
<div slot="tip" class="el-upload__tip">只能上传doc/docx/pdf/png/JPG文件且不能超过50m</div>
</el-upload>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label-width="120px" label="水闸建设图纸" prop="drawing">
<el-upload
class="upload-demo"
action="https://jsonplaceholder.typicode.com/posts/"
:on-preview="handlePreview"
:before-remove="beforeRemove"
accept=".pdf, .png, .jpg"
multiple
:limit="5"
:on-exceed="handleExceed"
:auto-upload="false"
:file-list="fileList">
<el-button size="small" type="primary">点击上传</el-button>
<div slot="tip" class="el-upload__tip">只能上传pdf/png/JPG文件且不能超过50m</div>
</el-upload>
</el-form-item>
</el-col>
<div ref="word"></div>
<!-- <el-col :span="12">-->
<!-- <el-form-item label-width="120px" label="水闸建设图纸" prop="drawing">-->
<!-- <el-upload-->
<!-- class="upload-demo"-->
<!-- action="https://jsonplaceholder.typicode.com/posts/"-->
<!-- :on-preview="handlePreview"-->
<!-- :before-remove="beforeRemove"-->
<!-- accept=".pdf, .png, .jpg"-->
<!-- multiple-->
<!-- :limit="5"-->
<!-- :on-exceed="handleExceed"-->
<!-- :auto-upload="false"-->
<!-- :file-list="fileList">-->
<!-- <el-button size="small" type="primary">点击上传</el-button>-->
<!-- <div slot="tip" class="el-upload__tip">只能上传pdf/png/JPG文件且不能超过50m</div>-->
<!-- </el-upload>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
</el-form>
<el-dialog
:title="dialog.title"
@close="closeDialog"
:visible.sync="dialog.visible"
width="80%"
append-to-body
>
<preview v-if="dialog.visible" :url="preViewFile"></preview>
</el-dialog>
</div>
</template>

66
src/views/sluice/runManage/dispatch/plan/components/preview.vue

@ -0,0 +1,66 @@
<script>
import axios from 'axios';
const docx = require('docx-preview');
export default {
name: "preview",
props: {
url: {
type: String,
default: ''
}
},
data() {
return {
preView: -1,
pdfUrl: 0,
imgUrl: 0,
type: ''
}
},
methods: {
getUrl(res) {
if (res === 0) {
this.imgUrl = this.url
} else if(res === 1){
this.pdfUrl = this.url
} if(res === 2){
axios({
method: 'get',
responseType: 'blob',
url: this.url
}).then(({data}) => {
docx.renderAsync(data,this.$refs.word)
});
}
}
},
created() {
this.type = this.url.split('.').at(-1)
if (this.type === 'png' || this.type === 'jpg') {
this.preView = 0
} else if(this.type === 'pdf'){
this.preView = 1
} if(this.type === 'doc' || this.type === 'docx'){
this.preView = 2
}
this.getUrl(this.preView)
}
}
</script>
<template>
<div style="height: 90vh;">
<el-image style="width: 100%;height: 100%;" fit="contain" v-if="preView === 0" :src="imgUrl"></el-image>
<iframe style="width: 100%;height: 100%;" :src="pdfUrl" v-if="preView === 1"></iframe>
<div class="word" ref="word" v-if="preView === 2"></div>
</div>
</template>
<style scoped lang="less">
.word{
width: 100%;
height: 100%;
overflow: auto;
}
</style>

161
src/views/sluice/runManage/dispatch/plan/index.vue

@ -2,25 +2,23 @@
<script>
import Edit from './components/edit.vue'
import {
getDicts,
postSZInspectionProjectList,
postSZInspectionProject,
putSZInspectionProject,
deleteSZInspectionProject,
getSZInspectionProject,
} from "@/api/management";
postRunSzSchedulingList,
postRunSzScheduling,
putRunSzScheduling,
delRunSzScheduling
} from "@/api/scheduling";
export default {
name: "record",
name: "plan",
components: {
Edit
},
data() {
return {
searchForm: {
code: '',
name: '',
status: '',
plan: ''
wagaCode: '',
wagaName: '',
planName: ''
},
dialog: {
title: '新增水闸调度方案',
@ -46,35 +44,16 @@ export default {
this.pageData.pageSize = pageSize;
this.getTableData();
},
//
searchTableList() {
postSZInspectionProjectList({
data: {
timeView: {
timeField: "create_time",
},
type: this.searchType == 3 ? "" : this.searchType,
},
cv: {
name: "name",
type: "like",
value: this.searchInput,
},
pageSize: this.pageData.pageSize,
pageNum: this.pageData.pageNum,
}).then((res) => {
if (res) {
this.tableData = res.records;
this.pageData.total = res.total;
}
console.log("🚀表格数据🚀", res);
});
search() {
this.pageData.pageNum = 1;
this.getTableData();
},
//
resetSearch() {
this.pageData.pageNum = 1;
if (!this.$refs['searchForm']) return
this.$refs['searchForm'].resetFields()
this.searchTableList();
this.getTableData();
},
//
handleAdd() {
@ -94,33 +73,33 @@ export default {
this.mdl = {...row, eventType: 'edit'}
this.dialog.visible = true
},
handleDelete(row) {
this.dialog.dom = 'Edit'
this.mdl = {...row}
this.dialog.visible = true
async handleDelete(row) {
await delRunSzScheduling(row.id)
this.$message.success('删除成功')
this.getTableData()
},
//
submitForm(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
console.log(this.ruleForm);
if (this.ruleForm.id) {
putSZInspectionProject(this.ruleForm).then(() => {
this.getTableData();
this.dialogVisible = false;
this.$message.success("更新成功");
});
submitForm() {
this.$refs.component.submitForm(async (from) => {
if (this.mdl) {
await putRunSzScheduling({
id: this.mdl.id,
...from,
wagaCode: this.$route.query.wagaCode
})
this.closeDialog()
this.getTableData()
this.$message.success('修改成功')
} else {
postSZInspectionProject(this.ruleForm).then(() => {
this.getTableData();
this.dialogVisible = false;
this.$message.success("添加成功");
});
}
} else {
return false;
await postRunSzScheduling({
...from,
wagaCode: this.$route.query.wagaCode
})
this.$message.success('新增成功')
this.closeDialog()
this.getTableData()
}
});
})
},
// dialog
closeDialog() {
@ -129,13 +108,12 @@ export default {
},
//
getTableData() {
(this.searchInput = ""),
(this.searchType = 3),
postSZInspectionProjectList({
// data
postRunSzSchedulingList({
data: {
timeView: {
timeField: "create_time",
},
wagaName: this.searchForm.wagaName,
wagaCode: this.$route.query.wagaCode,
planName: this.searchForm.planName
},
cv: {
name: "name",
@ -148,7 +126,6 @@ export default {
this.tableData = res.records;
this.pageData.total = res.total;
}
console.log("🚀表格数据🚀", res);
});
},
},
@ -161,43 +138,39 @@ export default {
<template>
<div class="slider-right">
<div class="top-title">水闸操作记录</div>
<div class="top-title">{{ this.$route.query.wagaName + '- 调度计划管理' }}</div>
<div class="table-box">
<el-form inline :model="searchForm" ref="searchForm" class="demo-ruleForm">
<el-form-item label="注册编码:" prop="gate">
<el-input v-model="searchForm.code" class="search-input" placeholder="请输入注册编码"></el-input>
</el-form-item>
<el-form-item label="计划名称:" prop="instruct">
<el-input v-model="searchForm.plan" class="search-input" placeholder="请输入计划名称"></el-input>
<!-- <el-form inline :model="searchForm" ref="searchForm" class="demo-ruleForm">
<el-form-item label="注册编码:" prop="wagaCode">
<el-input v-model="searchForm.wagaCode" class="search-input" placeholder="请输入注册编码"></el-input>
</el-form-item>
<el-form-item label="水闸名称:" prop="number">
<el-input v-model="searchForm.name" class="search-input" placeholder="请输入水闸名称"></el-input>
<el-form-item label="计划名称:" prop="planName">
<el-input v-model="searchForm.planName" class="search-input" placeholder="请输入计划名称"></el-input>
</el-form-item>
<el-form-item label="审批状态:" prop="number">
<el-input v-model="searchForm.status" class="search-input"></el-input>
<el-form-item label="水闸名称:" prop="wagaName">
<el-input v-model="searchForm.wagaName" class="search-input" placeholder="请输入水闸名称"></el-input>
</el-form-item>
<el-form-item>
<el-button class="search-btn" type="success" @click="searchTableList()">查询</el-button>
<el-button class="search-btn" type="success" @click="search()">查询</el-button>
<el-button @click="resetSearch()">重置</el-button>
</el-form-item>
</el-form>
</el-form>-->
<el-button
class="search-btn"
style="margin-right: 16px; margin-bottom: 8px; float: right"
type="success"
@click="handleAdd()"
>新增</el-button
>新增
</el-button
>
<el-table height="625" :data="tableData" border style="width: 100%">
<el-table-column type="index" align="center" label="序号" width="100">
</el-table-column>
<el-table-column prop="name" align="center" label="注册编码">
</el-table-column>
<el-table-column prop="center" align="center" label="计划名称">
<el-table-column prop="wagaCode" align="center" label="注册编码">
</el-table-column>
<el-table-column prop="name" align="center" label="水闸名称">
<el-table-column prop="planName" align="center" label="计划名称">
</el-table-column>
<el-table-column prop="name" align="center" label="三个责任人">
<el-table-column prop="wagaName" align="center" label="水闸名称">
</el-table-column>
<el-table-column
prop="createTime"
@ -220,16 +193,18 @@ export default {
@click="handleCheck(scope.row)"
type="text"
size="small"
>查看</el-button
>查看
</el-button
>
<el-button
style="margin-right: 16px"
@click="handleEdit(scope.row)"
type="text"
size="small"
>编辑</el-button
>编辑
</el-button
>
<el-popconfirm
<!-- <el-popconfirm
confirm-button-text="确定"
cancel-button-text="取消"
icon="el-icon-info"
@ -242,9 +217,10 @@ export default {
type="text"
size="small"
slot="reference"
>删除</el-button
>删除
</el-button
>
</el-popconfirm>
</el-popconfirm>-->
</template>
</el-table-column>
</el-table>
@ -267,11 +243,12 @@ export default {
:visible.sync="dialog.visible"
width="50%"
>
<component :is="dialog.dom" :model="mdl"></component>
<component v-if="dialog.visible" ref="component" :is="dialog.dom" :model="mdl"></component>
<div slot="footer" class="dialog-footer">
<el-button size="mini" @click="closeDialog"> </el-button>
<el-button size="mini" type="primary" @click="submitForm('ruleForm')"
>保存</el-button
>保存
</el-button
>
</div>
</el-dialog>

94
src/views/sluice/runManage/dispatch/record/components/edit.vue

@ -1,5 +1,7 @@
<script>
import {
getRunSzOperaRecord
} from "@/api/scheduling/operaRecord";
export default {
name: "Edit",
props: {
@ -11,32 +13,59 @@ export default {
data() {
return {
ruleForm: {
name: '',
number: '',
control: '',
instruct: '',
leftTrunk: '',
rightTrunk: '',
upstream: '',
downstream: '',
gate: '',
gateNum: '',
controlLevel: '',
commandNum: '',
leftDry: '',
rightDry: '',
upstreamLevel: '',
downstreamLevel: '',
opening: '',
time: ''
operatorTime: ''
},
rules: {
name: [
gate: [
{ required: true, message: "请输入闸门名称", trigger: "blur" },
],
control: [
controlLevel: [
{ required: true, message: "请输入控制水位", trigger: "blur" },
],
leftTrunk: [
leftDry: [
{ required: true, message: "请输入左干", trigger: "blur" },
],
rightTrunk: [
rightDry: [
{ required: true, message: "请输入右干", trigger: "blur" },
],
}
}
},
async mounted() {
this.ruleForm.operatorTime = Date.now()
//
if (this.model) {
const data = await getRunSzOperaRecord(this.model.id)
this.ruleForm.gate = data.data.gate
this.ruleForm.gateNum = data.data.gateNum
this.ruleForm.controlLevel = data.data.controlLevel
this.ruleForm.commandNum = data.data.commandNum
this.ruleForm.leftDry = data.data.leftDry
this.ruleForm.rightDry = data.data.rightDry
this.ruleForm.upstreamLevel = data.data.upstreamLevel
this.ruleForm.downstreamLevel = data.data.downstreamLevel
this.ruleForm.opening = data.data.opening
}
},
methods: {
submitForm(callback) {
this.$refs.ruleForm.validate((valid) => {
if (valid) {
callback({
...this.ruleForm
})
}
})
},
}
}
</script>
@ -57,48 +86,48 @@ export default {
<el-form
:model="ruleForm"
:rules="rules"
:disabled="!!model"
:disabled="!!model && model.eventType !== 'edit'"
ref="ruleForm"
label-width="100px"
>
<el-col :span="12">
<el-form-item label-width="120px" label="闸门" prop="name">
<el-input style="width: 202px" v-model="ruleForm.name"></el-input>
<el-form-item label-width="120px" label="闸门" prop="gate">
<el-input style="width: 202px" v-model="ruleForm.gate"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label-width="120px" label="闸号" prop="number">
<el-input style="width: 202px" v-model="ruleForm.number"></el-input>
<el-form-item label-width="120px" label="闸号" prop="gateNum">
<el-input style="width: 202px" v-model="ruleForm.gateNum"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label-width="120px" label="控制水位" prop="control">
<el-input style="width: 202px" v-model="ruleForm.control"></el-input>
<el-form-item label-width="120px" label="控制水位" prop="controlLevel">
<el-input style="width: 202px" v-model="ruleForm.controlLevel"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label-width="120px" label="指令号" prop="instruct">
<el-input style="width: 202px" v-model="ruleForm.instruct"></el-input>
<el-form-item label-width="120px" label="指令号" prop="commandNum">
<el-input style="width: 202px" v-model="ruleForm.commandNum"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label-width="120px" label="左干" prop="leftTrunk">
<el-input style="width: 202px" v-model="ruleForm.leftTrunk"></el-input>
<el-form-item label-width="120px" label="左干" prop="leftDry">
<el-input style="width: 202px" v-model="ruleForm.leftDry"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label-width="120px" label="右干" prop="rightTrunk">
<el-input style="width: 202px" v-model="ruleForm.rightTrunk"></el-input>
<el-form-item label-width="120px" label="右干" prop="rightDry">
<el-input style="width: 202px" v-model="ruleForm.rightDry"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label-width="120px" label="上游水位" prop="upstream">
<el-input style="width: 202px" v-model="ruleForm.upstream"></el-input>
<el-input style="width: 202px" v-model="ruleForm.upstreamLevel"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label-width="120px" label="下游水位" prop="downstream">
<el-input style="width: 202px" v-model="ruleForm.downstream"></el-input>
<el-input style="width: 202px" v-model="ruleForm.downstreamLevel"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
@ -108,7 +137,12 @@ export default {
</el-col>
<el-col :span="12">
<el-form-item label-width="120px" label="时间" prop="time">
<el-input style="width: 202px" v-model="ruleForm.time"></el-input>
<el-date-picker
v-model="ruleForm.operatorTime"
type="datetime"
value-format="timestamp"
placeholder="选择日期时间">
</el-date-picker>
</el-form-item>
</el-col>
</el-form>

186
src/views/sluice/runManage/dispatch/record/index.vue

@ -1,14 +1,13 @@
<!-- 巡查项目管理-水闸 -->
<!-- 操作记录-水闸 -->
<script>
import Edit from './components/edit.vue'
import {
getDicts,
postSZInspectionProjectList,
postSZInspectionProject,
putSZInspectionProject,
deleteSZInspectionProject,
getSZInspectionProject,
} from "@/api/management";
postRunSzOperaRecordList,
postRunSzOperaRecord,
putRunSzOperaRecord,
delRunSzOperaRecord
} from "@/api/scheduling/operaRecord";
export default {
name: "record",
components: {
@ -18,8 +17,8 @@ export default {
return {
searchForm: {
gate: '',
instruct: '',
number: ''
commandNum: '',
gateNum: ''
},
dialog: {
title: '新增操作记录',
@ -27,7 +26,7 @@ export default {
visible: false
},
mdl: null,
tableData: [], //
tableData: [],
pageData: {
pageNum: 1, //
pageSize: 10, //
@ -45,84 +44,73 @@ export default {
this.pageData.pageSize = pageSize;
this.getTableData();
},
//
searchTableList() {
postSZInspectionProjectList({
data: {
timeView: {
timeField: "create_time",
},
type: this.searchType == 3 ? "" : this.searchType,
},
cv: {
name: "name",
type: "like",
value: this.searchInput,
},
pageSize: this.pageData.pageSize,
pageNum: this.pageData.pageNum,
}).then((res) => {
if (res) {
this.tableData = res.records;
this.pageData.total = res.total;
}
console.log("🚀表格数据🚀", res);
});
search() {
this.pageData.pageNum = 1;
this.getTableData();
},
//
resetSearch() {
this.pageData.pageNum = 1;
if (!this.$refs['searchForm']) return
this.$refs['searchForm'].resetFields()
this.searchTableList();
this.getTableData();
},
//
handleAdd() {
this.dialog.title = '新增操作记录'
this.dialog.dom = 'Edit'
this.dialog.visible = true
},
handleCheck(row) {
this.dialog.title = '查看操作记录'
this.dialog.dom = 'Edit'
this.mdl = {...row}
this.dialog.visible = true
},
//
submitForm(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
console.log(this.ruleForm);
if (this.ruleForm.id) {
putSZInspectionProject(this.ruleForm).then(() => {
this.getTableData();
this.dialogVisible = false;
this.$message.success("更新成功");
});
} else {
postSZInspectionProject(this.ruleForm).then(() => {
this.getTableData();
this.dialogVisible = false;
this.$message.success("添加成功");
});
}
handleEdit(row) {
this.dialog.title = '编辑操作记录'
this.dialog.dom = 'Edit'
this.mdl = {...row, eventType: 'edit'}
this.dialog.visible = true
},
async handleDelete(row) {
await delRunSzOperaRecord(row.id)
this.$message.success('删除成功')
this.getTableData()
},
submitForm() {
this.$refs.component.submitForm(async (from) => {
if (this.mdl) {
await putRunSzOperaRecord({
id: this.mdl.id,
...from,
wagaCode: this.$route.query.wagaCode
})
this.closeDialog()
this.getTableData()
this.$message.success('修改成功')
} else {
console.log("校验不通过");
return false;
await postRunSzOperaRecord({
...from,
wagaCode: this.$route.query.wagaCode
})
this.$message.success('新增成功')
this.closeDialog()
this.getTableData()
}
});
})
},
// dialog
closeDialog() {
this.dialog.visible = false
this.mdl = null
},
//
getTableData() {
(this.searchInput = ""),
(this.searchType = 3),
postSZInspectionProjectList({
postRunSzOperaRecordList({
data: {
timeView: {
timeField: "create_time",
},
gate: this.searchForm.gate,
gateNum: this.searchForm.gateNum,
commandNum: this.searchForm.commandNum,
wagaCode: this.$route.query.wagaCode
},
cv: {
name: "name",
@ -135,7 +123,6 @@ export default {
this.tableData = res.records;
this.pageData.total = res.total;
}
console.log("🚀表格数据🚀", res);
});
},
},
@ -154,14 +141,14 @@ export default {
<el-form-item label="闸门:" prop="gate">
<el-input v-model="searchForm.gate" class="search-input" placeholder="请输入闸门"></el-input>
</el-form-item>
<el-form-item label="指令号:" prop="instruct">
<el-input v-model="searchForm.instruct" class="search-input" placeholder="请输入指令号"></el-input>
<el-form-item label="指令号:" prop="commandNum">
<el-input v-model="searchForm.commandNum" class="search-input" placeholder="请输入指令号"></el-input>
</el-form-item>
<el-form-item label="闸号:" prop="number">
<el-input v-model="searchForm.number" class="search-input" placeholder="请输入闸号"></el-input>
<el-form-item label="闸号:" prop="gateNum">
<el-input v-model="searchForm.gateNum" class="search-input" placeholder="请输入闸号"></el-input>
</el-form-item>
<el-form-item>
<el-button class="search-btn" type="success" @click="searchTableList()">查询</el-button>
<el-button class="search-btn" type="success" @click="search()">查询</el-button>
<el-button @click="resetSearch()">重置</el-button>
</el-form-item>
</el-form>
@ -170,31 +157,30 @@ export default {
style="margin-right: 16px; margin-bottom: 8px; float: right"
type="success"
@click="handleAdd()"
>新增</el-button
>新增
</el-button
>
<el-table height="625" :data="tableData" border style="width: 100%">
<el-table-column type="index" align="center" label="序号">
</el-table-column>
<el-table-column prop="name" align="center" label="闸门" min-width="150">
<el-table-column prop="gate" align="center" label="闸门" min-width="150">
</el-table-column>
<el-table-column prop="name" align="center" label="指令号" min-width="120">
<el-table-column prop="commandNum" align="center" label="指令号" min-width="120">
</el-table-column>
<el-table-column prop="name" align="center" label="控制水位(m)" min-width="120">
<el-table-column prop="controlLevel" align="center" label="控制水位(m)" min-width="120">
</el-table-column>
<el-table-column prop="name" align="center" label="左干(m³/s)" min-width="120">
<el-table-column prop="leftDry" align="center" label="左干(m³/s)" min-width="120">
</el-table-column>
<el-table-column prop="name" align="center" label="右干(m³/s)" min-width="120">
<el-table-column prop="rightDry" align="center" label="右干(m³/s)" min-width="120">
</el-table-column>
<el-table-column prop="name" align="center" label="上游水位(m)" min-width="120">
<el-table-column prop="upstreamLevel" align="center" label="上游水位(m)" min-width="120">
</el-table-column>
<el-table-column prop="name" align="center" label="下游水位(m)" min-width="120">
<el-table-column prop="downstreamLevel" align="center" label="下游水位(m)" min-width="120">
</el-table-column>
<el-table-column prop="name" align="center" label="闸号" min-width="150">
<el-table-column prop="gateNum" align="center" label="闸号" min-width="150">
</el-table-column>
<el-table-column prop="name" align="center" label="操作人" min-width="120">
</el-table-column>
<el-table-column prop="name" align="center" label="监护人" min-width="120">
</el-table-column>
<el-table-column
min-width="200"
prop="createTime"
@ -211,18 +197,43 @@ export default {
label="更新时间"
>
</el-table-column>
<el-table-column prop="address" align="center" label="操作" fixed="right">
<!-- <el-table-column prop="address" align="center" label="操作">
<template slot-scope="scope">
<el-button
style="margin-right: 16px"
@click="handleCheck(scope.row)"
type="text"
size="small"
>查看
</el-button
>
查看
</el-button>
<el-button
style="margin-right: 16px"
@click="handleEdit(scope.row)"
type="text"
size="small"
>编辑
</el-button
>
<el-popconfirm
confirm-button-text="确定"
cancel-button-text="取消"
icon="el-icon-info"
icon-color="red"
title="确定删除吗?"
@confirm="handleDelete(scope.row)"
>
<el-button
style="color: red"
type="text"
size="small"
slot="reference"
>删除
</el-button
>
</el-popconfirm>
</template>
</el-table-column>
</el-table-column>-->
</el-table>
<el-pagination
background
@ -243,11 +254,12 @@ export default {
:visible.sync="dialog.visible"
width="50%"
>
<component :is="dialog.dom" :model="mdl"></component>
<component :is="dialog.dom" v-if="dialog.visible" ref="component" :model="mdl"></component>
<div slot="footer" class="dialog-footer">
<el-button size="mini" @click="closeDialog"> </el-button>
<el-button size="mini" type="primary" @click="submitForm('ruleForm')"
>保存</el-button
>保存
</el-button
>
</div>
</el-dialog>

136
src/views/sluice/runManage/dispatch/utilize/index.vue

@ -1,20 +1,17 @@
<!-- 调度运用管理-水闸 -->
<script>
import {
getDicts,
postSZInspectionProjectList,
} from "@/api/management";
import {
getRunSzDeviceRecord
} from "@/api/sluice";
import { getDicts } from "@/api/management";
import { getRunProjectList } from "@/api/sluice/index";
let that
export default {
name: "utilize",
data() {
return {
searchInput: "",
searchType: 3,
examType: [], //
tableData: [], //
searchForm: {
wagaName: ''
},
engineeringScaleType: [], //
tableData: [], //
pageData: {
pageNum: 1, //
pageSize: 10, //
@ -23,17 +20,32 @@ export default {
},
};
},
created() {
//
that = this
},
filters: {
//
filterEngineeringScale (price) {
const data = that.engineeringScaleType.filter((res) => res.dictValue == price)
return data[0] ? data[0].dictLabel : '/'
}
},
methods: {
handleGoPlan(row) {
this.$store.dispatch('scheduling/setWageData', row)
this.$router.push({
path: "plan",
query: { id: row.id },
query: {
wagaCode: row.wagaCode,
wagaName: row.wagaName
},
});
},
handleGoRecord(row) {
this.$router.push({
path: "record",
query: { id: row.id },
query: { wagaCode: row.wagaCode },
});
},
handleCurrentPageChange(page) {
@ -44,39 +56,15 @@ export default {
this.pageData.pageSize = pageSize;
this.getTableData();
},
//
searchTableList() {
postSZInspectionProjectList({
data: {
timeView: {
timeField: "create_time",
},
type: this.searchType == 3 ? "" : this.searchType,
},
cv: {
name: "name",
type: "like",
value: this.searchInput,
},
pageSize: this.pageData.pageSize,
pageNum: this.pageData.pageNum,
}).then((res) => {
if (res) {
this.tableData = res.records;
this.pageData.total = res.total;
}
console.log("🚀表格数据🚀", res);
});
search() {
this.pageData.pageNum = 1;
this.getTableData();
},
//
getTableData() {
(this.searchInput = ""),
(this.searchType = 3),
getRunSzDeviceRecord({
getRunProjectList({
data: {
timeView: {
timeField: "create_time",
},
wagaName: this.searchForm.wagaName
},
cv: {
name: "name",
@ -89,58 +77,47 @@ export default {
this.tableData = res.records;
this.pageData.total = res.total;
}
console.log("🚀表格数据🚀", res);
});
},
},
mounted() {
//
getDicts("engineering_scale").then((res) => {
this.engineeringScaleType = res.data;
});
//
this.getTableData();
//
getDicts("xs_classfy").then((res) => {
this.examType = res.data;
});
},
};
</script>
<template>
<div class="slider-right">
<div class="top-title">基础信息管理</div>
<div class="top-title">调度运用管理</div>
<div class="table-box">
<div class="top-search">
<span>水闸名称</span>
<el-input
class="search-input"
v-model="searchInput"
placeholder="请输入水闸名称"
/>
<span>巡查类型</span>
<el-select v-model="searchType" placeholder="请选择">
<el-option
v-for="item in examType"
:label="item.dictLabel"
:value="item.dictValue"
:key="item.id"
></el-option>
<el-option label="全部" :value="3"></el-option>
</el-select>
<el-button class="search-btn" type="success" @click="searchTableList()"
>搜索</el-button
>
</div>
<el-form inline :model="searchForm" ref="searchForm" class="demo-ruleForm">
<el-form-item label="水闸名称:" prop="wagaName">
<el-input v-model="searchForm.wagaName" placeholder="请输入水闸名称"></el-input>
</el-form-item>
<el-form-item>
<el-button class="search-btn" type="success" @click="search()">搜索</el-button>
</el-form-item>
</el-form>
<el-table height="625" :data="tableData" border>
<el-table-column type="index" align="center" label="序号" width="100">
</el-table-column>
<el-table-column prop="name" align="center" label="水闸名称">
<el-table-column prop="wagaName" align="center" label="水闸名称">
</el-table-column>
<el-table-column prop="name" align="center" label="水闸名代码">
<el-table-column prop="wagaCode" align="center" label="水闸名代码">
</el-table-column>
<el-table-column prop="name" align="center" label="管理单位">
<el-table-column prop="engScal" align="center" label="工程规模">
<template slot-scope="scope">
{{ scope.row.engScal | filterEngineeringScale }}
</template>
</el-table-column>
<el-table-column prop="name" align="center" label="行政主管部门">
<el-table-column prop="engineeringManagementUnit" align="center" label="管理单位">
</el-table-column>
<el-table-column prop="createTime" align="center" label="最近巡查回见">
<el-table-column prop="engineeringManagementUnit" align="center" label="行政主管部门">
</el-table-column>
<el-table-column prop="address" align="center" label="操作">
<template slot-scope="scope">
@ -194,17 +171,6 @@ export default {
padding: 16px;
background-color: white;
.top-search {
display: flex;
align-items: center;
margin-bottom: 8px;
.search-input {
width: 300px;
margin-right: 10px;
}
}
.search-btn {
margin-left: 10px;
background-color: #37b29e;

7
src/views/sluice/runManage/monitoring/sluice/index.vue

@ -129,7 +129,6 @@ export default {
getDicts("sluice_type").then((res) => {
this.sluiceType = res.data;
});
console.log(123)
await this.getTreeData();
//
await this.getTableData();
@ -139,7 +138,7 @@ export default {
<template>
<div class="slider-right">
<div class="top-title">基础信息管理</div>
<div class="top-title">水闸动态监测</div>
<div class="table-box">
<el-form inline :model="searchForm" ref="searchForm" class="demo-ruleForm">
<el-form-item label="区域选择:" prop="adcd">
@ -168,8 +167,8 @@ export default {
<el-input v-model="searchForm.wagaName" class="search-input" placeholder="请输入水闸名称"></el-input>
</el-form-item>
<el-form-item>
<el-button class="search-btn" type="success" @click="search()">查询</el-button>
<el-button @click="resetSearch()">重置</el-button>
<el-button class="search-btn" type="success" @click="search">查询</el-button>
<el-button @click="resetSearch">重置</el-button>
</el-form-item>
</el-form>
<el-table height="625" :data="tableData" border>

5
src/views/sluice/runManage/monitoring/sluice/manage/components/edit.vue

@ -83,6 +83,9 @@ export default {
this.ruleForm.message = data.data.message
this.ruleForm.warningType = data.data.warningType
this.ruleForm.warningLevel = data.data.warningLevel
this.ruleForm.reportInterval = data.data.configs[0].reportInterval
this.ruleForm.minThreshold = data.data.configs[0].minThreshold
this.ruleForm.maxThreshold = data.data.configs[0].maxThreshold
}
}
}
@ -127,7 +130,7 @@ export default {
</el-col>
<el-col :span="12">
<el-form-item label-width="120px" label="设备id" prop="number">
<el-input disabled style="width: 202px" v-model="ruleForm.deviceId"></el-input>
<el-input style="width: 202px" v-model="ruleForm.deviceId"></el-input>
</el-form-item>
</el-col>
<el-col :span="24">

15
src/views/sluice/runManage/monitoring/sluice/manage/index.vue

@ -95,13 +95,28 @@ export default {
await putSZDevice({
id: this.mdl.id,
...from,
configs: [
{
maxThreshold: from.maxThreshold,
minThreshold: from.minThreshold,
reportInterval: from.reportInterval
}
],
wagaCode: this.$route.query.wagaCode
})
this.$message.success('修改成功')
this.closeDialog()
this.getTableData()
} else {
await postSZDevice({
...from,
configs: [
{
maxThreshold: from.maxThreshold,
minThreshold: from.minThreshold,
reportInterval: from.reportInterval
}
],
wagaCode: this.$route.query.wagaCode
})
this.$message.success('新增成功')

10
src/views/sluice/runManage/monitoring/sluice/record/index.vue

@ -45,6 +45,7 @@ export default {
//
resetSearch() {
this.pageData.pageNum = 1;
this.searchForm.warningTime = null
if (!this.$refs['searchForm']) return
this.$refs['searchForm'].resetFields()
this.getTableData();
@ -53,10 +54,11 @@ export default {
getTableData() {
getRunSzDeviceRecordList({
data: {
deviceId: this.$route.query.id,
warningLevel: this.searchForm.warningLevel === -1 ? '' : this.searchForm.warningLevel,
warningType: this.searchForm.warningType === -1 ? '' : this.searchForm.warningType,
warningEndTime: this.searchForm.warningTime[0] ? this.searchForm.warningTime[0] : '',
warningStartTime: this.searchForm.warningTime[1] ? this.searchForm.warningTime[1] : '',
warningEndTime: this.searchForm.warningTime ? this.searchForm.warningTime[0] : '',
warningStartTime: this.searchForm.warningTime ? this.searchForm.warningTime[1] : '',
},
cv: {
name: "name",
@ -142,8 +144,8 @@ export default {
</el-time-picker>
</el-form-item>
<el-form-item>
<el-button class="search-btn" type="success" @click="search()">查询</el-button>
<el-button @click="resetSearch()">重置</el-button>
<el-button class="search-btn" type="success" @click="search">查询</el-button>
<el-button @click="resetSearch">重置</el-button>
</el-form-item>
</el-form>
<el-table height="625" :data="tableData" border style="width: 100%">

12
src/views/sluice/runManage/supervisionInspetion/questionManage/index.vue

@ -216,18 +216,6 @@ export default {
}
return true;
},
handleUpload(e) {
const { file } = e;
let fData = new FormData();
fData.append("file", file);
uploadFileData(fData)
.then((res) => {
this.dealForm.fileList.push(res.url);
})
.catch((err) => {
console.log("err >>>>> ", err);
});
},
formatAdcd(adcd) {
if (adcd) {

9
vue.config.js

@ -43,7 +43,14 @@ module.exports = {
[process.env.VUE_APP_BASE_API +'/run/']: '/tianhui-admin-web/run/'
}
},
[ '/profile/']: {
target: 'http://shuili-admin.product.dev.com:30115',
changeOrigin: true,
// logLevel: 'debug',
pathRewrite: {
['/profile/']: '/tianhui-admin-web/profile/'
}
},
// 曹琪本地接口
// [process.env.VUE_APP_BASE_API]: {
// target: 'http://172.16.34.59:18083',

Loading…
Cancel
Save