You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
680 lines
20 KiB
680 lines
20 KiB
<template> |
|
<basic-container> |
|
<div class="title_box"> |
|
<div class="left"> |
|
<!-- <div class="img_box"><img src="~@/assets/image/time.png" alt="" /></div> --> |
|
<div class="left_txt">{{ title }}</div> |
|
</div> |
|
<div class="right" @click="handleCancel">X</div> |
|
</div> |
|
<el-table |
|
:data="formData" |
|
:key="index" |
|
border |
|
style=" |
|
margin-bottom: 30px; |
|
width: 100%; |
|
margin: 0 auto; |
|
border-radius: 4px; |
|
" |
|
header-cell-style="background-color:#fafafa;font-size:12px;color:black" |
|
> |
|
<el-table-column width="57px"> |
|
<template slot="header"> |
|
<el-button |
|
circle |
|
size="small" |
|
type="primary" |
|
icon="el-icon-plus" |
|
@click="addDomain()" |
|
/> |
|
</template> |
|
<template slot-scope="scope"> |
|
<el-button |
|
circle |
|
size="small" |
|
type="danger" |
|
icon="el-icon-delete" |
|
@click="removeSpecimen(scope.$index, scope.row, scope)" |
|
/> |
|
</template> |
|
</el-table-column> |
|
<el-table-column |
|
align="center" |
|
prop="username" |
|
label="来访人姓名" |
|
width="200" |
|
> |
|
<template slot-scope="scope"> |
|
<el-input |
|
v-model="scope.row.username" |
|
@change="changeNumber" |
|
controls-position="right" |
|
style="width: 90%; margin-left: 5%" |
|
size="medium" |
|
placeholder="来访人姓名" |
|
> |
|
</el-input> |
|
</template> |
|
</el-table-column> |
|
<el-table-column align="center" prop="gender" label="性别"> |
|
<template slot-scope="scope"> |
|
<el-select |
|
v-model="scope.row.gender" |
|
placeholder="性别" |
|
size="medium" |
|
style="width: 90%; margin-left: 5%" |
|
> |
|
<el-option label="男" value="1"></el-option> |
|
<el-option label="女" value="2"></el-option> |
|
</el-select> |
|
</template> |
|
</el-table-column> |
|
<el-table-column align="center" prop="age" label="年龄"> |
|
<template slot-scope="scope"> |
|
<el-input |
|
v-model="scope.row.age" |
|
clearable |
|
placeholder="年龄" |
|
size="medium" |
|
style="width: 90%; margin-left: 5%" |
|
/> |
|
</template> </el-table-column |
|
><el-table-column align="center" prop="cardno" label="身份证号码"> |
|
<template slot-scope="scope"> |
|
<el-input |
|
v-model="scope.row.cardno" |
|
clearable |
|
onkeyup="this.value=this.value.replace(/[^\d.]/g,'')" |
|
maxlength="18" |
|
placeholder="身份证号码" |
|
size="medium" |
|
style="width: 90%; margin-left: 5%" |
|
/> |
|
</template> |
|
</el-table-column> |
|
<el-table-column align="center" prop="address" label="住址"> |
|
<template slot-scope="scope"> |
|
<el-input |
|
v-model="scope.row.address" |
|
clearable |
|
placeholder="住址" |
|
size="medium" |
|
style="width: 90%; margin-left: 5%" |
|
/> |
|
</template> </el-table-column |
|
><el-table-column align="center" prop="addressNow" label="现住址"> |
|
<template slot-scope="scope"> |
|
<el-input |
|
v-model="scope.row.addressNow" |
|
clearable |
|
placeholder="现住址" |
|
size="medium" |
|
style="width: 90%; margin-left: 5%" |
|
/> |
|
</template> </el-table-column |
|
><el-table-column align="center" prop="phone" label="联系人电话"> |
|
<template slot-scope="scope"> |
|
<el-input |
|
v-model="scope.row.phone" |
|
clearable |
|
onkeyup="this.value=this.value.replace(/[^\d.]/g,'')" |
|
maxlength="11" |
|
placeholder="联系人电话" |
|
size="medium" |
|
style="width: 90%; margin-left: 5%" |
|
/> |
|
</template> |
|
</el-table-column> |
|
</el-table> |
|
<el-form |
|
class="form_box" |
|
:inline="true" |
|
ref="registerForm" |
|
:model="form" |
|
:rules="rules" |
|
label-position="top" |
|
> |
|
<el-row :model="form" :rules="rules" :gutter="20"> |
|
<el-col style="width: 31%; margin-left: 1%"> |
|
<div class="grid-content bg-purple"> |
|
<el-form-item style="width: 100%"> |
|
<figure> |
|
 来访人数 |
|
<figcaption> |
|
<el-input |
|
v-model="form.personNum" |
|
size="medium" |
|
placeholder="请输入来访人数" |
|
clearable |
|
style="width: 90%" |
|
:readonly="true" |
|
/> |
|
</figcaption> |
|
</figure> |
|
</el-form-item> |
|
</div> |
|
</el-col> |
|
<el-col :span="6" style="width: 31%; margin-left: -2.1%"> |
|
<el-form-item style="width: 100%" prop="streetId"> |
|
<figure> |
|
<i></i>所属镇街 |
|
<figcaption> |
|
<el-select |
|
v-model="form.streetId" |
|
:disabled="isappend" |
|
:filter-method="dataFilter" |
|
clearable |
|
filterable |
|
ref="searchSelect" |
|
placeholder="请选择所属镇街" |
|
size="medium" |
|
style="width: 90%" |
|
> |
|
<el-option |
|
v-for="item in streetData" |
|
:key="item.id" |
|
:label="item.dictValue" |
|
:value="item.id" |
|
/> |
|
</el-select> |
|
</figcaption> |
|
</figure> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="6" style="width: 31%; margin-left: -1.58%"> |
|
<el-form-item prop="disputeId" style="width: 100%"> |
|
<figure> |
|
<i></i>诉求类型 |
|
<figcaption> |
|
<el-select |
|
v-model="form.disputeId" |
|
:disabled="isappend" |
|
:filter-method="dataFilter" |
|
clearable |
|
filterable |
|
allow-create |
|
ref="searchSelect" |
|
placeholder="请选择诉求类型" |
|
size="medium" |
|
style="width: 90%" |
|
> |
|
<el-option |
|
v-for="item in typeData" |
|
:key="item.id" |
|
:label="item.dictValue" |
|
:value="item.id" |
|
/> |
|
</el-select> |
|
</figcaption> |
|
</figure> |
|
</el-form-item> |
|
</el-col> |
|
</el-row> |
|
<el-row :model="form" :rules="rules" :gutter="20"> |
|
<el-col style="width: 31%; margin-left: 1%"> |
|
<div class="grid-content bg-purple"> |
|
<el-form-item style="width: 100%"> |
|
<figure> |
|
 何单位处理过 |
|
<figcaption> |
|
<el-select |
|
v-model="form.disposeDept" |
|
:disabled="isappend" |
|
:filter-method="dataFilter" |
|
clearable |
|
filterable |
|
allow-create |
|
ref="searchSelect" |
|
placeholder="请选择单位" |
|
size="medium" |
|
style="width: 90%" |
|
> |
|
<el-option |
|
v-for="item in winData" |
|
:key="item.id" |
|
:label="item.name" |
|
:value="item.id" |
|
/> |
|
</el-select> |
|
</figcaption> |
|
</figure> |
|
</el-form-item> |
|
</div> |
|
</el-col> |
|
<el-col :span="6" style="width: 31%; margin-left: -2.1%"> |
|
<el-form-item style="width: 100%"> |
|
<figure> |
|
 基层有无协议书 |
|
<figcaption> |
|
<el-input |
|
v-model="form.protocol" |
|
size="medium" |
|
placeholder="请输入基层有无协议书" |
|
clearable |
|
style="width: 90%" |
|
/> |
|
</figcaption> |
|
</figure> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="6" style="width: 31%; margin-left: -1.58%"> |
|
<el-form-item style="width: 100%"> |
|
<figure> |
|
 基层有无处理意见 |
|
<figcaption> |
|
<el-input |
|
v-model="form.opinion" |
|
size="medium" |
|
placeholder="请输入基层有无处理意见" |
|
clearable |
|
style="width: 90%" |
|
/> |
|
</figcaption> |
|
</figure> |
|
</el-form-item> |
|
</el-col> |
|
</el-row> |
|
<el-row :model="form" :rules="rules" :gutter="20"> |
|
<el-col style="width: 31%; margin-left: 1%"> |
|
<div class="grid-content bg-purple"> |
|
<el-form-item style="width: 100%"> |
|
<figure> |
|
 部门有无复查意见 |
|
<figcaption> |
|
<el-input |
|
v-model="form.reviewOpinion" |
|
size="medium" |
|
placeholder="请输入部门有无复查意见" |
|
clearable |
|
style="width: 90%" |
|
/> |
|
</figcaption> |
|
</figure> |
|
</el-form-item> |
|
</div> |
|
</el-col> |
|
<el-col :span="6" style="width: 31%; margin-left: -2.1%"> |
|
<el-form-item style="width: 100%"> |
|
<figure> |
|
 有何法律文书 |
|
<figcaption> |
|
<el-input |
|
v-model="form.legalPaper" |
|
size="medium" |
|
placeholder="请输入法律文书" |
|
clearable |
|
style="width: 90%" |
|
/> |
|
</figcaption> |
|
</figure> |
|
</el-form-item> |
|
</el-col> |
|
<el-col |
|
:span="6" |
|
style="width: 31%; margin-left: -2.1%" |
|
v-show="pageType == 'edit'" |
|
> |
|
<el-form-item style="width: 100%"> |
|
<figure> |
|
 诉求初登时间 |
|
<figcaption> |
|
<el-input |
|
v-model="form.firstRegTime" |
|
size="medium" |
|
placeholder="请输入诉求初登时间" |
|
clearable |
|
style="width: 90%" |
|
:readonly="true" |
|
/> |
|
</figcaption> |
|
</figure> |
|
</el-form-item> |
|
</el-col> |
|
</el-row> |
|
<el-row :model="form" :rules="rules" :gutter="20"> |
|
<el-col style="width: 100%; margin-left: 1%"> |
|
<div class="grid-content bg-purple"> |
|
<el-form-item style="width: 100%" prop="problemDesc"> |
|
<figure> |
|
<i></i>反应主要问题 |
|
<figcaption> |
|
<el-input |
|
type="textarea" |
|
:autosize="{ minRows: 2 }" |
|
v-model="form.problemDesc" |
|
size="medium" |
|
placeholder="请输入部门有无复查意见" |
|
clearable |
|
style="width: 90%" |
|
/> |
|
</figcaption> |
|
</figure> |
|
</el-form-item> |
|
</div> |
|
</el-col> |
|
</el-row> |
|
<el-form-item class="btn_box"> |
|
<el-button class="can_btn" @click="handleCancel">取消</el-button> |
|
<el-button class="sub_btn" type="primary" @click="submitForm" |
|
>提交</el-button |
|
> |
|
</el-form-item> |
|
</el-form> |
|
</basic-container> |
|
</template> |
|
|
|
<script> |
|
import { mapGetters } from "vuex"; |
|
import {addRegister,getStreetList,againResolve} from "@/api/register/register" |
|
import {getBaseList,getTypeList} from "@/api/base" |
|
export default { |
|
data() { |
|
return { |
|
form: { |
|
personNum: "", |
|
}, |
|
pageType: "", |
|
title: "", |
|
rules: { |
|
streetId: [ |
|
{ required: true, message: "请选择所属镇街", trigger: "change" }, |
|
], |
|
disputeId: [ |
|
{ required: true, message: "请选择诉求类型", trigger: "change" }, |
|
], |
|
problemDesc:[ |
|
{ required: true, message: "请填写反应主要问题", trigger: "change" }, |
|
] |
|
}, |
|
formData: [ |
|
{ |
|
username: "", |
|
gender: "", |
|
age: "", |
|
cardno: "", |
|
address: "", |
|
addressNow: "", |
|
phone: "", |
|
}, |
|
], |
|
streetData:[], |
|
winData:[], |
|
typeData:[] |
|
}; |
|
}, |
|
watch: {}, |
|
created() { |
|
this.getStreet(); |
|
this.getTypeData(); |
|
this.getWinData() |
|
if (this.$route.query.type == "add") { |
|
this.pageType = "add"; |
|
this.title = "诉求登记"; |
|
} else if (this.$route.query.type == "edit") { |
|
this.title = "再次调解登记"; |
|
this.pageType = "edit"; |
|
this.getAgainDetail() |
|
// this.formData = [ |
|
// { |
|
// username: "张三", |
|
// gender: "1", |
|
// age: 20, |
|
// cardno: "3708821548488178", |
|
// address: "洋河镇", |
|
// addressNow: "洋河镇", |
|
// phone: "13564854126", |
|
// }, |
|
// { |
|
// username: "李四", |
|
// gender: "1", |
|
// age: 20, |
|
// cardno: "3708821548488178", |
|
// address: "洋河镇", |
|
// addressNow: "洋河镇", |
|
// phone: "13564854126", |
|
// }, |
|
// { |
|
// username: "王二狗", |
|
// gender: "1", |
|
// age: 20, |
|
// cardno: "3708821548488178", |
|
// address: "洋河镇", |
|
// addressNow: "洋河镇", |
|
// phone: "13564854126", |
|
// }, |
|
// { |
|
// username: "王五", |
|
// gender: "1", |
|
// age: 20, |
|
// cardno: "3708821548488178", |
|
// address: "洋河镇", |
|
// addressNow: "洋河镇", |
|
// phone: "13564854126", |
|
// }, |
|
// ]; |
|
// // this.form.number = this.formData.length |
|
// this.form = { |
|
// number: this.formData.length, |
|
// id: "122555646684684", |
|
// streetId: "胶州市", |
|
// disputeId: "土地纠纷", |
|
// disposeDept: "市住建局", |
|
// hasProtocol: "无协议书", |
|
// hasOpinion: "无处理意见", |
|
// hasReviewOpinion: "无复查意见", |
|
// legalPaper: "无法律文书", |
|
// regTime: "2012-05-15 12:30", |
|
// problemDesc: "矛盾描述...........", |
|
// }; |
|
} |
|
}, |
|
computed: { |
|
...mapGetters(["tagWel", "tagList", "tag", "website"]), |
|
}, |
|
methods: { |
|
getStreet(){ |
|
getStreetList().then(res =>{ |
|
this.streetData = res.data.data |
|
}) |
|
}, |
|
getAgainDetail(){ |
|
againResolve({appealId:this.$route.query.appealId}).then(res =>{ |
|
console.log('再次调解',res); |
|
this.formData = res.data.data.visitors; |
|
this.form = res.data.data; |
|
this.form.personNum = this.formData.length |
|
}) |
|
}, |
|
getWinData(){ |
|
getBaseList().then(res =>{ |
|
this.winData = res.data.data |
|
}) |
|
}, |
|
getTypeData(){ |
|
getTypeList().then(res =>{ |
|
this.typeData = res.data.data |
|
}) |
|
}, |
|
findTag(value) { |
|
let tag, key; |
|
this.tagList.map((item, index) => { |
|
if (item.value === value) { |
|
tag = item; |
|
key = index; |
|
} |
|
}); |
|
return { tag: tag, key: key }; |
|
}, |
|
changeNumber() { |
|
let tmp = this.formData.filter((item) => item.name !== ""); |
|
this.form.personNum = tmp.length; |
|
}, |
|
handleCancel() { |
|
let { tag, key } = this.findTag(this.$route.fullPath); |
|
this.$store.commit("DEL_TAG", tag); |
|
if (tag.value === this.tag.value) { |
|
tag = this.tagList[key === 0 ? key : key - 1]; //如果关闭本标签让前推一个 |
|
this.$router.push({ |
|
path: "/register/index", |
|
}); |
|
} |
|
}, |
|
addDomain() { |
|
let obj = { |
|
username: "", |
|
gender: "", |
|
age: "", |
|
cardno: "", |
|
address: "", |
|
addressNow: "", |
|
phone: "", |
|
}; |
|
let isName = this.formData.find((item) => item.username == ""); |
|
let isSex = this.formData.find((item) => item.gender == ""); |
|
let isAge = this.formData.find((item) => item.age == ""); |
|
let isNumber = this.formData.find((item) => item.cardno == ""); |
|
let isAddress = this.formData.find((item) => item.address == ""); |
|
let isPhone = this.formData.find((item) => item.phone == ""); |
|
if ( |
|
this.formData.length == 0 || |
|
(!isName && !isSex && !isAge && !isNumber && !isAddress && !isPhone) |
|
) { |
|
this.formData.push(obj); |
|
} else { |
|
this.$message.error("请填写登记人员相关信息后新增人员"); |
|
} |
|
}, |
|
removeSpecimen(index, row) { |
|
this.formData.splice(index, 1); |
|
let tmp = this.formData.filter((item) => item.name !== ""); |
|
this.form.personNum = tmp.length; |
|
}, |
|
submitForm() { |
|
this.$refs["registerForm"].validate((valid) => { |
|
if(valid){ |
|
let params = {} |
|
if(this.formData.length !== 0){ |
|
let tmp = this.formData.filter(item => item.username !== '') |
|
if(this.pageType == 'add'){ |
|
params={ |
|
visitors:tmp, |
|
...this.form |
|
} |
|
// console.log(params) |
|
addRegister(params).then(res =>{ |
|
if(res.data.code == 200){ |
|
this.$message.success('提交成功!') |
|
let { tag, key } = this.findTag(this.$route.fullPath); |
|
this.$store.commit("DEL_TAG", tag); |
|
if (tag.value === this.tag.value) { |
|
tag = this.tagList[key === 0 ? key : key - 1]; //如果关闭本标签让前推一个 |
|
this.$router.push({ |
|
path: "/register/index", |
|
}); |
|
} |
|
} |
|
}) |
|
}else if(this.pageType == 'edit'){ |
|
params={ |
|
...this.form, |
|
visitors:tmp, |
|
} |
|
addRegister(params).then(res =>{ |
|
if(res.data.code == 200){ |
|
this.$message.success('提交成功!') |
|
let { tag, key } = this.findTag(this.$route.fullPath); |
|
this.$store.commit("DEL_TAG", tag); |
|
if (tag.value === this.tag.value) { |
|
tag = this.tagList[key === 0 ? key : key - 1]; //如果关闭本标签让前推一个 |
|
this.$router.push({ |
|
path: "/register/index", |
|
}); |
|
} |
|
} |
|
}) |
|
} |
|
}else{ |
|
this.$message.error('登记人员列表不可为空') |
|
} |
|
} |
|
}); |
|
}, |
|
}, |
|
}; |
|
</script> |
|
|
|
<style lang="scss" scoped> |
|
.title_box { |
|
width: 96%; |
|
height: 80px; |
|
display: flex; |
|
align-items: center; |
|
justify-content: space-between; |
|
margin: 0 auto; |
|
|
|
.left { |
|
height: 100%; |
|
display: flex; |
|
align-items: center; |
|
|
|
.img_box { |
|
width: 30px; |
|
height: 30px; |
|
margin: 0px 18px 0px 0px; |
|
} |
|
|
|
.left_txt { |
|
font-size: 20px; |
|
font-weight: 800; |
|
color: #333333; |
|
} |
|
} |
|
.right { |
|
cursor: pointer; |
|
} |
|
} |
|
.el-table{ |
|
width: 96% !important; |
|
} |
|
/deep/ .btn_box { |
|
display: flex; |
|
align-items: center; |
|
justify-content: center; |
|
width: 100% !important; |
|
margin-top: 60px; |
|
|
|
.can_btn { |
|
width: 118px; |
|
height: 48px; |
|
// background: #E2E2E2; |
|
// box-shadow: inset 3px 4px 5px 1px rgba(0,0,0,0.07); |
|
border-radius: 2px 2px 2px 2px; |
|
border: 1px solid #dcdfe6; |
|
// border: none; |
|
color: #999999; |
|
} |
|
|
|
.sub_btn { |
|
width: 120px; |
|
height: 50px; |
|
// background: url("~@/assets/image/btn.png") no-repeat; |
|
// background-size: 100% 100%; |
|
// background: blue; |
|
color: #fff; |
|
border: none; |
|
margin-left: 30px; |
|
} |
|
} |
|
.form_box { |
|
width: 96%; |
|
margin: 0 auto; |
|
margin-top: 30px; |
|
|
|
i::before { |
|
content: "*"; |
|
color: #f56c6c; |
|
margin-right: 6px; |
|
} |
|
} |
|
</style>
|
|
|