This commit is contained in:
yanran200730
2022-04-15 14:04:13 +08:00
17 changed files with 648 additions and 278 deletions

View File

@@ -128,7 +128,7 @@
<el-input v-model="table.name" placeholder="请输入股权人姓名" clearable/>
</el-form-item>
<el-form-item label="身份证号" prop="idNumber">
<el-input v-model="table.idNumber" placeholder="请输入身份证号" clearable/>
<el-input v-model="table.idNumber" placeholder="请输入身份证号" clearable maxlength="18"/>
</el-form-item>
<el-form-item label="与户主关系" prop="householdRelation">
<ai-select v-model="table.householdRelation" placeholder="请选择" :selectList="$dict.getDict('householdRelation')" />
@@ -197,7 +197,8 @@ export default {
dialogRules() {
return {
name: [{required: true, message: '请输入股权人姓名', trigger: 'blur'}],
idNumber: [{required: true, message: '请输入身份证号', trigger: 'blur'}],
idNumber: [{required: true, message: '请输入18位身份证号', trigger: 'blur'},
{min: 18, message: '请输入18位身份证号', trigger: 'blur'}],
householdRelation: [{required: true, message: '请选择与户主关系', trigger: 'blur'}],
shareholdingNumber: [{required: true, message: '请输入持股数量', trigger: 'blur'}],
}
@@ -233,9 +234,8 @@ export default {
this.form = JSON.parse(JSON.stringify(this.data))
},
deleteBtn(row, index) {
console.log(row);
if(row.householdRelation == 11) {
return '不可以删除户主'
return this.$message.error('不可以删除户主')
}
this.tableData.splice(index, 1)
},

View File

@@ -39,7 +39,7 @@
<el-row type="flex">
<el-col :span="20">
<el-form-item label="身份证号" prop="idNumber">
<el-input v-model="form.idNumber" placeholder="请输入使用人身份证号"></el-input>
<el-input v-model="form.idNumber" placeholder="请输入使用人身份证号" maxlength="18"></el-input>
</el-form-item>
</el-col>
<el-col :span="20">
@@ -146,7 +146,8 @@ export default {
usePerson: [{required: true, message: '请输入使用人', trigger: 'blur'}],
houseNumber: [{required: true, message: '请输入家庭人口', trigger: 'blur'},
{pattern: /^[1-9]\d*$/, message: '请输入正整数',trigger: 'blur'}],
idNumber: [{required: true, message: '请输入身份证号', trigger: 'blur'}],
idNumber: [{required: true, message: '请输入18位身份证号', trigger: 'blur'},
{min: 18, message: '请输入18位身份证号', trigger: 'blur'}],
landOwnership: [{required: true, message: '请输入土地所有权', trigger: 'blur'}],
landArea: [{required: true, message: '请输入土地面积', trigger: 'blur'}],
landFourTo: [{required: true, message: '请输入土地四至', trigger: 'blur'}],

View File

@@ -20,7 +20,7 @@
</el-col>
<el-col :span="20">
<el-form-item label="土地流出方证件号码" prop="landOutflowNumber">
<el-input v-model="form.landOutflowNumber" placeholder="请输入土地流出方证件号码"></el-input>
<el-input v-model="form.landOutflowNumber" placeholder="请输入土地流出方证件号码" maxlength="18"></el-input>
</el-form-item>
</el-col>
</el-row>
@@ -32,7 +32,7 @@
</el-col>
<el-col :span="20">
<el-form-item label="土地承接方证件号码" prop="landUndertakeNumber">
<el-input v-model="form.landUndertakeNumber" placeholder="请输入土地承接方证件号码"></el-input>
<el-input v-model="form.landUndertakeNumber" placeholder="请输入土地承接方证件号码" maxlength="18"></el-input>
</el-form-item>
</el-col>
</el-row>
@@ -183,9 +183,11 @@ export default {
rules() {
return {
landOutflowName: [{required: true, message: "请输入土地流出方名称", trigger: "blur"}],
landOutflowNumber: [{required: true, message: "请输入土地流出方证件号码", trigger: "blur"}],
landOutflowNumber: [{required: true, message: "请输入土地流出方证件号码", trigger: "blur"},
{min: 18, message: "请输入18位土地流出方证件号码", trigger: "blur"}],
landUndertakeName: [{required: true, message: "请输入土地承接方名称", trigger: "blur"}],
landUndertakeNumber: [{required: true, message: "请输入土地承接方证件号码", trigger: "blur"}],
landUndertakeNumber: [{required: true, message: "请输入土地承接方证件号码", trigger: "blur"},
{min: 18, message: "请输入18位土地承接方证件号码", trigger: "blur"}],
contractNo: [{required: true, message: "请输入合同编号", trigger: "blur"}],
circulateType: [{required: true, message: "请选择流转形式", trigger: "blur"}],
landArea: [{required: true, message: "请输入土地面积", trigger: "blur"}],

View File

@@ -91,5 +91,6 @@ export default {
<style lang="scss" scoped>
.pumList {
height: 100%;
}
</style>

View File

@@ -85,5 +85,6 @@ export default {
<style lang="scss" scoped>
.pumList {
height: 100%;
}
</style>

View File

@@ -97,8 +97,7 @@
></el-input>
</el-form-item>
<el-form-item label="店铺照片" prop="shopPhoto">
<ai-uploader :value="[{url:dialogInfo.shopPhoto}]" :instance="instance" :limit="1"
@change="handleShopPhoto" isShowTip/>
<ai-uploader v-model="dialogInfo.shopPhoto" :instance="instance" :limit="1" isShowTip valueIsUrl/>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-radio-group v-model="dialogInfo.status">
@@ -142,45 +141,6 @@ export default {
},
unitId: "",
total: 10,
colConfigs: [
{prop: "shopName", label: "店铺名称", align: "left"},
{
prop: "shopkeeper",
label: "店主",
align: "center",
},
{
prop: "phone",
label: "联系电话",
align: "center",
},
{
prop: "shopAddress",
label: "店铺地址",
align: "left",
width: 280,
},
{
prop: "names",
label: "店铺操作员",
align: "left",
},
{
prop: "status",
label: "状态",
align: "center",
render: (h, params) => {
return h(
"span",
{
class: "status-" + params.row.status,
},
this.$dict.getLabel("assessmentStartStatus", params.row.status)
);
},
},
{slot: "options", label: "操作", align: "center"},
],
tableData: [],
dialog: {
title: "",
@@ -204,12 +164,11 @@ export default {
{required: true, message: "请输入店主", trigger: "blur"},
],
phone: [{required: true, message: "请输入联系电话", trigger: "blur"}],
shopAddress: [
{required: true, message: "请输入店铺地址", trigger: "blur"},
],
shopAddress: [{required: true, message: "请输入店铺地址", trigger: "blur"}],
status: [{required: true, message: "请选择状态", trigger: "blur"}],
areaId: [
{required: true, message: "请选择事件区域", trigger: "blur"},
{required: true, message: "请选择所在区域"},
{pattern: /[^0]0{0,2}$/, message: '请选择到村/社区'}
],
operators: [
{required: true, message: "请选择操作员", trigger: "blur"},
@@ -227,6 +186,22 @@ export default {
...mapState(["user"]),
rootArea() {
return this.user.info.areaId?.replace(/(\d{6}).+/, '$1' + Array(7).join("0"))
},
colConfigs() {
return [
{prop: "shopName", label: "店铺名称", align: "left"},
{prop: "shopkeeper", label: "店主", align: "center"},
{prop: "phone", label: "联系电话", align: "center"},
{prop: "areaName", label: "所在地区"},
{prop: "shopAddress", label: "店铺地址", align: "left", width: 280},
{prop: "names", label: "店铺操作员", align: "left"},
{
label: "状态",
align: "center",
render: (h, params) => h("span", {class: "status-" + params.row.status,}, this.$dict.getLabel("assessmentStartStatus", params.row.status))
},
{slot: "options", label: "操作", align: "center"},
]
}
},
@@ -341,9 +316,6 @@ export default {
this.dialogInfo.operators = [];
this.dialog.visible = true;
},
handleShopPhoto(v) {
this.dialogInfo.shopPhoto = v?.[0]?.url || ""
}
},
}
</script>

View File

@@ -49,8 +49,7 @@
</el-form-item>
</el-row>
<el-form-item label="企业微信二维码" prop="qrCodeUrl">
<ai-uploader :value="[{url:form.qrCodeUrl}]" @change="handleQrCodeUrl" :instance="instance" :limit="1"
isShowTip/>
<ai-uploader v-model="form.qrCodeUrl" :instance="instance" :limit="1" isShowTip valueIsUrl/>
</el-form-item>
</template>
</ai-card>
@@ -172,9 +171,6 @@ export default {
back() {
this.$router.push({})
},
handleQrCodeUrl(v) {
this.form.qrCodeUrl = v?.[0]?.url || ""
}
},
created() {
this.getDetail()

View File

@@ -30,9 +30,15 @@
<el-link type="primary" @click="isShow=true">企业详情</el-link>
</el-row>
</el-form-item>
<el-form-item label="所在地区">{{ detail.areaName }}</el-form-item>
<el-form-item label="资金用途">{{ dict.getLabel('financialFundPurpose', detail.fundPurpose) }}
</el-form-item>
<el-form-item label="联系人">{{ detail.name }}</el-form-item>
<el-form-item label="联系人">
<el-row type="flex">
{{ detail.name }}
<person-credit-report :person="detail" :instance="instance" :dict="dict"/>
</el-row>
</el-form-item>
<el-form-item label="身份证号">{{ detail.idNumber }}</el-form-item>
<el-form-item label="联系方式">{{ detail.phone }}</el-form-item>
<el-form-item label="申请时间">{{ detail.createTime }}</el-form-item>
@@ -94,16 +100,24 @@
<el-button @click="isShow=false">关闭</el-button>
</template>
</ai-dialog>
<ai-dialog class="dialog" :title="detail.enterpriseName||'企业详情'" :visible.sync="isShow" width="1200px" customFooter>
<enterprise-dialog v-if="detail.enterpriseId" :enterprise-id="detail.enterpriseId" :instance="instance"
:dict="dict"/>
<template #footer>
<el-button @click="isShow=false">关闭</el-button>
</template>
</ai-dialog>
</section>
</template>
<script>
import {mapState} from "vuex";
import EnterpriseDialog from "../../../components/enterpriseDialog";
import PersonCreditReport from "../../../components/personCreditReport";
export default {
name: "loanDetail",
components: {EnterpriseDialog},
components: {PersonCreditReport, EnterpriseDialog},
props: {
instance: Function,
dict: Object,
@@ -133,7 +147,8 @@ export default {
loanDate: [{required: true, message: "请选择 放款日期"}],
auditDescription: [{required: true, message: "请输入 审批意见"}],
},
isShow: false
isShow: false,
personCR: false
}
},
methods: {

View File

@@ -50,33 +50,6 @@
<ai-echart :ops="columnEchart" id="columnChart" :data="productTop10"/>
</template>
</ai-card>
<ai-card title="交易记录">
<template #content>
<ai-search-bar>
<template #left>
<ai-select v-model="search.organizationType" placeholder="机构类型" clearable
:selectList="dict.getDict('financialOrganizationType')" @change="page.current=1,getTableData()"/>
<ai-search label="申请时间">
<el-date-picker size="small" placeholder="请选择" type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期" v-model="search.applyTime"
:default-time="['00:00:00','23:59:59']" value-format="yyyy-MM-dd"
@change="handleSearchTime"/>
</ai-search>
</template>
<template #right>
<el-input size="small" placeholder="搜索产品名称、身份证、企业、贷款机构" v-model="search.enterpriseName" clearable
@change="page.current=1,getTableData()"/>
<ai-download :instance="instance" url="/app/appfinancialloanapply/export" :params="search"
fileName="交易记录">
<el-button icon="iconfont iconExported">导出</el-button>
</ai-download>
</template>
</ai-search-bar>
<ai-table :tableData="tableData" :total="page.total" :current.sync="page.current" :size.sync="page.size"
@getTableData="getTableData" :col-configs="colConfigs" :dict="dict"/>
</template>
</ai-card>
</section>
</template>
@@ -92,8 +65,8 @@ export default {
},
computed: {
...mapState(['user']),
financeOrgId(){
return this.user.financeUser?.organizationId||""
financeOrgId() {
return this.user.financeUser?.organizationId || ""
},
circleEchart() {
return {
@@ -194,42 +167,17 @@ export default {
data() {
return {
search: {status: 1},
page: {current: 1, size: 10,total:0},
tableData: [],
overviews: [],
productTop10: [],
tradeTrend: [],
colConfigs: [
{label: "产品名称", width: '200', prop: "productName"},
{label: "联系人", width: '100', prop: "name"},
{label: "联系方式", width: '140', prop: "phone"},
{label: "身份证号", render: (h, {row}) => h('p', this.idCardNoUtil.hideId(row.idNumber)), width: 160},
{label: "企业主体", width: '200', prop: "enterpriseName"},
{label: "贷款金额(万)", width: '120', prop: "loanAmount"},
{label: "申请时间", prop: "createTime", width: 160},
{label: "贷款机构", prop: "organizationName"},
{label: "机构类型", prop: "organizationType", dict: "financialOrganizationType"},
{label: "状态", prop: "status", dict: "financialLoanApplyStatus"},
]
}
},
methods: {
getStaData() {
this.getTableData()
this.getOverviews()
this.getProductTop10()
this.getTradeTrend()
},
getTableData() {
this.instance.post("/appfinancialloanapply/list", null, {
params: {...this.page, ...this.search}
}).then(res => {
if (res?.data) {
this.tableData = res.data?.records
this.page.total = res.data.total
}
})
},
getOverviews() {
let {organizationId} = this.search
this.instance.post("/appfinancialloanapply/staticFinancialLoanApplyByOrganization", null, {
@@ -260,12 +208,6 @@ export default {
}
})
},
handleSearchTime(v) {
this.page.current = 1
this.search.applyStartDate = v?.[0].substring(0, 10)
this.search.applyEndDate = v?.[1].substring(0, 10)
this.getTableData()
}
},
created() {
this.getStaData()
@@ -275,8 +217,6 @@ export default {
<style lang="scss" scoped>
.loanSta {
height: 100%;
overflow-y: auto;
.col-row {
overflow: hidden;
@@ -288,7 +228,7 @@ export default {
float: left;
margin: 0 20px 20px 0;
background: #FFF;
box-shadow: 0px 4px 6px -2px rgba(15, 15, 21, 0.15);
box-shadow: 0 4px 6px -2px rgba(15, 15, 21, 0.15);
border-radius: 4px;
box-sizing: border-box;
@@ -346,6 +286,10 @@ export default {
transform: translate(-50%, -50%);
width: 100px;
text-align: center;
& > p {
text-align: center;
}
}
}

View File

@@ -79,5 +79,6 @@ export default {
<style lang="scss" scoped>
.needsList {
height: 100%;
}
</style>

View File

@@ -23,13 +23,17 @@
</el-form-item>
<el-form-item label="企业主体" v-if="detail.applyType==1">
{{ detail.enterpriseName }}
<el-link type="primary"
@click="showEnterpriseDetail=true">
<el-link type="primary" @click="showEnterpriseDetail=true">
企业详情
</el-link>
</el-form-item>
<el-form-item v-else/>
<el-form-item label="联系人">{{ detail.createUserName }}</el-form-item>
<el-form-item label="联系人">
<el-row type="flex">
{{ detail.createUserName }}
<person-credit-report :person="detail" :instance="instance" :dict="dict"/>
</el-row>
</el-form-item>
<el-form-item label="所在地区">{{ detail.areaName }}</el-form-item>
<el-form-item label="联系方式">{{ detail.phone }}</el-form-item>
<el-form-item label="身份证号">{{ detail.idNumber }}</el-form-item>
@@ -85,10 +89,11 @@
<script>
import {mapState} from "vuex";
import EnterpriseDialog from "../../../components/enterpriseDialog";
import PersonCreditReport from "../../../components/personCreditReport";
export default {
name: "grabDetail",
components: {EnterpriseDialog},
components: {PersonCreditReport, EnterpriseDialog},
props: {
instance: Function,
dict: Object,

View File

@@ -52,39 +52,39 @@
</p>
<div id="columnChart"></div>
</div>
<div class="table-content chart-content">
<div class="title">交易记录</div>
<ai-search-bar style="padding:20px 20px 0 20px;">
<template #left>
<ai-select v-model="search.status" placeholder="状态" clearable
:selectList="dict.getDict('financingDemandStatus')" @change="getList()"></ai-select>
<ai-search label="申请时间">
<el-date-picker size="small" placeholder="请选择" type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
style="width: 258px;"
value-format="yyyy-MM-dd"
v-model="stuTime"
@change="changeTime"/>
</ai-search>
</template>
<template #right>
<el-input size="small" placeholder="联系人/身份证号/企业主体/贷款银行" v-model="search.name" clearable @change="getList()"/>
<ai-download :instance="instance" url="appfinancingdemand/export" :params="search"
fileName="交易记录">
<el-button icon="iconfont iconExported">导出</el-button>
</ai-download>
</template>
</ai-search-bar>
<ai-table :tableData="tableData" :total="page.total" :current.sync="page.current" :size.sync="page.size"
@getList="getList" :col-configs="colConfigs" :dict="dict" style="padding:0 20px 20px 20px;">
<el-table-column slot="options" label="状态" fixed="right" width="100" align="center">
<template slot-scope="{row}">
<span :class="`status${row.status}`">{{ dict.getLabel('financingDemandStatus', row.status) }}</span>
</template>
</el-table-column>
</ai-table>
</div>
<!-- <div class="table-content chart-content">-->
<!-- <div class="title">交易记录</div>-->
<!-- <ai-search-bar style="padding:20px 20px 0 20px;">-->
<!-- <template #left>-->
<!-- <ai-select v-model="search.status" placeholder="状态" clearable-->
<!-- :selectList="dict.getDict('financingDemandStatus')" @change="getList()"></ai-select>-->
<!-- <ai-search label="申请时间">-->
<!-- <el-date-picker size="small" placeholder="请选择" type="daterange"-->
<!-- start-placeholder="开始日期"-->
<!-- end-placeholder="结束日期"-->
<!-- style="width: 258px;"-->
<!-- value-format="yyyy-MM-dd"-->
<!-- v-model="stuTime"-->
<!-- @change="changeTime"/>-->
<!-- </ai-search>-->
<!-- </template>-->
<!-- <template #right>-->
<!-- <el-input size="small" placeholder="联系人/身份证号/企业主体/贷款银行" v-model="search.name" clearable @change="getList()"/>-->
<!-- <ai-download :instance="instance" url="appfinancingdemand/export" :params="search"-->
<!-- fileName="交易记录">-->
<!-- <el-button icon="iconfont iconExported">导出</el-button>-->
<!-- </ai-download> -->
<!-- </template>-->
<!-- </ai-search-bar>-->
<!-- <ai-table :tableData="tableData" :total="page.total" :current.sync="page.current" :size.sync="page.size"-->
<!-- @getList="getList" :col-configs="colConfigs" :dict="dict" style="padding:0 20px 20px 20px;">-->
<!-- <el-table-column slot="options" label="状态" fixed="right" width="100" align="center">-->
<!-- <template slot-scope="{row}">-->
<!-- <span :class="`status${row.status}`">{{ dict.getLabel('financingDemandStatus', row.status) }}</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- </ai-table>-->
<!-- </div>-->
</section>
</template>
@@ -170,7 +170,7 @@ export default {
this.lineChartInit(monthList, applyList, auditList)
}
})
this.getList()
// this.getList()
},
getList() {
let status = this.search.status || 999

View File

@@ -0,0 +1,98 @@
<template>
<section class="AppLoanSta">
<ai-list>
<ai-title slot="title" title="贷款情况汇总" isShowBottomBorder isShowArea v-model="search.areaId"
@change="page.current=1,getTableData()" :instance="instance"/>
<template #content>
<ai-search-bar>
<template #left>
<ai-select v-model="search.organizationType" placeholder="机构类型" clearable
:selectList="dict.getDict('financialOrganizationType')" @change="page.current=1,getTableData()"/>
<ai-search label="申请时间">
<el-date-picker size="small" placeholder="请选择" type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期" v-model="search.applyTime"
:default-time="['00:00:00','23:59:59']" value-format="yyyy-MM-dd"
@change="handleSearchTime"/>
</ai-search>
</template>
<template #right>
<el-input size="small" placeholder="搜索产品名称、身份证、企业、贷款机构" v-model="search.enterpriseName" clearable
@change="page.current=1,getTableData()"/>
<ai-download :instance="instance" url="/app/appfinancialloanapply/export" :params="search"
fileName="交易记录">
<el-button icon="iconfont iconExported">导出</el-button>
</ai-download>
</template>
</ai-search-bar>
<ai-table :tableData="tableData" :total="page.total" :current.sync="page.current" :size.sync="page.size"
@getList="getTableData" :col-configs="colConfigs" :dict="dict"/>
</template>
</ai-list>
</section>
</template>
<script>
import {mapState} from "vuex";
export default {
name: "AppLoanSta",
label: "贷款情况汇总",
props: {
instance: Function,
dict: Object,
permissions: Function
},
computed: {
...mapState(['user'])
},
data() {
return {
search: {status: 1},
page: {current: 1, size: 10, total: 0},
tableData: [],
colConfigs: [
{label: "产品名称", width: '200', prop: "productName"},
{label: "联系人", width: '100', prop: "name"},
{label: "联系方式", width: '140', prop: "phone"},
{label: "身份证号", render: (h, {row}) => h('p', this.idCardNoUtil.hideId(row.idNumber)), width: 160},
{label: "企业主体", width: '200', prop: "enterpriseName"},
{label: "贷款金额(万)", width: '120', prop: "loanAmount"},
{label: "申请时间", prop: "createTime", width: 160},
{label: "贷款机构", prop: "organizationName"},
{label: "机构类型", prop: "organizationType", dict: "financialOrganizationType"},
{label: "状态", prop: "status", dict: "financialLoanApplyStatus"},
],
}
},
methods: {
getTableData() {
this.instance.post("/appfinancialloanapply/list", null, {
params: {...this.page, ...this.search}
}).then(res => {
if (res?.data) {
this.tableData = res.data?.records
this.page.total = res.data.total
}
})
},
handleSearchTime(v) {
this.page.current = 1
this.search.applyStartDate = v?.[0].substring(0, 10)
this.search.applyEndDate = v?.[1].substring(0, 10)
this.getTableData()
}
},
created() {
this.search.areaId = this.user.info.areaId
this.dict.load('financialLoanApplyStatus', 'financialOrganizationType', 'financialOrganizationType')
this.getTableData()
}
}
</script>
<style lang="scss" scoped>
.AppLoanSta {
height: 100%;
}
</style>

View File

@@ -0,0 +1,118 @@
<template>
<section class="AppNeedSta">
<ai-list>
<ai-title slot="title" title="贷款情况汇总" isShowBottomBorder isShowArea v-model="search.areaId"
@change="page.current=1,getTableData()" :instance="instance"/>
<template #content>
<ai-search-bar>
<template #left>
<ai-select v-model="search.status" placeholder="状态" :selectList="dict.getDict('financingDemandStatus')"
@change="page.current=1,getTableData()"/>
<ai-search label="申请时间">
<el-date-picker size="small" placeholder="请选择" type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期" v-model="search.applyTime"
:default-time="['00:00:00','23:59:59']" value-format="yyyy-MM-dd"
@change="handleSearchTime"/>
</ai-search>
</template>
<template #right>
<el-input size="small" placeholder="联系人/身份证号/企业主体/贷款银行" v-model="search.name" clearable
@change="getTableData()"/>
<ai-download :instance="instance" url="appfinancingdemand/export" :params="search"
fileName="交易记录">
<el-button icon="iconfont iconExported">导出</el-button>
</ai-download>
</template>
</ai-search-bar>
<ai-table :tableData="tableData" :total="page.total" :current.sync="page.current" :size.sync="page.size"
@getList="getTableData" :col-configs="colConfigs" :dict="dict">
<el-table-column slot="options" label="状态" fixed="right" width="100" align="center">
<template slot-scope="{row}">
<span :class="`status${row.status}`">{{ dict.getLabel('financingDemandStatus', row.status) }}</span>
</template>
</el-table-column>
</ai-table>
</template>
</ai-list>
</section>
</template>
<script>
import {mapState} from "vuex";
export default {
name: "AppNeedSta",
label: "融资情况汇总",
props: {
instance: Function,
dict: Object,
permissions: Function
},
computed: {
...mapState(['user'])
},
data() {
return {
search: {status: "1"},
page: {current: 1, size: 10, total: 0},
tableData: [],
colConfigs: [
// {label: "产品名称", width: '200', prop: "enterpriseName"},
{label: "联系人", width: '150', prop: "name"},
{label: "联系方式", width: '150', prop: "phone"},
// {label: "身份证号", width: '180', prop: "idNumber"},
{label: "企业主体", width: '200', prop: "enterpriseName"},
{label: "意向金额(万)", width: '150', prop: "loanAmount"},
{label: "申请时间", width: '180', prop: "createTime"},
{label: "客户经理", width: '200', prop: "auditUserName"},
{label: "贷款银行", width: '200', prop: "organizationName"},
{label: "放款金额(万)", width: '200', prop: "auditAmount"},
// {label: "机构类型", width: '200', prop: "organizationType", dict:'financialOrganizationType'},
],
}
},
methods: {
getTableData() {
let status = this.search.status || 999
this.instance.post("/appfinancingdemand/list", null, {
params: {...this.page, ...this.search, status}
}).then(res => {
if (res?.data) {
this.tableData = res.data.records
this.page.total = res.data.total
}
})
},
handleSearchTime(v) {
this.page.current = 1
this.search.createTimeStart = v?.[0].substring(0, 10)
this.search.createTimeEnd = v?.[1].substring(0, 10)
this.getTableData()
}
},
created() {
this.dict.load('financingDemandStatus')
this.search.areaId = this.user.info.areaId
this.getTableData()
}
}
</script>
<style lang="scss" scoped>
.AppNeedSta {
height: 100%;
.status0 {
color: #f82;
}
.status1 {
color: #2EA222;
}
.status2 {
color: #f46;
}
}
</style>

View File

@@ -150,8 +150,8 @@
<div v-for="(m,i) in item.candidateFieldInfos" :key="i" style="margin-left: 10px;">
<div class="desc_div">{{ m.fieldName }}<span
v-if="m.fieldNameSuffix">{{ m.fieldNameSuffix }}</span>:{{
m.dictionaryCode
? dict.getLabel(m.dictionaryCode, m.fieldValue) : m.fieldValue
m.dictionaryCode
? dict.getLabel(m.dictionaryCode, m.fieldValue) : m.fieldValue
}}
</div>
</div>
@@ -573,7 +573,9 @@ export default {
*/
agreeRefulse(index) {
let dictionaryArr = []
this.loading = true
this.instance.post(`/app/approv-alapply-info/approval-popup?id=${this.detail.id}&type=${index}`).then(res => {
this.loading = false
if (res && res.data) {
if (index == 1) {
res.data.fieldInfos.map(e => {
@@ -600,6 +602,7 @@ export default {
}
}
}).catch(err => {
this.loading = false
console.log(err);
})
},
@@ -788,7 +791,99 @@ export default {
}
}
.add_record {
::v-deep.add_record {
.el-step.is-vertical .el-step__line {
width: 1px;
left: 20px;
}
.el-step__icon {
width: 40px;
height: 40px;
background-color: #2266FF;
border: 1px solid #fff;
}
.el-step__main {
padding-left: 36px !important;
margin-bottom: 30px;
}
.bg-999 {
color: #999;
.el-step__icon {
background-color: #D0D4DC !important;
}
.el-step__line {
background-color: #fff;
}
.record_title {
p {
color: #999 !important;
}
}
.desc_name, .desc_ul {
color: #999 !important;
}
}
.step-hide {
.el-step__line {
background-color: #fff;
}
}
.dia_ul {
justify-content: left;
flex-wrap: wrap;
li {
margin-bottom: 10px;
}
}
.right_name {
border: 1px solid #fff;
width: 40px;
height: 40px;
border-radius: 50%;
line-height: 40px;
text-align: center;
font-size: 14px;
background-color: #2266FF;
color: #fff;
margin: 0 20px;
position: relative;
.el-icon-arrow-right, .el-icon-circle-plus {
position: absolute;
top: 15px;
right: -30px;
color: #999;
}
.el-icon-error {
position: absolute;
top: 0;
color: #333;
right: -6px;
cursor: pointer;
}
}
.upload-demo {
::v-deep .el-icon-close {
transform: translateX(-50px);
}
}
.record_icon {
position: relative;
@@ -909,99 +1004,6 @@ export default {
cursor: pointer;
}
.el-step.is-vertical .el-step__line {
width: 1px;
left: 20px;
}
.el-step__icon {
width: 40px;
height: 40px;
background-color: #2266FF;
border: 1px solid #fff;
}
.bg-999 {
color: #999;
.el-step__icon {
background-color: #D0D4DC !important;
}
.el-step__line {
background-color: #fff;
}
.record_title {
p {
color: #999 !important;
}
}
.desc_name, .desc_ul {
color: #999 !important;
}
}
.step-hide {
.el-step__line {
background-color: #fff;
}
}
.el-step__main {
padding-left: 36px !important;
margin-bottom: 30px;
}
.dia_ul {
justify-content: left;
flex-wrap: wrap;
li {
margin-bottom: 10px;
}
}
.right_name {
border: 1px solid #fff;
width: 40px;
height: 40px;
border-radius: 50%;
line-height: 40px;
text-align: center;
font-size: 14px;
background-color: #2266FF;
color: #fff;
margin: 0 20px;
position: relative;
.el-icon-arrow-right, .el-icon-circle-plus {
position: absolute;
top: 15px;
right: -30px;
color: #999;
}
.el-icon-error {
position: absolute;
top: 0;
color: #333;
right: -6px;
cursor: pointer;
}
}
.upload-demo {
::v-deep .el-icon-close {
transform: translateX(-50px);
}
}
::v-deep .el-radio {
margin-bottom: 10px;
}

View File

@@ -9,13 +9,8 @@
<el-row type="type" justify="space-between" :gutter="20">
<el-col :span="12">
<el-form-item label="所属部门" prop="department">
<el-select placeholder="请选择" size="small" v-model="form.department" clearable style="width: 100%;">
<el-option
v-for="(item,i) in dict.getDict('hbDepartment')" :key="i"
:label="item.dictName"
:value="item.dictValue">
</el-option>
</el-select>
<ai-select placeholder="请选择" v-model="form.department" action="/appfinancialorganization/nameList"
:instance="instance" :prop="{label:'organizationName',value:'organizationName'}"/>
</el-form-item>
</el-col>
<el-col :span="12">
@@ -39,7 +34,7 @@
</el-form-item>
<el-form-item label="是否启用" prop="processDefStatus">
<el-switch v-model="form.processDefStatus"
active-color="#5088FF" inactive-color="#D0D4DC" active-value="1" inactive-value="0">
active-color="#5088FF" inactive-color="#D0D4DC" active-value="1" inactive-value="0">
</el-switch>
</el-form-item>
</el-form>
@@ -56,11 +51,11 @@ export default {
dict: Object,
},
data() {
const validTimeLimit = (rule, value, callback) =>{
if(!value){
const validTimeLimit = (rule, value, callback) => {
if (!value) {
return callback(new Error('请输入办结时限'));
}else {
if(+value<=0){
} else {
if (+value <= 0) {
return callback(new Error('最小值为1'));
}
callback();
@@ -76,11 +71,11 @@ export default {
processDefStatus: "1",
},
classList: [],
rules:{
rules: {
processName: [{required: true, message: '请输入事项名称', trigger: 'blur'}],
department: [{required: true, message: '请选择所属部门', trigger: 'change'}],
// department: [{required: true, message: '请选择所属部门', trigger: 'change'}],
classificationId: [{required: true, message: '请选择所属分类', trigger: 'change'}],
timeLimit: [{required: true,validator:validTimeLimit ,trigger: 'blur'}],
timeLimit: [{required: true, validator: validTimeLimit, trigger: 'blur'}],
needToKnow: [{required: true, message: '请输入办理须知', trigger: 'blur'}],
processDefStatus: [{required: true, message: '请选择是否启用', trigger: 'change'}],
}

View File

@@ -0,0 +1,219 @@
<template>
<section class="personCreditReport">
<el-link v-if="hasIdNumber" type="primary" @click.stop="handleShow">个人产权</el-link>
<el-dialog :visible.sync="dialog" title="个人产权信息" width="1200px" customFooter>
<div class="top">
<div class="top-left">
<el-image v-if="info.avatar"/>
<div v-else v-html="txtLogo"/>
</div>
<div class="top-right">
<div class="top-right__top">
<h2 v-text="person.name"/>
</div>
<div class="top-right__bottom">
<ai-wrapper
label-width="130px">
<ai-info-item label="手机号码:" :value="person.phone"/>
<ai-info-item label="身份证号:" :value="person.idNumber"/>
</ai-wrapper>
</div>
</div>
</div>
<el-tabs type="border-card" stretch>
<el-tab-pane label="企业信息">
<ai-table :dict="dict" :tableData="info.enterpriseList" :col-configs="colConfigs1"
:isShowPagination="false" border tableSize="small"/>
</el-tab-pane>
<el-tab-pane label="宅基地信息" lazy>
<ai-table :dict="dict" :tableData="info.homesteadInfoList" :col-configs="colConfigs2"
:isShowPagination="false" border tableSize="small"/>
</el-tab-pane>
<el-tab-pane label="集体经济组织股权" lazy>
<ai-table :dict="dict" :tableData="info.shareholderList" :col-configs="colConfigs3"
:isShowPagination="false" border tableSize="small"/>
</el-tab-pane>
<el-tab-pane label="土地流转经营" lazy>
<ai-table :dict="dict" :tableData="info.landCirculateInfoList" :col-configs="colConfigs4"
:isShowPagination="false" border tableSize="small"/>
</el-tab-pane>
</el-tabs>
<template #footer>
<el-button @click.stop="dialog=false">关闭</el-button>
</template>
</el-dialog>
</section>
</template>
<script>
import {mapState} from "vuex";
export default {
name: "personCreditReport",
computed: {
...mapState(['user']),
isFinanceUser() {
return !!this.user.financeUser?.id
},
txtLogo() {
return this.person.name?.substring(0, 1) || ""
},
hasIdNumber() {
return !!this.person.idNumber
}
},
data() {
return {
dialog: false,
info: {},
currIndex: 0,
colConfigs1: [
{prop: 'enterpriseName', label: '企业名称'},
{prop: 'enterpriseType', label: '企业类型', dict: "enterpriseType", align: 'center'},
{prop: 'areaName', label: '所属区域', align: 'center'},
{prop: 'businessScope', label: '经营范围', align: 'center'},
{prop: 'operationPeriod', label: '营业期限', align: 'center'},
],
colConfigs2: [
{prop: 'usePerson', label: '使用人'},
{prop: 'houseNumber', label: '家庭人口', align: 'center'},
{prop: 'areaName', label: '所在地区', align: 'center'},
{prop: 'landArea', label: '土地面积/㎡', align: 'center'},
{prop: 'landOwnership', label: '土地所有权', align: 'center'},
],
colConfigs3: [
{prop: 'organizationName', label: '集体经济组织名称'},
{prop: 'areaName', align: 'center', label: '所在地区'},
{prop: 'name', align: 'center', label: '持股人'},
{prop: 'shareholdingNumber', align: 'center', label: '股权总数'},
{prop: 'shareholdingAmount', align: 'center', label: '股金总额'}
],
colConfigs4: [
{prop: 'landOutflowName', label: '土地流出方'},
{prop: 'landArea', align: 'center', label: '土地面积/㎡'},
{prop: 'landUndertakeName', align: 'center', label: '土地承接方'},
{prop: 'circulateType', align: 'center', label: '流转形式'},
{prop: 'startDate', align: 'center', label: '开始日期'},
],
}
},
created() {
this.dict.load("enterpriseType")
},
methods: {
getPCR() {
let {idNumber, createUserId: id} = this.person
return this.instance.post(`/appportaluser/queryPersonPropertyRight`, null, {
params: {idNumber, id}
}).then(res => {
if (res?.data) {
let {avatar} = res.data
if (avatar) {
avatar = JSON.parse(avatar)?.[0]
}
return this.info = {...res.data, avatar}
}
})
},
handleShow() {
this.getPCR().then(() => this.dialog = true)
}
},
props: {
instance: Function,
dict: Object,
permissions: Function,
person: {required: true, default: () => ({})}
}
}
</script>
<style lang="scss" scoped>
.personCreditReport {
margin-left: 16px;
.table-item {
h2 {
margin-bottom: 16px;
color: #333333;
font-size: 18px;
font-weight: 600;
}
}
.top {
display: flex;
margin-bottom: 20px;
padding: 34px 30px 16px;
border: 1px solid #EEEEEE;
border-radius: 4px;
.top-left {
margin-right: 16px;
padding: 12px 16px;
background: #8CA3CD;
color: #FFFFFF;
font-size: 22px;
line-height: 30px;
border-radius: 8px;
height: fit-content;
}
.top-right {
flex: 1;
.top-right__top {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 16px;
h2 {
color: #333333;
font-size: 22px;
}
.right {
display: flex;
align-items: center;
justify-content: center;
width: 97px;
height: 32px;
background: #E8F4FF;
border: 1px solid #A3D3FF;
border-radius: 3px;
color: #1890FF;
font-size: 13px;
cursor: pointer;
&:hover {
opacity: 0.6;
}
}
}
.top-right__bottom {
padding: 16px 10px 10px 0;
background: #F6FBFF;
}
}
}
::v-deep.el-tabs {
.el-tabs__header {
padding: unset;
.el-tabs__item {
background: #f3f6f9;
border-bottom-color: #ddd;
margin-left: 0;
&.is-active {
background: #fff;
border-bottom-color: transparent;
}
}
}
}
}
</style>