ba81bf4e by xiaomiao

登记簿补录功能开发

1 parent c463a104
Showing 58 changed files with 10172 additions and 5 deletions
......@@ -34,6 +34,14 @@ export const constantRoutes = [
hidden: true,
meta: { title: '发起申请' }
},
// 业务流程框架
{
path: '/djbworkFrame',
component: () => import('@/views/djbworkflow/workFrame.vue'),
name: 'djbworkFrame',
hidden: true,
meta: { title: '登记簿编辑' }
},
//登记簿详情
{
path: '/djbFrameall',
......
<template>
<dialogBox title="配置常办项目" @submitForm="submitForm" saveButton="保存" :isFullscreen="false" width="50%"
@closeDialog="closeDialog" v-model="myValue">
<Tree :data="projectList" show-checkbox node-key="id" :default-checked-keys="defaultCheckeds" ref="tree"
default-expand-all :props="defaultProps" @check-change="handleClick" />
</dialogBox>
</template>
<script>
import { getMenuInfo } from "@/api/user.js";
import Tree from "@/components/Tree/src/tree.vue"
import { saveFrequentProjectsList, getHomeFrequentProjects } from "@/api/user.js";
export default {
components: {
Tree
},
props: {
value: { type: Boolean, default: false },
bindItem: { type: Array, default: [] }
},
data () {
return {
myValue: false,
defaultCheckeds: [],
projectList: [],
checkedItem: [],
defaultProps: {
children: "children",
label: "name",
disabled: function (data, node) {
if (data.children && data.children.length > 0) {
return true
} else {
return false
}
}
},
uniqueValue: ''//最后拿到的唯一选择的moduldCode值,相当于id
}
},
watch: {
value (val) {
this.myValue = val
if (val) {
this.queryClick()
}
}
},
mounted () {
this.dealCheckedItem();
},
methods: {
submitForm () {
var checkedNodes = this.$refs.tree.getCheckedNodes();
if (checkedNodes.length > 6) {
this.$message.error("最多选择6个项目!");
return
}
saveFrequentProjectsList(checkedNodes).then(res => {
if (res.code == 200) {
this.$parent.queryProjectList();
this.$message.success("保存成功");
this.$emit("input", false);
} else {
this.$message.error(res.message);
}
})
},
queryClick () {
let that = this
getMenuInfo().then(res => {
this.projectList = res.result.slice(0, -2)
})
function lookForAllId (arr = []) {
for (let item of that.bindItem) {
arr.push(item.id)
if (item.children && item.children.length) lookForAllId(item.children, arr)
}
return arr
}
this.defaultCheckeds = lookForAllId()
},
dealCheckedItem () {
},
//关闭窗口
closeDialog () {
this.$emit("input", false);
},
//节点选择状态发生改变时
handleClick (data, checked, node) {
var checkedNodes = this.$refs.tree.getCheckedNodes();
if (checkedNodes.length > 6) {
this.$message({
message: '最后选择6条数据',
type: 'warning',
customClass: 'messageIndex'
})
this.$refs.tree.setChecked(data, false) // 取消当前节点的选中状态
}
}
}
}
</script>
<style scoped lang='scss'>
/deep/.el-tree-node.is-expanded>.el-tree-node__children {
display: flex;
flex-wrap: wrap;
}
</style>
<template>
<div class="bdcqldjml">
<table class="mlTable">
<tr>
<th colspan="5" class="title">不动产权利登记目录</th>
</tr>
<tr>
<td>序号</td>
<td>不动产单元号</td>
<td>不动产类型</td>
<td>所在本数</td>
<td>备注</td>
</tr>
<tr v-for="(item, index) in bdcqlml" :key="index">
<td>{{ index + 1 }}</td>
<td>{{ item.bdcdyh }}</td>
<td>{{ item.bdclx }}</td>
<td>{{ item.szbs }}</td>
<td>{{ item.bz }}</td>
</tr>
</table>
</div>
</template>
<script>
import { getBdcqldjmlByBdcdyid } from "@/api/registerBook.js";
export default {
data() {
return {
bdcqlml: [],
propsParam: this.$attrs,
};
},
mounted() {
getBdcqldjmlByBdcdyid({ bdcdyid: this.propsParam.bdcdyid }).then((res) => {
if (res.code === 200) {
this.bdcqlml = res.result;
}
});
},
};
</script>
<style lang="scss" scoped>
.bdcqldjml {
width: 100%;
height: 100%;
background: #fff;
overflow-y: scroll;
.mlTable {
width: 90%;
margin: 0 auto;
color: #333;
border-spacing: 1px;
background-color: #333;
.title {
font-size: 20px;
line-height: 60px;
font-family: serif;
position: relative;
}
td,
th {
background-color: white;
line-height: 30px;
padding: 0 4px;
text-align: center;
}
}
}
</style>
<template>
<div class="bdcqljqtsx">
<div class="content">
<div class="title">不动产权利及其他事项<br />登记信息</div>
<div>
不动产单元号:
<div class="underline">{{ propsParam.bdcdyh }}</div>
</div>
<br /><br /><br />
<div>
<div class="underline">{{ qlxxList.ztqlmc }}</div>
登记 共
<div class="underline">{{ qlxxList.ztql.total }}</div>
</div>
<br /><br />
<div>
抵押权登记 共
<div class="underline">{{ qlxxList.diyaq.total }}</div>
</div>
<br />
<div>
地役权登记 共
<div class="underline">{{ qlxxList.diyiq.total }}</div>
</div>
<br />
<div>
预告登记 共
<div class="underline">{{ qlxxList.ygdj.total }}</div>
</div>
<br />
<div>
异议登记 共
<div class="underline">{{ qlxxList.yydj.total }}</div>
</div>
<br />
<div>
查封登记 共
<div class="underline">{{ qlxxList.cfdj.total }}</div>
</div>
<br />
</div>
</div>
</template>
<script>
import { getBdcqljqtsx } from "@/api/registerBook.js";
export default {
name: "bdcqljqtsx",
data() {
return {
//传递参数
propsParam: this.$attrs,
qlxxList: "",
};
},
mounted() {
getBdcqljqtsx({
bdcdyid: this.propsParam.bdcdyid,
bdcdyh: this.propsParam.bdcdyh,
}).then((res) => {
if (res.code === 200) {
this.qlxxList = res.result;
}
});
},
};
</script>
<style lang="scss" scoped>
.bdcqljqtsx {
width: 100%;
height: 100%;
background: #fff;
.content {
width: 50%;
height: 100%;
margin: 0 auto;
text-align: right;
color: #333;
font-family: "Arial Negreta", "Arial Normal", "Arial", sans-serif;
font-weight: 700;
font-size: 18px;
line-height: 16px;
.title {
font-size: 32px;
text-align: center;
padding: 40px 0;
line-height: 34px;
}
.underline {
font-size: 14px;
font-weight: normal;
text-decoration: underline;
display: inline-block;
}
}
}
</style>
<template>
<div class="djxxTable">
<div class="tableBox">
<div class="title">
{{ title }}
<div class="checkbox">
<el-checkbox-group v-model="checkList" @change="checkChange">
<el-checkbox v-for="item in qsztList" :key="item.value" :label="item.value">{{ item.label }}</el-checkbox>
</el-checkbox-group>
</div>
</div>
<div class="xxTableBox rollTable">
<table class="xxTable">
<tr v-for="(item, colindex) in columns" :key="colindex">
<td>
{{ item.label }}
</td>
<td v-for="(row, index) in tableData" :key="index" :class="[
row.qszt == '2' ? 'lishi' : '',
row.qszt == '0' ? 'linshi' : '',
item.prop == 'qszt' && row.qszt == '0' ? 'linshiIcon' : '',
]">
<div class="icon" v-if="item.prop == 'qszt' && row.qszt == '0'">
正在办理
</div>
<span v-if="item.prop == 'qszt'">
{{ getQsztName(row[item.prop]) }}
</span>
<span v-else> {{ row[item.prop] }}</span>
</td>
<td v-for="count in emptycolNum" :key="~count"></td>
</tr>
</table>
</div>
</div>
</div>
</template>
<script>
import { getCfdjList } from "@/api/registerBook.js";
import { datas } from "./qlxxFormData.js";
export default {
data () {
return {
title: "查封登记信息",
qsztList: datas.columns().qsztList,
checkList: datas.columns().checkList,
//传递参数
propsParam: this.$attrs,
//列表数据
tableData: [],
//空列值个数
emptycolNum: datas.columns().emptycolNum,
//列名称对象
columns: datas.columns().CFDJ,
};
},
created () {
this.loadData();
},
methods: {
loadData () {
getCfdjList({
bdcdyid: this.propsParam.bdcdyid,
qllx: this.propsParam.qllx,
qszt: this.checkList,
}).then((res) => {
if (res.code === 200) {
this.tableData = res.result;
this.tableData.forEach((item, index) => {
if (item.sfbxf == '1') {
item.zxywh = '';
item.zxdbr = '';
item.zxsj = '';
}
})
if (this.tableData.length < datas.columns().emptycolNum) {
this.emptycolNum =
datas.columns().emptycolNum - this.tableData.length;
} else {
this.emptycolNum = 0;
}
}
});
},
checkChange () {
if (this.checkList.length === 0) {
this.tableData = [];
this.emptycolNum = datas.columns().emptycolNum;
} else {
this.loadData();
}
},
getQsztName (code) {
let name = "";
for (let item of this.qsztList) {
if (item.value == code) {
name = item.label;
break;
}
}
return name;
},
},
};
</script>
<style lang="scss" scoped>
@import "./qlxxCommon.scss";
</style>
<template>
<div class="jtfccx-edit">
<div class="jtfccx-edit-con">
<el-form ref="form" :model="form" label-width="160px">
<el-row>
<el-col :span="8">
<el-form-item label="权属状态" label-width="140px">
<el-select v-model="form.qszt">
<el-option v-for="item in qsztList" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="权利类型" label-width="140px">
<el-input v-model="form.qllxmc" ></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="登记类型" label-width="140px">
<el-input v-model="form.djlxmc" ></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="上手业务号" label-width="140px">
<el-input v-model="form.ssywh" ></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="档案号" label-width="140px">
<el-input v-model="form.dah" ></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="业务号" label-width="140px">
<el-input v-model="form.ywh" ></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="不动产单元号" label-width="140px">
<el-input v-model="form.bdcdyh" ></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="坐落" label-width="140px">
<el-input v-model="form.zl" ></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="共有情况" label-width="140px">
<el-input v-model="form.gyqk" ></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="权利人类型" label-width="140px">
<el-input v-model="form.qlrlx" ></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="权利人" label-width="140px">
<el-input v-model="form.qlrmc" ></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="证件种类" label-width="140px">
<el-input v-model="form.qlrzjzl" ></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="证件号" label-width="140px">
<el-input v-model="form.qlrzjhm" ></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="使用权面积" label-width="140px">
<el-input v-model="form.mj" ></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="权利性质" label-width="140px">
<el-input v-model="form.qlxzmc" ></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="土地用途" label-width="140px">
<el-input v-model="form.ytmc" ></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="使用权起止时间" label-width="140px">
<el-input v-model="form.syqqzsj" ></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="土地使用期限" label-width="140px">
<el-input v-model="form.tdsyqx" ></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="取得价格(万元)" label-width="140px">
<el-input v-model="form.qdjg" ></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="登记原因" label-width="140px">
<el-input v-model="form.djyy" ></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="不动产权证号" label-width="140px">
<el-input v-model="form.bdcqzh" ></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="登记时间" label-width="140px">
<el-input v-model="form.djsj" ></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="登簿人" label-width="140px">
<el-input v-model="form.dbr" ></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="附记" label-width="140px">
<el-input v-model="form.fj" ></el-input>
</el-form-item>
</el-col>
</el-row>
<el-form-item class="btn">
<el-button type="primary" @click="submitForm">保存</el-button>
<el-button @click="closeDialog">取消</el-button>
</el-form-item>
</el-form>
</div>
</div>
</template>
<script>
export default {
props: {
formData: {
type: Object,
default: () => { },
},
},
data () {
return {
form:{},
qsztList: [
{
value: "0",
label: "临时",
},
{
value: "1",
label: "现势",
},
{
value: "2",
label: "历史",
},
],
label:"",
};
},
mounted () {
console.log("this.formData.data",this.formData.data);
if (this.formData.data) {
this.$nextTick(() => {
this.form = Object.assign({}, this.formData.data)
this.form.qszt=this.form.qszt=='0'?"临时":this.form.qszt=='1'?"现势":"历史"
})
console.log("this.form",this.form);
}
},
methods: {
//新增常用意见
submitForm () {
this.$refs.form.validate(valid => {
if (valid) {
console.log("from",this.form);
// addUserCommonOpinion({ commonOpinion: this.form.commonOpinion }).then(res => {
// if (res.code == 200) {
// this.$message.success("新增成功")
// this.closeaddDiglog();
// this.getList()
// } else {
// this.$message.error(res.message)
// }
// })
} else {
return false;
}
});
},
closeDialog () {
console.log("this.$refs['form']",this.$refs['form']);
this.$popupCacel()
this.$refs['form'].resetFields();
// this.resetTableFields();
}
},
};
</script>
<style scoped lang="scss">
@import "~@/styles/mixin.scss";
@import "~@/styles/public.scss";
.jtfccx-edit {
@include flex;
flex-direction: column;
overflow-y: hidden;
max-height: 85vh;
padding: 0 2px;
.btn{
text-align: center;
}
}
</style>
<template>
<div class="djxxTable">
<div class="tableBox">
<div class="title">
{{ title }}
<div class="checkbox">
<el-checkbox-group v-model="checkList" @change="checkChange">
<el-checkbox v-for="item in qsztList" :key="item.value" :label="item.value">{{ item.label }}</el-checkbox>
</el-checkbox-group>
</div>
</div>
<div class="xxTableBox rollTable">
<table class="xxTable">
<tr v-for="(item, colindex) in columns" :key="colindex">
<td>
{{ item.label }}
</td>
<td v-for="(row, index) in tableData" :key="index" :class="[
row.qszt == '2' ? 'lishi' : '',
row.qszt == '0' ? 'linshi' : '',
item.prop == 'qszt' && row.qszt == '0' ? 'linshiIcon' : '',
]">
<div class="icon" v-if="item.prop == 'qszt' && row.qszt == '0'">
正在办理
</div>
<span v-if="item.prop == 'qszt'">
{{ getQsztName(row[item.prop]) }}
</span>
<span v-else> {{ row[item.prop] }}</span>
</td>
<td v-for="count in emptycolNum" :key="~count"></td>
</tr>
</table>
</div>
</div>
</div>
</template>
<script>
import { getDiyaqList } from "@/api/registerBook.js";
import { datas } from "./qlxxFormData.js";
export default {
data () {
return {
title: "抵押权登记信息",
qsztList: datas.columns().qsztList,
checkList: datas.columns().checkList,
//传递参数
propsParam: this.$attrs,
//列表数据
tableData: [],
//空列值个数
emptycolNum: datas.columns().emptycolNum,
//列名称对象
columns: datas.columns().DYAQ,
};
},
created () {
this.loadData();
},
methods: {
loadData () {
getDiyaqList({
bdcdyid: this.propsParam.bdcdyid,
qllx: this.propsParam.qllx,
qszt: this.checkList,
}).then((res) => {
if (res.code === 200) {
this.tableData = res.result;
if (this.tableData.length < datas.columns().emptycolNum) {
this.emptycolNum =
datas.columns().emptycolNum - this.tableData.length;
} else {
this.emptycolNum = 0;
}
}
});
},
checkChange () {
if (this.checkList.length === 0) {
this.tableData = [];
this.emptycolNum = datas.columns().emptycolNum;
} else {
this.loadData();
}
},
getQsztName (code) {
let name = "";
for (let item of this.qsztList) {
if (item.value == code) {
name = item.label;
break;
}
}
return name;
},
},
};
</script>
<style lang="scss" scoped>
@import "./qlxxCommon.scss";
</style>
<template>
<div class="djxxTable">
<div class="tableBox">
<div class="title">
{{ title }}
<div class="checkbox">
<el-checkbox-group v-model="checkList" @change="checkChange">
<el-checkbox v-for="item in qsztList" :key="item.value" :label="item.value">{{ item.label }}</el-checkbox>
</el-checkbox-group>
</div>
</div>
<div class="xxTableBox rollTable">
<table class="xxTable">
<tr v-for="(item, colindex) in columns" :key="colindex">
<td>
{{ item.label }}
</td>
<td v-for="(row, index) in tableData" :key="index" :class="[
row.qszt == '2' ? 'lishi' : '',
row.qszt == '0' ? 'linshi' : '',
item.prop == 'qszt' && row.qszt == '0' ? 'linshiIcon' : '',
]">
<div class="icon" v-if="item.prop == 'qszt' && row.qszt == '0'">
正在办理
</div>
<span v-if="item.prop == 'qszt'">
{{ getQsztName(row[item.prop]) }}
</span>
<span v-else> {{ row[item.prop] }}</span>
</td>
<td v-for="count in emptycolNum" :key="~count"></td>
</tr>
</table>
</div>
</div>
</div>
</template>
<script>
import { getDiyiqList } from "@/api/registerBook.js";
import { datas } from "./qlxxFormData.js";
export default {
data () {
return {
title: "地役权登记信息",
qsztList: datas.columns().qsztList,
checkList: datas.columns().checkList,
//传递参数
propsParam: this.$attrs,
//列表数据
tableData: [],
//空列值个数
emptycolNum: datas.columns().emptycolNum,
//列名称对象
columns: datas.columns().DYIQ,
};
},
created () {
this.loadData();
},
methods: {
loadData () {
getDiyiqList({
bdcdyid: this.propsParam.bdcdyid,
qllx: this.propsParam.qllx,
qszt: this.checkList,
}).then((res) => {
if (res.code === 200) {
this.tableData = res.result;
if (this.tableData.length < datas.columns().emptycolNum) {
this.emptycolNum =
datas.columns().emptycolNum - this.tableData.length;
} else {
this.emptycolNum = 0;
}
}
});
},
checkChange () {
if (this.checkList.length === 0) {
this.tableData = [];
this.emptycolNum = datas.columns().emptycolNum;
} else {
this.loadData();
}
},
getQsztName (code) {
let name = "";
for (let item of this.qsztList) {
if (item.value == code) {
name = item.label;
break;
}
}
return name;
},
},
};
</script>
<style lang="scss" scoped>
@import "./qlxxCommon.scss";
</style>
var qlxxPage = [
{ qllx: "A01", id: "jsydsyq", form: "jsydsyq.vue", label: "集体土地所有权" },
{ qllx: "A02", id: "jsydsyq", form: "jsydsyq.vue", label: "国家土地所有权" },
{ qllx: "A03", id: "jsydsyq", form: "jsydsyq.vue", label: "国有建设用地使用权" },
{ qllx: "A04", id: "", form: "", label: "国有建设用地使用权/房屋所有权" },
{ qllx: "A05", id: "jsydsyq", form: "jsydsyq.vue", label: "宅基地使用权" },
{ qllx: "A06", id: "", form: "", label: "宅基地使用权/房屋所有权" },
{ qllx: "A07", id: "jsydsyq", form: "jsydsyq.vue", label: "集体建设用地使用权" },
{ qllx: "A08", id: "", form: "", label: "集体建设用地使用权/房屋所有权" },
{ qllx: "A09", id: "jsydsyq", form: "jsydsyq.vue", label: "土地承包经营权" },
{ qllx: "A11", id: "jsydsyq", form: "jsydsyq.vue", label: "林地使用权" },
{ qllx: "A12", id: "jsydsyq", form: "jsydsyq.vue", label: "林地使用权/森林、林木使用权" },
{ qllx: "A13", id: "jsydsyq", form: "jsydsyq.vue", label: "草原使用权" },
{ qllx: "A14", id: "jsydsyq", form: "jsydsyq.vue", label: "水域滩涂养殖权" },
{ qllx: "A15", id: "jsydsyq", form: "jsydsyq.vue", label: "海域使用权" },
{ qllx: "A16", id: "jsydsyq", form: "jsydsyq.vue", label: "海域使用权/建(构)筑物所有权" },
{ qllx: "A17", id: "jsydsyq", form: "jsydsyq.vue", label: "海域使用权(无居民海岛)" },
{ qllx: "A18", id: "jsydsyq", form: "jsydsyq.vue", label: "海域使用权(无居民海岛)/建筑物(设施)使用权" },
{ qllx: "A19", id: "diyiq", form: "diyiq.vue", label: "地役权" },
{ qllx: "A23", id: "jsydsyq", form: "jsydsyq.vue", label: "国有农用地的使用权" },
{ qllx: "A24", id: "jsydsyq", form: "jsydsyq.vue", label: "国有建设用地使用权/构筑物所有权" },
{ qllx: "A25", id: "jsydsyq", form: "jsydsyq.vue", label: "宅基地使用权/构筑物所有权" },
{ qllx: "A26", id: "jsydsyq", form: "jsydsyq.vue", label: "集体建设用地使用权/构筑物所有权" },
{ qllx: "A29", id: "jsydsyq", form: "jsydsyq.vue", label: "国有未利用地的使用权" },
{ qllx: "A30", id: "jsydsyq", form: "jsydsyq.vue", label: "集体农用地使用权" },
{ qllx: "A31", id: "jsydsyq", form: "jsydsyq.vue", label: "土地承包经营权/森林、林木使用权" },
{ qllx: "A33", id: "jsydsyq", form: "jsydsyq.vue", label: "林地经营权/林木所有权" },
{ qllx: "A34", id: "jsydsyq", form: "jsydsyq.vue", label: "林地经营权/林木使用权" },
{ qllx: "A35", id: "jsydsyq", form: "jsydsyq.vue", label: "林地承包经营权/林木所有权" },
{ qllx: "A36", id: "jsydsyq", form: "jsydsyq.vue", label: "林地使用权/林木所有权" },
{ qllx: "A37", id: "diyaq", form: "diyaq.vue", label: "抵押权" },
{ qllx: "B37", id: "diyaq", form: "diyaq.vue", label: "抵押权" },
{ qllx: "B38", id: "yydj", form: "yydj.vue", label: "异议登记" },
{ qllx: "B39", id: "cfdj", form: "cfdj.vue", label: "查封登记" },
{ qllx: "B40", id: "ygdj", form: "ygdj.vue", label: "预告登记" },
{ qllx: "B41", id: "ygdj", form: "ygdj.vue", label: "预告登记" },
];
//组装登记簿树形结构
export function loadTreeData(qlxxData, bdcdyh) {
let treedata = [];
//加载封面
treedata.push({ id: "djbfm", form: "djbfm.vue", label: "登记簿封面" });
treedata.push({ id: "zdjbxx", form: "zdjbxx.vue", label: "宗地基本信息\n(" + bdcdyh.substring(0, 19) + ")", children: [] });
treedata[1].children.push({ id: "bdcqldjml", form: "bdcqldjml.vue", label: "不动产权利登记目录", children: [] });
treedata[1].children[0].children.push({
id: "bdcqljqtsx", form: "bdcqljqtsx.vue", label: "不动产权利及其他事项\n (" + bdcdyh.slice(19) + ")", children: [],
});
//主体权利
treedata[1].children[0].children[0].children.push(getNode(qlxxData.ztqllx, qlxxData.ztql, qlxxData.bdcdylx));
//抵押权
treedata[1].children[0].children[0].children.push(getNode("A37", qlxxData.diyaq, ''));
//地役权
treedata[1].children[0].children[0].children.push(getNode("A19", qlxxData.diyiq, ''));
//预告登记
treedata[1].children[0].children[0].children.push(getNode("B40", qlxxData.ygdj, ''));
//异议登记
treedata[1].children[0].children[0].children.push(getNode("B38", qlxxData.yydj, ''));
//查封登记
treedata[1].children[0].children[0].children.push(getNode("B39", qlxxData.cfdj, ''));
return treedata;
}
//获取权利类型、不动产单元类型对应的树形节点信息
export function getNode(qllx, qlxx, bdcdylx) {
let node;
for (var i = 0; i < qlxxPage.length; i++) {
if (qlxxPage[i].qllx == qllx) {
if (qllx == "A04" || qllx == "A06" || qllx == "A08") {
if (bdcdylx == "4") {
node = { id: "fdcq1", form: "fdcq1.vue", label: qlxxPage[i].label + "(临:" + qlxx.linShi + ",现:" + qlxx.xianShi + ",历:" + qlxx.liShi +")"};
} else {
node = { id: "fdcq2", form: "fdcq2.vue", label: qlxxPage[i].label + "(临:" + qlxx.linShi + ",现:" + qlxx.xianShi + ",历:" + qlxx.liShi +")"};
}
} else {
node = { id: qlxxPage[i].id, form: qlxxPage[i].form, label: qlxxPage[i].label + "(临:" + qlxx.linShi + ",现:" + qlxx.xianShi + ",历:" + qlxx.liShi +")"};
}
break;
}
};
return node;
}
<template>
<div class="djbfm">
<br /><br />
<p>
<font>{{ info.sheng }}</font>
省 (区、市)
<font>{{ info.shi }}</font>
市 (区)
<font>{{ info.xian }}</font>
区 (县、市)
</p>
<p>
<font>{{ info.jdh }}</font>
街道 (乡、镇)
<font>{{ info.jfh }}</font>
街坊 (村)
<font>{{ info.zh }}</font>
</p>
<div class="title">不动产登记簿</div>
<br />
<p>
宗地/宗海号:
<font>{{ info.zddm }}</font>
</p>
<div class="bottom">
<p>
登记机构:
<font>{{ info.djjg }}</font>
</p>
</div>
</div>
</template>
<script>
import { getDjbfm } from "@/api/registerBook.js";
export default {
data () {
return {
//传递参数
propsParam: this.$attrs,
info: {},
};
},
mounted () {
this.loadData();
},
methods: {
loadData () {
getDjbfm({ bdcdyid: this.propsParam.bdcdyid }).then((res) => {
if (res.code === 200) {
this.info = res.result;
}
});
},
},
};
</script>
<style lang="scss" scoped>
.djbfm {
width: 100%;
height: 100%;
background: #fff;
border-right: 1px solid #ccc;
line-height: 45px;
text-align: center;
font-size: 18px;
font-family: serif;
position: relative;
font {
border-bottom: 1px solid #000;
display: inline-block;
padding: 0 15px;
line-height: 16px;
}
.title {
height: 40%;
display: flex;
font-size: 38px;
color: #000;
justify-content: center;
align-items: center;
}
.bottom {
position: absolute;
bottom: 0px;
text-align: center;
width: 100%;
left: 0;
height: 100px;
line-height: 100px;
p {
font-size: 28px;
}
font {
font-size: 24px;
line-height: 24px;
}
}
}
</style>
<template>
<div class="djxxTable">
<div class="tableBox">
<div class="title">
{{ title }}
<div class="checkbox">
<el-checkbox-group v-model="checkList" @change="checkChange">
<el-checkbox v-for="item in qsztList" :key="item.value" :label="item.value">{{ item.label }}</el-checkbox>
</el-checkbox-group>
</div>
</div>
<div class="xxTableBox rollTable">
<!-- 固定前三个 -->
<table class="xxTable">
<tr v-for="(item, colindex) in columns" :key="colindex">
<td>
{{ item.label }}
</td>
<td v-for="(row, index) in tableData" :key="index" :class="[
row.qszt == '2' ? 'lishi' : '',
row.qszt == '0' ? 'linshi' : '',
item.prop == 'qszt' && row.qszt == '0' ? 'linshiIcon' : '',
item.prop == 'qszt' && row.qszt == '1' ? 'xianshiIcon' : '',
]">
<div class="icon" v-if="item.prop == 'qszt' && row.qszt == '0'">
正在办理
</div>
<div class="icon" v-if="item.prop == 'qszt' && row.qszt == '1'">
有效
</div>
<span v-if="item.prop == 'qszt'">
{{ getQsztName(row[item.prop]) }}
</span>
<span v-else> {{ row[item.prop] }}</span>
</td>
<td v-for="count in emptycolNum" :key="~count"></td>
</tr>
</table>
</div>
</div>
</div>
</template>
<script>
import { getJsydsyqList } from "@/api/registerBook.js";
import { datas } from "./qlxxFormData.js";
export default {
data () {
return {
title: "建设用地使用权、宅基地使用权登记信息",
qsztList: datas.columns().qsztList,
checkList: datas.columns().checkList,
//传递参数
propsParam: this.$attrs,
//列表数据
tableData: [],
//空列值个数
emptycolNum: datas.columns().emptycolNum,
//列名称对象
columns: datas.columns().JSYDSYQ,
};
},
created () {
this.loadData();
},
methods: {
loadData () {
getJsydsyqList({
bdcdyid: this.propsParam.bdcdyid,
qllx: this.propsParam.qllx,
qszt: this.checkList,
}).then((res) => {
if (res.code === 200) {
this.tableData = res.result;
if (this.tableData.length < datas.columns().emptycolNum) {
this.emptycolNum =
datas.columns().emptycolNum - this.tableData.length;
} else {
this.emptycolNum = 0;
}
}
});
},
checkChange () {
if (this.checkList.length === 0) {
this.tableData = [];
this.emptycolNum = datas.columns().emptycolNum;
} else {
this.loadData();
}
},
getQsztName (code) {
let name = "";
for (let item of this.qsztList) {
if (item.value == code) {
name = item.label;
break;
}
}
return name;
},
},
};
</script>
<style lang="scss" scoped>
@import "./qlxxCommon.scss";
</style>
<template>
<div class="djxxTable">
<div class="tableBox">
<div class="title">
{{ title }}
<div class="checkbox">
<el-checkbox-group v-model="checkList" @change="checkChange">
<el-checkbox v-for="item in qsztList" :key="item.value" :label="item.value">{{ item.label }}</el-checkbox>
</el-checkbox-group>
</div>
</div>
<div class="xxTableBox rollTable">
<table class="xxTable">
<tr v-for="(item, colindex) in columns" :key="colindex">
<td>
{{ item.label }}
</td>
<td v-for="(row, index) in tableData" :key="index" :class="[
row.qszt == '2' ? 'lishi' : '',
row.qszt == '0' ? 'linshi' : '',
item.prop == 'qszt' && row.qszt == '0' ? 'linshiIcon' : '',
]">
<div class="icon" v-if="item.prop == 'qszt' && row.qszt == '0'">
正在办理
</div>
<span v-if="item.prop == 'qszt'">
{{ getQsztName(row[item.prop]) }}
</span>
<span v-else> {{ row[item.prop] }}</span>
</td>
<td v-for="count in emptycolNum" :key="~count"></td>
</tr>
</table>
</div>
</div>
</div>
</template>
<script>
import { getFdcq2List } from "@/api/registerBook.js";
import { datas } from "./qlxxFormData.js";
export default {
data () {
return {
title: "房地产权登记信息(独幢、层、套、间房屋)",
qsztList: datas.columns().qsztList,
checkList: datas.columns().checkList,
//传递参数
propsParam: this.$attrs,
//列表数据
tableData: [],
//空列值个数
emptycolNum: datas.columns().emptycolNum,
//列名称对象
columns: datas.columns().FDCQ2,
};
},
created () {
this.loadData();
},
methods: {
loadData () {
getFdcq2List({
bdcdyid: this.propsParam.bdcdyid,
qllx: this.propsParam.qllx,
qszt: this.checkList,
}).then((res) => {
if (res.code === 200) {
this.tableData = res.result;
if (this.tableData.length < datas.columns().emptycolNum) {
this.emptycolNum =
datas.columns().emptycolNum - this.tableData.length;
} else {
this.emptycolNum = 0;
}
}
});
},
checkChange () {
if (this.checkList.length === 0) {
this.tableData = [];
this.emptycolNum = datas.columns().emptycolNum;
} else {
this.loadData();
}
},
getQsztName (code) {
let name = "";
for (let item of this.qsztList) {
if (item.value == code) {
name = item.label;
break;
}
}
return name;
},
},
};
</script>
<style lang="scss" scoped>
@import "./qlxxCommon.scss";
</style>
<template>
<div class="djxxTable">
<div class="tableBox">
<div class="title">
{{ title }}
<div class="checkbox">
<el-checkbox-group v-model="checkList" @change="checkChange">
<el-checkbox v-for="item in qsztList" :key="item.value" :label="item.value">{{ item.label }}</el-checkbox>
</el-checkbox-group>
</div>
</div>
<div class="xxTableBox rollTable">
<!-- 固定前三个 -->
<table class="xxTable">
<tr v-for="(item, colindex) in columns" :key="colindex">
<td>
{{ item.label }}
</td>
<td v-for="(row, index) in tableData" :key="index" :class="[
row.qszt == '2' ? 'lishi' : '',
row.qszt == '0' ? 'linshi' : '',
item.prop == 'qszt' && row.qszt == '0' ? 'linshiIcon' : '',
item.prop == 'qszt' && row.qszt == '1' ? 'xianshiIcon' : '',
]"
>
<div class="setbut" v-if="item.prop == 'cz'">
<el-button type="text" icon="el-icon-edit-outline" @click="editDialog(row)">编辑</el-button>
<el-button type="text" icon="el-icon-edit-outline" @click="AddDialog(row)">新增</el-button>
<el-button type="text" icon="el-icon-edit-outline" @click="deleteDialog(row)">删除</el-button>
</div>
<div class="icon" v-if="item.prop == 'qszt' && row.qszt == '0'">
正在办理
</div>
<div class="icon" v-if="item.prop == 'qszt' && row.qszt == '1'">
有效
</div>
<span v-if="item.prop == 'qszt'">
{{ getQsztName(row[item.prop]) }}
</span>
<span v-else> {{ row[item.prop] }}</span>
</td>
<td v-for="count in emptycolNum" :key="~count"></td>
</tr>
</table>
</div>
</div>
</div>
</template>
<script>
import { getJsydsyqList } from "@/api/registerBook.js";
import { datas } from "./qlxxFormData.js";
export default {
data () {
return {
title: "建设用地使用权、宅基地使用权登记信息",
qsztList: datas.columns().qsztList,
checkList: datas.columns().checkList,
//传递参数
propsParam: this.$attrs,
//列表数据
tableData: [],
//空列值个数
emptycolNum: datas.columns().emptycolNum,
//列名称对象
columns: datas.columns().JSYDSYQ,
};
},
created () {
this.loadData();
},
methods: {
loadData () {
getJsydsyqList({
bdcdyid: this.propsParam.bdcdyid,
qllx: this.propsParam.qllx,
qszt: this.checkList,
}).then((res) => {
if (res.code === 200) {
this.tableData = res.result;
console.log("this.tableData",this.tableData);
if (this.tableData.length < datas.columns().emptycolNum) {
this.emptycolNum =
datas.columns().emptycolNum - this.tableData.length;
} else {
this.emptycolNum = 0;
}
}
});
},
checkChange () {
if (this.checkList.length === 0) {
this.tableData = [];
this.emptycolNum = datas.columns().emptycolNum;
} else {
this.loadData();
}
},
getQsztName (code) {
let name = "";
for (let item of this.qsztList) {
if (item.value == code) {
name = item.label;
break;
}
}
return name;
},
AddDialog(row){
this.$popupDialog("新增", "djbBook/components/djbeditDialog", {
data: ''
})
},
editDialog(row){
this.$popupDialog("编辑", "djbBook/components/djbeditDialog", {
data: row
})
},
// 删除
deleteDialog(row){
console.log("row",row);
let that = this
this.$confirm('此操作将永久删除, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async () => {
// let bsmClmx = this.previewImg.imgList[this.previewImg.index].bsmClmx
// deleteClmx(bsmClmx).then(res => {
// if (res.code == 200) {
// that.$emit('updateList', res.result)
// that.$message({
// message: '删除成功!',
// type: 'success'
// })
// }
// })
that.$message({
message: '删除成功!',
type: 'success'
})
}).catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
})
})
}
},
};
</script>
<style lang="scss" scoped>
@import "./qlxxCommon.scss";
</style>
<template>
<div class="djxxTable">
<div class="tableBox">
<div class="title">
{{ title }}
<div class="checkbox">
<el-checkbox-group v-model="checkList" @change="checkChange">
<el-checkbox v-for="item in qsztList" :key="item.value" :label="item.value">{{ item.label }}</el-checkbox>
</el-checkbox-group>
</div>
</div>
<div class="xxTableBox">
<!-- 固定前三个 -->
<table class="xxTable">
<tr v-for="(item, colindex) in columns.slice(0, 3)" :key="colindex">
<td>
{{ item.label }}
</td>
<td v-for="(row, index) in tableData" :key="index" :class="[
row.qszt == '2' ? 'lishi' : '',
row.qszt == '0' ? 'linshi' : '',
item.prop == 'qszt' && row.qszt == '0' ? 'linshiIcon' : '',
item.prop == 'qszt' && row.qszt == '1' ? 'xianshiIcon' : '',
]">
<div class="icon" v-if="item.prop == 'qszt' && row.qszt == '0'">
正在办理
</div>
<div class="icon" v-if="item.prop == 'qszt' && row.qszt == '1'">
有效
</div>
<span v-if="item.prop == 'qszt'">
{{ getQsztName(row[item.prop]) }}
</span>
<span v-else> {{ row[item.prop] }}</span>
</td>
<td v-for="count in emptycolNum" :key="~count"></td>
</tr>
</table>
<table class="xxTable rollTable">
<tr v-for="(item, colindex) in columns.slice(3)" :key="colindex">
<td>
{{ item.label }}
</td>
<td v-for="(row, index) in tableData" :key="index" :class="[
row.qszt == '2' ? 'lishi' : '',
row.qszt == '0' ? 'linshi' : '',
item.prop == 'qszt' && row.qszt == '0' ? 'linshiIcon' : '',
]">
<div class="icon" v-if="item.prop == 'qszt' && row.qszt == '0'">
正在办理
</div>
<span v-if="item.prop == 'qszt'">
{{ getQsztName(row[item.prop]) }}
</span>
<span v-else> {{ row[item.prop] }}</span>
</td>
<td v-for="count in emptycolNum" :key="~count"></td>
</tr>
</table>
</div>
</div>
</div>
</template>
<script>
import { getNydsyqList } from "@/api/registerBook.js";
import { datas } from "./qlxxFormData.js";
export default {
data () {
return {
title: "农用地使用权登记信息",
qsztList: datas.columns().qsztList,
checkList: datas.columns().checkList,
//传递参数
propsParam: this.$attrs,
//列表数据
tableData: [],
//空列值个数
emptycolNum: datas.columns().emptycolNum,
//列名称对象
columns: datas.columns().NYDSYQ,
};
},
created () {
var qllx = this.$route.query.sqywbm.substr(0, 3)
if (qllx == 'A09') {
this.title = '土地经营权登记信息'
} else {
this.title = '农用地使用权登记信息'
}
this.loadData();
},
methods: {
loadData () {
getNydsyqList({
bdcdyid: this.propsParam.bdcdyid,
qllx: this.propsParam.qllx,
qszt: this.checkList,
}).then((res) => {
if (res.code === 200) {
this.tableData = res.result;
if (this.tableData.length < datas.columns().emptycolNum) {
this.emptycolNum =
datas.columns().emptycolNum - this.tableData.length;
} else {
this.emptycolNum = 0;
}
}
});
},
checkChange () {
if (this.checkList.length === 0) {
this.tableData = [];
this.emptycolNum = datas.columns().emptycolNum;
} else {
this.loadData();
}
},
getQsztName (code) {
let name = "";
for (let item of this.qsztList) {
if (item.value == code) {
name = item.label;
break;
}
}
return name;
},
},
};
</script>
<style lang="scss" scoped>
@import "./qlxxCommon.scss";
</style>
.djxxTable {
width: 100%;
height: 100%;
background: #fff;
color: #333;
.tableBox {
margin: 0 auto;
display: flex;
flex-wrap: wrap;
.title {
width: 100%;
font-weight: 700;
font-size: 16px;
text-align: center;
background: #e9e9e9;
height: 62px;
line-height: 62px;
position: relative;
margin: 0 3px;
.checkbox {
position: absolute;
right: 20px;
bottom: -16px;
height: 62px;
}
}
.xxTableBox {
overflow: scroll;
width: 100%;
}
.xxTable>tr:first-child th {
width: 140px;
}
.xxTable {
//border-spacing: 1px;
width: 100%;
// table-layout: fixed;
tr {
box-sizing: border-box;
}
tr>th {
border: 1px solid #ccc;
background: #F2F2F2;
color: #333333;
font-size: 16px;
height: 40px;
}
tr:nth-child(1) {
position: sticky;
top: 0px;
z-index: 3;
margin-top: -2px;
}
tr:nth-child(2) {
position: sticky;
top: 40px;
z-index: 3;
}
tr:nth-child(3) {
position: sticky;
top: 80px;
z-index: 3;
box-shadow: 0px 15px 10px -15px #409EFF;
}
tr td:first-child {
position: sticky;
left: 0;
z-index: 2;
margin-left: -2px;
}
th.linshi,
th.xianshi {
background: #464c5b;
}
th.lishi {
background: rgba(70, 76, 91, 0.8);
}
.one th {
height: 25px;
font-size: 14px;
}
th.linshi {
color: #fe9400;
}
.two th {
height: 45px;
p:nth-child(2) {
font-size: 14px;
}
}
.linshiIcon {
position: relative;
.icon {
position: absolute;
top: 12px;
right: -5px;
transform: rotate(45deg);
color: #fff;
font-size: 12px;
z-index: 10;
}
}
.linshiIcon::after {
content: "";
display: block;
width: 0;
height: 0;
border-width: 0px 0px 55px 55px;
border-style: none solid solid;
border-color: transparent transparent #fe9400;
position: absolute;
top: 0;
right: 0;
transform: rotate(-90deg);
}
.xianshiIcon {
position: relative;
.icon {
position: absolute;
top: 9px;
right: 5px;
transform: rotate(45deg);
color: #fff;
font-size: 12px;
z-index: 10;
}
}
.xianshiIcon::after {
content: "";
display: block;
width: 0;
height: 0;
border-width: 0px 0px 55px 55px;
border-style: none solid solid;
border-color: transparent transparent #67C23A;
position: absolute;
top: 0;
right: 0;
transform: rotate(-90deg);
}
tr {
display: flex;
}
tr td {
border: 1px solid rgb(227, 226, 226);
text-align: center;
height: 40px;
font-size: 13px;
width: 140px;
flex: 1;
width: 100%;
display: flex;
align-items: center;
justify-content: center;
min-width: 280px;
z-index: 1;
}
>tr:nth-child(odd) td {
background: #f2f2f2;
}
>tr:nth-child(even) td {
background: #f9f9f9;
}
td.linshi {
color: #fe9400;
}
tr>td.lishi {
color: #7f7f7f;
}
}
.rollTable {
margin-top: -2px;
display: block;
height: calc(100vh - 185px);
overflow-y: scroll;
margin-left: 2px;
}
}
}
\ No newline at end of file
import filter from '@/utils/filter.js'
class data extends filter {
constructor() {
super()
}
columns() {
return {
//空列值个数
emptycolNum: 3,
checkList: ["0", "1", "2"],
//权属状态集合
qsztList: [
{
value: "0",
label: "临时",
},
{
value: "1",
label: "现势",
},
{
value: "2",
label: "历史",
},
],
JSYDSYQ: [
{ prop:"cz",
label:"操作",
render: (h, scope) => {
return (
<div>
<el-button type="text" icon="el-icon-edit-outline" onClick={() => { vm.openDialog(scope.row) }}>登记薄</el-button>
<el-button type="text" icon="el-icon-film" onClick={() => { vm.handleLpbClick(scope.row) }}>楼盘表</el-button>
</div>
)
}
},
{
prop: "qszt",
label: "权属状态",
},
{
prop: "qllxmc",
label: "权利类型",
},
{
prop: "djlxmc",
label: "登记类型",
},
{
prop: "ssywh",
label: "上手业务号",
},
{
prop: "dah",
label: "档案号",
},
{
prop: "ywh",
label: "业务号",
},
{
prop: "bdcdyh",
label: "不动产单元号",
},
{
prop: "zl",
label: "坐落",
},
{
prop: "gyqk",
label: "共有情况",
},
{
prop: "qlrlx",
label: "权利人类型",
},
{
prop: "qlrmc",
label: "权利人",
},
{
prop: "qlrzjzl",
label: "证件种类",
},
{
prop: "qlrzjhm",
label: "证件号",
},
{
prop: "mj",
label: "使用权面积(m²)",
},
{
prop: "qlxzmc",
label: "权利性质",
},
{
prop: "ytmc",
label: "土地用途",
},
{
prop: "syqqzsj",
label: "使用权起止时间",
},
// {
// prop: "syqjssj",
// label: "使用权结束时间",
// },
// {
// prop: "tdsyqx",
// label: "土地使用期限",
// },
{
prop: "tdsyqx",
label: "土地使用期限",
},
{
prop: "qdjg",
label: "取得价格(万元)",
},
{
prop: "djyy",
label: "登记原因",
},
{
prop: "bdcqzh",
label: "不动产权证号",
},
{
prop: "djsj",
label: "登记时间",
},
{
prop: "dbr",
label: "登簿人",
},
{
prop: "fj",
label: "附记",
},
],
FDCQ2: [
{ prop:"cz",
label:"操作"
},
{
prop: "qszt",
label: "权属状态",
},
{
prop: "qllxmc",
label: "权利类型",
},
{
prop: "djlxmc",
label: "登记类型",
},
{
prop: "ssywh",
label: "上手业务号",
},
{
prop: "dah",
label: "档案号",
},
{
prop: "ywh",
label: "业务号",
},
{
prop: "bdcdyh",
label: "不动产单元号",
},
{
prop: "zl",
label: "坐落",
},
{
prop: "gyfs",
label: "共有情况",
},
{
prop: "qlrlx",
label: "权利人类型",
},
{
prop: "qlrmc",
label: "权利人",
},
{
prop: "qlrzjzl",
label: "证件种类",
},
{
prop: "qlrzjhm",
label: "证件号",
},
{
prop: "tdsyqr",
label: "土地使用权人",
},
{
prop: "dytdmj",
label: "独用土地面积(m²)",
},
{
prop: "fttdmj",
label: "分摊土地面积(m²)",
},
{
prop: "tdsyqzsj",
label: "土地使用期限",
},
{
prop: "syqqzsj",
label: "使用权起止时间",
},
{
prop: "fdcjyjg",
label: "房地产交易价格(万元)",
},
{
prop: "ytmc",
label: "规划用途",
},
{
prop: "fwxzmc",
label: "房屋性质",
},
{
prop: "fwjgmc",
label: "房屋结构",
},
{
prop: "szc",
label: "所在层",
},
{
prop: "zcs",
label: "总层数",
},
{
prop: "mj",
label: "建筑面积(m2)",
},
{
prop: "zyjzmj",
label: "专有建筑面积(m2)",
},
{
prop: "ftjzmj",
label: "分摊建筑面积(m2)",
},
{
prop: "jgsj",
label: "竣工时间",
},
{
prop: "djyy",
label: "登记原因",
},
{
prop: "bdcqzh",
label: "不动产权证号",
},
{
prop: "djsj",
label: "登记时间",
},
{
prop: "dbr",
label: "登簿人",
},
{
prop: "fj",
label: "附记",
},
],
NYDSYQ: [
{ prop:"cz",
label:"操作"
},
{
prop: "qszt",
label: "权属状态",
},
{
prop: "qllxmc",
label: "权利类型",
},
{
prop: "djlxmc",
label: "登记类型",
},
{
prop: "ssywh",
label: "上手业务号",
},
{
prop: "dah",
label: "档案号",
},
{
prop: "ywh",
label: "业务号",
},
{
prop: "bdcdyh",
label: "不动产单元号",
},
{
prop: "zl",
label: "坐落",
},
{
prop: "gyqk",
label: "共有情况",
},
{
prop: "qlrlx",
label: "权利人类型",
},
{
prop: "qlrmc",
label: "权利人",
},
{
prop: "qlrzjzl",
label: "证件种类",
},
{
prop: "qlrzjhm",
label: "证件号",
},
{
prop: "mj",
label: "使用权面积(m²)",
},
{
prop: "qlxzmc",
label: "权利性质",
},
{
prop: "ytmc",
label: "土地用途",
},
{
prop: "fbfdm",
label: "发包方代码",
},
{
prop: "fbfmc",
label: "发包方名称",
},
{
prop: "cbqzsj",
label: "承包起止时间",
},
{
prop: "cbqx",
label: "承包期限",
},
{
prop: "tdsyqxzmc",
label: "土地所有权性质",
},
{
prop: "syttlxmc",
label: "水域滩涂类型",
},
{
prop: "yzyfsmc",
label: "养殖业方式",
},
{
prop: "cyzl",
label: "草原质量",
},
{
prop: "syzcl",
label: "适宜载畜量",
},
{
prop: "ydyhflmc",
label: "用地用海分类",
},
{
prop: "djyy",
label: "登记原因",
},
{
prop: "bdcqzh",
label: "不动产权证号",
},
{
prop: "djsj",
label: "登记时间",
},
{
prop: "dbr",
label: "登簿人",
},
{
prop: "fj",
label: "附记",
},
],
DYAQ: [
{ prop:"cz",
label:"操作"
},
{
prop: "qszt",
label: "权属状态",
},
{
prop: "dybdclx",
label: "抵押不动产类型",
},
{
prop: "djlxmc",
label: "登记类型",
},
{
prop: "ssywh",
label: "上手业务号",
},
{
prop: "dah",
label: "档案号",
},
{
prop: "ywh",
label: "业务号",
},
{
prop: "bdcdyh",
label: "不动产单元号",
},
{
prop: "zl",
label: "在建建筑物坐落",
},
{
prop: "qlrmc",
label: "抵押权人",
},
{
prop: "qlrzjzl",
label: "抵押权人证件种类",
},
{
prop: "qlrzjhm",
label: "抵押权人证件号",
},
{
prop: "ywrmc",
label: "抵押人",
},
{
prop: "ywrzjzl",
label: "抵押人证件种类",
},
{
prop: "ywrzjhm",
label: "抵押人证件号",
},
{
prop: "dyfs",
label: "抵押方式",
render: (h, scope) => {
return (
<div>
<span v-show={scope.row.dyfs == '1'}>一般抵押权</span>
<span v-show={scope.row.dyfs == '2'}>最高额抵押权</span>
</div>
)
}
},
{
prop: "sfygdj",
label: "是否预告登记",
},
{
prop: "zjjzwdyfw",
label: "在建建筑物抵押范围",
},
{
prop: "dymj",
label: "抵押面积",
},
{
prop: "bdbzzqse",
label: "被担保主债权数额(万元)",
},
{
prop: "dbfw",
label: "担保范围",
},
{
prop: "zwlxqssj",
label: "债务履行起始时间",
},
{
prop: "zwlxjssj",
label: "债务履行结束时间",
},
{
prop: "zwlxqx",
label: "债务履行期限(债务确定期间)",
},
{
prop: "zgzqqdsshse",
label: "最高债权确定事实和数额",
},
{
prop: "sfczyd",
label: "是否存在禁止或限制转让抵押不动产的约定",
},
{
prop: "djyy",
label: "登记原因",
},
{
prop: "bdcqzh",
label: "不动产登记证明号",
},
{
prop: "fj",
label: "附记",
},
{
prop: "qlqtzk",
label: "权利其他状况",
},
{
prop: "djsj",
label: "登记时间",
},
{
prop: "dbr",
label: "登簿人",
},
{
prop: "djjg",
label: "登记机构",
},
{
prop: "zxywh",
label: "注销抵押业务号",
},
{
prop: "zxdyyy",
label: "注销抵押原因",
},
{
prop: "zxsj",
label: "注销登记时间",
},
{
prop: "zxdbr",
label: "登簿人",
},
],
DYIQ: [
{ prop:"cz",
label:"操作"
},
{
prop: "qszt",
label: "权属状态",
},
{
prop: "djlxmc",
label: "登记类型",
},
{
prop: "ssywh",
label: "上手业务号",
},
{
prop: "dah",
label: "档案号",
},
{
prop: "ywh",
label: "业务号",
},
{
prop: "gydbdcdyh",
label: "供役地不动产单元号",
},
{
prop: "gydqlr",
label: "供役地权利人",
},
{
prop: "gydqlrzjzl",
label: "供役地权利人证件种类",
},
{
prop: "xydbdcdyh",
label: "需役地不动产单元号",
},
{
prop: "xydzl",
label: "需役地坐落",
},
{
prop: "xydqlr",
label: "需役地权利人",
},
{
prop: "xydqlrzjzl",
label: "需役地权利人证件种类",
},
{
prop: "xydzjh",
label: "需役地证件号",
},
{
prop: "djyy",
label: "登记原因",
},
{
prop: "dyqnr",
label: "地役权内容",
},
{
prop: "qlqssj",
label: "权利起始时间",
},
{
prop: "qljssj",
label: "权利结束时间",
},
{
prop: "bdcdjzmh",
label: "不动产登记证明号",
},
{
prop: "qxdm",
label: "区县代码",
},
{
prop: "djjg",
label: "登记机构",
},
{
prop: "dbr",
label: "登簿人",
},
{
prop: "djsj",
label: "登记时间",
},
],
YGDJ: [
{ prop:"cz",
label:"操作"
},
{
prop: "qszt",
label: "权属状态",
},
{
prop: "ygdjzl",
label: "预告登记种类",
},
{
prop: "djlxmc",
label: "登记类型",
},
{
prop: "ssywh",
label: "上手业务号",
},
{
prop: "dah",
label: "档案号",
},
{
prop: "ywh",
label: "业务号",
},
{
prop: "bdcdyh",
label: "不动产单元号",
},
{
prop: "zl",
label: "坐落",
},
{
prop: "qlrmc",
label: "权利人",
},
{
prop: "qlrzjzl",
label: "证件种类",
},
{
prop: "qlrzjhm",
label: "证件号",
},
{
prop: "ywrmc",
label: "义务人",
},
{
prop: "ywrzjzl",
label: "证件种类",
},
{
prop: "ywrzjhm",
label: "证件号",
},
{
prop: "fwxz",
label: "房屋性质",
},
{
prop: "ghyt",
label: "规划用途",
},
{
prop: "fwzcs",
label: "房屋总层数",
},
{
prop: "fwszc",
label: "房屋所在层",
},
{
prop: "jzmj",
label: "建筑面积",
},
{
prop: "djyy",
label: "登记原因",
},
{
prop: "qdjg",
label: "取得价格/被担保主债权数额",
},
{
prop: "jedw",
label: "金额单位",
},
{
prop: "dbfw",
label: "担保范围",
},
{
prop: "sfczyd",
label: "是否存在禁止或限制转让抵押不动产的约定",
},
{
prop: "djsj",
label: "登记时间",
},
{
prop: "bdcqzh",
label: "不动产登记证明号",
},
{
prop: "dbr",
label: "登簿人",
},
{
prop: "zxywh",
label: "注销预告业务号",
},
{
prop: "zxyy",
label: "注销预告原因",
},
{
prop: "zxsj",
label: "注销时间",
}
],
CFDJ: [
{ prop:"cz",
label:"操作"
},
{
prop: "qszt",
label: "权属状态",
},
{
prop: "cflxmc",
label: "查封类型",
},
{
prop: "ssywh",
label: "上手业务号",
},
{
prop: "dah",
label: "档案号",
},
{
prop: "ywh",
label: "业务号",
},
{
prop: "bdcdyh",
label: "不动产单元号",
},
{
prop: "zl",
label: "坐落",
},
{
prop: "cfjg",
label: "查封机关",
},
{
prop: "qlrmc",
label: "不动产权利人",
},
{
prop: "qlrzjzl",
label: "证件种类",
},
{
prop: "qlrzjhm",
label: "证件号",
},
{
prop: "cfwh",
label: "查封文号",
},
{
prop: "cfwj",
label: "查封文件",
},
{
prop: "cfqssj",
label: "查封起始时间",
},
{
prop: "cfjssj",
label: "查封结束时间",
},
{
prop: "cfqx",
label: "查封期限",
},
{
prop: "cffw",
label: "查封范围",
},
{
prop: "djjg",
label: "登记机构",
},
{
prop: "dbr",
label: "登簿人",
},
{
prop: "djsj",
label: "登记时间",
},
{
prop: "zxywh",
label: "解封业务号",
},
{
prop: "jfjg",
label: "解封机关",
},
{
prop: "jfwh",
label: "解封文号",
},
{
prop: "jfwj",
label: "解封文件",
},
{
prop: "zxsj",
label: "解封登记时间",
},
{
prop: "zxdbr",
label: "解封登簿人",
},
],
YYDJ: [
{ prop:"cz",
label:"操作"
},
{
prop: "qszt",
label: "权属状态",
},
{
prop: "qllxmc",
label: "权利类型",
},
{
prop: "djlxmc",
label: "登记类型",
},
{
prop: "ssywh",
label: "上手业务号",
},
{
prop: "dah",
label: "档案号",
},
{
prop: "ywh",
label: "业务号",
},
{
prop: "bdcdyh",
label: "不动产单元号",
},
{
prop: "zl",
label: "坐落",
},
{
prop: "yyr",
label: "异议人",
},
{
prop: "zjzl",
label: "证件种类",
},
{
prop: "zjh",
label: "证件号",
},
{
prop: "yysx",
label: "异议事项",
},
{
prop: "bdcdjzmh",
label: "不动产登记证明号",
},
{
prop: "djjg",
label: "登记机构",
},
{
prop: "dbr",
label: "登簿人",
},
{
prop: "djsj",
label: "登记时间",
},
{
prop: "zxyyywh",
label: "注销异议业务号",
},
{
prop: "zxyyyy",
label: "注销异议原因",
},
{
prop: "zxyydbr",
label: "注销异议登簿人",
},
{
prop: "zxyydjsj",
label: "注销异议登记时间",
},
],
}
}
}
let datas = new data()
export {
datas
}
<template>
<div class="djxxTable">
<div class="tableBox">
<div class="title">
{{ title }}
<div class="checkbox">
<el-checkbox-group v-model="checkList" @change="checkChange">
<el-checkbox v-for="item in qsztList" :key="item.value" :label="item.value">{{ item.label }}</el-checkbox>
</el-checkbox-group>
</div>
</div>
<div class="xxTableBox rollTable">
<table class="xxTable">
<tr v-for="(item, colindex) in columns" :key="colindex">
<td>
{{ item.label }}
</td>
<td v-for="(row, index) in tableData" :key="index" :class="[
row.qszt == '2' ? 'lishi' : '',
row.qszt == '0' ? 'linshi' : '',
item.prop == 'qszt' && row.qszt == '0' ? 'linshiIcon' : '',
]">
<div class="icon" v-if="item.prop == 'qszt' && row.qszt == '0'">
正在办理
</div>
<span v-if="item.prop == 'qszt'">
{{ getQsztName(row[item.prop]) }}
</span>
<span v-else> {{ row[item.prop] }}</span>
</td>
<td v-for="count in emptycolNum" :key="~count"></td>
</tr>
</table>
</div>
</div>
</div>
</template>
<script>
import { getYgdjList } from "@/api/registerBook.js";
import { datas } from "./qlxxFormData.js";
export default {
data () {
return {
title: "预告登记信息",
qsztList: datas.columns().qsztList,
checkList: datas.columns().checkList,
//传递参数
propsParam: this.$attrs,
//列表数据
tableData: [],
//空列值个数
emptycolNum: datas.columns().emptycolNum,
//列名称对象
columns: datas.columns().YGDJ,
};
},
created () {
this.loadData();
},
methods: {
loadData () {
getYgdjList({
bdcdyid: this.propsParam.bdcdyid,
qllx: this.propsParam.qllx,
qszt: this.checkList,
}).then((res) => {
if (res.code === 200) {
this.tableData = res.result;
if (this.tableData.length < datas.columns().emptycolNum) {
this.emptycolNum =
datas.columns().emptycolNum - this.tableData.length;
} else {
this.emptycolNum = 0;
}
}
});
},
checkChange () {
if (this.checkList.length === 0) {
this.tableData = [];
this.emptycolNum = datas.columns().emptycolNum;
} else {
this.loadData();
}
},
getQsztName (code) {
let name = "";
for (let item of this.qsztList) {
if (item.value == code) {
name = item.label;
break;
}
}
return name;
},
},
};
</script>
<style lang="scss" scoped>
@import "./qlxxCommon.scss";
</style>
<template>
<div class="djxxTable">
<div class="tableBox">
<div class="title">
{{ title }}
<div class="checkbox">
<el-checkbox-group v-model="checkList" @change="checkChange">
<el-checkbox v-for="item in qsztList" :key="item.value" :label="item.value">{{ item.label }}</el-checkbox>
</el-checkbox-group>
</div>
</div>
<div class="xxTableBox rollTable">
<table class="xxTable">
<tr v-for="(item, colindex) in columns" :key="colindex">
<td>
{{ item.label }}
</td>
<td v-for="(row, index) in tableData" :key="index" :class="[
row.qszt == '2' ? 'lishi' : '',
row.qszt == '0' ? 'linshi' : '',
item.prop == 'qszt' && row.qszt == '0' ? 'linshiIcon' : '',
]">
<div class="icon" v-if="item.prop == 'qszt' && row.qszt == '0'">
正在办理
</div>
<span v-if="item.prop == 'qszt'">
{{ getQsztName(row[item.prop]) }}
</span>
<span v-else> {{ row[item.prop] }}</span>
</td>
<td v-for="count in emptycolNum" :key="~count"></td>
</tr>
</table>
</div>
</div>
</div>
</template>
<script>
import { getYydjList } from "@/api/registerBook.js";
import { datas } from "./qlxxFormData.js";
export default {
data () {
return {
title: "异议登记信息",
qsztList: datas.columns().qsztList,
checkList: datas.columns().checkList,
//传递参数
propsParam: this.$attrs,
//列表数据
tableData: [],
//空列值个数
emptycolNum: datas.columns().emptycolNum,
//列名称对象
columns: datas.columns().YYDJ,
};
},
created () {
this.loadData();
},
methods: {
loadData () {
getYydjList({
bdcdyid: this.propsParam.bdcdyid,
qllx: this.propsParam.qllx,
qszt: this.checkList,
}).then((res) => {
if (res.code === 200) {
this.tableData = res.result;
if (this.tableData.length < datas.columns().emptycolNum) {
this.emptycolNum =
datas.columns().emptycolNum - this.tableData.length;
} else {
this.emptycolNum = 0;
}
}
});
},
checkChange () {
if (this.checkList.length === 0) {
this.tableData = [];
this.emptycolNum = datas.columns().emptycolNum;
} else {
this.loadData();
}
},
getQsztName (code) {
let name = "";
for (let item of this.qsztList) {
if (item.value == code) {
name = item.label;
break;
}
}
return name;
},
},
};
</script>
<style lang="scss" scoped>
@import "./qlxxCommon.scss";
</style>
<!--
* @Description :宗地基本信息
* @Autor : miaofang
* @LastEditTime : 2023-05-31 13:59:27
-->
<template>
<div class="tableDivCss">
<table cellpadding="0" cellspacing="0" class="tableCss">
<tr>
<th colspan="5" class="title">宗地基本信息</th>
</tr>
<tr>
<td>单位</td>
<td colspan="4">{{ zdjbxx.mjdw | dictionary('A7') }}</td>
</tr>
<tr>
<td>不动产类型</td>
<td colspan="4">{{ bdclxList[zdjbxx.bdclx] }}</td>
</tr>
<tr>
<td>坐落</td>
<td colspan="4">{{ zdjbxx.zl }}</td>
</tr>
<tr>
<td rowspan="8">土地状况</td>
</tr>
<tr>
<td style="width:15%">宗地面积</td>
<td style="width:30%">{{ zdjbxx.zdmj }}</td>
<td style="width:15%">用途</td>
<td style="width:30%">{{ zdjbxx.ghytmc }}</td>
</tr>
<tr>
<td>等级</td>
<td>{{ zdjbxx.djmc }}</td>
<td>价格</td>
<td>{{ zdjbxx.jg }}</td>
</tr>
<tr>
<td>权利类型</td>
<td>{{ zdjbxx.qllxmc }}</td>
<td>权利性质</td>
<td>{{ zdjbxx.qlxzmc }}</td>
</tr>
<tr>
<td>权利设定方式</td>
<td>{{zdjbxx.qlsdfs | dictionary('A10')}}</td>
<td>容积率</td>
<td>{{ zdjbxx.rjl }}</td>
</tr>
<tr>
<td>建筑密度</td>
<td>{{ zdjbxx.jzmd }}</td>
<td>建筑限高</td>
<td>{{ zdjbxx.jzxg }}</td>
</tr>
<tr>
<td>图幅号</td>
<td>{{ zdjbxx.tfh }}</td>
<td>地籍号</td>
<td>{{ zdjbxx.djh }}</td>
</tr>
<tr>
<td>档案号</td>
<td>{{ zdjbxx.dah }}</td>
<td>地块代码</td>
<td>{{ zdjbxx.dkdm }}</td>
</tr>
<tr>
<td rowspan="5">宗地四至</td>
</tr>
<tr>
<td></td>
<td colspan="3">{{ zdjbxx.zdszd }}</td>
</tr>
<tr>
<td></td>
<td colspan="3">{{ zdjbxx.zdszn }}</td>
</tr>
<tr>
<td>西</td>
<td colspan="3">{{ zdjbxx.zdszx }}</td>
</tr>
<tr>
<td></td>
<td colspan="3">{{ zdjbxx.zdszb }}</td>
</tr>
<tr>
<td>登记时间</td>
<td colspan="2">{{ zdjbxx.bz }}</td>
<td>登簿人</td>
<td>{{ zdjbxx.bz }}</td>
</tr>
<tr>
<td>附记</td>
<td colspan="4">{{ zdjbxx.fj }}</td>
</tr>
<!-- <tr>
<td>状态</td>
<td colspan="2">{{ zdjbxx.zt }}</td>
<td>区县代码</td>
<td>{{ zdjbxx.qxdm }}</td>
</tr> -->
<tr v-if="showGroup">
<td rowspan="4">变化情况</td>
<!-- <table cellspacing="0" cellpadding="0" :width="bhqkTableWidth">
<tr v-for="(item, index) in bhqkColumns" :key="index">
<td class="bhqkTh">{{ item.label }}</td>
</tr>
</table> -->
</tr>
<tr v-if="showGroup">
<td>变化原因</td>
<td>变化内容</td>
<td>登记时间</td>
<td>登簿人</td>
</tr>
<!-- <tr >
<td>{{ zdbhqks[0].bhyy }}</td>
<td>{{ zdbhqks[0].bhnr }}</td>
<td>{{ zdbhqks[0].djsj }}</td>
<td>{{ zdbhqks[0].dbr }}</td>
</tr> -->
</table>
</div>
</template>
<script>
import store from '@/store/index.js'
import { getZdjjxxBybdcdyid } from "@/api/registerBook.js";
export default {
data () {
return {
bhqkColumns: [
{
prop: "ssywh",
label: "上手业务号",
},
{
prop: "zddm",
label: "宗地代码",
},
{
prop: "bhqzddm",
label: "变化前宗地代码",
},
{
prop: "bhnr",
label: "变化内容",
},
{
prop: "bhyy",
label: "变化原因",
},
{
prop: "djsj",
label: "登记时间",
},
{
prop: "dbr",
label: "登簿人",
},
{
prop: "fj",
label: "附记",
},
],
bhqkTableWidth: 745,
zdjbxx: {},
zdbhqks: [],
propsParam: this.$attrs,
showGroup: false,
bdclxList: ["", "宗地", "宗海", "自然幢", "多幢", "构筑物", "林权", "户"]
}
},
filters: {
dictionary: function (value, param) {
const foundItem = store.getters.dictData[param].find(item => item.dcode === String(value))
if (foundItem) {
return foundItem.dname
}
}
},
created () {
this.loadData()
},
methods: {
loadData () {
console.log("this.$attrs",this.$attrs);
console.log("this.propsParam",this.propsParam);
if(this.propsParam.bsmSldy){
console.log("宗地基本信息");
}else{
console.log("登记簿里宗地基本信息");
getZdjjxxBybdcdyid({ bdcdyid: this.propsParam.bdcdyid }).then((res) => {
if (res.code === 200) {
this.zdjbxx = res.result.zdjbxx;
this.zdbhqks = res.result.zdbhqkList;
if (this.zdbhqks != null && this.zdbhqks.length > 0) {
this.showGroup = true;
}
}
})
}
}
}
}
</script>
<style lang="scss" scoped>
@import "~@/styles/tablecss.scss";
</style>
<!--
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-05-17 10:41:09
-->
<template>
<div>
<lb-table :column="column" border :maxHeight="300" heightNumSetting :pagination="false" :key="key" :data="tableDataList">
</lb-table>
<addJtcy v-model="dialog" :details="details" @updateDetail="updateDetail" />
</div>
</template>
<script>
import addJtcy from './addJtcy.vue'
import { mapGetters } from 'vuex'
export default {
components: {
addJtcy
},
computed: {
...mapGetters(["dictData"]),
},
props: {
tableData: {
type: Array,
default: function () {
return []
}
},
gyfs: {
type: String,
default: '1'
}
},
data () {
return {
key: 0,
dataIndex: 0,
dialog: false,
details: {},
tableDataList: [],
qlrCommonTable: [
{
width: '50',
renderHeader: (h, scope) => {
return <div> {
this.$route.query.viewtype == 1 ? '序号' : <i class="el-icon-plus pointer" onClick={() => { this.addClick() }}></i>
}
</div>
},
render: (h, scope) => {
return (
<div>
{
this.$route.query.viewtype == 1 ? <span>{scope.$index + 1}</span> :
<i class="el-icon-minus pointer" onClick={() => { this.deleClick(scope.$index, scope.row) }}></i>
}
</div>
)
}
},
{
label: '身份证读卡器',
align: 'center',
render: (h, scope) => {
return <el-button type="text" icon="el-icon-tickets" onClick={() => { this.readClick(scope) }}>读取</el-button>
}
},
{
prop: "cyxm",
label: "成员姓名"
},
{
prop: "sfzhm",
label: "身份证号码"
},
{
prop: "dh",
label: "联系电话"
},
{
label: '修改',
render: (h, scope) => {
return (
<div>
{
this.$route.query.viewtype == 1 ? <el-button
icon="el-icon-view"
type="text"
onClick={() => { this.queryViewClick(scope.$index, scope.row) }}>查看</el-button> : <el-button
icon="el-icon-edit-outline"
type="text"
onClick={() => { this.editClick(scope.$index, scope.row) }}>编辑</el-button>
}
</div>
)
}
}
],
column: this.qlrCommonTable
}
},
watch: {
tableData: {
handler: function (val, oldVal) {
let that = this
if (val.length == 0 || !val) {
that.tableDataList = _.cloneDeep([{
sqrmc: '',
dlrzjlx: '',
dlrzjh: '',
fr: ''
}])
} else {
that.tableDataList = _.cloneDeep(val)
}
},
immediate: true,
deep: true
},
gyfs: {
handler (newVal, oldValue) {
let dataList = _.cloneDeep(this.qlrCommonTable)
if (newVal == '1') {
this.column = _.cloneDeep(dataList).slice(1, dataList.length)
} else {
this.column = dataList
}
},
immediate: true
}
},
methods: {
updateDetail (value) {
this.tableDataList[this.dataIndex] = value
this.key++
this.$emit('upDateJtcyList', this.tableDataList)
},
// 新增
addClick () {
this.dialog = true
},
// 删除
deleClick (index, row) {
this.tableData.splice(index, 1)
},
// 身份证读取
readClick () { },
// 修改
editClick (index, row) {
console.log(row, 'rowrowrowrowrow');
this.dataIndex = index
this.dialog = true
this.details = row
},
queryViewClick () {
this.dialog = true
}
}
}
</script>
<style scoped lang='scss'>
</style>
\ No newline at end of file
<!--
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-05-17 10:40:28
-->
<template>
<dialogBox title="家庭成员信息" width="60%" isMain v-model="myValue" :isFullscreen="false" @submitForm="submitForm"
@closeDialog="closeDialog">
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="120px">
<el-row>
<el-col :span="8">
<el-form-item label="姓名/名称" prop="cyxm">
<el-input v-model="ruleForm.cyxm" maxlegth="15"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="家庭关系" prop="jtgxdm">
<el-select clearable v-model="ruleForm.jtgxdm" class="width100" placeholder="请选择">
<el-option v-for="item in jtgx" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="承包方代码" prop="cbfdm">
<el-input v-model="ruleForm.cbfdm" maxlegth="15"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="身份证号码" prop="zjh">
<el-input v-model="ruleForm.sfzhm" maxlength="15" oninput="this.value=this.value.replace(/[^\X0-9]/g,'')"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="联系电话" prop="dh">
<el-input v-model="ruleForm.dh" maxlength="11" oninput="value=value.replace(/[^\d]/g,'')"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="性别">
<el-select clearable v-model="ruleForm.xb" class="width100" placeholder="请选择">
<el-option v-for="item in dictData['A43']" :key="item.dcode" :label="item.dname" :value="item.dcode">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="发证机关">
<el-input v-model="ruleForm.fzjg"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="所属行业">
<el-input v-model="ruleForm.sshy"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="国家/地区">
<el-input v-model="ruleForm.gj"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="户籍所在省市">
<el-input v-model="ruleForm.hjszss"></el-input>
</el-form-item>
</el-col>
<el-col :span="16">
<el-form-item label="地址">
<el-input v-model="ruleForm.dz"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="邮编">
<el-input v-model="ruleForm.yb"></el-input>
</el-form-item>
</el-col>
<el-col :span="16">
<el-form-item label="工作单位">
<el-input v-model="ruleForm.gzdw"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="电子邮件">
<el-input v-model="ruleForm.dzyj"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="是否共有人">
<el-input v-model="ruleForm.gzdw"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
</dialogBox>
</template>
<script>
import { mapGetters } from 'vuex'
export default {
props: {
value: { type: Boolean, default: false },
details: { type: Object, default: {} }
},
computed: {
...mapGetters(["dictData"]),
},
data () {
return {
myValue: this.value,
jtgx: [
{ value: '0', label: '本人或户主' },
{ value: '1', label: '配偶' },
{ value: '2', label: '子' },
{ value: '3', label: '女' },
{ value: '4', label: '子孙、孙女、外孙子、外孙女' },
{ value: '5', label: '父母' },
{ value: '6', label: '祖父母、外祖父母' },
{ value: '7', label: '兄、弟、姐、妹' },
{ value: '8', label: '其他' },
],
ruleForm: {
qlrlx: '',
sqrmc: '',
zjzl: '',
zjh: '',
dh: '',
xb: '',
frmc: '',
gjdq: '',
szss: '',
dz: '',
yb: '',
fzjg: '',
dzyj: '',
qlbl: '',
gzdw: '',
dljg: '',
dlrxm: '',
dlrzjlx: '',
dlrzjh: ''
},
rules: {
qlrlx: [
{ required: true, message: '权利人类型', trigger: 'change' }
],
sqrmc: [
{ required: true, message: '姓名/名称', trigger: 'blur' }
],
zjzl: [
{ required: true, message: '证件种类', trigger: 'change' }
],
zjh: [
{ required: true, message: '证件号', trigger: 'blur' }
]
}
}
},
watch: {
value (val) {
this.myValue = _.cloneDeep(val)
},
details: {
handler: function (val, oldVal) {
this.ruleForm = val
},
deep: true
}
},
methods: {
closeDialog () {
this.$emit("input", false);
this.$refs['ruleForm'].resetFields();
},
submitForm () {
this.$emit("input", false);
this.$emit("updateDetail", _.cloneDeep(this.ruleForm));
// this.$refs['ruleForm'].validate((valid) => {
// if (valid) {
// this.$message({
// message: '修改成功!',
// type: 'success'
// })
// } else {
// this.$message.error('请完善必填项');
// }
// })
}
}
}
</script>
<style scoped lang="scss">
.submit-button {
text-align: center;
height: 52px;
padding-top: 10px;
background-color: #fff;
}
</style>
<!--
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-04-26 16:05:28
-->
<template>
<div class='batchDel'>
<lb-table :column="columns" :data="formData.dataList" :maxHeight="460" :heightNumSetting="true" :pagination="false"
@selection-change="handleSelectionChange">
</lb-table>
<div class="text-center">
<el-button @click="$popupCacel">取消</el-button>
<el-button type="primary" @click="submitdelclick" plain>确定</el-button>
</div>
</div>
</template>
<script>
import { deleteFlow } from "@/api/ywbl.js"
import store from '@/store/index.js'
export default {
components: {},
props: {
formData: {
type: Object,
default: {}
}
},
data () {
return {
columns: [
{
type: 'selection',
label: '全选'
},
{
label: '序号',
type: 'index',
width: '50',
},
{
prop: "bdcdyh",
label: "不动产单元号",
},
{
prop: "zl",
label: "坐落",
},
],
dataList: [],
selectBdcdy: [],
}
},
methods: {
// 批量删除确定按钮
submitdelclick () {
var formdata = new FormData();
formdata.append("bsmSldyList", this.selectBdcdy);
formdata.append("bsmSlsq", this.formData.bsmSlsq);
deleteFlow(formdata).then(res => {
if (res.code == 200) {
this.$popupCacel();
store.dispatch('user/refreshPage', true);
this.$message.success("删除成功");
} else {
this.$message.error(res.message)
}
})
},
// 批量删除勾选事件
handleSelectionChange (e) {
this.selectBdcdy = [];
e.forEach((item, index) => {
this.selectBdcdy.push(item.bsmSldy)
})
}
}
}
</script>
<style scoped lang='scss'>
</style>
No preview for this file type
<!--
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-05-17 10:40:48
-->
<template>
<lb-table :column="column" :maxHeight="200" :heightNumSetting="true" :pagination="false" :key="key" :data="tableData">
</lb-table>
</template>
<script>
import addQlr from './dialog/addQlr.vue'
import { mapGetters } from 'vuex'
export default {
components: {
addQlr
},
computed: {
...mapGetters(["dictData"]),
},
props: {
tableData: {
type: Array,
default: function () {
return []
}
},
gyfs: {
type: String,
default: '1'
}
},
data () {
return {
key: 0,
dataIndex: 0,
dialog: false,
details: {},
tableDataList: [],
qlrCommonTable: [
{
label: '序号',
type: 'index',
width: '50',
render: (h, scope) => {
return (
<div>
{scope.$index + 1}
</div>
)
}
},
{
prop: "qllxmc",
label: "权利类型"
},
{
prop: "bdcqzh",
label: "不动产权证号"
},
{
prop: "qlrmc",
label: "权利人"
},
{
prop: "ytmc",
label: "用途"
},
{
prop: "mj",
label: "面积"
},
{
prop: "zl",
label: "坐落"
},
],
column: this.qlrCommonTable
}
},
watch: {
tableData: {
handler: function (val, oldVal) {
let that = this
if (val.length == 0 || !val) {
that.tableDataList = _.cloneDeep([{
sqrmc: '',
dlrzjlx: '',
dlrzjh: '',
fr: ''
}])
} else {
that.tableDataList = _.cloneDeep(val)
}
},
immediate: true,
deep: true
},
gyfs: {
handler (newVal, oldValue) {
let dataList = _.cloneDeep(this.qlrCommonTable)
if (newVal == '1') {
this.column = _.cloneDeep(dataList).slice(1, dataList.length)
} else if ((newVal == '2')) {
this.column = dataList
} else {
this.column = _.cloneDeep(dataList)
this.column.splice(
2, 0, {
prop: "fs",
label: "份数"
})
}
},
immediate: true
}
},
methods: {
}
}
</script>
<style scoped lang='scss'>
</style>
\ No newline at end of file
<!--
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-05-17 10:40:46
-->
<template>
<div class="clxx">
<div class="left">
<div v-for="item in menuList" :key="item.id" :class="['item', checkedId == item.id ? 'active' : '']"
@click="menuClick(item)">
{{ item.label }}
</div>
</div>
<div class="right">
<!-- 材料目录明细 -->
<div class="clmlmx-box" v-if="checkedId == '1'">
<div class="title">申请材料目录</div>
<lb-table :column="column" :key="key" :heightNum="150" :pagination="false" :data="tableData">
</lb-table>
</div>
<!-- 材料预览 -->
<div class="clyl-box" v-else>
<div class="menu-tree">
<div class="item">
材料目录({{tableData.length}})
<div>
<div v-for="(item,index) in tableData" :key="item.bsmSj"
:class="['child', treeCheckId == item.bsmSj ? 'checked' : '']" @click="treeClick(item,index)">
<span v-if="item.isrequired==1" class="required">必选</span>
{{ item.sjmc }}
<span class="cl_number">({{item.children.length}})</span>
</div>
</div>
</div>
</div>
<image-preview ref='imageRef' :previewImg="previewImg" @updateList="updateList" @nextPriview="nextPriview"
@prevPriview="prevPriview" />
</div>
</div>
<clxxAddDialog v-model="isDialog" />
</div>
</template>
<script>
import { mapGetters } from "vuex";
import clxxAddDialog from "./dialog/clxxAddDialog.vue";
import imagePreview from '@/views/components/imagePreview.vue'
import { InitClml, saveClml, deleteSjClml, moveClml } from "@/api/clxx.js";
export default {
components: { clxxAddDialog, imagePreview },
data () {
return {
isDialog: false,
menuList: [
{
id: "1",
label: "材料目录明细",
},
{
id: "2",
label: "材料预览",
},
],
iclass: "",
// 材料目录选中
treeCheckIndex: 0,
treeCheckId: "",
checkedId: "1",
column: [
{
width: "50",
renderHeader: (h, scope) => {
return (
<div>
{
this.$route.query.viewtype == 1 ? '序号' :
<i
class="el-icon-plus pointer"
onClick={() => {
this.handleAdd()
}}
></i>
}
</div>
)
},
render: (h, scope) => {
// 新建的材料,可删除
// v-show='scope.row.sfxjcl == 1'
return (
<div>
{
this.$route.query.viewtype == 1 ? <span>{scope.$index + 1}</span> :
<i
class="el-icon-minus pointer"
onClick={() => {
this.handleDelete(scope.$index, scope.row);
}}
></i>
}
</div>
)
}
},
{
prop: "isrequired",
label: "是否必选",
width: "50",
render: (h, scope) => {
if (scope.row.sfxjcl === "1") {
return (
<div>
<span>可选</span>
</div>
);
}
else {
return (
<div>
<span>必选</span>
</div>
);
}
},
},
{
prop: "sjmc",
label: "材料名称",
},
{
prop: "sjlx",
label: "材料类型",
width: "80",
render: (h, scope) => {
return (
<div>
<span>{this.dicStatus(scope.row.sjlx, "A40")}</span>
</div>
);
},
},
{
prop: "sjsl",
label: "份数",
width: "50"
},
{
prop: "smzt",
label: "扫描状态",
width: "80",
render: (h, scope) => {
if (scope.row.children.length > 0) {
return (
<div>
<span>已扫描</span>
</div>
);
} else {
return (
<div>
<span>未扫描</span>
</div>
);
}
},
},
{
prop: "ys",
label: "扫描页数",
width: "50"
},
{
label: "操作",
width: "80",
render: (h, scope) => {
return (
<div>
<el-button
type="text"
disabled={scope.$index == 0}
onClick={() => {
this.moveUpward(scope.$index, scope.row);
}}
>
上移
</el-button>
<el-button
type="text"
disabled={scope.$index + 1 == this.tableData.length}
onClick={() => {
this.moveDown(scope.$index, scope.row);
}}
>
下移
</el-button>
</div>
);
},
},
],
key: 0,
tableData: [],
previewImg: {
// 收件标识码
bsmSj: '',
bsmSlsq: this.$parent.bsmSlsq,
index: 0,
selectedIndex: 0,
imgList: []
}
}
},
computed: {
...mapGetters(["dictData"])
},
created () {
this.clmlInitList()
},
methods: {
// 自动预览
nextPriview () {
if (this.treeCheckIndex < this.tableData.length) {
this.treeCheckIndex++
this.treeCheckId = this.tableData[this.treeCheckIndex].bsmSj
this.previewImg.index = 0
this.previewImg.imgList = this.tableData[this.treeCheckIndex].children
this.previewImg.bsmSj = this.tableData[this.treeCheckIndex].bsmSj
}
},
prevPriview () {
if (this.treeCheckIndex >= 1) {
this.treeCheckIndex--
this.treeCheckId = this.tableData[this.treeCheckIndex].bsmSj
this.previewImg.index = this.previewImg.imgList.length
this.previewImg.imgList = this.tableData[this.treeCheckIndex].children
this.previewImg.bsmSj = this.tableData[this.treeCheckIndex].bsmSj
}
},
// 材料目录明细初始化
clmlInitList () {
return new Promise(resolve => {
this.unitData = this.$parent.unitData;
var formdata = new FormData();
formdata.append("bsmSldy", this.unitData[0]?.bsmSldy);
formdata.append("bsmSlsq", this.$parent.bsmSlsq);
InitClml(formdata).then((res) => {
if (res.result.code == 200) {
resolve(res.code)
if (res.result.result && res.result.result.length > 0) {
this.tableData = res.result.result;
this.treeCheckId = this.tableData[0].bsmSj;
this.title = this.tableData[0].sjmc;
this.titleYs = 1;
this.titleNum = this.tableData[0].children.length;
this.previewImg.imgList = this.tableData[0]?.children;
this.previewImg.bsmSj = this.tableData[0]?.bsmSj;
}
} else {
this.$message.error(res.result.message)
}
})
})
},
updateList (val) {
let that = this
if (val != null) { //删除最后一张图片时 val=null
this.tableData.forEach(item => {
if (item.bsmSj === val.bsmSj) {
item.children = val.children
}
})
this.previewImg.imgList = _.cloneDeep(val.children)
if (this.previewImg.index == this.previewImg.imgList.length) {
this.previewImg.index = this.previewImg.index - 1
}
} else {
this.previewImg.imgList = []
this.tableData.forEach((item, index) => {
if (this.treeCheckId == item.bsmSj) {
item.children = []
that.treeCheckIndex = index
}
})
}
},
// 左侧菜单点击
menuClick (item) {
this.checkedId = item.id
},
// 添加材料目录
handleAdd () {
this.isDialog = true;
},
// 上移
moveUpward (index, row) {
let obj = {
xh: row.xh,
bsmSlsq: row.bsmSlsq,
moveDirection: "UP",
};
// 接口待调
moveClml(obj).then(async (res) => {
if (res.code == 200) {
let res = await this.clmlInitList()
if (res == 200) this.$message({
message: '上移成功',
type: 'success'
})
} else {
this.$message.error(res.message);
}
})
},
// 下移
moveDown (index, row) {
let obj = {
xh: row.xh,
bsmSlsq: row.bsmSlsq,
moveDirection: "DOWN",
}
// 接口待调
moveClml(obj).then(async (res) => {
if (res.code == 200) {
let res = await this.clmlInitList()
if (res == 200) this.$message({
message: '下移成功',
type: 'success'
})
} else {
this.$message.error(res.message);
}
})
},
// 新增弹窗保存
addSave (data) {
let obj = {
bsmSlsq: this.$parent.bsmSlsq,
isrequired: "1",
sjmc: data.clmc,
sjsl: 0,
smzt: '',
ys: 0,
sjlx: data.cllx,
sfxjcl: "1", // 是否必选
};
saveClml(obj).then(async (res) => {
if (res.code == 200) {
let res = await this.clmlInitList()
if (res == 200) this.$message({
message: "新增成功",
type: "success",
})
}
});
},
// 材料目录删除
handleDelete (index, row) {
let that = this
this.$confirm('此操作将永久删除该 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
deleteSjClml({ sjBsm: row.bsmSj }).then(async (res) => {
if (res.code == 200) {
let res = await that.clmlInitList()
if (res == 200) that.$message({
message: "删除成功",
type: "success",
})
}
})
}).catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
})
})
},
// 材料目录点击选中
treeClick (item, index) {
this.previewImg.index = 0
this.treeCheckId = item?.bsmSj
this.treeCheckIndex = index
this.previewImg.imgList = item?.children
this.previewImg.bsmSj = item?.bsmSj
},
// 小图片点击
imgClick (item, index) {
this.showImg = item;
this.titleYs = index + 1;
},
// 字典
dicStatus (val, code) {
let data = this.$store.getters.dictData[code],
name = "暂无";
if (data) {
data.map((item) => {
if (item.dcode == val) {
name = item.dname;
}
});
return name;
}
},
},
};
</script>
<style scoped lang='scss'>
@import "~@/styles/mixin.scss";
.active {
background: $light-blue !important;
color: #fff;
}
.required {
font-size: 12px;
color: $pink;
float: left;
}
.cl_number {
float: right;
}
.clxx {
width: 100%;
display: flex;
padding-left: 5px;
height: calc(100vh - 125px);
.left {
display: flex;
flex-direction: column;
justify-content: space-between;
.item {
width: 28px;
height: 49%;
@include flex-center;
background-color: #e4e7ed;
border-bottom-right-radius: 10px;
padding: 5px;
cursor: pointer;
transition: all 0.3s;
&:hover {
@extend .active;
}
}
}
.right {
width: 100%;
height: 100%;
.clmlmx-box {
margin: 0 auto;
.title {
text-align: center;
height: 60px;
line-height: 60px;
border: 1px solid #dfe6ec;
font-size: 20px;
background: #81d3f81a;
margin-bottom: -1px;
}
}
.clyl-box {
width: 100%;
height: 100%;
display: flex;
.menu-tree {
width: 20%;
min-width: 160px;
height: 100%;
margin-right: 10px;
border-right: 1px dotted #d9d9d9;
padding: 0 15px;
.item {
line-height: 30px;
padding-top: 5px;
border-bottom: 1px solid #e8e8e8;
font-size: 16px;
text-align: center;
color: $light-blue;
.itemIcon {
float: right;
line-height: 60px;
cursor: pointer;
}
.child {
line-height: 32px;
border-bottom: 1px solid #e8e8e8;
padding-left: 10px;
color: #6b6b6b;
cursor: pointer;
box-sizing: border-box;
border-radius: 6px;
line-height: 20px;
transition: all 0.3s;
padding: 8px 0;
}
.child:hover {
color: $light-blue;
transform: scale(1.1);
}
.checked {
border: 1px solid $light-blue;
color: $light-blue;
}
}
}
.clyl-img {
width: 75%;
height: 100%;
background: #f3f4f7;
margin: 0 auto;
position: relative;
}
}
}
}
</style>
\ No newline at end of file
<!--
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-05-17 10:40:38
-->
<template>
<div class="clxx">
<div class="right">
<!-- 材料预览 -->
<div class="clyl-box">
<div class="menu-tree">
<el-button type="primary" native-type="submit" @click="viewDetail" style="width:100%;margin-top:10px;">查看明细</el-button>
<div class="item">
材料目录({{tableData.length}})
<div style="margin-top:10px">
<div style="text-align: center;line-height:20px;color:black;font-size:14px" v-if="tableData.length == 0">暂无数据</div>
<div v-for="(item,index) in tableData" :key="item.bsmSj"
:class="['child', treeCheckId == item.bsmSj ? 'checked' : '']" @click="treeClick(item,index)">
<span v-if="item.isrequired==1" class="required">必选</span>
{{ item.sjmc }}
<span class="cl_number">({{item.children ? item.children.length : 0}})</span>
</div>
</div>
</div>
<el-button type="primary" native-type="submit" style="width:100%" @click="handleAdd()" v-if="!this.$route.query.viewtype">新增</el-button>
</div>
<image-preview ref='imageRef' :previewImg="previewImg" @updateList="updateList" @nextPriview="nextPriview"
@prevPriview="prevPriview" />
</div>
</div>
<clxxAddDialog v-model="isDialog" />
<!-- <clxxDetailDialog v-model="detailDialog" :data="tableData" /> -->
</div>
</template>
<script>
import { mapGetters } from "vuex";
import clxxAddDialog from "./dialog/clxxAddDialog.vue";
import clxxDetailDialog from "./dialog/clxxDetailDialog.vue";
import imagePreview from '@/views/components/imagePreview.vue'
import { InitClml, saveClml, deleteSjClml, moveClml } from "@/api/clxx.js";
import { popupDialog } from "@/utils/popup.js";
export default {
components: { clxxAddDialog, imagePreview, clxxDetailDialog },
data () {
return {
isDialog: false,
iclass: "",
// 材料目录选中
treeCheckIndex: 0,
treeCheckId: "",
key: 0,
tableData: [],
previewImg: {
// 收件标识码
bsmSj: '',
bsmSlsq: this.$parent.bsmSlsq,
index: 0,
selectedIndex: 0,
imgList: []
}
}
},
computed: {
...mapGetters(["dictData"])
},
created () {
this.clmlInitList(1)
},
methods: {
// 自动预览
nextPriview () {
if (this.treeCheckIndex < this.tableData.length) {
this.treeCheckIndex++
this.treeCheckId = this.tableData[this.treeCheckIndex].bsmSj
this.previewImg.index = 0
this.previewImg.imgList = this.tableData[this.treeCheckIndex].children
this.previewImg.bsmSj = this.tableData[this.treeCheckIndex].bsmSj
}
},
prevPriview () {
if (this.treeCheckIndex >= 1) {
this.treeCheckIndex--
this.treeCheckId = this.tableData[this.treeCheckIndex].bsmSj
this.previewImg.index = this.previewImg.imgList.length
this.previewImg.imgList = this.tableData[this.treeCheckIndex].children
this.previewImg.bsmSj = this.tableData[this.treeCheckIndex].bsmSj
}
},
// 材料目录明细初始化
clmlInitList (type) {
//type 1:列表初始化 2:新增材料
return new Promise(resolve => {
this.unitData = this.$parent.unitData;
var formdata = new FormData();
formdata.append("bsmSldy", this.unitData[0]?.bsmSldy);
formdata.append("bsmSlsq", this.$parent.bsmSlsq);
InitClml(formdata).then((res) => {
if (res.code == 200) {
resolve(res.code)
if (res.result && res.result.length > 0) {
this.tableData = res.result;
if (type == 1) {
this.treeClick(this.tableData[0], 0);
} else {
//新增材料后刷新列表焦点置于新增的对象上
this.treeClick(this.tableData[this.tableData.length - 1], this.tableData.length - 1);
}
}
} else {
this.$message.error(res.message)
}
})
})
},
setChecked (item) {
this.treeCheckId = item.bsmSj;
this.title = item.sjmc;
this.titleYs = 1;
this.titleNum = item.children.length;
this.previewImg.imgList = item.children;
this.previewImg.bsmSj = item.bsmSj;
},
updateList (val) {
let that = this
if (val != null) { //删除最后一张图片时 val=null
this.tableData.forEach(item => {
if (item.bsmSj === val.bsmSj) {
item.children = val.children
}
})
this.previewImg.imgList = _.cloneDeep(val.children)
if (this.previewImg.index == this.previewImg.imgList.length) {
this.previewImg.index = this.previewImg.index - 1
}
} else {
this.previewImg.imgList = []
this.tableData.forEach((item, index) => {
if (this.treeCheckId == item.bsmSj) {
item.children = []
that.treeCheckIndex = index
}
})
}
},
// 添加材料目录
handleAdd () {
this.isDialog = true;
},
// 新增弹窗保存
addSave (data) {
let obj = {
bsmSlsq: this.$parent.bsmSlsq,
isrequired: "1",
sjmc: data.clmc,
sjsl: 0,
smzt: '',
ys: 0,
sjlx: data.cllx,
sfxjcl: "1", // 是否必选
};
saveClml(obj).then(async (res) => {
if (res.code == 200) {
let res = await this.clmlInitList(2)
if (res == 200) this.$message({
message: "新增成功",
type: "success",
})
}
});
},
// 材料目录点击选中
treeClick (item, index) {
this.previewImg.index = 0
this.treeCheckId = item?.bsmSj
this.treeCheckIndex = index
this.previewImg.imgList = item?.children
this.previewImg.bsmSj = item?.bsmSj
},
// 小图片点击
imgClick (item, index) {
this.showImg = item;
this.titleYs = index + 1;
},
// 字典
dicStatus (val, code) {
let data = this.$store.getters.dictData[code],
name = "暂无";
if (data) {
data.map((item) => {
if (item.dcode == val) {
name = item.dname
}
});
return name
}
},
//查看明细
viewDetail () {
this.$popupDialog("查看明细", "workflow/components/dialog/clxxDetailDialog", {
data: this.tableData
}, "60%")
},
//设置tableData
setTableData (tableData) {
this.$nextTick(res => {
this.tableData = tableData;
})
},
},
};
</script>
<style scoped lang='scss'>
@import "~@/styles/mixin.scss";
.active {
background: $light-blue !important;
color: #fff;
}
.required {
font-size: 12px;
color: $pink;
float: left;
}
.cl_number {
float: right;
}
.clxx {
width: 100%;
display: flex;
padding-left: 5px;
height: calc(100vh - 125px);
.left {
display: flex;
flex-direction: column;
justify-content: space-between;
.item {
width: 28px;
height: 49%;
@include flex-center;
background-color: #e4e7ed;
border-bottom-right-radius: 10px;
padding: 5px;
cursor: pointer;
transition: all 0.3s;
&:hover {
@extend .active;
}
}
}
.right {
width: 100%;
height: 100%;
.clmlmx-box {
margin: 0 auto;
.title {
text-align: center;
height: 60px;
line-height: 60px;
border: 1px solid #dfe6ec;
font-size: 20px;
background: #81d3f81a;
margin-bottom: -1px;
}
}
.clyl-box {
width: 100%;
height: 100%;
display: flex;
.menu-tree {
width: 20%;
min-width: 160px;
height: 100%;
margin-right: 10px;
border-right: 1px dotted #d9d9d9;
padding: 0 15px;
.item {
line-height: 30px;
padding-top: 5px;
border-bottom: 1px solid #e8e8e8;
font-size: 16px;
text-align: center;
color: $light-blue;
.itemIcon {
float: right;
line-height: 60px;
cursor: pointer;
}
.child {
line-height: 32px;
border-bottom: 1px solid #e8e8e8;
padding-left: 10px;
color: #6b6b6b;
cursor: pointer;
box-sizing: border-box;
border-radius: 6px;
line-height: 20px;
transition: all 0.3s;
padding: 8px 0;
}
.child:hover {
color: $light-blue;
transform: scale(1.1);
}
.checked {
border: 1px solid $light-blue;
color: $light-blue;
}
}
}
.clyl-img {
width: 75%;
height: 100%;
background: #f3f4f7;
margin: 0 auto;
position: relative;
}
}
}
}
</style>
\ No newline at end of file
<!--
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-05-17 10:39:47
-->
<template>
<dialogBox title="申请人信息" width="60%" isMain v-model="myValue" :isFullscreen="false" @submitForm="submitForm"
@closeDialog="closeDialog" :isButton="showButton">
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="120px">
<el-row>
<el-col :span="8">
<el-form-item label="权利人类型" prop="sqrlx">
<el-select clearable v-model="ruleForm.sqrlx" class="width100" placeholder="请选择">
<el-option v-for="item in dictData['A36']" :key="item.dcode" :label="item.dname" :value="item.dcode">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="姓名/名称" prop="sqrmc">
<el-input v-model="ruleForm.sqrmc" maxlegth="15"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="证件种类" prop="zjzl">
<el-select clearable v-model="ruleForm.zjzl" class="width100" placeholder="请选择">
<el-option v-for="item in dictData['A30']" :key="item.dcode" :label="item.dname" :value="item.dcode">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="证件号" prop="zjh">
<el-input v-model="ruleForm.zjh" maxlength="15" oninput="this.value=this.value.replace(/[^\X0-9]/g,'')"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="联系电话" prop="dh">
<el-input v-model="ruleForm.dh" maxlength="11" oninput="value=value.replace(/[^\d]/g,'')"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="性别">
<el-select clearable v-model="ruleForm.xb" class="width100" placeholder="请选择">
<el-option v-for="item in dictData['A43']" :key="item.dcode" :label="item.dname" :value="item.dcode">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="法人名称">
<el-input v-model="ruleForm.frmc"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="国家/地区">
<el-input v-model="ruleForm.gjdq"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="户籍所在省市">
<el-input v-model="ruleForm.szss"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<el-form-item label="地址">
<el-input v-model="ruleForm.txdz"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="邮编">
<el-input v-model="ruleForm.yb"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="发证机关">
<el-input v-model="ruleForm.fzjg"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="电子邮件">
<el-input v-model="ruleForm.dzyj"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="权利比例">
<el-input v-model="ruleForm.qlbl"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="工作单位">
<el-input v-model="ruleForm.gzdw"></el-input>
</el-form-item>
</el-col>
<el-col :span="16">
<el-form-item label="代理机构">
<el-input v-model="ruleForm.dljg"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="联系电话">
<el-input v-model="ruleForm.lxdh" maxlength="11" oninput="value=value.replace(/[^\d]/g,'')"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="代理人姓名">
<el-input v-model="ruleForm.dlrxm"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="代理人证件类型">
<el-select clearable v-model="ruleForm.dlrzjlx" class="width100" placeholder="请选择">
<el-option v-for="item in dictData['A30']" :key="item.dcode" :label="item.dname" :value="item.dcode">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="代理人证件号">
<el-input v-model="ruleForm.dlrzjh" maxlength="20"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
</dialogBox>
</template>
<script>
import { mapGetters } from "vuex";
export default {
props: {
value: { type: Boolean, default: false },
details: { type: Object, default: {} },
showButton: { type: Boolean, default: false }
},
computed: {
...mapGetters(["dictData"]),
},
data () {
return {
myValue: this.value,
ruleForm: {
sqrlx: "",
sqrmc: "",
zjzl: "",
zjh: "",
dh: "",
xb: "",
frmc: "",
gjdq: "",
szss: "",
txdz: "",
yb: "",
fzjg: "",
dzyj: "",
qlbl: "",
gzdw: "",
dljg: "",
dlrxm: "",
dlrzjlx: "",
dlrzjh: "",
},
rules: {
sqrlx: [{ required: true, message: "权利人类型", trigger: "change" }],
sqrmc: [{ required: true, message: "姓名/名称", trigger: "blur" }],
zjzl: [{ required: true, message: "证件种类", trigger: "change" }],
zjh: [{ required: true, message: "证件号", trigger: "blur" }],
},
};
},
watch: {
value (val) {
this.myValue = _.cloneDeep(val);
},
details: {
handler: function (val, oldVal) {
this.ruleForm = val;
},
deep: true,
},
},
methods: {
closeDialog () {
this.$emit("input", false);
this.$refs["ruleForm"].resetFields();
},
submitForm () {
this.$refs.ruleForm.validate((valid) => {
if (valid) {
this.$emit("input", false);
this.$emit("updateDetail", _.cloneDeep(this.ruleForm));
} else {
return false;
}
});
},
},
};
</script>
<style scoped lang="scss">
@import "~@/styles/dialogBoxheader.scss";
.submit-button {
text-align: center;
height: 52px;
padding-top: 10px;
background-color: #fff;
}
</style>
<!--
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-05-09 09:20:10
-->
<template>
<dialogBox title="新建材料信息" width="20%" isMain v-model="myValue" @closeDialog="closeDialog" @submitForm="handleSubmit"
:isFullscreen="false">
<el-form :model="ruleForm" ref="ruleForm" label-width="70px">
<el-row>
<el-col :span="24">
<el-form-item label="材料类型">
<el-select v-model="ruleForm.cllx" class="width100" placeholder="请选择">
<el-option v-for="item in dictData['A40']" :key="item.dcode" :label="item.dname" :value="item.dcode">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="24">
<el-form-item label="材料名称">
<el-input v-model="ruleForm.clmc"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
</dialogBox>
</template>
<script>
import { mapGetters } from "vuex";
export default {
props: {
value: { type: Boolean, default: false },
},
data () {
return {
myValue: this.value,
ruleForm: {
cllx: "",
clmc: "",
},
};
},
computed: {
...mapGetters(["dictData"]),
},
watch: {
value (val) {
this.myValue = val;
},
},
methods: {
closeDialog () {
this.$emit("input", false);
this.ruleForm = {
cllx: "",
clmc: "",
}
},
handleSubmit () {
this.$parent.addSave(this.ruleForm);
this.ruleForm = {
cllx: "",
clmc: "",
}
this.$emit("input", false);
},
},
};
</script>
<style scoped lang="scss">
.submit-button {
text-align: center;
height: 52px;
padding-top: 10px;
background-color: #fff;
}
</style>
<!--
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-05-17 10:39:57
-->
<template>
<div class="clmlmx-box">
<div class="title">申请材料目录</div>
<lb-table :column="column" :key="key" :heightNumSetting="true" :pagination="false" :data="formData.data">
</lb-table>
<div class="text-center">
<el-button @click="$popupCacel">取消</el-button>
</div>
</div>
</template>
<script>
import store from '@/store/index.js'
import { InitClml, saveClml, deleteSjClml, moveClml } from "@/api/clxx.js";
export default {
props: {
formData: {
type: Object,
default: () => {
return {}
}
}
},
data () {
return {
column: [
{
width: "50",
label: '序号',
type: 'index'
},
{
prop: "isrequired",
label: "是否必选",
width: "80",
render: (h, scope) => {
if (scope.row.sfxjcl === "1") {
return (
<div>
<span>可选</span>
</div>
);
}
else {
return (
<div>
<span>必选</span>
</div>
);
}
},
},
{
prop: "sjmc",
label: "材料名称",
},
{
prop: "sjlx",
label: "材料类型",
width: "80",
render: (h, scope) => {
return (
<div>
<span>{this.dicStatus(scope.row.sjlx, "A40")}</span>
</div>
);
},
},
{
prop: "sjsl",
label: "份数",
width: "50"
},
{
prop: "smzt",
label: "扫描状态",
width: "80",
render: (h, scope) => {
if (scope.row.children && scope.row.children.length > 0) {
return (
<div>
<span>已扫描</span>
</div>
);
} else {
return (
<div>
<span>未扫描</span>
</div>
);
}
},
},
{
label: "扫描页数",
width: "80",
render: (h, scope) => {
if (scope.row.children && scope.row.children.length > 0) {
return (
<div>
<span>{scope.row.children.length}</span>
</div>
);
} else {
return (
<div>
<span>0</span>
</div>
);
}
},
},
{
label: "操作",
width: "80",
render: (h, scope) => {
return (
<div>
<el-button
type="text"
disabled={scope.$index == 0}
onClick={() => {
this.moveUpward(scope.$index, scope.row);
}}
>
上移
</el-button>
<el-button
type="text"
disabled={scope.$index + 1 == this.tableData.length}
onClick={() => {
this.moveDown(scope.$index, scope.row);
}}
>
下移
</el-button>
</div>
);
},
},
],
key: 0,
tableData: []
}
},
created () {
console.log(this.formData.data, 'formData');
},
methods: {
// 材料目录明细初始化
clmlInitList () {
return new Promise(resolve => {
this.unitData = this.$parent.unitData;
var formdata = new FormData();
formdata.append("bsmSldy", this.unitData[0]?.bsmSldy);
formdata.append("bsmSlsq", this.$route.query.bsmSlsq);
InitClml(formdata).then((res) => {
if (res.code == 200) {
resolve(res.code)
if (res.result && res.result.length > 0) {
this.data = res.result;
} else {
this.data = []
}
} else {
this.$message.error(res.message)
}
})
})
},
// 上移
moveUpward (index, row) {
let obj = {
xh: row.xh,
bsmSlsq: row.bsmSlsq,
moveDirection: "UP",
};
// 接口待调
moveClml(obj).then(async (res) => {
if (res.code == 200) {
let res = await this.clmlInitList()
if (res == 200) {
this.$message({
message: '上移成功',
type: 'success'
})
this.$parent.setTableData(this.data)
}
} else {
this.$message.error(res.message);
}
})
},
// 下移
moveDown (index, row) {
let obj = {
xh: row.xh,
bsmSlsq: row.bsmSlsq,
moveDirection: "DOWN",
}
// 接口待调
moveClml(obj).then(async (res) => {
if (res.code == 200) {
let res = await this.clmlInitList()
if (res == 200) {
this.$message({
message: '下移成功',
type: 'success'
})
}
} else {
this.$message.error(res.message);
}
})
},
// 材料目录删除
handleDelete (index, row) {
let that = this
this.$confirm('此操作将永久删除该 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
deleteSjClml({ sjBsm: row.bsmSj }).then(async (res) => {
if (res.code == 200) {
let res = await that.clmlInitList()
if (res == 200) {
that.$message({
message: "删除成功",
type: "success",
})
// this.$parent.setTableData(this.data)
}
}
})
}).catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
})
})
},
// 字典
dicStatus (val, code) {
let data = store.getters.dictData[code],
name = "暂无";
if (data) {
data.map((item) => {
if (item.dcode == val) {
name = item.dname;
}
});
return name;
}
}
}
}
</script>
<style scoped lang='scss'>
@import "~@/styles/mixin.scss";
.clmlmx-box {
margin: 0 auto;
.title {
text-align: center;
height: 60px;
line-height: 60px;
border: 1px solid #dfe6ec;
font-size: 20px;
background: #81d3f81a;
margin-bottom: -1px;
}
}
</style>
\ No newline at end of file
<!--
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-05-17 10:40:02
-->
<template>
<div>
<el-button type="primary" native-type="submit" @click="openDialog">新增常用</el-button>
<el-form ref="form" :model="form" :rules="rules" label-width="80px" v-show="addDialog">
<el-form-item prop="commonOpinion">
<div class="invalid-reson">常用意见:</div>
<el-input v-model="form.commonOpinion" placeholder="请输入常用意见" type="textarea" :rows="4"></el-input>
</el-form-item>
<el-form-item class="text-center">
<el-button @click="closeaddDiglog">取 消</el-button>
<el-button type="primary" @click="addOpinion">确 定</el-button>
</el-form-item>
</el-form>
<lb-table :heightNumSetting="true"
@row-dblclick="handleRowClick"
:pagination="false" :column="columns" :minHeight="300" :data="tableData.data">
</lb-table>
<div style="height:15px"></div>
<div class="text-center">
<el-button @click="$popupCacel">取消</el-button>
</div>
</div>
</template>
<script>
import store from '@/store/index.js'
import { getUserCommonOpinion, addUserCommonOpinion, delUserCommonOpinion } from "@/api/fqsq.js"
export default {
components: {},
props: {
formData: {
type: Object,
default: {}
}
},
data () {
return {
addDialog: false,
columns: [
{
label: '序号',
type: 'index',
width: '50',
},
{
prop: "opinion",
label: "意见描述",
},
{
label: '操作',
width: '100',
render: (h, scope) => {
return (
<div>
<el-button type="text" onClick={() => { this.useCommonOpinion(scope.row) }}>使用</el-button>
<el-button type="text" onClick={() => { this.deleteOpinion(scope.row) }}>删除</el-button>
</div>
)
}
}
],
tableData: {
total: 0,
data: [],
},
form: {
commonOpinion: '',
},
rules: {
commonOpinion: [
{ required: true, message: '请输入常用意见', trigger: 'blur' }
]
}
}
},
mounted () {
this.getList()
},
methods: {
getList () {
getUserCommonOpinion().then(res => {
this.tableData.data = res.result
})
},
//新增常用意见
addOpinion () {
this.$refs.form.validate(valid => {
if (valid) {
addUserCommonOpinion({ commonOpinion: this.form.commonOpinion }).then(res => {
if (res.code == 200) {
this.$message.success("新增成功")
this.closeaddDiglog();
this.getList()
} else {
this.$message.error(res.message)
}
})
} else {
return false;
}
});
},
//打开新增弹窗
openDialog () {
this.addDialog = true
},
//关闭新增弹窗
closeaddDiglog () {
this.addDialog = false
this.$refs['form'].resetFields();
},
handleRowClick (item) {
this.useCommonOpinion(item)
},
//使用常用意见
useCommonOpinion (item) {
store.dispatch('workflow/setOptions', item.opinion);
this.$popupCacel()
},
//删除常用意见
deleteOpinion (item) {
this.$confirm("确定要删除吗, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
delUserCommonOpinion({ bsmOpinion: item.bsmOpinion }).then(res => {
if (res.code == 200) {
this.$message.success("删除成功")
this.getList()
} else {
this.$message.error(res.message)
}
})
})
.catch(() => {
this.$message({
type: "info",
message: "已取消删除",
});
});
},
//关闭列表弹窗
closeDialog () {
this.form.commonOpinion = "";
}
}
}
</script>
<style scoped lang='scss'>
@import "~@/styles/mixin.scss";
@import "~@/styles/dialogBox.scss";
.invalid-reson {
margin-bottom: 10px;
}
.dialog-footer {
margin-top: 10px;
display: flex;
justify-content: flex-end;
}
</style>
\ No newline at end of file
<!--
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-05-04 14:13:28
-->
<template>
<lb-table :column="tableData.columns" heightNumSetting :pagination="false" :key="key" :data="tableData.data">
</lb-table>
</template>
<script>
import { mapGetters } from 'vuex'
import { getSzRecordList } from "@/api/bdcqz.js";
import table from "@/utils/mixin/table";
import { datas } from "../../javascript/szxxdata";
export default {
components: {
},
mixins: [table],
computed: {
...mapGetters(["dictData"]),
},
props: {
formData: {
type: Object,
default: {}
}
},
data () {
return {
key: 0,
dataIndex: 0,
dialog: false,
details: {},
tableData: {
total: 0,
columns: datas.columns(),
data: [],
},
}
},
mounted () {
this.query()
},
methods: {
query () {
getSzRecordList({ bsmBdcqz: this.formData.bsmBdcqz }).then(res => {
if (res.code == 200) {
this.tableData.data = res.result;
this.key++
}
})
}
}
}
</script>
<style scoped lang='scss'>
</style>
\ No newline at end of file
<!--
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-05-17 10:40:09
-->
<template>
<div>
<div class="zsdy-content loadingtext">
<el-form
:model="ruleForm"
:rules="rules"
ref="ruleForm"
label-width="120px">
<el-form-item label="印刷序列号:" prop="ysxlh">
<el-select v-model="ruleForm.ysxlh" placeholder="请选择">
<el-option
v-for="item in ysxlh"
:key="item.ysxlh"
:label="item.ysxlh"
:value="item.ysxlh">
</el-option>
</el-select>
</el-form-item>
</el-form>
<img :src="previewImage" style="width: 100%">
</div>
<div class="text-center pt-10">
<el-button @click="$popupCacel">取消</el-button>
<el-button type="primary" @click="handleSubmit">确定</el-button>
</div>
</div>
</template>
<script>
import store from '@/store/index.js'
import { datas } from "../../javascript/zsyl.js";
import { readYsxlh, certificate, bdcqzPreview } from "@/api/bdcqz.js";
export default {
props: {
formData: {
type: Object,
default: () => {
return {}
}
}
},
data () {
return {
//印刷序列号集合
ysxlh: [],
//证书预览图片
previewImage: '',
//列名称对象
columns: [],
ruleForm: {
bsmBdcqz: "",
szmc: "不动产权证书",
bdcqzlx: "",
szzh: "",
ysxlh: ""
},
rules: {
ysxlh: [
{ required: true, message: "请选择印刷序列号", trigger: "change" }
]
}
}
},
created () {
store.dispatch('user/refreshPage', false)
this.columns = datas.columns()
this.ysxlhList()
this.getBdcqzPreview()
},
methods: {
//获取印刷序列号列表
ysxlhList () {
readYsxlh({ zslx: this.formData.bdcqz.bdcqzlx }).then((res) => {
if (res.code === 200) {
this.ysxlh = res.result;
}
})
},
handleSubmit () {
this.savePrintRecord()
},
//获取证书内容
getRowValue (code) {
var value = this.bdcqz[code];
return value;
},
getBdcqzPreview () {
this.$startLoading()
bdcqzPreview(this.formData.bdcqz).then(res => {
this.$endLoading()
let blob = new Blob([res]);
let url = window.URL.createObjectURL(blob);
this.previewImage = url;
})
},
//保存打印记录
savePrintRecord () {
this.ruleForm.bsmBdcqz = this.formData.bdcqz.bsmBdcqz;
this.ruleForm.bdcqzlx = this.formData.bdcqz.bdcqzlx;
this.ruleForm.szzh = this.formData.bdcqz.bdcqzh;
certificate(this.ruleForm).then((res) => {
if (res.code === 200) {
this.$popupCacel()
this.$message.success("提交成功")
//刷新列表
store.dispatch('user/refreshPage', true);
} else {
this.$message.error(res.message)
}
});
},
},
};
</script>
<style scoped lang="scss">
@import "~@/styles/mixin.scss";
.zsdy-content {
height: 80vh;
overflow-y: scroll;
}
.aaaa {
width: 1024px;
height: 739px;
font-family: KaiTi;
font-weight: 700;
}
.bdcdjzm {
width: 1123px;
height: 794px;
font-family: KaiTi;
font-weight: 700;
}
.zmyl-box {
//position: relative;
position: absolute;
height: 600px;
width: 280px;
margin-left: 775px;
font-size: 16px;
justify-content: space-between;
}
.bdcqzh {
height: 70px;
left: 0;
bottom: 0;
font-size: 18px;
}
.zsyl-box {
display: flex;
justify-content: space-between;
// padding: 20px;
font-size: 16px;
height: 100%;
$left: 131px;
.zsyl-left {
width: 460px;
position: relative;
.qlr {
position: absolute;
top: 40px;
left: $left;
}
.gyqk {
position: absolute;
top: 80px;
left: $left;
}
.zl {
position: absolute;
top: 120px;
left: $left;
}
.bdcdyh {
position: absolute;
top: 160px;
left: $left;
}
.qllx {
position: absolute;
top: 205px;
left: $left;
}
.qlxz {
position: absolute;
top: 250px;
left: $left;
}
.yt {
position: absolute;
top: 290px;
left: $left;
}
.mj {
position: absolute;
top: 330px;
left: $left;
}
.syqx {
position: absolute;
top: 370px;
left: $left;
}
.qt {
position: absolute;
top: 420px;
left: $left;
}
}
.zsyl-right {
flex: 1;
text-align: left;
position: relative;
.fj {
position: absolute;
left: 115px;
top: 5px;
}
}
.zsyl-title {
margin-bottom: 12px;
}
/deep/.el-table__row {
background: #fafbe5 !important;
}
}
.middle_padding {
padding-bottom: 10px;
}
.zsyl-button {
text-align: center;
margin-top: 20px;
.operation_button {
width: 100px;
border: 1px solid rgb(0, 121, 254);
}
.dy-button {
color: white;
background-color: rgb(0, 121, 254);
}
}
</style>
<!--
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-05-18 10:53:49
-->
<template>
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px">
<el-row>
<el-col :span="8">
<el-form-item label="发证人姓名">
<el-input v-model="ruleForm.fzrmc" disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="发证时间">
<el-input v-model="ruleForm.fzsj" disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="发证数量">
<el-input v-model="ruleForm.fzsl" disabled></el-input>
</el-form-item>
</el-col>
</el-row>
<lb-table :column="tableData.columns" @row-dblclick="handleRowClick" ref="table" @selection-change="handleSelectionChange" :data="tableData.data"
:pagination="false"
:calcHeight="300">
</lb-table>
<el-row>
<el-col :span="6">
<el-form-item label="领证人" prop="lzrxm">
<el-input v-model="ruleForm.lzrxm"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="证件类型" prop="lzrzjlb">
<el-select v-model="ruleForm.lzrzjlb" filterable clearable placeholder="请选择">
<el-option v-for="item in zjzlData" :key="item.dcode" :label="item.dname" :value="item.dcode">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="证件号" prop="lzrzjh">
<el-input v-model="ruleForm.lzrzjh"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="领证人电话" prop="lzrdh">
<el-input v-model="ruleForm.lzrdh"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-form-item class="text-center">
<el-button @click="$popupCacel">取消</el-button>
<el-button type="primary" @click="handleSubmit">确定</el-button>
</el-form-item>
</el-form>
</template>
<script>
import Vue from 'vue'
import store from '@/store/index.js'
import table from "@/utils/mixin/table";
import { getUnclaimedBdcqz, issueCertificate } from "@/api/bdcqz.js";
import { datas } from "../../javascript/fzxxdata";
export default {
props: {
formData: {
type: Object,
default: () => {
return {}
}
}
},
mixins: [table],
data () {
return {
zjzlData: store.getters.dictData['A30'],
ruleForm: {
fzrmc: '',
fzsj: '',
fzsl: '',
bdcqzList: [],
lzrxm: '',
lzrzjlb: '',
lzrzjh: '',
lzrdh: ''
},
rules: {
lzrxm: [
{ required: true, message: '请输入领证人', trigger: 'blur' }
],
lzrzjlb: [
{ required: true, message: '请选择证件类型', trigger: 'change' }
],
lzrzjh: [
{ required: true, message: '请输入证件号', trigger: 'blur' }
],
lzrdh: [
{ required: true, message: '请输入电话号码', trigger: 'blur' }
]
},
tableData: {
total: 0,
columns: datas.columns().lzgrid,
data: []
}
}
},
mounted () {
this.$nextTick(() => {
this.loadGrid()
})
},
methods: {
//列表初始化
loadGrid () {
getUnclaimedBdcqz({ bsmSlsq: Vue.prototype.$currentRoute.query.bsmSlsq }).then(res => {
if (res.code === 200) {
this.tableData.data = res.result.list;
this.ruleForm.fzrmc = res.result.fzrmc
this.ruleForm.fzsj = res.result.fzsj
this.ruleForm.fzsl = res.result.fzsl
this.ruleForm.bdcqzList = res.result.list;
}
})
},
handleSelectionChange (val) {
this.ruleForm.bdcqzList = val
},
handleRowClick (row) {
this.$refs.table.toggleRowSelection(row)
},
handleSubmit () {
this.$refs.ruleForm.validate(valid => {
if (valid) {
issueCertificate(this.ruleForm).then(res => {
if (res.code == 200) {
this.$message.success('保存成功');
this.$popupCacel()
} else {
this.$message.error(res.message)
}
})
} else {
this.$message.error("请填写领取人信息!")
return false;
}
})
}
}
}
</script>
<style scoped lang="scss">
@import "~@/styles/mixin.scss";
</style>
<!--
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-05-29 14:22:48
-->
<template>
<div class="from-clues loadingtext" v-Loading="loading" element-loading-text="拼命加载中..." style="height:720px">
<!-- 表单部分 -->
<el-tabs v-model="activeName" @tab-click="handleClick" v-if="headTabBdcqz.length > 1">
<el-tab-pane :label="item.qlr + '(' + item.bdcqzh + ')'" :name="item.bsmBdcqz"
v-for="(item, index) in headTabBdcqz" :key="index"></el-tab-pane>
</el-tabs>
<div class="no-data" v-if="headTabBdcqz.length == 0">暂无数据</div>
<!-- <img :src="previewImage" class="imgClass"> -->
<canvas ref="canvas" :width="canvasWidth" :height="canvasHeight"></canvas>
</div>
</template>
<script>
import { datas } from "../../javascript/zsyl.js";
import { getSlsqBdcqzList, bdcqzPreview } from "@/api/bdcqz.js"
export default {
name: "zsyl",
props: {
formData: {
type: Object,
default: {}
}
},
data () {
return {
imgSrc: require('@/image/bdcqz/bdcqzs2.jpg'),
canvasWidth: 1018,
canvasHeight: 720,
loading: false,
//印刷序列号集合
ysxlh: [],
//列名称对象
columns: [],
//选择的不动产权证文件
bdcqz: '',
//证书打开类型 是否需要展示打印按钮
isToPrint: false,
//tab切换栏数组
headTabBdcqz: [],
//tab选择绑定值
activeName: '',
//证书图片预览
previewImage: '',
ruleForm: {
bsmBdcqz: '',
szmc: '不动产权证书',
bdcqzlx: '',
szzh: '',
ysxlh: '',
},
}
},
mounted () {
this.columns = datas.columns();
if (this.formData.bdcqz) {
//从缮证进入
this.bdcqz = this.formData.bdcqz
} else {
//从按钮进入
this.getHeadTabBdcqz();
}
},
methods: {
//获取证书内容
getRowValue (code) {
var value = this.bdcqz[code];
return value;
},
//获取受理申请下全部不动产权证
getHeadTabBdcqz () {
this.loading = true
getSlsqBdcqzList({ bsmSlsq: this.formData.bsmSlsq }).then(res => {
if (res.code == 200) {
if (res.result && res.result.length > 0) {
this.activeName = res.result[0].bsmBdcqz
this.bdcqz = res.result[0]
this.headTabBdcqz = res.result
this.drawTextOnImage();
}
}
this.loading = false
})
},
//tab表头切换方法
handleClick (e) {
this.bdcqz = this.headTabBdcqz[e.index - 0]
this.activeName = this.headTabBdcqz.bsmBdcqz
// this.getBdcqzPreview();
this.drawTextOnImage()
},
// getBdcqzPreview () {
// bdcqzPreview(this.bdcqz).then(res => {
// this.loading = false
// let blob = new Blob([res]);
// let url = window.URL.createObjectURL(blob);
// this.previewImage = url;
// this.drawTextOnImage()
// })
// },
drawTextOnImage () {
const canvas = this.$refs.canvas;
const context = canvas.getContext('2d');
const image = new Image();
image.onload = () => {
context.drawImage(image, 0, 0);
context.font = '15px 楷体';
context.fillStyle = '#000000';
context.fillText(this.bdcqz.sjjc ? this.bdcqz.sjjc : '', 60, 56);
context.fillText(this.bdcqz.djnd ? this.bdcqz.djnd : '', 113, 56);
context.fillText(this.bdcqz.sxqc ? this.bdcqz.sxqc : '', 180, 56);
context.fillText(this.bdcqz.sxh ? this.bdcqz.sxh : '', 370, 56);
context.fillText(this.bdcqz.qlr ? this.bdcqz.qlr : '', 138, 97);
context.fillText(this.bdcqz.gyqk ? this.bdcqz.gyqk : '', 138, 138);
context.fillText(this.bdcqz.zl ? this.bdcqz.zl : '', 138, 180);
context.fillText(this.bdcqz.bdcdyh ? this.bdcqz.bdcdyh : '', 138, 223);
context.fillText(this.bdcqz.qllx ? this.bdcqz.qllx : '', 138, 263);
context.fillText(this.bdcqz.qlxz ? this.bdcqz.qlxz : '', 138, 303);
context.fillText(this.bdcqz.yt ? this.bdcqz.yt : '', 138, 346);
context.fillText(this.bdcqz.mj ? this.bdcqz.mj : '', 138, 386);
context.fillText(this.bdcqz.syqx ? this.bdcqz.syqx : '', 138, 429);
context.fillText(this.bdcqz.qlqtzk ? this.bdcqz.qlqtzk : '', 138, 469);
context.fillText(this.bdcqz.fj ? this.bdcqz.fj : '', 580, 100);
}
image.src = this.imgSrc;
}
}
}
</script>
<style scoped lang="scss">
@import "~@/styles/mixin.scss";
.imgClass {
display: inline-block;
height: auto;
max-width: 100%;
}
.middle_padding {
padding-bottom: 10px;
}
.zsyl-button {
text-align: center;
margin-top: 20px;
.operation_button {
width: 100px;
border: 1px solid rgb(0, 121, 254);
}
.dy-button {
color: white;
background-color: rgb(0, 121, 254);
}
}
.table-column {
border-spacing: 1px;
width: 100%;
tr td {
border: 1px solid #ccc;
text-align: center;
height: 40px;
padding: 4px;
font-size: 13px;
background: rgb(251, 249, 229);
}
}
.zsyl-title {
background: #fafbe5;
text-align: center;
padding: 5px 0px;
font-size: 20px;
}
.no-data {
font-size: 18px;
display: flex;
text-align: center;
justify-content: center;
}
</style>
<!--
* @Description: 功能:流程图
* @Autor: renchao
* @LastEditTime: 2023-05-17 10:40:57
-->
<template>
<div class='flowChart'>
<img :src="formData" alt="">
</div>
</template>
<script>
export default {
props: {
formData: {
type: String,
default: ''
}
}
}
</script>
<style scoped lang="scss">
@import "~@/styles/mixin.scss";
.flowChart {
margin: 20px 0;
}
</style>
\ No newline at end of file
<!--
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-05-16 15:55:45
-->
<template>
<div class="from-clues">
<!-- 发证信息 -->
<div class="from-clues-header">
<el-form :model="ruleForm">
<el-row :gutter="20">
<el-col :span="6">
<el-form-item label="印刷序列号">
<el-input v-model="ruleForm.ysxlh" clearable placeholder="请输入印刷序列号"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="证书号">
<el-input v-model="ruleForm.zsh" clearable placeholder="请输入证书号"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="权利人">
<el-input v-model="ruleForm.qlr" clearable placeholder="请输入权利人"></el-input>
</el-form-item>
</el-col>
<el-col :span="6" class="btnColRight">
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleSearch">查询</el-button>
<el-button type="primary" icon="el-icon-search" @click="zslqClick">证书领取</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<div class="from-clues-content">
<lb-table border :column="tableData.columns" :heightNum="210" :data="tableData.data" :pagination="false">
</lb-table>
</div>
</div>
</template>
<script>
import table from "@/utils/mixin/table";
import { getCertificateList } from "@/api/bdcqz.js";
import { datas } from "../javascript/fzxxdata";
export default {
mixins: [table],
data () {
return {
ruleForm: {
ysxlh: '',
zsh: '',
qlr: '',
bsmSldy: ''
},
tableData: {
total: 0,
columns: datas.columns().fzgrid,
data: []
},
dialogVisible: false
}
},
methods: {
queryClick () {
this.ruleForm.bsmSlsq = this.$route.query.bsmSlsq;
getCertificateList(this.ruleForm).then(res => {
if (res.code === 200) {
this.tableData.data = res.result ? res.result : []
}
})
},
zslqClick () {
this.$popupDialog("不动产权证领取", "workflow/components/dialog/zslq", {}, '80%', true)
}
}
}
</script>
<style scoped lang='scss'>
@import "~@/styles/public.scss";
</style>
\ No newline at end of file
var qlxxPage = [
{ qllx: "A01", id: "jsydsyq", form: "jsydsyq.vue", label: "集体土地所有权" },
{ qllx: "A02", id: "jsydsyq", form: "jsydsyq.vue", label: "国家土地所有权" },
{ qllx: "A03", id: "jsydsyq", form: "jsydsyq.vue", label: "国有建设用地使用权" },
{ qllx: "A04", id: "", form: "", label: "国有建设用地使用权/房屋所有权" },
{ qllx: "A05", id: "jsydsyq", form: "jsydsyq.vue", label: "宅基地使用权" },
{ qllx: "A06", id: "", form: "", label: "宅基地使用权/房屋所有权" },
{ qllx: "A07", id: "jsydsyq", form: "jsydsyq.vue", label: "集体建设用地使用权" },
{ qllx: "A08", id: "", form: "", label: "集体建设用地使用权/房屋所有权" },
{ qllx: "A09", id: "jsydsyq", form: "jsydsyq.vue", label: "土地承包经营权" },
{ qllx: "A11", id: "jsydsyq", form: "jsydsyq.vue", label: "林地使用权" },
{ qllx: "A12", id: "jsydsyq", form: "jsydsyq.vue", label: "林地使用权/森林、林木使用权" },
{ qllx: "A13", id: "jsydsyq", form: "jsydsyq.vue", label: "草原使用权" },
{ qllx: "A14", id: "jsydsyq", form: "jsydsyq.vue", label: "水域滩涂养殖权" },
{ qllx: "A15", id: "jsydsyq", form: "jsydsyq.vue", label: "海域使用权" },
{ qllx: "A16", id: "jsydsyq", form: "jsydsyq.vue", label: "海域使用权/建(构)筑物所有权" },
{ qllx: "A17", id: "jsydsyq", form: "jsydsyq.vue", label: "海域使用权(无居民海岛)" },
{ qllx: "A18", id: "jsydsyq", form: "jsydsyq.vue", label: "海域使用权(无居民海岛)/建筑物(设施)使用权" },
{ qllx: "A19", id: "diyiq", form: "diyiq.vue", label: "地役权" },
{ qllx: "A23", id: "jsydsyq", form: "jsydsyq.vue", label: "国有农用地的使用权" },
{ qllx: "A24", id: "jsydsyq", form: "jsydsyq.vue", label: "国有建设用地使用权/构筑物所有权" },
{ qllx: "A25", id: "jsydsyq", form: "jsydsyq.vue", label: "宅基地使用权/构筑物所有权" },
{ qllx: "A26", id: "jsydsyq", form: "jsydsyq.vue", label: "集体建设用地使用权/构筑物所有权" },
{ qllx: "A29", id: "jsydsyq", form: "jsydsyq.vue", label: "国有未利用地的使用权" },
{ qllx: "A30", id: "jsydsyq", form: "jsydsyq.vue", label: "集体农用地使用权" },
{ qllx: "A31", id: "jsydsyq", form: "jsydsyq.vue", label: "土地承包经营权/森林、林木使用权" },
{ qllx: "A33", id: "jsydsyq", form: "jsydsyq.vue", label: "林地经营权/林木所有权" },
{ qllx: "A34", id: "jsydsyq", form: "jsydsyq.vue", label: "林地经营权/林木使用权" },
{ qllx: "A35", id: "jsydsyq", form: "jsydsyq.vue", label: "林地承包经营权/林木所有权" },
{ qllx: "A36", id: "jsydsyq", form: "jsydsyq.vue", label: "林地使用权/林木所有权" },
{ qllx: "A37", id: "diyaq", form: "diyaq.vue", label: "抵押权" },
{ qllx: "B37", id: "diyaq", form: "diyaq.vue", label: "抵押权" },
{ qllx: "B38", id: "yydj", form: "yydj.vue", label: "异议登记" },
{ qllx: "B39", id: "cfdj", form: "cfdj.vue", label: "查封登记" },
{ qllx: "B40", id: "ygdj", form: "ygdj.vue", label: "预告登记" },
{ qllx: "B41", id: "ygdj", form: "ygdj.vue", label: "预告登记" },
];
//组装登记簿树形结构
export function loadTreeData(qlxxData, bdcdyh) {
let treedata = [];
//加载封面
treedata.push({ id: "djbfm", form: "djbfm.vue", label: "登记簿封面" });
treedata.push({ id: "zdjbxx", form: "zdjbxx.vue", label: "宗地基本信息\n(" + bdcdyh.substring(0, 19) + ")", children: [] });
treedata[1].children.push({ id: "bdcqldjml", form: "bdcqldjml.vue", label: "不动产权利登记目录", children: [] });
treedata[1].children[0].children.push({
id: "bdcqljqtsx", form: "bdcqljqtsx.vue", label: "不动产权利及其他事项\n (" + bdcdyh.slice(19) + ")", children: [],
});
//主体权利
treedata[1].children[0].children[0].children.push(getNode(qlxxData.ztqllx, qlxxData.ztql, qlxxData.bdcdylx));
//抵押权
treedata[1].children[0].children[0].children.push(getNode("A37", qlxxData.diyaq, ''));
//地役权
treedata[1].children[0].children[0].children.push(getNode("A19", qlxxData.diyiq, ''));
//预告登记
treedata[1].children[0].children[0].children.push(getNode("B40", qlxxData.ygdj, ''));
//异议登记
treedata[1].children[0].children[0].children.push(getNode("B38", qlxxData.yydj, ''));
//查封登记
treedata[1].children[0].children[0].children.push(getNode("B39", qlxxData.cfdj, ''));
return treedata;
}
//获取权利类型、不动产单元类型对应的树形节点信息
export function getNode(qllx, qlxx, bdcdylx) {
let node;
for (var i = 0; i < qlxxPage.length; i++) {
if (qlxxPage[i].qllx == qllx) {
if (qllx == "A04" || qllx == "A06" || qllx == "A08") {
if (bdcdylx == "4") {
node = { id: "fdcq1", form: "fdcq1.vue", label: qlxxPage[i].label + "(临:" + qlxx.linShi + ",现:" + qlxx.xianShi + ",历:" + qlxx.liShi +")"};
} else {
node = { id: "fdcq2", form: "fdcq2.vue", label: qlxxPage[i].label + "(临:" + qlxx.linShi + ",现:" + qlxx.xianShi + ",历:" + qlxx.liShi +")"};
}
} else {
node = { id: qlxxPage[i].id, form: qlxxPage[i].form, label: qlxxPage[i].label + "(临:" + qlxx.linShi + ",现:" + qlxx.xianShi + ",历:" + qlxx.liShi +")"};
}
break;
}
};
return node;
}
<!--
* @Description: workFrame左侧菜单列表-普通
* @Autor: renchao
* @LastEditTime: 2023-05-25 10:42:50
-->
<template>
<div class="leftmenu" :class="{ 'animation-map-drawer': isShowdrawer }">
<div v-if="this.isShowdrawer">
<div class="title">
登记簿列表
</div>
<el-tree ref="tree" :data="treedata" :props="defaultProps" @node-click="handleNodeClick"
:default-expand-all="true" :expand-on-click-node="false" node-key="id" :default-checked-keys="[showTab]">
</el-tree>
</div>
<div class="map-drawer-click map-drawer" v-if="!isShowdrawer" @click="
() => {
this.isShowdrawer = !this.isShowdrawer;
}
"></div>
<div class="map-drawer-expand map-drawer" v-else @click="
() => {
this.isShowdrawer = !this.isShowdrawer;
}
"></div>
</div>
</template>
<script>
import { mapGetters } from 'vuex'
import { leftMenu } from "@/api/fqsq.js"
import { deleteSlbdcdy } from "@/api/ywbl.js";
import { getBdcqljqtsx } from "@/api/registerBook.js";
import { loadTreeData, getNode } from "./djbFrameData.js";
export default {
data () {
return {
//受理申请标识码
bsmSlsq: this.$route.query.bsmSlsq,
//当前流程所在环节
bestepid: this.$route.query.bestepid,
//受理申请标识码
bdcdyid: this.$route.query.bdcdyid,
//当前流程所在环节
bdcdyh: this.$route.query.bdcdyh,
qllx:this.$route.query.qllx,
// 默认选中
activeIndex: '0',
// 折叠
isShowdrawer: true,
// 批量操作
showBatch: false,
//批量操作按钮名称
batchButtonName: '',
//左侧菜单数据集合
unitData: [],
// 设置表单传递数据
currentSelectProps: {},
//左侧树形结构数据
treedata: [],
defaultNode: "",
defaultProps: {
value: "id",
children: "children",
label: "label",
},
showTab: "bdcqldjml", // 选中状态,根据表格中权利类型判断
}
},
mounted () {
this.loadBdcdylist();
},
computed: {
...mapGetters(['isRefresh'])
},
watch: {
isRefresh: {
handler (newVal, oldVal) {
if (newVal) this.loadBdcdylist()
},
immediate: true
}
},
methods: {
//读取申请单元信息
loadBdcdylist () {
this.loadData ()
},
// 获取登记簿菜单
loadData () {
getBdcqljqtsx({
bdcdyid: this.bdcdyid,
bdcdyh: this.bdcdyh,
}).then((res) => {
if (res.code === 200) {
console.log("res.result","res.result",res.result);
this.treedata = loadTreeData(res.result, this.bdcdyh);
console.log("this.treedata","this.treedata",this.treedata);
this.$nextTick(function () {
this.defaultNode = getNode(this.qllx, { linShi: 0, xianShi: 0, liShi: 0 }, "");
this.$refs.tree.setCurrentKey(this.defaultNode.id); //data[0].id为默认选中的节点
this.$parent.loadComponent(this.currentSelectProps,this.defaultNode);
});
}
});
this.currentSelectProps = {
bdcdyid: this.bdcdyid,
bdcdyh: this.bdcdyh,
qllx: this.qllx,
bsmQlxx: this.bsmQlxx,
};
// this.$parent.stepForm();
},
handleNodeClick (data, node, elem) {
this.$parent.loadComponent(this.currentSelectProps,data);
},
}
}
</script>
<style scoped lang='scss'>
@import "~@/styles/mixin.scss";
@import "../../workFrame.scss";
.leftmenu ul {
height: calc(100vh - 120px);
}
/deep/.rollTable {
height: calc(100vh - 240px) !important;
}
.content {
width: 100%;
height: 100%;
display: flex;
.left {
width: 256px;
height: 704px;
background-color: #f5f5f5;
color: #333;
border: 1px solid rgb(228, 228, 228);
}
.right {
width: calc(100% - 256px);
height: 704px;
// overflow-y: scroll;
overflow: auto;
background-color: #f5f5f5;
border: 1px solid rgb(228, 228, 228);
}
}
/deep/ .expanded.el-tree-node__expand-icon,
/deep/ .el-tree-node__expand-icon {
visibility: hidden;
}
/deep/ .el-tree-node__content {
border: 1px solid rgb(228, 228, 228);
height: 45px;
}
/deep/ .el-tree-node:focus>.el-tree-node__content {
background-color: #f5f5f5;
color: #0079fe;
border-right: 4px solid #0079fe;
}
/deep/.el-tree-node {
white-space: pre-wrap;
}
/deep/ .is-current>.el-tree-node__content {
background-color: #f5f5f5;
color: #0079fe;
border-right: 4px solid #0079fe;
}
.title-batch{
background-color: salmon;
}
</style>
import filter from '@/utils/filter.js'
class data extends filter {
constructor() {
super()
}
columns() {
return {
//空列值个数
emptycolNum: 3,
checkList: ["0", "1", "2"],
//权属状态集合
qsztList: [
{
value: "0",
label: "临时",
},
{
value: "1",
label: "现势",
},
{
value: "2",
label: "历史",
},
],
JSYDSYQ: [
{
prop: "qszt",
label: "权属状态",
},
{
prop: "qllxmc",
label: "权利类型",
},
{
prop: "djlxmc",
label: "登记类型",
},
{
prop: "ssywh",
label: "上手业务号",
},
{
prop: "dah",
label: "档案号",
},
{
prop: "ywh",
label: "业务号",
},
{
prop: "bdcdyh",
label: "不动产单元号",
},
{
prop: "zl",
label: "坐落",
},
{
prop: "gyqk",
label: "共有情况",
},
{
prop: "qlrlx",
label: "权利人类型",
},
{
prop: "qlrmc",
label: "权利人",
},
{
prop: "qlrzjzl",
label: "证件种类",
},
{
prop: "qlrzjhm",
label: "证件号",
},
{
prop: "mj",
label: "使用权面积(m²)",
},
{
prop: "qlxzmc",
label: "权利性质",
},
{
prop: "ytmc",
label: "土地用途",
},
{
prop: "syqqzsj",
label: "使用权起止时间",
},
// {
// prop: "syqjssj",
// label: "使用权结束时间",
// },
// {
// prop: "tdsyqx",
// label: "土地使用期限",
// },
{
prop: "tdsyqx",
label: "土地使用期限",
},
{
prop: "qdjg",
label: "取得价格(万元)",
},
{
prop: "djyy",
label: "登记原因",
},
{
prop: "bdcqzh",
label: "不动产权证号",
},
{
prop: "djsj",
label: "登记时间",
},
{
prop: "dbr",
label: "登簿人",
},
{
prop: "fj",
label: "附记",
},
],
FDCQ2: [
{
prop: "qszt",
label: "权属状态",
},
{
prop: "qllxmc",
label: "权利类型",
},
{
prop: "djlxmc",
label: "登记类型",
},
{
prop: "ssywh",
label: "上手业务号",
},
{
prop: "dah",
label: "档案号",
},
{
prop: "ywh",
label: "业务号",
},
{
prop: "bdcdyh",
label: "不动产单元号",
},
{
prop: "zl",
label: "坐落",
},
{
prop: "gyfs",
label: "共有情况",
},
{
prop: "qlrlx",
label: "权利人类型",
},
{
prop: "qlrmc",
label: "权利人",
},
{
prop: "qlrzjzl",
label: "证件种类",
},
{
prop: "qlrzjhm",
label: "证件号",
},
{
prop: "tdsyqr",
label: "土地使用权人",
},
{
prop: "dytdmj",
label: "独用土地面积(m²)",
},
{
prop: "fttdmj",
label: "分摊土地面积(m²)",
},
{
prop: "tdsyqzsj",
label: "土地使用期限",
},
{
prop: "syqqzsj",
label: "使用权起止时间",
},
{
prop: "fdcjyjg",
label: "房地产交易价格(万元)",
},
{
prop: "ytmc",
label: "规划用途",
},
{
prop: "fwxzmc",
label: "房屋性质",
},
{
prop: "fwjgmc",
label: "房屋结构",
},
{
prop: "szc",
label: "所在层",
},
{
prop: "zcs",
label: "总层数",
},
{
prop: "mj",
label: "建筑面积(m2)",
},
{
prop: "zyjzmj",
label: "专有建筑面积(m2)",
},
{
prop: "ftjzmj",
label: "分摊建筑面积(m2)",
},
{
prop: "jgsj",
label: "竣工时间",
},
{
prop: "djyy",
label: "登记原因",
},
{
prop: "bdcqzh",
label: "不动产权证号",
},
{
prop: "djsj",
label: "登记时间",
},
{
prop: "dbr",
label: "登簿人",
},
{
prop: "fj",
label: "附记",
},
],
NYDSYQ: [
{
prop: "qszt",
label: "权属状态",
},
{
prop: "qllxmc",
label: "权利类型",
},
{
prop: "djlxmc",
label: "登记类型",
},
{
prop: "ssywh",
label: "上手业务号",
},
{
prop: "dah",
label: "档案号",
},
{
prop: "ywh",
label: "业务号",
},
{
prop: "bdcdyh",
label: "不动产单元号",
},
{
prop: "zl",
label: "坐落",
},
{
prop: "gyqk",
label: "共有情况",
},
{
prop: "qlrlx",
label: "权利人类型",
},
{
prop: "qlrmc",
label: "权利人",
},
{
prop: "qlrzjzl",
label: "证件种类",
},
{
prop: "qlrzjhm",
label: "证件号",
},
{
prop: "mj",
label: "使用权面积(m²)",
},
{
prop: "qlxzmc",
label: "权利性质",
},
{
prop: "ytmc",
label: "土地用途",
},
{
prop: "fbfdm",
label: "发包方代码",
},
{
prop: "fbfmc",
label: "发包方名称",
},
{
prop: "cbqzsj",
label: "承包起止时间",
},
{
prop: "cbqx",
label: "承包期限",
},
{
prop: "tdsyqxzmc",
label: "土地所有权性质",
},
{
prop: "syttlxmc",
label: "水域滩涂类型",
},
{
prop: "yzyfsmc",
label: "养殖业方式",
},
{
prop: "cyzl",
label: "草原质量",
},
{
prop: "syzcl",
label: "适宜载畜量",
},
{
prop: "ydyhflmc",
label: "用地用海分类",
},
{
prop: "djyy",
label: "登记原因",
},
{
prop: "bdcqzh",
label: "不动产权证号",
},
{
prop: "djsj",
label: "登记时间",
},
{
prop: "dbr",
label: "登簿人",
},
{
prop: "fj",
label: "附记",
},
],
DYAQ: [
{
prop: "qszt",
label: "权属状态",
},
{
prop: "dybdclx",
label: "抵押不动产类型",
},
{
prop: "djlxmc",
label: "登记类型",
},
{
prop: "ssywh",
label: "上手业务号",
},
{
prop: "dah",
label: "档案号",
},
{
prop: "ywh",
label: "业务号",
},
{
prop: "bdcdyh",
label: "不动产单元号",
},
{
prop: "zl",
label: "在建建筑物坐落",
},
{
prop: "qlrmc",
label: "抵押权人",
},
{
prop: "qlrzjzl",
label: "抵押权人证件种类",
},
{
prop: "qlrzjhm",
label: "抵押权人证件号",
},
{
prop: "ywrmc",
label: "抵押人",
},
{
prop: "ywrzjzl",
label: "抵押人证件种类",
},
{
prop: "ywrzjhm",
label: "抵押人证件号",
},
{
prop: "dyfs",
label: "抵押方式",
render: (h, scope) => {
return (
<div>
<span v-show={scope.row.dyfs == '1'}>一般抵押权</span>
<span v-show={scope.row.dyfs == '2'}>最高额抵押权</span>
</div>
)
}
},
{
prop: "sfygdj",
label: "是否预告登记",
},
{
prop: "zjjzwdyfw",
label: "在建建筑物抵押范围",
},
{
prop: "dymj",
label: "抵押面积",
},
{
prop: "bdbzzqse",
label: "被担保主债权数额(万元)",
},
{
prop: "dbfw",
label: "担保范围",
},
{
prop: "zwlxqssj",
label: "债务履行起始时间",
},
{
prop: "zwlxjssj",
label: "债务履行结束时间",
},
{
prop: "zwlxqx",
label: "债务履行期限(债务确定期间)",
},
{
prop: "zgzqqdsshse",
label: "最高债权确定事实和数额",
},
{
prop: "sfczyd",
label: "是否存在禁止或限制转让抵押不动产的约定",
},
{
prop: "djyy",
label: "登记原因",
},
{
prop: "bdcqzh",
label: "不动产登记证明号",
},
{
prop: "fj",
label: "附记",
},
{
prop: "qlqtzk",
label: "权利其他状况",
},
{
prop: "djsj",
label: "登记时间",
},
{
prop: "dbr",
label: "登簿人",
},
{
prop: "djjg",
label: "登记机构",
},
{
prop: "zxywh",
label: "注销抵押业务号",
},
{
prop: "zxdyyy",
label: "注销抵押原因",
},
{
prop: "zxsj",
label: "注销登记时间",
},
{
prop: "zxdbr",
label: "登簿人",
},
],
DYIQ: [
{
prop: "qszt",
label: "权属状态",
},
{
prop: "djlxmc",
label: "登记类型",
},
{
prop: "ssywh",
label: "上手业务号",
},
{
prop: "dah",
label: "档案号",
},
{
prop: "ywh",
label: "业务号",
},
{
prop: "gydbdcdyh",
label: "供役地不动产单元号",
},
{
prop: "gydqlr",
label: "供役地权利人",
},
{
prop: "gydqlrzjzl",
label: "供役地权利人证件种类",
},
{
prop: "xydbdcdyh",
label: "需役地不动产单元号",
},
{
prop: "xydzl",
label: "需役地坐落",
},
{
prop: "xydqlr",
label: "需役地权利人",
},
{
prop: "xydqlrzjzl",
label: "需役地权利人证件种类",
},
{
prop: "xydzjh",
label: "需役地证件号",
},
{
prop: "djyy",
label: "登记原因",
},
{
prop: "dyqnr",
label: "地役权内容",
},
{
prop: "qlqssj",
label: "权利起始时间",
},
{
prop: "qljssj",
label: "权利结束时间",
},
{
prop: "bdcdjzmh",
label: "不动产登记证明号",
},
{
prop: "qxdm",
label: "区县代码",
},
{
prop: "djjg",
label: "登记机构",
},
{
prop: "dbr",
label: "登簿人",
},
{
prop: "djsj",
label: "登记时间",
},
],
YGDJ: [
{
prop: "qszt",
label: "权属状态",
},
{
prop: "ygdjzl",
label: "预告登记种类",
},
{
prop: "djlxmc",
label: "登记类型",
},
{
prop: "ssywh",
label: "上手业务号",
},
{
prop: "dah",
label: "档案号",
},
{
prop: "ywh",
label: "业务号",
},
{
prop: "bdcdyh",
label: "不动产单元号",
},
{
prop: "zl",
label: "坐落",
},
{
prop: "qlrmc",
label: "权利人",
},
{
prop: "qlrzjzl",
label: "证件种类",
},
{
prop: "qlrzjhm",
label: "证件号",
},
{
prop: "ywrmc",
label: "义务人",
},
{
prop: "ywrzjzl",
label: "证件种类",
},
{
prop: "ywrzjhm",
label: "证件号",
},
{
prop: "fwxz",
label: "房屋性质",
},
{
prop: "ghyt",
label: "规划用途",
},
{
prop: "fwzcs",
label: "房屋总层数",
},
{
prop: "fwszc",
label: "房屋所在层",
},
{
prop: "jzmj",
label: "建筑面积",
},
{
prop: "djyy",
label: "登记原因",
},
{
prop: "qdjg",
label: "取得价格/被担保主债权数额",
},
{
prop: "jedw",
label: "金额单位",
},
{
prop: "dbfw",
label: "担保范围",
},
{
prop: "sfczyd",
label: "是否存在禁止或限制转让抵押不动产的约定",
},
{
prop: "djsj",
label: "登记时间",
},
{
prop: "bdcqzh",
label: "不动产登记证明号",
},
{
prop: "dbr",
label: "登簿人",
},
{
prop: "zxywh",
label: "注销预告业务号",
},
{
prop: "zxyy",
label: "注销预告原因",
},
{
prop: "zxsj",
label: "注销时间",
}
],
CFDJ: [
{
prop: "qszt",
label: "权属状态",
},
{
prop: "cflxmc",
label: "查封类型",
},
{
prop: "ssywh",
label: "上手业务号",
},
{
prop: "dah",
label: "档案号",
},
{
prop: "ywh",
label: "业务号",
},
{
prop: "bdcdyh",
label: "不动产单元号",
},
{
prop: "zl",
label: "坐落",
},
{
prop: "cfjg",
label: "查封机关",
},
{
prop: "qlrmc",
label: "不动产权利人",
},
{
prop: "qlrzjzl",
label: "证件种类",
},
{
prop: "qlrzjhm",
label: "证件号",
},
{
prop: "cfwh",
label: "查封文号",
},
{
prop: "cfwj",
label: "查封文件",
},
{
prop: "cfqssj",
label: "查封起始时间",
},
{
prop: "cfjssj",
label: "查封结束时间",
},
{
prop: "cfqx",
label: "查封期限",
},
{
prop: "cffw",
label: "查封范围",
},
{
prop: "djjg",
label: "登记机构",
},
{
prop: "dbr",
label: "登簿人",
},
{
prop: "djsj",
label: "登记时间",
},
{
prop: "zxywh",
label: "解封业务号",
},
{
prop: "jfjg",
label: "解封机关",
},
{
prop: "jfwh",
label: "解封文号",
},
{
prop: "jfwj",
label: "解封文件",
},
{
prop: "zxsj",
label: "解封登记时间",
},
{
prop: "zxdbr",
label: "解封登簿人",
},
],
YYDJ: [
{
prop: "qszt",
label: "权属状态",
},
{
prop: "qllxmc",
label: "权利类型",
},
{
prop: "djlxmc",
label: "登记类型",
},
{
prop: "ssywh",
label: "上手业务号",
},
{
prop: "dah",
label: "档案号",
},
{
prop: "ywh",
label: "业务号",
},
{
prop: "bdcdyh",
label: "不动产单元号",
},
{
prop: "zl",
label: "坐落",
},
{
prop: "yyr",
label: "异议人",
},
{
prop: "zjzl",
label: "证件种类",
},
{
prop: "zjh",
label: "证件号",
},
{
prop: "yysx",
label: "异议事项",
},
{
prop: "bdcdjzmh",
label: "不动产登记证明号",
},
{
prop: "djjg",
label: "登记机构",
},
{
prop: "dbr",
label: "登簿人",
},
{
prop: "djsj",
label: "登记时间",
},
{
prop: "zxyyywh",
label: "注销异议业务号",
},
{
prop: "zxyyyy",
label: "注销异议原因",
},
{
prop: "zxyydbr",
label: "注销异议登簿人",
},
{
prop: "zxyydjsj",
label: "注销异议登记时间",
},
],
}
}
}
let datas = new data()
export {
datas
}
<!--
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-05-17 10:41:15
-->
<template>
<div>
<div class="process-viewer">
<div v-show="!isLoading" ref="processCanvas" class="process-canvas" style="height: 280px;" />
<!-- 自定义箭头样式,用于成功状态下流程连线箭头 -->
<defs ref="customSuccessDefs">
<marker id="sequenceflow-end-white-success" view-box="0 0 20 20" ref-x="11" ref-y="10" marker-width="10"
marker-height="10" orient="auto">
<path class="success-arrow" d="M 1 5 L 11 10 L 1 15 Z"
style="stroke-width: 1px; stroke-linecap: round; stroke-dasharray: 10000, 1;" />
</marker>
<marker id="conditional-flow-marker-white-success" view-box="0 0 20 20" ref-x="-1" ref-y="10" marker-width="10"
marker-height="10" orient="auto">
<path class="success-conditional" d="M 0 10 L 8 6 L 16 10 L 8 14 Z"
style="stroke-width: 1px; stroke-linecap: round; stroke-dasharray: 10000, 1;" />
</marker>
</defs>
<!-- 自定义箭头样式,用于失败状态下流程连线箭头 -->
<defs ref="customFailDefs">
<marker id="sequenceflow-end-white-fail" view-box="0 0 20 20" ref-x="11" ref-y="10" marker-width="10"
marker-height="10" orient="auto">
<path class="fail-arrow" d="M 1 5 L 11 10 L 1 15 Z"
style="stroke-width: 1px; stroke-linecap: round; stroke-dasharray: 10000, 1;" />
</marker>
<marker id="conditional-flow-marker-white-fail" view-box="0 0 20 20" ref-x="-1" ref-y="10" marker-width="10"
marker-height="10" orient="auto">
<path class="fail-conditional" d="M 0 10 L 8 6 L 16 10 L 8 14 Z"
style="stroke-width: 1px; stroke-linecap: round; stroke-dasharray: 10000, 1;" />
</marker>
</defs>
<div style="position: absolute; top: 0px; left: 0px; width: 100%;">
<el-row type="flex" justify="end">
<el-button-group key="scale-control" size="medium">
<el-button size="medium" type="default" :plain="true" :disabled="defaultZoom <= 0.3" icon="el-icon-zoom-out"
@click="processZoomOut()" />
<el-button size="medium" type="default" style="width: 90px;">{{ Math.floor(this.defaultZoom * 10 * 10) + "%"
}}</el-button>
<el-button size="medium" type="default" :plain="true" :disabled="defaultZoom >= 3.9" icon="el-icon-zoom-in"
@click="processZoomIn()" />
<el-button size="medium" type="default" icon="el-icon-c-scale-to-original" @click="processReZoom()" />
<slot />
</el-button-group>
</el-row>
</div>
</div>
<!-- 已完成节点悬浮弹窗 -->
<div class="information-list">
<el-select v-model="selectValue" @change="handleSelect">
<el-option v-for="item in selectOptions" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
<el-table height="190" :data="taskCommentList" size="mini" border header-cell-class-name="table-header-gray">
<el-table-column label="序号" header-align="center" align="center" type="index" width="55px" />
<el-table-column label="流程状态" header-align="center" align="center">
<template slot-scope="scope">
<div v-if="scope.row.finishTime == null">正在办理</div>
<div v-else>已完结</div>
</template>
</el-table-column>
<el-table-column label="环节名称" prop="taskName" minWidth="100" align="center" />
<el-table-column label="办理人" prop="agent" minWidth="120" align="center" />
<el-table-column label="处理时间" prop="createTime" width="160" align="center" />
<el-table-column label="办结时间" prop="finishTime" width="160" align="center" />
<el-table-column label="操作方式" align="center">
</el-table-column>
</el-table>
</div>
</div>
</template>
<script>
import '@/styles/package/theme/index.scss'
import BpmnViewer from 'bpmn-js/lib/Viewer'
import { getusername } from "@/api/getusername.js";
import MoveCanvasModule from 'diagram-js/lib/navigation/movecanvas'
export default {
props: {
formData: {
type: Object,
default: {}
}
},
data () {
return {
dlgTitle: undefined,
defaultZoom: 1,
// 是否正在加载流程图
isLoading: true,
bpmnViewer: undefined,
// 已完成流程元素
processNodeInfo: undefined,
// 当前任务id
selectTaskId: undefined,
// 任务节点审批记录
taskList:[],
taskCommentList: [],
// 已完成任务悬浮延迟Timer
hoverTimer: null,
// 下拉
selectValue: '',
selectOptions: []
}
},
created () {
this.$nextTick(() => {
// 获取流程记录
this.getCommentList()
this.setProcessStatus(this.formData.finishedInfo);
this.importXML(this.formData.xml)
})
},
destroyed () {
this.clearViewer()
},
methods: {
processReZoom () {
this.defaultZoom = 1
this.bpmnViewer.get('canvas').zoom('fit-viewport', 'auto')
},
processZoomIn (zoomStep = 0.1) {
const newZoom = Math.floor(this.defaultZoom * 100 + zoomStep * 100) / 100
if (newZoom > 4) {
throw new Error('[Process Designer Warn ]: The zoom ratio cannot be greater than 4')
}
this.defaultZoom = newZoom
this.bpmnViewer.get('canvas').zoom(this.defaultZoom)
},
processZoomOut (zoomStep = 0.1) {
const newZoom = Math.floor(this.defaultZoom * 100 - zoomStep * 100) / 100
if (newZoom < 0.2) {
throw new Error('[Process Designer Warn ]: The zoom ratio cannot be scss than 0.2')
}
this.defaultZoom = newZoom
this.bpmnViewer.get('canvas').zoom(this.defaultZoom)
},
getOperationTagType (type) {
return 'success'
},
// 流程图预览清空
clearViewer (a) {
if (this.$refs.processCanvas) {
this.$refs.processCanvas.innerHTML = ''
}
if (this.bpmnViewer) {
this.bpmnViewer.destroy()
}
this.bpmnViewer = null
},
// 添加自定义箭头
addCustomDefs () {
const canvas = this.bpmnViewer.get('canvas')
const svg = canvas._svg
const customSuccessDefs = this.$refs.customSuccessDefs
const customFailDefs = this.$refs.customFailDefs
svg.appendChild(customSuccessDefs)
svg.appendChild(customFailDefs)
},
// 任务悬浮弹窗
onSelectElement (element) {
this.selectTaskId = undefined
this.dlgTitle = undefined
let allfinishedTaskSet = [...this.processNodeInfo.finishedTaskSet, ...this.processNodeInfo.unfinishedTaskSet]
if (this.processNodeInfo == null || allfinishedTaskSet == null)
return
if (element == null || allfinishedTaskSet.indexOf(element.id) === -1) {
return
}
this.selectTaskId = element.id
this.selectValue = element.id
this.dlgTitle = element.businessObject ? element.businessObject.name : undefined
// 计算当前悬浮任务审批记录,如果记录为空不显示弹窗
this.taskCommentList = (this.taskList || []).filter(item => {
return item.taskDefKey === this.selectTaskId
})
if (this.selectTaskId.length > 3) {
this.taskCommentList = this.taskList;
}
},
// 下拉列表切换
handleSelect (val) {
this.taskCommentList = (this.taskList || []).filter(item => {
return item.taskDefKey === val
})
if (val.length > 3) {
this.taskCommentList = this.taskList;
}
},
// 显示流程图
async importXML (xml) {
let xmlData = this.$x2js.xml2js(xml).definitions.process;
this.selectOptions = xmlData.userTask.map(item => {
return { value: item._id, label: item._name }
})
this.selectOptions = [{ value: xmlData.startEvent._id, label: '浏览记录' }, ...this.selectOptions]
this.selectOptions = this.selectOptions.map(item => {
if (this.formData.finishedInfo.finishedTaskSet.includes(item.value)) {
return item
}
if (this.formData.finishedInfo.unfinishedTaskSet.includes(item.value)) {
return item
}
}).filter(Boolean);
this.selectValue = xmlData.startEvent._id
this.clearViewer('a')
if (xml != null && xml !== '') {
try {
this.bpmnViewer = new BpmnViewer({
additionalModules: [
// 移动整个画布
MoveCanvasModule
],
container: this.$refs.processCanvas
})
// 任务节点悬浮事件
this.bpmnViewer.on('element.click', ({ element }) => {
this.onSelectElement(element)
})
await this.bpmnViewer.importXML(xml)
this.isLoading = true
this.addCustomDefs()
} catch (e) {
this.clearViewer('b')
} finally {
this.isLoading = false
this.setProcessStatus(this.processNodeInfo)
this.$nextTick(() => {
this.processReZoom()
})
}
}
},
// 获取流程记录
getCommentList() {
this.formData.allCommentList.forEach(async (item,index) => {
var arr=item.assigneeName.split(",");
// 获取用户名
let res = await getusername(arr)
if(res){
let str=""
res.data.content.forEach((el,i) => {
if(str==""){
str=el.name;
}else{
str += ","+el.name;
}
this.formData.allCommentList[index].agent=str
})
}
})
setTimeout(() => {
this.taskList =this.formData.allCommentList;
// 处理数据之后赋值
this.taskCommentList=this.taskList
}, 100)
// this.$nextTick(() => {
// this.taskList =this.formData.allCommentList;
// this.taskCommentList=this.taskList
// })
},
// 设置流程图元素状态
setProcessStatus (processNodeInfo) {
this.processNodeInfo = processNodeInfo
if (this.isLoading || this.processNodeInfo == null || this.bpmnViewer == null) return
const { finishedTaskSet, rejectedTaskSet, unfinishedTaskSet, finishedSequenceFlowSet } = this.processNodeInfo
const canvas = this.bpmnViewer.get('canvas')
const elementRegistry = this.bpmnViewer.get('elementRegistry')
if (Array.isArray(finishedSequenceFlowSet)) {
finishedSequenceFlowSet.forEach(item => {
if (item != null) {
canvas.addMarker(item, 'success')
const element = elementRegistry.get(item)
const conditionExpression = element.businessObject.conditionExpression
if (conditionExpression) {
canvas.addMarker(item, 'condition-expression')
}
}
})
}
if (Array.isArray(finishedTaskSet)) {
finishedTaskSet.forEach(item => canvas.addMarker(item, 'success'))
}
if (Array.isArray(unfinishedTaskSet)) {
unfinishedTaskSet.forEach(item => canvas.addMarker(item, 'primary'))
}
if (Array.isArray(rejectedTaskSet)) {
rejectedTaskSet.forEach(item => {
if (item != null) {
const element = elementRegistry.get(item)
if (element.type.includes('Task')) {
canvas.addMarker(item, 'danger')
} else {
canvas.addMarker(item, 'warning')
}
}
})
}
}
}
}
</script>
<style scoped lang="scss">
.information-list {
height: 220px;
margin-top: 10px;
p {
font-size: 16px;
line-height: 24px;
}
}
/deep/.bjs-powered-by {
display: none;
}
// /deep/.information-list {
// height: 170px;
// overflow: visible;
// }
</style>
<!--
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-05-17 10:41:20
-->
<template>
<div>
<lb-table :column="column" :pagination="false" :key="key" :heightNumSetting="true" :minHeight="150"
:data="tableDataList">
</lb-table>
<addQlr v-model="dialog" :details="details" :showButton="showButton" @updateDetail="handleupdateDetail" />
</div>
</template>
<script>
import addQlr from './dialog/addQlr.vue'
import { mapGetters } from 'vuex'
export default {
components: {
addQlr
},
computed: {
...mapGetters(["dictData"]),
},
props: {
tableData: {
type: Array,
default: function () {
return []
}
},
gyfs: {
type: String,
default: '1'
}
},
data () {
return {
key: 0,
dataIndex: 0,
dialog: false,
isaddupdate: false,
showButton: this.$route.query.viewtype ? false : true,
details: {},
tableDataList: [],
InformationTable: [
{
width: '50',
renderHeader: (h, scope) => {
return <div> {
this.$route.query.viewtype == 1 ? '序号' : <i class="el-icon-plus pointer" onClick={() => { this.addClick() }}></i>
}
</div>
},
render: (h, scope) => {
return (
<div>
{
this.$route.query.viewtype == 1 ? <span>{scope.$index + 1}</span> :
<i class="el-icon-minus pointer" onClick={() => { this.deleClick(scope.$index, scope.row) }}></i>
}
</div>
)
}
},
{
label: '身份证读卡器',
align: 'center',
render: (h, scope) => {
return <el-button type="text" icon="el-icon-tickets" onClick={() => { this.readClick(scope) }}>读取</el-button>
}
},
{
prop: "sqrmc",
label: "姓名/名称"
},
{
prop: "zjzl",
label: "证件种类",
render: (h, scope) => {
return this.dictData['A30'] && this.dictData['A30'].map(option => {
if (option.dcode == scope.row.zjzl) {
return <span>{option.dname}</span>
}
})
}
},
{
prop: "zjh",
label: "证件号"
},
{
prop: "dh",
label: "联系电话"
},
{
label: '操作',
render: (h, scope) => {
return (
<div>
{
this.$route.query.viewtype ? <el-button
icon="el-icon-view"
type="text"
onClick={() => { this.queryViewClick(scope.$index, scope.row) }}>查看</el-button> : <el-button
icon="el-icon-edit-outline"
type="text"
onClick={() => { this.editClick(scope.$index, scope.row) }}>编辑</el-button>
}
</div>
)
}
}
],
column: []
}
},
watch: {
tableData: {
handler: function (val, oldVal) {
let that = this
this.$nextTick(() => {
if (val.length == 0 || !val) {
that.tableDataList = _.cloneDeep([{
sqrmc: '',
dlrzjlx: '',
dlrzjh: '',
fr: ''
}])
} else {
that.tableDataList = _.cloneDeep(val)
}
})
},
immediate: true,
deep: true
},
gyfs: {
handler (newVal, oldValue) {
let dataList = _.cloneDeep(this.InformationTable)
if (newVal == 0) {
// this.column = _.cloneDeep(dataList).slice(1, dataList.length)
this.column = _.cloneDeep(dataList)
} else if ((newVal == '1' || newVal == '3')) {
this.column = dataList
} else {
this.column = _.cloneDeep(dataList)
this.column.splice(
2, 0, {
prop: "fs",
label: "份数"
})
}
},
immediate: true
}
},
methods: {
handleupdateDetail (value) {
if (this.isaddupdate) {
if (!_.isEqual(value, this.tableData)) {
this.tableDataList[this.tableDataList.length] = _.cloneDeep(value);
this.$emit('upDateQlrxxList', this.tableDataList)
}
} else {
if (!_.isEqual(value, this.tableData)) {
this.tableDataList[this.dataIndex] = _.cloneDeep(value);
this.$emit('upDateQlrxxList', this.tableDataList)
}
}
this.key++
},
// 新增
addClick () {
if (this.gyfs == '0' && this.tableDataList.length > 0) {
this.$message.warning("当前共有方式为单独所有,无法添加多个权利人")
} else {
this.dialog = true
this.isaddupdate = true
}
},
// 删除
deleClick (index, row) {
this.$confirm('确定要删除吗, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.tableData.splice(index, 1)
}).catch(() => {
});
},
// 身份证读取
readClick () { },
// 修改
editClick (index, row) {
// popupDialog("申请人信息", "workflow/components/addQlr", {
// showButton: this.$route.query.viewtype ? false : true,
// dataIndex :index,
// details :row,
// isaddupdate :false
// });
this.dataIndex = index
this.dialog = true
this.details = row
this.isaddupdate = false
},
queryViewClick (index, row) {
// popupDialog("申请人信息", "workflow/components/addQlr", {
// showButton: this.$route.query.viewtype ? false : true,
// details: row,
// });
this.dialog = true
this.details = row
}
}
}
</script>
<!--
* @Description: 功能:审批意见
* @Autor: renchao
* @LastEditTime: 2023-05-17 10:41:24
-->
<template>
<div class='spyj loadingtext'>
<div class="box">
<b class="spyj_title">审批表</b>
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="120px">
<div class="spyj_form" v-for="(item, index) in tableData" :key="index">
<div class="item_left">
{{ item.jdmc }}意见
</div>
<div class="item_right">
<el-row>
<el-col :span="24">
<el-form-item label-width="0" class="opinion_item" prop="shyj">
<el-input type="textarea" :rows="4" class="opinion" placeholder="请输入审批意见"
v-if="item.stepShjy == '1' && ableOperation" v-model="ruleForm.shyj"></el-input>
<el-input type="textarea" :rows="4" class="opinion" v-model="item.shyj" v-else :disabled="true">
</el-input>
<el-button class="opinion_btn" @click="commonOpinion"
v-if="item.stepShjy == '1' && ableOperation">常用意见</el-button>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<el-form-item label="审查人" prop="shryxm">
{{ item.shryxm }}
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="审核时间" prop="shjssj" :key="refresh">
{{ item.shjssj }}
</el-form-item>
</el-col>
</el-row>
</div>
</div>
<div class="submit_button" v-if="ableOperation">
<el-button type="primary" @click="onSubmit">保存</el-button>
</div>
</el-form>
</div>
<el-empty v-if="isNoData" description="暂无数据"></el-empty>
</div>
</template>
<script>
import { getSpyjList, saveSpyj, saveSpyjBySlsq } from "@/api/fqsq.js";
import { mapGetters } from 'vuex'
export default {
computed: {
...mapGetters(['userData', 'yjsqOptions'])
},
data () {
return {
isNoData: false,
bsmSlsq: '',
//刷新值
refresh: 10,
ableOperation: true,
bsmSlsq: this.$route.query.bsmSlsq,
bestepid: this.$route.query.bestepid,
ruleForm: {},
rules: {
shyj: [
{ required: true, message: '请输入审批意见', trigger: 'blur' }
],
},
tableData: [],
propsParam: {}
}
},
watch: {
yjsqOptions: {
handler (val) {
this.ruleForm.shyj = val
},
deep: true,
immediate: true
},
},
mounted () {
this.propsParam = this.$attrs;
if (this.$route.query.viewtype) {
this.ableOperation = false
}
this.list();
},
methods: {
//审批意见数据初始化
list () {
let that = this
this.$startLoading()
var formdata = new FormData();
formdata.append("bsmBusiness", this.propsParam.bsmBusiness);
formdata.append("bestepid", this.$route.query.bestepid);
formdata.append("ableOperation", this.ableOperation)
getSpyjList(formdata).then((res) => {
this.$endLoading()
if (res.code === 200 && res.result) {
this.tableData = res.result ? res.result : []
if (res.result.length == 0) {
that.isNoData = true
}
this.ruleForm = res.result[res.result.length - 1]
}
})
},
onSubmit () {
this.ruleForm.bsmSlsq = this.bsmSlsq
this.ruleForm.bestepid = this.bestepid
saveSpyjBySlsq(this.ruleForm).then(res => {
if (res.code === 200) {
this.$message.success("保存成功")
this.refresh += 1
} else {
this.$message.error(res.message)
}
})
},
//打开常用意见列表弹窗
commonOpinion () {
this.$popupDialog("常用意见", "workflow/components/dialog/commonOpinion", {}, "70%", true)
},
//使用常用意见
useOpinion (opinion) {
this.ruleForm.shyj = opinion
}
}
}
</script>
<style scoped lang='scss'>
@import "~@/styles/mixin.scss";
.spyj {
width: 100%;
height: 100%;
background-color: #f5f5f5;
padding: 5px;
.box {
overflow-x: auto;
width: 100%;
height: 95%;
background: #fff;
text-align: center;
padding: 4px;
overflow-y: scroll;
padding-top: 20px;
padding: 20px 40px;
}
.spyj_title {
line-height: 68px;
border: 1px solid $borderColor;
text-align: center;
font-size: 22px;
font-weight: 400;
background-color: #eceef2;
display: block;
border-bottom: none;
}
/deep/.el-form-item {
margin-bottom: 0;
}
.bottom10 {
margin-bottom: 15px;
}
.spyj_form {
display: flex;
border: 1px solid $borderColor;
.item_left {
width: 150px;
background-color: #f8f8fa;
color: #606266;
display: flex;
font-size: 14px;
text-indent: 80px;
align-items: center;
border-right: 1px solid $borderColor;
}
.item_right {
flex: 1;
width: 100%;
/deep/.el-form-item__label {
background-color: #f8f8fa;
}
/deep/.el-form-item__content {
display: block;
text-align: left;
text-indent: 10px;
}
.opinion_item {
/deep/.el-form-item__error {
margin-top: -16px !important;
left: 3px;
}
border-bottom: 1px solid $borderColor;
}
.opinion {
position: relative;
font-size: 14px;
/deep/.el-textarea__inner {
border: none;
}
}
.opinion_btn {
position: absolute;
right: 15px;
bottom: 10px;
}
}
}
.submit_button {
text-align: center;
margin: 15px 0;
}
}
</style>
<!--
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-05-17 10:41:35
-->
<template>
<lb-table :column="column" :maxHeight="300" heightNumSetting :pagination="false" :key="key" :data="tableData">
</lb-table>
</template>
<script>
import addQlr from './dialog/addQlr.vue'
import { mapGetters } from 'vuex'
export default {
components: {
addQlr
},
computed: {
...mapGetters(["dictData"]),
},
props: {
tableData: {
type: Array,
default: function () {
return []
}
},
gyfs: {
type: String,
default: '1'
}
},
data () {
return {
key: 0,
dataIndex: 0,
dialog: false,
details: {},
tableDataList: [],
qlrCommonTable: [
{
width: '50',
renderHeader: (h, scope) => {
return <div> {
this.$route.query.viewtype == 1 ? '序号' : <i class="el-icon-plus pointer" onClick={() => { this.handleAdd() }}></i>
}
</div>
},
render: (h, scope) => {
return (
<div>
{
this.$route.query.viewtype == 1 ? <span>{scope.$index + 1}</span> :
<i class="el-icon-minus pointer" onClick={() => { this.handleMinus(scope.$index, scope.row) }}></i>
}
</div>
)
}
},
{
prop: "sqrmc",
label: "姓名/名称"
},
{
prop: "zjzl",
label: "证件种类"
},
{
prop: "zjh",
label: "证件号"
},
{
prop: "dh",
label: "联系电话"
},
{
prop: "frmc",
label: "法人"
},
{
label: '操作',
render: (h, scope) => {
return (
<div>
{
<el-button icon="el-icon-view" type="text" onClick={() => { this.handleView(scope.$index, scope.row) }}>查看</el-button>
}
</div>
)
}
}
],
column: this.qlrCommonTable
}
},
watch: {
tableData: {
handler: function (val, oldVal) {
let that = this
if (val.length == 0 || !val) {
that.tableDataList = _.cloneDeep([{
sqrmc: '',
dlrzjlx: '',
dlrzjh: '',
fr: ''
}])
} else {
that.tableDataList = _.cloneDeep(val)
}
},
immediate: true,
deep: true
},
gyfs: {
handler (newVal, oldValue) {
let dataList = _.cloneDeep(this.qlrCommonTable)
if (newVal == '1') {
this.column = _.cloneDeep(dataList).slice(1, dataList.length)
} else if ((newVal == '2')) {
this.column = dataList
} else {
this.column = _.cloneDeep(dataList)
this.column.splice(
2, 0, {
prop: "fs",
label: "份数"
})
}
},
immediate: true
}
},
methods: {
updateDetail (value) {
this.tableDataList[this.dataIndex] = value
this.key++
this.$emit('upDateQlrxxList', this.tableDataList)
},
// 添加
handleAdd () {
this.dialog = true
},
// 减
handleMinus (index, row) {
this.tableData.splice(index, 1)
},
// 身份证读取
readClick () { },
// 修改
handleEdit (index, row) {
console.log(row, 'rowrowrowrowrow');
this.dataIndex = index
this.dialog = true
this.details = row
},
handleView () {
this.dialog = true
}
}
}
</script>
<style scoped lang='scss'>
</style>
\ No newline at end of file
<!--
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-05-17 10:41:45
-->
<template>
<div class="from-clues">
<div class="invalid-title">
<i class="el-icon-question invalid-icon"></i>
<div class="invalid-body">您是否确定终止该业务办理?</div>
</div>
<div class="invalid-reson">终止原因:</div>
<el-input
v-model="stopMessage"
placeholder="请输入终止原因"
type="textarea"
:rows="4"></el-input>
<el-button style="float: right">取消</el-button>
<el-button type="primary" @click="onSubmit" style="float: right">退件</el-button>
</div>
</template>
<script>
import { stopTask } from "@/api/fqsq.js";
export default {
props: {
formData: {
type: Object,
default: {},
},
},
data () {
return {
stopMessage: "",
};
},
methods: {
onSubmit () {
stopTask({
bsmSlsq: this.formData.bsmSlsq,
bestepid: this.formData.bestepid,
stopMessage: this.stopMessage,
}).then((res) => {
this.$message.success("终止成功");
setTimeout(() => {
// window.opener.location.reload(); //刷新父窗口
if (window.opener && window.opener.getBpageList) {
window.opener.getBpageList();
} else {
window.opener.frames[0].getBpageList();
}
window.close();
this.$emit("input", false);
}, 1000);
});
},
},
};
</script>
<style scoped lang="scss">
@import "~@/styles/mixin.scss";
.invalid-title {
display: flex;
align-content: center;
.invalid-icon {
color: rgb(254, 148, 0);
font-size: 34px;
margin-right: 10px;
}
.invalid-body {
line-height: 40px;
margin-bottom: 10px;
}
}
.invalid-reson {
margin-bottom: 10px;
}
.dialog-footer {
margin-top: 10px;
display: flex;
justify-content: flex-end;
}
</style>
<!--
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-05-17 10:41:49
-->
<template>
<div class="szxx">
<el-card class="box-card" v-for="(item, index) in tableData" :key="index">
<div slot="header" class="szxx_header">
<span class="header_type">{{
item.bdcqzlx == 1 ? "不动产权证书" : "不动产登记证明"
}}</span>
<div class="header_text">{{ item.bdcqzh }}</div>
</div>
<div class="szxx_body card_padding">
<div class="text color_iray">
<span>{{ item.qllx }}</span>
</div>
<div class="text color_red">
<span>{{ item.qlr }}</span>
</div>
<div class="text color_iray">
<span>{{ item.gyqk }}</span>
</div>
<div class="text color_red">
<span>{{ item.bdcdyh }}</span>
</div>
<div class="text color_iray">
<span>{{ item.zl }}</span>
</div>
<div class="text color_red">
<span>{{ item.yt }}</span>
</div>
<div class="text color_iray">
<span>{{ item.mj }}</span>
</div>
<div class="text color_red">
<span>{{ item.syqx }}</span>
</div>
<div class="text color_iray">
<span>印刷序列号:{{ item.ysxlh }}</span>
</div>
</div>
<div class="card_padding">
<div class="top_line middle_margin"></div>
<div class="text" v-if="item.ysxlh">
<el-button class="operation_button" type="text" @click="openInvalidDiglog(item)">再次打印({{ item.szcs
}})</el-button>
<el-button class="operation_button" type="text" @click="openRecordPop(item)">缮证记录</el-button>
</div>
<div class="text" v-else>
<el-button class="operation_button" type="text" @click="openZsylDialog(item, 2)">证书打印1({{ item.szcs
}}</el-button>
<el-button class="operation_button" type="text" @click="openRecordPop(item)">缮证记录</el-button>
</div>
</div>
</el-card>
<el-dialog title="证书作废" :visible.sync="invalidDiglog" width="30%" :modal-append-to-body="false" top="30vh">
<div class="invalid-diglog">
<div class="invalid-title">
<i class="el-icon-question invalid-icon"></i>
<div class="invalid-body">您确定作废证书并再次打印?</div>
</div>
<div class="invalid-reson">作废原因:</div>
<el-input v-model="zfyy" placeholder="请输入作废原因" type="textarea" :rows="4"></el-input>
<div class="text-center pt-10">
<el-button @click="closeInvalidDiglog">取 消</el-button>
<el-button type="primary" @click="confirmInvalid">确 定</el-button>
</div>
</div>
</el-dialog>
<el-empty description="暂无数据" v-if="tableData.length == 0"></el-empty>
</div>
</template>
<script>
import { mapGetters } from 'vuex'
import { getSlsqBdcqzList, invalidCertificate } from "@/api/bdcqz.js";
export default {
props: {},
data () {
return {
dialog: false,
tableData: [],
bdcqzlx: 1,
bdcqz: {},
zfyy: "",
invalidDiglog: false,
bsmSz: "",
bsmBdcqz: ""
};
},
computed: {
...mapGetters(['isRefresh'])
},
watch: {
isRefresh: {
handler (newVal, oldVal) {
if (newVal) this.list()
}
}
},
created () {
this.list();
},
methods: {
//初始化列表
list () {
var bsmSlsq = this.$route.query.bsmSlsq;
getSlsqBdcqzList({ bsmSlsq: bsmSlsq }).then((res) => {
if (res.code === 200) {
this.tableData = res.result;
if (res.result) {
this.bdcqz = res.result[0];
}
}
});
},
//打开证书预览弹窗
openZsylDialog (item, type) {
if (type == 1) {
//证书预览
this.$popupDialog("证书预览", "workflow/components/dialog/zsyl", { bdcqz: item }, "70%", true);
} else {
this.$popupDialog("不动产权证书", "workflow/components/dialog/zsdy", { bdcqz: item }, "70%", true);
}
},
//再次打印
openInvalidDiglog (item) {
this.bsmSz = item.bsmSz;
this.invalidDiglog = true;
this.bsmBdcqz = item.bsmBdcqz
},
closeInvalidDiglog () {
this.invalidDiglog = false;
this.bsmSz = "";
this.zfyy = "";
},
//作废缮证信息
confirmInvalid () {
invalidCertificate({ bsmBdcqz: this.bsmBdcqz, zfyy: this.zfyy }).then((res) => {
if (res.code === 200) {
this.list();
this.$message.success("作废成功");
this.invalidDiglog = false;
this.zfyy = ''
this.openZsylDialog(this.bdcqz);
} else {
this.$message.error(res.message);
}
});
},
openRecordPop (item) {
this.$popupDialog("缮证记录", "workflow/components/dialog/szRecord", { bsmBdcqz: item.bsmBdcqz }, '60%', true)
}
},
};
</script>
<style scoped lang='scss'>
@import "~@/styles/public.scss";
.szxx {
box-sizing: border-box;
padding-right: 15px;
width: 100%;
height: 600px;
overflow-y: scroll;
.box-card {
float: left;
width: 300px;
margin-top: 10px;
margin-right: 10px;
.szxx_body {
height: 240px;
}
}
}
.szxx_header {
color: #ffffff;
font-weight: bolder;
font-size: 16px;
.header_type {
display: flex;
justify-content: center;
align-content: center;
}
.header_text {
text-align: center;
margin-top: 10px;
line-height: 30px;
}
}
.top_line {
border-top: 2px solid rgb(222, 222, 222);
}
.text {
margin-bottom: 10px;
text-align: center;
}
.color_iray {
color: rgb(153, 153, 153);
}
.color_red {
color: rgb(255, 89, 24);
}
.middle_margin {
margin-bottom: 10px;
}
.operation_button {
border: 1px solid rgb(0, 121, 254);
padding: 5px;
text-align: center;
}
.card_padding {
padding-top: 8px;
}
.invalid-diglog {
padding-bottom: 20px;
font-size: 16px;
font-weight: bold;
color: rgb(99, 99, 99);
.invalid-title {
display: flex;
align-content: center;
.invalid-icon {
color: rgb(254, 148, 0);
font-size: 34px;
margin-right: 10px;
}
.invalid-body {
line-height: 40px;
margin-bottom: 10px;
}
}
.invalid-reson {
margin-bottom: 10px;
}
.dialog-footer {
margin-top: 10px;
display: flex;
justify-content: flex-end;
}
}
/deep/.el-card__header {
background-color: rgb(198, 67, 83);
}
/deep/.el-card__body {
padding: 0px;
}
</style>
<!--
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-05-17 10:41:57
-->
<template>
<div class="from-clues">
<!-- 表单部分 -->
<div class="from-clues-header">
<div class="title">请选择要退回到的环节:</div>
<el-form ref="queryForm" label-width="90px">
<ul style="margin-bottom: 15px">
<li
v-for="(item, index) in dataList"
class="listDetail"
:key="index"
@click="changeSelectItem(item)">
<p class="icon">
<el-radio
v-model="selectActivity"
:label="item.activityId"
@change="changeSelectItem(item)"></el-radio>
</p>
<p>{{ item.activityName }}</p>
<p v-for="(child, childIndex) in item.userInfos" :key="childIndex">
{{ child.name }}
</p>
</li>
</ul>
<div class="title">退回意见:</div>
<el-form-item>
<el-input
class="textArea"
type="textarea"
v-model="outstepopinion"
placeholder="请输入退回意见"></el-input>
</el-form-item>
<el-form-item>
<el-button style="float:right" @click="cancelBack">取消</el-button>
<el-button type="primary" @click="onSubmit" style="float:right">退回</el-button>
</el-form-item>
</el-form>
</div>
</div>
</template>
<script>
import { getTaskBackNode, sendBackTask } from "@/api/fqsq.js"
import { popupCacel } from "@/utils/popup.js";
export default {
props: {
formData: {
type: Object,
default: {},
},
},
data () {
return {
selectActivity: "",
dataList: [],
outstepopinion: "",
selectItem: {},
};
},
created () {
this.getBackNode();
},
methods: {
onSubmit () {
this.selectItem.outstepopinion = this.outstepopinion;
sendBackTask({
bsmSlsq: this.formData.bsmSlsq,
backNodeList: [this.selectItem],
}).then((res) => {
this.$message.success("退回成功");
setTimeout(() => {
// window.opener.location.reload(); //刷新父窗口
if (window.opener && window.opener.getBpageList) {
window.opener.getBpageList();
} else {
window.opener.frames[0].getBpageList();
}
window.close();
this.$emit("input", false);
}, 1000);
});
},
changeSelectItem (item) {
this.selectItem = item;
this.selectActivity = item.activityId;
},
//获取可回退环节信息
getBackNode () {
getTaskBackNode(this.formData).then((res) => {
if (res.code == 200) {
this.dataList = res.result;
if (res.result) {
this.selectActivity = res.result[0].activityId;
this.selectItem = res.result[0];
}
}
});
},
cancelBack () {
popupCacel();
}
}
}
</script>
<style scoped lang="scss">
@import "~@/styles/mixin.scss";
.listDetail {
display: flex;
align-items: center;
width: 100%;
p {
line-height: 30px;
height: 30px;
@include flex-center;
flex: 1;
width: 100%;
border: 1px solid rgb(233, 235, 237);
margin-top: -1px;
margin-left: -1px;
}
.icon {
flex: 0 0 60px;
}
}
.title {
margin-bottom: 10px;
}
.textArea {
/deep/.el-textarea__inner {
min-height: 90px !important;
}
}
/deep/.el-radio .el-radio__label {
display: none;
}
</style>
<!--
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-05-17 10:42:01
-->
<template>
<dialogBox title="转出" @submitForm="submitForm" saveButton="确认转出" width="45%" height='30%' @closeDialog="closeDialog"
v-model="value">
<div class="from-clues">
<!-- 表单部分 -->
<div class="from-clues-header">
<el-form :model="queryForm" ref="queryForm" label-width="120px">
<el-form-item label="下一环节名称:">
{{this.tableData.taskName}}
</el-form-item>
<el-form-item label="下一环节办理人:">
{{this.usernames}}
</el-form-item>
</el-form>
</div>
</div>
</dialogBox>
</template>
<script>
import { completeTask, getNextLinkInfo } from "@/api/fqsq.js"
export default {
components: {
},
props: {
value: { type: Boolean, default: false },
queryForm: { type: Object, default: false }
},
data () {
return {
tableData: {},
usernames: '',
}
},
methods: {
tablelistFn () {
getNextLinkInfo(this.queryForm).then(res => {
if (res.code === 200) {
this.tableData = res.result
if (res.result.usernames) {
this.usernames = String(res.result.usernames)
}
}
})
},
submitForm () {
completeTask(this.queryForm).then(res => {
if (res.code === 200) {
this.$message.success('转件成功')
setTimeout(() => {
window.opener = null;
window.open("about:blank", "_self");
window.close();
this.$emit('input', false)
}, 1000);
}
})
},
closeDialog () {
this.$emit("input", false);
},
}
}
</script>
<style scoped lang="scss">
@import "~@/styles/mixin.scss";
</style>
<template>
<div ref="canvas"></div>
</template>
<script>
import * as THREE from 'three'
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader'
import { VueThreejs } from 'vue-threejs'
export default {
mixins: [VueThreejs],
mounted () {
this.initCADViewer()
},
methods: {
initCADViewer () {
const container = this.$refs.canvas
// 创建场景
const scene = new THREE.Scene()
// 创建相机
const camera = new THREE.PerspectiveCamera(45, container.offsetWidth / container.offsetHeight, 0.1, 1000)
camera.position.set(0, 0, 10)
// 创建渲染器
const renderer = new THREE.WebGLRenderer({ antialias: true })
renderer.setSize(container.offsetWidth, container.offsetHeight)
container.appendChild(renderer.domElement)
// 添加灯光
const light = new THREE.DirectionalLight(0xffffff, 1)
light.position.set(0, 0, 1)
scene.add(light)
// 加载CAD文件
const loader = new GLTFLoader()
loader.load('./cad.dwg', (gltf) => {
scene.add(gltf.scene)
renderer.render(scene, camera)
})
// 动画循环
const animate = () => {
requestAnimationFrame(animate)
renderer.render(scene, camera)
}
animate()
}
}
}
</script>
<style>
div {
width: 100%;
height: 100%;
}
</style>
\ No newline at end of file
/*
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-05-29 14:39:11
*/
//流程环节操作按钮
export function getForm (tabName, djywbm) {
let form;
switch (tabName) {
case "jsydsyqslxx100":
form = require("@/views/ywbl/slsqxx/jsydsyq/slxx.vue");
break;
case "jsydsyqslxx300":
form = require("@/views/ywbl/slsqxx/jsydsyq/slxx300.vue");
break;
case "fwsyqslxx100":
form = require("@/views/ywbl/slsqxx/fdcq2/slxx.vue");
break;
case "fwsyqslxx300":
form = require("@/views/ywbl/slsqxx/fdcq2/slxx300.vue");
break;
case "nydsyqslxx100":
form = require("@/views/ywbl/slsqxx/nydsyq/slxx.vue");
break;
case "nydsyqslxx200":
form = require("@/views/ywbl/slsqxx/nydsyq/slxx200.vue");
break;
case "tdslxxCfdj":
form = require("@/views/ywbl/slsqxx/cfdj/tdslxx.vue");
break;
case "plslxxCfdj":
form = require("@/views/ywbl/slsqxx/cfdj/plcfslxx.vue");
break;
case "diyaqSlxx":
form = require("@/views/ywbl/slsqxx/diyaq/slxx.vue");
break;
case "diyaqSlxx200":
form = require("@/views/ywbl/slsqxx/diyaq/slxx200.vue");
break;
case "diyaqSlxx300":
form = require("@/views/ywbl/slsqxx/diyaq/slxx200.vue");
break;
case "clxx":
form = require("@/views/djbworkflow/components/clxxUnify.vue");
break;
case "spyj":
form = require("@/views/djbworkflow/components/spyj.vue");
break;
case "zdjbxx":
form = require("@/views/djbBook/zdjbxx.vue");
break;
case "ygmm100":
form = require("@/views/ywbl/slsqxx/ygdj/slxx.vue");
break;
case "ygmm300":
form = require("@/views/ywbl/slsqxx/ygdj/slxx300.vue");
break;
case "ygdy100":
case "ygdy300":
form = require("@/views/ywbl/slsqxx/ygdy/slxx.vue");
break;
case "zjgcdyqSlxx":
form = require("@/views/ywbl/slsqxx/zjgcdy/slxx.vue");
break;
case "cfdjxx":
form = require("@/views/djbBook/cfdj.vue");
break;
case "jsydsyqQlxx":
form = require("@/views/djbBook/jsydsyq.vue");
break;
case "nydsyqQlxx":
form = require("@/views/djbBook/nydsyq.vue");
break;
case "fdcq2Qlxx":
form = require("@/views/djbBook/fdcq2.vue");
break;
case "diyaqQlxx":
form = require("@/views/djbBook/diyaq.vue");
break;
case "ygdjQlxx":
form = require("@/views/djbBook/ygdj.vue");
break;
case "szxx":
form = require("@/views/djbworkflow/components/szxx.vue");
break;
case "fzxx":
form = require("@/views/djbworkflow/components/fzxx.vue");
break;
case "zdt":
form = require("@/views/djbworkflow/components/zdt.vue");
break;
default:
form = require("@/views/error-page/404.vue");
break;
}
return (r) => require.ensure([], () => r(form));
}
/*
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-05-17 10:38:57
*/
import filter from '@/utils/filter.js'
let vm = null
const sendThis = (_this) => {
vm = _this
}
class data extends filter {
constructor() {
super()
}
columns () {
return {
//发证列表
fzgrid: [
{
label: '序号',
type: 'index',
width: '50'
},
{
prop: "bdcqzlx",
label: "不动产权证类型",
render: (h, scope) => {
return (
<div>
<span v-show={scope.row.bdcqzlx == '1'}>不动产权证书</span>
<span v-show={scope.row.bdcqzlx == '2'}>不动产登记证明</span>
</div>
)
}
},
{
prop: "qllx",
label: "权利类型"
},
{
prop: "ysxlh",
label: "印刷序列号",
width: '100',
},
{
prop: "bdcqzh",
label: "不动产权证号",
width: '200',
},
{
prop: "qlr",
label: "权利人"
},
{
prop: "ywr",
label: "义务人"
},
{
prop: "mj",
label: "面积(㎡)"
},
{
prop: "zl",
label: "坐落"
},
{
prop: "fzsj",
label: "发证时间",
width: '140',
},
{
prop: "lzrxm",
label: "领证人姓名"
},
],
//领证证列表
lzgrid: [
{
type: 'selection'
},
{
label: '序号',
type: 'index',
width: '50'
},
{
prop: "bdcqzlx",
label: "不动产权证类型",
width: '120',
render: (h, scope) => {
return (
<div>
<span v-show={scope.row.bdcqzlx == '1'}>不动产权证书</span>
<span v-show={scope.row.bdcqzlx == '2'}>不动产登记证明</span>
</div>
)
}
},
{
prop: "qllx",
label: "权利类型"
},
{
prop: "ysxlh",
label: "印刷序列号",
width: '100',
},
{
prop: "bdcqzh",
label: "不动产权证号"
},
{
prop: "qlr",
label: "权利人"
},
{
prop: "ywr",
label: "义务人"
},
{
prop: "mj",
label: "面积(㎡)",
width: '100',
},
{
prop: "zl",
label: "坐落"
}
]
}
}
}
let datas = new data()
export {
datas,
sendThis
}
/*
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-05-17 10:39:03
*/
import filter from '@/utils/filter.js'
let vm = null
const sendThis = (_this) => {
vm = _this
}
class data extends filter {
constructor() {
super()
}
columns () {
return [
{
label: '序号',
type: 'index',
render: (h, scope) => {
return (
<div>
{scope.$index + 1}
</div>
)
}
},
{
prop: "szzh",
label: "缮证证号",
},
{
prop: "ysxlh",
label: "印刷序列号",
},
{
prop: "szry",
label: "缮证人员",
},
{
prop: "szsj",
label: "缮证时间",
},
{
label: "是否作废",
render: (h, scope) => {
if (scope.row.sfzf == '0') {
return <div></div>
} else {
return <div>已作废</div>
}
}
},
{
prop: "bz",
label: "备注信息",
},
]
}
}
let datas = new data()
export {
datas,
sendThis
}
/*
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-05-17 10:39:07
*/
import filter from '@/utils/filter.js'
class data extends filter {
constructor() {
super()
}
columns () {
return [
{
prop: "qlr",
label: "权利人",
},
{
prop: "gyqk",
label: "共有情况",
},
{
prop: "zl",
label: "坐落",
},
{
prop: "bdcdyh",
label: "不动产单元号",
},
{
prop: "qllx",
label: "权利类型",
},
{
prop: "qlxz",
label: "权利性质",
},
{
prop: "yt",
label: "用途",
},
{
prop: "mj",
label: "面积",
},
{
prop: "syqx",
label: "使用期限",
},
{
prop: "qlqtzk",
label: "权利其他状况",
},
]
}
}
let datas = new data()
export {
datas
}
\ No newline at end of file
/*
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-05-18 15:01:31
*/
import { getWorkFlowImage } from "@/api/workflow/jsydsyqFlow.js";
import { getPrintTemplateByCode } from "@/api/system";
import { getPrintApplicationInfo } from "@/api/fqsq";
import { uploadUndo } from "@/api/clxx";
import { deleteFlow } from "@/api/ywbl";
import { getLodop } from "@/utils/LodopFuncs"
import {
stepExpandInfo,
record,
completeTask,
getNextLinkInfo,
} from "@/api/fqsq.js";
import { mapGetters } from 'vuex'
export default {
data () {
return {
//是否开启材料分屏
splitScreen: false,
//设置表单组件是否刷选值
fresh: 10,
//左侧菜单数据集合
unitData: [],
//顶部左侧按钮集合
leftButtonList: [],
//顶部右侧按钮集合
rightButtonList: [],
//批量按钮名称
batchButtonName: '',
// 受理申请信息
slsq: {}
}
},
mounted () {
this.flowInitParam();
},
methods: {
//加载流程初始参数
flowInitParam () {
// var formdata = new FormData();
// formdata.append("bsmSlsq", this.bsmSlsq);
// formdata.append("bestepid", this.bestepid);
// console.log("加载流程初始参数",formdata)
// stepExpandInfo(formdata).then((res) => {
// if (res.code === 200) {
// this.leftButtonList = res.result.button;
// this.rightButtonList = res.result.operation;
// this.slsq = res.result.slsq
// }
// })
this.leftButtonList = ["1111","222222"]
this.rightButtonList = ["333333","444444"]
// this.slsq = res.result.slsq
},
//流程环节操作按钮
operation (item) {
//按钮 B0:选择不动产单元 B1:流程图 B2:材料分屏 B3:材料导入 B4:登记簿 B5:证书预览 B6:打印申请书 B7:证书领取 B8:楼盘表 B9:登簿
//操作按钮 登簿:record 转件:transfer 退回:back 退出:signout
let that = this;
switch (item.value) {
case "B0":
this.openDialog()
break;
case "B1":
getWorkFlowImage(this.bsmSlsq, this.$route.query.bestepid).then(res => {
let { result } = res
this.$popupDialog("流程图", "workflow/components/processViewer", {
xml: result.xml,
finishedInfo: {
finishedTaskSet: result.finishedTaskSet,
unfinishedTaskSet: result.unfinishedTaskSet,
rejectedTaskSet: result.rejectedTaskSet,
finishedSequenceFlowSet: result.finishedSequenceFlowSet
},
allCommentList: result.historyTaskList
}, '80%', true)
})
break;
case "B2": //材料分屏按钮
this.splitScreen = this.splitScreen ? false : true;
this.$store.dispatch("app/settScreen", this.splitScreen);
if (this.splitScreen) {
//如果当前选项卡为材料信息内容,递减到上一个选项卡内容
if (this.tabName == this.clxxTab.value) {
this.tabName = this.tabList[this.clxxIndex - 1].value;
this.getFromRouter(this.tabList[this.clxxIndex - 1].value);
}
//删除材料信息选项卡数据
this.tabList.splice(this.clxxIndex, 1);
} else {
//新增材料信息选项卡数据
this.tabList.splice(this.clxxIndex, 0, this.clxxTab);
}
break;
case "B3": //材料导入
document.getElementById("cldr").click();
break;
case "B4":
this.$popupDialog("登记簿详情", "registerBook/djbFrame", this.currentSelectProps, '80%', true)
break;
case "B5":
this.$popupDialog("证书预览", "workflow/components/dialog/zsyl", {
bsmSlsq: this.bsmSlsq,
entryType: '1'
}, '65%', true)
break;
case "B6":
//根据编号获取对应信息
getPrintTemplateByCode({ tmpno: 'dysqs' }).then(res => {
if (res.code == 200) {
getPrintApplicationInfo(this.currentSelectProps).then(infoRes => {
if (infoRes.code == 200) {
//打开模板设计
let LODOP = getLodop(document.getElementById('LODOP_OB'), document.getElementById('LODOP_EM'));
LODOP.ADD_PRINT_DATA("ProgramData", res.result.tmpcontent); //装载模板
//todo 调取后端接口获取数据 循环set
for (let key in infoRes.result) {
LODOP.SET_PRINT_STYLEA(key, "CONTENT", infoRes.result[key]);
}
LODOP.PREVIEW();
} else {
this.$message.error(infoRes.message)
}
})
} else {
this.$message.error(res.message)
}
})
break;
case "B7":
this.$popupDialog("证书领取", "workflow/components/dialog/zslq",
{ bsmSlsq: this.$route.query.bsmSlsq }, '70%', true
)
break;
case "B8":
this.$popupDialog('楼盘表', 'lpb/index', {
bsm: ''
}, '90%', true)
break;
case "back": //退回按钮
this.$popupDialog("退回", "workflow/components/th", {
bsmSlsq: this.bsmSlsq,
bestepid: this.bestepid
}, '800px', true)
break;
case "transfer": //转件按钮
getNextLinkInfo({
bsmSlsq: this.bsmSlsq,
bestepid: this.bestepid,
}).then((res) => {
if (res.code === 200) {
if (res.result) {
this.sendToNext(res.result);
} else {
this.sendToEnd();
}
}
});
break;
case "stop": //终止按钮
this.$popupDialog("终止", "workflow/components/stop", {
bsmSlsq: this.bsmSlsq,
bestepid: this.bestepid,
}, '600px', true)
break;
case "signout":
window.close();
//取消认领
unClaimTask(this.bsmSlsq, this.bestepid)
break;
case "B9":
var formdata = new FormData();
formdata.append("bsmSlsq", this.bsmSlsq);
formdata.append("bestepid", this.bestepid);
this.$confirm("请确认是否登簿", "提示", {
iconClass: "el-icon-question", //自定义图标样式
confirmButtonText: "确认", //确认按钮文字更换
cancelButtonText: "取消", //取消按钮文字更换
showClose: true, //是否显示右上角关闭按钮
type: "warning", //提示类型 success/info/warning/error
}).then(function () {
record(formdata).then((res) => {
if (res.code === 200) {
if (res.result.length === 1) {
res.result[0].state ? that.$alert("登簿成功!") : that.$alert(res.result[0].msg);;
}
else {
that.$alert('<div>' + res.result[0].ywh + ',' + res.result[0].msg + '</div>', '登簿明细', {
dangerouslyUseHTMLString: true
});
}
} else {
that.$alert(res.message);
}
});
});
break;
case "rm":
this.del()
break;
}
},
del () {
let formdata = new FormData();
formdata.append("bsmSlsq", this.bsmSlsq);
this.$confirm("确定要删除吗, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
deleteFlow(formdata).then((res) => {
if (res.code === 200) {
this.$message({
type: "success",
message: "删除成功!",
});
window.close();
window.opener.getBpageList();
} else {
this.$message.error(res.message);
}
});
})
.catch(() => {
this.$message({
type: "info",
message: "已取消删除",
});
});
},
//发送下一个环节
sendToNext (obj) {
const h = this.$createElement;
this.$msgbox({
title: "您确定转出吗?",
message: h("div", { style: "margin: auto" }, [
h("span", null, "下个环节名称:"),
h("i", { style: "color: teal" }, obj.taskName),
h("div", null, ""),
h("span", null, "下个环节经办人: "),
h("i", { style: "color: teal" }, obj.usernames.join(",")),
]),
showCancelButton: true,
beforeClose: (action, instance, done) => {
if (action === "confirm") {
instance.confirmButtonLoading = true;
instance.confirmButtonText = "执行中...";
completeTask({
bsmSlsq: this.bsmSlsq,
shyj: "this.bestepid",
stepform: JSON.stringify(this.tabList),
}).then((res) => {
if (res.code === 200) {
instance.confirmButtonLoading = false;
this.$message.success("转件成功");
// window.opener.location.reload(); //刷新父窗口
if (window.opener && window.opener.getBpageList) {
window.opener.getBpageList();
} else {
window.opener.frames[0].getBpageList();
}
window.close();
this.$emit("input", false);
} else {
instance.confirmButtonLoading = false;
instance.confirmButtonText = "确定";
this.$message.error(res.message);
}
});
} else {
done();
}
},
}).then((action) => {
this.$message({
type: "info",
message: "action: " + action,
});
});
},
sendToEnd () {
let that = this
const h = this.$createElement;
this.$msgbox({
title: "您确定转出吗?",
message: "此环节为流程最后环节,转出后流程将结束",
showCancelButton: true,
beforeClose: (action, instance, done) => {
if (action === "confirm") {
instance.confirmButtonLoading = true;
instance.confirmButtonText = "执行中...";
completeTask({
bsmSlsq: this.bsmSlsq,
shyj: "this.bestepid",
stepform: JSON.stringify(this.tabList),
}).then((res) => {
if (res.code === 200) {
instance.confirmButtonLoading = false;
that.$message.success("转件成功");
localStorage.setItem('transfer', true)
// window.opener.location.reload(); //刷新父窗口
if (window.opener && window.opener.getBpageList) {
window.opener.getBpageList();
} else {
window.opener.frames[0].getBpageList();
}
window.close();
that.$emit("input", false);
} else {
instance.confirmButtonLoading = false;
instance.confirmButtonText = "确定";
this.$message.error(res.message);
}
})
} else {
done();
}
},
}).then((action) => {
this.$message({
type: "info",
message: "action: " + action
})
})
},
//批量操作
handleBatchDel () {
this.$popupDialog("批量删除", "workflow/components/batchDel", {
width: "50%",
btnShow: false,
bsmSlsq: this.bsmSlsq,
dataList: this.unitData,
})
},
handleChange (file) {
var formdata = new FormData();
formdata.append("file", file.raw);
formdata.append("bsmSldy", this.currentSelectProps.bsmSldy);
formdata.append("bsmSlsq", this.bsmSlsq);
uploadUndo(formdata).then(res => {
if (res.code == 200) {
this.$message.success("导入成功");
} else {
this.$message.error(res.message)
}
})
},
// 上传
beforeUpload (file) {
return true;
}
}
}
/*
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-05-24 14:42:24
*/
import { getForm } from "../flowform";
import { getHomeNoticeList } from "@/api/user.js"
export default {
data () {
return {
noticeList: []
}
},
created () {
this.getHomeNotice()
},
mounted () {
let _this = this
window.addEventListener('message', function (messageEvent) {
_this.getHomeNotice()
}, false)
},
methods: {
getHomeNotice () {
getHomeNoticeList().then(res => {
if (res.result) {
this.noticeList = res.result.noticeList
}
})
},
//右侧表单选项卡事件
beforeLeave (activeName, oldActiveName) {
if (activeName && activeName != 0) this.getFromRouter(activeName)
},
//切换选项卡内容组件
getFromRouter (tabname) {
//根据tabname获取选中的表单 此操作为了获取后端返回的表单对象,使用里面的是否可操作的属性
for (let item of this.tabList) {
if (item.value === tabname) {
this.currentSelectTab = item
break;
}
}
this.componentTag = getForm(tabname, this.$route.query.sqywbm);
console.log(tabname);
}
}
}
.containerFrame {
height: 100%;
width: 100%;
position: sticky;
top: 80px;
border: 1px solid #ebeef5;
z-index: 100;
@include flex;
/deep/.el-tabs__header {
margin-bottom: 0 !important;
}
/deep/.el-menu-item {
display: flex;
align-items: center;
}
}
.leftmenu {
width: 0;
transition: all 0.3s;
border-right: 1px solid #ebeef5;
position: relative;
box-sizing: border-box;
padding-right: 5px;
.title {
line-height: 36px;
text-align: center;
font-size: 14px;
}
.dot {
display: inline-block;
background-color: #67C23A;
width: 6.5px;
height: 6px;
border-radius: 50%;
}
.menu-con {
width: 87%;
}
.batchDel {
float: right;
position: relative;
top: 3px;
}
.el-icon-delete {
margin-top: 10px;
}
.title-detail {
display: flex;
flex-wrap: wrap;
width: 100%;
}
.title-batch {
height: 70px;
.menus {
justify-content: center
}
}
ul {
position: relative;
// height: calc(100vh - 120px);
overflow-y: auto;
.xian {
background: #f2f2f2;
padding: 2px;
}
.title {
padding: 5px;
text-align: center;
}
li {
padding: 5px;
font-size: 14px;
line-height: 20px;
cursor: pointer;
div {
display: flex;
flex-direction: column;
}
}
li:hover {
color: #0f93f6;
cursor: pointer;
}
}
}
.animation-map-drawer {
width: 260px;
height: calc(100% - 80px);
}
.el-menu-item {
padding-left: 5px !important;
display: flex;
}
/deep/.el-menu {
border-right: none;
}
/deep/.el-menu-item.is-active {
background-color: #e7f4fe;
}
.leftCon {
flex: 1;
width: calc(100% - 260px);
display: flex;
}
.splitScreen-con {
flex: 1;
width: 0;
}
.rightContainer {
flex: 1;
width: 0;
height: calc(100vh - 80px);
}
/deep/.el-tabs {
box-sizing: border-box;
padding: 0 5px;
width: 100%;
}
.svg-icon {
width: 2.5em;
height: 2.5em;
transition: all 0.3s;
}
.iconName {
line-height: 24px;
font-size: 12px;
white-space: nowrap;
}
.container {
width: 100%;
height: 100%;
padding: 0;
box-sizing: border-box;
background-color: #ffffff;
overflow: hidden;
}
.map-drawer {
width: 16px;
height: 70px;
position: absolute;
top: 30%;
z-index: 99;
cursor: pointer;
}
.map-drawer-expand {
background: url("~@/image/right.png");
background-size: cover;
right: 0%;
}
.map-drawer-click {
background: url("~@/image/left.png");
background-size: cover;
left: 0%;
}
.topButton {
@include flex;
width: 100%;
height: 85px;
background-color: #3498db;
color: #ffffff;
justify-content: space-between;
position: sticky;
top: 0;
z-index: 100;
ul {
@include flex;
padding-left: 0;
li {
@include flex-center;
cursor: pointer;
flex-direction: column;
margin-right: 15px;
box-sizing: border-box;
width: 70px;
margin: 0 5px;
}
li:hover {
border: 1px solid #ffffff;
border-radius: 5px;
.icon {
transform: scale(1.3);
}
}
}
}
.NoticeBar {
position: absolute;
left: 0;
bottom: 0;
}
\ No newline at end of file
<!--
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-05-24 15:31:00
-->
<template>
<div class="container">
<!-- 顶部内容框 -->
<div class="topButton">
<!-- 左侧业务功能按钮 -->
<!-- <ul>
<li @click="operation(item)" v-for="(item, index) in leftButtonList" :key="index">
<svg-icon class="icon" :icon-class="item.icon" />
<span class="iconName">{{ item.name }}</span>
</li>
</ul>
<ul>
<li @click="operation(item)" v-for="(item, index) in rightButtonList" :key="index">
<svg-icon class="icon" :icon-class="item.icon" />
<span class="iconName">{{ item.name }}</span>
</li>
</ul>
<NoticeBar class="NoticeBar" :noticeList="noticeList" v-if="noticeList.length > 0" /> -->
</div>
<!-- 内容框架 -->
<div class="containerFrame">
<!-- 左侧菜单栏 区分业务-->
<ordinaryMenu @getCurrentSelectProps="getCurrentSelectProps" />
<div class="leftCon">
<!-- 分屏左侧预览 -->
<div v-if="splitScreen" class="splitScreen-con">
<component :is="clxxForm" v-bind="currentSelectProps" :key="fresh" />
</div>
<!-- 表单内容区域 -->
<div class="rightContainer">
<el-tabs v-model="tabName" :before-leave="beforeLeave">
<el-tab-pane :label="item.name" :name="item.value" v-for="item in tabList" :key="item.value">
</el-tab-pane>
</el-tabs>
<component :key="fresh" :is="componentTag" v-bind="currentSelectProps" />
</div>
</div>
</div>
<!-- 打印模板需要此模块 -->
<object id="LODOP_OB" classid="clsid:2105C259-1E0C-4534-8141-A753534CB4CA" v-show="false">
<embed id="LODOP_EM" type="application/x-print-lodop" width="820" height="450" pluginspage="install_lodop32.exe" />
</object>
<el-upload class="fileUpdate" action="" :show-file-list="false" multiple :auto-upload="false"
:on-change="handleChange" :before-upload="beforeUpload">
<el-button id="cldr" icon="el-icon-upload" type="primary" v-show="false">上传</el-button>
</el-upload>
</div>
</template>
<style scoped lang="scss">
@import "~@/styles/mixin.scss";
@import "./workFrame.scss";
</style>
<script>
import WorkFlow from "./mixin/index"
import publicFlow from "./mixin/public.js"
// import { getStepFormInfo } from "@/api/fqsq.js"
// import { getForm } from "./flowform"
import NoticeBar from "@/components/NoticeBar/index"
import { unClaimTask } from "@/api/ywbl.js"
import ProcessViewer from "./components/processViewer.vue"
// 引入左侧菜单
import ordinaryMenu from "./components/leftmenu/ordinaryMenu.vue"
import selectBdc from "@/views/ywbl/ywsq/selectBdc.vue"
import { loadTreeData, getNode } from "./components/leftmenu/djbFrameData";
// 登记簿数据信息
import { getBdcqljqtsx } from "@/api/registerBook.js";
export default {
components: {
selectBdc,
NoticeBar,
ProcessViewer,
ordinaryMenu,
},
mixins: [WorkFlow, publicFlow],
data () {
return {
isDialog: false,
bsmSlsq: this.$route.query.bsmSlsq,
//当前流程所在环节
bestepid: this.$route.query.bestepid,
//受理申请标识码
bdcdyid: this.$route.query.bdcdyid,
//当前流程所在环节
bdcdyh: this.$route.query.bdcdyh,
qllx:this.$route.query.qllx,
//设置那个表单选中
tabName: "",
//设置那个表单选择
currentSelectTab: {},
//表单集合
tabList: [],
//选择加载哪一个组件
componentTag: "",
//设置表单传递数据
currentSelectProps: {},
//材料分屏表单
clxxForm: "",
//材料信息选择卡索引
clxxIndex: "",
//材料信息选项卡对象
clxxTab: {},
//页面监听时间
_beforeUnload_time: ""
}
},
mounted () {
this.$store.dispatch('user/refreshPage', false);
//添加页面监听事件
window.addEventListener("beforeunload", (e) => this.beforeunloadHandler(e));
window.addEventListener("unload", (e) => this.unloadHandler(e));
},
destroyed () {
window.removeEventListener("beforeunload", (e) =>
this.beforeunloadHandler(e)
);
window.removeEventListener("unload", (e) => this.unloadHandler(e));
},
methods: {
getCurrentSelectProps (val) {
this.loadData()
},
beforeunloadHandler () {
this._beforeUnload_time = new Date().getTime();
},
unloadHandler (e) {
this._gap_time = new Date().getTime() - this._beforeUnload_time;
//判断是窗口关闭还是刷新
if (this._gap_time <= 10) {
//取消认领
unClaimTask(this.bsmSlsq, this.bestepid);
}
},
// 获取登记簿菜单
loadData () {
getBdcqljqtsx({
bdcdyid: this.bdcdyid,
bdcdyh: this.bdcdyh,
}).then((res) => {
if (res.code === 200) {
console.log("res.result","res.result",res.result);
this.treedata = loadTreeData(res.result, this.bdcdyh);
console.log("this.treedata","this.treedata",this.treedata);
this.$nextTick(function () {
this.defaultNode = getNode(this.qllx, { linShi: 0, xianShi: 0, liShi: 0 }, "");
this.$refs.tree.setCurrentKey(this.defaultNode.id); //data[0].id为默认选中的节点
// this.$parent.loadComponent(this.currentSelectProps,this.defaultNode);
});
}
});
this.currentSelectProps = {
bdcdyid: this.bdcdyid,
bdcdyh: this.bdcdyh,
qllx: this.qllx,
bsmQlxx: this.bsmQlxx,
};
// this.$parent.stepForm();
},
loadComponent (currentSelectProps,data) {
this.currentSelectProps=currentSelectProps
this.componentTag = (r) =>
require.ensure([], () => r(require("@/views/djbBook/" + data.form)));
},
openDialog () {
this.$store.dispatch('user/refreshPage', false)
let data = JSON.parse(localStorage.getItem('ywbl'))
let title
if (data?.sqywmc) {
title = "申请业务:" + data?.sqywmc
} else {
title = "申请业务:" + data?.djywmc
}
this.$popupDialog(title, "ywbl/ywsq/selectBdc", { 'djywbm': this.$route.query.sqywbm, 'isJump': true, 'sqywInfo': data }, "80%", true)
}
}
}
</script>
......@@ -112,7 +112,22 @@ export default {
this.$popupDialog('楼盘表', 'lpb/index', {
bsm: ''
}, '85%')
}
},
ywhClick (item) {
const { href } = this.$router.resolve(
"/djbworkFrame?bdcdyid=" +
item.bdcdyid+
"&bdcdyh=" +
item.bdcdyh+
"&qllx="+
item.qllx+
"&bsmQlxx="+
item.bsmQlxx
);
localStorage.setItem('ywbl', JSON.stringify(item));
window.open(href, `urlname${item.bdcdyid}`);
},
}
}
</script>
......
......@@ -54,16 +54,19 @@ class data extends filter {
prop: "ywh",
label: "业务号",
width: '110',
render: (h, scope) => {
return <el-button type="text" onClick={() => { vm.ywhClick(scope.row) }}>{scope.row.ywh}</el-button>
}
},
{
prop: "qllxmc",
label: "权利类型",
},
},
{
prop: "djlxmc",
label: "登记类型",
label: "登记类型",
width: '90',
},
},
{
prop: "bdcdyh",
label: "不动产单元号",
......@@ -96,7 +99,7 @@ class data extends filter {
prop: "zl",
label: "坐落",
minWidth: '150'
},
},
{
label: '操作',
width: '130',
......