Browse Source

feat: 巡查计划管理新增、编辑功能

feature-sy-v1.0.0
易浩轩 1 year ago
parent
commit
dffd5a768d
  1. 60
      src/api/management/index.js
  2. 2
      src/views/runManage/engineering/inspectionItems/Dike.vue
  3. 223
      src/views/runManage/engineering/inspectionPlan/Dike.vue

60
src/api/management/index.js

@ -50,3 +50,63 @@ export function deleteEmbankmentInspection(id) {
method: 'delete', method: 'delete',
}) })
} }
// 巡查计划管理-查询堤防巡视检查列表
export function postInspectionPlanlist(data) {
return request({
url: '/run/df/plan/list',
method: 'post',
data
})
}
// 巡查计划管理-堤防巡视检查详情
export function getInspectionPlan(id) {
return request({
url: `/run/df/plan/${id}`,
method: 'get',
})
}
// 巡查计划管理-新增堤防巡视检查
export function postInspectionPlan(data) {
return request({
url: '/run/df/plan',
method: 'post',
data
})
}
// 巡查计划管理-修改堤防巡视检查
export function putInspectionPlan(data) {
return request({
url: '/run/df/plan',
method: 'put',
data
})
}
// 巡查计划管理-删除堤防巡视检查
export function deleteInspectionPlan(id) {
return request({
url: `/run/df/plan/${id}`,
method: 'delete',
})
}
// 巡查计划管理-获取人员信息
export function getPersonnelInformation(id) {
return request({
url: `/system/user/${id}`,
method: 'get',
})
}
// 巡查计划管理-获取用户列表
export function postUserList(data) {
return request({
url: '/system/user/list',
method: 'post',
data
})
}

2
src/views/runManage/engineering/inspectionItems/Dike.vue

@ -35,7 +35,7 @@ export default {
{ required: true, message: '请选择巡查类型', trigger: 'change' } { required: true, message: '请选择巡查类型', trigger: 'change' }
], ],
checkContentType: [ checkContentType: [
{ required: true, message: '请选巡视检查内容', trigger: 'change' } { required: true, message: '请选巡视检查内容', trigger: 'change' }
] ]
} }
} }

223
src/views/runManage/engineering/inspectionPlan/Dike.vue

@ -1,6 +1,6 @@
<!-- 巡查计划管理-堤防 --> <!-- 巡查计划管理-堤防 -->
<script> <script>
import { getDictionaryList, postInspectionPlanlist, postEmbankmentInspection, putEmbankmentInspection, deleteEmbankmentInspection } from '@/api/management' import { getDictionaryList, postInspectionPlanlist, postInspectionPlan, putEmbankmentInspection, deleteEmbankmentInspection, postEmbankmentInspectionChecklist, getInspectionPlan, deleteInspectionPlan, postUserList } from '@/api/management'
export default { export default {
name: 'InspectionItems', name: 'InspectionItems',
data() { data() {
@ -8,10 +8,12 @@ export default {
searchInput: '', searchInput: '',
dialogVisible: false, dialogVisible: false,
ContentType: '', ContentType: '',
firstType: [], // loading: false,
secondType: [], // patrolType: [], //
personnelList: [], //
examType: [], // examType: [], //
tableData: [], // tableData: [], //
patrolTableData: [], //
pageData: { pageData: {
pageNum: 1, // pageNum: 1, //
pageSize: 10, // pageSize: 10, //
@ -20,21 +22,34 @@ export default {
}, },
ruleForm: { ruleForm: {
name: '', name: '',
type: '0', type: '',
checkContentType: '', xcId: '',
items: [ frequency: '',
], cycleType: '',
reminderTime: '',
selectUser: [],
operators: [],
otherConfig: {
week: '',
time: ''
}
}, },
rules: { rules: {
name: [ name: [
{ required: true, message: '请输入巡视检查名称', trigger: 'blur' }, { required: true, message: '请输入计划名称', trigger: 'blur' },
{ max: 50, message: '名称最长为50个字符', trigger: 'blur' } { max: 50, message: '名称最长为50个字符', trigger: 'blur' }
], ],
type: [ type: [
{ required: true, message: '请选择巡查类型', trigger: 'change' } { required: true, message: '请选择巡查类型', trigger: 'change' }
], ],
checkContentType: [ xcId: [
{ required: true, message: '请选巡视检查内容', trigger: 'change' } { required: true, message: '请选择巡查项目名称', trigger: 'change' }
],
selectUser: [
{ required: true, message: '请选择巡查人员', trigger: 'change' }
],
cycleType: [
{ required: true, message: '请选择巡查周期', trigger: 'change' }
] ]
} }
} }
@ -42,17 +57,25 @@ export default {
methods: { methods: {
// //
editTableItem(row) { editTableItem(row) {
putEmbankmentInspection({ id: row.id }).then((res) => { getInspectionPlan(row.id).then((res) => {
console.log('🚀res🚀', res) console.log('🚀res🚀', res)
this.ruleForm.name = res.data.name this.ruleForm = res.data
this.ruleForm.type = res.data.type this.ruleForm.type = res.data.type.toString()
this.dialogVisible = true this.dialogVisible = true
console.log(this.examType); this.changePatrolType(res)
}) })
// putEmbankmentInspection({ id: row.id }).then((res) => {
// console.log('🚀res🚀', res)
// this.ruleForm.name = res.data.name
// this.ruleForm.type = res.data.type
// this.dialogVisible = true
// console.log(this.examType);
// })
}, },
// //
deleteTableItem(row) { deleteTableItem(row) {
deleteEmbankmentInspection(row.id).then((res) => { console.log('🚀row🚀', row.id)
deleteInspectionPlan(row.id).then((res) => {
console.log('🚀res🚀', res) console.log('🚀res🚀', res)
this.getTableData() this.getTableData()
}) })
@ -66,60 +89,44 @@ export default {
} }
) )
}, },
// //
newInspectionItems() { newInspectionItems() {
this.dialogVisible = true this.dialogVisible = true
getDictionaryList('xs_cycle_type').then((res) => {
this.patrolType = res.data
})
this.ruleForm = { this.ruleForm = {
name: '', name: '',
type: '', type: '',
checkContentType: '', xcId: '',
items: [ frequency: '',
{ cycleType: '',
content: '', reminderTime: '',
parts: ['', '', ''] selectUser: [],
} operators: [],
] otherConfig: {
} week: '',
}, time: ''
//
deletePatrolItem(row) {
console.log('🚀row🚀', row)
},
//
changeContentType(dictValue) {
getDictionaryList(dictValue).then((res) => {
this.secondType = res.data
console.log('🚀一级🚀', res.data)
})
this.ruleForm.items = [
{
content: '',
parts: [this.ruleForm.checkContentType]
} }
]
},
//
changeSecondType(row) {
getDictionaryList(row.parts[1]).then((res) => {
console.log('🚀二级🚀', res.data)
row.parts[2] = ''
this.$set(row, 'third', res.data)
})
},
//
changeThirdType(row) {
let value = row.third.find(item => item.dictValue == row.parts[2]).remark
if (value) {
row.content = value
} }
}, },
// //
submitForm(formName) { submitForm(formName) {
this.$refs[formName].validate((valid) => { this.$refs[formName].validate((valid) => {
if (valid) { if (valid) {
console.log(this.ruleForm); let user = []
postEmbankmentInspection(this.ruleForm).then((res) => { this.ruleForm.selectUser.forEach(element => {
getTableData() let a = {
name: element.nickName,
uid: element.id
}
user.push(a)
});
console.log('🚀user🚀', user)
this.ruleForm.operators = user
postInspectionPlan(this.ruleForm).then((res) => {
console.log('🚀res🚀', res)
this.getTableData()
this.dialogVisible = false this.dialogVisible = false
}) })
} else { } else {
@ -132,9 +139,47 @@ export default {
this.$refs[formName].resetFields(); this.$refs[formName].resetFields();
this.dialogVisible = false this.dialogVisible = false
}, },
// //
addInspectionItems() { changePatrolType(ruleForm) {
this.$set(ruleForm, 'xcId', '')
postEmbankmentInspectionChecklist({
data: {
timeView: {
timeField: "create_time"
},
type: ruleForm.type
},
cv: {
name: "name",
type: "like"
},
pageSize: 999,
pageNum: 1
}).then((res) => {
this.patrolTableData = res.records
})
},
//
searchUser(e) {
console.log(this.ruleForm.selectUser);
postUserList({
data: {
timeView: {
timeField: "create_time"
},
},
cv: {
name: "nickName",
type: "like",
value: e
},
pageSize: 100,
pageNum: 1
}).then((res) => {
this.personnelList = res.records
console.log('🚀用户数据🚀', res)
console.log('🚀用户数据🚀', this.ruleForm.operators)
})
}, },
getTableData() { getTableData() {
postInspectionPlanlist({ postInspectionPlanlist({
@ -164,14 +209,14 @@ export default {
console.log('🚀检查类型🚀', res) console.log('🚀检查类型🚀', res)
if (res.data && Array.isArray(res.data)) { if (res.data && Array.isArray(res.data)) {
res.data.forEach(element => { res.data.forEach(element => {
element.dictValue = Number(element.dictValue) element.dictValue = element.dictValue
}); });
this.examType = res.data this.examType = res.data
console.log('🚀this.examType🚀', this.examType)
} }
}) })
getDictionaryList('df_xs_c_classfy').then((res) => { getDictionaryList('df_xs_c_classfy').then((res) => {
if (res.data && Array.isArray(res.data)) { if (res.data && Array.isArray(res.data)) {
this.firstType = res.data
console.log('🚀res.data🚀', res.data) console.log('🚀res.data🚀', res.data)
} }
}) })
@ -248,39 +293,55 @@ export default {
:total="pageData.total" @size-change="getTableData()"> :total="pageData.total" @size-change="getTableData()">
</el-pagination> </el-pagination>
</div> </div>
<el-dialog title="新增/编辑巡查项目" :visible.sync="dialogVisible" width="50%"> <el-dialog title="新增/编辑巡查计划" destroy-on-close :visible.sync="dialogVisible" width="50%">
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm"> <el-form :model="ruleForm" :rules="rules" ref="ruleForm" class="demo-ruleForm">
<el-form-item label-width="120px" label="计划名称" prop="name"> <el-form-item label-width="120px" label="计划名称" prop="name">
<el-input style="width: 202px;" v-model="ruleForm.name"></el-input> <el-input style="width: 202px;" v-model="ruleForm.name"></el-input>
</el-form-item> </el-form-item>
<el-form-item label-width="120px" label="巡查类型" prop="type"> <el-form-item label-width="120px" label="巡查类型" prop="type">
<el-select v-model="ruleForm.type" placeholder="请选择巡查类型"> <el-select v-model="ruleForm.type" placeholder="请选择巡查类型" @change="changePatrolType(ruleForm)">
<el-option v-for="item in examType" :label="item.dictLabel" :value="item.dictValue" <el-option v-for="item in examType" :label="item.dictLabel" :value="item.dictValue"
:key="item.id"></el-option> :key="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label-width="120px" label="巡查项目目名称" prop="checkContentType"> <el-form-item label-width="120px" label="巡查项目名称" prop="xcId">
<el-select v-model="ruleForm.checkContentType" @change="changeContentType(ruleForm.checkContentType)" <el-select v-model="ruleForm.xcId" placeholder="请选择巡查项目名称">
placeholder="请选择巡视检查内容"> <el-option v-for="item in patrolTableData" :label="item.name" :value="item.id" :key="item.id"></el-option>
<el-option v-for="item in firstType" :label="item.dictLabel" :value="item.dictValue"
:key="item.id"></el-option>
</el-select> </el-select>
<span style="margin-left: 8px; color: red;">注意切换选项后检查内容将会清空</span>
</el-form-item> </el-form-item>
<el-form-item label-width="120px" label="巡查周期" prop="name"> <el-form-item v-if="ruleForm.type == 0" label-width="120px" label="巡查周期" prop="cycleType">
<el-input style="width: 202px;" v-model="ruleForm.name"></el-input> <el-input style="width: 202px;" v-model="ruleForm.frequency"></el-input>
/ /
<el-select v-model="ruleForm.checkContentType" @change="changeContentType(ruleForm.checkContentType)" <el-select v-model="ruleForm.cycleType" placeholder="请选择日期">
placeholder="请选择巡视检查内容"> <el-option v-for="item in patrolType" :label="item.dictLabel" :value="item.dictValue"
<el-option v-for="item in firstType" :label="item.dictLabel" :value="item.dictValue"
:key="item.id"></el-option> :key="item.id"></el-option>
</el-select>/ </el-select>/
</el-form-item> </el-form-item>
<el-form-item label-width="120px" label="消息提醒" prop="name"> <el-form-item v-else label-width="120px" label="检查日期" prop="reminderTime">
<el-time-picker v-model="value1" :picker-options="{ <el-date-picker v-model="ruleForm.otherConfig.time" type="date" value-format="yyyy-MM-dd" placeholder="选择日期">
selectableRange: '18:30:00 - 20:30:00' </el-date-picker>
}" placeholder="任意时间点"> </el-form-item>
</el-time-picker> <el-form-item label-width="120px" label="消息提醒" prop="reminderTime">
<el-radio-group v-if="ruleForm.cycleType == 1 && ruleForm.type == 0" v-model="ruleForm.otherConfig.week">
<el-radio :label="1">星期一</el-radio>
<el-radio :label="2">星期二</el-radio>
<el-radio :label="3">星期三</el-radio>
<el-radio :label="4">星期四</el-radio>
<el-radio :label="5">星期五</el-radio>
<el-radio :label="6">星期六</el-radio>
<el-radio :label="7">星期日</el-radio>
</el-radio-group>
<el-time-picker v-if="ruleForm.cycleType != 2 && ruleForm.type == 0" v-model="ruleForm.reminderTime"
value-format="hh:mm:ss" placeholder="请选择时间点" />
<el-date-picker v-if="ruleForm.cycleType == 2 || ruleForm.type != 0" v-model="ruleForm.reminderTime"
value-format="yyyy-MM-dd hh:mm:ss" type="datetime" placeholder="选择日期时间" />
</el-form-item>
<el-form-item label-width="120px" label="巡查人员" prop="operators">
<el-select v-model="ruleForm.selectUser" multiple filterable remote :remote-method="searchUser" value-key="id"
placeholder="请输入关键词搜索用户" prop="selectUser">
<el-option v-for="item in personnelList" :key="item.id" :label="item.nickName" :value="item">
</el-option>
</el-select>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">

Loading…
Cancel
Save