Commit fa181c41 authored by 李晓兵's avatar 李晓兵

''

parents 26f6ebec 4e9d1800
Pipeline #4330 canceled with stages
...@@ -10,6 +10,6 @@ module.exports = { ...@@ -10,6 +10,6 @@ module.exports = {
filePath: '"http://180.104.121.66:8088/r/api/app/fileViewSvc?sysName=XCMG_DEV&apiName=file_view&"', filePath: '"http://180.104.121.66:8088/r/api/app/fileViewSvc?sysName=XCMG_DEV&apiName=file_view&"',
ocrPath:'"http://180.104.121.66:8088/r/api"', ocrPath:'"http://180.104.121.66:8088/r/api"',
fileUploadSvcPath:'"http://180.104.121.66:8088/r/api/app/fileUploadSvc?sysName=XCMG_DEV&apiName="', fileUploadSvcPath:'"http://180.104.121.66:8088/r/api/app/fileUploadSvc?sysName=XCMG_DEV&apiName="',
appId: '"com.xcmg.app"', appId: '"com.xcmg.app.dev"',
currentVersion: '"1.2.1"' currentVersion: '"1.2.1"'
} }
...@@ -59,8 +59,8 @@ import Jpush from './scripts/jpushService' ...@@ -59,8 +59,8 @@ import Jpush from './scripts/jpushService'
import Jmessage from './scripts/jmessageService' import Jmessage from './scripts/jmessageService'
// if (process.env.CONFIG_ENV === 'uat') { // if (process.env.CONFIG_ENV === 'uat') {
//const VConsole = require('vconsole') const VConsole = require('vconsole')
// new VConsole() // eslint-disable-line new VConsole() // eslint-disable-line
// } // }
Vue.use(componentInstall) Vue.use(componentInstall)
......
<!-- <!--
* @Author: your name * @Author: your name
* @Date: 2019-09-29 10:02:11 * @Date: 2019-09-29 10:02:11
* @LastEditTime : 2019-12-23 11:04:04 * @LastEditTime : 2019-12-26 13:30:22
* @LastEditors : Please set LastEditors * @LastEditors : Please set LastEditors
* @Description: In User Settings Edit * @Description: In User Settings Edit
--> -->
...@@ -14,8 +14,8 @@ ...@@ -14,8 +14,8 @@
</div> </div>
</h-header> </h-header>
<div class="tab-style has-header"> <div class="tab-style has-header">
<div :class="{'done':num === 1,'undone':num !== 1}" @click="num = 1;"><img :src="num === 1?check1:uncheck1"><span>签约</span></div> <div :class="{'done':num === 1,'undone':num !== 1}" @click="num = 1;"><img :src="num === 1?check1:uncheck1"><span>提交</span></div>
<div :class="{'done':num === 2,'undone':num !== 2}" @click="num = 2;"><img :src="num === 2?check2:uncheck2"><span>签约</span></div> <div :class="{'done':num === 2,'undone':num !== 2}" @click="num = 2;"><img :src="num === 2?check2:uncheck2"><span>提交</span></div>
</div> </div>
<!-- 搜索 --> <!-- 搜索 -->
<div class="search"> <div class="search">
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
> >
<div class="wrap"> <div class="wrap">
<div v-for="(item,index) in showLists" :key="index" class="contract-lists" > <div v-for="(item,index) in showLists" :key="index" class="contract-lists" >
<div class="pro-code" @click="goDetails(item)"> <div class="pro-code" @click="changeBase">
<img src="@/assets/distributorSign/fileIcon.png" alt="" class="file-icon"> <img src="@/assets/distributorSign/fileIcon.png" alt="" class="file-icon">
<p> <p>
<span>合同号</span> <span>合同号</span>
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
<div class="box"> <div class="box">
<div><p>承租人</p><p>{{ item.bp_name }}</p></div> <div><p>承租人</p><p>{{ item.bp_name }}</p></div>
<div><p>合同租金</p><p class="money">{{ item.total_price|currency }}</p></div> <div><p>合同租金</p><p class="money">{{ item.total_price|currency }}</p></div>
<div><p>申请时间</p><p>{{ item.confirm_start_date }}</p></div> <div><p>申请时间</p><p>{{ dateConverse(item.project_start_date) }}</p></div>
</div> </div>
</div> </div>
</div> </div>
...@@ -63,56 +63,291 @@ export default { ...@@ -63,56 +63,291 @@ export default {
return { return {
num: 1, num: 1,
pagenum: 1, pagenum: 1,
submitPagenum: 1,
approvedPagenum: 1,
check1: Check1, check1: Check1,
check2: Check2, check2: Check2,
uncheck1: unCheck1, uncheck1: unCheck1,
uncheck2: unCheck2, uncheck2: unCheck2,
user_bp_type: '', // 客户类型 user_bp_type: '', // 客户类型
searchInput: '', // 搜索内容 searchInput: '', // 搜索内容
showLists: [ submitLists: [], // 待签约
{ project_number: '201903022001', bp_name: '张三', total_price: '1000000', confirm_start_date: '2019-12-18' }, approvedLists: [], // 已签约
{ project_number: '201903022001', bp_name: '张三', total_price: '1000000', confirm_start_date: '2019-12-18' }, showLists: [],
{ project_number: '201903022001', bp_name: '张三', total_price: '1000000', confirm_start_date: '2019-12-18' }, approvedFlag: false,
], // showLists: [
// { project_number: '201903022001', bp_name: '张三', total_price: '1000000', confirm_start_date: '2019-12-18' },
// { project_number: '201903022001', bp_name: '张三', total_price: '1000000', confirm_start_date: '2019-12-18' },
// { project_number: '201903022001', bp_name: '张三', total_price: '1000000', confirm_start_date: '2019-12-18' },
// ],
} }
}, },
watch: { watch: {
}, 'num': {
activated () { handler (newVal, oldVal) {
this.$refs.scroll.update(false)
}, if (newVal === 2) {
created () { if (!this.approvedFlag) {
this.contractList()
}
this.$refs.scroll.scrollToTop()
this.showLists = this.approvedLists
} else if (newVal === 1) {
this.showLists = this.submitLists
this.$refs.scroll.scrollToTop()
}
},
},
searchInput () {
let vm = this
if (vm.timeout) {
clearTimeout(vm.timeout)
}
vm.timeout = setTimeout(() => {
vm.search()
}, 1000)
},
}, },
beforeRouteEnter (to, from, next) { beforeRouteEnter (to, from, next) {
next(vm => { next(vm => {
if (from.name === 'MyInfo') { if (from.name === 'MyInfo') {
vm.searchInput = '' vm.searchInput = ''
vm.pagenum = 1 vm.pagenum = 1
vm.num = 1
vm.submitPagenum = 1
vm.approvedPagenum = 1
vm.user_bp_type = vm.$route.params.user_bp_type vm.user_bp_type = vm.$route.params.user_bp_type
vm.listsQuery() // 已创建合同列表查询 vm.approvedFlag = false
vm.submitLists = []
vm.approvedLists = []
vm.$refs.scroll.update(false)
vm.$refs.scroll.scrollToTop()
vm.contractList()
// vm.listsQuery()
} }
}) })
}, },
methods: { methods: {
listsQuery () { dateConverse (date) {
return date.replace(/\//g, '-')
},
// listsQuery () {
// let vm = this
// let url = process.env.basePath + 'prj_submit_list'
// let param = {
// user_phone: window.localStorage.user_phone,
// pagesize: 10,
// searchInput: vm.searchInput,
// pagenum: vm.pagenum,
// project_status: 'APPROVED',
// }
// vm.hlsPopup.showLoading('请稍候')
// vm.hlsHttp.post(url, param).then(function (res) {
// vm.hlsPopup.hideLoading()
// console.log('已创建合同列表查询', res)
// if (res.result === 'S') {
// // vm.showLists = res.lists
// }
// })
// },
// 合同查询
contractList () {
let vm = this
if (vm.num === 1) {
let url = $config.basePath + 'prj_submit_list'
let param = {
user_phone: window.localStorage.user_phone,
pagesize: 10,
pagenum: vm.submitPagenum,
project_status: 'NEW',
searchInput: vm.searchInput,
}
vm.hlsPopup.showLoading('数据加载中')
vm.hlsHttp.post(url, param).then(function (res) {
vm.hlsPopup.hideLoading()
if (res.result === 'S') {
vm.submitLists = res.lists
vm.showLists = vm.submitLists
if (res.lists.length > 0 && res.lists.length < 10) {
vm.$refs.scroll.update(true)
} else if (res.lists.length === 10) {
vm.$refs.scroll.update(false)
}
} else {
hlsPopup.showLongCenter(res.message)
}
})
} else if (vm.num === 2) {
let url = $config.basePath + 'prj_confirm_list_query'
let param = {
pagesize: 10,
pagenum: vm.approvedPagenum,
searchInput: vm.searchInput,
project_status: 'APPROVED',
user_phone: window.localStorage.user_phone,
}
vm.hlsPopup.showLoading('数据加载中')
vm.hlsHttp.post(url, param).then(function (res) {
vm.hlsPopup.hideLoading()
if (res.result === 'S') {
console.log(res.lists)
vm.approvedLists = res.lists
vm.approvedFlag = true
vm.showLists = vm.approvedLists
if (res.lists.length > 0 && res.lists.length < 10) {
vm.$refs.scroll.update(true)
} else if (res.lists.length === 10) {
vm.$refs.scroll.update(false)
}
} else {
hlsPopup.showLongCenter(res.message)
}
})
}
},
loadMore () {
let vm = this
if (vm.num === 1) {
vm.submitPagenum++
let url = $config.basePath + 'prj_confirm_list_query'
let param = {
user_phone: window.localStorage.user_phone,
pagesize: 10,
pagenum: vm.submitPagenum,
project_status: 'NEW',
searchInput: vm.searchInput,
}
vm.hlsPopup.showLoading('请稍后')
vm.hlsHttp.post(url, param).then(function (res) {
vm.hlsPopup.hideLoading()
let returnData = []
if (res.result === 'S') {
returnData = res.lists
if (returnData.length === 0) {
vm.$refs.scroll.update(true)
} else if (returnData.length > 0 && returnData.length < 10) {
returnData.forEach((data, index, array) => {
vm.submitLists.push(array[index])
})
vm.$refs.scroll.update(true)
} else if (returnData.length === 10) {
returnData.forEach((data, index, array) => {
vm.submitLists.push(array[index])
})
vm.$refs.scroll.update(false)
}
vm.showLists = vm.submitLists
} else {
hlsPopup.showLongCenter(res.message)
}
})
} else if (vm.num === 2) {
vm.approvedPagenum++
let url = $config.basePath + 'prj_confirm_list_query'
let param = {
user_phone: window.localStorage.user_phone,
pagesize: 10,
pagenum: vm.approvedPagenum,
project_status: 'APPROVED',
searchInput: vm.searchInput,
}
vm.hlsPopup.showLoading('请稍后')
vm.hlsHttp.post(url, param).then(function (res) {
vm.hlsPopup.hideLoading()
let returnData = []
if (res.result === 'S') {
returnData = res.lists
if (returnData.length === 0) {
vm.$refs.scroll.update(true)
} else if (returnData.length > 0 && returnData.length < 10) {
returnData.forEach((data, index, array) => {
vm.approvedLists.push(array[index])
})
vm.$refs.scroll.update(true)
} else if (returnData.length === 10) {
returnData.forEach((data, index, array) => {
vm.approvedLists.push(array[index])
})
vm.$refs.scroll.update(false)
}
vm.showLists = vm.approvedLists
} else {
hlsPopup.showLongCenter(res.message)
}
})
}
},
async submitSearch () {
let vm = this let vm = this
let url = process.env.basePath + 'prj_submit_list' vm.submitPagenum = 1
let url = $config.basePath + 'prj_confirm_list_query'
let param = { let param = {
user_phone: window.localStorage.user_phone, user_phone: window.localStorage.user_phone,
pagesize: 10, pagesize: 10,
pagenum: vm.submitPagenum,
project_status: 'NEW',
searchInput: vm.searchInput, searchInput: vm.searchInput,
pagenum: vm.pagenum,
} }
vm.hlsPopup.showLoading('请稍候') vm.hlsPopup.showLoading('请稍后')
vm.hlsHttp.post(url, param).then(function (res) { let res = await vm.$post(url, param)
if (res.result === 'S') {
vm.hlsPopup.hideLoading() vm.hlsPopup.hideLoading()
console.log('已创建合同列表查询', res) vm.submitLists = res.lists
if (res.result === 'S') { if (vm.num === 1) {
// vm.showLists = res.lists vm.showLists = vm.submitLists
}
// vm.showLists = vm.submitLists
if (res.lists.length >= 0 && res.lists.length < 10) {
vm.$refs.scroll.update(true)
} else if (res.lists.length === 10) {
vm.$refs.scroll.update(false)
}
return true
} else {
hlsPopup.showLongCenter(res.message)
return false
}
},
approvedearch () {
let vm = this
let url = $config.basePath + 'prj_confirm_list_query'
vm.approvedPagenum = 1
let param = {
user_phone: window.localStorage.user_phone,
pagesize: 10,
pagenum: vm.approvedPagenum,
project_status: 'APPROVED',
searchInput: vm.searchInput,
}
vm.hlsHttp.post(url, param).then(function (res) {
vm.approvedLists = res.lists
if (vm.num === 2) {
vm.showLists = vm.approvedLists
}
// vm.showLists = vm.approvedLists
if (res.lists.length >= 0 && res.lists.length < 10) {
vm.$refs.scroll.update(true)
} else if (res.lists.length === 10) {
vm.$refs.scroll.update(false)
} }
}) })
}, },
async search () {
let res = await this.submitSearch()
if (res) {
this.approvedearch()
}
},
changeBase () {
if (this.num === 1) {
window.localStorage.setItem('contractReadonly', false)
} else if (this.num === 2) {
window.localStorage.setItem('contractReadonly', true)
}
this.$router.push({
name: 'CreateBaseInfo',
})
},
goDetails () { goDetails () {
this.$router.push({ this.$router.push({
name: 'SalesInfo', name: 'SalesInfo',
...@@ -121,12 +356,6 @@ export default { ...@@ -121,12 +356,6 @@ export default {
}, },
}) })
}, },
changePage () {
this.$router.push({
name: 'SalesInfo',
})
},
loadMore () {},
}, },
} }
</script> </script>
......
...@@ -49,43 +49,43 @@ ...@@ -49,43 +49,43 @@
</item> </item>
<item> <item>
<div slot="name">设备单价</div> <div slot="name">设备单价</div>
<CurrencyInput slot="content" v-model="saveInfo.equip_price" placeholder="暂无信息" /> <CurrencyInput slot="content" v-model="saveInfo.equip_price" placeholder="0" />
</item> </item>
<item> <item>
<div slot="name">融资金额</div> <div slot="name">融资金额</div>
<CurrencyInput slot="content" v-model="saveInfo.finance_amount" placeholder="暂无信息" /> <CurrencyInput slot="content" v-model="finance_amount" placeholder="0" />
</item> </item>
<item> <item>
<div slot="name">首付比例</div> <div slot="name">首付比例</div>
<input slot="content" v-model="saveInfo.down_payment_ratio_n" placeholder="暂无信息" > <input slot="content" v-model="saveInfo.down_payment_ratio_n" placeholder="%" >
</item> </item>
<item> <item>
<div slot="name">首付款</div> <div slot="name">首付款</div>
<CurrencyInput slot="content" v-model="saveInfo.down_payment" placeholder="暂无信息" /> <CurrencyInput slot="content" v-model="saveInfo.down_payment" placeholder="0" @input="changeRatio" />
</item> </item>
<item> <item>
<div slot="name">保证金比例</div> <div slot="name">保证金比例</div>
<input slot="content" v-model="saveInfo.deposit_ratio_n" placeholder="暂无信息" > <input slot="content" v-model="saveInfo.deposit_ratio_n" placeholder="%" >
</item> </item>
<item> <item>
<div slot="name">保证金</div> <div slot="name">保证金</div>
<CurrencyInput slot="content" v-model="saveInfo.deposit" placeholder="暂无信息" /> <CurrencyInput slot="content" v-model="saveInfo.deposit" placeholder="0" @input="changeDeposit"/>
</item> </item>
<item> <item>
<div slot="name">手续费比例</div> <div slot="name">手续费比例</div>
<input slot="content" v-model="saveInfo.lease_charge_ratio_n" placeholder="暂无信息" > <input slot="content" v-model="saveInfo.lease_charge_ratio_n" placeholder="%" >
</item> </item>
<item> <item>
<div slot="name">手续费</div> <div slot="name">手续费</div>
<CurrencyInput slot="content" v-model="saveInfo.lease_charge" placeholder="暂无信息" /> <CurrencyInput slot="content" v-model="saveInfo.lease_charge" placeholder="0" @input="changeLeaseCharge"/>
</item> </item>
<item> <item>
<div slot="name">GPS费用</div> <div slot="name">GPS费用</div>
<CurrencyInput slot="content" v-model="saveInfo.gps_fee" placeholder="暂无信息" /> <CurrencyInput slot="content" v-model="saveInfo.gps_fee" placeholder="0" />
</item> </item>
<item> <item>
<div slot="name">保险押金</div> <div slot="name">保险押金</div>
<CurrencyInput slot="content" v-model="saveInfo.insurance_fee" placeholder="暂无信息" /> <CurrencyInput slot="content" v-model="saveInfo.insurance_fee" placeholder="0" />
</item> </item>
<item class="date-check" @click.native="showTime('YYYY-MM-DD')"> <item class="date-check" @click.native="showTime('YYYY-MM-DD')">
<div slot="name">预计付款日</div> <div slot="name">预计付款日</div>
...@@ -101,7 +101,7 @@ ...@@ -101,7 +101,7 @@
</item> </item>
<item> <item>
<div slot="name">年利率</div> <div slot="name">年利率</div>
<input slot="content" v-model="saveInfo.int_rate_n" readonly placeholder="暂无信息" > <input slot="content" v-model="saveInfo.int_rate_n" readonly placeholder="%" >
</item> </item>
<item :showArrow="true" @click.native="selectPayWay"> <item :showArrow="true" @click.native="selectPayWay">
<div slot="name">支付方式</div> <div slot="name">支付方式</div>
...@@ -109,7 +109,7 @@ ...@@ -109,7 +109,7 @@
</item> </item>
<item> <item>
<div slot="name">逾期日利率</div> <div slot="name">逾期日利率</div>
<input slot="content" v-model="saveInfo.penalty_rate_n" readonly placeholder="暂无信息" > <input slot="content" v-model="saveInfo.penalty_rate_n" readonly placeholder="%" >
</item> </item>
<item> <item>
<div slot="name">留购价</div> <div slot="name">留购价</div>
...@@ -270,6 +270,11 @@ export default { ...@@ -270,6 +270,11 @@ export default {
}, },
} }
}, },
computed: {
'finance_amount' () { // 融资金额
return parseFloat(this.saveInfo.equip_price - this.saveInfo.equip_price * this.saveInfo.down_payment_ratio_n.replace('%', '') / 100).toFixed(2)
},
},
watch: { watch: {
policyKeyWord (newVal, oldVal) { policyKeyWord (newVal, oldVal) {
this.searchBusinessPolicy() this.searchBusinessPolicy()
...@@ -277,6 +282,20 @@ export default { ...@@ -277,6 +282,20 @@ export default {
keyWordProduct (newVal, oldVal) { keyWordProduct (newVal, oldVal) {
this.searchProduct() this.searchProduct()
}, },
'saveInfo.equip_price' () {
this.saveInfo.down_payment = (this.saveInfo.equip_price * this.saveInfo.down_payment_ratio_n.replace('%', '') / 100).toFixed(2)
this.saveInfo.deposit = (this.saveInfo.equip_price * this.saveInfo.deposit_ratio_n.replace('%', '') / 100).toFixed(2)
this.saveInfo.lease_charge = parseFloat((this.saveInfo.equip_price - this.saveInfo.equip_price * this.saveInfo.down_payment_ratio_n.replace('%', '') / 100) * (this.saveInfo.lease_charge_ratio_n.replace('%', '') / 100)).toFixed(2)
},
'saveInfo.deposit_ratio_n' (newVal, oldVal) {
this.saveInfo.deposit = (this.saveInfo.equip_price * newVal.replace('%', '') / 100).toFixed(2)
},
'saveInfo.down_payment_ratio_n' (newVal, oldVal) {
this.saveInfo.down_payment = (this.saveInfo.equip_price * newVal.replace('%', '') / 100).toFixed(2)
},
'saveInfo.lease_charge_ratio_n' (newVal, oldVal) {
this.saveInfo.lease_charge = parseFloat((this.saveInfo.equip_price - this.saveInfo.equip_price * this.saveInfo.down_payment_ratio_n.replace('%', '') / 100) * (this.saveInfo.lease_charge_ratio_n.replace('%', '') / 100)).toFixed(2)
},
}, },
beforeRouteEnter (to, from, next) { beforeRouteEnter (to, from, next) {
next(vm => { next(vm => {
...@@ -285,18 +304,41 @@ export default { ...@@ -285,18 +304,41 @@ export default {
vm.pagenumSearch = 1 vm.pagenumSearch = 1
vm.pagenumSearchPolicy = 1 vm.pagenumSearchPolicy = 1
vm.policyKeyWord = '' vm.policyKeyWord = ''
vm.keyWordProduct = ''
vm.businessLists = []
vm.divisionLists = []
vm.pagenum = 1
vm.pagenumPolicy = 1
if (from.name === 'CreateBaseInfo') { if (from.name === 'CreateBaseInfo') {
vm.businessLists = []
vm.pagenum = 1
vm.pagenumPolicy = 1
vm.isComputed = false vm.isComputed = false
vm.getProductLine() // 产品线查询 Object.keys(vm.saveInfo).forEach(i => {
vm.repayPeriod()// 还款周期查询 if (i !== 'project_id') {
vm.getPayWay()// 支付方式查询 vm.saveInfo[i] = ''
}
})
Object.keys(vm.productInfo).forEach(i => {
if (i !== 'project_id') {
vm.saveInfo[i] = ''
}
})
setTimeout(() => {
vm.getProductLine() // 产品线查询
vm.repayPeriod()// 还款周期查询
vm.getPayWay()// 支付方式查询
}, 0)
} }
}) })
}, },
methods: { methods: {
changeRatio () {
this.saveInfo.down_payment_ratio_n = `${(this.saveInfo.down_payment / this.saveInfo.equip_price).toFixed(2) * 100}%`
},
changeDeposit () {
this.saveInfo.deposit_ratio_n = `${(this.saveInfo.deposit / this.saveInfo.equip_price).toFixed(2) * 100}%`
},
changeLeaseCharge () {
this.saveInfo.lease_charge_ratio_n = `${(this.saveInfo.lease_charge / (this.saveInfo.equip_price - this.saveInfo.equip_price * this.saveInfo.down_payment_ratio_n.replace('%', '') / 100)).toFixed(2) * 100}%`
},
selectBusinessPolicy (e) { selectBusinessPolicy (e) {
let vm = this let vm = this
vm.saveInfo.product_plan_id = e.product_plan_id vm.saveInfo.product_plan_id = e.product_plan_id
...@@ -308,6 +350,7 @@ export default { ...@@ -308,6 +350,7 @@ export default {
vm.saveInfo.int_rate = e.int_rate vm.saveInfo.int_rate = e.int_rate
vm.saveInfo.int_rate_n = e.int_rate_n vm.saveInfo.int_rate_n = e.int_rate_n
vm.saveInfo.penalty_rate_n = e.penalty_rate_n vm.saveInfo.penalty_rate_n = e.penalty_rate_n
vm.saveInfo.penalty_rate = e.penalty_rate
vm.saveInfo.deposit_ratio = e.deposit_ratio vm.saveInfo.deposit_ratio = e.deposit_ratio
vm.saveInfo.deposit_ratio_n = e.deposit_ratio_n vm.saveInfo.deposit_ratio_n = e.deposit_ratio_n
setTimeout(() => { setTimeout(() => {
...@@ -316,7 +359,14 @@ export default { ...@@ -316,7 +359,14 @@ export default {
}, },
save () { save () {
let vm = this let vm = this
vm.$router.push({
name: 'CreateEnclosureInfo',
})
let url = process.env.basePath + 'prj_lease_info_save' let url = process.env.basePath + 'prj_lease_info_save'
vm.saveInfo.down_payment_ratio = (vm.saveInfo.down_payment_ratio_n.replace('%', '') / 100).toFixed(2)
vm.saveInfo.lease_charge_ratio = (vm.saveInfo.lease_charge_ratio_n.replace('%', '') / 100).toFixed(2)
vm.saveInfo.deposit_ratio = (vm.saveInfo.deposit_ratio_n.replace('%', '') / 100).toFixed(2)
vm.saveInfo.finance_amount = vm.finance_amount
let param = { let param = {
master: vm.saveInfo, master: vm.saveInfo,
} }
...@@ -646,7 +696,7 @@ export default { ...@@ -646,7 +696,7 @@ export default {
name: 'ContractRepayPlan', name: 'ContractRepayPlan',
params: { params: {
product_num: this.productInfo.product_num, product_num: this.productInfo.product_num,
project_id: this.project_id, project_id: window.localStorage.project_id,
}, },
}) })
}, },
......
...@@ -281,6 +281,7 @@ export default { ...@@ -281,6 +281,7 @@ export default {
bp_agent_id: '', bp_agent_id: '',
pageNum: 1, pageNum: 1,
pageNumSearch: 1, pageNumSearch: 1,
status: window.localStorage.contractReadonly,
BussinessSituationList: [], // 行业情况 BussinessSituationList: [], // 行业情况
jobSituationList: [], // 职业情况 jobSituationList: [], // 职业情况
houseInfonList: [], // 房产信息 houseInfonList: [], // 房产信息
...@@ -293,7 +294,7 @@ export default { ...@@ -293,7 +294,7 @@ export default {
ORGBaseInfo: {}, // 企业基本信息 ORGBaseInfo: {}, // 企业基本信息
saveInfo: {// 需要保存的信息 saveInfo: {// 需要保存的信息
project_id: window.localStorage.project_id, project_id: window.localStorage.project_id,
bp_id: window.localStorage.bp_id, bp_id: window.localStorage.bp_id_tenant,
bp_class: window.localStorage.bp_class, bp_class: window.localStorage.bp_class,
equip_num: '', equip_num: '',
equip_num_n: '', equip_num_n: '',
...@@ -344,8 +345,21 @@ export default { ...@@ -344,8 +345,21 @@ export default {
vm.showModalValue = false vm.showModalValue = false
vm.pageNum = 1 vm.pageNum = 1
vm.pageNumSearch = 1 vm.pageNumSearch = 1
vm.undertakeList = []
vm.bp_class = window.localStorage.bp_class vm.bp_class = window.localStorage.bp_class
if (from.name === 'SalesInfo') { if (from.name === 'SalesInfo') {
Object.keys(vm.saveInfo).forEach(i => {
if (i !== 'project_id' && i !== 'bp_id' && i !== 'bp_class' && i !== 'abc_deduction_flag' && i !== 'special_flag') {
vm.saveInfo[i] = ''
} else if (i === 'abc_deduction_flag' && i === 'special_flag') {
vm.saveInfo[i] = 'N'
}
})
vm.selectUdertake = []
setTimeout(() => {
vm.getBaseInfo()
}, 0)
} else if (from.name === 'SalesInfo' && !this.status) {
vm.getBaseInfo() vm.getBaseInfo()
} }
}) })
...@@ -447,7 +461,7 @@ export default { ...@@ -447,7 +461,7 @@ export default {
let randomString = Math.floor(Math.random() * 21) let randomString = Math.floor(Math.random() * 21)
let url = let url =
process.env.basePath + process.env.basePath +
'car_confirm_list_query' + 'prj_bp_guta_query' +
'&index' + '&index' +
`'${randomString}'` `'${randomString}'`
let param = { let param = {
...@@ -487,7 +501,7 @@ export default { ...@@ -487,7 +501,7 @@ export default {
let randomString = Math.floor(Math.random() * 21) let randomString = Math.floor(Math.random() * 21)
let url = let url =
process.env.basePath + process.env.basePath +
'car_confirm_list_query' + 'prj_bp_guta_query' +
'&index' + '&index' +
`'${randomString}'` `'${randomString}'`
let param = { let param = {
...@@ -526,7 +540,7 @@ export default { ...@@ -526,7 +540,7 @@ export default {
let vm = this let vm = this
let url = process.env.basePath + 'bp_np_info_query' let url = process.env.basePath + 'bp_np_info_query'
let param = { let param = {
bp_id: window.localStorage.getItem('bp_id'), bp_id: window.localStorage.getItem('bp_id_tenant'),
} }
hlsPopup.showLoading('请稍候') hlsPopup.showLoading('请稍候')
vm.$post(url, param).then(function (res) { vm.$post(url, param).then(function (res) {
...@@ -542,7 +556,7 @@ export default { ...@@ -542,7 +556,7 @@ export default {
let vm = this let vm = this
let url = process.env.basePath + 'bp_org_info_query' let url = process.env.basePath + 'bp_org_info_query'
let param = { let param = {
bp_id: window.localStorage.bp_id, bp_id: window.localStorage.bp_id_tenant,
} }
hlsPopup.showLoading('请稍候') hlsPopup.showLoading('请稍候')
vm.$post(url, param).then(function (res) { vm.$post(url, param).then(function (res) {
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<h-header :proportion="[5,1,1]" class="bar-custom"> <h-header :proportion="[5,1,1]" class="bar-custom">
<div slot="left" class="h-header-btn"> <div slot="left" class="h-header-btn">
<img src="@/assets/userBind/arrow.png" @click="$routeGo()" > <img src="@/assets/userBind/arrow.png" @click="$routeGo()" >
<span>基本信息</span> <span>附件信息</span>
</div> </div>
</h-header> </h-header>
<h-content> <h-content>
...@@ -26,13 +26,7 @@ ...@@ -26,13 +26,7 @@
<div class="userInfo">基本资料</div> <div class="userInfo">基本资料</div>
<div v-if="bpClass === 'ORG'" class="house"> <div v-if="bpClass === 'ORG'" class="house">
<p class="titles">营业执照</p> <p class="titles">营业执照</p>
<div v-if="!licenseImg" class="card-upload" @click="ocrShow('CAR_CARD', '')"> <div v-if="licenseImg" class="card-upload">
<img src="@/assets/userBind/camera.png" class="upload-btn" >
</div>
<div v-if="licenseImg && status !== 'APPROVED'" class="card-upload">
<img :src="licenseImg" @click="ocrShow('CAR_CARD', '')">
</div>
<div v-if="licenseImg && status === 'APPROVED'" class="card-upload">
<img :src="licenseImg" @click="showBigPicture(licenseImg)"> <img :src="licenseImg" @click="showBigPicture(licenseImg)">
</div> </div>
</div> </div>
...@@ -40,11 +34,7 @@ ...@@ -40,11 +34,7 @@
<p v-if="bpClass === 'NP'" class="titles">身份证</p> <p v-if="bpClass === 'NP'" class="titles">身份证</p>
<p v-if="bpClass === 'ORG'" class="titles">法人代表身份证</p> <p v-if="bpClass === 'ORG'" class="titles">法人代表身份证</p>
<div class="upload-box"> <div class="upload-box">
<div v-if="!idCardFront" @click="ocrShow('idCard', 'front')"> <div v-if="idCardFront">
<img src="@/assets/userBind/front.png" >
<p>正面</p>
</div>
<div v-if="idCardFront && status === 'APPROVED'">
<img <img
v-if="idCardFront" v-if="idCardFront"
:src="idCardFront" :src="idCardFront"
...@@ -52,19 +42,7 @@ ...@@ -52,19 +42,7 @@
@click="showBigPicture(idCardFront)" @click="showBigPicture(idCardFront)"
> >
</div> </div>
<div v-if="idCardFront && status !== 'APPROVED'"> <div v-if="idCardBack">
<img
v-if="idCardFront"
:src="idCardFront"
style="width: 100%;height: 100%;margin: 0"
@click="ocrShow('idCard', 'front')"
>
</div>
<div v-if="!idCardBack" @click="ocrShow('idCard', 'back')">
<img src="@/assets/userBind/back.png" >
<p>反面</p>
</div>
<div v-if="idCardBack && status === 'APPROVED'">
<img <img
v-if="idCardBack" v-if="idCardBack"
:src="idCardBack" :src="idCardBack"
...@@ -72,60 +50,34 @@ ...@@ -72,60 +50,34 @@
@click="showBigPicture(idCardBack)" @click="showBigPicture(idCardBack)"
> >
</div> </div>
<div v-if="idCardBack && status !== 'APPROVED'">
<img
v-if="idCardBack"
:src="idCardBack"
style="width: 100%;height: 100%;margin: 0"
@click="ocrShow('idCard', 'back')"
>
</div>
</div> </div>
</div> </div>
<div class="house"> <div class="house">
<p class="titles">房产证件</p> <p class="titles">房产证件</p>
<div v-if="!houseImg" class="card-upload" @click="ocrShow('HOUSE_CARD', '')"> <div v-if="houseImg" class="card-upload">
<img src="@/assets/userBind/camera.png" class="upload-btn" >
</div>
<div v-if="houseImg && status !== 'APPROVED'" class="card-upload">
<img :src="houseImg" @click="ocrShow('HOUSE_CARD', '')">
</div>
<div v-if="houseImg && status === 'APPROVED'" class="card-upload">
<img :src="houseImg" @click="showBigPicture(houseImg)"> <img :src="houseImg" @click="showBigPicture(houseImg)">
</div> </div>
</div> </div>
<div class="house"> <div class="house">
<p class="titles">车辆行驶证</p> <p class="titles">车辆行驶证</p>
<div v-if="!carImg" class="card-upload" @click="ocrShow('CAR_CARD', '')"> <div v-if="carImg" class="card-upload">
<img src="@/assets/userBind/camera.png" class="upload-btn" >
</div>
<div v-if="carImg && status !== 'APPROVED'" class="card-upload">
<img :src="carImg" @click="ocrShow('CAR_CARD', '')">
</div>
<div v-if="carImg && status === 'APPROVED'" class="card-upload">
<img :src="carImg" @click="showBigPicture(carImg)"> <img :src="carImg" @click="showBigPicture(carImg)">
</div> </div>
</div> </div>
<div v-if="bpClass === 'NP'" class="house"> <div v-if="bpClass === 'NP'" class="house">
<p class="titles">婚姻状况证明</p> <p class="titles">婚姻状况证明</p>
<div v-if="!marryImg" class="card-upload" @click="ocrShow('CAR_CARD', '')"> <div v-if="marryImg" class="card-upload">
<img src="@/assets/userBind/camera.png" class="upload-btn" >
</div>
<div v-if="marryImg && status !== 'APPROVED'" class="card-upload">
<img :src="marryImg" @click="ocrShow('', '')">
</div>
<div v-if="marryImg && status === 'APPROVED'" class="card-upload">
<img :src="marryImg" @click="showBigPicture(marryImg)"> <img :src="marryImg" @click="showBigPicture(marryImg)">
</div> </div>
</div> </div>
<div class="userInfo">补充资料</div> <div class="userInfo">补充资料</div>
<div class="house"> <div class="house">
<p class="titles">特批申请书</p> <p class="titles">特批申请书</p>
<div v-if="!applicationImg" class="card-upload" @click="ocrShow('CAR_CARD', '')"> <div v-if="!applicationImg" class="card-upload" @click="ocrShow('特批申请书', checkId)">
<img src="@/assets/userBind/camera.png" class="upload-btn" > <img src="@/assets/userBind/camera.png" class="upload-btn" >
</div> </div>
<div v-if="applicationImg && status !== 'APPROVED'" class="card-upload"> <div v-if="applicationImg && status !== 'APPROVED'" class="card-upload">
<img :src="applicationImg" @click="ocrShow('', '')"> <img :src="applicationImg" @click="ocrShow('特批申请书', checkId)">
</div> </div>
<div v-if="applicationImg && status === 'APPROVED'" class="card-upload"> <div v-if="applicationImg && status === 'APPROVED'" class="card-upload">
<img :src="applicationImg" @click="showBigPicture(applicationImg)"> <img :src="applicationImg" @click="showBigPicture(applicationImg)">
...@@ -133,8 +85,8 @@ ...@@ -133,8 +85,8 @@
</div> </div>
</h-content> </h-content>
<bottom-tab class="add-box"> <bottom-tab class="add-box">
<tab-button class="before" @click.native="$routeGo()">保存</tab-button> <tab-button class="before" @click.native="handSave">保存</tab-button>
<tab-button class="next" @click.native="goRent">提交</tab-button> <tab-button class="next" @click.native="handleSubmit">提交</tab-button>
</bottom-tab> </bottom-tab>
</h-view> </h-view>
</template> </template>
...@@ -173,6 +125,7 @@ export default { ...@@ -173,6 +125,7 @@ export default {
vm.bpClass = window.localStorage.bp_class vm.bpClass = window.localStorage.bp_class
vm.status = window.localStorage.user_bp_status vm.status = window.localStorage.user_bp_status
vm.loadItemList() vm.loadItemList()
// vm.getPrjId()
} }
}) })
}, },
...@@ -186,20 +139,114 @@ export default { ...@@ -186,20 +139,114 @@ export default {
}) })
}, },
// ocr识别入口 // ocr识别入口
ocrShow (ocrType, type) { ocrShow (desc, checkId) {
let vm = this let vm = this
hlsPopup.showActionSheet({ hlsPopup.showActionSheet({
titleText: '请选择照片', titleText: '请选择照片',
buttonArray: ['拍照', '从相册取'], buttonArray: ['拍照', '从相册取'],
callback: index => { callback: index => {
if (index === 0) { if (index === 0) {
vm.openCamera(ocrType, type) vm.openCamera(desc, checkId)
} else { } else {
vm.takePicture(ocrType, type) vm.takePicture(desc, checkId)
} }
}, },
}) })
}, },
openCamera (desc, checkId) {
let vm = this
let obj = {
'pkvalue': checkId,
'source_type': 'PRJ_CDD_ITEM_CHECK',
'picture': '',
'check_id': checkId,
'filePath': '',
'attachment_id': '',
'user_id': 1,
'fileName': desc + '_' + new Date().getTime(),
}
let cameraoptions = {
quality: 100,
}
let success = function (imgdata) {
obj.picture = imgdata
obj.filePath = imgdata
let list = []
list.push(obj)
// 拍完一张立马执行保存图片逻辑
vm.save_picture(list)
}
let error = function () {
hlsPopup.showLongCenter('请拍照')
}
hlsUtil.openCamera(cameraoptions, success, error)
},
takePicture (desc, checkId) {
let vm = this
let cameraoptions = {
quality: 100,
}
let success = function (imgUrl) {
var list = []
for (let i = 0; i < imgUrl.length; i++) {
let obj = {
'pkvalue': checkId,
'source_type': 'PRJ_CDD_ITEM_CHECK',
'picture': '',
'check_id': checkId,
'filePath': '',
'attachment_id': '',
'user_id': 1,
'fileName': desc + '_' + new Date().getTime(),
}
obj.picture = imgUrl[i]
obj.filePath = imgUrl[i]
list.push(obj)
}
vm.save_picture(list)
}
let error = function () {
}
vm.hlsUtil.takePicture(cameraoptions, success, error)
},
// 图片保存
save_picture (list) {
let vm = this
if (list.length) {
// hlsPopup.showLoading('图片上传请稍候')
var alreadyUploadNum = 0
var attLength = 0
var recordUploadInterval = setInterval(function () {
if (alreadyUploadNum === attLength) {
clearInterval(recordUploadInterval)
/* hlsPopup.hideLoading()
hlsPopup.showLongCenter('图片上传成功') */
}
}, 500)
for (var i = 0; i < list.length; i++) {
let uploadSuccess = function (res) {
if (res.result === 'S') {
alreadyUploadNum++
for (var j = 0; j < list.length; j++) {
if (list[j].filePath === res.response.filePath) {
list[j].attachment_id = res.response.attachment_id
vm.upload_list.push(list[j])
break
}
}
} else {
hlsPopup.hideLoading()
}
}
if (!list[i].attachment_id) {
attLength++
hlsUtil.fileUploadSvc(list[i], uploadSuccess)
}
}
} else {
hlsPopup.hideLoading()
}
},
loadItemList () { loadItemList () {
let vm = this let vm = this
vm.dowload_list = [] vm.dowload_list = []
...@@ -227,24 +274,24 @@ export default { ...@@ -227,24 +274,24 @@ export default {
let listTemp = [...res.lists] let listTemp = [...res.lists]
listTemp.forEach(item => { listTemp.forEach(item => {
switch (item.cdd_item) { switch (item.cdd_item) {
case 'NP_ID_CARD_F': // 自然人身份证正面 // case 'NP_ID_CARD_F': // 自然人身份证正面
vm.idCardFrontCheck_id = item.check_id // vm.idCardFrontCheck_id = item.check_id
break // break
case 'LEGAL_ID_CARD_F': // 法人代表身份证正面 // case 'LEGAL_ID_CARD_F': // 法人代表身份证正面
vm.idCardFrontCheck_id = item.check_id // vm.idCardFrontCheck_id = item.check_id
break // break
case 'NP_ID_CARD_B': // 身份证背面 // case 'NP_ID_CARD_B': // 身份证背面
vm.idCardBackCheck_id = item.check_id // vm.idCardBackCheck_id = item.check_id
break // break
case 'LEGAL_ID_CARD_B': // 身份证背面 // case 'LEGAL_ID_CARD_B': // 身份证背面
vm.idCardBackCheck_id = item.check_id // vm.idCardBackCheck_id = item.check_id
break // break
case 'HOUSE_CARD': // 房产证 // case 'HOUSE_CARD': // 房产证
vm.house_id = item.check_id // vm.house_id = item.check_id
break // break
case 'CAR_CARD': // 行驶证 // case 'CAR_CARD': // 行驶证
vm.car_id = item.check_id // vm.car_id = item.check_id
break // break
case 'ORG_CODE': // 营业执照 case 'ORG_CODE': // 营业执照
vm.license_id = item.check_id vm.license_id = item.check_id
break break
...@@ -329,6 +376,26 @@ export default { ...@@ -329,6 +376,26 @@ export default {
} }
}) })
}, },
// 保存
handSave () {
hlsPopup.showLongCenter('保存成功!')
},
// 项目提交审批
handleSubmit () {
let vm = this
let url = process.env.basePath + 'prj_project_submit'
let param = {
project_id: window.localStorage.project_id,
}
vm.hlsPopup.showLoading('请稍候')
vm.hlsHttp.post(url, param).then(function (res) {
vm.hlsPopup.hideLoading()
console.log('项目提交审批', res)
if (res.result === 'S') {
// vm.showLists = res.lists
}
})
},
}, },
} }
</script> </script>
......
<!-- <!--
* @Author: your name * @Author: your name
* @Date: 2019-09-29 10:02:11 * @Date: 2019-09-29 10:02:11
* @LastEditTime : 2019-12-23 16:14:57 * @LastEditTime : 2019-12-26 12:05:03
* @LastEditors : Please set LastEditors * @LastEditors : Please set LastEditors
* @Description: In User Settings Edit * @Description: In User Settings Edit
--> -->
...@@ -74,15 +74,15 @@ ...@@ -74,15 +74,15 @@
</item> </item>
<item v-if="user_bp_type === 'AGENT'"> <item v-if="user_bp_type === 'AGENT'">
<div slot="name" class="font-color">授信额度</div> <div slot="name" class="font-color">授信额度</div>
<input slot="content" placeholder="授信额度"> <input slot="content" v-model="inflow_line" readonly placeholder="授信额度">
</item> </item>
<item v-if="user_bp_type === 'AGENT'"> <item v-if="user_bp_type === 'AGENT'">
<div slot="name" class="font-color">已使用授信额度</div> <div slot="name" class="font-color">已使用授信额度</div>
<input slot="content" placeholder="已使用授信额度"> <input slot="content" v-model="inflow_used" readonly placeholder="已使用授信额度">
</item> </item>
<item v-if="user_bp_type === 'AGENT'"> <item v-if="user_bp_type === 'AGENT'">
<div slot="name" class="font-color">剩余授信额度</div> <div slot="name" class="font-color">剩余授信额度</div>
<input slot="content" placeholder="剩余授信额度"> <input slot="content" v-model="inflow_reset" readonly placeholder="剩余授信额度">
</item> </item>
<item @click.native="showTime('YYYY-MM-DD')"> <item @click.native="showTime('YYYY-MM-DD')">
<div slot="name" class="font-color">签约日期</div> <div slot="name" class="font-color">签约日期</div>
...@@ -280,7 +280,13 @@ export default { ...@@ -280,7 +280,13 @@ export default {
if (res.result === 'S') { if (res.result === 'S') {
vm.bp_agent_name = res.info.bp_agent_name vm.bp_agent_name = res.info.bp_agent_name
vm.bp_agent_id = res.info.bp_agent_id vm.bp_agent_id = res.info.bp_agent_id
vm.salesInfo.bp_id_agent = res.info.bp_agent_id if (window.localStorage.bp_type === 'OFFICE') {
vm.office_name = res.info.bp_agent_name
vm.salesInfo.office_id = res.info.bp_agent_id
vm.salesInfo.bp_id_agent = ''
} else {
vm.salesInfo.bp_id_agent = res.info.bp_agent_id
}
vm.salesInfo.bp_user_id = res.info.bp_user_id vm.salesInfo.bp_user_id = res.info.bp_user_id
vm.lesseeQuery() vm.lesseeQuery()
vm.salesQuery() vm.salesQuery()
...@@ -420,6 +426,7 @@ export default { ...@@ -420,6 +426,7 @@ export default {
this.lessee = item.bp_name this.lessee = item.bp_name
this.salesInfo.bp_id_tenant = item.bp_id this.salesInfo.bp_id_tenant = item.bp_id
this.showModal = false this.showModal = false
window.localStorage.setItem('bp_id_tenant', this.salesInfo.bp_id_tenant)
}, },
hideModal () { hideModal () {
this.showModal = false this.showModal = false
......
<!-- <!--
* @Author: your name * @Author: your name
* @Date: 2019-10-31 09:49:57 * @Date: 2019-10-31 09:49:57
* @LastEditTime : 2019-12-24 18:28:09 * @LastEditTime : 2019-12-24 18:34:37
* @LastEditors : Please set LastEditors * @LastEditors : Please set LastEditors
* @Description: 还款 * @Description: 还款
* @FilePath: * @FilePath:
...@@ -58,10 +58,8 @@ ...@@ -58,10 +58,8 @@
</div> </div>
</div> </div>
<div class="name"> <div class="name">
<!-- <span>款项</span> <span>利息</span>
<span>租金</span> --> <span>{{ item.interest | currency }}</span>
<p>利息</p>
<p>{{ item.interest }}</p>
</div> </div>
<img v-if="statu === 'black'" src="@/assets/contractInquire/done.png" alt="" class="status"> <img v-if="statu === 'black'" src="@/assets/contractInquire/done.png" alt="" class="status">
<img v-if="statu === 'orange'" src="@/assets/contractInquire/prompt.png" alt="" class="status"> <img v-if="statu === 'orange'" src="@/assets/contractInquire/prompt.png" alt="" class="status">
...@@ -376,6 +374,7 @@ export default { ...@@ -376,6 +374,7 @@ export default {
color: #4B4A4B; color: #4B4A4B;
//padding-top: 20px; //padding-top: 20px;
margin-left: 40px; margin-left: 40px;
margin-top: -16px;
span:nth-of-type(2) { span:nth-of-type(2) {
margin-left: 8px; margin-left: 8px;
} }
......
<template> <template>
<h-view id="body-check"> <transition name="body">
<transition name="trans"> <div v-if="showFlag" class="body-check">
<div v-if="downNum" class="modal-show"> <transition name="trans">
<div class="modal-box"> <div v-if="downNum" class="modal-show">
<div class="down"> <div class="modal-box">
<div class="down-content"> <div class="down">
<span class="title">请牢记以下验证码</span> <div class="down-content">
<p class="compute"> <span class="title">请牢记以下验证码</span>
此验证码将于 <p class="compute">
<span>{{ time }}</span>秒后过期 此验证码将于
<br >用普通话朗读数字,视频时长 <span>{{ time }}</span>秒后过期
<span>3~8</span>秒最佳 <br>用普通话朗读数字,视频时长
</p> <span>3~8</span>秒最佳
</p>
</div>
<div class="number">
<span v-for="(item,index) in codeList" :key="index">{{ item }}</span>
</div>
<h-button :disabled="lastTime!=0" class="button" @click.native="recordVdeo">记住了,开始录制<span
v-if="lastTime!=0">({{ lastTime }}s)</span></h-button>
</div> </div>
<div class="number"> <div class="close" @click="hideBody">X</div>
<span v-for="(item,index) in codeList" :key="index">{{ item }}</span>
</div>
<h-button :disabled="lastTime!=0" class="button" @click.native="recordVdeo">记住了,开始录制<span v-if="lastTime!=0">({{ lastTime }}s)</span></h-button>
</div> </div>
<div class="close" @click="downNum=false">X</div>
</div> </div>
</div> </transition>
</transition> <h-header :proportion="[5,1,1]" class="bar-custom">
<h-header :proportion="[5,1,1]" class="bar-custom"> <div slot="left" class="h-header-btn">
<div slot="left" class="h-header-btn"> <img src="@/assets/userBind/arrow.png" @click="hideBody" >
<img src="@/assets/userBind/arrow.png" @click="$routeGo()" > <span>活体检测</span>
<span>活体检测</span> </div>
</div> </h-header>
</h-header> <h-content>
<h-content> <div class="top">
<div class="top"> <div class="top-box">
<div class="top-box"> <img src="@/assets/constractSigning/sketch.png">
<img src="@/assets/constractSigning/sketch.png" > <span>正面平视手机,保证光线充足</span>
<span>正面平视手机,保证光线充足</span> <span>请勿遮挡面部</span>
<span>请勿遮挡面部</span> </div>
</div> </div>
</div> <div class="bottom">
<div class="bottom"> <ul>
<ul> <li>
<li> <span>1</span>
<span>1</span> <span>牢记验证码,点击开始录制</span>
<span>牢记验证码,点击开始录制</span> <p/>
<p /> </li>
</li> <li>
<li> <span>2</span>
<span>2</span> <span>开启前置摄像头,用普通话朗读数字</span>
<span>开启前置摄像头,用普通话朗读数字</span> <p/>
<p /> </li>
</li> <li>
<li> <span>3</span>
<span>3</span> <span>完成录制,等待验证结果</span>
<span>完成录制,等待验证结果</span> </li>
</li> </ul>
</ul> </div>
</div> </h-content>
</h-content> <bottom-tab class="footer-button">
<bottom-tab class="footer-button"> <tab-button class="approve" @click.native="getCode">下一步</tab-button>
<tab-button class="approve" @click.native="getCode">下一步</tab-button> </bottom-tab>
</bottom-tab> </div>
</h-view> </transition>
</template> </template>
<script> <script>
export default { export default {
props: ['check_id', 'confirm_id'],
data () { data () {
return { return {
downNum: false, downNum: false,
...@@ -72,12 +76,21 @@ export default { ...@@ -72,12 +76,21 @@ export default {
file: '', file: '',
sessionId: '', sessionId: '',
codeList: [], codeList: [],
showFlag: false,
} }
}, },
methods: { methods: {
show () {
this.showFlag = true
},
hideBody () {
this.showFlag = false
this.downNum = false
},
recordVdeo () { // 开始录制 recordVdeo () { // 开始录制
let vm = this let vm = this
vm.downNum = false // 模态框消失 vm.downNum = false // 模态框消失
vm.showFlag = false
let onSuccess = function (mediaFiles) { let onSuccess = function (mediaFiles) {
// 遍历获取录制的文件(iOS 只支持一次录制一个视频) // 遍历获取录制的文件(iOS 只支持一次录制一个视频)
console.log('录制成功!\n\n' + '文件名:' + mediaFiles[0].name + '\n' + '大小:' + mediaFiles[0].size + '\n\n' + 'localURL地址:' + mediaFiles[0].localURL + '\n\n' + 'fullPath地址:' + mediaFiles[0].fullPath) console.log('录制成功!\n\n' + '文件名:' + mediaFiles[0].name + '\n' + '大小:' + mediaFiles[0].size + '\n\n' + 'localURL地址:' + mediaFiles[0].localURL + '\n\n' + 'fullPath地址:' + mediaFiles[0].fullPath)
...@@ -93,7 +106,7 @@ export default { ...@@ -93,7 +106,7 @@ export default {
let vm = this let vm = this
vm.videoListUpload = [] vm.videoListUpload = []
let obj = { let obj = {
pkvalue: vm.$route.params.check_id, pkvalue: this.check_id,
source_type: 'PRJ_CDD_ITEM_CHECK', source_type: 'PRJ_CDD_ITEM_CHECK',
picture: '', picture: '',
filePath: fullPath, filePath: fullPath,
...@@ -162,19 +175,19 @@ export default { ...@@ -162,19 +175,19 @@ export default {
flag = true flag = true
vm.hlsPopup.hideLoading() vm.hlsPopup.hideLoading()
console.log('##########res ' + JSON.stringify(res)) console.log('##########res ' + JSON.stringify(res))
if (res.result.err_no != 0) { // 检测出错 if (res.result.err_no != 0) { // 检测出错
hlsPopup.showConfirm({ hlsPopup.showConfirm({
title: '提示', title: '提示',
content: `检测失败,是否重新重新尝试?`, content: `检测失败,是否重新重新尝试?`,
onConfirm: data => { onConfirm: data => {
if (data) { if (data) {
// 重新尝试 // 重新尝试
vm.getCode() vm.showFlag = true
} else { } else {
} }
}, },
}) })
} else if (res.result.result.thresholds.frr_1e - 2 < 0.9) { // 检测成功但不符合要求 } else if (res.result.result.thresholds.frr_1e - 2 < 0.9) { // 检测成功但不符合要求
hlsPopup.showConfirm({ hlsPopup.showConfirm({
title: '提示', title: '提示',
content: `检测失败,是否重新重新尝试?`, content: `检测失败,是否重新重新尝试?`,
...@@ -217,13 +230,13 @@ export default { ...@@ -217,13 +230,13 @@ export default {
} }
}) })
/* let str = '098672' /* let str = '098672'
vm.codeList = [...str] */ vm.codeList = [...str] */
}, },
goElectronicSign () { // 电子签 goElectronicSign () { // 电子签
let vm = this let vm = this
let url = process.env.basePath + 'get_sign_url' let url = process.env.basePath + 'get_sign_url'
let param = { let param = {
confirm_id: vm.$route.params.confirm_id, confirm_id: vm.confirm_id,
data_class: 'PRJ_PROJECT', data_class: 'PRJ_PROJECT',
} }
vm.hlsPopup.showLoading('请稍后') vm.hlsPopup.showLoading('请稍后')
...@@ -231,11 +244,11 @@ export default { ...@@ -231,11 +244,11 @@ export default {
vm.hlsPopup.hideLoading() vm.hlsPopup.hideLoading()
if (res.info.msg === 'success') { if (res.info.msg === 'success') {
/* vm.$router.push({ /* vm.$router.push({
name: 'ElectronicSign', name: 'ElectronicSign',
params: { params: {
url: res.info.data.url, url: res.info.data.url,
}, },
}) */ }) */
cordova.InAppBrowser.open(res.info.data.url, '_blank', 'location=yes') cordova.InAppBrowser.open(res.info.data.url, '_blank', 'location=yes')
} else { } else {
vm.hlsPopup.showLongCenter(res.info.msg) vm.hlsPopup.showLongCenter(res.info.msg)
...@@ -263,16 +276,32 @@ export default { ...@@ -263,16 +276,32 @@ export default {
} }
</script> </script>
<style lang="less" scoped> <style lang="less">
#body-check { .body-enter-active, .body-leave-active {
transition: opacity .5s;
}
.body-enter, .body-leave-to /* .fade-leave-active below version 2.1.8 */ {
opacity: 0;
}
.body-check{
width: 100%;
height: 100%;
position: absolute;
top: 0;
z-index: 999;
background: rgba(56, 63, 69, 0.30);
.trans-enter-active, .trans-enter-active,
.trans-leave-active { .trans-leave-active {
transition: opacity 0.5s; transition: opacity 0.5s;
} }
.trans-enter, .trans-enter,
.trans-leave-active { .trans-leave-active {
opacity: 0; opacity: 0;
} }
.modal-show { .modal-show {
width: 100%; width: 100%;
height: 100%; height: 100%;
...@@ -282,12 +311,14 @@ export default { ...@@ -282,12 +311,14 @@ export default {
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
.modal-box { .modal-box {
width: 314px; width: 314px;
display: flex; display: flex;
justify-content: center; justify-content: center;
flex-flow: wrap row; flex-flow: wrap row;
} }
.down { .down {
position: relative; position: relative;
width: 314px; width: 314px;
...@@ -297,36 +328,43 @@ export default { ...@@ -297,36 +328,43 @@ export default {
display: flex; display: flex;
justify-content: center; justify-content: center;
flex-flow: wrap row; flex-flow: wrap row;
.button{
width:90%; .button {
width: 90%;
height: 50px; height: 50px;
background-color: #0073eb; background-color: #0073eb;
color: #fff !important; color: #fff !important;
border-radius: 4px; border-radius: 4px;
} }
.down-content { .down-content {
width: 290px; width: 290px;
margin: 0 auto; margin: 0 auto;
margin-top: 30px; margin-top: 30px;
text-align: center; text-align: center;
.title { .title {
font-size: 16px; font-size: 16px;
color: #333; color: #333;
} }
.compute { .compute {
margin-top: 16px; margin-top: 16px;
font-size: 14px; font-size: 14px;
line-height: 20px; line-height: 20px;
color: #666; color: #666;
span { span {
color: red; color: red;
} }
} }
} }
.number { .number {
width: 100%; width: 100%;
display: flex; display: flex;
justify-content: center; justify-content: center;
span { span {
width: 40px; width: 40px;
height: 60px; height: 60px;
...@@ -341,6 +379,7 @@ export default { ...@@ -341,6 +379,7 @@ export default {
} }
} }
} }
.close { .close {
border: 1px solid #fff; border: 1px solid #fff;
width: 40px; width: 40px;
...@@ -353,26 +392,31 @@ export default { ...@@ -353,26 +392,31 @@ export default {
line-height: 40px; line-height: 40px;
} }
} }
.content{
.content {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
} }
.top { .top {
height: 340px; height: 340px;
background-color: #f4f4f4; background-color: #f4f4f4;
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: flex-start; align-items: flex-start;
.top-box { .top-box {
width: 60%; width: 60%;
display: flex; display: flex;
justify-content: center; justify-content: center;
flex-wrap: wrap; flex-wrap: wrap;
img { img {
width: 80%; width: 80%;
height: 100%; height: 100%;
margin-top: 10px; margin-top: 10px;
} }
span { span {
font-size: 14px; font-size: 14px;
color: #999; color: #999;
...@@ -381,22 +425,27 @@ export default { ...@@ -381,22 +425,27 @@ export default {
} }
} }
} }
.bottom { .bottom {
flex: 1; flex: 1;
background-color: #fff; background-color: #fff;
box-shadow: 0 -4px 10px 0 #e8e8e8; box-shadow: 0 -4px 10px 0 #e8e8e8;
display: flex; display: flex;
justify-content: center; justify-content: center;
ul { ul {
width: 80%; width: 80%;
margin-top: 40px; margin-top: 40px;
li { li {
height: 60px; height: 60px;
p { p {
height: 35px; height: 35px;
border-left: 1px solid #0073eb; border-left: 1px solid #0073eb;
margin-left: 12px; margin-left: 12px;
} }
span:first-child { span:first-child {
border-radius: 50%; border-radius: 50%;
border: 1px solid #0073eb; border: 1px solid #0073eb;
...@@ -413,6 +462,7 @@ export default { ...@@ -413,6 +462,7 @@ export default {
} }
} }
} }
.approve { .approve {
background: @headerColor; background: @headerColor;
border-radius: 4px; border-radius: 4px;
......
<!-- <!--
* @Author: your name * @Author: your name
* @Date: 2019-09-29 10:02:11 * @Date: 2019-09-29 10:02:11
* @LastEditTime: 2019-12-19 10:38:35 * @LastEditTime : 2019-12-26 12:08:25
* @LastEditors: Please set LastEditors * @LastEditors : Please set LastEditors
* @Description: In User Settings Edit * @Description: In User Settings Edit
--> -->
<template> <template>
...@@ -241,7 +241,7 @@ ...@@ -241,7 +241,7 @@
</div> </div>
<list-item :item-height="44" class="second-part"> <list-item :item-height="44" class="second-part">
<item> <item>
<div slot="name" class="font-color">参数项</div> <div slot="name" class="font-color">设备识别号</div>
<input slot="content" v-model="info.product_code" readonly > <input slot="content" v-model="info.product_code" readonly >
</item> </item>
<item> <item>
...@@ -301,6 +301,8 @@ ...@@ -301,6 +301,8 @@
</bottom-tab> </bottom-tab>
</h-view> </h-view>
</h-modal> </h-modal>
<!--活体检测-->
<body-check ref="body" :check_id="$route.params.check_id" :confirm_id="confirm_id"></body-check>
</h-view> </h-view>
</template> </template>
...@@ -314,11 +316,13 @@ import unCheck2 from '@/assets/constractSigning/unconstract.png' ...@@ -314,11 +316,13 @@ import unCheck2 from '@/assets/constractSigning/unconstract.png'
import unCheck3 from '@/assets/constractSigning/unLease.png' import unCheck3 from '@/assets/constractSigning/unLease.png'
import LegalPerson from '@/pages/distributorSign/legal-person' import LegalPerson from '@/pages/distributorSign/legal-person'
import Personal from '@/pages/distributorSign/personal' import Personal from '@/pages/distributorSign/personal'
import bodyCheck from './body-check'
export default { export default {
name: 'ContractDetail', name: 'ContractDetail',
components: { components: {
Personal, Personal,
LegalPerson, LegalPerson,
bodyCheck,
}, },
data () { data () {
return { return {
...@@ -473,13 +477,14 @@ export default { ...@@ -473,13 +477,14 @@ export default {
}) })
}, },
goBodyCheck (confirm_id) { // 活体检测 goBodyCheck (confirm_id) { // 活体检测
this.$router.push({ this.$refs.body.show()
/* this.$router.push({
name: 'BodyCheck', name: 'BodyCheck',
params: { params: {
check_id: this.$route.params.check_id, check_id: this.$route.params.check_id,
confirm_id: confirm_id, confirm_id: confirm_id,
}, },
}) })*/
}, },
/* goElectronicSign () { // 电子签 /* goElectronicSign () { // 电子签
let vm = this let vm = this
...@@ -615,7 +620,6 @@ export default { ...@@ -615,7 +620,6 @@ export default {
hlsPopup.showLongCenter('比对失败,请保证和绑定时是同一个人') hlsPopup.showLongCenter('比对失败,请保证和绑定时是同一个人')
} }
}) })
/* vm.save_picture(vm.faceListUpload) /* vm.save_picture(vm.faceListUpload)
let identifyScore = 90 let identifyScore = 90
hlsPopup.showPopup({ hlsPopup.showPopup({
...@@ -625,7 +629,7 @@ export default { ...@@ -625,7 +629,7 @@ export default {
// 进入活体检测页面 // 进入活体检测页面
vm.goBodyCheck(vm.confirm_id) vm.goBodyCheck(vm.confirm_id)
}, },
}) */ })*/
}, },
// 确认签约逻辑 // 确认签约逻辑
doConfirm (status) { doConfirm (status) {
......
<!-- <!--
* @Author: your name * @Author: your name
* @Date: 2019-10-30 19:29:24 * @Date: 2019-10-30 19:29:24
* @LastEditTime: 2019-11-15 09:14:47 * @LastEditTime : 2019-12-24 18:38:21
* @LastEditors: Please set LastEditors * @LastEditors : Please set LastEditors
* @Description: In User Settings Edit * @Description: In User Settings Edit
--> -->
<template> <template>
...@@ -47,13 +47,19 @@ ...@@ -47,13 +47,19 @@
<p>{{ item.due_date.substr(0,4) }}</p> <p>{{ item.due_date.substr(0,4) }}</p>
<span>{{ dateConverse(item.due_date).substr(5,10) }}</span> <span>{{ dateConverse(item.due_date).substr(5,10) }}</span>
</div> </div>
<div class="name">
<span>款项</span>
<span>租金</span>
</div>
<div class="number"> <div class="number">
<span>应还金额</span> <div>
<span :class="{'orang':statu==='orange','blu':statu==='blue','gree':statu==='green'}">{{ item.rental * product_num |currency }}</span> <span>本金</span>
<span>{{ item.principal |currency }}</span>
</div>
<div>
<span>租金</span>
<span :class="{'orang':statu==='orange','blu':statu==='blue','gree':statu==='green'}">{{ item.rental |currency }}</span>
</div>
</div>
<div class="name">
<span>利息</span>
<span>{{ item.interest | currency }}</span>
</div> </div>
<img v-if="statu === 'black'" src="@/assets/contractInquire/done.png" alt="" class="status"> <img v-if="statu === 'black'" src="@/assets/contractInquire/done.png" alt="" class="status">
<img v-if="statu === 'orange'" src="@/assets/contractInquire/prompt.png" alt="" class="status"> <img v-if="statu === 'orange'" src="@/assets/contractInquire/prompt.png" alt="" class="status">
...@@ -384,7 +390,7 @@ export default { ...@@ -384,7 +390,7 @@ export default {
font-family: PingFangSC-Regular; font-family: PingFangSC-Regular;
font-size: 13px; font-size: 13px;
color: #4B4A4B; color: #4B4A4B;
padding-top: 20px; //padding-top: 20px;
margin-left: 22px; margin-left: 22px;
span:nth-of-type(2) { span:nth-of-type(2) {
margin-left: 8px; margin-left: 8px;
...@@ -396,11 +402,15 @@ export default { ...@@ -396,11 +402,15 @@ export default {
.number { .number {
// flex: 9; // flex: 9;
display: flex;
flex-direction: column;
justify-content: space-evenly;
font-family: PingFangSC-Regular; font-family: PingFangSC-Regular;
font-size: 13px; font-size: 13px;
color: #4B4A4B; color: #4B4A4B;
padding-top: 20px; //padding-top: 20px;
margin-left: 40px; margin-left: 40px;
margin-top: -16px;
span:nth-of-type(2) { span:nth-of-type(2) {
margin-left: 8px; margin-left: 8px;
} }
......
<!-- <!--
* @Author: your name * @Author: your name
* @Date: 2019-09-29 10:02:11 * @Date: 2019-09-29 10:02:11
* @LastEditTime: 2019-12-19 11:11:37 * @LastEditTime : 2019-12-26 13:39:32
* @LastEditors: Please set LastEditors * @LastEditors : Please set LastEditors
* @Description: In User Settings Edit * @Description: In User Settings Edit
--> -->
<template> <template>
...@@ -80,7 +80,7 @@ export default { ...@@ -80,7 +80,7 @@ export default {
watch: { watch: {
'num': { 'num': {
handler (newVal, oldVal) { handler (newVal, oldVal) {
this.$refs.scroll.update(false) // this.$refs.scroll.update(false)
if (newVal === 2) { if (newVal === 2) {
if (!this.approvedFlag) { if (!this.approvedFlag) {
this.contractList() this.contractList()
...@@ -467,12 +467,14 @@ export default { ...@@ -467,12 +467,14 @@ export default {
} }
} }
.box { .box {
height: 156px;
margin-left: 50px; margin-left: 50px;
margin-right: 19px; margin-right: 19px;
div { div {
width: 100%; width: 100%;
height: 32px; padding: 8px 0;
line-height: 18px;
display: flex;
justify-content: space-between;
position: relative; position: relative;
.money { .money {
font-family: Verdana-Bold; font-family: Verdana-Bold;
...@@ -482,14 +484,15 @@ export default { ...@@ -482,14 +484,15 @@ export default {
font-weight: 600; font-weight: 600;
} }
p { p {
height: 32px; word-break: break-all;
line-height: 32px; word-wrap: break-word;
position: absolute; white-space: normal;
font-family: PingFangSC-Regular; font-family: PingFangSC-Regular;
font-size: 14px; font-size: 14px;
letter-spacing: 0; letter-spacing: 0;
} }
p:nth-of-type(1){ p:nth-of-type(1){
width: 32%;
left: 0; left: 0;
color: rgba(75,74,75,0.60); color: rgba(75,74,75,0.60);
} }
......
<template>
<transition name="body">
<div v-if="showFlag" class="body-check">
<transition name="trans">
<div v-if="downNum" class="modal-show">
<div class="modal-box">
<div class="down">
<div class="down-content">
<span class="title">请牢记以下验证码</span>
<p class="compute">
此验证码将于
<span>{{ time }}</span>秒后过期
<br>用普通话朗读数字,视频时长
<span>3~8</span>秒最佳
</p>
</div>
<div class="number">
<span v-for="(item,index) in codeList" :key="index">{{ item }}</span>
</div>
<h-button :disabled="lastTime!=0" class="button" @click.native="recordVdeo">记住了,开始录制<span
v-if="lastTime!=0">({{ lastTime }}s)</span></h-button>
</div>
<div class="close" @click="hideBody">X</div>
</div>
</div>
</transition>
<h-header :proportion="[5,1,1]" class="bar-custom">
<div slot="left" class="h-header-btn">
<img src="@/assets/userBind/arrow.png" @click="hideBody" >
<span>活体检测</span>
</div>
</h-header>
<h-content>
<div class="top">
<div class="top-box">
<img src="@/assets/constractSigning/sketch.png">
<span>正面平视手机,保证光线充足</span>
<span>请勿遮挡面部</span>
</div>
</div>
<div class="bottom">
<ul>
<li>
<span>1</span>
<span>牢记验证码,点击开始录制</span>
<p/>
</li>
<li>
<span>2</span>
<span>开启前置摄像头,用普通话朗读数字</span>
<p/>
</li>
<li>
<span>3</span>
<span>完成录制,等待验证结果</span>
</li>
</ul>
</div>
</h-content>
<bottom-tab class="footer-button">
<tab-button class="approve" @click.native="getCode">下一步</tab-button>
</bottom-tab>
</div>
</transition>
</template>
<script>
export default {
props: ['check_id', 'confirm_id'],
data () {
return {
downNum: false,
time: 60,
lastTime: 3,
code: '',
file: '',
sessionId: '',
codeList: [],
showFlag: false,
}
},
methods: {
show () {
this.showFlag = true
},
hideBody () {
this.showFlag = false
this.downNum = false
},
recordVdeo () { // 开始录制
let vm = this
vm.downNum = false // 模态框消失
vm.showFlag = false
let onSuccess = function (mediaFiles) {
// 遍历获取录制的文件(iOS 只支持一次录制一个视频)
console.log('录制成功!\n\n' + '文件名:' + mediaFiles[0].name + '\n' + '大小:' + mediaFiles[0].size + '\n\n' + 'localURL地址:' + mediaFiles[0].localURL + '\n\n' + 'fullPath地址:' + mediaFiles[0].fullPath)
vm.succesCall(mediaFiles[0].fullPath) // 开始检测
// vm.svaeVideo(mediaFiles[0].fullPath) // 上传视频文件至业务系统
}
let onError = function (error) {
hlsPopup.showLongcenter('录制失败,请重新录制')
}
hlsUtil.captureVideo(onSuccess, onError)
},
svaeVideo (fullPath) {
let vm = this
vm.videoListUpload = []
let obj = {
pkvalue: this.check_id,
source_type: 'PRJ_CDD_ITEM_CHECK',
picture: '',
filePath: fullPath,
attachment_id: '',
user_id: 1,
fileName: 'video',
}
vm.videoListUpload.push(obj)
vm.saveVideoStart(vm.videoListUpload) // 开始存视频
},
// 视频保存
saveVideoStart (list) {
console.log('list ' + JSON.stringify(list))
let vm = this
if (list.length) {
var alreadyUploadNum = 0
var attLength = 0
var recordUploadInterval = setInterval(function () {
if (alreadyUploadNum === attLength) {
clearInterval(recordUploadInterval)
}
}, 500)
for (var i = 0; i < list.length; i++) {
let uploadSuccess = function (res) {
if (res.result === 'S') {
alreadyUploadNum++
for (var j = 0; j < list.length; j++) {
if (list[j].filePath === res.response.filePath) {
list[j].attachment_id = res.response.attachment_id
console.log('%%%%%%%%%%%%% ' + JSON.stringify(res.response))
break
}
}
} else {
hlsPopup.hideLoading()
}
}
if (!list[i].attachment_id) {
attLength++
hlsUtil.fileUploadSvc(list[i], uploadSuccess)
}
}
} else {
hlsPopup.hideLoading()
}
},
succesCall (fileUrl) { // 录制成功后进行检测
let vm = this
console.log('fileUrl ' + fileUrl)
console.log('sessionId ' + vm.sessionId)
let url = process.env.ocrPath + '/baidu/ocr/videoFaceliveness'
let param = {
fileUrl: fileUrl,
sessionId: vm.sessionId,
}
vm.hlsPopup.showLoading('正在检测')
var flag = false
var loadInterval = setInterval(function () {
vm.hlsPopup.showLoading('视频过大,请耐心等待')
if (flag) {
vm.hlsPopup.hideLoading()
clearInterval(loadInterval)
}
}, 5000)
hlsUtil.baiduOcrVideo(param, url, function (res) {
flag = true
vm.hlsPopup.hideLoading()
console.log('##########res ' + JSON.stringify(res))
if (res.result.err_no != 0) { // 检测出错
hlsPopup.showConfirm({
title: '提示',
content: `检测失败,是否重新重新尝试?`,
onConfirm: data => {
if (data) {
// 重新尝试
vm.showFlag = true
} else {
}
},
})
} else if (res.result.result.thresholds.frr_1e - 2 < 0.9) { // 检测成功但不符合要求
hlsPopup.showConfirm({
title: '提示',
content: `检测失败,是否重新重新尝试?`,
onConfirm: data => {
if (data) {
// 重新尝试
vm.getCode()
} else {
}
},
})
} else {
hlsPopup.showPopup({
title: '提示',
content: `检测成功,请进行电子签认证`,
onConfirm: () => {
// 电子签认证
vm.goElectronicSign()
vm.svaeVideo(fileUrl) // 上传视频文件至业务系统
},
})
}
})
},
getCode () { // 获取验证码
// this.downNum = true
this.computeTime()
this.time = 60
this.lastTime = 3
let vm = this
let url = process.env.ocrPath + '/baidu/ocr/videoSessioncode'
let param = {}
vm.hlsPopup.showLoading('请稍后')
vm.hlsHttp.post(url, param).then(function (res) {
vm.hlsPopup.hideLoading()
if (res.success) {
vm.codeList = [...res.result.result.code]
vm.sessionId = res.result.result.session_id
vm.downNum = true
}
})
/* let str = '098672'
vm.codeList = [...str] */
},
goElectronicSign () { // 电子签
let vm = this
let url = process.env.basePath + 'get_sign_url'
let param = {
confirm_id: vm.confirm_id,
data_class: 'PRJ_PROJECT',
}
vm.hlsPopup.showLoading('请稍后')
vm.hlsHttp.post(url, param).then(function (res) {
vm.hlsPopup.hideLoading()
if (res.info.msg === 'success') {
/* vm.$router.push({
name: 'ElectronicSign',
params: {
url: res.info.data.url,
},
}) */
cordova.InAppBrowser.open(res.info.data.url, '_blank', 'location=yes')
} else {
vm.hlsPopup.showLongCenter(res.info.msg)
}
})
},
computeTime () { // 倒计时
let vm = this
let timer = setInterval(() => {
if (vm.time > 0) {
vm.time--
} else {
clearInterval(timer)
}
}, 1000)
let lastTime = setInterval(() => {
if (vm.lastTime > 0) {
vm.lastTime--
} else {
clearInterval(lastTime)
}
}, 1000)
},
},
}
</script>
<style lang="less">
.body-enter-active, .body-leave-active {
transition: opacity .5s;
}
.body-enter, .body-leave-to /* .fade-leave-active below version 2.1.8 */ {
opacity: 0;
}
.body-check{
width: 100%;
height: 100%;
position: absolute;
top: 0;
z-index: 999;
background: rgba(56, 63, 69, 0.30);
.trans-enter-active,
.trans-leave-active {
transition: opacity 0.5s;
}
.trans-enter,
.trans-leave-active {
opacity: 0;
}
.modal-show {
width: 100%;
height: 100%;
position: absolute;
z-index: 900;
background-color: rgba(56, 63, 69, 0.3);
display: flex;
justify-content: center;
align-items: center;
.modal-box {
width: 314px;
display: flex;
justify-content: center;
flex-flow: wrap row;
}
.down {
position: relative;
width: 314px;
height: 286px;
background-size: 301px 24.7px;
background-color: #fff;
display: flex;
justify-content: center;
flex-flow: wrap row;
.button {
width: 90%;
height: 50px;
background-color: #0073eb;
color: #fff !important;
border-radius: 4px;
}
.down-content {
width: 290px;
margin: 0 auto;
margin-top: 30px;
text-align: center;
.title {
font-size: 16px;
color: #333;
}
.compute {
margin-top: 16px;
font-size: 14px;
line-height: 20px;
color: #666;
span {
color: red;
}
}
}
.number {
width: 100%;
display: flex;
justify-content: center;
span {
width: 40px;
height: 60px;
font-size: 30px;
font-weight: bold;
line-height: 60px;
color: #333;
display: inline-block;
border: 1px solid #e1e1e1;
border-radius: 10px;
text-align: center;
}
}
}
.close {
border: 1px solid #fff;
width: 40px;
height: 40px;
color: #fff;
background-color: rgba(0, 0, 0, 0.3);
margin-top: 20px;
border-radius: 50%;
text-align: center;
line-height: 40px;
}
}
.content {
display: flex;
flex-direction: column;
}
.top {
height: 340px;
background-color: #f4f4f4;
display: flex;
justify-content: center;
align-items: flex-start;
.top-box {
width: 60%;
display: flex;
justify-content: center;
flex-wrap: wrap;
img {
width: 80%;
height: 100%;
margin-top: 10px;
}
span {
font-size: 14px;
color: #999;
line-height: 25px;
letter-spacing: 2px;
}
}
}
.bottom {
flex: 1;
background-color: #fff;
box-shadow: 0 -4px 10px 0 #e8e8e8;
display: flex;
justify-content: center;
ul {
width: 80%;
margin-top: 40px;
li {
height: 60px;
p {
height: 35px;
border-left: 1px solid #0073eb;
margin-left: 12px;
}
span:first-child {
border-radius: 50%;
border: 1px solid #0073eb;
text-align: center;
color: #0073eb;
display: inline-block;
width: 25px;
height: 25px;
line-height: 25px;
font-size: 12px;
margin-right: 10px;
letter-spacing: 0;
}
}
}
}
.approve {
background: @headerColor;
border-radius: 4px;
color: #fff;
font-family: PingFangSC-Semibold;
font-size: 15px;
}
}
</style>
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
* @Description: 合同详情 * @Description: 合同详情
* @Author: your name * @Author: your name
* @Date: 2019-09-25 15:38:21 * @Date: 2019-09-25 15:38:21
* @LastEditTime: 2019-12-20 15:36:19 * @LastEditTime : 2019-12-26 12:08:42
* @LastEditors: Please set LastEditors * @LastEditors : Please set LastEditors
--> -->
<template> <template>
<h-view id="details" class="public-style" title="经销商签约"> <h-view id="details" class="public-style" title="经销商签约">
...@@ -127,7 +127,7 @@ ...@@ -127,7 +127,7 @@
<p>设备清单</p></div> <p>设备清单</p></div>
<list-item :item-height="44" class="second-part"> <list-item :item-height="44" class="second-part">
<item> <item>
<div slot="name" class="font-color">参数项</div> <div slot="name" class="font-color">设备识别号</div>
<input slot="content" v-model="info.product_code" readonly> <input slot="content" v-model="info.product_code" readonly>
</item> </item>
<item> <item>
...@@ -175,6 +175,8 @@ ...@@ -175,6 +175,8 @@
<img src="@/assets/intoApproval/approve.png" >确认签约 <img src="@/assets/intoApproval/approve.png" >确认签约
</tab-button> </tab-button>
</bottom-tab> </bottom-tab>
<!--活体检测-->
<body-check ref="body" :check_id="$route.params.check_id" :confirm_id="confirm_id"></body-check>
</h-view> </h-view>
</template> </template>
...@@ -182,12 +184,14 @@ ...@@ -182,12 +184,14 @@
import Tab from '@/pages/distributorSign/details-tab' import Tab from '@/pages/distributorSign/details-tab'
import LegalPerson from '@/pages/distributorSign/legal-person' import LegalPerson from '@/pages/distributorSign/legal-person'
import Personal from '@/pages/distributorSign/personal' import Personal from '@/pages/distributorSign/personal'
import bodyCheck from './body-check'
export default { export default {
name: 'ContractDetails', name: 'ContractDetails',
components: { components: {
Tab, Tab,
Personal, Personal,
LegalPerson, LegalPerson,
bodyCheck,
}, },
data () { data () {
return { return {
...@@ -273,13 +277,14 @@ export default { ...@@ -273,13 +277,14 @@ export default {
}) })
}, },
goBodyCheck (confirm_id) { // 活体检测 goBodyCheck (confirm_id) { // 活体检测
this.$router.push({ this.$refs.body.show()
/* this.$router.push({
name: 'BodyCheck', name: 'BodyCheck',
params: { params: {
check_id: this.$route.params.check_id, check_id: this.$route.params.check_id,
confirm_id: confirm_id, confirm_id: confirm_id,
}, },
}) })*/
}, },
/* goElectronicSign () { // 电子签 /* goElectronicSign () { // 电子签
let vm = this let vm = this
...@@ -820,7 +825,7 @@ export default { ...@@ -820,7 +825,7 @@ export default {
} }
} }
.footer-button:nth-of-type(1) { .footer-button:nth-of-type(1) {
bottom: 92px; //bottom: 92px;
.approve { .approve {
width: 358.6px; width: 358.6px;
height: 44px; height: 44px;
......
...@@ -444,12 +444,14 @@ export default { ...@@ -444,12 +444,14 @@ export default {
} }
} }
.box { .box {
height: 156px;
margin-left: 50px; margin-left: 50px;
margin-right: 19px; margin-right: 19px;
div { div {
width: 100%; width: 100%;
height: 32px; padding: 8px 0;
line-height: 18px;
display: flex;
justify-content: space-between;
position: relative; position: relative;
.money { .money {
font-family: Verdana-Bold; font-family: Verdana-Bold;
...@@ -459,14 +461,15 @@ export default { ...@@ -459,14 +461,15 @@ export default {
font-weight: 600; font-weight: 600;
} }
p { p {
height: 32px;
line-height: 32px;
position: absolute;
font-family: PingFangSC-Regular; font-family: PingFangSC-Regular;
font-size: 14px; font-size: 14px;
letter-spacing: 0; letter-spacing: 0;
word-break: break-all;
word-wrap: break-word;
white-space: normal;
} }
p:nth-of-type(1){ p:nth-of-type(1){
width: 32%;
left: 0; left: 0;
color: rgba(75,74,75,0.60); color: rgba(75,74,75,0.60);
} }
......
<!-- <!--
* @Author: your name * @Author: your name
* @Date: 2019-10-30 19:29:24 * @Date: 2019-10-30 19:29:24
* @LastEditTime: 2019-11-13 16:36:01 * @LastEditTime : 2019-12-24 18:39:52
* @LastEditors: Please set LastEditors * @LastEditors : Please set LastEditors
* @Description: In User Settings Edit * @Description: In User Settings Edit
--> -->
<template> <template>
...@@ -45,13 +45,19 @@ ...@@ -45,13 +45,19 @@
<p>{{ item.due_date.substr(0,4) }}</p> <p>{{ item.due_date.substr(0,4) }}</p>
<span>{{ dateConverse(item.due_date).substr(5,10) }}</span> <span>{{ dateConverse(item.due_date).substr(5,10) }}</span>
</div> </div>
<div class="name">
<span>款项</span>
<span>租金</span>
</div>
<div class="number"> <div class="number">
<span>应还金额</span> <div>
<span :class="{'orang':statu==='orange','blu':statu==='blue','gree':statu==='green'}">{{ item.rental*product_num |currency }}</span> <span>本金</span>
<span>{{ item.principal |currency }}</span>
</div>
<div>
<span>租金</span>
<span :class="{'orang':statu==='orange','blu':statu==='blue','gree':statu==='green'}">{{ item.rental |currency }}</span>
</div>
</div>
<div class="name">
<span>利息</span>
<span>{{ item.interest | currency }}</span>
</div> </div>
<img v-if="statu === 'black'" src="@/assets/contractInquire/done.png" alt="" class="status"> <img v-if="statu === 'black'" src="@/assets/contractInquire/done.png" alt="" class="status">
<img v-if="statu === 'orange'" src="@/assets/contractInquire/prompt.png" alt="" class="status"> <img v-if="statu === 'orange'" src="@/assets/contractInquire/prompt.png" alt="" class="status">
...@@ -348,7 +354,7 @@ export default { ...@@ -348,7 +354,7 @@ export default {
font-family: PingFangSC-Regular; font-family: PingFangSC-Regular;
font-size: 13px; font-size: 13px;
color: #4B4A4B; color: #4B4A4B;
padding-top: 20px; //padding-top: 20px;
margin-left: 22px; margin-left: 22px;
span:nth-of-type(2) { span:nth-of-type(2) {
margin-left: 8px; margin-left: 8px;
...@@ -360,11 +366,15 @@ export default { ...@@ -360,11 +366,15 @@ export default {
.number { .number {
// flex: 9; // flex: 9;
display: flex;
flex-direction: column;
justify-content: space-evenly;
font-family: PingFangSC-Regular; font-family: PingFangSC-Regular;
font-size: 13px; font-size: 13px;
color: #4B4A4B; color: #4B4A4B;
padding-top: 20px; //padding-top: 20px;
margin-left: 40px; margin-left: 40px;
margin-top: -16px;
span:nth-of-type(2) { span:nth-of-type(2) {
margin-left: 8px; margin-left: 8px;
} }
......
...@@ -72,7 +72,7 @@ ...@@ -72,7 +72,7 @@
<span v-if="equip_price" slot="content">{{ parseFloat(equip_price*info.down_payment_ratio_n.replace("%","")/100 + equip_price*info.deposit_ratio_n.replace("%","")/100 + (equip_price - equip_price*info.down_payment_ratio_n.replace("%","")/100)*(info.lease_charge_ratio_n.replace("%","")/100) + Number(gps_fee) + Number(insurance_fee)).toFixed(2) | currency }}</span> <span v-if="equip_price" slot="content">{{ parseFloat(equip_price*info.down_payment_ratio_n.replace("%","")/100 + equip_price*info.deposit_ratio_n.replace("%","")/100 + (equip_price - equip_price*info.down_payment_ratio_n.replace("%","")/100)*(info.lease_charge_ratio_n.replace("%","")/100) + Number(gps_fee) + Number(insurance_fee)).toFixed(2) | currency }}</span>
</item> </item>
<item @click.native="showTime('YYYY-MM-DD')"> <item @click.native="showTime('YYYY-MM-DD')">
<div slot="name" class="font-color">预计付款日</div> <div slot="name" class="fo nt-color">预计付款日</div>
<div slot="content" class="autoColor">{{ price_date_to }}</div> <div slot="content" class="autoColor">{{ price_date_to }}</div>
<img src="@/assets/trial/date.png" alt="" class="date-pic"> <img src="@/assets/trial/date.png" alt="" class="date-pic">
</item> </item>
......
<!-- <!--
* @Author: your name * @Author: your name
* @Date: 2019-10-30 19:29:24 * @Date: 2019-10-30 19:29:24
* @LastEditTime: 2019-11-13 10:34:23 * @LastEditTime : 2019-12-24 18:41:37
* @LastEditors: Please set LastEditors * @LastEditors : Please set LastEditors
* @Description: In User Settings Edit * @Description: In User Settings Edit
--> -->
<template> <template>
...@@ -45,13 +45,19 @@ ...@@ -45,13 +45,19 @@
<p>{{ item.due_date.substr(0,4) }}</p> <p>{{ item.due_date.substr(0,4) }}</p>
<span>{{ dateConverse(item.due_date).substr(5,10) }}</span> <span>{{ dateConverse(item.due_date).substr(5,10) }}</span>
</div> </div>
<div class="name">
<span>款项</span>
<span>租金</span>
</div>
<div class="number"> <div class="number">
<span>应还金额</span> <div>
<span :class="{'orang':statu==='orange','blu':statu==='blue','gree':statu==='green'}">{{ item.rental |currency }}</span> <span>本金</span>
<span>{{ item.principal |currency }}</span>
</div>
<div>
<span>租金</span>
<span :class="{'orang':statu==='orange','blu':statu==='blue','gree':statu==='green'}">{{ item.rental |currency }}</span>
</div>
</div>
<div class="name">
<span>利息</span>
<span>{{ item.interest | currency }}</span>
</div> </div>
<img v-if="statu === 'black'" src="@/assets/contractInquire/done.png" alt="" class="status"> <img v-if="statu === 'black'" src="@/assets/contractInquire/done.png" alt="" class="status">
<img v-if="statu === 'orange'" src="@/assets/contractInquire/prompt.png" alt="" class="status"> <img v-if="statu === 'orange'" src="@/assets/contractInquire/prompt.png" alt="" class="status">
...@@ -366,7 +372,7 @@ export default { ...@@ -366,7 +372,7 @@ export default {
font-family: PingFangSC-Regular; font-family: PingFangSC-Regular;
font-size: 13px; font-size: 13px;
color: #4B4A4B; color: #4B4A4B;
padding-top: 20px; //padding-top: 20px;
margin-left: 22px; margin-left: 22px;
span:nth-of-type(2) { span:nth-of-type(2) {
margin-left: 8px; margin-left: 8px;
...@@ -378,11 +384,15 @@ export default { ...@@ -378,11 +384,15 @@ export default {
.number { .number {
// flex: 9; // flex: 9;
display: flex;
flex-direction: column;
justify-content: space-evenly;
font-family: PingFangSC-Regular; font-family: PingFangSC-Regular;
font-size: 13px; font-size: 13px;
color: #4B4A4B; color: #4B4A4B;
padding-top: 20px; //padding-top: 20px;
margin-left: 40px; margin-left: 40px;
margin-top: -16px;
span:nth-of-type(2) { span:nth-of-type(2) {
margin-left: 8px; margin-left: 8px;
} }
......
...@@ -57,7 +57,7 @@ import ContractDetail from '@/pages/ContractSigning/contract-detail' ...@@ -57,7 +57,7 @@ import ContractDetail from '@/pages/ContractSigning/contract-detail'
import ContractContent from '@/pages/ContractSigning/contract-content' import ContractContent from '@/pages/ContractSigning/contract-content'
import EntryInfo from '@/pages/ContractSigning/entry-info' import EntryInfo from '@/pages/ContractSigning/entry-info'
import ElectronicSign from '@/pages/ContractSigning/electronic-sign' import ElectronicSign from '@/pages/ContractSigning/electronic-sign'
import BodyCheck from '@/pages/ContractSigning/body-check' /*import BodyCheck from '@/pages/ContractSigning/body-check'*/
import ContractRepayPlan from '@/pages/ContractSigning/contract-repay-plan' import ContractRepayPlan from '@/pages/ContractSigning/contract-repay-plan'
// 首付款支付 // 首付款支付
...@@ -233,7 +233,7 @@ export default new Router({ ...@@ -233,7 +233,7 @@ export default new Router({
{path: '/entry-info', component: EntryInfo, name: 'EntryInfo', meta: {keepAlive: true}}, {path: '/entry-info', component: EntryInfo, name: 'EntryInfo', meta: {keepAlive: true}},
{path: '/contract-repay-plan', component: ContractRepayPlan, name: 'ContractRepayPlan', meta: {keepAlive: true}}, {path: '/contract-repay-plan', component: ContractRepayPlan, name: 'ContractRepayPlan', meta: {keepAlive: true}},
{path: '/electronic-sign', component: ElectronicSign, name: 'ElectronicSign', meta: {keepAlive: true}}, {path: '/electronic-sign', component: ElectronicSign, name: 'ElectronicSign', meta: {keepAlive: true}},
{path: '/body-check', component: BodyCheck, name: 'BodyCheck', meta: {keepAlive: true}}, /* {path: '/body-check', component: BodyCheck, name: 'BodyCheck', meta: {keepAlive: true}},*/
// 首付款支付 // 首付款支付
{path: '/first-pay', component: FirstPay, name: 'FirstPay', meta: {keepAlive: true}}, {path: '/first-pay', component: FirstPay, name: 'FirstPay', meta: {keepAlive: true}},
......
<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no,width=device-width,viewport-fit=cover"><meta name=format-detection content="telephone=no"><meta name=format-detection content="email=no"><meta name=apple-mobile-web-app-capable content=yes><meta name=apple-mobile-web-app-status-bar-style content=black><script type=text/javascript src=./static/vuePlatform.js></script><script type=text/javascript src=./static/prototype.js></script><script type=text/javascript src=cordova.js></script><script type=text/javascript src="http://api.map.baidu.com/api?v=2.0&ak=o7fTnpVAGzXKN7SirV8xGU2xzWQS2NrI"></script><title>徐工融租</title><link href=./static/css/app.6319497a7aca33cba9994809c1a48057.css rel=stylesheet></head><body><div id=app-box></div><script type=text/javascript src=./static/js/manifest.3ad1d5771e9b13dbdad2.js></script><script type=text/javascript src=./static/js/vendor.efd596b798e6119ce4a4.js></script><script type=text/javascript src=./static/js/app.e855d3033d30dd9c7a5e.js></script></body></html> <!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no,width=device-width,viewport-fit=cover"><meta name=format-detection content="telephone=no"><meta name=format-detection content="email=no"><meta name=apple-mobile-web-app-capable content=yes><meta name=apple-mobile-web-app-status-bar-style content=black><script type=text/javascript src=./static/vuePlatform.js></script><script type=text/javascript src=./static/prototype.js></script><script type=text/javascript src=cordova.js></script><script type=text/javascript src="http://api.map.baidu.com/api?v=2.0&ak=o7fTnpVAGzXKN7SirV8xGU2xzWQS2NrI"></script><title>徐工融租</title><link href=./static/css/app.d8b40c2ca4c1ada083d556818fb9edcb.css rel=stylesheet></head><body><div id=app-box></div><script type=text/javascript src=./static/js/manifest.3ad1d5771e9b13dbdad2.js></script><script type=text/javascript src=./static/js/vendor.efd596b798e6119ce4a4.js></script><script type=text/javascript src=./static/js/app.3aa55f0f2ea9e3dec22c.js></script></body></html>
\ No newline at end of file \ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment