| @@ -121,3 +121,104 @@ export function getHouseMembers(id){ | |||
| method:'get' | |||
| }) | |||
| } | |||
| //获取申请单明细 WLHT | |||
| export function allInformationWLHT(id){ | |||
| return request({ | |||
| url:'/house/allinformation/getAllInformation/'+id, | |||
| method:'get', | |||
| }) | |||
| } | |||
| // 查询文件配置树 | |||
| export function getAttachmentConfigTree(query) { | |||
| return request({ | |||
| url: '/system/attachmentConfig/getAttachmentConfigTree', | |||
| method: 'get', | |||
| params: query | |||
| }) | |||
| } | |||
| // 新增地房申请-申请人 | |||
| export function addProposer(data) { | |||
| return request({ | |||
| url: '/house/custom/saveHouseBaseInfo', | |||
| method: 'post', | |||
| data: data | |||
| }) | |||
| } | |||
| //检查是否重复建房 | |||
| export function checkDuplicateBuilding(query) { | |||
| return request({ | |||
| url: '/house/custom/checkDuplicateBuilding', | |||
| method: 'get', | |||
| params: query | |||
| }) | |||
| } | |||
| //查询宅地信息 | |||
| export function checkDuplicateBuildingQuery(query) { | |||
| return request({ | |||
| url: '/house/custom/checkDuplicateBuildingQuery', | |||
| method: 'get', | |||
| params: query | |||
| }) | |||
| } | |||
| //乌兰浩特申请单人操作 | |||
| export function customSubmitWLHT(id) { | |||
| return request({ | |||
| url: '/house/custom/submitWLHT/' + id, | |||
| method: 'post' | |||
| }) | |||
| } | |||
| // 新增地房申请-开工申请 | |||
| export function submitStartWLHT(id) { | |||
| return request({ | |||
| url: '/house/start/submitWLHT/'+id, | |||
| method: 'post', | |||
| }) | |||
| } | |||
| // 修改地房申请-开工申请 | |||
| export function updateStart(data) { | |||
| return request({ | |||
| url: '/house/start/edit', | |||
| method: 'post', | |||
| data: data | |||
| }) | |||
| } | |||
| // 修改地房申请-验收意见 | |||
| export function updateEnd(data) { | |||
| return request({ | |||
| url: '/house/end/edit', | |||
| method: 'post', | |||
| data: data | |||
| }) | |||
| } | |||
| // 提交地房申请-验收意见(乌兰浩特 简化流程) | |||
| export function submitEndWLHT(id) { | |||
| return request({ | |||
| url: '/house/end/submitWLHT/'+id, | |||
| method: 'post', | |||
| }) | |||
| } | |||
| //查询当前登录账号坐标 | |||
| export function getQueryLand() { | |||
| return request({ | |||
| url: '/system/dept/get/current', | |||
| method: 'get' | |||
| }) | |||
| } | |||
| //查询当前登录账号坐标 | |||
| export function getWorkflow() { | |||
| return request({ | |||
| url: '/house/custom/workflow', | |||
| method: 'get' | |||
| }) | |||
| } | |||
| @@ -0,0 +1,61 @@ | |||
| import request from '@/utils/request' | |||
| // 查询地房申请-村组公示列表 | |||
| export function listAnnounce(query) { | |||
| return request({ | |||
| url: '/house/announce/list', | |||
| method: 'get', | |||
| params: query | |||
| }) | |||
| } | |||
| // 查询地房申请-村组公示详细 | |||
| export function getAnnounce(id) { | |||
| return request({ | |||
| url: '/house/announce/get/' + id, | |||
| method: 'get' | |||
| }) | |||
| } | |||
| // 新增地房申请-村组公示 | |||
| export function addAnnounce(data) { | |||
| return request({ | |||
| url: '/house/announce/add', | |||
| method: 'post', | |||
| data: data | |||
| }) | |||
| } | |||
| // 修改地房申请-村组公示 | |||
| export function updateAnnounce(data) { | |||
| return request({ | |||
| url: '/house/announce/edit', | |||
| method: 'post', | |||
| data: data | |||
| }) | |||
| } | |||
| // 删除地房申请-村组公示 | |||
| export function delAnnounce(id) { | |||
| return request({ | |||
| url: '/house/announce/remove/' + id, | |||
| method: 'get' | |||
| }) | |||
| } | |||
| // 导出地房申请-村组公示 | |||
| export function exportAnnounce(query) { | |||
| return request({ | |||
| url: '/house/announce/export', | |||
| method: 'get', | |||
| params: query | |||
| }) | |||
| } | |||
| // 查询地房申请-申请人详细 | |||
| export function getProposer(id) { | |||
| return request({ | |||
| url: '/house/proposer/get/' + id, | |||
| method: 'get' | |||
| }) | |||
| } | |||
| @@ -0,0 +1,143 @@ | |||
| import request from '@/utils/request' | |||
| // 查询地房申请-申请人列表 | |||
| export function listProposer(query) { | |||
| return request({ | |||
| url: '/house/proposer/list', | |||
| method: 'get', | |||
| params: query | |||
| }) | |||
| } | |||
| // 查询地房申请-申请人列表 | |||
| export function queryAdmin(query) { | |||
| return request({ | |||
| url: '/house/proposer/queryAdmin', | |||
| method: 'get', | |||
| params: query | |||
| }) | |||
| } | |||
| // 查询地房申请-申请人详细 | |||
| export function getProposer(id) { | |||
| return request({ | |||
| url: '/house/proposer/get/' + id, | |||
| method: 'get' | |||
| }) | |||
| } | |||
| // 新增地房申请-申请人 | |||
| export function addProposer(data) { | |||
| return request({ | |||
| url: '/house/custom/saveHouseBaseInfo', | |||
| method: 'post', | |||
| data: data | |||
| }) | |||
| } | |||
| // 修改地房申请-申请人 | |||
| export function updateProposer(data) { | |||
| return request({ | |||
| url: '/house/proposer/edit', | |||
| method: 'post', | |||
| data: data | |||
| }) | |||
| } | |||
| // 删除地房申请-申请人 | |||
| export function delProposer(id) { | |||
| return request({ | |||
| url: '/house/proposer/remove/' + id, | |||
| method: 'get' | |||
| }) | |||
| } | |||
| // 导出地房申请-申请人 | |||
| export function exportProposer(query) { | |||
| return request({ | |||
| url: '/house/proposer/export', | |||
| method: 'get', | |||
| params: query | |||
| }) | |||
| } | |||
| // 导出地房申请-申请人 | |||
| export function exportAdmin(query) { | |||
| return request({ | |||
| url: '/house/proposer/exportAdmin', | |||
| method: 'get', | |||
| params: query | |||
| }) | |||
| } | |||
| // 查询地房申请-申请人详细 | |||
| export function selectProposer(id, data) { | |||
| return request({ | |||
| url: '/house/allinformation/' + id, | |||
| method: 'get', | |||
| params: data | |||
| }) | |||
| } | |||
| // 查询地房申请-申请人详细 | |||
| export function selectAllLicense(id) { | |||
| return request({ | |||
| url: '/house/allinformation/license/' + id, | |||
| method: 'get' | |||
| }) | |||
| } | |||
| //申请单人操作 | |||
| export function customSubmit(id) { | |||
| return request({ | |||
| url: '/house/custom/submit/' + id, | |||
| method: 'post' | |||
| }) | |||
| } | |||
| //模糊查询申请人 | |||
| export function getHouseMembers(query) { | |||
| return request({ | |||
| url: '/house/custom/getHouseMembers', | |||
| method: 'get', | |||
| params: query | |||
| }) | |||
| } | |||
| //检查是否重复建房 | |||
| export function checkDuplicateBuilding(query) { | |||
| return request({ | |||
| url: '/house/custom/checkDuplicateBuilding', | |||
| method: 'get', | |||
| params: query | |||
| }) | |||
| } | |||
| //查询宅地信息 | |||
| export function checkDuplicateBuildingQuery(query) { | |||
| return request({ | |||
| url: '/house/custom/checkDuplicateBuildingQuery', | |||
| method: 'get', | |||
| params: query | |||
| }) | |||
| } | |||
| //乌兰浩特申请单人操作 | |||
| export function customSubmitWLHT(id) { | |||
| return request({ | |||
| url: '/house/custom/submitWLHT/' + id, | |||
| method: 'post' | |||
| }) | |||
| } | |||
| // 查询地房申请-申请人详细 | |||
| export function selectProposerWLHT(id, data) { | |||
| return request({ | |||
| url: '/house/allinformation/getAllInformation/' + id, | |||
| method: 'get', | |||
| params: data | |||
| }) | |||
| } | |||
| @@ -0,0 +1,37 @@ | |||
| import request from '@/utils/request' | |||
| // 新增地房申请-规划许可证 | |||
| export function addPermit(data) { | |||
| return request({ | |||
| url: '/house/permit/add', | |||
| method: 'post', | |||
| data: data | |||
| }) | |||
| } | |||
| // 修改地房申请-规划许可证 | |||
| export function updatePermit(data) { | |||
| return request({ | |||
| url: '/house/permit/edit', | |||
| method: 'post', | |||
| data: data | |||
| }) | |||
| } | |||
| // 新增地房申请-宅基地批准书 | |||
| export function addRatification(data) { | |||
| return request({ | |||
| url: '/house/ratification/add', | |||
| method: 'post', | |||
| data: data | |||
| }) | |||
| } | |||
| // 修改地房申请-宅基地批准书 | |||
| export function updateRatification(data) { | |||
| return request({ | |||
| url: '/house/ratification/edit', | |||
| method: 'post', | |||
| data: data | |||
| }) | |||
| } | |||
| @@ -7,3 +7,11 @@ export function getGeoServerConfigKey() { | |||
| method: 'get' | |||
| }) | |||
| } | |||
| // 附件地址前缀 | |||
| export function getSystemAttachmentUrl() { | |||
| return request({ | |||
| url: '/system/config/configKey/system.attachment.url', | |||
| method: 'get' | |||
| }) | |||
| } | |||
| @@ -0,0 +1,105 @@ | |||
| <template> | |||
| <!-- !!!注: 不支持逝去的日子, 以`FieldDatePicker`代替 !!! --> | |||
| <div> | |||
| <van-field | |||
| :readonly="true" | |||
| :clickable="!readonly" | |||
| :name="name" | |||
| :value="visibleValue" | |||
| :label="label" | |||
| :placeholder="placeholder" | |||
| @click="openPopup" | |||
| input-align="right" | |||
| right-icon="arrow-down" | |||
| :rules="rules" | |||
| :required="required" | |||
| :label-width="labelWidth || 'auto'" | |||
| > | |||
| <!-- <template #button> | |||
| <van-icon name="notes-o" size="20"/> | |||
| </template>--> | |||
| </van-field> | |||
| <van-calendar | |||
| ref="calender" | |||
| v-model="popupVisible" | |||
| :title="label" | |||
| :default-date="internalValue" | |||
| :readonly="readonly" | |||
| @confirm="onConfirm" /> | |||
| </div> | |||
| </template> | |||
| <script> | |||
| import { formatDate } from "element-ui/src/utils/date-util.js" | |||
| export default { | |||
| name: "FieldCalender", | |||
| props: [ | |||
| 'name', 'readonly', 'value', 'label', 'placeholder', 'required', 'rules', 'formatter', 'labelWidth' | |||
| ], | |||
| watch: { | |||
| value: function (newVal, oldVal) { | |||
| this.visibleValue = newVal; | |||
| this.internalValue = new Date(newVal); | |||
| }, | |||
| }, | |||
| created() { | |||
| if(this.value) | |||
| { | |||
| this.visibleValue = this.value; | |||
| this.internalValue = new Date(this.value); | |||
| } | |||
| }, | |||
| data() { | |||
| return { | |||
| popupVisible: false, | |||
| internalValue: new Date(this.value || Date.now()), | |||
| visibleValue: this.value, | |||
| loading: false, | |||
| }; | |||
| }, | |||
| methods: { | |||
| openPopup() { | |||
| if(!this.readonly) | |||
| { | |||
| this.popupVisible = true; | |||
| this.$nextTick(() => { | |||
| this.$refs.calender.scrollToDate(this.internalValue); | |||
| }) | |||
| } | |||
| }, | |||
| closePopup() { | |||
| this.popupVisible = false; | |||
| }, | |||
| onConfirm(data) { | |||
| this.syncValue(data); | |||
| this.$emit('input', this.visibleValue); | |||
| this.$emit('confirm', this.visibleValue, this.internalValue); | |||
| this.closePopup(); | |||
| }, | |||
| onCancel() { | |||
| this.closePopup(); | |||
| this.$emit('cancel'); | |||
| }, | |||
| getValue(data) { | |||
| let type = typeof(this.formatter); | |||
| if(type === 'function') | |||
| return this.formatter(data); | |||
| else if(type === 'string') | |||
| return formatDate(data, this.formatter); | |||
| else | |||
| return data; | |||
| }, | |||
| syncValue(data) { | |||
| this.internalValue = data; | |||
| this.visibleValue = this.getValue(data); | |||
| console.log(this.internalValue, this.visibleValue); | |||
| }, | |||
| }, | |||
| } | |||
| </script> | |||
| <style scoped> | |||
| </style> | |||
| @@ -0,0 +1,88 @@ | |||
| <template> | |||
| <div> | |||
| <van-field | |||
| :readonly="true" | |||
| :clickable="!readonly" | |||
| :name="name" | |||
| :label="label" | |||
| :placeholder="placeholder" | |||
| input-align="right" | |||
| :required="required" | |||
| :label-width="labelWidth || 'auto'" | |||
| @click="toggle" | |||
| > | |||
| <template #right-icon> | |||
| <van-checkbox v-model="checked" | |||
| :disabled="readonly" | |||
| shape="square" | |||
| ></van-checkbox> | |||
| </template> | |||
| </van-field> | |||
| </div> | |||
| </template> | |||
| <script> | |||
| export default { | |||
| name: "fieldCheckbox", | |||
| props: [ | |||
| 'name', 'readonly', 'value', 'label', 'placeholder', 'required', 'rules', | |||
| 'trueLabel', 'falseLabel', 'labelWidth' | |||
| ], | |||
| watch: { | |||
| value: function (newVal, oldVal) { | |||
| this.parseValue(newVal); | |||
| }, | |||
| checked: function (newVal, oldVal) { | |||
| if(newVal !== undefined) | |||
| this.onChanged(newVal); | |||
| }, | |||
| }, | |||
| created() { | |||
| this.parseValue(this.value); | |||
| }, | |||
| data() { | |||
| return { | |||
| internalValue: this.value, | |||
| remoteColumns: null, | |||
| remoteResponse: null, | |||
| checked: false, | |||
| }; | |||
| }, | |||
| methods: { | |||
| onChanged(data) { | |||
| let trueLabel = this.getTrueLabel(); | |||
| let falseLabel = this.getFalseLabel(); | |||
| let res = data ? trueLabel : falseLabel; | |||
| if(res != this.internalValue) | |||
| { | |||
| this.internalValue = res; | |||
| this.$emit('change', this.internalValue); | |||
| this.$emit("input", this.internalValue); | |||
| } | |||
| }, | |||
| getFalseLabel() { | |||
| return this.falseLabel !== undefined ? this.falseLabel : false; | |||
| }, | |||
| getTrueLabel() { | |||
| return this.trueLabel !== undefined ? this.trueLabel : true; | |||
| }, | |||
| parseValue(data) { | |||
| let trueLabel = this.getTrueLabel(); | |||
| let falseLabel = this.getFalseLabel(); | |||
| let res = data == trueLabel; | |||
| this.internalValue = res ? trueLabel : falseLabel; | |||
| this.checked = res; | |||
| }, | |||
| toggle() { | |||
| console.log(123); | |||
| if(!this.readonly) | |||
| this.checked = !this.checked; | |||
| }, | |||
| }, | |||
| } | |||
| </script> | |||
| <style scoped> | |||
| </style> | |||
| @@ -0,0 +1,132 @@ | |||
| <template> | |||
| <div> | |||
| <van-field | |||
| :readonly="true" | |||
| :clickable="!readonly" | |||
| :name="name" | |||
| :value="visibleValue" | |||
| :label="label" | |||
| :placeholder="placeholder" | |||
| @click="openPopup" | |||
| input-align="right" | |||
| right-icon="arrow-down" | |||
| :rules="rules" | |||
| :required="required" | |||
| :label-width="labelWidth || 'auto'" | |||
| > | |||
| <!-- <template #button> | |||
| <van-icon name="notes-o" size="20"/> | |||
| </template>--> | |||
| </van-field> | |||
| <van-popup v-model="popupVisible" position="bottom"> | |||
| <van-datetime-picker | |||
| ref="picker" | |||
| v-model="internalValue" | |||
| :type="type || 'date'" | |||
| :readonly="readonly" | |||
| :title="label" | |||
| @confirm="onConfirm" | |||
| @cancel="onCancel" | |||
| @change="onChanged" | |||
| /> | |||
| </van-popup> | |||
| </div> | |||
| </template> | |||
| <script> | |||
| import { formatDate } from "element-ui/src/utils/date-util.js" | |||
| export default { | |||
| name: "fieldDatePicker", | |||
| props: [ | |||
| 'name', 'readonly', 'value', 'label', 'placeholder', 'required', 'rules', 'formatter', 'labelWidth', | |||
| 'type', // datetime date time year-month month-day datehour | |||
| ], | |||
| watch: { | |||
| value: function (newVal, oldVal) { | |||
| this.visibleValue = newVal; | |||
| this.internalValue = new Date(newVal); | |||
| }, | |||
| }, | |||
| created() { | |||
| if(this.value) | |||
| { | |||
| this.visibleValue = this.value; | |||
| this.internalValue = new Date(this.value); | |||
| } | |||
| // 默认当前 | |||
| /* else { | |||
| this.syncValue(new Date); | |||
| }*/ | |||
| }, | |||
| data() { | |||
| return { | |||
| popupVisible: false, | |||
| internalValue: new Date(this.value || Date.now()), | |||
| visibleValue: this.value, | |||
| loading: false, | |||
| }; | |||
| }, | |||
| methods: { | |||
| openPopup() { | |||
| if(!this.readonly) | |||
| { | |||
| console.log(this.internalValue); | |||
| this.popupVisible = true; | |||
| this.$nextTick(() => { | |||
| try | |||
| { | |||
| if(1) | |||
| { | |||
| let values = (this.visibleValue || this.getValue(new Date)).split(/\D+/); //TODO: 按非数字符号粗略分割解析初始值, 仅对于类似yyyy-MM-dd | |||
| console.log(values); | |||
| this.$refs.picker.getPicker().setValues(values); | |||
| } | |||
| else { | |||
| //TODO: 打开时保存初始值, 取消或点击遮罩未确定的时候恢复该初始值到v-model | |||
| } | |||
| } | |||
| catch (e) | |||
| { | |||
| console.error(e); | |||
| } | |||
| }) | |||
| } | |||
| }, | |||
| closePopup() { | |||
| this.popupVisible = false; | |||
| }, | |||
| onConfirm(data) { | |||
| this.syncValue(data); | |||
| this.$emit('input', this.visibleValue); | |||
| this.$emit('confirm', this.visibleValue, this.internalValue); | |||
| this.closePopup(); | |||
| }, | |||
| onCancel() { | |||
| this.closePopup(); | |||
| this.$emit('cancel'); | |||
| }, | |||
| onChanged(data) { | |||
| this.$emit('change', this.getValue(data), data); | |||
| }, | |||
| getValue(data) { | |||
| let type = typeof(this.formatter); | |||
| if(type === 'function') | |||
| return this.formatter(data); | |||
| else if(type === 'string') | |||
| return formatDate(data, this.formatter); | |||
| else | |||
| return data; | |||
| }, | |||
| syncValue(data) { | |||
| this.internalValue = data; | |||
| this.visibleValue = this.getValue(data); | |||
| }, | |||
| }, | |||
| } | |||
| </script> | |||
| <style scoped> | |||
| </style> | |||
| @@ -0,0 +1,106 @@ | |||
| <template> | |||
| <div> | |||
| <van-field | |||
| :readonly="true" | |||
| :name="name" | |||
| :label="label" | |||
| :placeholder="placeholder" | |||
| input-align="right" | |||
| :required="required" | |||
| :label-width="labelWidth || 'auto'" | |||
| > | |||
| <template #right-icon> | |||
| <van-radio-group :disabled="readonly" @change="onChanged" v-model="internalValue" direction="horizontal" :rules="rules"> | |||
| <van-radio v-for="(item, index) in (columns ? columns : remoteColumns)" :name="getValue(item)" :key="index">{{getLabel(item)}}</van-radio> | |||
| </van-radio-group> | |||
| </template> | |||
| </van-field> | |||
| </div> | |||
| </template> | |||
| <script> | |||
| import request from "@/utils/request"; | |||
| export default { | |||
| name: "fieldRadio", | |||
| props: [ | |||
| 'name', 'readonly', 'value', 'label', 'placeholder', 'required', 'rules', 'columns', | |||
| 'valueKey', 'dataKey', 'remoteUrl', 'onRemoteResponse', 'labelWidth' | |||
| ], | |||
| watch: { | |||
| value: function (newVal, oldVal) { | |||
| this.internalValue = newVal; | |||
| }, | |||
| columns: function (newVal, oldVal) { | |||
| }, | |||
| remoteUrl: function (newVal, oldVal) { | |||
| this.requestRemote(); | |||
| }, | |||
| onRemoteResponse: function (newVal, oldVal) { | |||
| this.parseRemote(); | |||
| } | |||
| }, | |||
| created() { | |||
| if(this.remoteUrl) | |||
| this.requestRemote(); | |||
| }, | |||
| data() { | |||
| return { | |||
| internalValue: this.value, | |||
| remoteColumns: null, | |||
| remoteResponse: null, | |||
| }; | |||
| }, | |||
| methods: { | |||
| onChanged(data) { | |||
| this.$emit("input", this.internalValue); | |||
| this.$emit('change', this.internalValue); | |||
| }, | |||
| getValue(data) { | |||
| return typeof(data) === 'object' && this.dataKey ? data[this.dataKey] : data; | |||
| }, | |||
| getLabel(data) { | |||
| return typeof(data) === 'object' && this.valueKey ? data[this.valueKey] : data; | |||
| }, | |||
| getColumns() { | |||
| return this.columns ? this.columns : this.remoteColumns; | |||
| }, | |||
| requestRemote() { | |||
| if(!this.remoteUrl) | |||
| return; | |||
| this.remoteColumns = []; | |||
| let promise = typeof(this.remoteUrl) === 'function' ? this.remoteUrl() : (this.remoteUrl instanceof Promise ? this.remoteUrl : request(this.remoteUrl)); | |||
| promise.then((resp) => { | |||
| this.remoteResponse = resp; | |||
| this.parseRemote(); | |||
| }).catch((e) => { | |||
| console.error(e); | |||
| }).finally(() => { | |||
| }) | |||
| }, | |||
| parseRemote() { | |||
| if(!this.remoteResponse) | |||
| return; | |||
| let type = typeof(this.onRemoteResponse); | |||
| if(type === 'function') | |||
| this.remoteColumns = this.onRemoteResponse(this.remoteResponse); | |||
| else if(type === 'string') | |||
| { | |||
| let arr = this.onRemoteResponse.split('.'); | |||
| let ptr = this.remoteResponse; | |||
| for(let i in arr) | |||
| { | |||
| ptr = this.remoteResponse[arr[i]]; | |||
| } | |||
| this.remoteColumns = ptr; | |||
| } | |||
| else | |||
| this.remoteColumns = this.remoteResponse; | |||
| }, | |||
| }, | |||
| } | |||
| </script> | |||
| <style scoped> | |||
| </style> | |||
| @@ -0,0 +1,169 @@ | |||
| <template> | |||
| <div> | |||
| <van-field | |||
| :readonly="true" | |||
| :clickable="!readonly" | |||
| :name="name" | |||
| :value="visibleValue" | |||
| :label="label" | |||
| :placeholder="placeholder" | |||
| @click="openPopup" | |||
| input-align="right" | |||
| right-icon="arrow-down" | |||
| :rules="rules" | |||
| :required="required" | |||
| :label-width="labelWidth || 'auto'" | |||
| > | |||
| </van-field> | |||
| <van-popup v-model="popupVisible" position="bottom"> | |||
| <van-picker | |||
| ref="picker" | |||
| :title="label" | |||
| show-toolbar | |||
| :columns="columns ? columns : remoteColumns" | |||
| :readonly="readonly" | |||
| :value-key="valueKey" | |||
| :loading="loading" | |||
| @confirm="onConfirm" | |||
| @cancel="onCancel" | |||
| @change="onChanged" | |||
| /> | |||
| </van-popup> | |||
| </div> | |||
| </template> | |||
| <script> | |||
| import request from "@/utils/request"; | |||
| export default { | |||
| name: "fieldSelect", | |||
| props: [ | |||
| 'name', 'readonly', 'value', 'label', 'placeholder', 'required', 'rules', 'columns', | |||
| 'valueKey', 'dataKey', 'remoteUrl', 'onRemoteResponse', 'labelWidth' | |||
| ], | |||
| watch: { | |||
| value: function (newVal, oldVal) { | |||
| this.internalValue = newVal; | |||
| this.visibleValue = newVal; | |||
| this.syncIndex(); | |||
| }, | |||
| columns: function (newVal, oldVal) { | |||
| this.syncIndex(); | |||
| }, | |||
| remoteUrl: function (newVal, oldVal) { | |||
| this.requestRemote(); | |||
| }, | |||
| onRemoteResponse: function (newVal, oldVal) { | |||
| this.parseRemote(); | |||
| } | |||
| }, | |||
| created() { | |||
| if(this.remoteUrl) | |||
| this.requestRemote(); | |||
| }, | |||
| data() { | |||
| return { | |||
| popupVisible: false, | |||
| internalValue: this.value, | |||
| visibleValue: '', | |||
| defaultIndex: 0, | |||
| remoteColumns: null, | |||
| loading: false, | |||
| remoteResponse: null, | |||
| }; | |||
| }, | |||
| methods: { | |||
| openPopup() { | |||
| if(!this.readonly) | |||
| { | |||
| this.popupVisible = true; | |||
| this.$nextTick(() => { | |||
| this.$refs.picker.setIndexes([this.defaultIndex]); | |||
| }) | |||
| } | |||
| }, | |||
| closePopup() { | |||
| this.popupVisible = false; | |||
| }, | |||
| onChanged(data) { | |||
| this.$emit('change', data); | |||
| }, | |||
| onConfirm(data) { | |||
| this.syncValue(data); | |||
| this.$emit('input', this.internalValue); | |||
| this.$emit('confirm', this.internalValue); | |||
| this.closePopup(); | |||
| }, | |||
| onCancel() { | |||
| this.closePopup(); | |||
| this.$emit('cancel'); | |||
| }, | |||
| getValue(data) { | |||
| return typeof(data) === 'object' && this.dataKey ? data[this.dataKey] : data; | |||
| }, | |||
| getLabel(data) { | |||
| return typeof(data) === 'object' && this.valueKey ? data[this.valueKey] : data; | |||
| }, | |||
| syncValue(data) { | |||
| this.internalValue = this.getValue(data); | |||
| this.visibleValue = this.getLabel(data); | |||
| }, | |||
| syncIndex() { | |||
| let columns = this.getColumns(); | |||
| if(!columns) | |||
| return 0; | |||
| for(let i in columns) | |||
| { | |||
| if(this.getValue(columns[i]) == this.internalValue) { | |||
| this.defaultIndex = i; | |||
| this.visibleValue = this.getLabel(columns[i]); | |||
| break; | |||
| } | |||
| } | |||
| return 0; | |||
| }, | |||
| getColumns() { | |||
| return this.columns ? this.columns : this.remoteColumns; | |||
| }, | |||
| requestRemote() { | |||
| if(!this.remoteUrl) | |||
| return; | |||
| this.loading = true; | |||
| this.remoteColumns = []; | |||
| let promise = typeof(this.remoteUrl) === 'function' ? this.remoteUrl() : (this.remoteUrl instanceof Promise ? this.remoteUrl : request(this.remoteUrl)); | |||
| promise.then((resp) => { | |||
| this.remoteResponse = resp; | |||
| this.parseRemote(); | |||
| this.syncIndex(); | |||
| }).catch((e) => { | |||
| console.error(e); | |||
| }).finally(() => { | |||
| this.loading = false; | |||
| }) | |||
| }, | |||
| parseRemote() { | |||
| if(!this.remoteResponse) | |||
| return; | |||
| let type = typeof(this.onRemoteResponse); | |||
| if(type === 'function') | |||
| this.remoteColumns = this.onRemoteResponse(this.remoteResponse); | |||
| else if(type === 'string') | |||
| { | |||
| let arr = this.onRemoteResponse.split('.'); | |||
| let ptr = this.remoteResponse; | |||
| for(let i in arr) | |||
| { | |||
| ptr = this.remoteResponse[arr[i]]; | |||
| } | |||
| this.remoteColumns = ptr; | |||
| } | |||
| else | |||
| this.remoteColumns = this.remoteResponse; | |||
| }, | |||
| }, | |||
| } | |||
| </script> | |||
| <style scoped> | |||
| </style> | |||
| @@ -0,0 +1,340 @@ | |||
| <template> | |||
| <div class="mapBox"> | |||
| <div :id="'map-element' + elementId" class="map-element" style="width: 100%; height: 100%;"></div> | |||
| <div :id="'draw-toolbar' + elementId" class="mapBox_button" v-if="allowDraw"> | |||
| <van-button :id="'drawPolygon' + elementId" native-type="button" icon="../../../static/images/icon/icon_ht.png" type="default" block round size="small"></van-button> | |||
| <van-button :id="'drawRemove' + elementId" native-type="button" icon="cross" type="default" block round size="small" style="margin-top: 0.2rem"></van-button> | |||
| </div> | |||
| </div> | |||
| </template> | |||
| <script> | |||
| import $ from "jquery"; | |||
| const COMMON_MAP_DRAW_LAYER_NAME = '_Draw_layer'; | |||
| export default { | |||
| name: "CommonMap", | |||
| props: { | |||
| minMapZoom: { | |||
| type: Number, | |||
| default: 16, | |||
| }, | |||
| maxMapZoom: { | |||
| type: Number, | |||
| default: 18.9, | |||
| }, | |||
| allowDraw: { | |||
| type: Boolean, | |||
| default: false, | |||
| }, | |||
| coord: { | |||
| type: Array, | |||
| default: function() { | |||
| return [115.452752, 31.789033]; | |||
| }, | |||
| }, | |||
| }, | |||
| data() { | |||
| return { | |||
| isInited: false, | |||
| mapObject: null, | |||
| userLayers: [], | |||
| drawResult: null, | |||
| elementId: ('_' + Math.random()).replaceAll('.', ''), | |||
| }; | |||
| }, | |||
| created() { | |||
| }, | |||
| mounted() { | |||
| this.init(); | |||
| }, | |||
| methods: { | |||
| init() { | |||
| if(this.isInited) | |||
| return; | |||
| this.createMap(); | |||
| this.setDraw(true); | |||
| this.isInited = true; | |||
| }, | |||
| destroyMap() { | |||
| if(!this.mapObject) | |||
| return; | |||
| delete this.mapObject; | |||
| document.getElementById("map-element" + this.elementId).innerHTML = ''; | |||
| this.mapObject = null; | |||
| }, | |||
| createMap() { | |||
| if(this.mapObject) | |||
| return; | |||
| let projection = new ol.proj.Projection({ | |||
| //地图投影类型 | |||
| code: "EPSG:3857", | |||
| units: "degrees", | |||
| //extent:extent | |||
| }); | |||
| let aerial = new ol.layer.Tile({ | |||
| source: new ol.source.XYZ({ | |||
| url: "http://t0.tianditu.gov.cn/img_w/wmts?" + | |||
| "SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles" + | |||
| "&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=cc4aba6e967096098249efa069733067", | |||
| }), | |||
| isGroup: true, | |||
| name: "卫星影像图", | |||
| }); | |||
| let yingxzi = new ol.layer.Tile({ | |||
| source: new ol.source.XYZ({ | |||
| url: "https://t0.tianditu.gov.cn/DataServer?T=cia_w&x={x}&y={y}&l={z}&tk=cc4aba6e967096098249efa069733067", | |||
| }), | |||
| isGroup: true, | |||
| name: "天地图文字标注--卫星影像图", | |||
| }); | |||
| //加载地图 | |||
| let map = new ol.Map({ | |||
| // interactions: ol.interaction.DragPan({ | |||
| // onFocusOnly: false | |||
| // }), | |||
| controls: ol.control.defaults({attribution: false, zoom: false, rotate: false}).extend([]), //隐藏放大缩小按钮 | |||
| layers: [aerial, yingxzi], | |||
| projection: projection, | |||
| target: "map-element" + this.elementId, | |||
| logo: 'false', | |||
| view: new ol.View({ | |||
| center: ol.proj.fromLonLat(this.coord), | |||
| //zoom: false, | |||
| zoom: 17.9, | |||
| minZoom: this.minMapZoom, //地图缩小限制 | |||
| maxZoom: this.maxMapZoom, //地图放大限制 | |||
| }), | |||
| }); | |||
| this.mapObject = map; | |||
| //(map); | |||
| //console.log(map.getProperties()); | |||
| }, | |||
| setCoord(lng, lat) { | |||
| if(!this.mapObject) | |||
| return false; | |||
| this.mapObject.getView().setCenter(ol.proj.fromLonLat([lng, lat])); | |||
| //console.log('setCoord', lng, lat,this.mapObject); | |||
| }, | |||
| getProjection() { | |||
| if(!this.mapObject) | |||
| return null; | |||
| return this.mapObject.get('view').getProjection(); | |||
| }, | |||
| pushLayer(name, layer) { | |||
| if(!this.mapObject) | |||
| return false; | |||
| if(this.checkNameExists(name)) | |||
| { | |||
| console.error(name + ' is dup!'); | |||
| return false; | |||
| } | |||
| this.userLayers.push({ | |||
| name: name, | |||
| layer: layer, | |||
| visible: true, | |||
| }); | |||
| this.mapObject.addLayer(layer); | |||
| //console.log(name, layer); | |||
| return true; | |||
| }, | |||
| checkNameExists(name) { | |||
| if(this.userLayers.length === 0) | |||
| return false; | |||
| let res = this.userLayers.findIndex((x) => { | |||
| return x.name === name; | |||
| }); | |||
| return res !== -1; | |||
| }, | |||
| findLayer(name = null) { | |||
| if(this.userLayers.length === 0) | |||
| return null; | |||
| if(name) { | |||
| for(let i in this.userLayers) { | |||
| if(this.userLayers[i].name == name) { | |||
| return this.userLayers[i]; | |||
| } | |||
| } | |||
| } | |||
| else { | |||
| let last = this.userLayers.length - 1; | |||
| return this.userLayers[last]; | |||
| } | |||
| return null; | |||
| }, | |||
| takeLayer(name = null) { | |||
| if(this.userLayers.length === 0) | |||
| return null; | |||
| if(name) { | |||
| for(let i in this.userLayers) { | |||
| if(this.userLayers[i].name == name) { | |||
| let layer = this.userLayers[i]; | |||
| this.userLayers.splice(i, 1); | |||
| return layer; | |||
| } | |||
| } | |||
| } | |||
| else { | |||
| let last = this.userLayers.length - 1; | |||
| let layer = this.userLayers[last]; | |||
| this.userLayers.splice(last, 1); | |||
| return layer; | |||
| } | |||
| return null; | |||
| }, | |||
| popLayer(name = null) { | |||
| let layer = this.takeLayer(name); | |||
| if(layer) | |||
| this.mapObject.removeLayer(layer.layer); | |||
| }, | |||
| setLayerVisible(name, on) { | |||
| let layer = this.findLayer(name); | |||
| //console.log(layer.layer); | |||
| if(!layer) | |||
| return false; | |||
| layer.layer.setVisible(on); | |||
| return true; | |||
| }, | |||
| hideLayer(name = null) { | |||
| return this.setLayerVisible(name, false); | |||
| }, | |||
| showLayer(name = null) { | |||
| return this.setLayerVisible(name, true); | |||
| }, | |||
| setDraw(on) { | |||
| if(!this.mapObject) | |||
| return; | |||
| /* if(this.allowDraw === on) | |||
| return;*/ | |||
| if(on) { | |||
| let self = this; | |||
| let draw; | |||
| // 不要使用 $('DOM-selector').click(function), 动态加载按钮时手机端会失效 | |||
| $(document).on('click', "#drawPolygon" + this.elementId, function () { | |||
| self.drawResult = null; | |||
| self.$emit("drawStarted"); | |||
| self.popLayer(COMMON_MAP_DRAW_LAYER_NAME); | |||
| let drawLayer = new ol.layer.Vector({ | |||
| source: new ol.source.Vector(), | |||
| }); | |||
| self.pushLayer(COMMON_MAP_DRAW_LAYER_NAME, drawLayer); | |||
| draw = new ol.interaction.Draw({ | |||
| source: drawLayer.getSource(), | |||
| type: "Polygon" | |||
| }); | |||
| draw.on('drawend', function (evt) { | |||
| if(self.drawInsert != null){ | |||
| $("#drawRemove" + self.elementId).trigger('click'); | |||
| } | |||
| let feature = evt.feature; | |||
| let geometry = feature.getGeometry(); | |||
| let coordinate = geometry.getCoordinates(); | |||
| self.drawResult = coordinate; | |||
| self.$emit("drawFinished", coordinate); | |||
| }); | |||
| self.mapObject.addInteraction(draw); | |||
| //console.log("drawPolygon"); | |||
| }); | |||
| //清除画图鼠标点击事件 | |||
| $(document).on('click', "#drawRemove" + this.elementId, function () { | |||
| self.drawInsert = null; | |||
| self.mapObject.removeInteraction(draw); | |||
| self.popLayer(COMMON_MAP_DRAW_LAYER_NAME); | |||
| //console.log("drawRemove"); | |||
| }); | |||
| //还原之前图层 | |||
| /*$("#drawReset" + this.elementId).click(function () { | |||
| self.popLayer(COMMON_MAP_DRAW_LAYER_NAME); | |||
| self.drawResult = null; | |||
| self.$emit("drawReseted"); | |||
| //console.log("drawReset"); | |||
| });*/ | |||
| } | |||
| else | |||
| { | |||
| self.popLayer(COMMON_MAP_DRAW_LAYER_NAME); | |||
| self.drawResult = null; | |||
| } | |||
| }, | |||
| setLayer(name, theGeom = null) { | |||
| this.popLayer(name); | |||
| if(theGeom) | |||
| this.addLayer(name, theGeom); | |||
| }, | |||
| addLayer(name, theGeom) { | |||
| if(!this.mapObject) | |||
| return false; | |||
| //地图只加载一次 | |||
| //加载地图编辑 | |||
| //图层查询定位开始 ---------start | |||
| let hc_land = new ol.layer.Vector({ | |||
| title: name, | |||
| source: new ol.source.Vector({ | |||
| projection: this.getProjection(), | |||
| features: new ol.format.GeoJSON().readFeatures("{\n" + | |||
| " \"type\": \"Feature\",\n" + | |||
| " \"geometry\":" + theGeom + "}"), | |||
| }), | |||
| style: new ol.style.Style({ | |||
| fill: new ol.style.Fill({ | |||
| //矢量图层填充颜色,以及透明度 | |||
| color: "rgba(204, 255, 204,0.3)", | |||
| }), | |||
| stroke: new ol.style.Stroke({ | |||
| //边界样式 | |||
| color: "#47c68f", | |||
| width: 3, | |||
| }), | |||
| }), | |||
| }); | |||
| if(!this.pushLayer(name, hc_land)) | |||
| return false; | |||
| var maxXMap = hc_land.values_.source.featuresRtree_.rbush_.data.maxX; | |||
| var maxYMap = hc_land.values_.source.featuresRtree_.rbush_.data.maxY; | |||
| var minXMap = hc_land.values_.source.featuresRtree_.rbush_.data.minX; | |||
| var minYMap = hc_land.values_.source.featuresRtree_.rbush_.data.minY; | |||
| //定位查询位置 | |||
| var center = ol.extent.getCenter([maxXMap, maxYMap, minXMap, minYMap]); //获取边界区域的中心位置 | |||
| this.mapObject.getView().animate({ | |||
| // 只设置需要的属性即可 | |||
| center: center, // 中心点 | |||
| zoom: 17.9, // 缩放级别 | |||
| rotation: undefined, // 缩放完成view视图旋转弧度 | |||
| duration: 1000, // 缩放持续时间,默认不需要设置 | |||
| }); | |||
| return true; | |||
| }, | |||
| update() { | |||
| if(!this.mapObject) | |||
| return; | |||
| this.mapObject.updateSize(); | |||
| }, | |||
| } | |||
| } | |||
| </script> | |||
| <style scoped lang="scss"> | |||
| .map-element { | |||
| width: 100%; | |||
| height: 100%; | |||
| } | |||
| .mapBox{ | |||
| position: relative; | |||
| .mapBox_button{ | |||
| position: absolute; | |||
| top: 0.2rem; | |||
| right: 2%; | |||
| } | |||
| } | |||
| </style> | |||
| @@ -0,0 +1,270 @@ | |||
| <template> | |||
| <div v-if="this.attachmentList.length !== 0"> | |||
| <p class="main_title">当前节点所需上传文件</p> | |||
| <van-steps direction="vertical" :active="active"> | |||
| <van-step | |||
| v-for="(item, index) in attachmentList" | |||
| :key="index"> | |||
| <van-collapse :accordion="true" v-model="item.collapse"> | |||
| <van-collapse-item :title="item.fileTypeName + '(' + item.fileList.length + ')'" :name="0"> | |||
| <van-uploader | |||
| v-model="item.fileList" | |||
| :after-read="(file, detail) => { handleUploadSuccess(file, detail, item); }" | |||
| :readonly="disabled || !item.current" | |||
| :disabled="disabled || !item.current" | |||
| :show-upload="!disabled && item.current" | |||
| :before-delete="handleRemove" | |||
| > | |||
| <!-- accept=".jpg,.png,.gif,.pdf,.doc,.docx,.xlsx,.xls" 设置了无法拉起相机/下载 --> | |||
| </van-uploader> | |||
| </van-collapse-item> | |||
| </van-collapse> | |||
| </van-step> | |||
| </van-steps> | |||
| </div> | |||
| </template> | |||
| <script> | |||
| import { treeSingleProcessView , attach , removeFile , getAttachmentConfigTree, attachmentFind } from "@/api/onlineHome/homestead/application"; | |||
| import {getToken} from "@/utils/auth"; | |||
| import request from '@/utils/request' | |||
| /** 导入JS方法 */ | |||
| export default { | |||
| name: "houseApplyUploadComp", | |||
| components: {}, | |||
| props: ["businessType", "proposerId", "houseApplyStatus", "processKey", "tableName", "readonly", 'full'], | |||
| data() { | |||
| return { | |||
| disabled: this.readonly, | |||
| loading: false, | |||
| attachmentList: [], | |||
| uploadImg: { | |||
| //上传图片配置 | |||
| uploadImgUrl: "/common/attach", | |||
| }, | |||
| newAttachments: [], | |||
| active: -1, | |||
| has: false, | |||
| } | |||
| }, | |||
| watch: { | |||
| proposerId: function (newVal, oldVal) { | |||
| this.showAttachmentComp(this.businessType, newVal, this.houseApplyStatus, this.processKey, this.tableName, this.full); | |||
| }, | |||
| readonly: function (newVal, oldVal) { | |||
| this.disabled = newVal; | |||
| }, | |||
| }, | |||
| created() { | |||
| if (this.businessType !== null && this.proposerId == -1) { | |||
| this.showAttachmentComp(this.businessType, this.proposerId, this.houseApplyStatus, this.processKey, this.tableName, this.full) | |||
| } | |||
| }, | |||
| methods: { | |||
| handleUploadSuccess(file, detail, item) { | |||
| this.setFileStatus(file, 'uploading', '文件上传中...'); | |||
| let formData = new FormData; | |||
| formData.set('file', file.file); | |||
| request({ | |||
| url: this.uploadImg.uploadImgUrl, | |||
| method: "post", | |||
| params: item.postData, | |||
| data: formData, | |||
| }).then((resp) => { | |||
| file.response = resp; | |||
| console.log(resp); | |||
| file.fileList = item.fileList; | |||
| this.onFileListChanged("ADD", resp.id); | |||
| this.setFileStatus(file, 'done', '文件上传成功'); | |||
| this.$emit('onUploadSuccess', file); | |||
| }).catch((e) => { | |||
| this.setFileStatus(file, 'fail', '文件上传失败!'); | |||
| }); | |||
| return true; | |||
| }, | |||
| handleRemove(file, detail) { | |||
| console.log(file, detail); | |||
| this.setFileStatus(file, 'uploading', '文件删除中...'); | |||
| let id = file.id || file.response.id; | |||
| removeFile(id).then(resp => { | |||
| if(this.proposerId != -1 && false) // 不刷新 | |||
| this.showAttachmentComp(this.businessType, this.proposerId, this.houseApplyStatus, this.processKey, this.tableName, this.full) | |||
| /* else // 新增时 | |||
| { | |||
| let fileList = file.fileList; | |||
| //console.log(fileList); | |||
| fileList.splice(fileList.indexOf(file), 1); | |||
| }*/ | |||
| this.setFileStatus(file, 'done', '文件删除成功'); | |||
| this.onFileListChanged("REMOVE", id); | |||
| }).catch((e) => { | |||
| this.setFileStatus(file, 'fail', '文件删除失败!'); | |||
| }).finally(() => { | |||
| //loading.close(); | |||
| }); | |||
| return true; | |||
| }, | |||
| showAttachmentComp(businessType, proposerId, houseApplyStatus, processKey, tableName, full) { | |||
| this.attachmentList = []; | |||
| this.active = -1; | |||
| this.has = false; | |||
| if(!full && 0) | |||
| { | |||
| this.getCurrentFiles(businessType, proposerId, houseApplyStatus, processKey, tableName); | |||
| } | |||
| else | |||
| { | |||
| this.getHistoryFiles(businessType, proposerId, houseApplyStatus, processKey, tableName); | |||
| } | |||
| }, | |||
| formatFile(list) { | |||
| if (list !== null && list !== undefined) { | |||
| const baseImgUrl = this.$store.getters.baseRoutingUrl; | |||
| let UfileList = []; //上传图片列表 | |||
| list.forEach((value, index) => { | |||
| UfileList.push({ | |||
| name: value.fileName, | |||
| fileUrl: value.fileUrl, | |||
| url: baseImgUrl + value.fileUrl, | |||
| id: value.id, | |||
| fileList: UfileList, | |||
| }); | |||
| }); | |||
| return UfileList; | |||
| } | |||
| }, | |||
| onFileListChanged(type, id) { | |||
| if(this.proposerId != -1) return; | |||
| if(type === "ADD") | |||
| { | |||
| this.newAttachments.push(id); | |||
| } | |||
| else if(type === "REMOVE") | |||
| { | |||
| let index = this.newAttachments.indexOf(id); | |||
| if(index !== -1) | |||
| this.newAttachments.splice(index, 1); | |||
| } | |||
| console.log(this.newAttachments); | |||
| this.$emit('uploadFinished', this.newAttachments); | |||
| }, | |||
| getCurrentFiles(businessType, proposerId, houseApplyStatus, processKey, tableName) { | |||
| this.loading = true; | |||
| treeSingleProcessView({ | |||
| businessType: businessType, | |||
| houseApplyStatus: houseApplyStatus, | |||
| processKey: processKey, | |||
| tableName: tableName, | |||
| }).then(res => { | |||
| this.handleResponse(res.rows, proposerId, houseApplyStatus, tableName); | |||
| if(this.attachmentList.length === 0) | |||
| { | |||
| this.disabled = true; | |||
| this.getHistoryFiles(businessType, proposerId, houseApplyStatus, processKey, tableName); | |||
| } | |||
| }).finally(() => { | |||
| this.loading = false; | |||
| }); | |||
| }, | |||
| getHistoryFiles(businessType, proposerId, houseApplyStatus, processKey, tableName) { | |||
| this.loading = true; | |||
| getAttachmentConfigTree({ | |||
| businessType: businessType, | |||
| nodeStatus: houseApplyStatus, | |||
| processKey: processKey, | |||
| nodeStatusSort: '1,32,2,3,33,31,4,5,34,6,7,8,9,10,' | |||
| + '12,13,14,15,16,17,28,19,18,' | |||
| + '20,21,22,23,24,25,30,29,26,27' | |||
| , | |||
| }).then(resp => { | |||
| //console.log(resp); | |||
| try { | |||
| if(!resp.data || resp.data.length === 0) | |||
| return; | |||
| let rows = resp.data[0].params.children; | |||
| rows.forEach((value, index) => { | |||
| if (!value.params.children) | |||
| return; | |||
| this.handleResponse(value.params.children, proposerId, houseApplyStatus, tableName); | |||
| }); | |||
| } | |||
| catch (e) | |||
| { | |||
| console.error(e); | |||
| } | |||
| }).finally(() => { | |||
| this.loading = false; | |||
| }); | |||
| }, | |||
| handleResponse(rows, proposerId, houseApplyStatus, tableName) { | |||
| rows.forEach((value, index) => { | |||
| let obj = { | |||
| fileTypeName: value.fileTypeName, | |||
| tableId: proposerId, | |||
| tableName: tableName, | |||
| fileList: [], | |||
| fileType: value.fileType, | |||
| postData: { | |||
| tableId: proposerId, | |||
| tableName: tableName, | |||
| bizPath: tableName, | |||
| fileType: value.fileType, | |||
| }, | |||
| current: value.nodeStatus == houseApplyStatus, | |||
| collapse: this.disabled || value.nodeStatus == houseApplyStatus ? 0 : '', | |||
| }; | |||
| if(value.nodeStatus != houseApplyStatus && !this.has) | |||
| this.active++; | |||
| if(value.nodeStatus == houseApplyStatus) | |||
| { | |||
| if(!this.has) | |||
| this.active++; | |||
| this.has = true; | |||
| } | |||
| this.attachmentList.push(obj); | |||
| }); | |||
| if (proposerId !== -1) { | |||
| this.attachmentList.forEach((value, index) => { | |||
| attachmentFind(value).then(resp => { | |||
| let list = this.formatFile(resp.data); | |||
| this.$set(this.attachmentList[index], "fileList", list); | |||
| }); | |||
| }); | |||
| } | |||
| }, | |||
| setFileStatus(file, status, message) { | |||
| file.status = status; | |||
| file.message = message; | |||
| }, | |||
| } | |||
| }; | |||
| </script> | |||
| <style scoped> | |||
| .my_class >>> .el-upload--picture-card { | |||
| width: 72px; | |||
| height: 72px; | |||
| line-height: 78px; | |||
| } | |||
| .my_class >>> .el-upload-list__item { | |||
| width: 72px; | |||
| height: 72px; | |||
| } | |||
| .my_class >>> .el-upload-list__item-preview { | |||
| width: 20px; | |||
| } | |||
| .my_class >>> .el-upload-list__item-delete { | |||
| width: 20px; | |||
| } | |||
| .main_title{ | |||
| font-size: 0.4rem; | |||
| color: #1D6FE9; | |||
| margin: 0.2rem 6%; | |||
| position: relative; | |||
| } | |||
| </style> | |||
| @@ -0,0 +1,155 @@ | |||
| <template> | |||
| <div> | |||
| <van-uploader | |||
| ref="pictureUpload" | |||
| :disabled="uploadDisabled" | |||
| :readonly="uploadDisabled" | |||
| :deletable="!uploadDisabled" | |||
| :show-upload="!uploadDisabled" | |||
| :data="uploadImg.locationplanPostData" | |||
| :before-delete="handleRemove" | |||
| v-model="uploadImg.fileList" | |||
| :after-read="onUploadChanged" | |||
| > | |||
| <!-- :accept="uploadImg.accept"--> | |||
| </van-uploader> | |||
| </div> | |||
| </template> | |||
| <script> | |||
| import {getToken} from "@/utils/auth"; | |||
| import request from "@/utils/request"; | |||
| export default { | |||
| name: "HouseLocationPlanComp", | |||
| props: ["uploadDisabled", 'jsonData', 'proposerId', 'tableName'], | |||
| watch: { | |||
| jsonData: { | |||
| handler: function (newVal, oldVal) { | |||
| this.reset(); | |||
| this.uploadImg.fileList = this.makeUploadFileList(newVal); | |||
| }, | |||
| immediate: true, | |||
| }, | |||
| proposerId: function (newVal, oldVal) { | |||
| this.reset(); | |||
| this.uploadImg.locationplanPostData.tableId = newVal; | |||
| console.log(newVal); | |||
| }, | |||
| }, | |||
| created() { | |||
| }, | |||
| data() { | |||
| return { | |||
| uploadImg: { | |||
| //上传图片配置 | |||
| uploadLocationPlanFiles: "/house/custom/uploadLocationPlanFiles", | |||
| uploadImgUrl: process.env.VUE_APP_BASE_API + "/common/attachs", | |||
| uploadImgHeaders: { | |||
| Authorization: "Bearer " + getToken(), | |||
| }, | |||
| accept: '.jpg,.png,.gif,.jpeg', | |||
| fileList: [], | |||
| locationplanPostData: { | |||
| tableId: this.proposerId, | |||
| tableName: this.tableName, | |||
| bizPath: 't_house_apply_proposer', | |||
| fileType: '0', | |||
| }, | |||
| uploadFileList: [], | |||
| removeFileList: [], | |||
| }, | |||
| } | |||
| }, | |||
| methods: { | |||
| reset() { | |||
| this.uploadImg.uploadFileList = []; | |||
| this.uploadImg.removeFileList = []; | |||
| }, | |||
| onUploadChanged(file, detail) { | |||
| console.log(file, detail); | |||
| this.uploadImg.uploadFileList = []; | |||
| this.uploadImg.fileList.forEach((item, key, index) => { | |||
| if(!item.hasOwnProperty('_Data')) | |||
| this.uploadImg.uploadFileList.push(item.file); | |||
| }); | |||
| this.$emit('uploadFileChanged', this.uploadImg.uploadFileList); | |||
| return true; | |||
| }, | |||
| //删除平面位置图 | |||
| handleRemove(file, detail) { | |||
| console.log(file, detail); | |||
| if(file.hasOwnProperty('_Data')) // from server | |||
| { | |||
| this.uploadImg.removeFileList.push(file._Data.id); | |||
| this.$emit('removeFileChanged', this.uploadImg.removeFileList); | |||
| } | |||
| else | |||
| { | |||
| //this.onUploadChanged(file, this.uploadImg.fileList); | |||
| } | |||
| return true; | |||
| }, | |||
| // 图片上传尺寸大小检验 | |||
| beforeUpload(file) { | |||
| const isLt50M = file.size / 1024 / 1024 < 30; | |||
| if (!isLt50M) { | |||
| this.$message({ | |||
| message: "上传文件大小不能超过 30MB!", | |||
| type: "error", | |||
| }); | |||
| return false; | |||
| } else if (file.name.length > 100) { | |||
| // 图片上传文件名长度检验(配合后台上传方法的验证,否则上传不成功但是前台无提示) | |||
| this.$message({ | |||
| message: "上传文件的文件名长度不能超过 100个字符!", | |||
| type: "error", | |||
| }); | |||
| return false; | |||
| } | |||
| return isLt50M; | |||
| }, | |||
| makeUploadFileList(json) { | |||
| if(!json) return []; | |||
| const Host = this.$store.getters.baseRoutingUrl; | |||
| let fileList = JSON.parse(json); | |||
| let res = []; | |||
| fileList.forEach((x) => { | |||
| let item = { | |||
| name: x.fileName, | |||
| url: Host + x.fileUrl, | |||
| id: x.id, | |||
| _Data: x, | |||
| fileList: res, | |||
| }; | |||
| console.log(item); | |||
| res.push(item); | |||
| }); | |||
| return res; | |||
| }, | |||
| updatePlanFiles() { | |||
| console.log('新增', this.uploadImg.uploadFileList); | |||
| console.log('移除', this.uploadImg.removeFileList); | |||
| // 手动上传 | |||
| let formData = new FormData; | |||
| this.uploadImg.uploadFileList.forEach((x) => { | |||
| formData.append('file', x); | |||
| }); | |||
| formData.append('removeIds', this.uploadImg.removeFileList); | |||
| return request({ | |||
| url: this.uploadImg.uploadLocationPlanFiles + '/' + this.uploadImg.locationplanPostData.tableId, | |||
| method: "post", | |||
| params: this.uploadImg.locationplanPostData, | |||
| data: formData, | |||
| }); | |||
| }, | |||
| isValid() { | |||
| return(this.uploadImg.uploadFileList.length > 0 || this.uploadImg.removeFileList.length > 0); | |||
| }, | |||
| } | |||
| } | |||
| </script> | |||
| <style scoped> | |||
| </style> | |||
| @@ -0,0 +1,75 @@ | |||
| <template> | |||
| <div style="display: flex; align-items: center; justify-content: center;" @click="next"> | |||
| <img style="width: 100%;" :src="currentImage.url" :alt="currentImage.name"/> | |||
| </div> | |||
| </template> | |||
| <script> | |||
| export default { | |||
| name: "RawImageCarousel", | |||
| props: ['images', 'nameLabel', 'urlLabel'], | |||
| watch: { | |||
| images: { | |||
| deep: true, | |||
| handler: function (newVal, oldVal) { | |||
| if(this.internalImages !== newVal) | |||
| this.index = 0; | |||
| this.getCurrentImage(); | |||
| }, | |||
| } | |||
| }, | |||
| created() { | |||
| this.getCurrentImage(); | |||
| }, | |||
| data() { | |||
| return { | |||
| index: 0, | |||
| internalImages: null, | |||
| currentImage: { | |||
| name: '', | |||
| url: '', | |||
| }, | |||
| }; | |||
| }, | |||
| methods: { | |||
| next() { | |||
| this.index++; | |||
| if(this.index >= this.images.length) | |||
| this.index = 0; | |||
| this.getCurrentImage(); | |||
| }, | |||
| getCurrentImage() { | |||
| let img = this.index >= this.images.length ? null : this.images[this.index]; | |||
| if(img) | |||
| { | |||
| if(typeof(img) === 'object') | |||
| { | |||
| this.currentImage.url = this.getValue(img, this.urlLabel); | |||
| this.currentImage.name = this.getValue(img, this.nameLabel); | |||
| } | |||
| else | |||
| this.currentImage.url = img; | |||
| } | |||
| else | |||
| { | |||
| this.currentImage.url = ''; | |||
| } | |||
| }, | |||
| getValue(obj, field) { | |||
| switch (typeof field) | |||
| { | |||
| case 'string': | |||
| return obj[field] || ''; | |||
| case 'function': | |||
| return field(obj) || ''; | |||
| default: | |||
| return obj || ''; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style scoped> | |||
| </style> | |||
| @@ -2374,6 +2374,60 @@ export const constantRoutes = [ | |||
| }, | |||
| component: (resolve) => require(['@/views/homesteadSurvey/settle'], resolve) | |||
| }, | |||
| { | |||
| path: '/houseAnnounce', | |||
| name: 'houseAnnounce', | |||
| meta: { | |||
| title: '公示查询', | |||
| hidden: true, | |||
| }, | |||
| component: (resolve) => require(['@/views/onlineHome/homestead/homeApplication/houseAnnounce'], resolve) | |||
| }, | |||
| { | |||
| path: '/houseLicense', | |||
| name: 'houseLicense', | |||
| meta: { | |||
| title: '证书查看', | |||
| hidden: true, | |||
| }, | |||
| component: (resolve) => require(['@/views/onlineHome/homestead/homeApplication/houseLicense'], resolve) | |||
| }, | |||
| { | |||
| path: '/houseLicenseDetail', | |||
| name: 'houseLicenseDetail', | |||
| meta: { | |||
| title: '证书查看', | |||
| hidden: true, | |||
| }, | |||
| component: (resolve) => require(['@/views/onlineHome/homestead/homeApplication/houseLicenseDetail'], resolve) | |||
| }, | |||
| { | |||
| path: '/licensePermitEdit', | |||
| name: 'licensePermitEdit', | |||
| meta: { | |||
| title: '修改许可证', | |||
| hidden: true, | |||
| }, | |||
| component: (resolve) => require(['@/views/onlineHome/homestead/homeApplication/licensePermitEdit'], resolve) | |||
| }, | |||
| { | |||
| path: '/licenseRatificationEdit', | |||
| name: 'licenseRatificationEdit', | |||
| meta: { | |||
| title: '修改批准书', | |||
| hidden: true, | |||
| }, | |||
| component: (resolve) => require(['@/views/onlineHome/homestead/homeApplication/licenseRatificationEdit'], resolve) | |||
| }, | |||
| { | |||
| path: '/proposerLite', | |||
| name: 'proposerLite', | |||
| meta: { | |||
| title: '农村宅基地申请(简)', | |||
| hidden: true, | |||
| }, | |||
| component: (resolve) => require(['@/views/onlineHome/homestead/homeApplication/proposerLite'], resolve) | |||
| }, | |||
| ]; | |||
| @@ -6,5 +6,8 @@ const getters = { | |||
| roles: state => state.user.roles, | |||
| permissions: state => state.user.permissions, | |||
| bookName: state => state.user.bookName, | |||
| nickName: state => state.user.nickName, | |||
| baseRoutingUrl: state => state.user.baseRoutingUrl, | |||
| } | |||
| export default getters | |||
| @@ -1,6 +1,7 @@ | |||
| import { login, logout, getInfo, smsLogin } from '@/api/login'; | |||
| import { registerOn } from "@/api/register"; | |||
| import { getToken, setToken, removeToken } from '@/utils/auth' | |||
| import { getSystemAttachmentUrl } from '@/api/system/config' | |||
| const user = { | |||
| state: { | |||
| @@ -9,7 +10,10 @@ const user = { | |||
| avatar: '', | |||
| roles: [], | |||
| permissions: [], | |||
| bookName: '' | |||
| bookName: '', | |||
| nickName: '', | |||
| baseRoutingUrl: '', | |||
| }, | |||
| mutations: { | |||
| @@ -39,7 +43,13 @@ const user = { | |||
| }, | |||
| SET_BOOKNAME: (state, bookName) => { | |||
| state.bookName = bookName | |||
| } | |||
| }, | |||
| SET_NICKNAME: (state, nickName) => { | |||
| state.nickName = nickName | |||
| }, | |||
| SET_baseRoutingUrl: (state, baseRoutingUrl) => { | |||
| state.baseRoutingUrl = baseRoutingUrl | |||
| }, | |||
| }, | |||
| actions: { | |||
| @@ -113,6 +123,11 @@ const user = { | |||
| commit('SET_LOGINBOOKID', user.loginBookId) | |||
| commit('SET_DEPTNAME', user.deptName) | |||
| commit('SET_AVATAR', avatar) | |||
| commit('SET_NICKNAME', user.nickName); | |||
| getSystemAttachmentUrl().then((resp) => { | |||
| commit('SET_baseRoutingUrl', resp.msg); | |||
| }); | |||
| resolve(res) | |||
| }).catch(error => { | |||
| reject(error) | |||
| @@ -2,16 +2,26 @@ | |||
| <div> | |||
| <van-nav-bar | |||
| title="我的事项" | |||
| fixed | |||
| placeholder | |||
| left-arrow | |||
| @click-left="goOnlineHomeIndex" | |||
| /> | |||
| <van-tabs v-model="activeName" title-active-color="#1D6FE9" color="#1D6FE9" line-width="20px" swipeable @click="getList"> | |||
| <van-tabs v-model="activeName" title-active-color="#1D6FE9" color="#1D6FE9" line-width="20px" swipeable @click="getList(0)"> | |||
| <van-tab title="待办" name="1" > | |||
| </van-tab> | |||
| <van-tab title="已办" name="2"> | |||
| </van-tab> | |||
| </van-tabs> | |||
| <van-cell-group @click="goDetail(item)" v-for="(item,index) in taskList" :key="index" style="width: 96%;margin:2%;border-radius: 6px;overflow: hidden;padding-top: 10px;padding-bottom: 10px;box-shadow: 0px 3px 6px 0px rgba(0,0,0,0.16);"> | |||
| <van-pull-refresh v-model="refreshing" @refresh="getList(0)"> | |||
| <van-list | |||
| v-model="loading" | |||
| :finished="finished" | |||
| finished-text="没有更多了" | |||
| :immediate-check="false" | |||
| @load="getList('+1')" | |||
| > | |||
| <van-cell-group @click="goDetail(item)" v-for="(item,index) in taskList" :key="index" style="width: 96%;margin:2%;border-radius: 6px;overflow: hidden;padding-top: 10px;padding-bottom: 10px;box-shadow: 0px 3px 6px 0px rgba(0,0,0,0.16);"> | |||
| <van-cell> | |||
| <template #title> | |||
| <van-row style=""> | |||
| @@ -43,6 +53,8 @@ | |||
| </template> | |||
| </van-cell> | |||
| </van-cell-group> | |||
| </van-list> | |||
| </van-pull-refresh> | |||
| </div> | |||
| </template> | |||
| @@ -65,6 +77,9 @@ | |||
| pageSize: 100, | |||
| }, | |||
| activityBusinessTypeOptions:[], | |||
| refreshing: false, | |||
| loading: false, | |||
| finished: false, | |||
| } | |||
| }, | |||
| created() { | |||
| @@ -81,12 +96,28 @@ | |||
| goOnlineHomeIndex(){ | |||
| this.$router.push({name:'onlineHomeWorkbench'}) | |||
| }, | |||
| getList() { | |||
| this.taskList = [] | |||
| this.$set(this.queryParams, "systemType", '4'); | |||
| getList(target) { | |||
| if(!target) | |||
| { | |||
| this.refreshing = true; | |||
| this.finished = false; | |||
| this.queryParams.pageNum = 1; | |||
| this.taskList = [] | |||
| } | |||
| else if(typeof(target) === 'number') | |||
| this.queryParams.pageNum = target; | |||
| else { | |||
| this.queryParams.pageNum = eval(this.queryParams.pageNum + target.toString()) | |||
| } | |||
| this.$set(this.queryParams, "systemType", '11'); // 4 | |||
| if(this.activeName=='1'){ | |||
| ListTodo(this.queryParams).then((response) => { | |||
| console.log(response) | |||
| if(response.rows.length === 0) | |||
| { | |||
| this.finished = true; | |||
| return; | |||
| } | |||
| response.rows.map(res => { | |||
| if(res.tableName?res.tableName.indexOf('house')>0:""){ | |||
| res.tableName = '来自农村宅基地管理系统' | |||
| @@ -104,10 +135,18 @@ | |||
| }); | |||
| } | |||
| }) | |||
| }) | |||
| }).finally(() => { | |||
| this.loading = false; | |||
| this.refreshing = false; | |||
| }); | |||
| }else{ | |||
| ListDone(this.queryParams).then((response) => { | |||
| console.log(response) | |||
| if(response.rows.length === 0) | |||
| { | |||
| this.finished = true; | |||
| return; | |||
| } | |||
| response.rows.map(res => { | |||
| if(res.tableName?res.tableName.indexOf('house')>0:""){ | |||
| res.tableName = '来自农村宅基地管理系统' | |||
| @@ -125,7 +164,10 @@ | |||
| }); | |||
| } | |||
| }) | |||
| }) | |||
| }).finally(() => { | |||
| this.loading = false; | |||
| this.refreshing = false; | |||
| }); | |||
| } | |||
| }, | |||
| goDetail(item){ | |||
| @@ -136,6 +178,11 @@ | |||
| case 'landscope': | |||
| case 'accepting': | |||
| this.$router.push({name:'approvalForm',query: {id:item.formData.id,taskId:item.taskId,instanceId:item.formData.instanceId,type:item.type}}) | |||
| break; | |||
| case 'baseApplyWLHT': | |||
| case 'landscopeWLHT': | |||
| case 'acceptingWLHT': | |||
| this.$router.push({name:'proposerLite',query: {id:item.formData.applyProposerId || item.formData.id,taskId:item.taskId,instanceId:item.formData.instanceId,type:item.type, processKey: item.formData.processKey}}) | |||
| break; | |||
| case 'yinnong_transfer': | |||
| this.$router.push({name:'approvalApproval',query: {id:item.formData.id,taskId:item.taskId,type:item.type}}) | |||
| @@ -35,23 +35,25 @@ | |||
| </template> | |||
| <script> | |||
| import { allInformation } from "@/api/onlineHome/homestead/application"; | |||
| import { allInformation, allInformationWLHT } from "@/api/onlineHome/homestead/application"; | |||
| export default { | |||
| name: "flowChart", | |||
| data() { | |||
| return { | |||
| applicationDetail:[], | |||
| id:'' | |||
| id:'', | |||
| processKey: '', | |||
| }; | |||
| }, | |||
| created() { | |||
| this.id = this.$route.query.id; | |||
| this.processKey = this.$route.query.processKey; | |||
| this.getDetail(); | |||
| }, | |||
| methods: { | |||
| //获取数据集合 | |||
| getDetail(){ | |||
| allInformation(this.id).then(response => { | |||
| (this.processKey && this.processKey.endsWith('WLHT') ? allInformationWLHT : allInformation)(this.id).then(response => { | |||
| console.log(response) | |||
| this.applicationDetail = response.data; | |||
| }); | |||
| @@ -5,7 +5,7 @@ | |||
| fixed | |||
| placeholder | |||
| @click-left="$router.back(-1)" | |||
| @click-right="goAdd()" | |||
| @click-right="goAddLite()" | |||
| > | |||
| <template #title> | |||
| <p style="font-weight: bold;">宅基地申请</p> | |||
| @@ -15,14 +15,15 @@ | |||
| </template> | |||
| </van-nav-bar> | |||
| <van-list | |||
| <van-pull-refresh v-model="refreshing" @refresh="refresh"> | |||
| <van-list | |||
| v-model="loading" | |||
| :finished="finished" | |||
| finished-text="没有更多了" | |||
| @load="getList" | |||
| > | |||
| <van-swipe-cell v-for="(item,index) in applicationList" :key="index"> | |||
| <van-cell :title="item.ywh" :value="item.houseApplyStatus" center :to="{name:'applicationForm', query: {id:item.id,type:'modify'}}"> | |||
| <van-cell :title="item.ywh" :value="item.houseApplyStatusName" center @click="viewItem(item)"> | |||
| <template #icon> | |||
| <van-icon name="../../../static/images/onlineHome/icon_zjd1.png" size="30" color="#539FFD" style="margin-right: 10px;" /> | |||
| </template> | |||
| @@ -33,20 +34,25 @@ | |||
| <template #right> | |||
| <van-row> | |||
| <van-col> | |||
| <van-button square text="修改" type="info" v-if="item.houseApplyStatus=='申请草稿'" :to="{name:'applicationForm', query: {id:item.id}}" class="delete-button" /> | |||
| <van-button square text="提交" type="primary" v-if="item.houseApplyStatusName=='申请草稿'" @click="submitApplyProposer(item)" class="delete-button" /> | |||
| </van-col> | |||
| <van-col> | |||
| <van-button square text="删除" type="danger" v-if="item.houseApplyStatus=='申请草稿'" @click="deleteList(item.id,index)" class="delete-button" /> | |||
| <van-button square text="修改" type="info" v-if="item.houseApplyStatusName=='申请草稿'" :to="{name:'proposerLite', query: {id:item.id, type: 'modify'}}" class="delete-button" /> | |||
| </van-col> | |||
| <van-col> | |||
| <van-button square text="删除" type="danger" v-if="item.houseApplyStatusName=='申请草稿'" @click="deleteList(item.id,index)" class="delete-button" /> | |||
| </van-col> | |||
| </van-row> | |||
| </template> | |||
| </van-swipe-cell> | |||
| </van-list> | |||
| </van-pull-refresh> | |||
| </div> | |||
| </template> | |||
| <script> | |||
| import { getList , removeList } from "@/api/onlineHome/homestead/application"; | |||
| import { customSubmit, customSubmitWLHT} from "@/api/onlineHome/homestead/application"; | |||
| export default { | |||
| name: "applicationList", | |||
| data() { | |||
| @@ -55,6 +61,7 @@ export default { | |||
| houseApplyStatus:[], | |||
| loading: false, | |||
| finished: false, | |||
| refreshing: false, | |||
| queryParams:{ | |||
| pageNum:1, | |||
| pageSize:10, | |||
| @@ -73,13 +80,26 @@ export default { | |||
| goAdd(){ | |||
| window.location = 'applicationAdd'; | |||
| }, | |||
| goAddLite(){ | |||
| //window.location = 'applicationAdd'; | |||
| window.location = 'proposerLite?type=add'; | |||
| }, | |||
| viewItem(row){ | |||
| let type = /*row.houseApplyStatus == '1' // 申请草稿 | |||
| ||*/ row.houseApplyStatus == '10' // 申请通过 | |||
| || row.houseApplyStatus == '12' // 开工草稿 | |||
| || row.houseApplyStatus == '18' // 开工通过 | |||
| || row.houseApplyStatus == '20' // 验收草稿 | |||
| ? 'modify' : 'view'; | |||
| window.location = 'proposerLite?type=' + type + '&id=' + row.id; | |||
| }, | |||
| getList(){ | |||
| setTimeout(() => { | |||
| getList(this.queryParams).then(response => { | |||
| console.log(response) | |||
| for (var i = 0; i < response.rows.length; i++) { | |||
| var houseApplyStatus = this.selectDictLabel(this.houseApplyStatus, response.rows[i].houseApplyStatus); | |||
| response.rows[i].houseApplyStatus = houseApplyStatus; | |||
| var houseApplyStatusName = this.selectDictLabel(this.houseApplyStatus, response.rows[i].houseApplyStatus); | |||
| response.rows[i].houseApplyStatusName = houseApplyStatusName; | |||
| this.applicationList.push(response.rows[i]); | |||
| } | |||
| console.log(this.applicationList.length >= response.total) | |||
| @@ -90,6 +110,9 @@ export default { | |||
| this.loading = false; | |||
| this.queryParams.pageNum += 1 ; | |||
| } | |||
| }).finally(() => { | |||
| this.loading = false; | |||
| this.refreshing = false; | |||
| }); | |||
| }, 1000); | |||
| }, | |||
| @@ -109,7 +132,26 @@ export default { | |||
| .catch(() => { | |||
| // on cancel | |||
| }); | |||
| } | |||
| }, | |||
| refresh() { | |||
| this.refreshing = true; | |||
| this.finished = false; | |||
| this.applicationList = [] | |||
| }, | |||
| submitApplyProposer(item) { | |||
| this.$dialog.confirm({ | |||
| message: '您确认提交申请草稿?', | |||
| }).then(() => { | |||
| let func = 1 || item.processKey.endsWith('WLHT') ? customSubmitWLHT : customSubmit; //TODO: 总是走简化流程 | |||
| func(item.id).then((resp) => { | |||
| this.$toast.success("提交成功"); | |||
| this.refresh(); | |||
| this.getList(); | |||
| }).catch((e) => { | |||
| this.$toast.fail("提交失败!"); | |||
| }); | |||
| }).catch(() => {}); | |||
| }, | |||
| }, | |||
| } | |||
| </script> | |||
| @@ -0,0 +1,254 @@ | |||
| <template> | |||
| <div> | |||
| <van-nav-bar | |||
| left-arrow | |||
| title="公示查询" | |||
| fixed | |||
| placeholder | |||
| @click-left="$router.back()" | |||
| > | |||
| <template #right> | |||
| <van-icon name="@/../static/images/icon/icon_flow.png" size="20" @click="openFilter"/> | |||
| </template> | |||
| </van-nav-bar> | |||
| <van-search | |||
| v-model="queryParams.memberName" | |||
| placeholder="请输入姓名" | |||
| shape="round" | |||
| @search="getList(0)" | |||
| /> | |||
| <van-pull-refresh v-model="refreshing" @refresh="getList()"> | |||
| <van-list | |||
| v-model="loading" | |||
| :finished="finished" | |||
| :immediate-check="false" | |||
| finished-text="没有更多了" | |||
| @load="getList('+1')" | |||
| > | |||
| <van-swipe-cell v-for="(item,index) in list" :key="index" class="delegate"> | |||
| <van-cell :title="item.projectName" center @click="viewItem(item)"> | |||
| <template #icon> | |||
| <van-icon :name="{ | |||
| '1': '@/../static/images/onlineHome/icon_zjd8.png', | |||
| '2': '@/../static/images/onlineHome/icon_zjd8.png', | |||
| '3': '@/../static/images/onlineHome/icon_zjd8.png', | |||
| '4': '@/../static/images/onlineHome/icon_zjd8.png', | |||
| }[item.announceStatus]" size="30" color="#539FFD" style="margin-right: 10px;" /> | |||
| </template> | |||
| <template #label> | |||
| <p style="font-weight: bold;">{{formatDict(options.announce_type, item.announceType)}} {{item.startDate}} - {{item.endDate}}</p> | |||
| </template> | |||
| <template #title> | |||
| <p style="font-weight: bold;">{{item.projectName}}</p> | |||
| </template> | |||
| <template #right-icon> | |||
| <p :style="{'font-weight': 'bold', | |||
| color: { | |||
| '1': '#000000', | |||
| '2': '#0066FF', | |||
| '3': 'orange', | |||
| '4': '#33cc33', | |||
| }[item.announceStatus], | |||
| }">{{formatDict(options.announce_status, item.announceStatus)}}</p> | |||
| </template> | |||
| </van-cell> | |||
| <template #right> | |||
| <van-row style="height: 100%;"> | |||
| <van-col style="height: 100%;"> | |||
| <van-button square text="二维码" type="info" style="height: 100%;" @click="openQrCodePreview(item.id)"/> | |||
| </van-col> | |||
| </van-row> | |||
| </template> | |||
| </van-swipe-cell> | |||
| </van-list> | |||
| </van-pull-refresh> | |||
| <onlineHomeIndex :current="1"></onlineHomeIndex> | |||
| <van-popup | |||
| v-model="filterVisible" | |||
| closeable | |||
| position="top" | |||
| :close-on-click-overlay="true" | |||
| :lazy-render="false" | |||
| > | |||
| <van-form> | |||
| <van-cell title="筛选查询"></van-cell> | |||
| <field-select | |||
| v-model="queryParams.announceStatus" | |||
| label="公示状态" | |||
| value-key="dictLabel" | |||
| data-key="dictValue" | |||
| placeholder="公示状态筛选" | |||
| :columns="options.announce_status" | |||
| /> | |||
| <field-select | |||
| v-model="queryParams.announceType" | |||
| label="公示类型" | |||
| value-key="dictLabel" | |||
| data-key="dictValue" | |||
| placeholder="公示类型筛选" | |||
| :columns="options.announce_type" | |||
| /> | |||
| <field-date-picker | |||
| v-model="queryParams.startDate" | |||
| label="起始日期" | |||
| formatter="yyyy-MM-dd" | |||
| placeholder="起始日期" | |||
| /> | |||
| <field-date-picker | |||
| v-model="queryParams.endDate" | |||
| label="结束日期" | |||
| formatter="yyyy-MM-dd" | |||
| placeholder="结束日期" | |||
| /> | |||
| <div style="margin: 0.2rem; text-align: right;"> | |||
| <van-button type="info" native-type="submit" size="small" @click="resetQuery"> 重置 </van-button> | |||
| <van-button type="primary" native-type="submit" size="small" @click="getList(0)"> 查询 </van-button> | |||
| </div> | |||
| </van-form> | |||
| </van-popup> | |||
| </div> | |||
| </template> | |||
| <script> | |||
| import {listAnnounce, getProposer} from "@/api/onlineHome/homestead/houseAnnounce"; | |||
| import FieldSelect from "@/components/form/FieldSelect"; | |||
| import { formatDate } from "element-ui/src/utils/date-util.js" | |||
| import { ImagePreview } from 'vant'; | |||
| import onlineHomeIndex from "@/views/onlineHomeIndex"; | |||
| import FieldDatePicker from "@/components/form/FieldDatePicker"; | |||
| export default { | |||
| components: {FieldSelect, onlineHomeIndex, FieldDatePicker}, | |||
| name: "HouseAnnounce", | |||
| data() { | |||
| return { | |||
| list: [], | |||
| total: 0, | |||
| // ?pageNum=1&pageSize=10&orderByColumn=createTime&isAsc=desc&startDate=2022-04-13&endDate=2022-04-12&announceStatus=2 | |||
| queryParams: { | |||
| pageNum: 1, | |||
| pageSize: 10, | |||
| orderByColumn: 'createTime', | |||
| isAsc: 'desc', | |||
| startDate: '', | |||
| endDate: '', | |||
| announceStatus: null, | |||
| memberName: '', | |||
| announceType: null, | |||
| }, | |||
| refreshing: false, | |||
| loading: false, | |||
| finished: false, | |||
| options: { | |||
| announce_status: [], | |||
| announce_type: [], | |||
| }, | |||
| filterVisible: false, | |||
| } | |||
| }, | |||
| created() { | |||
| this.initOptions(); | |||
| this.getList(); | |||
| }, | |||
| methods: { | |||
| getList(target) { | |||
| let type = typeof (target); | |||
| console.log(type, target); | |||
| if (target === 0) { | |||
| this.refreshing = true; | |||
| this.finished = false; | |||
| this.total = 0; | |||
| this.queryParams.pageNum = 1; | |||
| this.list = []; | |||
| this.filterVisible = false; | |||
| } | |||
| else if (type === 'number') | |||
| this.queryParams.pageNum = target; | |||
| else if (type === 'string') { | |||
| this.queryParams.pageNum = eval(this.queryParams.pageNum + target) | |||
| } | |||
| else | |||
| { | |||
| this.refreshing = true; | |||
| this.finished = false; | |||
| this.resetQuery(); | |||
| this.total = 0; | |||
| this.queryParams.pageNum = 1; | |||
| this.list = [] | |||
| } | |||
| listAnnounce(this.queryParams).then((response) => { | |||
| console.log(response) | |||
| if (response.rows.length === 0) { | |||
| this.finished = true; | |||
| return; | |||
| } | |||
| response.rows.forEach((e) => { | |||
| this.list.push(e); | |||
| }); | |||
| this.total += response.rows.length; | |||
| if (this.total >= response.total) { | |||
| this.finished = true; | |||
| } | |||
| }).finally(() => { | |||
| this.loading = false; | |||
| this.refreshing = false; | |||
| }); | |||
| }, | |||
| viewItem(item) { | |||
| window.location = 'proposerLite?type=view&id=' + item.applyProposerId; | |||
| }, | |||
| initOptions() { | |||
| for(let k in this.options) | |||
| { | |||
| this.houseGetDicts(k).then((res) => { | |||
| this.options[k] = res.data; | |||
| }); | |||
| } | |||
| }, | |||
| formatDict(dict, value) { | |||
| return this.selectDictLabel(dict, value); | |||
| }, | |||
| openFilter() { | |||
| this.filterVisible = true; | |||
| }, | |||
| onDatePickerConfirm(data) { | |||
| if(data) | |||
| { | |||
| this.queryParams.startDate = formatDate(data[0], 'yyyy-MM-dd'); | |||
| this.queryParams.endDate = formatDate(data[1], 'yyyy-MM-dd'); | |||
| } | |||
| else { | |||
| this.queryParams.startDate = ''; | |||
| this.queryParams.endDate = ''; | |||
| } | |||
| }, | |||
| resetQuery() { | |||
| this.onDatePickerConfirm(); | |||
| this.queryParams.announceStatus = null; | |||
| this.queryParams.announceType = null; | |||
| }, | |||
| openQrCodePreview(id) { | |||
| getProposer(id).then((resp) => { | |||
| console.log(this.$store.getters.baseRoutingUrl + resp.data.qrCodeUrl); | |||
| ImagePreview([this.$store.getters.baseRoutingUrl + resp.data.qrCodeUrl]); | |||
| }).catch((e) => { | |||
| this.$toast.fail('获取二维码失败!'); | |||
| }); | |||
| }, | |||
| }, | |||
| } | |||
| </script> | |||
| <style scoped> | |||
| .delegate { | |||
| width: 96%; | |||
| margin: 3% 2% 3% 2%; | |||
| border-radius: 0.18rem; | |||
| overflow: hidden; | |||
| box-shadow: 0.1rem 0.1rem 0.15rem 0.02rem rgba(0,0,0,0.16); | |||
| } | |||
| </style> | |||
| @@ -0,0 +1,195 @@ | |||
| <template> | |||
| <div> | |||
| <van-nav-bar | |||
| left-arrow | |||
| title="证书查看" | |||
| fixed | |||
| placeholder | |||
| @click-left="$router.back()" | |||
| > | |||
| <template #right> | |||
| <van-icon name="@/../static/images/icon/icon_flow.png" size="20" @click="openFilter"/> | |||
| </template> | |||
| </van-nav-bar> | |||
| <van-pull-refresh v-model="refreshing" @refresh="getList()"> | |||
| <van-list | |||
| v-model="loading" | |||
| :finished="finished" | |||
| :immediate-check="false" | |||
| finished-text="没有更多了" | |||
| @load="getList('+1')" | |||
| > | |||
| <van-swipe-cell v-for="(item,index) in list" :key="index" class="delegate"> | |||
| <van-cell :label="item.idcard" center> | |||
| <template #icon> | |||
| <van-icon name="@/../static/images/onlineHome/icon_zjd7.png" size="30" color="#539FFD" style="margin-right: 10px;" /> | |||
| </template> | |||
| <template #title> | |||
| <p style="font-weight: bold;">{{item.projectName}}</p> | |||
| </template> | |||
| <template #right-icon> | |||
| <van-button plain type="info" style="border: 0; font-weight: bold;" @click="openLicense(item)">查看证书</van-button> | |||
| </template> | |||
| </van-cell> | |||
| <template #right> | |||
| <van-row style="height: 100%;"> | |||
| <van-col style="height: 100%;"> | |||
| <van-button square text="查看申请" type="primary" style="height: 100%;" @click="viewItem(item)"/> | |||
| </van-col> | |||
| <van-col style="height: 100%;"> | |||
| <van-button square text="许可证修改" type="info" style="height: 100%;" @click="editLicensePermit(item)"/> | |||
| </van-col> | |||
| <van-col style="height: 100%;"> | |||
| <van-button square text="批准书修改" type="info" style="height: 100%;" @click="editLicenseRatification(item)"/> | |||
| </van-col> | |||
| </van-row> | |||
| </template> | |||
| </van-swipe-cell> | |||
| </van-list> | |||
| </van-pull-refresh> | |||
| <onlineHomeIndex :current="1"></onlineHomeIndex> | |||
| <van-popup | |||
| v-model="filterVisible" | |||
| closeable | |||
| position="top" | |||
| :close-on-click-overlay="true" | |||
| :lazy-render="false" | |||
| > | |||
| <van-form> | |||
| <van-cell title="筛选查询"></van-cell> | |||
| <van-field v-model="queryParams.memberName" label="申请户主" placeholder="申请户主" input-align="right"/> | |||
| <van-field v-model="queryParams.phone" label="联系电话" placeholder="联系电话" input-align="right"/> | |||
| <div style="margin: 0.2rem; text-align: right;"> | |||
| <van-button type="info" native-type="submit" size="small" @click="resetQuery"> 重置 </van-button> | |||
| <van-button type="primary" native-type="submit" size="small" @click="getList(0)"> 查询 </van-button> | |||
| </div> | |||
| </van-form> | |||
| </van-popup> | |||
| </div> | |||
| </template> | |||
| <script> | |||
| import {listProposer, getProposer} from "@/api/onlineHome/homestead/houseProposer"; | |||
| import FieldSelect from "@/components/form/FieldSelect"; | |||
| import { ImagePreview } from 'vant'; | |||
| import onlineHomeIndex from "@/views/onlineHomeIndex"; | |||
| export default { | |||
| components: {FieldSelect, onlineHomeIndex}, | |||
| name: "HouseLicense", | |||
| data() { | |||
| return { | |||
| list: [], | |||
| total: 0, | |||
| // ?pageNum=1&pageSize=10&orderByColumn=createTime&isAsc=desc&printLicense=Y | |||
| queryParams: { | |||
| pageNum: 1, | |||
| pageSize: 10, | |||
| printLicense: 'Y', | |||
| orderByColumn: 'createTime', | |||
| isAsc: 'desc', | |||
| phone: '', | |||
| memberName: '', | |||
| }, | |||
| refreshing: false, | |||
| loading: false, | |||
| finished: false, | |||
| options: { | |||
| }, | |||
| filterVisible: false, | |||
| } | |||
| }, | |||
| created() { | |||
| this.initOptions(); | |||
| this.getList(); | |||
| }, | |||
| methods: { | |||
| getList(target) { | |||
| let type = typeof (target); | |||
| console.log(type, target); | |||
| if (target === 0) { | |||
| this.refreshing = true; | |||
| this.finished = false; | |||
| this.total = 0; | |||
| this.queryParams.pageNum = 1; | |||
| this.list = []; | |||
| this.filterVisible = false; | |||
| } | |||
| else if (type === 'number') | |||
| this.queryParams.pageNum = target; | |||
| else if (type === 'string') { | |||
| this.queryParams.pageNum = eval(this.queryParams.pageNum + target) | |||
| } | |||
| else | |||
| { | |||
| this.refreshing = true; | |||
| this.finished = false; | |||
| this.resetQuery(); | |||
| this.total = 0; | |||
| this.queryParams.pageNum = 1; | |||
| this.list = [] | |||
| } | |||
| listProposer(this.queryParams).then((response) => { | |||
| console.log(response) | |||
| if (response.rows.length === 0) { | |||
| this.finished = true; | |||
| return; | |||
| } | |||
| response.rows.forEach((e) => { | |||
| this.list.push(e); | |||
| }); | |||
| this.total += response.rows.length; | |||
| if (this.total >= response.total) { | |||
| this.finished = true; | |||
| } | |||
| }).finally(() => { | |||
| this.loading = false; | |||
| this.refreshing = false; | |||
| }); | |||
| }, | |||
| viewItem(item) { | |||
| window.location = 'proposerLite?type=view&id=' + item.id; | |||
| }, | |||
| initOptions() { | |||
| for(let k in this.options) | |||
| { | |||
| this.houseGetDicts(k).then((res) => { | |||
| this.options[k] = res.data; | |||
| }); | |||
| } | |||
| }, | |||
| formatDict(dict, value) { | |||
| return this.selectDictLabel(dict, value); | |||
| }, | |||
| openFilter() { | |||
| this.filterVisible = true; | |||
| }, | |||
| resetQuery() { | |||
| this.queryParams.phone = ''; | |||
| this.queryParams.memberName = ''; | |||
| }, | |||
| openLicense(item) { | |||
| location.href = '/houseLicenseDetail?id=' + item.id; | |||
| }, | |||
| editLicensePermit(item) { | |||
| window.location = 'licensePermitEdit?id=' + item.id; | |||
| }, | |||
| editLicenseRatification(item) { | |||
| window.location = 'licenseRatificationEdit?id=' + item.id; | |||
| }, | |||
| }, | |||
| } | |||
| </script> | |||
| <style scoped> | |||
| .delegate { | |||
| width: 96%; | |||
| margin: 3% 2% 3% 2%; | |||
| border-radius: 0.18rem; | |||
| overflow: hidden; | |||
| box-shadow: 0.1rem 0.1rem 0.15rem 0.02rem rgba(0,0,0,0.16); | |||
| } | |||
| </style> | |||
| @@ -0,0 +1,395 @@ | |||
| <template> | |||
| <div> | |||
| <van-nav-bar | |||
| left-arrow | |||
| title="证书查看" | |||
| fixed | |||
| placeholder | |||
| @click-left="$router.back()" | |||
| > | |||
| </van-nav-bar> | |||
| <van-tabs color="#1D6FE9" :lazy-render="false" v-model="activeName"> | |||
| <van-tab title="规划许可证" key="0"> | |||
| <div class="planningPermit-wrap wrap-root"> | |||
| <div class="planningPermit-first"> | |||
| <div class="permit-main section"> | |||
| <div class="details_first_main part"> | |||
| <div class="details_first_title title">中华人民共和国</div> | |||
| <div class="details_first_title title">乡村建设规划许可证</div> | |||
| <div class="details_first_page no-label">乡字第 <i class="no">{{this.licenseForm.licensePermit.licenseKey}}</i> 号</div> | |||
| <div class="details_first_cont content">根据《中华人民共和国土地管理法》《中华人民共和国城乡规划法》和国家有关规定,经审核,本建设工程符合国土空间规划和用途管制要求,颁发此证。</div> | |||
| <div class="licence_first_jg label" style="padding-top: 3.5rem;">填发机关: {{this.licenseForm.licensePermit.issuingAuthority}}</div> | |||
| <div class="licence_first_time label">日 期: {{this.licenseForm.licensePermit.issueDate}}</div> | |||
| </div> | |||
| </div> | |||
| <div class="details_page section"> | |||
| <div class="details_page_main part"> | |||
| <table> | |||
| <tr> | |||
| <td style="width: 2.6rem;">建设单位(个人)</td> <td >{{this.licenseForm.licensePermit.constructionUnit}}</td> | |||
| </tr> | |||
| <tr> | |||
| <td>建设项目名称</td> <td>{{this.licenseForm.licensePermit.constructionUnit}}</td> | |||
| </tr> | |||
| <tr> | |||
| <td>建设位置</td> <td>{{this.licenseForm.licensePermit.constructionLocation}}</td> | |||
| </tr> | |||
| <tr> | |||
| <td>建设规模</td> <td>{{ this.licenseForm.licensePermit.constructionScale }}</td> | |||
| </tr> | |||
| <!-- <tr> | |||
| <td>{{ this.licenseForm.licenseRatification.west }}</td><td>{{ this.licenseForm.licenseRatification.north }}</td> | |||
| </tr>--> | |||
| <tr> | |||
| <td>附图及附件名称</td> | |||
| <td> | |||
| <ul class="list"> | |||
| <li v-for="file in attachmentList" class="list__item-content"> | |||
| {{file.fileName}} | |||
| </li> | |||
| </ul> | |||
| </td> | |||
| </tr> | |||
| </table> | |||
| <div class="details_first_title title" style="text-align: left; padding-top: 0.2rem; padding-bottom: 0.2rem; font-size: 0.52rem; line-height: 0.8rem;">遵守事项</div> | |||
| <ul class="list" style="padding: 0.1rem 0.1rem; font-size: 0.35rem; line-height: 0.6rem;"> | |||
| <li>一、 本证是经自然资源主管部门依法审核,在乡、村庄规划区内有关建设工程符合国土空间规划和用途管制要求的法律凭证。</li> | |||
| <li>二、 依法应当取得本证,但未取得本证或违反本证规定的,均属违法行为。</li> | |||
| <li>三、 未经发证机关审核同意,本证的各项规定不得随意变更。</li> | |||
| <li>四、 自然资源主管部门依法有权查验本证,建设单位(个人)有责任提交查验。</li> | |||
| <li>五、 本证所需附图及附件由发证机关依法确定,与本证具有同等法律效力。</li> | |||
| </ul> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| <div class="planningPermit-two" style="display: block; overflow: hidden;"> | |||
| <div class="details_page"> | |||
| <table> | |||
| <tr> | |||
| <td style="width: 1rem; height: 12rem;">宅<br />基<br />地<br />坐<br />落<br />平<br />面<br />位<br />置<br />图</td> | |||
| <td> | |||
| <RawImageCarousel :images="locationPlanList" url-label="url" name-label="fileName" style="width: 100%; height: 100%;" v-if="locationPlanList.length > 0"></RawImageCarousel> | |||
| </td> | |||
| </tr> | |||
| <tr> | |||
| <td>备注</td> | |||
| <td>图中需载明宅基地的具体位置、长宽、四至,并标明与永久性参照物的具体距离。</td> | |||
| </tr> | |||
| </table> | |||
| <ul class="list" style="padding: 0.6rem 0.1rem 0.1rem; width: 92%; margin:0 auto;"> | |||
| <li>填写说明:</li> | |||
| <li>1.编号规则:编号数字共16位,前6位数字按照《中华人民共和国行政区划代码》(详见民政部网站www.mca.gov.cn)执行;7-9位数字表示街道(地区)办事处、镇、乡(苏木),按GB/T10114的规定执行;10-13位数字代表证书发放年份;14-16位数字代表证书发放序号。</li> | |||
| <li>2.批准书有效期:指按照本省(区、市)宅基地管理有关规定,宅基地申请批准后农户必须开工建设的时间。</li> | |||
| </ul> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| </van-tab> | |||
| <van-tab title="宅基地批准书" key="1"> | |||
| <div class="licenceAround-wrap wrap-root"> | |||
| <div class="licence_first_page section" style="padding-top: 0.5rem;"> | |||
| <div class="details_first_title title">农村宅基地批准书</div> | |||
| <div class="number-title no-sub-label" > | |||
| 农宅字 <i class="no">{{this.licenseForm.licenseRatification.approvalNumber}}</i>号 | |||
| </div> | |||
| <div class="licence_first_main" style="border:1px solid #000000; padding: 2rem 0.4rem;"> | |||
| <div class="content"> | |||
| 根据《中华人民共和国土地管理法》规定,本项农村村民宅基地用地 业经有权机关批准,特发此书。 | |||
| 请严格按照本批准书要求使用宅基地。 | |||
| </div> | |||
| <div class="ft_jg label" style="padding-top: 2.5rem;">填发机关: {{this.licenseForm.licenseRatification.issuingAuthority}}</div> | |||
| <div class="ft_time label">填发时间: {{this.licenseForm.licenseRatification.issueDate}}</div> | |||
| </div> | |||
| </div> | |||
| <div class="licence_two_page section" style="margin-top: 0.5rem;"> | |||
| <div class="details_first_title title">农村宅基地批准书(存根)</div> | |||
| <div class="number-title no-sub-label"> | |||
| 农宅字 <i class="no">{{this.licenseForm.licenseRatification.approvalNumber}}</i> 号 | |||
| </div> | |||
| <div class="licence_two_main"> | |||
| <table> | |||
| <tr> | |||
| <td style="width: 2.6rem;">申请人姓名</td> <td colspan="8">{{this.licenseForm.licenseRatification.memberName}}</td> | |||
| </tr> | |||
| <tr> | |||
| <td>批准用地面积</td> <td colspan="8">{{this.licenseForm.licenseRatification.landArea}} 平方米</td> | |||
| </tr> | |||
| <tr> | |||
| <td>其中:房基占地</td> <td colspan="8">{{this.licenseForm.licenseRatification.fjzdmj}} 平方米</td> | |||
| </tr> | |||
| <tr> | |||
| <td>土地所有权人</td> <td colspan="8">{{this.licenseForm.licenseRatification.landOwner}}</td> | |||
| </tr> | |||
| <tr> | |||
| <td>土地用途</td> <td colspan="8">{{ formatDict(options.land_use, licenseForm.licenseRatification.landUse) }}</td> | |||
| </tr> | |||
| <tr> | |||
| <td>土地坐落<br/>(详见附图)</td> <td colspan="8">{{ this.licenseForm.licenseRatification.location }}</td> | |||
| </tr> | |||
| <tr> | |||
| <td rowspan="2">四 至</td> | |||
| <td style="width: 1.2rem;">东</td><td colspan="3">{{ this.licenseForm.licenseRatification.east }}</td> | |||
| <td style="width: 1.2rem;">南</td><td colspan="3">{{ this.licenseForm.licenseRatification.south }}</td> | |||
| </tr> | |||
| <tr> | |||
| <td style="width: 1.2rem;">西</td><td colspan="3">{{ this.licenseForm.licenseRatification.west }}</td> | |||
| <td style="width: 1.2rem;">北</td><td colspan="3">{{ this.licenseForm.licenseRatification.north }}</td> | |||
| </tr> | |||
| <tr> | |||
| <td>批准书有效期</td><td colspan="8">{{this.licenseForm.licenseRatification.startTime +'至'+this.licenseForm.licenseRatification.endTime }}</td> | |||
| </tr> | |||
| <tr style="height: 2rem;" > | |||
| <td colspan="9" style="text-align: left;">备注:</td> | |||
| </tr> | |||
| </table> | |||
| </div> | |||
| </div> | |||
| <div class="licence_three_page section" style="margin-top: 0.5rem;"> | |||
| <div class="number-title no-sub-label"> | |||
| 农宅字 <i class="no">{{this.licenseForm.licenseRatification.approvalNumber}}</i> 号 | |||
| </div> | |||
| <table> | |||
| <tr> | |||
| <td style="width: 2.6rem;">申请人姓名</td> <td colspan="8">{{this.licenseForm.licenseRatification.memberName}}</td> | |||
| </tr> | |||
| <tr> | |||
| <td>批准用地面积</td> <td colspan="8">{{this.licenseForm.licenseRatification.landArea}} 平方米</td> | |||
| </tr> | |||
| <tr> | |||
| <td>房基占地面积</td> <td colspan="8">{{this.licenseForm.licenseRatification.fjzdmj}} 平方米</td> | |||
| </tr> | |||
| <tr> | |||
| <td>土地所有权人</td> <td colspan="8">{{this.licenseForm.licenseRatification.landOwner}}</td> | |||
| </tr> | |||
| <tr> | |||
| <td>土地用途</td> <td colspan="8">{{ formatDict(options.land_use, licenseForm.licenseRatification.landUse) }} </td> | |||
| </tr> | |||
| <tr> | |||
| <td>土地坐落<br/>(详见附图)</td> <td colspan="8">{{ this.licenseForm.licenseRatification.location }}</td> | |||
| </tr> | |||
| <tr> | |||
| <td rowspan="2">四 至</td> | |||
| <td style="width: 1.2rem;">东</td><td colspan="3">{{ this.licenseForm.licenseRatification.east }}</td> | |||
| <td style="width: 1.2rem;">南</td><td colspan="3">{{ this.licenseForm.licenseRatification.south }}</td> | |||
| </tr> | |||
| <tr> | |||
| <td style="width: 1.2rem;">西</td><td colspan="3">{{ this.licenseForm.licenseRatification.west }}</td> | |||
| <td style="width: 1.2rem;">北</td><td colspan="3">{{ this.licenseForm.licenseRatification.north }}</td> | |||
| </tr> | |||
| <tr> | |||
| <td>批准书有效期</td><td colspan="8">{{this.licenseForm.licenseRatification.startTime +'至'+this.licenseForm.licenseRatification.endTime }}</td> | |||
| </tr> | |||
| <tr style="height: 2rem;"> | |||
| <td colspan="9" style="text-align: left;">备注:</td> | |||
| </tr> | |||
| </table> | |||
| </div> | |||
| </div> | |||
| </van-tab> | |||
| </van-tabs> | |||
| <onlineHomeIndex :current="1"></onlineHomeIndex> | |||
| </div> | |||
| </template> | |||
| <script> | |||
| import {selectAllLicense} from "@/api/onlineHome/homestead/houseProposer"; | |||
| import onlineHomeIndex from "@/views/onlineHomeIndex"; | |||
| import { attachmentFind } from "@/api/onlineHome/homestead/application"; | |||
| import RawImageCarousel from "@/components/house/RawImageCarousel"; | |||
| export default { | |||
| components: {onlineHomeIndex, RawImageCarousel}, | |||
| name: "HouseLicenseDetail", | |||
| data() { | |||
| return { | |||
| proposerId: null, | |||
| licenseForm:{ | |||
| "licensePermit": { | |||
| "searchValue": null, | |||
| "createBy": "", | |||
| "createTime": "", | |||
| "updateBy": "", | |||
| "updateTime": null, | |||
| "proposerId": null, | |||
| "applyProposerId": null, | |||
| "year": "", | |||
| "licenseKey": "", | |||
| "issuingAuthority": "", | |||
| "issueDate": "", | |||
| "constructionUnit": "", | |||
| "constructionItem": "", | |||
| "constructionLocation": "", | |||
| "constructionScale": "", | |||
| "locationPlan": null | |||
| }, | |||
| "licenseRatification": { | |||
| "searchValue": null, | |||
| "createBy": "", | |||
| "createTime": '', | |||
| "updateBy": "", | |||
| "updateTime": null, | |||
| "proposerId": '', | |||
| "applyProposerId": '', | |||
| "year": "2021", | |||
| "approvalNumber": "", | |||
| "issuingAuthority": "", | |||
| "issueDate": "", | |||
| "memberName": "", | |||
| "landArea": 0, | |||
| "landOwner": "", | |||
| "landUse": "", | |||
| "location": "", | |||
| "east": "", | |||
| "west": "", | |||
| "south": "", | |||
| "north": "", | |||
| "startTime": "", | |||
| "endTime": "", | |||
| "remark": '', | |||
| 'fjzdmj': 0, // 房基占地面积 | |||
| }, | |||
| }, | |||
| activeName: 0, | |||
| options: { | |||
| land_use: [], | |||
| }, | |||
| attachmentList: [], | |||
| locationPlanList: [], | |||
| } | |||
| }, | |||
| created() { | |||
| this.proposerId = this.$route.query.id; | |||
| this.initOptions(); | |||
| this.getDetail(); | |||
| }, | |||
| methods: { | |||
| getDetail() { | |||
| selectAllLicense(this.proposerId).then((response) => { | |||
| this.licenseForm = response.data; | |||
| if(this.licenseForm.licensePermit.locationPlan) | |||
| { | |||
| const Host = this.$store.getters.baseRoutingUrl; | |||
| let list = JSON.parse(this.licenseForm.licensePermit.locationPlan); | |||
| this.locationPlanList = list.map((x) => { | |||
| x.url = Host + x.fileUrl; | |||
| return x; | |||
| }) | |||
| } | |||
| this.getAttachments(); | |||
| }).catch((e) => { | |||
| this.$toast.fail('获取证书失败!'); | |||
| }); | |||
| }, | |||
| initOptions() { | |||
| for(let k in this.options) | |||
| { | |||
| this.houseGetDicts(k).then((res) => { | |||
| this.options[k] = res.data; | |||
| }); | |||
| } | |||
| }, | |||
| formatDict(dict, value) { | |||
| return this.selectDictLabel(dict, value); | |||
| }, | |||
| getAttachments() { | |||
| this.attachmentList = []; | |||
| let cond = { | |||
| tableId: this.proposerId, | |||
| tableName: 't_house_apply_proposer', | |||
| fileType: 13, | |||
| }; | |||
| attachmentFind(cond).then(resp => { | |||
| this.attachmentList = resp.data; | |||
| }); | |||
| }, | |||
| }, | |||
| } | |||
| </script> | |||
| <style scoped lang="scss"> | |||
| table { | |||
| line-height: 2rem; | |||
| text-align: center; | |||
| border-collapse: collapse; | |||
| width: 96%; | |||
| margin: 0 auto; | |||
| } | |||
| td { | |||
| line-height: 1rem; | |||
| border: 1px solid #000000; | |||
| border-collapse: collapse; | |||
| font-size: 0.35rem; | |||
| } | |||
| .planningPermit-two{ | |||
| //margin-top: 30px; | |||
| } | |||
| .wrap-root { | |||
| color: #606266; | |||
| .title { | |||
| font-size: 0.55rem; | |||
| font-weight: bold; | |||
| text-align: center; | |||
| line-height: 0.8rem; | |||
| } | |||
| .no-label { | |||
| text-align: right; | |||
| font-size: 0.45rem; | |||
| line-height: 0.6rem; | |||
| padding: 0.5rem 0 0.5rem; | |||
| } | |||
| .no-sub-label { | |||
| text-align: right; | |||
| font-size: 0.4rem; | |||
| line-height: 0.5rem; | |||
| padding: 0.2rem 0.1rem 0.2rem; | |||
| } | |||
| .no { | |||
| text-decoration: underline; | |||
| font-style:oblique; | |||
| } | |||
| .content { | |||
| font-size: 0.45rem; | |||
| line-height: 0.8rem; | |||
| } | |||
| .label { | |||
| font-size: 0.45rem; | |||
| text-align: right; | |||
| line-height: 0.8rem; | |||
| padding-right: 0.3rem; | |||
| } | |||
| .section { | |||
| width: 96%; | |||
| margin: auto; | |||
| .part { | |||
| width: 100%; | |||
| padding: 1.5rem 0.35rem; | |||
| margin: 0.5rem 0rem; | |||
| border:1px solid #000000; | |||
| } | |||
| } | |||
| .list { | |||
| list-style: none; | |||
| text-align: start; | |||
| font-size: 0.35rem; | |||
| line-height: 0.6rem; | |||
| .list__item-content { | |||
| font-size: 0.4rem; | |||
| line-height: 0.6rem; | |||
| word-break: break-all; | |||
| padding: 0.1rem 0.2rem; | |||
| text-align: left; | |||
| } | |||
| } | |||
| } | |||
| </style> | |||
| @@ -0,0 +1,141 @@ | |||
| <template> | |||
| <div> | |||
| <van-nav-bar | |||
| title="修改许可证" | |||
| left-arrow | |||
| fixed | |||
| placeholder | |||
| @click-left="$router.back()" | |||
| z-index="998" | |||
| > | |||
| </van-nav-bar> | |||
| <div> | |||
| <van-form ref="form"> | |||
| <van-field v-model="licenseForm.licensePermit.year" required label="年度" placeholder="年度" input-align="right" type="digit" label-width="auto" :rules="[{ pattern: /^\d+$/ }]"/> | |||
| <van-field v-model="licenseForm.licensePermit.licenseKey" required label="许可证号" placeholder="许可证号" input-align="right" label-width="auto" :rules="[{required: true}]"/> | |||
| <van-field v-model="licenseForm.licensePermit.issuingAuthority" required label="发证机关" placeholder="发证机关" input-align="right" label-width="auto" :rules="[{required: true}]"/> | |||
| <field-date-picker | |||
| v-model="licenseForm.licensePermit.issueDate" | |||
| label="发证日期" | |||
| placeholder="发证日期" | |||
| :rules="[{ required: true }]" | |||
| formatter="yyyy-MM-dd" | |||
| required | |||
| /> | |||
| <van-field v-model="licenseForm.licensePermit.constructionUnit" required label="建设单位" placeholder="建设单位" input-align="right" label-width="auto" :rules="[{required: true}]"/> | |||
| <van-field v-model="licenseForm.licensePermit.constructionItem" required label="建设项目名称" placeholder="建设项目名称" input-align="right" label-width="auto" :rules="[{required: true}]"/> | |||
| <van-field v-model="licenseForm.licensePermit.constructionLocation" required label="建设位置" placeholder="建设位置" input-align="right" label-width="auto" :rules="[{required: true}]"/> | |||
| <van-field v-model="licenseForm.licensePermit.constructionScale" required label="建设规模" placeholder="建设规模" input-align="left" :rules="[{required: true}]" | |||
| rows="2" | |||
| :autosize="true" | |||
| type="textarea"/> | |||
| </van-form> | |||
| </div> | |||
| <van-goods-action style="z-index: 999;"> | |||
| <van-goods-action-button type="info" text="关闭" @click="close()"/> | |||
| <van-goods-action-button type="primary" text="保存" @click="submit()"/> | |||
| </van-goods-action> | |||
| </div> | |||
| </template> | |||
| <script> | |||
| import {updateRatification, updatePermit} from "@/api/onlineHome/homestead/license"; | |||
| import {selectAllLicense} from "@/api/onlineHome/homestead/houseProposer"; | |||
| import FieldDatePicker from "@/components/form/FieldDatePicker"; | |||
| import {Notify} from "vant"; | |||
| export default { | |||
| name: "licensePermitEdit", | |||
| components: {FieldDatePicker}, | |||
| props: ['id'], | |||
| data() { | |||
| return { | |||
| proposerId: null, | |||
| licenseForm:{ | |||
| "licensePermit": { | |||
| "searchValue": null, | |||
| "createBy": "", | |||
| "createTime": "", | |||
| "updateBy": "", | |||
| "updateTime": null, | |||
| "proposerId": null, | |||
| "applyProposerId": null, | |||
| "year": null, | |||
| "licenseKey": null, | |||
| "issuingAuthority": null, | |||
| "issueDate": null, | |||
| "constructionUnit": null, | |||
| "constructionItem": null, | |||
| "constructionLocation": null, | |||
| "constructionScale": null, | |||
| "locationPlan": null | |||
| }, | |||
| "licenseRatification": { | |||
| "searchValue": null, | |||
| "createBy": "", | |||
| "createTime": null, | |||
| "updateBy": "", | |||
| "updateTime": null, | |||
| "proposerId": null, | |||
| "applyProposerId": null, | |||
| "year": null, | |||
| "approvalNumber": null, | |||
| "issuingAuthority": null, | |||
| "issueDate": null, | |||
| "memberName": null, | |||
| "landArea": 0, | |||
| "landOwner": null, | |||
| "landUse": null, | |||
| "location": null, | |||
| "east": null, | |||
| "west": null, | |||
| "south": null, | |||
| "north": null, | |||
| "startTime": null, | |||
| "endTime": null, | |||
| "remark": null, | |||
| 'fjzdmj': 0, // 房基占地面积 | |||
| }, | |||
| }, | |||
| options: { | |||
| }, | |||
| }; | |||
| }, | |||
| created() { | |||
| this.proposerId = this.$route.query.id; | |||
| this.getDetail(); | |||
| }, | |||
| methods: { | |||
| getDetail() { | |||
| selectAllLicense(this.proposerId).then((response) => { | |||
| this.licenseForm = response.data; | |||
| }).catch((e) => { | |||
| this.$toast.fail('获取证书失败!'); | |||
| }); | |||
| }, | |||
| close() { | |||
| this.$router.back(); | |||
| }, | |||
| submit() { | |||
| this.$refs.form.validate().then(() => { | |||
| updatePermit(this.licenseForm.licensePermit).then(response => { | |||
| this.notify('保存成功', 'success'); | |||
| this.$router.back(); | |||
| }).catch((e) => { | |||
| this.notify('保存失败!', 'danger'); | |||
| }); | |||
| }); | |||
| }, | |||
| notify(message, type) { | |||
| Notify.clear(); | |||
| Notify({ type: type || 'primary', message: message }); | |||
| }, | |||
| }, | |||
| } | |||
| </script> | |||
| <style scoped> | |||
| </style> | |||
| @@ -0,0 +1,189 @@ | |||
| <template> | |||
| <div> | |||
| <van-nav-bar | |||
| title="修改批准书" | |||
| left-arrow | |||
| fixed | |||
| placeholder | |||
| @click-left="$router.back()" | |||
| z-index="998" | |||
| > | |||
| </van-nav-bar> | |||
| <div style="padding-bottom: 1.33rem;"> | |||
| <van-form ref="form"> | |||
| <van-divider>基本信息</van-divider> | |||
| <van-field v-model="licenseForm.licenseRatification.year" required label="年度" placeholder="年度" input-align="right" type="digit" label-width="auto" :rules="[{ pattern: /^\d+$/ }]"/> | |||
| <van-field v-model="licenseForm.licenseRatification.approvalNumber" required label="批准书号" placeholder="批准书号" input-align="right" label-width="auto" :rules="[{required: true}]"/> | |||
| <van-field v-model="licenseForm.licenseRatification.issuingAuthority" required label="填发机关" placeholder="填发机关" input-align="right" label-width="auto" :rules="[{required: true}]"/> | |||
| <field-date-picker | |||
| v-model="licenseForm.licenseRatification.issueDate" | |||
| label="发证日期" | |||
| placeholder="发证日期" | |||
| :rules="[{ required: true }]" | |||
| formatter="yyyy-MM-dd" | |||
| required | |||
| /> | |||
| <van-field v-model="licenseForm.licenseRatification.memberName" required label="申请人姓名" placeholder="申请人姓名" input-align="right" label-width="auto" :rules="[{required: true}]"/> | |||
| <van-field v-model="licenseForm.licenseRatification.landArea" required label="批准用地面积" placeholder="批准用地面积" input-align="right" label-width="auto" :rules="[{required: true}]" type="number"><template #right-icon>㎡</template></van-field> | |||
| <van-field v-model="licenseForm.licenseRatification.landOwner" required label="土地所有权人" placeholder="土地所有权人" input-align="right" label-width="auto" :rules="[{required: true}]"/> | |||
| <field-select | |||
| v-model="licenseForm.licenseRatification.landUse" | |||
| label="土地用途" | |||
| value-key="dictLabel" | |||
| data-key="dictValue" | |||
| placeholder="选择土地用途" | |||
| :rules="[{ required: true }]" | |||
| required | |||
| remote-url="/system/dict/data/type/land_use" | |||
| :on-remote-response="'data'" | |||
| /> | |||
| <van-divider>房屋位置</van-divider> | |||
| <van-field v-model="licenseForm.licenseRatification.location" required label="位置" placeholder="位置" input-align="right" label-width="auto" :rules="[{required: true}]"/> | |||
| <van-field v-model="licenseForm.licenseRatification.east" required label="东至" placeholder="东至" input-align="right" label-width="auto" :rules="[{required: true}]"/> | |||
| <van-field v-model="licenseForm.licenseRatification.west" required label="西至" placeholder="西至" input-align="right" label-width="auto" :rules="[{required: true}]"/> | |||
| <van-field v-model="licenseForm.licenseRatification.south" required label="南至" placeholder="南至" input-align="right" label-width="auto" :rules="[{required: true}]"/> | |||
| <van-field v-model="licenseForm.licenseRatification.north" required label="北至" placeholder="北至" input-align="right" label-width="auto" :rules="[{required: true}]"/> | |||
| <van-divider>其他信息</van-divider> | |||
| <field-date-picker | |||
| v-model="licenseForm.licenseRatification.startTime" | |||
| label="开始时间" | |||
| placeholder="开始时间" | |||
| :rules="[{ required: true }]" | |||
| formatter="yyyy-MM-dd" | |||
| required | |||
| /> | |||
| <field-date-picker | |||
| v-model="licenseForm.licenseRatification.endTime" | |||
| label="结束时间" | |||
| placeholder="结束时间" | |||
| :rules="[{ required: true }]" | |||
| formatter="yyyy-MM-dd" | |||
| required | |||
| /> | |||
| <van-field v-model="licenseForm.licenseRatification.remark" required label="备注" placeholder="备注" input-align="left" :rules="[{required: true}]" | |||
| rows="2" | |||
| :autosize="true" | |||
| type="textarea"/> | |||
| </van-form> | |||
| </div> | |||
| <van-goods-action style="z-index: 999;"> | |||
| <van-goods-action-button type="info" text="关闭" @click="close()"/> | |||
| <van-goods-action-button type="primary" text="保存" @click="submit()"/> | |||
| </van-goods-action> | |||
| </div> | |||
| </template> | |||
| <script> | |||
| import {updateRatification, updatePermit} from "@/api/onlineHome/homestead/license"; | |||
| import {selectAllLicense} from "@/api/onlineHome/homestead/houseProposer"; | |||
| import FieldDatePicker from "@/components/form/FieldDatePicker"; | |||
| import FieldSelect from "@/components/form/FieldSelect"; | |||
| import {Notify} from "vant"; | |||
| export default { | |||
| name: "licenseRatificationEdit", | |||
| components: {FieldDatePicker, FieldSelect}, | |||
| props: ['id'], | |||
| data() { | |||
| return { | |||
| proposerId: null, | |||
| licenseForm:{ | |||
| "licensePermit": { | |||
| "searchValue": null, | |||
| "createBy": "", | |||
| "createTime": "", | |||
| "updateBy": "", | |||
| "updateTime": null, | |||
| "proposerId": null, | |||
| "applyProposerId": null, | |||
| "year": null, | |||
| "licenseKey": null, | |||
| "issuingAuthority": null, | |||
| "issueDate": null, | |||
| "constructionUnit": null, | |||
| "constructionItem": null, | |||
| "constructionLocation": null, | |||
| "constructionScale": null, | |||
| "locationPlan": null | |||
| }, | |||
| "licenseRatification": { | |||
| "searchValue": null, | |||
| "createBy": "", | |||
| "createTime": null, | |||
| "updateBy": "", | |||
| "updateTime": null, | |||
| "proposerId": null, | |||
| "applyProposerId": null, | |||
| "year": null, | |||
| "approvalNumber": null, | |||
| "issuingAuthority": null, | |||
| "issueDate": null, | |||
| "memberName": null, | |||
| "landArea": 0, | |||
| "landOwner": null, | |||
| "landUse": null, | |||
| "location": null, | |||
| "east": null, | |||
| "west": null, | |||
| "south": null, | |||
| "north": null, | |||
| "startTime": null, | |||
| "endTime": null, | |||
| "remark": null, | |||
| 'fjzdmj': 0, // 房基占地面积 | |||
| }, | |||
| }, | |||
| options: { | |||
| }, | |||
| }; | |||
| }, | |||
| created() { | |||
| this.proposerId = this.$route.query.id; | |||
| this.getDetail(); | |||
| }, | |||
| methods: { | |||
| getDetail() { | |||
| selectAllLicense(this.proposerId).then((response) => { | |||
| this.licenseForm = response.data; | |||
| }).catch((e) => { | |||
| this.$toast.fail('获取证书失败!'); | |||
| }); | |||
| }, | |||
| close() { | |||
| this.$router.back(); | |||
| }, | |||
| submit() { | |||
| this.$refs.form.validate().then(() => { | |||
| updateRatification(this.licenseForm.licenseRatification).then(response => { | |||
| this.notify('保存成功', 'success'); | |||
| this.$router.back(); | |||
| }).catch((e) => { | |||
| this.notify('保存失败!', 'danger'); | |||
| }); | |||
| }); | |||
| }, | |||
| notify(message, type) { | |||
| Notify.clear(); | |||
| Notify({ type: type || 'primary', message: message }); | |||
| }, | |||
| }, | |||
| } | |||
| </script> | |||
| <style scoped lang="scss"> | |||
| .van-divider { | |||
| margin: 0; | |||
| padding: 0.2rem; | |||
| color: #1989fa; | |||
| border-color: #1989fa; | |||
| background-color: #FFFFFF; | |||
| } | |||
| </style> | |||
| @@ -7,7 +7,7 @@ | |||
| /> | |||
| <van-row style="margin-top: 20px"> | |||
| <van-col span="16" :offset="2"> | |||
| <h3>张村村民联系方式</h3> | |||
| <h3>{{this.$store.state.user.deptName}}村民联系方式</h3> | |||
| </van-col> | |||
| </van-row> | |||
| <van-cell-group style="width: 96%;margin:2%;border-radius: 6px;overflow: hidden;padding-top: 10px;padding-bottom: 10px;box-shadow: 0px 3px 6px 0px rgba(0,0,0,0.16);"> | |||
| @@ -119,7 +119,7 @@ | |||
| this.nickName = response.user.nickName | |||
| this.deptName = response.user.dept.deptName | |||
| this.userId = response.user.userId | |||
| this.avatar = location.protocol+"//"+location.host+request.defaults.baseURL+response.user.avatar | |||
| this.avatar = this.$store.getters.baseRoutingUrl + response.user.avatar | |||
| }); | |||
| }, | |||
| methods: { | |||
| @@ -7,7 +7,7 @@ | |||
| <template #left> | |||
| <van-icon name="location" color="3A80FB" size="16"/> | |||
| <p style="color: #878787;margin-left: 5px" @click="selectDept">{{deptName}}</p> | |||
| <van-popup v-model="villageVisbile" round position="bottom"> | |||
| <van-popup v-model="villageVisbile" round position="bottom" style="bottom: 2rem;"> | |||
| <van-cascader | |||
| v-model="villageValue" | |||
| title="请选择所在村" | |||
| @@ -207,7 +207,7 @@ | |||
| <van-row class="indexCard"> | |||
| <van-cell style="border-radius: 6px;"> | |||
| <template #title> | |||
| <p style="font-weight: bold;font-size: 18px;display: inline-block">农村产权交易管理</p> | |||
| <p style="font-weight: bold;font-size: 18px;display: inline-block">宅基地信息平台</p> | |||
| </template> | |||
| </van-cell> | |||
| <van-grid :border="false"> | |||
| @@ -217,15 +217,15 @@ | |||
| </div> | |||
| <p style="margin-top: 5px;color: #666666;">宅基地申请</p> | |||
| </van-grid-item> | |||
| <van-grid-item text="证书打印" > | |||
| <van-grid-item text="证书查看" :to="{name:'houseLicense'}"> | |||
| <div slot="default"> | |||
| <div class="icon" style="background:#7790FE;"> | |||
| <img src="../../../static/images/onlineHome/icon12.png" style="width: 25px" alt /> | |||
| </div> | |||
| </div> | |||
| <p style="margin-top: 5px;color: #666666;">证书打印</p> | |||
| <p style="margin-top: 5px;color: #666666;">证书查看</p> | |||
| </van-grid-item> | |||
| <van-grid-item text="公示查询" > | |||
| <van-grid-item text="公示查询" :to="{name:'houseAnnounce'}"> | |||
| <div slot="default"> | |||
| <div class="icon" style="background:#C5685F;"> | |||
| <img src="../../../static/images/onlineHome/icon11.png" style="width: 25px;" alt /> | |||
| @@ -24,6 +24,7 @@ | |||
| center | |||
| clearable | |||
| label="验证码" | |||
| :rules="[{ required: true, }]" | |||
| placeholder="图形验证码" | |||
| > | |||
| <template #button> | |||
| @@ -333,7 +334,7 @@ export default { | |||
| message: '密码不能为空', | |||
| }); | |||
| return false; | |||
| } else if (this.formData.code == "") { | |||
| } else if (!this.formData.code) { | |||
| this.$dialog.alert({ | |||
| message: '图片验证码不能为空', | |||
| }); | |||
| @@ -341,7 +342,8 @@ export default { | |||
| } | |||
| this.$store | |||
| .dispatch("Login", this.formData) | |||
| .then(() => { | |||
| .then((resp) => { | |||
| console.log(resp); | |||
| this.$router.push({ path: "/onlineHome/workbench" }).catch(() => {}); | |||
| }) | |||
| .catch((error) => { | |||