xytSk-App/pages/xxsb/fromSeverity.vue

657 lines
18 KiB
Vue
Raw Normal View History

2024-06-13 13:50:03 +08:00
<template>
<view class="u-page">
<u-navbar
:title="title[key]"
@leftClick="navigateBack"
safeAreaInsetTop
fixed
placeholder
></u-navbar>
<view class="info">
<view class="u-demo-block__content">
<!-- 注意如果需要兼容微信小程序最好通过setRules方法设置rules规则 -->
<!-- 工程详情上报 -->
<u--form
labelPosition="left"
:model="formList"
ref="form2"
labelWidth="100"
>
<u-form-item
label="工程名称"
prop="projectName"
@click="
isName = true
hideKeyboard()
"
:borderBottom="false"
ref="item1"
>
<u--input
placeholder="请选择"
v-model="formList.projectName"
suffixIcon="arrow-right"
suffixIconStyle="color: #909399"
></u--input>
</u-form-item>
<u-form-item
label="严重程度"
2024-06-19 14:15:15 +08:00
prop="severity"
2024-06-13 13:50:03 +08:00
:borderBottom="false"
@click="
isseverity = true
hideKeyboard()
"
ref="item1"
>
<u--input
placeholder="请选择"
v-model="formList.severity"
suffixIcon="arrow-right"
suffixIconStyle="color: #909399"
></u--input>
</u-form-item>
<u-form-item
label="是否已管控"
prop="isControlled"
:borderBottom="false"
@click="
isControlled = true
hideKeyboard()
"
ref="item1"
>
<u--input
placeholder="请选择"
v-model="formList.isControlled"
suffixIcon="arrow-right"
suffixIconStyle="color: #909399"
></u--input>
</u-form-item>
<!-- 水位(m) -->
<u-form-item
label="险情描述"
prop="incidentDescription"
:borderBottom="false"
ref="item3"
>
<u--textarea
placeholder="请输入"
v-model="formList.incidentDescription"
count
></u--textarea>
</u-form-item>
<!-- 管控责任人 -->
2024-06-13 16:02:00 +08:00
<u-form-item
label="管控责任人"
prop="controlResponsiblePerson"
ref="item3"
>
2024-06-13 13:50:03 +08:00
<u--input
v-model="formList.controlResponsiblePerson"
placeholder="请输入"
border="surround"
clearable
></u--input>
</u-form-item>
<!-- 出库流量 (/s) -->
<u-form-item
label="联系电话"
prop="responsiblePersonPhone"
:borderBottom="false"
ref="item3"
>
<u--input
v-model="formList.responsiblePersonPhone"
placeholder="请输入"
type="number"
clearable
border="surround"
@blur="BlurText($event)"
></u--input>
</u-form-item>
<!-- 其他运行情况 -->
<u-form-item
label="其他情况说明"
prop="remark"
:borderBottom="false"
ref="item3"
>
<u--textarea
placeholder="请输入"
v-model="formList.remark"
count
></u--textarea>
</u-form-item>
<u-form-item
label="附件"
prop="fileList"
:borderBottom="false"
ref="item3"
>
<u-upload
:fileList="fileList1"
@afterRead="afterRead"
@delete="deletePic"
name="1"
multiple
:maxCount="10"
:previewFullImage="true"
></u-upload>
</u-form-item>
</u--form>
<u-button
type="primary"
text="提交"
customStyle="margin-top: 50px"
@click="submit"
></u-button>
<!-- 下拉选择 -->
<!-- mode="top" -->
<view v-if="isName">
<u-popup
:show="isName"
@close="isName = false"
2024-06-19 14:15:15 +08:00
mode="bottom"
2024-06-13 13:50:03 +08:00
@open="open"
>
<view style="padding: 30px 20px">
<view class="tabs_h">
<div
class="leftTab"
:class="{ activetextTypeTab: showTextTypeTab == 1 }"
@click="tabChange(1)"
>
{{ namelabel }}
</div>
<div
class="rightTab"
:class="{ activetextTypeTab: showTextTypeTab == 2 }"
@click="tabChange(2)"
>
{{ gclabel }}
</div>
</view>
<!-- 水电站和水库 -->
<view class="" v-if="isSk">
<div
class="ul_list"
:class="{ activeTypeClass: activeType == 1 }"
@click="todetail(1, '水库')"
>
<div class="left">水库</div>
<u-icon
v-if="activeType == 1"
name="checkmark"
color="#2286f6"
size="20"
></u-icon>
</div>
<div
class="ul_list"
:class="{ activeTypeClass: activeType == 2 }"
@click="todetail(2, '水电站')"
>
<div class="left">水电站</div>
<u-icon
v-if="activeType == 2"
name="checkmark"
color="#2286f6"
size="20"
></u-icon>
</div>
</view>
<!-- 具体水库或者水电站 -->
<view v-else style="height: 300px; overflow-y: auto">
<div v-for="(item, index) in resList" :key="index">
<div
class="ul_list"
:class="{ activeTypeClass: item.isShow }"
@click="infoClick(item)"
>
<div class="left">{{ item.resName }}</div>
<u-icon
v-if="item.isShow"
name="checkmark"
color="#2286f6"
size="20"
></u-icon>
</div>
</div>
</view>
</view>
</u-popup>
</view>
<!-- 严重程度 -->
<u-action-sheet
:show="isseverity"
:actions="severityList"
title="请选择"
@close="isseverity = false"
@select="severitySelect"
>
</u-action-sheet>
<!-- 是否已管控 -->
<u-action-sheet
:show="isControlled"
:actions="actions"
title="请选择"
@close="isControlled = false"
@select="controlledSelect"
>
</u-action-sheet>
</view>
</view>
</view>
</template>
<script>
2024-06-19 14:15:15 +08:00
const adcd = uni.getStorageSync('value').adcd
2024-06-13 13:50:03 +08:00
export default {
data () {
return {
2024-06-19 14:15:15 +08:00
adcd,
2024-06-13 13:50:03 +08:00
showTextTypeTab: 1,
activeType: '',
isSk: true,
resList: [],
key: '',
title: {
1: '运行情况上报',
2: '工程险情上报',
3: '实时灾情上报'
},
namelabel: '请选择',
gclabel: '工程',
fileList1: [],
disabled1: false,
tips: '',
value: '',
showCalendar: false,
showBirthday: false,
formList: {
projectName: '', //工程名称
projectType: '', //工程类型
severity: '', // 严重程度1一般险情 2较大险情 3重大险情 4特别重大险情
2024-06-13 16:02:00 +08:00
isControlled: '', // 是否已管控0 否 1 是)
incidentDescription: '',
controlResponsiblePerson: '', // 管控责任人
responsiblePersonPhone: '', //责任人电话
remark: ''
2024-06-13 13:50:03 +08:00
},
2024-06-13 16:02:00 +08:00
isControlled: false,
2024-06-13 13:50:03 +08:00
isseverity: false, // 严重程度
showSex: false,
isRelease: false,
isName: false,
severityList: [
{
2024-06-13 16:02:00 +08:00
name: '一般险情'
2024-06-13 13:50:03 +08:00
},
{
2024-06-13 16:02:00 +08:00
name: '较大险情'
2024-06-13 13:50:03 +08:00
},
{
2024-06-13 16:02:00 +08:00
name: '重大险情'
2024-06-13 13:50:03 +08:00
},
{
2024-06-13 16:02:00 +08:00
name: '特别重大险情'
2024-06-13 13:50:03 +08:00
}
],
actions: [
{
name: '是'
},
{
name: '否'
}
],
rules: {
projectName: [
{
type: 'string',
required: true,
message: '请选择工程名称',
2024-07-01 16:22:28 +08:00
trigger: ['change']
2024-06-13 13:50:03 +08:00
}
2024-06-19 14:15:15 +08:00
],
severity: [
{
type: 'string',
required: true,
message: '请选择严重程度',
2024-07-01 16:22:28 +08:00
trigger: ['change']
2024-06-19 14:15:15 +08:00
}
2024-06-13 13:50:03 +08:00
]
},
2024-06-13 16:02:00 +08:00
projectType: 1,
fileId: []
2024-06-13 13:50:03 +08:00
}
},
onLoad (options) {
this.key = options.key
console.log('搜索框22', options.key)
2024-06-13 16:02:00 +08:00
2024-06-13 13:50:03 +08:00
this.getresList()
},
onReady () {
2024-06-13 16:02:00 +08:00
console.log('搜索框22key', this.key)
2024-06-13 13:50:03 +08:00
// 如果需要兼容微信小程序并且校验规则中含有方法等只能通过setRules方法设置规则
2024-06-13 16:02:00 +08:00
this.$refs.form2.setRules(this.rules)
2024-06-13 13:50:03 +08:00
},
methods: {
async getresList () {
let res = null
this.resList = []
res = await uni.$http.get('/gunshiApp/xfflood/webi/resList')
2024-06-19 14:15:15 +08:00
let list = res.data.data.filter(item => {
if (this.adcd.endsWith('000000000')) {
return item
} else {
return item.adcd == this.adcd
}
})
this.resList = list.map(item => {
2024-06-13 13:50:03 +08:00
item.isShow = false
return item
})
},
async gethystList () {
this.resList = []
let res = await uni.$http.get('/gunshiApp/xfflood/webi/hystList')
2024-06-19 14:15:15 +08:00
let list = res.data.data.filter(item => {
if (this.adcd.endsWith('000000000')) {
return item
} else {
return item.adcd == this.adcd
}
})
2024-06-13 13:50:03 +08:00
console.log('res', res.data.data)
2024-06-19 14:15:15 +08:00
this.resList = list.map(item => {
2024-06-13 13:50:03 +08:00
item.isShow = false
item.resName = item.hystName
return item
})
},
tabChange (val) {
this.showTextTypeTab = val
if (val == 1) {
this.isSk = true
} else {
this.isSk = false
}
},
todetail (val, title) {
this.activeType = val
this.showTextTypeTab = 2
this.isSk = false
this.namelabel = title
this.projectType = val
if (val == 1) {
this.getresList()
} else {
this.gethystList()
}
},
infoClick (obj) {
if (this.activeType == 1) {
this.resList = this.resList.map(item => {
if (item.resCode == obj.resCode) {
item.isShow = true
this.gclabel = item.resName
this.formList.projectName = item.resName
} else {
item.isShow = false
}
return item
})
} else {
this.resList = this.resList.map(item => {
if (item.hystCode == obj.hystCode) {
item.isShow = true
this.gclabel = item.resName
this.formList.projectName = item.resName
} else {
item.isShow = false
}
return item
})
}
},
// 删除图片
deletePic (event) {
this[`fileList${event.name}`].splice(event.index, 1)
},
// 新增图片
async afterRead (event) {
// 当设置 multiple 为 true 时, file 为数组格式,否则为对象格式
let lists = [].concat(event.file)
let fileListLen = this[`fileList${event.name}`].length
lists.map(item => {
this[`fileList${event.name}`].push({
...item,
status: 'uploading',
message: '上传中'
})
})
for (let i = 0; i < lists.length; i++) {
const result = await this.uploadFilePromise(lists[i].url)
2024-06-13 16:02:00 +08:00
2024-06-13 13:50:03 +08:00
let item = this[`fileList${event.name}`][fileListLen]
this[`fileList${event.name}`].splice(
fileListLen,
1,
Object.assign(item, {
status: 'success',
message: '',
url: result
})
)
fileListLen++
}
2024-06-13 16:02:00 +08:00
console.log('fileList1111', this.fileList1)
2024-06-13 13:50:03 +08:00
},
uploadFilePromise (url) {
return new Promise((resolve, reject) => {
let a = uni.uploadFile({
2024-06-13 16:02:00 +08:00
url: `${uni.$http.baseUrl}/gunshiApp/xfflood/xfProjectIncident/file/upload/singleSimple`,
2024-06-13 13:50:03 +08:00
filePath: url,
name: 'file',
success: res => {
setTimeout(() => {
2024-06-13 16:02:00 +08:00
resolve(res.data)
2024-06-13 13:50:03 +08:00
}, 1000)
}
})
})
},
open () {},
groupChange (n) {
// console.log('groupChange', n);
},
radioChange (n) {
// console.log('radioChange', n);
},
navigateBack () {
2024-06-19 10:24:04 +08:00
uni.reLaunch({
url: '/pages/xxsb/index'
})
2024-06-13 13:50:03 +08:00
},
severitySelect (e) {
console.log('severitySelect0', e)
this.formList.severity = e.name
this.$refs.form2.validateField('severity')
},
2024-06-13 16:02:00 +08:00
controlledSelect (e) {
2024-06-13 13:50:03 +08:00
this.formList.isControlled = e.name
this.$refs.form2.validateField('isControlled')
},
submit () {
2024-06-13 16:02:00 +08:00
this.$refs.form2
2024-06-13 13:50:03 +08:00
.validate()
.then(res => {
uni.$u.toast('校验通过', res)
let params = Object.assign(this.formList)
2024-06-13 16:02:00 +08:00
2024-06-13 13:50:03 +08:00
// 严重程度1一般险情 2较大险情 3重大险情 4特别重大险情
2024-06-13 16:02:00 +08:00
if (this.formList.severity == '一般险情') {
params.severity = 1
} else if (this.formList.severity == '较大险情') {
params.severity = 2
} else if (this.formList.severity == '重大险情') {
params.severity = 3
} else if (this.formList.severity == '特别重大险情') {
params.severity = 4
2024-06-13 13:50:03 +08:00
}
2024-06-13 16:02:00 +08:00
params.projectType = this.projectType
params.isControlled = params.isControlled == '是' ? 1 : 0
if (this.fileList1.length > 0) {
2024-07-01 10:58:49 +08:00
params.fileIds = this.fileList1.map(item => {
2024-06-13 16:02:00 +08:00
return JSON.parse(item.url).data.fileId
2024-06-13 13:50:03 +08:00
})
2024-07-01 10:58:49 +08:00
} else {
params.fileIds = []
2024-06-13 13:50:03 +08:00
}
uni.$http
2024-06-13 16:02:00 +08:00
.post('/gunshiApp/xfflood/xfProjectIncident/insert', params)
2024-06-13 13:50:03 +08:00
.then(res => {
2024-06-13 16:02:00 +08:00
console.log('this.---', res)
2024-06-13 13:50:03 +08:00
if (res.data.code == 200) {
console.log('this.model122', res.data)
uni.reLaunch({
url: '/pages/xxsb/index'
})
}
})
})
.catch(errors => {
2024-06-13 16:02:00 +08:00
uni.$u.toast('校验失败', errors)
2024-06-13 13:50:03 +08:00
})
},
reset () {
2024-06-13 16:02:00 +08:00
const validateList = ['projectName', 'radiovalue1']
2024-06-13 13:50:03 +08:00
this.$refs.form1.resetFields()
this.$refs.form1.clearValidate()
setTimeout(() => {
this.$refs.form1.clearValidate(validateList)
// 或者使用 this.$refs.form1.clearValidate()
}, 10)
},
hideKeyboard () {
uni.hideKeyboard()
},
// 过滤字符串
BlurText (e) {
console.log('e', e)
let reg = /^\d+$/.test(e)
if (!reg) {
// this.
console.log('22e', e)
}
}
}
}
</script>
<style lang="scss" scoped>
.container {
font-size: 14px;
background-color: #f3f5f8;
}
.tabs_h {
display: flex;
// justify-content: center;
align-items: center;
height: 56rpx;
line-height: 88rpx;
background-color: #fff;
margin-bottom: 12rpx;
text-align: center;
}
.leftTab {
// width: 80px;
margin-right: 20px;
}
.rightTab {
// width: 80px;
}
.activetextTypeTab,
.activetextTypeTab:hover {
border-bottom: 3rpx solid #2286f6;
color: #026be0;
}
.activeTypeClass,
.activeTypeClass:hover {
color: #026be0;
}
.nav_bar {
display: flex;
justify-content: space-between;
align-items: center;
width: 100%;
margin-top: 30px;
padding-top: 20px;
padding-bottom: 10px;
border-bottom: 1px solid #dfdfdf;
box-shadow: 0 5px 10px -8px #dfdfdf inset;
background-color: #fff;
margin-bottom: 12rpx;
}
.nav_bar_tit {
text-align: center;
}
.info {
background-color: #fff;
margin-bottom: 12rpx;
padding: 20px;
}
.fl {
display: flex;
justify-content: start;
align-items: left;
}
.flsb {
display: flex;
justify-content: space-between;
align-items: center;
}
.bottom {
display: flex;
justify-content: space-between;
align-items: center;
}
.u-image {
width: 100%; /* 或者其他尺寸 */
transition: transform 0.3s; /* 平滑的放大效果 */
}
.ul_list {
display: flex;
justify-content: space-between;
align-items: center;
height: 48px;
// border-bottom: 1px solid #dfdfdf;
}
</style>