xytSk-App/pages/xxsb/fromSeverity.vue

631 lines
17 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<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="严重程度"
prop="severityList"
: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>
<!-- 管控责任人: -->
<u-form-item
label="管控责任人"
prop="controlResponsiblePerson"
ref="item3"
>
<u--input
v-model="formList.controlResponsiblePerson"
placeholder="请输入"
border="surround"
clearable
></u--input>
</u-form-item>
<!-- 出库流量 (m³/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"
mode="right"
@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>
export default {
data () {
return {
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特别重大险情
isControlled: '', // 是否已管控0 否 1 是)
incidentDescription: '',
controlResponsiblePerson: '', // 管控责任人
responsiblePersonPhone: '', //责任人电话
remark: ''
},
isControlled: false,
isseverity: false, // 严重程度
showSex: false,
isRelease: false,
isName: false,
severityList: [
{
name: '一般险情'
},
{
name: '较大险情'
},
{
name: '重大险情'
},
{
name: '特别重大险情'
}
],
actions: [
{
name: '是'
},
{
name: '否'
}
],
rules: {
projectName: [
{
type: 'string',
required: true,
message: '请选择工程名称',
trigger: ['blur', 'change']
}
]
},
projectType: 1,
fileId: []
}
},
onLoad (options) {
this.key = options.key
console.log('搜索框22', options.key)
this.getresList()
},
onReady () {
console.log('搜索框22key', this.key)
// 如果需要兼容微信小程序并且校验规则中含有方法等只能通过setRules方法设置规则
this.$refs.form2.setRules(this.rules)
},
methods: {
async getresList () {
let res = null
this.resList = []
res = await uni.$http.get('/gunshiApp/xfflood/webi/resList')
this.resList = res.data.data.map(item => {
item.isShow = false
return item
})
},
async gethystList () {
this.resList = []
let res = await uni.$http.get('/gunshiApp/xfflood/webi/hystList')
console.log('res', res.data.data)
this.resList = res.data.data.map(item => {
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)
let item = this[`fileList${event.name}`][fileListLen]
this[`fileList${event.name}`].splice(
fileListLen,
1,
Object.assign(item, {
status: 'success',
message: '',
url: result
})
)
fileListLen++
}
console.log('fileList1111', this.fileList1)
},
uploadFilePromise (url) {
return new Promise((resolve, reject) => {
let a = uni.uploadFile({
url: `${uni.$http.baseUrl}/gunshiApp/xfflood/xfProjectIncident/file/upload/singleSimple`,
filePath: url,
name: 'file',
success: res => {
setTimeout(() => {
resolve(res.data)
}, 1000)
}
})
})
},
open () {},
groupChange (n) {
// console.log('groupChange', n);
},
radioChange (n) {
// console.log('radioChange', n);
},
navigateBack () {
uni.reLaunch({
url: '/pages/xxsb/index'
})
},
severitySelect (e) {
console.log('severitySelect0', e)
this.formList.severity = e.name
this.$refs.form2.validateField('severity')
},
controlledSelect (e) {
this.formList.isControlled = e.name
this.$refs.form2.validateField('isControlled')
},
submit () {
this.$refs.form2
.validate()
.then(res => {
uni.$u.toast('校验通过', res)
let params = Object.assign(this.formList)
// 严重程度1一般险情 2较大险情 3重大险情 4特别重大险情
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
}
params.projectType = this.projectType
params.isControlled = params.isControlled == '是' ? 1 : 0
if (this.fileList1.length > 0) {
params.fileId = this.fileList1.map(item => {
return JSON.parse(item.url).data.fileId
})
}
uni.$http
.post('/gunshiApp/xfflood/xfProjectIncident/insert', params)
.then(res => {
console.log('this.---', res)
if (res.data.code == 200) {
console.log('this.model122', res.data)
uni.reLaunch({
url: '/pages/xxsb/index'
})
}
})
})
.catch(errors => {
uni.$u.toast('校验失败', errors)
})
},
reset () {
const validateList = ['projectName', 'radiovalue1']
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>