@@ -121,3 +121,104 @@ export function getHouseMembers(id){ | |||||
method:'get' | 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' | 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) | 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, | roles: state => state.user.roles, | ||||
permissions: state => state.user.permissions, | permissions: state => state.user.permissions, | ||||
bookName: state => state.user.bookName, | bookName: state => state.user.bookName, | ||||
nickName: state => state.user.nickName, | |||||
baseRoutingUrl: state => state.user.baseRoutingUrl, | |||||
} | } | ||||
export default getters | export default getters |
@@ -1,6 +1,7 @@ | |||||
import { login, logout, getInfo, smsLogin } from '@/api/login'; | import { login, logout, getInfo, smsLogin } from '@/api/login'; | ||||
import { registerOn } from "@/api/register"; | import { registerOn } from "@/api/register"; | ||||
import { getToken, setToken, removeToken } from '@/utils/auth' | import { getToken, setToken, removeToken } from '@/utils/auth' | ||||
import { getSystemAttachmentUrl } from '@/api/system/config' | |||||
const user = { | const user = { | ||||
state: { | state: { | ||||
@@ -9,7 +10,10 @@ const user = { | |||||
avatar: '', | avatar: '', | ||||
roles: [], | roles: [], | ||||
permissions: [], | permissions: [], | ||||
bookName: '' | |||||
bookName: '', | |||||
nickName: '', | |||||
baseRoutingUrl: '', | |||||
}, | }, | ||||
mutations: { | mutations: { | ||||
@@ -39,7 +43,13 @@ const user = { | |||||
}, | }, | ||||
SET_BOOKNAME: (state, bookName) => { | SET_BOOKNAME: (state, bookName) => { | ||||
state.bookName = bookName | state.bookName = bookName | ||||
} | |||||
}, | |||||
SET_NICKNAME: (state, nickName) => { | |||||
state.nickName = nickName | |||||
}, | |||||
SET_baseRoutingUrl: (state, baseRoutingUrl) => { | |||||
state.baseRoutingUrl = baseRoutingUrl | |||||
}, | |||||
}, | }, | ||||
actions: { | actions: { | ||||
@@ -113,6 +123,11 @@ const user = { | |||||
commit('SET_LOGINBOOKID', user.loginBookId) | commit('SET_LOGINBOOKID', user.loginBookId) | ||||
commit('SET_DEPTNAME', user.deptName) | commit('SET_DEPTNAME', user.deptName) | ||||
commit('SET_AVATAR', avatar) | commit('SET_AVATAR', avatar) | ||||
commit('SET_NICKNAME', user.nickName); | |||||
getSystemAttachmentUrl().then((resp) => { | |||||
commit('SET_baseRoutingUrl', resp.msg); | |||||
}); | |||||
resolve(res) | resolve(res) | ||||
}).catch(error => { | }).catch(error => { | ||||
reject(error) | reject(error) | ||||
@@ -2,16 +2,26 @@ | |||||
<div> | <div> | ||||
<van-nav-bar | <van-nav-bar | ||||
title="我的事项" | title="我的事项" | ||||
fixed | |||||
placeholder | |||||
left-arrow | left-arrow | ||||
@click-left="goOnlineHomeIndex" | @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 title="待办" name="1" > | ||||
</van-tab> | </van-tab> | ||||
<van-tab title="已办" name="2"> | <van-tab title="已办" name="2"> | ||||
</van-tab> | </van-tab> | ||||
</van-tabs> | </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> | <van-cell> | ||||
<template #title> | <template #title> | ||||
<van-row style=""> | <van-row style=""> | ||||
@@ -43,6 +53,8 @@ | |||||
</template> | </template> | ||||
</van-cell> | </van-cell> | ||||
</van-cell-group> | </van-cell-group> | ||||
</van-list> | |||||
</van-pull-refresh> | |||||
</div> | </div> | ||||
</template> | </template> | ||||
@@ -65,6 +77,9 @@ | |||||
pageSize: 100, | pageSize: 100, | ||||
}, | }, | ||||
activityBusinessTypeOptions:[], | activityBusinessTypeOptions:[], | ||||
refreshing: false, | |||||
loading: false, | |||||
finished: false, | |||||
} | } | ||||
}, | }, | ||||
created() { | created() { | ||||
@@ -81,12 +96,28 @@ | |||||
goOnlineHomeIndex(){ | goOnlineHomeIndex(){ | ||||
this.$router.push({name:'onlineHomeWorkbench'}) | 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'){ | if(this.activeName=='1'){ | ||||
ListTodo(this.queryParams).then((response) => { | ListTodo(this.queryParams).then((response) => { | ||||
console.log(response) | console.log(response) | ||||
if(response.rows.length === 0) | |||||
{ | |||||
this.finished = true; | |||||
return; | |||||
} | |||||
response.rows.map(res => { | response.rows.map(res => { | ||||
if(res.tableName?res.tableName.indexOf('house')>0:""){ | if(res.tableName?res.tableName.indexOf('house')>0:""){ | ||||
res.tableName = '来自农村宅基地管理系统' | res.tableName = '来自农村宅基地管理系统' | ||||
@@ -104,10 +135,18 @@ | |||||
}); | }); | ||||
} | } | ||||
}) | }) | ||||
}) | |||||
}).finally(() => { | |||||
this.loading = false; | |||||
this.refreshing = false; | |||||
}); | |||||
}else{ | }else{ | ||||
ListDone(this.queryParams).then((response) => { | ListDone(this.queryParams).then((response) => { | ||||
console.log(response) | console.log(response) | ||||
if(response.rows.length === 0) | |||||
{ | |||||
this.finished = true; | |||||
return; | |||||
} | |||||
response.rows.map(res => { | response.rows.map(res => { | ||||
if(res.tableName?res.tableName.indexOf('house')>0:""){ | if(res.tableName?res.tableName.indexOf('house')>0:""){ | ||||
res.tableName = '来自农村宅基地管理系统' | res.tableName = '来自农村宅基地管理系统' | ||||
@@ -125,7 +164,10 @@ | |||||
}); | }); | ||||
} | } | ||||
}) | }) | ||||
}) | |||||
}).finally(() => { | |||||
this.loading = false; | |||||
this.refreshing = false; | |||||
}); | |||||
} | } | ||||
}, | }, | ||||
goDetail(item){ | goDetail(item){ | ||||
@@ -136,6 +178,11 @@ | |||||
case 'landscope': | case 'landscope': | ||||
case 'accepting': | case 'accepting': | ||||
this.$router.push({name:'approvalForm',query: {id:item.formData.id,taskId:item.taskId,instanceId:item.formData.instanceId,type:item.type}}) | 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; | break; | ||||
case 'yinnong_transfer': | case 'yinnong_transfer': | ||||
this.$router.push({name:'approvalApproval',query: {id:item.formData.id,taskId:item.taskId,type:item.type}}) | this.$router.push({name:'approvalApproval',query: {id:item.formData.id,taskId:item.taskId,type:item.type}}) | ||||
@@ -35,23 +35,25 @@ | |||||
</template> | </template> | ||||
<script> | <script> | ||||
import { allInformation } from "@/api/onlineHome/homestead/application"; | |||||
import { allInformation, allInformationWLHT } from "@/api/onlineHome/homestead/application"; | |||||
export default { | export default { | ||||
name: "flowChart", | name: "flowChart", | ||||
data() { | data() { | ||||
return { | return { | ||||
applicationDetail:[], | applicationDetail:[], | ||||
id:'' | |||||
id:'', | |||||
processKey: '', | |||||
}; | }; | ||||
}, | }, | ||||
created() { | created() { | ||||
this.id = this.$route.query.id; | this.id = this.$route.query.id; | ||||
this.processKey = this.$route.query.processKey; | |||||
this.getDetail(); | this.getDetail(); | ||||
}, | }, | ||||
methods: { | methods: { | ||||
//获取数据集合 | //获取数据集合 | ||||
getDetail(){ | getDetail(){ | ||||
allInformation(this.id).then(response => { | |||||
(this.processKey && this.processKey.endsWith('WLHT') ? allInformationWLHT : allInformation)(this.id).then(response => { | |||||
console.log(response) | console.log(response) | ||||
this.applicationDetail = response.data; | this.applicationDetail = response.data; | ||||
}); | }); | ||||
@@ -5,7 +5,7 @@ | |||||
fixed | fixed | ||||
placeholder | placeholder | ||||
@click-left="$router.back(-1)" | @click-left="$router.back(-1)" | ||||
@click-right="goAdd()" | |||||
@click-right="goAddLite()" | |||||
> | > | ||||
<template #title> | <template #title> | ||||
<p style="font-weight: bold;">宅基地申请</p> | <p style="font-weight: bold;">宅基地申请</p> | ||||
@@ -15,14 +15,15 @@ | |||||
</template> | </template> | ||||
</van-nav-bar> | </van-nav-bar> | ||||
<van-list | |||||
<van-pull-refresh v-model="refreshing" @refresh="refresh"> | |||||
<van-list | |||||
v-model="loading" | v-model="loading" | ||||
:finished="finished" | :finished="finished" | ||||
finished-text="没有更多了" | finished-text="没有更多了" | ||||
@load="getList" | @load="getList" | ||||
> | > | ||||
<van-swipe-cell v-for="(item,index) in applicationList" :key="index"> | <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> | <template #icon> | ||||
<van-icon name="../../../static/images/onlineHome/icon_zjd1.png" size="30" color="#539FFD" style="margin-right: 10px;" /> | <van-icon name="../../../static/images/onlineHome/icon_zjd1.png" size="30" color="#539FFD" style="margin-right: 10px;" /> | ||||
</template> | </template> | ||||
@@ -33,20 +34,25 @@ | |||||
<template #right> | <template #right> | ||||
<van-row> | <van-row> | ||||
<van-col> | <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-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-col> | ||||
</van-row> | </van-row> | ||||
</template> | </template> | ||||
</van-swipe-cell> | </van-swipe-cell> | ||||
</van-list> | </van-list> | ||||
</van-pull-refresh> | |||||
</div> | </div> | ||||
</template> | </template> | ||||
<script> | <script> | ||||
import { getList , removeList } from "@/api/onlineHome/homestead/application"; | import { getList , removeList } from "@/api/onlineHome/homestead/application"; | ||||
import { customSubmit, customSubmitWLHT} from "@/api/onlineHome/homestead/application"; | |||||
export default { | export default { | ||||
name: "applicationList", | name: "applicationList", | ||||
data() { | data() { | ||||
@@ -55,6 +61,7 @@ export default { | |||||
houseApplyStatus:[], | houseApplyStatus:[], | ||||
loading: false, | loading: false, | ||||
finished: false, | finished: false, | ||||
refreshing: false, | |||||
queryParams:{ | queryParams:{ | ||||
pageNum:1, | pageNum:1, | ||||
pageSize:10, | pageSize:10, | ||||
@@ -73,13 +80,26 @@ export default { | |||||
goAdd(){ | goAdd(){ | ||||
window.location = 'applicationAdd'; | 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(){ | getList(){ | ||||
setTimeout(() => { | setTimeout(() => { | ||||
getList(this.queryParams).then(response => { | getList(this.queryParams).then(response => { | ||||
console.log(response) | console.log(response) | ||||
for (var i = 0; i < response.rows.length; i++) { | 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]); | this.applicationList.push(response.rows[i]); | ||||
} | } | ||||
console.log(this.applicationList.length >= response.total) | console.log(this.applicationList.length >= response.total) | ||||
@@ -90,6 +110,9 @@ export default { | |||||
this.loading = false; | this.loading = false; | ||||
this.queryParams.pageNum += 1 ; | this.queryParams.pageNum += 1 ; | ||||
} | } | ||||
}).finally(() => { | |||||
this.loading = false; | |||||
this.refreshing = false; | |||||
}); | }); | ||||
}, 1000); | }, 1000); | ||||
}, | }, | ||||
@@ -109,7 +132,26 @@ export default { | |||||
.catch(() => { | .catch(() => { | ||||
// on cancel | // 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> | </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-row style="margin-top: 20px"> | ||||
<van-col span="16" :offset="2"> | <van-col span="16" :offset="2"> | ||||
<h3>张村村民联系方式</h3> | |||||
<h3>{{this.$store.state.user.deptName}}村民联系方式</h3> | |||||
</van-col> | </van-col> | ||||
</van-row> | </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);"> | <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.nickName = response.user.nickName | ||||
this.deptName = response.user.dept.deptName | this.deptName = response.user.dept.deptName | ||||
this.userId = response.user.userId | 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: { | methods: { | ||||
@@ -7,7 +7,7 @@ | |||||
<template #left> | <template #left> | ||||
<van-icon name="location" color="3A80FB" size="16"/> | <van-icon name="location" color="3A80FB" size="16"/> | ||||
<p style="color: #878787;margin-left: 5px" @click="selectDept">{{deptName}}</p> | <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 | <van-cascader | ||||
v-model="villageValue" | v-model="villageValue" | ||||
title="请选择所在村" | title="请选择所在村" | ||||
@@ -207,7 +207,7 @@ | |||||
<van-row class="indexCard"> | <van-row class="indexCard"> | ||||
<van-cell style="border-radius: 6px;"> | <van-cell style="border-radius: 6px;"> | ||||
<template #title> | <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> | </template> | ||||
</van-cell> | </van-cell> | ||||
<van-grid :border="false"> | <van-grid :border="false"> | ||||
@@ -217,15 +217,15 @@ | |||||
</div> | </div> | ||||
<p style="margin-top: 5px;color: #666666;">宅基地申请</p> | <p style="margin-top: 5px;color: #666666;">宅基地申请</p> | ||||
</van-grid-item> | </van-grid-item> | ||||
<van-grid-item text="证书打印" > | |||||
<van-grid-item text="证书查看" :to="{name:'houseLicense'}"> | |||||
<div slot="default"> | <div slot="default"> | ||||
<div class="icon" style="background:#7790FE;"> | <div class="icon" style="background:#7790FE;"> | ||||
<img src="../../../static/images/onlineHome/icon12.png" style="width: 25px" alt /> | <img src="../../../static/images/onlineHome/icon12.png" style="width: 25px" alt /> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
<p style="margin-top: 5px;color: #666666;">证书打印</p> | |||||
<p style="margin-top: 5px;color: #666666;">证书查看</p> | |||||
</van-grid-item> | </van-grid-item> | ||||
<van-grid-item text="公示查询" > | |||||
<van-grid-item text="公示查询" :to="{name:'houseAnnounce'}"> | |||||
<div slot="default"> | <div slot="default"> | ||||
<div class="icon" style="background:#C5685F;"> | <div class="icon" style="background:#C5685F;"> | ||||
<img src="../../../static/images/onlineHome/icon11.png" style="width: 25px;" alt /> | <img src="../../../static/images/onlineHome/icon11.png" style="width: 25px;" alt /> | ||||
@@ -24,6 +24,7 @@ | |||||
center | center | ||||
clearable | clearable | ||||
label="验证码" | label="验证码" | ||||
:rules="[{ required: true, }]" | |||||
placeholder="图形验证码" | placeholder="图形验证码" | ||||
> | > | ||||
<template #button> | <template #button> | ||||
@@ -333,7 +334,7 @@ export default { | |||||
message: '密码不能为空', | message: '密码不能为空', | ||||
}); | }); | ||||
return false; | return false; | ||||
} else if (this.formData.code == "") { | |||||
} else if (!this.formData.code) { | |||||
this.$dialog.alert({ | this.$dialog.alert({ | ||||
message: '图片验证码不能为空', | message: '图片验证码不能为空', | ||||
}); | }); | ||||
@@ -341,7 +342,8 @@ export default { | |||||
} | } | ||||
this.$store | this.$store | ||||
.dispatch("Login", this.formData) | .dispatch("Login", this.formData) | ||||
.then(() => { | |||||
.then((resp) => { | |||||
console.log(resp); | |||||
this.$router.push({ path: "/onlineHome/workbench" }).catch(() => {}); | this.$router.push({ path: "/onlineHome/workbench" }).catch(() => {}); | ||||
}) | }) | ||||
.catch((error) => { | .catch((error) => { | ||||