|
|
@ -1,15 +1,22 @@ |
|
|
|
<template> |
|
|
|
<div> |
|
|
|
<div style="width: 100%;background: #fff; padding: 10px 10px 10px 20px; text-align: left; font-weight: 500;">{{formData.subjectTitle}}</div> |
|
|
|
<div style="width: 100%;background: #fff; padding: 10px 10px 10px 20px; text-align: left; font-weight: 500;"> |
|
|
|
{{formData.subjectTitle}}</div> |
|
|
|
<div class="container"> |
|
|
|
|
|
|
|
<div class="block"> |
|
|
|
<div class="textarea"> |
|
|
|
<van-field v-model="formData.eventContent" autosize label="建议内容" maxlength="800" |
|
|
|
placeholder="请输入主要建议内容(内容描述不少于10个 字,不超过800字)" required rows="6" type="textarea"> |
|
|
|
placeholder="请输入主要建议内容(内容描述不少于50个字,不超过2000字).提出的建议应当具备主要事由及对策措施等内容,真实有效,具备可操作性。" required |
|
|
|
rows="6" type="textarea"> |
|
|
|
<template #extra> |
|
|
|
<span style="color:#C1C1C1; font-size: 15px;line-height: 0">800字以内,简要陈述基本事实和情况以及对我市经济建 |
|
|
|
设、政治建设、文化建设、社会建设、生态文明建设等方 面提出的对策措施。</span> |
|
|
|
<div class="flex flex-y" style="margin-top: 10px;"> |
|
|
|
<van-uploader max-size="10 * 1024 * 1024" v-model="fileList1" show-upload |
|
|
|
:after-read="afterReadFile" :before-read="beforeRead" accept=".doc,.docx,.pdf" /> |
|
|
|
<span |
|
|
|
style="color:#C1C1C1; font-size: 15px;line-height: 18px">您也可以将建议内容整理成文档上传,支持word、pdf格式,文件大小不超过5Mb.</span> |
|
|
|
</div> |
|
|
|
|
|
|
|
</template> |
|
|
|
</van-field> |
|
|
|
|
|
|
@ -19,9 +26,9 @@ |
|
|
|
<van-field label="是否愿意公开"> |
|
|
|
<template #extra> |
|
|
|
<van-radio-group v-model="formData.openFlag" direction="horizontal"> |
|
|
|
<van-radio :name="1">是</van-radio> |
|
|
|
<van-radio :name="0">否</van-radio> |
|
|
|
</van-radio-group> |
|
|
|
<van-radio :name="1">是</van-radio> |
|
|
|
<van-radio :name="0">否</van-radio> |
|
|
|
</van-radio-group> |
|
|
|
</template> |
|
|
|
</van-field> |
|
|
|
</div> |
|
|
@ -34,25 +41,40 @@ |
|
|
|
</van-cell> |
|
|
|
</div> |
|
|
|
<div class="block"> |
|
|
|
<van-field v-model="formData.name" label="建议人" placeholder="请输入联系人" required> |
|
|
|
<van-field v-model="formData.name" label="姓名" placeholder="请输入联系人" required> |
|
|
|
<template #message> |
|
|
|
<div style="color:#C1C1C1; font-size: 15px; line-height: 1.5; padding-top: 4px;"> |
|
|
|
请输入公民姓名、法人或社会组织名称 |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
|
|
|
|
</van-field> |
|
|
|
|
|
|
|
|
|
|
|
</div> |
|
|
|
<div class="block"> |
|
|
|
<van-field v-model="formData.mobile" label="手机号码" maxlength="11" placeholder="请输入联系电话" required type="number" /> |
|
|
|
<van-field v-model="formData.mobile" label="手机号码" maxlength="11" placeholder="请输入联系电话" required |
|
|
|
type="number" /> |
|
|
|
</div> |
|
|
|
<div class="block"> |
|
|
|
<van-field v-model="formData.age" label="年龄" placeholder="请输入联系人" type="number" @input="onInput" |
|
|
|
required> |
|
|
|
</van-field> |
|
|
|
</div> |
|
|
|
<div class="block"> |
|
|
|
<van-cell required is-link @click="onClickPopup">你的身份(可多选)</van-cell> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="flex flex-center1 "> |
|
|
|
<van-button block color="linear-gradient(to right, #81B5FB, #3E92FF)" style="width: 300px; margin-bottom: 50px;" round |
|
|
|
@click="onClickdaily">提交</van-button> |
|
|
|
<van-button block color="linear-gradient(to right, #81B5FB, #3E92FF)" |
|
|
|
style="width: 300px; margin-bottom: 50px;" round @click="onClickdaily">提交</van-button> |
|
|
|
</div> |
|
|
|
<van-popup v-model="showPopup" position="bottom" :style="{ height: '50%' }" @close="onClose" round closeable> |
|
|
|
<div style="margin: 10px"> |
|
|
|
<van-checkbox-group v-model="formData.identityTypeCode" ref="checkboxGroup" @change="onCheck"> |
|
|
|
<van-checkbox v-for="(item, index) in ideaIdentityList" :key="index" :name="item.value" |
|
|
|
style="margin: 10px;" shape="square"> |
|
|
|
{{ item.label }} |
|
|
|
</van-checkbox> |
|
|
|
</van-checkbox-group> |
|
|
|
</div> |
|
|
|
</van-popup> |
|
|
|
<Android @send-number="handleNumber" /> |
|
|
|
</div> |
|
|
|
</div> |
|
|
@ -61,6 +83,7 @@ |
|
|
|
</template> |
|
|
|
|
|
|
|
<script> |
|
|
|
import { dictlist } from '@/api/user' |
|
|
|
import { |
|
|
|
ideaList,icEventSpecialSubject,icEventOldAdd |
|
|
|
} from "@/api/peoSuggestion" |
|
|
@ -74,7 +97,12 @@ import { Toast, Dialog } from 'vant' |
|
|
|
export default { |
|
|
|
data() { |
|
|
|
return { |
|
|
|
showPopup:false, |
|
|
|
ideaIdentityList:[], |
|
|
|
formData:{ |
|
|
|
fileList:[], |
|
|
|
identityTypeCode:[], |
|
|
|
age:"", |
|
|
|
specialSubjectId:"", |
|
|
|
operationType:"4", |
|
|
|
demandType:"idea", |
|
|
@ -91,25 +119,102 @@ export default { |
|
|
|
}, |
|
|
|
radio:"", |
|
|
|
fileList: [], |
|
|
|
|
|
|
|
fileList1:[] |
|
|
|
}; |
|
|
|
}, |
|
|
|
created() { |
|
|
|
console.log(this.$route.query.title); |
|
|
|
|
|
|
|
this.formData.subjectTitle=this.$route.query.title; |
|
|
|
this.formData.specialSubjectId=this.$route.query.id |
|
|
|
this.formData.agencyId = this.$store.state.app.agencyId; |
|
|
|
|
|
|
|
|
|
|
|
}, |
|
|
|
async mounted() { |
|
|
|
async mounted() { |
|
|
|
this.getDictionaries() |
|
|
|
|
|
|
|
}, |
|
|
|
methods: { |
|
|
|
onCheck(name){ |
|
|
|
console.log(this.formData.identityTypeCode,"但是克莱斯勒开发接口是"); |
|
|
|
}, |
|
|
|
onClose(){ |
|
|
|
this.showPopup = false; |
|
|
|
}, |
|
|
|
onClickPopup() { |
|
|
|
console.log("sdkjfkldsj"); |
|
|
|
|
|
|
|
this.showPopup = true; |
|
|
|
}, |
|
|
|
// 字典 |
|
|
|
async getDictionaries() { |
|
|
|
let params = { |
|
|
|
dictType: "ideaIdentityType", |
|
|
|
}; |
|
|
|
dictlist(params).then(res => { |
|
|
|
this.ideaIdentityList = res.data |
|
|
|
}) |
|
|
|
|
|
|
|
}, |
|
|
|
handleNumber(value){ |
|
|
|
this.phone=value |
|
|
|
}, |
|
|
|
|
|
|
|
//年龄 |
|
|
|
onInput(value) { |
|
|
|
const num = parseInt(value, 10); |
|
|
|
if (/^\d*$/.test(value) && (num >= 1 && num <= 120 || value === '')) { |
|
|
|
this.formData.age = value; // 更新数据 |
|
|
|
} else { |
|
|
|
this.$toast.fail('请输入 1 到 120 的数字'); |
|
|
|
} |
|
|
|
}, |
|
|
|
//建议内容 |
|
|
|
afterReadFile(file) { |
|
|
|
console.log(file, "dsfjklsdlk"); |
|
|
|
file.status = 'uploading' |
|
|
|
file.message = '上传中...' |
|
|
|
uploadvariedfile(file.file) |
|
|
|
.then(res => { |
|
|
|
console.log(res, "dsfjksldf"); |
|
|
|
let type = file.file.type.split('/')[0].toString(); |
|
|
|
let format = file.file.type.split('/')[1].toString(); |
|
|
|
let name = file.file.name |
|
|
|
let url = res.data.url |
|
|
|
file.status = '' |
|
|
|
file.message = '上传成功' |
|
|
|
file.url = res.data.url |
|
|
|
let fileInfo = { |
|
|
|
type: type, |
|
|
|
format: format, |
|
|
|
name: name, |
|
|
|
url: url |
|
|
|
}; |
|
|
|
this.formData.imageList.push(res.data.url) |
|
|
|
console.log(fileInfo,"sdlkjdslgfjdgls"); |
|
|
|
// this.attrs.push(fileInfo) |
|
|
|
}) |
|
|
|
.catch(() => { |
|
|
|
file.status = 'failed' |
|
|
|
file.message = '上传失败' |
|
|
|
}) |
|
|
|
}, |
|
|
|
// 上传前校验文件类型 |
|
|
|
beforeRead(file) { |
|
|
|
const allowedTypes = ['application/pdf', |
|
|
|
'application/msword', |
|
|
|
'application/vnd.openxmlformats-officedocument.wordprocessingml.document']; |
|
|
|
if (!allowedTypes.includes(file.type)) { |
|
|
|
this.$toast.fail('仅支持上传 Word 或 PDF 文件'); |
|
|
|
return false; // 阻止上传 |
|
|
|
} |
|
|
|
return true; // 允许上传 |
|
|
|
}, |
|
|
|
//建议征集 |
|
|
|
onClickdaily(){ |
|
|
|
const params={ |
|
|
|
...this.formData |
|
|
|
...this.formData, |
|
|
|
identityTypeCode: this.formData.identityTypeCode.join(','), // 将数组转换为逗号分隔的字符 |
|
|
|
} |
|
|
|
icEventOldAdd(params).then(res=>{ |
|
|
|
if (res.code==0) { |
|
|
|