Compare commits

..

5 Commits

Author SHA1 Message Date
liu.xiaofeng@ebiz-digits.com
0a5bb792cf 新市民产品投保提示从上传附件页面移动到签字确认页面 2023-09-27 14:35:36 +08:00
liu.xiaofeng@ebiz-digits.com
4ddb682580 投保流程 保单形式必填校验 2023-09-25 15:37:56 +08:00
liu.xiaofeng@ebiz-digits.com
7949f54cc1 新市民弹窗样式修改 2023-09-22 16:55:41 +08:00
liu.xiaofeng@ebiz-digits.com
f7447c3e75 投保人信息页面选择完客户之后保单形式不做赋值操作 2023-09-22 15:56:06 +08:00
liu.xiaofeng@ebiz-digits.com
20b8a09f51 【需求】新市民产品服务弹窗
【需求】关于纸质保单打印规则调整
默认都不选。电子选项名称修改为【电子(不打印保单)】
2023-09-19 16:18:31 +08:00
290 changed files with 11939 additions and 98083 deletions

8
.gitignore vendored
View File

@@ -3,10 +3,4 @@ dist
.eslintrc.js
.prettierrc
.idea
.history
### lockfile ###
yarn.lock
bun.lock*
.lingma
.idea

17741
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -26,17 +26,15 @@
"crypto-js": "^4.1.1",
"echarts": "^4.2.1",
"fastclick": "^1.0.6",
"file-saver": "^2.0.5",
"html2canvas": "^1.4.1",
"js-base64": "^2.5.1",
"js-md5": "^0.7.3",
"js-sha256": "^0.9.0",
"jsencrypt": "^3.2.1",
"nprogress": "^0.2.0",
"pdfh5": "^1.2.13",
"vant": "^2.13.9",
"vant": "2.2.0",
"vee-validate": "^2.2.14",
"vue": "^2.7.16",
"vue": "^2.6.10",
"vue-hash-calendar": "^1.2.12",
"vue-pdf": "^4.0.7",
"vue-router": "^3.0.3",
@@ -54,7 +52,6 @@
"babel-eslint": "^10.0.1",
"babel-jest": "^23.6.0",
"babel-plugin-import": "^1.12.0",
"code-inspector-plugin": "^1.2.10",
"eruda": "^1.5.7",
"eslint": "^5.16.0",
"eslint-plugin-prettier": "^3.1.0",
@@ -62,7 +59,6 @@
"node-sass": "^4.14.1",
"postcss-px-to-viewport": "^1.1.1",
"sass-loader": "^7.3.1",
"terser-webpack-plugin": "^4.2.3",
"vue-template-compiler": "^2.7.16"
"vue-template-compiler": "^2.6.10"
}
}

View File

@@ -228,7 +228,7 @@ function appCallBack() {}
// H5 & webapp 调用APP并返回一个Promise对象
function triggerCallHandler(method, params) {
return new Promise(function(resolve) {
window.WebViewJavascriptBridge && WebViewJavascriptBridge.callHandler(method, params, function(response) {
WebViewJavascriptBridge.callHandler(method, params, function(response) {
resolve(response)
})
})

View File

@@ -26,33 +26,6 @@ export default {
reload: this.reload
}
},
created () {
// 在页面加载时读取sessionStorage
// if (sessionStorage.getItem('store')) {
// this.$store.replaceState(Object.assign({}, this.$store.state, JSON.parse(sessionStorage.getItem('store'))))
// }
// // 在页面刷新时将store保存到sessionStorage里
// window.addEventListener('beforeunload', () => {
// sessionStorage.setItem('store', JSON.stringify(this.$store.state))
// })
//ios刷新时vuex信息保留
let isiOS = !!navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
if (isiOS) {
//在页面刷新时将vuex里的信息保存到缓存里
window.addEventListener("pagehide", () => {
localStorage.setItem("store", JSON.stringify(this.$store.state))
})
//在页面加载时读取localStorage里的状态信息
localStorage.getItem("store") && this.$store.replaceState(Object.assign(this.$store.state,JSON.parse(localStorage.getItem("store"))));
} else {
//在页面刷新时将vuex里的信息保存到缓存里
window.addEventListener("beforeunload", () => {
localStorage.setItem("store", JSON.stringify(this.$store.state))
})
//在页面加载时读取localStorage里的状态信息
localStorage.getItem("store") && this.$store.replaceState(Object.assign(this.$store.state,JSON.parse(localStorage.getItem("store"))));
}
},
mounted(){
},
methods: {

View File

@@ -1,127 +0,0 @@
import request from '@/assets/js/utils/request'
import getUrl from '@/assets/js/utils/get-url'
// 查询登录人所属项目列表
export function gbcProjectList(data) {
return request({
url: getUrl('/agent/gbc/project/list', 1),
method: 'post',
data
})
}
// 查询项目详情
export function gbcProjectDetail(data) {
return request({
url: getUrl('/agent/gbc/project/detail', 1),
method: 'post',
data
})
}
// 此接口是后端用于将GBC项目信息同步至登录用户信息即UserModel中的接口前端在选中项目后需要调用此接口。
export function gbcProjectConfirm(data) {
return request({
url: getUrl('/agent/gbc/project/confirm', 1),
method: 'post',
data
})
}
// GBC获取首页轮播图和上头条内容
export function homeConfigGBC(data) {
return request({
url: getUrl('/customer/agent/homeConfigGBC', 1,3),
method: 'get',
data
})
}
// 根据项目编码获取科室信息
export function getDepartmentByProjectNo(data) {
return request({
url: getUrl('/agent/gbc/project/getDepartmentByProjectNo', 1),
method: 'post',
data
})
}
// 按年份查询登录人所属项目列表
export function getGBCprojectlistByYear(data) {
return request({
url: getUrl('/agent/gbc/project/listByYear', 1),
method: 'post',
data
})
}
// 查询项目下的客户列表
export function getGBCappntlist(data) {
return request({
url: getUrl('/sale/gbc/appnt/list', 1),
method: 'post',
data
})
}
// 查询项目下的客户列表
export function getGBCappntDetail(data) {
return request({
url: getUrl('/sale/gbc/appnt/detail', 1),
method: 'post',
data
})
}
// 保存客户类型
export function getGBCappntTypeSave(data) {
return request({
url: getUrl('/sale/gbc/appnt/type/save', 1),
method: 'post',
data
})
}
// 保存客户沟通记录
export function getGBCappntConnectSave(data) {
return request({
url: getUrl('/sale/gbc/appnt/connect/save', 1),
method: 'post',
data
})
}
// 获取GBC一级产品
export function getGBCRiskList(data) {
return request({
url: getUrl('/sale/product/getGBCRiskList ', 1),
method: 'post',
data
})
}
// GBC一级产品校验
export function gbcAppntCheckProdect(data) {
return request({
url: getUrl('/sale/gbc/appnt/checkProdect ', 1),
method: 'post',
data
})
}
// GBC一级产品校验
export function saveOrUpdateGbc(data) {
return request({
url: getUrl('/sale/gbc/appnt/saveOrUpdateGbc', 1),
method: 'post',
data
})
}
// GBC数据看板
export function dataShow(data) {
return request({
url: getUrl('/sale/gbc/data/show', 1),
method: 'post',
data
})
}

View File

@@ -1,46 +0,0 @@
import request from '@/assets/js/utils/request'
import getUrl from '@/assets/js/utils/get-url'
// 银保代理人签署信息查询接口
export function getContractInfo(data) {
return request({
url: getUrl('/agent/enterYB/getContractInfo', 1),
method: 'post',
data
})
}
// 银保代理人签署信息接收接口
export function putContractInfo(data) {
return request({
url: getUrl('/agent/enterYB/putContractInfo', 1),
method: 'post',
data
})
}
// 生成电子合同pdf
export function generateAgreementYB(data) {
return request({
url: getUrl('/agent/enterYB/generateAgreementYB', 1),
method: 'post',
data
})
}
// 获取验证码
export function getAuthCode(data) {
return request({
url: getUrl('/customer/authcode/noLoginedSend', 1),
method: 'post',
data
})
}
// 校验验证码
export function checkSignYB(data) {
return request({
url: getUrl('/customer/authcode/checkSignYB', 1),
method: 'post',
data
})
}

View File

@@ -24,12 +24,4 @@ export function queryOutOrderList(data) {
method: 'post',
data
})
}
// 出单详情
export function queryOutOrderDetail(data) {
return request({
url: getUrl(`/sale/order/queryOutOrderDetail`, 1),
method: 'post',
data
})
}

View File

@@ -39,30 +39,10 @@ export function getOrgList(data) {
// 获取MIS全部机构 (分级)接口--因内勤多加一级,所以用这个接口
export function getMisBranchComList(data) {
// data.isJzg false 为内勤
// data.isJzg true 为外勤
return request({
url: getUrl( '/data/performance/getMisBranchComList', 1),
method: 'post',
data
})
}
export function getMisBranchComList2(data) {
// data.isJzg false 为内勤
// data.isJzg true 为外勤
return request({
url: getUrl( '/agent/agent/getJZGManageComList' , 1),
url: getUrl('/data/performance/getMisBranchComList', 1),
method: 'post',
data
})
}
// 内勤机构
// export function getMisBranchComList(data) {
// return request({
// url: getUrl('/data/performance/getMisBranchComList', 1),
// method: 'post',
// data
// })
// }

View File

@@ -3,7 +3,7 @@
* @Date: 2021-03-26 10:38:37
* @LastEditTime: 2021-04-02 16:10:30
* @LastEditors: PangXingYue
* @Description:
* @Description:
* @FilePath: \ebiz-h5\src\api\ebiz\cardList\cardList.js
*/
// 卡单接口
@@ -95,7 +95,7 @@ export function getPayTemp(data) {
//
export function getShareParam(data) {
return request({
url: getUrl('/customer/account/getShareParam', 1),
url: getUrl('/customer/account/getShareParam', 1),
method: 'post',
data
})
@@ -168,12 +168,4 @@ export function deleteGroupCardByInsured(data) {
method: 'post',
data
})
}
// 不让跨天支付 单新契约出单跨天支付流程优化
export function cardContIsPay(data) {
return request({
url: getUrl('/sale/card/contIsPay', 1),
method: 'post',
data
})
}
}

View File

@@ -117,15 +117,4 @@ export function funcPermCheck(data) {
method: 'post',
data
})
}
/** add by zhangweiwei FCRS-764 国富无忧两全保险B款新增主险职业校验逻辑 start at 20240807 */
// 校验职业是否符合产品要求
export function occupationCodeCheck(data) {
return request({
url: getUrl('/sale/product/occupationCodeCheck', 1),
method: 'post',
data
})
}
/** add by zhangweiwei FCRS-764 国富无忧两全保险B款新增主险职业校验逻辑 end at 20240807 */
}

View File

@@ -90,11 +90,3 @@ export function queryOutPosters(data) {
})
}
//大单榜海报列表接口
export function queryOutPostersBig(data) {
return request({
url: getUrl(`/sale/makePosters/queryOutPostersBig`, 1),
method: 'post',
data
})
}

View File

@@ -1,34 +0,0 @@
import request from '@/assets/js/utils/request'
import getUrl from '@/assets/js/utils/get-url'
export function healthgetRenewalList(data) {
return request({
url: getUrl('/sale/health/getRenewalList', 1),
method: 'post',
data
})
}
export function healthgetRenewalListDetail(data) {
return request({
url: getUrl('/sale/health/getRenewalListDetail', 1),
method: 'post',
data
})
}
export function reasonForNonRenewalSubmitted(data) {
return request({
url: getUrl('/sale/health/reasonForNonRenewalSubmitted', 1),
method: 'post',
data
})
}
export function getAgentManager(data) {
return request({
url: getUrl('/sale/health/getAgentManager', 1),
method: 'post',
data
})
}

View File

@@ -111,13 +111,5 @@ export function getServiceConfig(data) {
})
}
//登录用户2
export function getConfigByCode(data) {
return request({
url: getUrl('/app/getConfigByCode', 1),
method: 'post',
data
})
}

View File

@@ -118,13 +118,3 @@ export function exportExcel(data) {
data
})
}
export function base64Excel(data) {
return request({
// url: 'http://10.10.100.98:7012/updown/uploadBase64Image',
url: getUrl('/uploadBase64Image', 1,2),
method: 'post',
data
})
}

View File

@@ -36,12 +36,3 @@ export function getSpecialAreaProList(data) {
data
})
}
// 首页底部图
export function getHomeBottomPic(data) {
return request({
url: getUrl('/app/code/getCodeValue', 1),
method: 'post',
data
})
}

View File

@@ -10,29 +10,6 @@ export function saveOrUpdateOrderInfo(data) {
data
})
}
/** 获取最新的产品列表
* @returns {import("axios").AxiosPromise<{
* "result": string,
* "resultMessage": string,
* "content": string[]
* }>}
*
* ### 示例返回结果
* ```json
* {
* "result": "0",
* "resultMessage": "",
* "content": ["GFRS_M0105"]
* }
* ```
*/
export function newProducts() {
return request({
url: getUrl('/sale/order/getNewSaleProduct', 1),
method: 'get'
})
}
// 核保试算
export function orderTrial(data) {
return request({
@@ -99,24 +76,6 @@ export function getOrderDetail1(data) {
data
})
}
// 投保单邮件发送
export function getSendEmail(data) {
return request({
url: getUrl('/sale/order/sendEmail', 1),
method: 'post',
data
})
}
// 投保单邮件发送
export function getDownloadZip(data) {
return request({
url: getUrl('/sale/order/downloadZip?orderNo=' + data.orderNo, 1),
method: 'get',
data,
responseType: 'blob'
})
}
// 获取验证码
export function getAuthCode(data) {
return request({
@@ -145,7 +104,7 @@ export function uploadImg(data) {
// 上传图片
export function uploadImg2(data) {
return request1({
url: getUrl('/uploadImage?imgType=' + store.getters.getUploadImgType + '&orderNo=' + store.getters.getUploadImgOrderNo, 1, 2),
url: getUrl('/uploadImage?imgType='+store.getters.getUploadImgType+'&orderNo='+store.getters.getUploadImgOrderNo, 1, 2),
method: 'post',
data
})
@@ -358,6 +317,7 @@ export function getActivityList(data) {
})
}
// 身份证OCR识别
export function IDCardOCR(data) {
return request1({
@@ -375,6 +335,17 @@ export function getBankCardSignState(data) {
})
}
// 入司人自互保件校验
export function CommitmentSelfCheck(data) {
return request1({
url: getUrl('/sale/commitment/CommitmentSelfCheck', 1),
method: 'post',
data
})
}
// 获取柳州分红万能投连型产品编码集合
export function getUniversalCodeLst(data) {
return request({
@@ -382,71 +353,4 @@ export function getUniversalCodeLst(data) {
method: 'post',
data
})
}
// 获取柳州分红万能投连型产品编码集合
export function getDoubleRecordProductLst(data) {
return request({
url: getUrl('/sale/product/getDoubleRecordProductLst ', 1),
method: 'post',
data
})
}
// 指定受益人身份四要素
export function checkAppointBnf(data) {
return request({
url: getUrl('/sale/bnfCheck/checkAppointBnf ', 1),
method: 'post',
data
})
}
export function appntIsAgent(data) {
return request({
url: getUrl('/sale/insure/appntIsAgent', 1),
method: 'post',
data
})
}
export function saveOrderType(data) {
return request({
url: getUrl('/sale/order/saveOrderType', 1),
method: 'post',
data
})
}
export function changeOrderStatus(data) {
return request({
url: getUrl('/sale/order/changeOrderStatus', 1),
method: 'post',
data
})
}
export function riskLevelCheck(data) {
return request({
url: getUrl('/sale/order/riskLevelCheck', 1),
method: 'post',
data
})
}
// 新市民产品服务通知/安心保、爱心保产品提示
export function sendServicePopup(data) {
return request({
url: getUrl('/sale/sendNotice/sendServicePopup', 1),
method: 'post',
data
})
}
//投保流程优化保存问卷测评接口,与原接口一致
export function saveEvalateAnswer(data) {
return request({
url: getUrl('/sale/order/saveOrUpdateAssessInfo ', 1),
method: 'post',
data
})
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1002 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 615 KiB

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 187 KiB

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 342 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 272 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 189 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 84 KiB

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.8 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 290 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

View File

@@ -1,8 +0,0 @@
export const riskMap = Object.freeze({
riskName: '主险名称',
payIntv: "交费方式",
insuYear: "保险期间",
payEndYear: "缴费期间",
amt: "保额",
prem: "保费"
})

View File

@@ -1,71 +0,0 @@
import Vue from 'vue'
import cacheUtils from '@/assets/js/utils/cacheUtils'
const { setLocItem, getLocItem, removeLocItem } = cacheUtils
/**
* 同步本地存储数据函数
* 使用Vue的响应式系统在数据变化时自动更新localStorage
* @param {Object|Array} oldData - 需要被监听的数据对象或数组(即将弃用)
* @param {Object} options - 配置选项
* @param {string} options.name - localStorage中存储数据的键名
* @param {boolean} options.release - 是否在离开页面时释放变量
* @returns {Object|Array} 返回一个响应式对象或数组会自动同步到localStorage
*
* ### 使用示例
*
* const beneficiaries = syncLocalstorageData([], {name: 'beneficiaryInfo'})
*/
export function syncLocalstorageData(oldData, { data = undefined, name = '', release = false } = {}) {
// 兼容处理
data = oldData || data
if (!name || typeof name !== 'string') {
console.error('[syncLocalstorage] name must be a non-empty string')
return data
}
// 从localStorage加载已保存的数据如果存在
// try {
// const savedData = JSON.parse(getLocItem(name) || 'null')
// if (savedData !== null) {
// if (Array.isArray(savedData) && Array.isArray(data)) {
// data.length = 0
// data.push(...savedData)
// } else if (typeof savedData === 'object' && savedData !== null) {
// Object.keys(data).forEach(key => delete data[key])
// Object.assign(data, savedData)
// }
// }
// } catch (e) {
// console.error(`[syncLocalstorage] Failed to parse saved data for ${name}:`, e)
// }
// 创建Vue实例来监听数据变化
const vm = new Vue({
data: {
value: data
},
watch: {
value: {
handler(newVal) {
setLocItem(name, JSON.stringify(newVal))
},
deep: true,
immediate: true
}
}
})
// 在页面卸载时清理
if (release) {
const cleanup = () => {
removeLocItem(name)
window.removeEventListener('unload', cleanup)
}
window.addEventListener('unload', cleanup)
}
// 返回响应式数据
return vm.value
}

View File

@@ -1,107 +0,0 @@
/**
* 防抖函数
* @param {Function} fn - 需要防抖的函数
* @param {Number} delay - 延迟时间,单位毫秒
* @param {Boolean} immediate - 是否立即执行
* @returns {Function} 防抖后的函数
*/
export function debounce(fn, delay, immediate = false) {
let timeout = null;
let isInvoked = false;
return function (...args) {
const context = this;
if (timeout) clearTimeout(timeout);
if (immediate) {
if (!isInvoked) {
fn.apply(context, args);
isInvoked = true;
}
timeout = setTimeout(() => {
isInvoked = false;
}, delay);
} else {
timeout = setTimeout(() => {
fn.apply(context, args);
}, delay);
}
};
}
/**
* 节流函数
* @param {Function} fn - 需要节流的函数
* @param {Number} delay - 节流时间,单位毫秒
* @returns {Function} 节流后的函数
*/
export function throttle(fn, delay) {
let lastTime = 0;
let timeout = null;
return function (...args) {
const context = this;
const now = Date.now();
if (now - lastTime > delay) {
clearTimeout(timeout);
fn.apply(context, args);
lastTime = now;
} else {
clearTimeout(timeout);
timeout = setTimeout(() => {
fn.apply(context, args);
lastTime = now;
}, delay - (now - lastTime));
}
};
}
/**
* 节流函数 - 定时器版本
* @param {Function} fn - 需要节流的函数
* @param {Number} delay - 节流时间,单位毫秒
* @returns {Function} 节流后的函数
*/
export function throttleTimer(fn, delay) {
let timeout = null;
return function (...args) {
const context = this;
if (!timeout) {
timeout = setTimeout(() => {
fn.apply(context, args);
timeout = null;
}, delay);
}
};
}
/**
* 节流函数 - 时间戳版本
* @param {Function} fn - 需要节流的函数
* @param {Number} delay - 节流时间,单位毫秒
* @returns {Function} 节流后的函数
*/
export function throttleTimestamp(fn, delay) {
let lastTime = 0;
return function (...args) {
const context = this;
const now = Date.now();
if (now - lastTime > delay) {
fn.apply(context, args);
lastTime = now;
}
};
}
export default {
debounce,
throttle,
throttleTimer,
throttleTimestamp
};

View File

@@ -1,168 +1,167 @@
import utilsAge from '@/assets/js/utils/age'
export default {
//计算身份证起始日期
getStartDate: function(birthday, endDate) {
getStartDate: function(age, endDate) {
let startDate = '' //证件起始日期
let startage = ''
let endage = utilsAge.getAge(birthday, new Date(endDate))
let thisDate = new Date() //当年日期
let thisyear = thisDate.getFullYear() //当前年份
/**
* @Author: LiuXiaoFeng
* @Description: 未满16周岁的公民申领的居民身份证有效期为5年
* @Date: 2023/7/4
**/
if (endage - 5 < 16) {
let date2_29 = endDate.slice(5, 11)
if(date2_29 == '02-29'){
let thisyear = Number(endDate.slice(0, 4)) - 5
if (thisyear % 4 == 0 && thisyear % 100 != 0 || thisyear % 400 == 0){
startDate = thisyear + '-02-29'
} else {
startDate = thisyear + '-02-28'
}
}else{
startDate = String(Number(endDate.slice(0, 4)) - 5) + endDate.slice(4, 11)
if (age < 16) {
/**
* @Author: LiuXiaoFeng
* @Description: 16周岁以下的证件有效期为5年
* @Date: 2023/7/4
**/
startDate = String(Number(endDate.slice(0,4)) - 5) + endDate.slice(4,11)
} else if (age >= 16 && age <= 21) {
/**
* @Author: LiuXiaoFeng
* @Description: 16周岁~21周岁的证件有效期为10年或5年
* @Date: 2023/7/4
**/
if (age - (10 - (endDate.slice(0,4) - thisyear)) < 16 ) {
/**
* @Author: LiuXiaoFeng
* @Description: 如果证件有效期为10年 根据证件截止日期 判断10年前的年龄 如果小于16周岁 那么证件有效期就是5年
* @Date: 2023/7/5
**/
startDate = String(Number(endDate.slice(0,4)) - 5) + endDate.slice(4,11)
} else {
startDate = String(Number(endDate.slice(0,4)) - 10) + endDate.slice(4,11)
}
}
/**
* @Author: LiuXiaoFeng
* @Description: 年满16周岁25周岁的公民申领的居民身份证有效期为10年
* @Date: 2023/7/4
**/
else if (endage - 5 >= 16 && endage - 10 <= 25) {
} else if(age >= 22 && age <= 25) {
/**
* @Author: LiuXiaoFeng
* @Description: 22周岁~25周岁的证有效期为10年
* @Date: 2023/7/4
**/
startDate = String(Number(endDate.slice(0,4)) - 10) + endDate.slice(4,11)
startage = utilsAge.getAge(birthday, new Date(startDate))
if(startage >= 16 && startage <= 25){
let date2_29 = endDate.slice(5, 11)
if(date2_29 == '02-29') {
let thisyear = Number(endDate.slice(0, 4)) - 10
if (thisyear % 4 == 0 && thisyear % 100 != 0 || thisyear % 400 == 0){
startDate = thisyear + '-02-29'
} else {
startDate = thisyear + '-02-28'
}
} else {
startDate
}
} else if (age >= 26 && age <= 35) {
/**
* @Author: LiuXiaoFeng
* @Description: 26周岁~35周岁的证件有效期为20年或10年
* @Date: 2023/7/4
**/
if (age - (20 - (endDate.slice(0,4) - thisyear)) < 26 ) {
/**
* @Author: LiuXiaoFeng
* @Description: 如果证件有效期为20年 根据证件截止日期 判断20年前的年龄 如果小于26周岁 那么证件有效期就是10年
* @Date: 2023/7/5
**/
startDate = String(Number(endDate.slice(0,4)) - 10) + endDate.slice(4,11)
} else {
startDate = String(Number(endDate.slice(0,4)) - 20) + endDate.slice(4,11)
}
}
/**
* @Author: LiuXiaoFeng
* @Description: 年满26周岁45周岁的公民申领的居民身份证有效期为20年
* @Date: 2023/7/4
**/
else if(endage - 10 >= 26 && endage - 20 <= 45) {
startDate = String(Number(endDate.slice(0,4)) - 20) + endDate.slice(4,11)
startage = utilsAge.getAge(birthday, new Date(startDate))
if(startage >= 26 && startage <= 45){
let date2_29 = endDate.slice(5, 11)
if(date2_29 == '02-29') {
let thisyear = Number(endDate.slice(0, 4)) - 20
if (thisyear % 4 == 0 && thisyear % 100 != 0 || thisyear % 400 == 0){
startDate = thisyear + '-02-29'
} else {
startDate = thisyear + '-02-28'
}
} else {
startDate
}
} else if (age >= 36 && age <= 45) {
/**
* @Author: LiuXiaoFeng
* @Description: 36周岁~45周岁的证有效期为20年
* @Date: 2023/7/4
**/
startDate = String(Number(endDate.slice(0,4)) + 20) + endDate.slice(4,11)
} else if (age >= 46 && age <= 65) {
/**
* @Author: LiuXiaoFeng
* @Description: 46周岁~65周岁的证件有效期为20年或长期
* @Date: 2023/7/4
**/
if (age - (20 - (endDate.slice(0,4) - thisyear)) < 46 ) {
/**
* @Author: LiuXiaoFeng
* @Description: 如果证件有效期为20年 根据证件截止日期 判断20年前的年龄 如果小于46周岁 那么证件有效期就是20年
* @Date: 2023/7/5
**/
startDate = String(Number(endDate.slice(0,4)) - 20) + endDate.slice(4,11)
}
}
/**
* @Author: LiuXiaoFeng
* @Description: 年满46周岁的公民申领居民身份证有效期为长期
* @Date: 2023/7/4
**/
else if (endage - 20 >= 46) {
startDate
}
if(new Date(birthday).getTime() >= new Date(startDate).getTime() || new Date().getTime() < new Date(startDate).getTime()){
startDate = ''
} else if (age > 65) {
/**
* @Author: LiuXiaoFeng
* @Description: 65周岁以上的证件有效期为长期
* @Date: 2023/7/4
**/
}
return startDate
},
//计算身份证截止日期
getEndDate: function(birthday, startDate) {
getEndDate: function(age, startDate) {
let endDate = '' //证件截止日期
let startage = utilsAge.getAge(birthday, new Date(startDate))
/**
* @Author: LiuXiaoFeng
* @Description: 未满16周岁的公民申领的居民身份证有效期为5年
* @Date: 2023/7/4
**/
if (startage < 16) {
let date2_29 = startDate.slice(5, 11)
if(date2_29 == '02-29') {
let thisyear = Number(startDate.slice(0, 4)) + 5
if (thisyear % 4 == 0 && thisyear % 100 != 0 || thisyear % 400 == 0){
return endDate = thisyear + '-02-29'
} else {
return endDate = thisyear + '-02-28'
}
} else {
return endDate = String(Number(startDate.slice(0, 4)) + 5) + startDate.slice(4, 11)
}
}
/**
* @Author: LiuXiaoFeng
* @Description: 年满16周岁至25周岁的公民申领的居民身份证有效期为10年
* @Date: 2023/7/4
**/
else if (startage >= 16 && startage <= 25) {
let date2_29 = startDate.slice(5, 11)
if(date2_29 == '02-29') {
let thisyear = Number(startDate.slice(0, 4)) + 10
if (thisyear % 4 == 0 && thisyear % 100 != 0 || thisyear % 400 == 0){
return endDate = thisyear + '-02-29'
} else {
return endDate = thisyear + '-02-28'
}
} else {
return endDate = String(Number(startDate.slice(0, 4)) + 10) + startDate.slice(4, 11)
}
}
/**
* @Author: LiuXiaoFeng
* @Description: 年满26周岁至45周岁的公民申领的居民身份证有效期为20年
* @Date: 2023/7/4
**/
else if (startage >= 26 && startage <= 45) {
let date2_29 = startDate.slice(5, 11)
if(date2_29 == '02-29') {
let thisyear = Number(startDate.slice(0, 4)) + 20
if (thisyear % 4 == 0 && thisyear % 100 != 0 || thisyear % 400 == 0){
return endDate = thisyear + '-02-29'
} else {
return endDate = thisyear + '-02-28'
}
} else {
return endDate = String(Number(startDate.slice(0, 4)) + 20) + startDate.slice(4, 11)
}
}
/**
* @Author: LiuXiaoFeng
* @Description: 年满46周岁的公民申领居民身份证有效期为长期
* @Date: 2023/7/4
**/
else if (startage > 45) {
return endDate
}
},
let thisDate = new Date() //当年日期
let thisyear = thisDate.getFullYear() //当前年份
//计算户口本截止日期
getEndDate2: function(birthday, startDate) {
let endDate = ''
let date2_29 = startDate.slice(5, 11)
if(date2_29 == '02-29'){
let thisyear = Number(startDate.slice(0, 4)) + 16
if (thisyear % 4 == 0 && thisyear % 100 != 0 || thisyear % 400 == 0){
return endDate = thisyear + '-02-29'
if (age < 16) {
/**
* @Author: LiuXiaoFeng
* @Description: 16周岁以下的证件有效期为5年
* @Date: 2023/7/4
**/
endDate = String(Number(startDate.slice(0,4)) + 5) + startDate.slice(4,11)
} else if (age >= 16 && age <= 21) {
/**
* @Author: LiuXiaoFeng
* @Description: 16周岁~21周岁的证件有效期为10年或5年
* @Date: 2023/7/4
**/
if (age - (thisyear - startDate.slice(0,4)) < 16 ) {
/**
* @Author: LiuXiaoFeng
* @Description: 根据证件起始日期计算办证时年龄 如果办证时年龄小于16周岁 那么证件有效期就是5年
* @Date: 2023/7/5
**/
endDate = String(Number(startDate.slice(0,4)) + 5) + startDate.slice(4,11)
} else {
return endDate = thisyear + '-02-28'
endDate = String(Number(startDate.slice(0,4)) + 10) + startDate.slice(4,11)
}
}else{
return endDate = String(Number(startDate.slice(0, 4)) + 16) + startDate.slice(4, 11)
} else if(age >= 22 && age <= 25) {
/**
* @Author: LiuXiaoFeng
* @Description: 22周岁~25周岁的证件有效期为10年
* @Date: 2023/7/4
**/
endDate = String(Number(startDate.slice(0,4)) + 10) + startDate.slice(4,11)
} else if (age >= 26 && age <= 35) {
/**
* @Author: LiuXiaoFeng
* @Description: 26周岁~35周岁的证件有效期为20年或10年
* @Date: 2023/7/4
**/
if (age - (thisyear - startDate.slice(0,4)) < 26 ) {
/**
* @Author: LiuXiaoFeng
* @Description: 根据证件起始日期计算办证时年龄 如果办证时年龄小于26周岁 那么证件有效期就是10年
* @Date: 2023/7/5
**/
endDate = String(Number(startDate.slice(0,4)) + 10) + startDate.slice(4,11)
} else {
endDate = String(Number(startDate.slice(0,4)) + 20) + startDate.slice(4,11)
}
} else if (age >= 36 && age <= 45) {
/**
* @Author: LiuXiaoFeng
* @Description: 36周岁~45周岁的证件有效期为20年
* @Date: 2023/7/4
**/
endDate = String(Number(startDate.slice(0,4)) + 20) + startDate.slice(4,11)
} else if (age >= 46 && age <= 65) {
/**
* @Author: LiuXiaoFeng
* @Description: 46周岁~65周岁的证件有效期为20年或长期
* @Date: 2023/7/4
**/
if (age - (thisyear - startDate.slice(0,4)) < 46 ) {
/**
* @Author: LiuXiaoFeng
* @Description: 根据证件起始日期计算办证时年龄 如果办证时年龄小于46周岁 那么证件有效期就是20年
* @Date: 2023/7/5
**/
endDate = String(Number(startDate.slice(0,4)) + 20) + startDate.slice(4,11)
}
} else if (age > 65) {
/**
* @Author: LiuXiaoFeng
* @Description: 65周岁以上的证件有效期为长期
* @Date: 2023/7/4
**/
}
return endDate
}
}

View File

@@ -965,10 +965,10 @@ export default {
id: 2,
text: '户口本'
},
// {
// id: 3,
// text: '出生证'
// },
{
id: 3,
text: '出生证'
},
{
id: 4,
text: '外国人护照'
@@ -995,54 +995,6 @@ export default {
text: '港澳台居民居住证'
}
],
//投保-被保险人证件类型(证件类型调整以及周边系统调整)
idTypeAdjustment: [
{
id: 1,
text: '居民身份证'
},
{
id: 2,
text: '户口本'
},
// {
// id: 3,
// text: '出生证'
// },
{
id: 4,
text: '外国人护照'
},
{
id: 5,
text: '港澳居民来往内地通行证'
},
{
id: 6,
text: '台湾居民来往大陆通行证'
},
/* {
id: 7,
text: '其他',
disabled: true
}*/
{
id: 8,
text: '外国人永久居留身份证'
},
// {
// id: 9,
// text: '港澳台居民居住证'
// },
{
id: 11,
text: '港澳居民居住证'
},
{
id: 12,
text: '台湾居民居住证'
},
],
//投保人证件类型
insuredIdType: [
{
@@ -1085,106 +1037,6 @@ export default {
text: '港澳台居民居住证'
}
],
// 投保-投保人证件类型(证件类型调整以及周边系统调整)
insuredIdTypeAdjustment: [
{
id: 1,
text: '居民身份证'
},
{
id: 2,
text: '户口本',
disabled: true
},
{
id: 3,
text: '出生证',
disabled: true
},
{
id: 4,
text: '护照'
},
{
id: 5,
text: '港澳居民来往内地通行证'
},
{
id: 6,
text: '台湾居民来往大陆通行证'
},
/* {
id: 7,
text: '其他',
disabled: true
}*/
{
id: 8,
text: '外国人永久居留身份证'
},
// {
// id: 9,
// text: '港澳台居民居住证'
// }
{
id: 11,
text: '港澳居民居住证'
},
{
id: 12,
text: '台湾居民居住证'
},
],
// 投保-投保人证件类型-兼容需求前类型(证件类型调整以及周边系统调整)
insuredIdTypeAllList: [
{
id: 1,
text: '居民身份证'
},
{
id: 2,
text: '户口本',
disabled: true
},
{
id: 3,
text: '出生证',
disabled: true
},
{
id: 4,
text: '护照'
},
{
id: 5,
text: '港澳居民来往内地通行证'
},
{
id: 6,
text: '台湾居民来往大陆通行证'
},
/* {
id: 7,
text: '其他',
disabled: true
}*/
{
id: 8,
text: '外国人永久居留身份证'
},
{
id: 9,
text: '港澳台居民居住证'
},
{
id: 11,
text: '港澳居民居住证'
},
{
id: 12,
text: '台湾居民居住证'
},
],
//投保人证件类型
insuredIdTypeSpecial: [
{
@@ -1207,36 +1059,6 @@ export default {
text: '户口本'
}
],
// 新市民身份
isNewPeopleFlag: [
{
id: 1,
text: '是'
},
{
id: 0,
text: '否'
}
],
// 新市民类型 创业、就业、子女上学、投奔子女
npType: [
{
id: 1,
text: '创业'
},
{
id: 2,
text: '就业'
},
{
id: 3,
text: '子女上学'
},
{
id: 4,
text: '投奔子女'
}
],
//出生证明
birthType: [
{
@@ -1921,7 +1743,7 @@ export default {
},
{
id: '07',
text: '核保失败'
text: '公司谢绝'
},
{
id: '08',
@@ -2125,7 +1947,7 @@ export default {
},
{
id: '58',
text: '待支付'
text: '待客户付款'
},
{
id: '59',
@@ -3905,36 +3727,36 @@ export default {
label: "元"
},
{
code: "AppntModerateOrMinorDiseaseExemptionPremiumC",
label: "元"
code: "AppntModerateOrMinorDiseaseExemptionPremiumC",
label: "元"
},
{
code: "AppntDeathOrTotalDiseaseExemptionPremiumC",
label: "元"
code: "AppntDeathOrTotalDiseaseExemptionPremiumC",
label: "元"
},
{
code: "InsuredCriticalDiseaseExemptionPremiumC",
label: "元"
code: "InsuredCriticalDiseaseExemptionPremiumC",
label: "元"
},
{
code: "InsuredModerateOrMinorDiseaseExemptionPremiumC",
label: "元"
code: "InsuredModerateOrMinorDiseaseExemptionPremiumC",
label: "元"
},
{
code: "InsuredDeathOrTotalDiseaseExemptionPremiumC",
label: "元"
code: "InsuredDeathOrTotalDiseaseExemptionPremiumC",
label: "元"
},
{
code: "transport_G",
label: "元"
code: "transport_G",
label: "元"
},
{
code: "transport_H",
label: "元"
code: "transport_H",
label: "元"
},
{
code: "transport_J",
label: "元"
code: "transport_J",
label: "元"
},
{
code: "firstMajorDiseaseInsurance",
@@ -3956,14 +3778,6 @@ export default {
code: "GFRS_M0073__cashValue",
label: "元"
},
{
code: "specMajorDiseaseInsurance",
label: "元"
},
{
code: "expireSurvivalInsurance",
label: "元"
},
{
code: "currentBonus_L",
label: "元"
@@ -4000,138 +3814,9 @@ export default {
code: "supplementarySpecificDiseaseInsurance",
label: "元"
},
{
code: "deductible",
label: "元"
},
{
code: "deductible",
label: "免赔额"
},
{
code: "accidentalDeductible",
label: "元"
},
{
code: "accidentalLimit",
label: "%"
},
{
code: "policyFee",
label: "元"
},
{
code: "expireSurvivalInsurance_L",
label: "元"
},
{
code: "expireSurvivalInsurance_M",
label: "元"
},
{
code: "riskCost_L",
label: "元"
},
{
code: "riskCost_M",
label: "元"
},
{
code: "GFRS_M0087__cashValue",
label: "元"
},
{
code: "deathDisabilityInsurance",
label: "元"
},
{
code: "middleDiseaseMildillnessExemptionPremium",
label: "元"
},
{
code: "malignantTumorAdditionalInsurance",
label: "元"
},
{
code: "specCardiovascularCerebrovascularDiseasesInsurance",
label: "元"
},
{
code: "firstCriticalIllnessCareFund",
label: "元"
},
{
code: "firstModerateIllnessCareFund",
label: "元"
},
{
code: "firstLightIllnessCareFund",
label: "元"
},
{
code: "GFRS_M0086__cashValue",
label: "元"
},
{
code: "wuyouliangquanbkx",
label: "元"
},
{
code: "currentPaidUpAdditions_L",
label: "元"
},
{
code: "currentPaidUpAdditions_M",
label: "元"
},
{
code: "totalPaidUpAdditions_L",
label: "元"
},
{
code: "totalPaidUpAdditions_M",
label: "元"
},
{
code: "GFRS_M0094__cashValue",
label: "元"
},
{
//养老年金开始领取年龄
code: 'pensionAge',
label: '岁'
},
{
code: 'AppntCriticalDiseaseExemptionPremiumD',
label: '元'
},
{
code: 'AppntModerateOrMinorDiseaseExemptionPremiumD',
label: '元'
},
{
code: 'AppntDeathOrTotalDiseaseExemptionPremiumD',
label: '元'
},
{
code: 'InsuredCriticalDiseaseExemptionPremiumD',
label: '元'
},
{
code: 'InsuredModerateOrMinorDiseaseExemptionPremiumD',
label: '元'
},
{
code: 'InsuredDeathOrTotalDiseaseExemptionPremiumD',
label: '元'
},
{
code: 'cumulativeSurvivalBenefitsExcludingDividends',
label: '元'
},
{
code: 'cumulativeSurvivalBenefitsIncludingDividends',
label: '元'
}
],
// 卡单与短期险重新投保选择职业类别时,两个模块职业类型数据的排序不同,创建这个数据字典,用于在选择职业类别时,作为一个参数传入组件,
@@ -4161,7 +3846,7 @@ export default {
{ id: 'M', text: '母亲' }
],
// <!--------- 津贴申请专用 end --------->
imageInfoType: [
imageInfoType:[
{ id: '1', text: '居民身份证正面' },
{ id: '2', text: '居民身份证反面' },
{ id: '3', text: '银行卡正面' },

View File

@@ -1,4 +1,9 @@
export default {
isAll: false,
encodeKeys: process.env.NODE_ENV === 'development' ? [] : ['saleInsuredInfo', 'saleInsuredPersonInfo', 'appntDTO', 'proposalAppnt']
encodeKeys: [
'saleInsuredInfo',
'saleInsuredPersonInfo',
'appntDTO',
'proposalAppnt'
]
}

View File

@@ -1,44 +0,0 @@
export function deepClone(obj, hash = new WeakMap()) {
if (window.structuredClone) return window.structuredClone(obj)
// 处理 null 或 undefined
if (obj === null || typeof obj !== 'object') {
return obj
}
// 处理循环引用
if (hash.has(obj)) {
return hash.get(obj)
}
// 处理 Date 对象
if (obj instanceof Date) {
return new Date(obj)
}
// 处理 RegExp 对象
if (obj instanceof RegExp) {
return new RegExp(obj.source, obj.flags)
}
// 处理数组
if (Array.isArray(obj)) {
const clonedArr = []
hash.set(obj, clonedArr)
obj.forEach((item, index) => {
clonedArr[index] = deepClone(item, hash)
})
return clonedArr
}
// 处理普通对象
if (typeof obj === 'object') {
const clonedObj = {}
hash.set(obj, clonedObj)
Object.keys(obj).forEach(key => {
clonedObj[key] = deepClone(obj[key], hash)
})
return clonedObj
}
return obj
}

View File

@@ -62,8 +62,7 @@ let sale = [
'/sale/insure/selfToHuman',
'/sale/insure/orderPayStatusQuery',
'/sale/order/revokeOrder',
'/sale/product/getcompany',
'/sale/product/occupationCodeCheck'
'/sale/product/getcompany'
] //在线投保
let agentEnter = [
'/agent/enter/share',
@@ -221,7 +220,7 @@ service.interceptors.request.use(
let isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //判断是否是 android终端
if (isAndroid) {
// setTimeout(() => {
if (window.location.hash !== '#/my/privacyPolicy' && window.location.hash !== '#/YB_agentSign/step1' && window.location.hash !== '#/YB_agentSign/step2') {
if (window.location.hash !== '#/my/privacyPolicy') {
console.log(window.Android.getToken(), 'Android获取token')
CacheUtils.setLocItem('token', window.Android.getToken())
}
@@ -252,9 +251,6 @@ service.interceptors.request.use(
// respone拦截器
service.interceptors.response.use(
response => {
if (response.config.responseType) {
return response.data
}
let res = response.data
if (
(configApp.API_VERSION == 'v2' || configApp.API_VERSION == 'v3') &&

View File

@@ -1,15 +0,0 @@
/**
* 处理 json 键值对,到 url 中
*/
export function processJson(json) {
if (typeof json !== 'object') return
if (window.URLSearchParams) return new URLSearchParams(json).toString()
let url = ''
for (const key in json) {
if (json.hasOwnProperty(key)) {
url += key + '=' + json[key] + '&'
}
}
return url.substring(0, url.length - 1)
}

View File

@@ -59,19 +59,16 @@ Validator.extend('email', {
Validator.extend('name', {
getMessage: () => '姓名长度为2-120个字符之内只能输入汉字或者英文',
validate: value => {
return value
// return /^[\u4e00-\u9fa5·]{1,15}$/.test(value)
// return /^[a-zA-Z\.\s\u4e00-\u9fa5]{2,120}$/.test(value);
return /^[a-zA-Z\.\s\u4e00-\u9fa5]{2,120}$/.test(value);
}
});
//sale 投保名字 2个汉字4个字母
Validator.extend('salename', {
getMessage: () => '亲,请确认您录入的姓名是否正确哦~',
validate: value => {
return value
// return /^[\u4e00-\u9fa5·]{1,15}$/.test(value)
// return /^[a-zA-Z\.\s\u4e00-\u9fa5]{2,120}$/.test(value);
// return /^[\u4e00-\u9fa5·]{2,120}$|^[a-zA-Z\s]{4,120}$/.test(value);
return /^[\u4e00-\u9fa5·]{2,120}$|^[a-zA-Z\s]{4,120}$/.test(value);
}
});
// sale - 详细地址 - 详细地址须同时包含汉字和数字,

View File

@@ -303,7 +303,7 @@
box-sizing: border-box;
content: " ";
pointer-events: none;
right: 4.26667vw;
right: 0;
bottom: 0;
left: 4.26667vw;
border-bottom: 1px solid #dadada;

View File

@@ -16,7 +16,7 @@
<van-field
minlength="6"
class="pt5 mt10"
style="border-top: 1px solid #eaeaea; border-bottom: 1px solid #eaeaea"
style="border-top:1px solid #eaeaea;border-bottom:1px solid #eaeaea"
v-model="checkModel.pwd"
clearable
type="password"
@@ -207,7 +207,7 @@ export default {
operateCodeType: '0'
}
//获取验证码
getAuthCode(data).then((res) => {
getAuthCode(data).then(res => {
if (res.result == 0) {
this.checkModel.smsId = res.sessionId
this.checkModel.smsCode = null
@@ -225,18 +225,6 @@ export default {
}
})
}
},
watch: {
/**
* 监听弹窗显示隐藏
*/
'checkModel.show'(val) {
console.log('checkModel.show', val)
// 显示时禁止截屏,不显示时恢复截屏
EWebBridge.webCallAppInJs('enable_screen_capture', {
enable: !val
})
}
}
}
</script>

View File

@@ -1,29 +0,0 @@
<script>
export default {
name: 'DestroyablePopup',
data() {
return {
isPopupOpen: this.show, isDestroyPopup: false
}
},
watch: {
isPopupOpen(val) {
this.isPopupOpen = val
this.$emit('update:show', val)
},
show() {
if (this.show) this.isDestroyPopup = false
this.$nextTick(() => this.isPopupOpen = this.show)
}
},
props: ['show']
}
</script>
<template>
<div v-if="!isDestroyPopup" style="max-height: 90vh">
<van-popup v-model="isPopupOpen" round position="bottom" @closed="()=>{isDestroyPopup = true}">
<slot></slot>
</van-popup>
</div>
</template>

View File

@@ -1,199 +0,0 @@
<template>
<div class="popup-ques-result">
<van-popup
v-model="showResultPopup"
position="bottom"
class="result-popup"
@click-overlay = "clickOverlay('overlay')"
>
<div class="result-popup-title">
<div>
<span></span>
<span>您的风险能力测评结果</span>
</div>
<van-icon name="cross" @click="clickOverlay('icon')"/>
</div>
<div class="result-popup-content">
<div class='content'>尊敬的{{appntInfo.name}}{{appntInfo.sex=='0'?'先生':'女士'}}</div>
<div class='content'>根据您填写的评估问卷本公司对您的保险需求及财务支付水平进行了综合评估结果反馈如下</div>
<div class='content'>您适合购买的产品类型为
<span class='product-type'>{{resultRiskType}}</span>
</div>
<div class="levelList">
<div v-for="(item,idx) in productLevel" :key="idx" class="itemLevel">
{{ item }}
</div>
</div>
<div class='tips'>特别提示</div>
<div class='tips tips-content'> 本次评估结果及匹配意见供您决策参考并不代表本公司对上述产品的风险及收益作出实质性判断或者保证若您提供的信息发生任何重大变化建议您对所购买的产品及时进行重新审视以确保您的购买决定与您可承受的风险程度等实际情况一致</div>
<div class='tips tips-content'>建议您充分考察该产品的特征自行做出投保决定请您确保您的决定是独立自主真实的</div>
</div>
<!-- 未测评过底部按钮 -->
<div class="bottom-btn bg-white flex">
<van-button type="danger" square size="large" plain v-no-more-click="1000" @click="reTest" v-if="showRetest">重新测评</van-button>
<van-button type="danger" square size="large" v-no-more-click="1000" @click="toInsure">我已知晓继续投保</van-button>
</div>
<!-- 已测评过底部按钮 -->
<!-- <div class="bottom-btn bg-white flex testBtn" v-if="showHasTested">
<van-button type="danger" square size="large" plain v-no-more-click="1000" @click="goBack">上一步</van-button>
<van-button type="danger" square size="large" class="btn" v-no-more-click="1000" @click="goNext">已知晓继续投保</van-button>
<van-button type="danger" square size="large" v-no-more-click="1000" @click="reStart">重新评估</van-button>
</div> -->
</van-popup>
</div>
</template>
<script>
export default {
name: 'PopupQuesResult',
props: {
showResultPopup: {
type: Boolean,
default: false
},
showRetest: { //展示重新测评
type: Boolean,
default: false
},
appntInfo:{
type: Object,
default: () => {}
},
resultRiskType:{
type:String,
default:''
},
assessResultDescList:{
type:Array,
default: () => []
}
},
data() {
return {
//showNoTested: false
productLevel:[
'P1分类保险期限为一年期及以下的人身保险产品包括人寿保险、健康保险、意外伤害保险等',
'P2分类保险期限为一年期以上的普通型人身保险包括人寿保险、年金保险、健康保险、意外伤害保险等',
'P3分类专属商业养老保险、分红型人身保险、万能型人身保险其他符合本级特征描述的人身保险产品包括人寿保险、年金保险等',
'P4分类投资连结型人身保险、变额年金保险其他符合本级特征描述的人身保险产品包括人寿保险、年金保险等',
'P5分类符合本级特征描述的人身保险产品']
}
},
methods: {
clickOverlay(extra){
this.$emit('clickOverlayHandler',extra)
},
//1.未测评过弹窗按钮
//1.1 重新测评
reTest(){
this.$emit('reTestHandler')
},
//1.2 我已知晓,继续投保
toInsure(){
this.$emit('toInsureHandler')
},
}
}
</script>
<style lang="scss" scoped>
.popup-ques-result{
.result-popup{
border-top-left-radius: 15px;
border-top-right-radius: 15px;
.result-popup-title{
padding:10px 15px 10px 0;
display: flex;
justify-content: space-between;
align-items: center;
font-size: 18px;
font-weight: bolder;
color:#000;
border-bottom: 1px solid #ebe7e7;
div{
display:flex;
align-items: center;
span:first-child{
display:block;
height:20px;
width: 5px;
background-color: red;
border-radius: 2px;
margin-right:15px;
}
}
}
.result-popup-content{
padding:10px 10px 60px;
box-sizing:border-box;
.content{
font-size: 14px;
font-weight: bold;
color: #333;
margin-bottom: 5px;
.product-type{
color: #ee0a24;
font-weight: bold;
}
&:nth-child(2){
text-indent: 2em;
}
&:nth-child(3){
text-indent: 2em;
margin-bottom:5px;
}
}
.tips{
font-size: 12px;
color: #333;
line-height:1.5;
margin-bottom: 5px;
}
.tips-content{
text-indent: 2em;
}
.tips:nth-child(5){
border-top:1px #ebe7e7 solid;
padding:10px 0;
margin-bottom: 0;
color: #333;
font-weight: bold;
}
}
.result-popup-btn{
}
/deep/ .testBtn{
.van-button:first-child{
flex:1;
}
.van-button:nth-child(2){
flex:1.3;
border-right:1px solid #fff !important;
}
.van-button:nth-child(3){
flex:1;
}
}
.levelList{
border:1px #DA7C43 solid;
border-radius:10px;
padding:10px;
margin:15px 0;
background-color: #F5EAE4;
}
.itemLevel{
font-size: 12px;
color:#DA7C43;
margin-bottom:5px;
line-height:1.8;
}
}
}
</style>

View File

@@ -1,162 +0,0 @@
<template>
<div class="popup-ques-result">
<van-popup
v-model="showResultPopup"
position="bottom"
class="result-popup"
@click-overlay = "clickOverlay('overlay')"
>
<div class="result-popup-title">
<span>您的适当性评估结果</span>
<van-icon name="cross" @click="clickOverlay('icon')"/>
</div>
<div class="result-popup-content">
<div class='content'>尊敬的{{appntInfo.name}}{{appntInfo.sex=='0'?'先生':'女士'}}</div>
<div class='content'>根据您填写的评估问卷本公司对您的保险需求及财务支付水平进行了综合评估结果反馈如下</div>
<div class='content'>您适合购买的产品类型为
<span class='product-type'>{{resultRiskType}}</span>
</div>
<div>
<div v-for="(item,idx) in productLevel" :key="idx" class="itemLevel">
{{ item }}
</div>
</div>
<div class='tips'>特别提示</div>
<div class='tips'> 本次评估结果及匹配意见供您决策参考并不代表本公司对上述产品的风险及收益作出实质性判断或者保证若您提供的信息发生任何重大变化建议您对所购买的产品及时进行重新审视以确保您的购买决定与您可承受的风险程度等实际情况一致</div>
<div class='tips'>建议您充分考察该产品的特征自行做出投保决定请您确保您的决定是独立自主真实的</div>
</div>
<!-- 未测评过底部按钮 -->
<div class="bottom-btn bg-white flex">
<van-button type="danger" square size="large" plain v-no-more-click="1000" @click="reTest" v-if="showRetest">重新测评</van-button>
<van-button type="danger" square size="large" v-no-more-click="1000" @click="toInsure">我已知晓继续投保</van-button>
</div>
<!-- 已测评过底部按钮 -->
<!-- <div class="bottom-btn bg-white flex testBtn" v-if="showHasTested">
<van-button type="danger" square size="large" plain v-no-more-click="1000" @click="goBack">上一步</van-button>
<van-button type="danger" square size="large" class="btn" v-no-more-click="1000" @click="goNext">已知晓继续投保</van-button>
<van-button type="danger" square size="large" v-no-more-click="1000" @click="reStart">重新评估</van-button>
</div> -->
</van-popup>
</div>
</template>
<script>
export default {
name: 'PopupQuesResult',
props: {
showResultPopup: {
type: Boolean,
default: false
},
showRetest: { //展示重新测评
type: Boolean,
default: false
},
appntInfo:{
type: Object,
default: () => {}
},
resultRiskType:{
type:String,
default:''
},
assessResultDescList:{
type:Array,
default: () => []
}
},
data() {
return {
//showNoTested: false
productLevel:[
'P1分类保险期限为一年期及以下的人身保险产品包括人寿保险、健康保险、意外伤害保险等',
'P2分类保险期限为一年期以上的普通型人身保险包括人寿保险、年金保险、健康保险、意外伤害保险等',
'P3分类专属商业养老保险、分红型人身保险、万能型人身保险其他符合本级特征描述的人身保险产品包括人寿保险、年金保险等',
'P4分类投资连结型人身保险、变额年金保险其他符合本级特征描述的人身保险产品包括人寿保险、年金保险等',
'P5分类符合本级特征描述的人身保险产品']
}
},
methods: {
clickOverlay(extra){
this.$emit('clickOverlayHandler',extra)
},
//1.未测评过弹窗按钮
//1.1 重新测评
reTest(){
this.$emit('reTestHandler')
},
//1.2 我已知晓,继续投保
toInsure(){
this.$emit('toInsureHandler')
},
}
}
</script>
<style lang="scss" scoped>
.popup-ques-result{
.result-popup{
.result-popup-title{
padding:10px 10px 0;
display: flex;
justify-content: space-between;
align-items: center;
font-size: 20px;
font-weight: bolder;
color:#000;
}
.result-popup-content{
padding:10px 10px 60px;
box-sizing:border-box;
.content{
font-size: 18px;
font-weight: bold;
color: #333;
margin-bottom: 5px;
.product-type{
color: #ee0a24;
font-weight: bold;
}
}
.tips{
font-size: 14px;
color: #000;
font-weight: bold;
margin-bottom: 5px;
}
.tips:nth-child(5){
padding:10px 0;
margin-bottom: 0;
color: #000;
font-weight: bold;
}
}
.result-popup-btn{
}
/deep/ .testBtn{
.van-button:first-child{
flex:1;
}
.van-button:nth-child(2){
flex:1.3;
border-right:1px solid #fff !important;
}
.van-button:nth-child(3){
flex:1;
}
}
.itemLevel{
font-size: 12px;
color:#999;
margin-bottom:5px;
}
}
}
</style>

View File

@@ -1,6 +1,6 @@
<template>
<div class="search_box" ref="search_box">
<van-field :label="label" :class="{ 'van-cell--required': required }">
<van-field :label="label" required>
<template #input>
<input
style="width: 100%; border: none"
@@ -40,10 +40,6 @@ export default {
value: {
type: String
},
required: {
type: Boolean,
default: true
},
isAsync: {
type: Boolean,
default: false

View File

@@ -187,7 +187,7 @@ export default {
box-sizing: border-box;
content: ' ';
pointer-events: none;
right: 4.26667vw;
right: 0;
// bottom: 0;
// top: 0;
left: 4.26667vw;

View File

@@ -1,14 +1,14 @@
<template>
<div class="sex-radio">
<div class="van-cell-group ">
<div :class="{ 'van-cell--required': required }" class="van-cell van-field pv7">
<div class="van-cell van-field pv7" :class="{ 'van-cell--required': required }">
<div class="van-cell__title van-field__label">
<span>{{ label }}</span>
</div>
<van-radio-group v-model="radio" class="radio-area">
<van-radio v-for="(itemRadio, index) in radios" :key="index" :name="itemRadio.value" @click="handleChoose(itemRadio.value)">
<van-radio-group class="radio-area" v-model="radio">
<van-radio @click="handleChoose(itemRadio.value)" :name="itemRadio.value" v-for="(itemRadio, index) in radios" :key="index">
<div slot="icon"></div>
<van-button :color="color" :plain="radio != itemRadio.value" :type="type" class="ph30" round size="small">{{ itemRadio.label }}</van-button>
<van-button :color="color" class="ph30" :type="type" :plain="radio == itemRadio.value ? false : true" round size="small">{{ itemRadio.label }}</van-button>
</van-radio>
</van-radio-group>
</div>
@@ -21,7 +21,7 @@ export default {
name: 'select-radio',
props: {
value: {
type: String | Boolean,
type: String|Boolean,
default: '0'
},
label: {
@@ -57,7 +57,7 @@ export default {
handleChoose(value) {
if (this.disabled) {
return
}
}
this.$emit('update:value', value)
this.$emit('radioChange', value)
}
@@ -83,7 +83,7 @@ export default {
display: -webkit-flex;
display: flex;
justify-content: flex-start;
margin-left: -15px;
margin-left: -8px;
}
.van-cell {
align-items: center;
@@ -106,4 +106,5 @@ export default {
-webkit-transform: scaleY(0.5);
transform: scaleY(0.5);
}
</style>

View File

@@ -1,254 +0,0 @@
<template>
<div class="statisticsTable">
<div class="statisticsTable_table">
<div class="table">
<table cellspacing="0" summary cellpadding="1">
<thead>
<tr>
<th :class="{ 'th-fixed': index < 1 }" v-for="(item, index) in theads" :key="index">{{ item }}</th>
</tr>
</thead>
<tbody>
<tr v-for="(item, index) in tableData" :key="index" :ref="'th' + index" @click="(e) => double_click(index, item)">
<td class="th-fixed" @click="goLink(item)">{{ Number(index) + 1 }}</td>
<td class="timeDate" v-show="timeShow">{{ item.signDate }}</td>
<td class="timeDate" v-show="timeShow == false">{{ item.appntDate }}</td>
<td class="productName">{{ item.productName }}</td>
<td class="prem">{{ item.prem }}</td>
<td>
<span class="td-sheng">{{ item.name }}</span>
</td>
<td>{{ item.manageComName }}</td>
<td class="chakan">
<van-button size="mini" type="danger" @click="download(item)">下载贺报</van-button>
<van-button size="mini" type="info" @click="look(item.orderNo)">查看</van-button>
</td>
<!-- <td>{{ item.branchTypeName }}</td>-->
</tr>
</tbody>
</table>
</div>
</div>
<div class="pagination" v-if="total > 5">
<div type="text" @click="pageUp" :style="pageNum > 1 ? 'color:red' : ''">上一页</div>
<div style="color: red">{{ pageNum }}/{{ Math.ceil(total / pageSize) }}</div>
<div @click="pageDown" :style="pageNum < Math.ceil(total / pageSize) ? 'color:red' : ''">下一页 ></div>
<div v-if="pageNum == 1" class="shangzheBox"></div>
<div v-if="pageNum >= Math.ceil(total / pageSize)" class="xiazheBox"></div>
</div>
</div>
</template>
<script>
export default {
name: 'tableDetail',
props: {
theads: {
type: Array,
default: []
},
isLink: {
type: Boolean,
default: false
},
total: {
type: Number,
default: false
},
pageSize: {
type: Number,
default: false
},
pageNum: {
type: Number,
default: false
},
tableData: {
type: Array,
default: []
}
},
data() {
return {
timeShow: false,
}
},
watch: {
theads(newVal) {
if (newVal) {
for(let i=0;i<this.theads.length;i++) {
if(this.theads[i] == '承保时间') {
this.timeShow = true
} else if(this.theads[i] == '预收时间') {
this.timeShow = false
}
}
}
}
},
created() {
for(let i=0;i<this.theads.length;i++) {
if(this.theads[i] == '承保时间') {
this.timeShow = true
} else if(this.theads[i] == '预收时间') {
this.timeShow = false
}
}
},
methods: {
double_click(index, fn, data) {
let timestamp = 0
this.$refs['th' + index][0].addEventListener('click', () => {
const now = new Date()
if (now - timestamp <= 300) {
this.$emit('double_click', this.tableData[index])
// fn();
timestamp = 0
} else {
timestamp = now
}
})
},
pageUp() {
if (this.pageNum <= 1) {
return false
}
let page = this.pageNum - 1
this.$emit('currentChange', page)
},
pageDown() {
let end_num = Math.ceil(this.total / this.pageNum)
if (this.pageNum >= end_num) {
return false
}
let page = this.pageNum + 1
this.$emit('currentChange', page)
},
goLink(item) {
if (this.isLink) {
this.$emit('goLink', item)
}
},
// 跳转至下载贺报页面
download(data){
this.$emit('from-child', data);
},
// 查看详情 跳转至详情页面
look(num) {
this.$emit('fro-child', num);
// console.log(num);
// this.$router.push({
// path: '/policyDetails',
// query: {
// orderNo: num,
// }
// })
},
}
}
</script>
<style lang="scss" scoped>
.pagination {
display: flex;
margin-top: 10px;
margin-bottom: 10px;
justify-content: space-between;
align-items: center;
position: relative;
.shangzheBox {
position: absolute;
left: 0;
top: 0;
width: 70px;
height: 30px;
}
.xiazheBox {
position: absolute;
right: 0;
top: 0;
width: 70px;
height: 30px;
}
}
.statisticsTable_table {
height: 82.5vh;
overflow: auto;
//width: 1000px;
}
.statisticsTable_table .table {
width: 195.6vw !important;
}
.timeDate {
width: 90px !important;
}
.productName {
width: 35vw;
}
.chakan {
width: 130px;
}
.prem {
text-align: right !important;
width: 90px !important;
padding-right: 7px !important;
}
.statisticsTable th {
width: 90px;
}
table {
// width: 200vw;
}
.th-fixed {
position: sticky;
border: 1px solid #999 !important;
left: 0;
width: 35px !important;
padding: 0 5px;
}
.statisticsTable {
width: 100%;
overflow-x: hidden;
table {
border-collapse: collapse;
}
table,
th,
td {
border: 1px solid #999;
text-align: center;
font-size: 14px;
line-height: 30px;
background: #fff;
}
thead {
th {
height: 40px;
line-height: 40px;
background: #e9332e;
color: #fff;
}
}
}
.td-fixed {
// position: sticky;
width: 33px !important;
padding: 0 5px;
left: 0;
text-decoration: underline;
}
.td-sheng {
display: block;
width: 65px; /* 设置span的宽度 */
white-space: nowrap; /* 确保文本不换行 */
overflow: hidden; /* 隐藏超出span宽度的文本 */
text-overflow: ellipsis; /* 超出部分显示为省略号 */
text-align: left; /* 文本对齐方式 */
margin: 0 auto;
text-align: center;
}
</style>

View File

@@ -10,7 +10,7 @@
@click-right-icon="chooseCustomer"
:readonly="readonly"
/>
<van-popup v-model="showPicker" position="bottom">
<van-popup v-model="parentShowPicker" position="bottom">
<customer @on-choose="choose" :code="code" :name="name" :life="life" :health="health"></customer>
</van-popup>
</div>
@@ -109,7 +109,6 @@ export default {
},
choose(data) {
this.name = data.customerName
this.showPicker = false
this.$emit('on-choose', data)
},
chooseCustomer() {

File diff suppressed because it is too large Load Diff

View File

@@ -1,132 +0,0 @@
<template>
<div class="ys-float-btn" :style="{'width':itemWidth+'px','height':itemHeight+'px','left':left+'px','top':top+'px'}" ref="div" @click="onBtnClicked">
<p class="p1">{{isActive === 0 ? '关怀' : '标准'}}</p>
<p class="p2">模式</p>
</div>
</template>
<script>
export default {
name: "FloatImgBtn",
props:{
itemWidth:{
type:Number,
default:56
},
itemHeight:{
type:Number,
default:56
},
gapWidth:{
type:Number,
default:6
},
coefficientHeight:{
type:Number,
default:0.8
}
},
created(){
this.clientWidth = document.documentElement.clientWidth;
this.clientHeight = document.documentElement.clientHeight;
this.left = this.clientWidth - this.itemWidth - this.gapWidth;
this.top = 100;
},
mounted(){
this.$nextTick(()=>{
const div = this.$refs.div;
div.addEventListener("touchstart",(e)=>{
e.stopPropagation();
div.style.transition = 'none';
});
div.addEventListener("touchmove",(e)=>{
e.stopPropagation();
if (e.targetTouches.length === 1) {
let touch = event.targetTouches[0];
this.left = touch.clientX - this.itemWidth/2;
this.top = touch.clientY - this.itemHeight/2;
}
},
false
);
div.addEventListener("touchend",(e)=>{
e.stopPropagation();
div.style.transition = 'all 0.3s';
if(this.left>this.clientWidth/2){
this.left = this.clientWidth - this.itemWidth - this.gapWidth;
}else{
this.left = this.gapWidth;
}
if(this.top<=36)
{
this.top=36+this.gapWidth
}
else{
let bottom=this.clientHeight-50-this.itemHeight-this.gapWidth
console.log(bottom,this.top)
if(this.top>=bottom)
{
this.top=bottom
}
}
});
});
},
methods:{
onBtnClicked(){
if (this.isActive === 0) {
this.isActive = 1
sessionStorage.setItem('oldVersionSwitch', 1)
} else if (this.isActive === 1) {
this.isActive = 0
sessionStorage.setItem('oldVersionSwitch', 0)
}
this.$emit("onFloatBtnClicked", this.isActive);
},
},
data(){
return{
timer:null,
currentTop:0,
clientWidth:0,
clientHeight:0,
left:0,
top:0,
isActive: sessionStorage.getItem('oldVersionSwitch') ? Number(sessionStorage.getItem('oldVersionSwitch')) : 0
}
}
}
</script>
<style lang="scss" scoped>
.ys-float-btn{
background:RGBA(234, 52, 66, 0.8);
border-radius:50%;
color: #666666;
z-index: 20;
transition: all 0.3s;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
position: fixed;
bottom: 20vw;
p{
color: #fff;
font-weight: bold;
font-size: 14px;
&.p1{
margin-top: 4px;
}
&.p2{
margin-top: -6px;
}
}
}
</style>

View File

@@ -1,78 +0,0 @@
<template>
<div class="index">
<div class="navigator-item" v-for="(item, index) in navigatorItems" :key="index">
<span class="title" :class="{ active: index === current }" @click="jump(index)">{{ index + 1 }}.{{ item }}</span>
<div v-if="showArrow(index)" class="arrow">
<div class="arrow-line" :style="{ backgroundColor: index === current ? 'red' : '' }" />
<van-icon name="arrow" :class="{ active: index === current }" />
</div>
</div>
</div>
</template>
<script>
export default {
name: 'BreadcrumbNavigator',
props: {
current: {
type: Number,
default: 0
},
moveOn: {
type: Boolean,
default: false
}
},
data() {
return {
navigatorItems: ['投保人信息', '选择被保人', '生成建议书'],
routerInfos: ['proposal/appnt', 'proposal/chooseInsuredPerson']
}
},
methods: {
jump(index) {
if (index === this.current || index == 2) return
if (this.moveOn) {
let thisMyUrl = this.routerInfos[index]
if (this.$route.query.proposalOrderNo) {
thisMyUrl = this.routerInfos[index] + '?proposalOrderNo=' + this.$route.query.proposalOrderNo
}
this.$router.push({ path: '/' + thisMyUrl })
}
},
showArrow(index) {
return index + 1 != this.navigatorItems.length
}
}
}
</script>
<style lang="scss" scoped>
.index {
display: flex;
align-items: center;
justify-content: center;
.navigator-item {
display: flex;
align-items: center;
margin: 5px 2px;
.title {
font-size: 14px;
}
.active {
color: red;
}
.arrow {
display: flex;
align-items: center;
}
.arrow-line {
width: 10px;
height: 1px;
background-color: #2c3e50;
border-radius: 1px;
margin-left: 2px;
}
}
}
</style>

View File

@@ -1,35 +1,29 @@
<template>
<div>
<div class="own_content">
<ul class="index-bar">
<li v-for="(item, index) in pageTitle" v-if="item.show" :id="item.tabClass" :key="index" :class="item.tabClass" @click="changePage(item.pageNo)">
<!-- 选中 -->
<div v-if="item.tabClass" class="flex justify-content-fs align-items-c">
<div class="flex flex-direction-colunm align-items-c">
<van-image :src="item.imgCheckedUrl" class="image_head" />
<span class="fs12 mt12">{{ item.pageItem }}</span>
</div>
<van-image v-if="index !== 10" :src="doneUrl" class="image_done" />
<div class="own_content">
<ul class="index-bar">
<li @click="changePage(item.pageNo)" v-for="(item, index) in pageTitle" :key="index" :class="item.tabClass" :id="item.tabClass" v-if="item.show">
<!-- 选中 -->
<div v-if="item.tabClass" class="flex justify-content-fs align-items-c">
<div class="flex flex-direction-colunm align-items-c">
<van-image :src="item.imgCheckedUrl" class="image_head" />
<span class="fs12 mt12">{{ item.pageItem }}</span>
</div>
<div v-if="!item.tabClass" class="flex justify-content-fs align-items-c">
<div class="flex flex-direction-colunm align-items-c">
<van-image :src="item.imgNoCheckedUrl" class="image_head" />
<span class="fs12 mt12" style="color: #999999">{{ item.pageItem }}</span>
</div>
<van-image v-if="index !== 10" :src="doneNurl" class="image_done" />
<van-image :src="doneUrl" v-if="index !== 10" class="image_done" />
</div>
<div v-if="!item.tabClass" class="flex justify-content-fs align-items-c">
<div class="flex flex-direction-colunm align-items-c">
<van-image :src="item.imgNoCheckedUrl" class="image_head" />
<span class="fs12 mt12" style="color: #999999">{{ item.pageItem }}</span>
</div>
</li>
</ul>
</div>
<p v-if="branchType == '13'" style="margin-top: 10px;color: red;background-color: #ffdddc;padding: 5px 10px;">
提示您目前正在投保的项目为{{ projectName }}
</p>
<van-image :src="doneNurl" v-if="index !== 10" class="image_done" />
</div>
</li>
</ul>
</div>
</template>
<script>
import { Icon, Image } from 'vant'
import { getOrderDetail1 } from '@/api/ebiz/sale/sale'
import { gbcProjectDetail } from '@/api/GBC/GBC'
export default {
name: 'IndexBar',
props: {
@@ -57,8 +51,6 @@ export default {
},
data() {
return {
branchType: '',
projectName: '',
thisShow: false,
doneUrl: this.$assetsUrl + 'images/kmh/done.png',
doneNurl: this.$assetsUrl + 'images/kmh/done_n.png',
@@ -68,7 +60,7 @@ export default {
pageItem: '投保人信息',
urlStr: '/sale/insuredInfo',
tabClass: '',
show: true,
show:true,
imgCheckedUrl: this.$assetsUrl + 'images/kmh/tbrxx.png',
imgNoCheckedUrl: this.$assetsUrl + 'images/kmh/tbrxx_n.png'
},
@@ -77,7 +69,7 @@ export default {
pageItem: '被保险人信息',
urlStr: '/sale/insuredPerson',
tabClass: '',
show: true,
show:true,
imgCheckedUrl: this.$assetsUrl + 'images/kmh/bbrxx.png',
imgNoCheckedUrl: this.$assetsUrl + 'images/kmh/bbrxx_n.png'
},
@@ -86,7 +78,7 @@ export default {
pageItem: '选择产品',
urlStr: '/common/selectedProduct',
tabClass: '',
show: true,
show:true,
imgCheckedUrl: this.$assetsUrl + 'images/kmh/xzcp.png',
imgNoCheckedUrl: this.$assetsUrl + 'images/kmh/xzcp_n.png'
},
@@ -95,7 +87,7 @@ export default {
pageItem: '受益人信息',
urlStr: '/sale/beneficiary',
tabClass: '',
show: true,
show:true,
imgCheckedUrl: this.$assetsUrl + 'images/kmh/syrxx.png',
imgNoCheckedUrl: this.$assetsUrl + 'images/kmh/syrxx_n.png'
},
@@ -104,7 +96,7 @@ export default {
pageItem: '告知信息',
urlStr: '/sale/notifyingMessage',
tabClass: '',
show: true,
show:true,
imgCheckedUrl: this.$assetsUrl + 'images/kmh/gzxx.png',
imgNoCheckedUrl: this.$assetsUrl + 'images/kmh/gzxx_n.png'
},
@@ -113,7 +105,7 @@ export default {
pageItem: '风险测评',
urlStr: '/sale/answerPage',
tabClass: '',
show: false,
show:false,
imgCheckedUrl: this.$assetsUrl + 'images/kmh/fx1.png',
imgNoCheckedUrl: this.$assetsUrl + 'images/kmh/fx2.png'
},
@@ -122,7 +114,7 @@ export default {
pageItem: '风险测评结果',
urlStr: '/sale/answerSuccess',
tabClass: '',
show: false,
show:false,
imgCheckedUrl: this.$assetsUrl + 'images/kmh/fxjg1.png',
imgNoCheckedUrl: this.$assetsUrl + 'images/kmh/fxjg2.png'
},
@@ -131,7 +123,7 @@ export default {
pageItem: '风险告知',
urlStr: '/sale/universalRiskNotifyingMessage',
tabClass: '',
show: false,
show:false,
imgCheckedUrl: this.$assetsUrl + 'images/kmh/zhxx.png',
imgNoCheckedUrl: this.$assetsUrl + 'images/kmh/zhxx_n.png'
},
@@ -140,7 +132,7 @@ export default {
pageItem: '账户信息',
urlStr: '/sale/accountInformation',
tabClass: '',
show: true,
show:true,
imgCheckedUrl: this.$assetsUrl + 'images/kmh/zhxx.png',
imgNoCheckedUrl: this.$assetsUrl + 'images/kmh/zhxx_n.png'
},
@@ -149,7 +141,7 @@ export default {
pageItem: '附件上传',
urlStr: '/sale/attachmentManagement',
tabClass: '',
show: true,
show:true,
imgCheckedUrl: this.$assetsUrl + 'images/kmh/fjsc.png',
imgNoCheckedUrl: this.$assetsUrl + 'images/kmh/fjsc_n.png'
},
@@ -158,7 +150,7 @@ export default {
pageItem: '签名确认',
urlStr: '/sale/signatureConfirmation',
tabClass: '',
show: true,
show:true,
imgCheckedUrl: this.$assetsUrl + 'images/kmh/qmqr.png',
imgNoCheckedUrl: this.$assetsUrl + 'images/kmh/qmqr_n.png'
}
@@ -167,69 +159,46 @@ export default {
salePageFlag: Number(localStorage.salePageFlag)
}
},
async mounted() {
mounted() {
let that = this
let data = {
orderNo: that.$route.query.orderNo
}
getOrderDetail1(data).then(res => {
if (res.result == '0') {
if (res.orderDTO.universalRiskNotifyDTO) {
if (res.orderDTO.universalRiskNotifyDTO.isUniversalRiskNotifyShowPoint == 1) {
this.pageTitle.forEach(item => {
if (item.pageNo == 7.1) {
if(res.orderDTO.universalRiskNotifyDTO){
if(res.orderDTO.universalRiskNotifyDTO.isUniversalRiskNotifyShowPoint == 1){
this.pageTitle.forEach(item=>{
if(item.pageNo == 7.1){
item.show = true
}
})
}
}
// if (res.orderDTO.riskEvaluationDTO) {
// if (res.orderDTO.riskEvaluationDTO.isShowEvaluationPoint == 1) {
// this.pageTitle.forEach(item => {
// if (item.pageNo == 6) {
// item.show = true
// }
// if (item.pageNo == 7) {
// item.show = true
// }
// })
// }
// }
if (this.$route.query.orderNo) {
this.projectName = res.orderDTO.ebizOrderGbcRelDTO.projectName
if(res.orderDTO.riskEvaluationDTO){
if(res.orderDTO.riskEvaluationDTO.isShowEvaluationPoint == 1){
this.pageTitle.forEach(item=>{
if(item.pageNo == 6){
item.show = true
}
if(item.pageNo == 7){
item.show = true
}
})
}
}
}
})
this.selectTab()
if (window.localStorage.getItem('branchType') == '13') {
this.branchType = '13'
if (!this.$route.query.orderNo) {
that.gbcProjectDetail()
}
}
},
methods: {
gbcProjectDetail() {
let params = {}
gbcProjectDetail(params).then(res => {
if (res.result == '0') {
this.projectName = res.content.projectName
} else {
this.$toast(res.resultMessage)
}
})
},
changePage(pageIndex) {
let url = ''
//由 localStorage.salePageFlag 来控制是否可跳到指定页面
if (localStorage.salePageFlag == '-10' && pageIndex != 10) {
this.$toast('已到达签名确认流程,不可以回到前面的流程')
}
if (Number(localStorage.salePageFlag) < Number(pageIndex)) {
if (process.env.NODE_ENV !== 'development') {
return
}
}
if (Number(localStorage.salePageFlag) < Number(pageIndex)) return
switch (pageIndex) {
case 1: //跳到投保人页面
url = `/sale/insuredInfo?edit=1&salePageFlag=${pageIndex}&orderNo=` + this.$route.query.orderNo
@@ -314,7 +283,7 @@ export default {
this.$el.querySelector('#active').scrollIntoView(true)
})
}
}
},
}
</script>
<style lang="scss" scoped>

View File

@@ -127,7 +127,7 @@ export default {
num++
await this.getRecognitionUrl(val, num)
if (this.requestId && this.bizToken) {
await this.getRecognitionResult(this.requestId, this.bizToken, JSON.parse(localStorage['orderNo']))
await this.getRecognitionResult(this.requestId, this.bizToken)
} else {
return
}
@@ -155,9 +155,9 @@ export default {
)
})
},
getRecognitionResult(requestId, bizToken, orderNo) {
getRecognitionResult(requestId, bizToken) {
return new Promise((resolve, reject) => {
getRecognitionResult({ requestId, bizToken, orderNo }).then(
getRecognitionResult({ requestId, bizToken }).then(
res => {
console.log('getRecognitionResult', res)
if (res.result == '0') {

View File

@@ -6,8 +6,6 @@
* @Description:
* @FilePath: \ebiz-h5\src\config\index.js
*/
import YB_agentSign from "../router/ebiz/YB_agentSign";
/**
* 配置编译环境和线上环境之间的切换
* 默认三套环境,可以增添
@@ -15,7 +13,7 @@ import YB_agentSign from "../router/ebiz/YB_agentSign";
*
*/
let apiDomain, imgDomain, assetsUrl, mainUrl, payUrl, zssqUrl, REQ_PWD, CACHE_ENCRYP, API_VERSION, YB_agenturl, assetsUpUrl, YB_APP // 保融支付的收银台服务地址
let apiDomain, imgDomain, assetsUrl, mainUrl, payUrl, zssqUrl, REQ_PWD, CACHE_ENCRYP, API_VERSION, assetsUpUrl, YB_APP // 保融支付的收银台服务地址
function getSearchString (key) {
var str = window.location.href.split('?')[1]
str = str.substring(1, str.length) // 获取URL中?之后的字符(去掉第一位的问号)
@@ -29,29 +27,29 @@ function getSearchString (key) {
}
return obj[key]
}
let apiVersion = 'v1'
// var ua = window.navigator.userAgent.toLowerCase()
// //通过正则表达式匹配ua中是否含有MicroMessenger字符串, 在微信
// if (localStorage.getItem('apiVersion')) {
// apiVersion = localStorage.getItem('apiVersion')
// } else {
// if (ua.match(/MicroMessenger/i) == 'micromessenger') {
// //report/reportList数据报表页面在浏览器可以打开了但在微信或企业微信中打开不了,接口请求不需要token
// if (window.location.href.indexOf('apiVersion') > 0) {
// apiVersion = getSearchString('apiVersion') == 'V3' ? 'v3' : 'v2';//url中apiVersion没有时为v2
// } else {
// apiVersion = 'v3'
// }
// } else {
// // 在app
// if (navigator.userAgent.indexOf('JZG_') > 0) {
// apiVersion = navigator.userAgent.split('JZG_')[1].split('/')[0].split('_')[1] == 'V3' ? 'v3' : 'v2'
// }
// }
// window.localStorage.setItem('apiVersion', apiVersion)
// }
// // 可以多个接口域名,按需添加
// console.log('环境:', process.env.VUE_APP_FLAG)
let apiVersion = 'v2'
var ua = window.navigator.userAgent.toLowerCase()
//通过正则表达式匹配ua中是否含有MicroMessenger字符串, 在微信
if (localStorage.getItem('apiVersion')) {
apiVersion = localStorage.getItem('apiVersion')
} else {
if (ua.match(/MicroMessenger/i) == 'micromessenger') {
//report/reportList数据报表页面在浏览器可以打开了但在微信或企业微信中打开不了,接口请求不需要token
if (window.location.href.indexOf('apiVersion') > 0) {
apiVersion = getSearchString('apiVersion') == 'V3' ? 'v3' : 'v2';//url中apiVersion没有时为v2
} else {
apiVersion = 'v3'
}
} else {
// 在app
if (navigator.userAgent.indexOf('JZG_') > 0) {
apiVersion = navigator.userAgent.split('JZG_')[1].split('/')[0].split('_')[1] == 'V3' ? 'v3' : 'v2'
}
}
window.localStorage.setItem('apiVersion', apiVersion)
}
// 可以多个接口域名,按需添加
console.log('环境:', process.env.VUE_APP_FLAG)
switch (process.env.VUE_APP_FLAG) {
case 'dev':
apiDomain = 'https://iagentsales-test2.e-guofu.com:5200/api/' + apiVersion // 国富api ///api/v1
@@ -70,7 +68,6 @@ switch (process.env.VUE_APP_FLAG) {
// YB_APP = 'http://10.10.100.98:7001'
// YB_APP = 'https://iagentsales-test2.e-guofu.com:5200/api/v1'
YB_APP = 'https://iagentsales-test2.e-guofu.com:5200/api/' + apiVersion
YB_agenturl ='https://iagentsales-test2.e-guofu.com:443'
API_VERSION = apiVersion
break
case 'uat':
@@ -94,7 +91,6 @@ switch (process.env.VUE_APP_FLAG) {
// 上传影像地址 挂载共享盘 地址
assetsUpUrl = 'https://iagentsales.e-guofu.com'
mainUrl = 'https://iagentsales.e-guofu.com'
YB_agenturl = 'https://iagentsales.e-guofu.com'
payUrl = 'https://uns3.e-guofu.com/s3-modules-gateway/embed/gateway.action'
zssqUrl = ''
REQ_PWD = '41424344454631323334353637383930'
@@ -134,7 +130,6 @@ export default {
assetsUpUrl,
mainUrl,
payUrl,
YB_agenturl,
zssqUrl, //知识社区地址
REQ_PWD, //报文加密密码
CACHE_ENCRYP, //缓存加密密码

View File

@@ -38,16 +38,8 @@ import {
PullRefresh,
List,
Image as VanImage,
Sticky,
Radio,
RadioGroup,
Checkbox,
CheckboxGroup,
Collapse,
CollapseItem,
Sticky
} from 'vant'
;[Collapse, CollapseItem, RadioGroup, Radio].forEach(component => Vue.use(component))
Vue.use(Cell)
Vue.use(CellGroup)
Vue.use(DatetimePicker)
@@ -73,13 +65,7 @@ Vue.use(PullRefresh)
Vue.use(List)
Vue.use(VanImage)
Vue.use(Sticky)
Vue.use(Checkbox)
Vue.use(CheckboxGroup)
Vue.use(animated)
Vue.use(Radio)
Vue.use(RadioGroup)
Vue.use(Checkbox)
Vue.use(CheckboxGroup)
Vue.prototype.$assetsUrl = config.assetsUrl
Vue.prototype.$assetsUpUrl = config.assetsUpUrl
@@ -89,6 +75,7 @@ Vue.prototype.$MD5 = md5
Vue.prototype.$CryptoJs = cryptoJs
Vue.prototype.$CacheUtils = cacheUtils
// 全局 防重复点击
Vue.directive('no-more-click', noMoreClick)
//解决ios移动端input调软键盘问题
@@ -144,37 +131,22 @@ Object.keys(Filters).forEach(function(k) {
//权限控制
import { permission } from '@/assets/js/utils/permission'
import { newProducts } from '@/api/ebiz/sale/sale'
permission()
//ios点击300毫秒时延
FastClick.attach(document.body)
// 监听input弹窗滚动到可视区域
window.addEventListener('resize', function() {
if (document.activeElement.tagName === 'INPUT' || document.activeElement.tagName === 'TEXTAREA') {
window.setTimeout(function() {
window.addEventListener('resize', function () {
if (document.activeElement.tagName === 'INPUT' || document.activeElement.tagName === 'TEXTAREA') {
window.setTimeout(function () {
document.activeElement.scrollIntoViewIfNeeded()
}, 0)
}
})
Vue.config.productionTip = false
export const vm = new Vue({
new Vue({
router,
store,
render: h => h(App)
})
fetchNewSaleProducts()
function fetchNewSaleProducts() {
newProducts()
.then(({ content, result }) => {
if (result === '0') localStorage.setItem('newProducts', JSON.stringify(content))
else return new Error('获取最新产品列表信息错误')
if (window.fetchNewProductstimer) clearTimeout(window.fetchNewProductstimer)
else vm.$mount('#app')
window.fetchNewProductstimer = setTimeout(fetchNewSaleProducts, 1000000)
})
.catch(() => {})
}
}).$mount('#app')

View File

@@ -1,64 +0,0 @@
//数据报表 定义相关组件
const GBC_home = () => import('@/views/GBC/home')
const GBC_projectList = () => import('@/views/GBC/projectList')
const GBC_projectDetail = () => import('@/views/GBC/projectDetail')
const GBC_customerDetail = () => import('@/views/GBC/customerDetail')
const GBC_InsuredInfo = () => import('@/views/GBC/InsuredInfo')
const GBC_submitResult = () => import('@/views/GBC/submitResult')
export default [
{
path: '/GBC/home',
name: 'GBC_home',
component: GBC_home,
meta: {
title: '首页',
index: 1
}
},
{
path: '/GBC/projectList',
name: 'GBC_projectList',
component: GBC_projectList,
meta: {
title: '项目列表',
index: 1
}
},
{
path: '/GBC/projectDetail',
name: 'GBC_projectDetail',
component: GBC_projectDetail,
meta: {
title: '项目详情',
index: 1
}
},
{
path: '/GBC/customerDetail',
name: 'GBC_customerDetail',
component: GBC_customerDetail,
meta: {
title: '编辑客户信息',
index: 1
}
},
{
path: '/GBC/InsuredInfo',
name: 'GBC_InsuredInfo',
component: GBC_InsuredInfo,
meta: {
title: '信息录入',
index: 1
}
},
{
path: '/GBC/submitResult',
name: 'GBC_submitResult',
component: GBC_submitResult,
meta: {
title: '提交结果',
index: 1
}
},
]

View File

@@ -1,22 +0,0 @@
//电子投保 定义相关组件
const step1 = () => import('@/views/ebiz/YB_agentSign/step1')
const step2 = () => import('@/views/ebiz/YB_agentSign/step2')
let riskName = localStorage.riskName
export default [
{
path: '/YB_agentSign/step1',
name: 'step1',
component: step1,
meta: {
title: '银保代理人电子化合同签署'
}
},
{
path: '/YB_agentSign/step2',
name: 'step2',
component: step2,
meta: {
title: '银保代理人电子化合同签署'
}
},
]

View File

@@ -229,7 +229,7 @@ export default [
},
{
path: '/agentEenter/ShowPDF',
name: 'agentEenterShowPDF',
name: 'ShowPDF',
component: ShowPDF,
meta: {
title: '个险销售人员代理合同',

View File

@@ -1,32 +1,14 @@
const billingDetail = () => import('@/views/ebiz/billingDetail/billingDetail')
const generateImg = () => import('@/views/ebiz/generateImg/generateImg')
const policyDetails = () => import('@/views/ebiz/billingDetail/policyDetails')
export default [
{
path: '/billingDetail',
name: 'billingDetail',
component: billingDetail,
meta: {
title: '出单详情',
index: 1
{
path: '/billingDetail',
name: 'billingDetail',
component: billingDetail,
meta: {
title: '出单详情',
index: 1
}
}
},
{
path: '/generateImg',
name: 'generateImg',
component: generateImg,
meta: {
title: '业绩贺报'
}
},
{
path: '/policyDetails',
name: 'policyDetails',
component: policyDetails,
meta: {
title: '保单详情',
}
},
]
]

View File

@@ -57,7 +57,7 @@ export default [
},
{
path: '/cardList/payResult',
name: 'cardListPayResult',
name: 'payResult',
component: payResult,
meta: {
title: '支付结果',
@@ -84,7 +84,7 @@ export default [
},
{
path: '/cardList/ShowPDF',
name: 'cardListShowPDF',
name: 'ShowPDF',
component: ShowPDF,
meta: {
title: '',
@@ -111,7 +111,7 @@ export default [
},
{
path: '/cardList/SignatureConfirmation',
name: 'cardListSignatureConfirmation',
name: 'SignatureConfirmation',
component: SignatureConfirmation,
meta: {
title: '阅读确认',
@@ -120,7 +120,7 @@ export default [
},
{
path: '/cardList/Result',
name: 'cardListResult',
name: 'Result',
component: Result,
meta: {
title: '核保结果',

View File

@@ -93,7 +93,7 @@ export default [
},
{
path: '/claims/insuredInfo',
name: 'claimsInsuredInfo',
name: 'insuredInfo',
component: insuredInfo,
meta: {
title: '被保人信息',
@@ -120,7 +120,7 @@ export default [
},
{
path: '/claims/signatureConfirmation',
name: 'claimsSignatureConfirmation',
name: 'signatureConfirmation',
component: signatureConfirmation,
meta: {
title: '签字确认',

View File

@@ -5,9 +5,6 @@ const addRiskList = () => import('@/views/ebiz/common/AddRiskList')
const calculatePremium = () => import('@/views/ebiz/common/CalculatePremium')
const defalut = () => import('@/views/ebiz/common/Defalut')
const companyIntroduce = () => import('@/views/ebiz/common/CompanyIntroduce')
const evaluateResult = () => import('@/views/ebiz/common/EvaluateResult')
const productEvaResult = () => import('@/views/ebiz/common/productEvaResult')
export default [
{
@@ -69,23 +66,5 @@ export default [
title: '关于国富',
index: 1
}
},
{
path: '/common/evaluateResult',
name: 'EvaluateResult',
component: evaluateResult,
meta: {
title: '评估结果',
index: 1
}
},
{
path: '/common/productEvaResult',
name: 'productEvaResult',
component: productEvaResult,
meta: {
title: '评估结果',
index: 1
}
}
}
]

View File

@@ -50,7 +50,7 @@ export default [
},
{
path: '/eqiVisit/historyDetail/:id',
name: 'VisitHistoryWithID',
name: 'VisitHistory',
component: HistoryDetail,
props: true,
meta: {

View File

@@ -20,10 +20,10 @@ const spreadParams = function(route) {
export default [
{
path: '/goodStart/performanceReport',
name: 'performanceReport',
name: 'Prefecture',
component: PerformanceReport,
meta: {
title: '旺季业绩查询'
title: '开门红业绩查询'
}
},
{
@@ -31,7 +31,7 @@ export default [
name: 'Prefecture',
component: Prefecture,
meta: {
title: '旺季专区'
title: '开门红专区'
}
},
{
@@ -53,7 +53,7 @@ export default [
name: 'GoodStartScheme',
component: GoodStartScheme,
meta: {
title: '旺季方案'
title: '开门红方案'
}
},
{
@@ -61,7 +61,7 @@ export default [
name: 'businessMap',
component: businessMap,
meta: {
title: '旺季业务地图'
title: '开门红业务地图'
}
},
{
@@ -77,7 +77,7 @@ export default [
name: 'newsPaper',
component: newsPaper,
meta: {
title: '旺季实时贺报'
title: '开门红实时贺报'
}
}
]

View File

@@ -1,23 +0,0 @@
//健康险续保 定义相关组件
const healthInsuranceRenewalList = () => import('@/views/ebiz/healthInsuranceRenewal/list')
const healthInsuranceRenewalDetail = () => import('@/views/ebiz/healthInsuranceRenewal/detail')
export default [
{
path: '/healthInsuranceRenewal/list',
name: 'healthInsuranceRenewalList',
component: healthInsuranceRenewalList,
meta: {
title: '健康险续保清单',
index: 1
}
},
{
path: '/healthInsuranceRenewal/detail',
name: 'healthInsuranceRenewalDetail',
component: healthInsuranceRenewalDetail,
meta: {
title: '保单详情',
index: 1
}
}
]

View File

@@ -2,7 +2,6 @@
import proposal from './proposal'
import question from './question'
import sale from './sale'
import YB_agentSign from './YB_agentSign'
import customer from './customer'
import my from './my'
import serve from './serve'
@@ -49,19 +48,9 @@ import allowance from './allowance'
import cooperativeUnit from './cooperativeUnit'
// YB_APP
import YB_APP from '../YB_APP/index'
// GBC
import GBC from '../GBC/index'
//健康险续保
import healthInsuranceRenewal from './healthInsuranceRenewal'
// // 电子投保流程优化
import saleFlowImprove from './saleFlowImprove'
// // 产品流程优化
import {improveProduct as productFlowImprove} from './productFlowImprove'
export default [
...proposal,
...sale,
...YB_agentSign,
...customer,
...my,
...serve,
@@ -95,9 +84,5 @@ export default [
...laurelClub,
...allowance,
...cooperativeUnit,
...YB_APP,
...GBC,
...healthInsuranceRenewal,
...saleFlowImprove,
...productFlowImprove
...YB_APP
] //根据需要进行删减

View File

@@ -83,7 +83,7 @@ export default [
{
// 签名确认
path: '/insureAgain/SignatureConfirmation',
name: 'insureAgainSignatureConfirmation',
name: 'SignatureConfirmation',
component: SignatureConfirmation,
meta: {
title: '签名确认'
@@ -110,7 +110,7 @@ export default [
{
// 支付失败
path: '/insureAgain/payResultFail',
name: 'insureAgainPayResultFail',
name: 'payResultFail',
component: payResultFail,
meta: {
title: '支付失败'
@@ -174,7 +174,7 @@ export default [
},
{
path: '/insureAgain/Result',
name: 'insureAgainResult',
name: 'Result',
component: Result,
meta: {
title: '核保结果'

View File

@@ -244,7 +244,7 @@ export default [
},
{
path: '/preserve/wt/imageUpload',
name: 'WtImageUpload',
name: 'CtImageUpload',
component: WtImageUpload,
meta: {
title: '影像资料上传',

View File

@@ -18,26 +18,6 @@ export default [
path: '/product/productDetail/:productDetailCode',
name: 'productDetail',
component: productDetail,
async beforeEnter(to, from, next) {
const newPrd = localStorage.getItem('newProducts')
if (newPrd) {
try {
/**@type Array<string>*/
const newProducts = JSON.parse(newPrd)
if (newProducts.includes(to.params.productDetailCode)) {
next({
name: 'fiProductDetail',
params: {
productDetailCode: to.params.productDetailCode
}
})
}
} catch (e) {
console.error('处理新产品路由过程中出现错误\n', e)
}
}
next()
},
meta: {
title: '产品详情',
index: 2

View File

@@ -1,43 +0,0 @@
//产品列表 定义相关组件
const productDocument = () => import('@/views/ebiz/product/ProductDocument')
const homeProduct = () => import('@/views/ebiz/product/HomeProduct')
/**@type {import("vue-router").RouteRecord}*/
export const improveProduct = [
{
path: '/flow-improve/product/productList',
name: 'fiProductList',
component: () =>import('@/views/ebiz/productFlowImprove/ProductList.vue'),
meta: {
title: '产品列表',
index: 1
}
},
{
path: '/flow-improve/product/productDetail/:productDetailCode',
name: 'fiProductDetail',
component: () => import('@/views/ebiz/productFlowImprove/ProductDetail.vue'),
meta: {
title: '产品详情',
index: 2
}
},
{
path: '/flow-improve/product/productDocument',
name: 'fiProductDocument',
component: productDocument,
meta: {
title: '产品资料',
index: 3
}
},
{
path: '/flow-improve/product/homeProduct',
name: 'fiHomeProduct',
component: homeProduct,
meta: {
title: '首页产品',
index: 4
}
}
]

View File

@@ -21,7 +21,7 @@ export default [
},
{
path: '/questions/result/:result',
name: 'questionsResult',
name: 'result',
component: g('Result'),
meta: {
title: '提交结果',

View File

@@ -18,7 +18,7 @@ export default [
},
{
path: '/renewalManage/customerList',
name: 'renewalCustomerList',
name: 'customerList',
component: customerList,
meta: {
title: '客户清单',
@@ -27,7 +27,7 @@ export default [
},
{
path: '/renewalManage/policyList',
name: 'renewalPolicyList',
name: 'policyList',
component: policyList,
meta: {
title: '保单列表',

View File

@@ -1,11 +1,13 @@
//电子投保 定义相关组件
const list = () => import('@/views/ebiz/sale/List')
const insuredPerson = () => import('@/views/ebiz/sale/InsuredPerson')
const insuredInfo = () => import('@/views/ebiz/sale/InsuredInfo.vue')
const insuredInfo = () => import('@/views/ebiz/sale/InsuredInfo')
const result = () => import('@/views/ebiz/sale/Result')
const beneficiary = () => import('@/views/ebiz/sale/Beneficiary')
const attachmentManagement = () => import('@/views/ebiz/sale/AttachmentManagement')
const addBeneficiaryInfo = () => import('@/views/ebiz/sale/AddBeneficiaryInfo')
const signatureConfirmation = () => import('@/views/ebiz/sale/SignatureConfirmation')
const notifyingMessage = () => import('@/views/ebiz/sale/NotifyingMessage')
const universalRiskNotifyingMessage = () => import('@/views/ebiz/sale/universalRiskNotifyingMessage')
@@ -13,7 +15,6 @@ const answerPage = () => import('@/views/ebiz/sale/answerPage')
const answerSuccess = () => import('@/views/ebiz/sale/answerSuccess')
const accountInformation = () => import('@/views/ebiz/sale/AccountInformation')
const insuranceInformation = () => import('@/views/ebiz/sale/InsuranceInformation')
const insuranceInformation_0081 = () => import('@/views/ebiz/sale/InsuranceInformation_0081')
const insuranceClauses = () => import('@/views/ebiz/sale/insuranceClauses')
const insuranceTip = () => import('@/views/ebiz/sale/InsuranceTip')
const universalRiskNotifyingMessageTip = () => import('@/views/ebiz/sale/universalRiskNotifyingMessageTip')
@@ -35,14 +36,8 @@ const PayResultFail = () => import('@/views/ebiz/sale/PayResultFail')
const apointValidDoc = () => import('@/views/ebiz/sale/apointValidDoc')
const shortPeriodProduct = () => import('@/views/ebiz/sale/shortPeriodProduct')
const commitmentSelfProtect = () => import('@/views/ebiz/sale/commitmentSelfProtect')
const readDocuments = () => import('@/views/ebiz/sale/readDocuments')
const signDocuments = () => import('@/views/ebiz/sale/signDocuments')
const questionEvaluate = () => import('@/views/ebiz/sale/questionEvaluate')
const productEvaluate = () => import('@/views/ebiz/sale/productEvaluate')
let riskName = localStorage.riskName
/**@type {import("vue-router").RouteRecord[]} */
console.log('sale/riskName==', riskName)
export default [
{
path: '/sale/list',
@@ -81,7 +76,7 @@ export default [
},
{
path: '/sale/result',
name: 'saleResult',
name: 'result',
component: result,
meta: {
title: '核保结果',
@@ -115,7 +110,7 @@ export default [
},
{
path: '/sale/signatureConfirmation',
name: 'saleSignatureConfirmation',
name: 'signatureConfirmation',
component: signatureConfirmation,
meta: {
title: '签名确认'
@@ -169,14 +164,6 @@ export default [
title: '投保须知'
}
},
{
path: '/sale/insuranceInformation_0081',
name: 'insuranceInformation_0081',
component: insuranceInformation_0081,
meta: {
title: '投保须知'
}
},
{
path: '/sale/insuranceClauses',
name: 'insuranceClauses',
@@ -332,37 +319,5 @@ export default [
meta: {
title: '国富人寿投保风险承受能力测评表'
}
},
{
path: '/sale/readDocuments',
name: 'readDocuments',
component: readDocuments,
meta: {
title: '阅读文件'
}
},
{
path: '/sale/signDocuments',
name: 'signDocuments',
component: signDocuments,
meta: {
title: '签名页面'
}
},
{
path: '/sale/questionEvaluate',
name: 'questionEvaluate',
component: questionEvaluate,
meta: {
title: '保险产品适当性评估问卷'
}
},
{
path: '/sale/productEvaluate',
name: 'productEvaluate',
component: productEvaluate,
meta: {
title: '保险产品适当性评估问卷'
}
}
}
]

View File

@@ -1,372 +0,0 @@
//电子投保 定义相关组件
const list = () => import('@/views/ebiz/sale/List')
const insuredPerson = () => import('@/views/ebiz/sale/InsuredPerson')
const insuredInfo = () => import('@/views/ebiz/sale/InsuredInfo.vue')
const result = () => import('@/views/ebiz/sale/Result')
const beneficiary = () => import('@/views/ebiz/sale/Beneficiary')
const attachmentManagement = () => import('@/views/ebiz/sale/AttachmentManagement')
const addBeneficiaryInfo = () => import('@/views/ebiz/sale/AddBeneficiaryInfo')
const notifyingMessage = () => import('@/views/ebiz/sale/NotifyingMessage')
const universalRiskNotifyingMessage = () => import('@/views/ebiz/sale/universalRiskNotifyingMessage')
const answerPage = () => import('@/views/ebiz/sale/answerPage')
const answerSuccess = () => import('@/views/ebiz/sale/answerSuccess')
const accountInformation = () => import('@/views/ebiz/sale/AccountInformation')
const insuranceInformation = () => import('@/views/ebiz/sale/InsuranceInformation')
const insuranceInformation_0081 = () => import('@/views/ebiz/sale/InsuranceInformation_0081')
const insuranceClauses = () => import('@/views/ebiz/sale/insuranceClauses')
const insuranceTip = () => import('@/views/ebiz/sale/InsuranceTip')
const universalRiskNotifyingMessageTip = () => import('@/views/ebiz/sale/universalRiskNotifyingMessageTip')
const InsuranceRiskReminder = () => import('@/views/ebiz/sale/InsuranceRiskReminder')
const signatureOfElectronic = () => import('@/views/ebiz/sale/SignatureOfElectronic')
const PersonalInformation = () => import('@/views/ebiz/sale/PersonalInformation')
const AnswerTip = () => import('@/views/ebiz/sale/AnswerTip')
const payResult = () => import('@/views/ebiz/sale/PayResult')
const cardScan = () => import('@/views/ebiz/sale/CardScan')
const identitycardScan = () => import('@/views/ebiz/sale/identityCardScan')
const payMent = () => import('@/views/ebiz/sale/PayMent')
const backShow = () => import('@/views/ebiz/sale/BackShow')
const Test = () => import('@/views/ebiz/sale/test')
const detail = () => import('@/views/ebiz/sale/Detail')
const productTip = () => import('@/views/ebiz/sale/productTip')
const avoidDutyTip = () => import('@/views/ebiz/sale/AvoidDutyTip')
const doubleRecordTip = () => import('@/views/ebiz/sale/DoubleRecordTip')
const PayResultFail = () => import('@/views/ebiz/sale/PayResultFail')
const apointValidDoc = () => import('@/views/ebiz/sale/apointValidDoc')
const shortPeriodProduct = () => import('@/views/ebiz/sale/shortPeriodProduct')
const commitmentSelfProtect = () => import('@/views/ebiz/sale/commitmentSelfProtect')
const insureNotifyReplenishImage = () => import('@/views/ebiz/saleFlowProImprove/insureNotifyReplenishImage')
const signatureConfirmation = () => import('@/views/ebiz/saleFlowProImprove/SignatureConfirmation')
const readDocuments = () => import('@/views/ebiz/saleFlowProImprove/readDocuments')
const signDocuments = () => import('@/views/ebiz/saleFlowProImprove/signDocuments')
let riskName = localStorage.riskName
// console.log('sale/riskName==', riskName)
/**@type {import("vue-router").RouteRecord[]} */
export default [
{
path: '/flow-improve/sale/insuranceApplicationFlow',
name: 'flowImproveSaleInsuranceApplicationFlow',
component: () => import('@/views/ebiz/saleFlowProImprove/InsuranceApplicationFlow.vue'),
meta: {
title: '保险申请流程'
}
},
{
path: '/flow-improve/sale/list',
name: 'flowImproveSaleList',
component: list,
meta: {
title: '电子投保单列表',
index: 1
}
},
{
path: '/flow-improve/sale/detail',
name: 'flowImproveSaleDetail',
component: detail,
meta: {
title: '电子投保单详情'
}
},
{
path: '/flow-improve/sale/insuredInfo',
name: 'flowImproveSaleInsuredInfo',
component: insuredInfo,
meta: {
title: '投保人信息',
index: 1
}
},
{
path: '/flow-improve/sale/insuredPerson',
name: 'flowImproveSaleInsuredPerson',
component: insuredPerson,
meta: {
title: '被保险人信息',
index: 1
}
},
{
path: '/flow-improve/sale/result',
name: 'flowImproveSaleResult',
component: result,
meta: {
title: '核保结果',
index: 1
}
},
{
path: '/flow-improve/sale/beneficiary',
name: 'flowImproveSaleBeneficiary',
component: beneficiary,
meta: {
title: '受益人',
index: 1
}
},
{
path: '/flow-improve/sale/attachmentManagement',
name: 'flowImproveSaleAttachmentManagement',
component: attachmentManagement,
meta: {
title: '附件管理'
}
},
{
path: '/flow-improve/sale/addBeneficiaryInfo',
name: 'flowImproveSaleAddBeneficiaryInfo',
component: addBeneficiaryInfo,
meta: {
title: '指定受益人信息'
}
},
{
path: '/flow-improve/sale/insureNotifyReplenishImage',
name: 'flowImproveSaleInsureNotifyReplenishImage',
component: insureNotifyReplenishImage,
meta: {
title: '投保告知及补充影像'
}
},
{
path: '/flow-improve/sale/signatureConfirmation',
name: 'flowImproveSaleSignatureConfirmation',
component: signatureConfirmation,
meta: {
title: '签名确认'
}
},
{
path: '/flow-improve/sale/notifyingMessage',
name: 'flowImproveSaleNotifyingMessage',
component: notifyingMessage,
meta: {
title: '告知信息'
}
},
{
path: '/flow-improve/sale/universalRiskNotifyingMessage',
name: 'flowImproveSaleUniversalRiskNotifyingMessage',
component: universalRiskNotifyingMessage,
meta: {
title: '风险告知'
}
},
{
path: '/flow-improve/sale/answerPage',
name: 'flowImproveSaleAnswerPage',
component: answerPage,
meta: {
title: '风险测评'
}
},
{
path: '/flow-improve/sale/answerSuccess',
name: 'flowImproveSaleAnswerSuccess',
component: answerSuccess,
meta: {
title: '风险测评结果'
}
},
{
path: '/flow-improve/sale/accountInformation',
name: 'flowImproveSaleAccountInformation',
component: accountInformation,
meta: {
title: '账户信息'
}
},
{
path: '/flow-improve/sale/insuranceInformation',
name: 'flowImproveSaleInsuranceInformation',
component: insuranceInformation,
meta: {
title: '投保须知'
}
},
{
path: '/flow-improve/sale/insuranceInformation_0081',
name: 'flowImproveSaleInsuranceInformation0081',
component: insuranceInformation_0081,
meta: {
title: '投保须知'
}
},
{
path: '/flow-improve/sale/insuranceClauses',
name: 'flowImproveSaleInsuranceClauses',
component: insuranceClauses,
meta: {
title: '保险条款'
}
},
{
path: '/flow-improve/sale/insuranceTip',
name: 'flowImproveSaleInsuranceTip',
component: insuranceTip,
meta: {
title: '阅读人身保险投保提示书'
}
},
{
path: '/flow-improve/sale/universalRiskNotifyingMessageTip',
name: 'flowImproveSaleUniversalRiskNotifyingMessageTip',
component: universalRiskNotifyingMessageTip,
meta: {
title: '万能型人身保险产品风险告知问卷'
}
},
{
path: '/flow-improve/sale/insuranceRiskReminder',
name: 'flowImproveSaleInsuranceRiskReminder',
component: InsuranceRiskReminder,
meta: {
title: '投保风险提示书'
}
},
{
path: '/flow-improve/sale/productTip',
name: 'flowImproveSaleProductTip',
component: productTip,
meta: {
title: `${riskName}产品说明书`
}
},
{
path: '/flow-improve/sale/signatureOfElectronic',
name: 'flowImproveSaleSignatureOfElectronic',
component: signatureOfElectronic,
meta: {
title: '电子投保单签名'
}
},
{
path: '/flow-improve/sale/avoidDutyTip',
name: 'flowImproveSaleAvoidDutyTip',
component: avoidDutyTip,
meta: {
title: '免除保险人责任条款说明书'
}
},
{
path: '/flow-improve/sale/apointValidDoc',
name: 'flowImproveSaleApointValidDoc',
component: apointValidDoc,
meta: {
title: '免除保险人责任条款说明书'
}
},
{
path: '/flow-improve/sale/doubleRecordTip',
name: 'flowImproveSaleDoubleRecordTip',
component: doubleRecordTip,
meta: {
title: '保险销售行为双录说明'
}
},
{
path: '/flow-improve/sale/payMent',
name: 'flowImproveSalePayMent',
component: payMent,
meta: {
title: '支付'
}
},
{
path: '/flow-improve/sale/payResult',
name: 'flowImproveSalePayResult',
component: payResult,
meta: {
title: '支付结果'
}
},
{
path: '/flow-improve/sale/cardScan',
name: 'flowImproveSaleCardScan',
component: cardScan,
meta: {
title: '银行卡扫描'
}
},
{
path: '/flow-improve/sale/identitycardScan',
name: 'flowImproveSaleIdentitycardScan',
component: identitycardScan,
meta: {
title: '身份证扫描'
}
},
{
path: '/flow-improve/sale/backShow',
name: 'flowImproveSaleBackShow',
component: backShow,
meta: {
title: '回显页面'
}
},
{
path: '/flow-improve/sale/test',
name: 'flowImproveSaleTest',
component: Test,
meta: {
title: '测试页面'
}
},
{
path: '/flow-improve/sale/payResultFail',
name: 'flowImproveSalePayResultFail',
component: PayResultFail,
meta: {
title: '支付结果'
}
},
{
path: '/flow-improve/sale/shortPeriodProduct',
name: 'flowImproveSaleShortPeriodProduct',
component: shortPeriodProduct,
meta: {
title: '国富人寿短期健康险投保须知'
}
},
{
path: '/flow-improve/sale/commitmentSelfProtect',
name: 'flowImproveSaleCommitmentSelfProtect',
component: commitmentSelfProtect,
meta: {
title: '国富人寿自保件承诺书'
}
},
{
path: '/flow-improve/sale/personalInformation',
name: 'flowImproveSalePersonalInformation',
component: PersonalInformation,
meta: {
title: '个人信息使用授权'
}
},
{
path: '/flow-improve/sale/answerTip',
name: 'flowImproveSaleAnswerTip',
component: AnswerTip,
meta: {
title: '国富人寿投保风险承受能力测评表'
}
},
{
path: '/flow-improve/sale/readDocuments',
name: 'flowImproveSaleReadDocuments',
component: readDocuments,
meta: {
title: '阅读文件'
}
},
{
path: '/flow-improve/sale/signDocuments',
name: 'flowImproveSaleSignDocuments',
component: signDocuments,
meta: {
title: '签名页面'
}
}
]

View File

@@ -31,8 +31,8 @@ export default new Vuex.Store({
YBidNo: '', //银保代理人电子化合同签署证件号码
YBname: '', //银保代理人电子化合同签署姓名
YBuuid: '', //银保代理人电子化合同签署代理人uuid
appntSign: '', //投保人阅读签署文件
insuredSign: '', //被保人阅读签署文件
uploadImgType: '',
uploadImgOrderNo: '',
},
mutations: {
setOrderDetail (state, data) {
@@ -80,8 +80,11 @@ export default new Vuex.Store({
state.pcList = val
},
//更新 风险测评是否显示状态
updateAnswerType (state, val) {
state.answerType = val
updateUploadImgType (state, val) {
state.uploadImgType = val
},
updateUploadImgOrderNo (state, val) {
state.uploadImgOrderNo = val
},
//更新 银保代理人电子化合同签署证件号码
updateYBidNo (state, val) {
@@ -95,14 +98,6 @@ export default new Vuex.Store({
updateYBuuid (state, val) {
state.YBuuid = val
},
//更新 投保人阅读签署文件
updateappntSign (state, val) {
state.appntSign = val
},
//更新 被保人阅读签署文件
updateinsuredSign (state, val) {
state.insuredSign = val
},
},
getters: {
getPageFlag (state) {
@@ -129,6 +124,12 @@ export default new Vuex.Store({
getAnswerType (state) {
return state.answerType
},
getUploadImgType (state) {
return state.uploadImgType
},
getUploadImgOrderNo (state) {
return state.uploadImgOrderNo
},
getYBidNo (state) {
return state.YBidNo
},
@@ -138,12 +139,6 @@ export default new Vuex.Store({
getYBuuid (state) {
return state.YBuuid
},
getappntSign (state) {
return state.appntSign
},
getinsuredSign (state) {
return state.insuredSign
},
}
})

File diff suppressed because it is too large Load Diff

View File

@@ -1,409 +0,0 @@
<template>
<div>
<div style="background: #fff;margin: 10px;padding: 10px;border-radius: 5px;">
<div style="display: flex;font-size: 14px;font-weight: bold;">
<span style="width: 25%;display: flex;align-items: center;align-items: center;line-height: 30px;justify-content: center;">保单数量</span>
<span style="width: 25%;display: flex;align-items: center;align-items: center;line-height: 30px;justify-content: center">家庭成员</span>
<span style="width: 25%;display: flex;align-items: center;align-items: center;line-height: 30px;justify-content: center;">总保额</span>
<span style="width: 25%;display: flex;align-items: center;align-items: center;line-height: 30px;justify-content: center;">总保费</span>
</div>
<div style="display: flex;font-size: 13px;color: #999;margin-top: 10px;">
<span style="width: 25%;display: flex;align-items: flex-end;align-items: baseline;justify-content: center;">
<span style="color: #EC5449;font-size: 22px;margin-right: 2px;font-weight: bold;">{{infoContent.contSize}}</span>
<span></span>
</span>
<span style="width: 25%;display: flex;align-items: flex-end;align-items: baseline;justify-content: center;">
<span style="color: #EC5449;font-size: 22px;margin-right: 2px;font-weight: bold;">{{infoContent.members.length}}</span>
<span></span>
</span>
<span style="width: 25%;display: flex;align-items: flex-end;align-items: baseline;justify-content: center;">
<span style="color: #EC5449;font-size: 22px;margin-right: 2px;font-weight: bold;">{{infoContent.totalAmt}}</span>
<span>万元</span>
</span>
<span style="width: 25%;display: flex;align-items: flex-end;align-items: baseline;justify-content: center;">
<span style="color: #EC5449;font-size: 22px;margin-right: 2px;font-weight: bold;">{{infoContent.totalPrem}}</span>
<span>万元</span>
</span>
</div>
</div>
<div style="margin: 10px;overflow: auto;white-space: nowrap;">
<div v-for="(item,index) in infoContent.members" @click="activeMembers(item,index)" class="membersClass" :key="index" :style="{border:activeMembersIndex==index?'1px solid #e98c8c':'none'}">
<div v-if="item.gender=='1'" class="triangle1"></div>
<div v-if="item.gender=='0'" class="triangle2"></div>
<div v-if="item.relateToAppnt == 1" style="position: absolute;right: 2px;top: 2px;font-size: 12px;color: #fff;">本人</div>
<div v-if="item.relateToAppnt == 2" style="position: absolute;right: 2px;top: 2px;font-size: 12px;color: #fff;">配偶</div>
<div v-if="item.relateToAppnt == 3" style="position: absolute;right: 2px;top: 2px;font-size: 12px;color: #fff;">父母</div>
<div v-if="item.relateToAppnt == 4" style="position: absolute;right: 2px;top: 2px;font-size: 12px;color: #fff;">子女</div>
<div v-if="item.relateToAppnt == 5" style="position: absolute;right: 2px;top: 2px;font-size: 12px;color: #fff;">其他</div>
<div style="position: absolute;top: 20px;left: 20px;">
<img v-if="item.gender =='0' && item.relateToAppnt == 1" src="@/assets/images/GBC/relation6.png" style="width: 40px;" />
<img v-if="item.gender =='1' && item.relateToAppnt == 1" src="@/assets/images/GBC/relation1.png" style="width: 40px;" />
<img v-if="item.gender =='0' && item.relateToAppnt == 2" src="@/assets/images/GBC/relation6.png" style="width: 40px;" />
<img v-if="item.gender =='1' && item.relateToAppnt == 2" src="@/assets/images/GBC/relation1.png" style="width: 40px;" />
<img v-if="item.gender =='0' && item.relateToAppnt == 3" src="@/assets/images/GBC/relation4.png" style="width: 40px;" />
<img v-if="item.gender =='1' && item.relateToAppnt == 3" src="@/assets/images/GBC/relation5.png" style="width: 40px;" />
<img v-if="item.gender =='0' && item.relateToAppnt == 4" src="@/assets/images/GBC/relation3.png" style="width: 40px;" />
<img v-if="item.gender =='1' && item.relateToAppnt == 4" src="@/assets/images/GBC/relation2.png" style="width: 40px;" />
<img v-if="item.gender =='0' && item.relateToAppnt == 5" src="@/assets/images/GBC/relation6.png" style="width: 40px;" />
<img v-if="item.gender =='1' && item.relateToAppnt == 5" src="@/assets/images/GBC/relation1.png" style="width: 40px;" />
</div>
<div style="position: absolute;bottom: 3px;width: 100%;text-align: center;font-size: 12px;">{{item.appntName}}</div>
</div>
</div>
<div style="margin: 10px;border-radius: 5px;overflow: hidden;">
<van-collapse v-model="activeNames">
<van-collapse-item title="基本信息" name="1">
<div style="display: flex;padding-bottom: 10px;border-bottom: 1px dashed #666;">
<div style="width: 30%;line-height: 30px;color: #666;">
<p>客户姓名</p>
<p>年龄</p>
<p>性别</p>
<p>手机号码</p>
<p v-if="activeMembersIndex == 0">部门/科室</p>
</div>
<div style="width: 70%;line-height: 30px;color: #000;">
<p>{{infoContent.appntName}}</p>
<p>{{infoContent.age}}周岁</p>
<p>{{infoContent.gender=='1'?'女':'男'}}</p>
<p>{{infoContent.mobile}}</p>
<p v-if="activeMembersIndex == 0">{{infoContent.departmentName}}</p>
</div>
</div>
<van-field @click="toSelect('toChooseAppntType')" v-model="infoContent.appntTypeName" class="customerType" label="客户类型" name="客户类型" readonly right-icon="arrow" placeholder="请选择"/>
</van-collapse-item>
</van-collapse>
</div>
<div style="margin: 10px;border-radius: 5px;overflow: hidden;">
<van-collapse v-model="activeNames">
<van-collapse-item title="沟通记录" name="2">
<div style="display: flex;justify-content: space-between;align-items: center;">
<span>内容描述</span>
<van-button @click="activeConnectRecords = true" plain round type="danger" size="small"> </van-button>
</div>
<div v-if="activeConnectRecords">
<div class="message">
<div class="wrapper">
<div class="parents">
<textarea placeholder="请输入内容描述......" maxlength="500" autofocus="true" v-model="connectContent"></textarea>
<span class="tips">
{{connectContent.length}}/500
</span>
</div>
</div>
</div>
<div class="saveMeaasge" style="margin-top: 10px;display: flex;justify-content: center;">
<van-button @click="getGBCappntConnectSave" type="danger" size="small"> </van-button>
</div>
</div>
<div class="connectRecordsClass" style="border-top: 1px solid #dedede;margin-top: 10px;">
<div v-for="(item,index) in infoContent.connectRecords" :key="index" style="margin-top: 10px;">
<div style="display: flex;line-height: 30px;align-items: center;">
<span style="display: inline-block;width: 30%;color: #666;">记录时间</span>
<span style="display: inline-block;width: 70%;color: #000;">{{item.connectTime}}</span>
</div>
<div style="display: flex;line-height: 30px;align-items: center;">
<span style="display: inline-block;width: 30%;color: #666;">提交人</span>
<span style="display: inline-block;width: 70%;color: #000;">{{item.createUser}}</span>
</div>
<div style="display: flex;line-height: 30px;align-items: center;">
<span style="display: inline-block;width: 30%;color: #666;">内容描述</span>
<span style="display: inline-block;width: 70%;color: #000;"></span>
</div>
<div class="itemMessage">
<van-field v-model="item.connectContent" readonly rows="5" label="" type="textarea" maxlength="500" placeholder=""/>
</div>
</div>
</div>
</van-collapse-item>
</van-collapse>
</div>
<div style="margin: 10px;border-radius: 5px;overflow: hidden;">
<van-collapse v-model="activeNames">
<van-collapse-item title="保单信息" name="3">
<div v-for="(item,index) in infoContent.contList" :key="index" style="border-bottom: 1px dashed #dedede;margin-bottom: 20px;">
<div style="display: flex;justify-content: space-between;align-items: center;border-bottom: 1px solid #dedede;padding-bottom: 5px;">
<div>
<p style="font-size: 14px;font-weight: bold;line-height: 25px;color: #000;">{{item.productName}} </p>
<p style="font-size: 12px;line-height: 25px;color: #999;">保单号{{item.contNo}} </p>
</div>
<div v-if="item.orderStatus == '08'" style="padding: 10px 20px;border-radius: 8px;border: 1px solid #e9332e;background: #ffdfde;color: #e9332e;">
<span>已承保</span>
</div>
<div v-if="item.orderStatus == '09'" style="padding: 10px 20px;border-radius: 8px;border: 1px solid #48A1F3;background: #DBEDFE;color: #48A1F3;">
<span>已退保</span>
</div>
</div>
<div style="padding: 10px 0px;">
<div style="display: flex;line-height: 30px;align-items: center;">
<p style="width: 25%;color: #666;">投保人</p>
<p style="width: 25%;color: #000;">{{item.appntName}}</p>
<p style="width: 25%;color: #666;">被保险人</p>
<p style="width: 25%;color: #000;">{{item.insuredName}}</p>
</div>
<div style="display: flex;line-height: 30px;align-items: center;">
<p style="width: 25%;color: #666;">保额()</p>
<p style="width: 25%;color: #000;">{{Number(item.amt).toFixed(2)}}</p>
<p style="width: 25%;color: #666;">保费()</p>
<p style="width: 25%;color: #000;">{{Number(item.prem).toFixed(2)}}</p>
</div>
<div style="display: flex;line-height: 30px;align-items: center;">
<p style="width: 25%;color: #666;">交费期间</p>
<p style="width: 25%;color: #000;">{{item.paymentPeriod}}</p>
<p style="width: 25%;color: #666;">保险期间</p>
<p style="width: 25%;color: #000;">{{item.insuredPeriod}}</p>
</div>
<div style="display: flex;line-height: 30px;align-items: center;">
<p style="width: 30%;color: #666;">保险生效日期</p>
<p style="width: 50%;color: #000;">{{item.effectiveDate}}</p>
</div>
</div>
</div>
</van-collapse-item>
</van-collapse>
</div>
<van-popup v-model="popupShow" position="bottom">
<van-picker show-toolbar :columns="columns" @confirm="onConfirm" @cancel="popupShow = false" />
</van-popup>
</div>
</template>
<script>
import { Collapse, CollapseItem } from 'vant'
import { getGBCappntDetail, getGBCappntTypeSave, getGBCappntConnectSave } from '@/api/GBC/GBC.js'
export default {
components: {
[Collapse.name]: Collapse,
[CollapseItem.name]: CollapseItem,
},
data() {
return {
activeMembersIndex:0,
activeConnectRecords:false,
infoContent:{
members:[
{appntName:'刘亚丽',relateToAppnt:1,src:require('@/assets/images/GBC/relation1.png'),gender:'1'},
{appntName:'刘桂芬',relateToAppnt:2,src:require('@/assets/images/GBC/relation2.png'),gender:'1'},
{appntName:'谢居安',relateToAppnt:3,src:require('@/assets/images/GBC/relation3.png'),gender:'0'},
{appntName:'谢危',relateToAppnt:4,src:require('@/assets/images/GBC/relation4.png'),gender:'0'},
{appntName:'刘亚丽',relateToAppnt:5,src:require('@/assets/images/GBC/relation5.png'),gender:'1'},
{appntName:'刘桂芬',relateToAppnt:6,src:require('@/assets/images/GBC/relation6.png'),gender:'1'},
{appntName:'谢居安',relateToAppnt:7,src:require('@/assets/images/GBC/relation1.png'),gender:'0'},
{appntName:'谢危',relateToAppnt:8,src:require('@/assets/images/GBC/relation2.png'),gender:'0'},
{appntName:'谢危',relateToAppnt:9,src:require('@/assets/images/GBC/relation2.png'),gender:'0'},
],
connectRecords:[
{
connectTime:'2023-11-21 16:00:00',
createUser:'赵威武',
connectContent:'客户为财务部总经理45岁2个小孩大儿子读初中小女儿读小学爱人在银行工作全家人都已配置过重疾险保额均为30万。自己可以做购买决策但目前有2套房贷在供经济压力较大但对我司方案很认可回去商量后再决定是否加保'
},
{
connectTime:'2023-11-21 16:00:00',
createUser:'赵威武',
connectContent:'客户为财务部总经理45岁2个小孩大儿子读初中小女儿读小学爱人在银行工作全家人都已配置过重疾险保额均为30万。自己可以做购买决策但目前有2套房贷在供经济压力较大但对我司方案很认可回去商量后再决定是否加保'
},
{
connectTime:'2023-11-21 16:00:00',
createUser:'赵威武',
connectContent:'客户为财务部总经理45岁2个小孩大儿子读初中小女儿读小学爱人在银行工作全家人都已配置过重疾险保额均为30万。自己可以做购买决策但目前有2套房贷在供经济压力较大但对我司方案很认可回去商量后再决定是否加保'
}
],
contList:[
{appntName:'赵燕燕',insuredName:'赵燕燕',amt:'3,200.00',prem:'150.00',paymentPeriod:'3年交',insuredPeriod:'终身',effectiveDate:'2023-11-28',orderStatus: '1'},
{appntName:'赵燕燕',insuredName:'赵燕燕',amt:'3,200.00',prem:'150.00',paymentPeriod:'3年交',insuredPeriod:'终身',effectiveDate:'2023-11-28',orderStatus: '1'},
{appntName:'赵燕燕',insuredName:'赵燕燕',amt:'3,200.00',prem:'150.00',paymentPeriod:'3年交',insuredPeriod:'终身',effectiveDate:'2023-11-28',orderStatus: '2'},
]
},
activeNames:[],
popupShow:false,
columns:[],
customerType:'',
pickerType: '',
columns_toChooseAppntType:[
{text:'A类',id:'A'},
{text:'B类',id:'B'},
{text:'C类',id:'C'},
{text:'D类',id:'D'},
],
connectContent: "",
maxLength: 500,
activeAppntId:'',
}
},
created() {
},
mounted(){
this.activeAppntId = this.$route.query.appntId
this.getGBCappntDetail()
},
methods: {
activeMembers(thisData,thisIndex) {
this.activeMembersIndex = thisIndex
this.infoContent.appntName = thisData.name
this.infoContent.age = thisData.age
this.activeAppntId = thisData.appntId
this.infoContent.gender = thisData.gender
this.infoContent.mobile = thisData.mobile
this.infoContent.departmentName = thisData.departmentName
},
getGBCappntDetail() {
let params = {
"projectCode": this.$route.query.projectCode,
"appntId": this.$route.query.appntId
}
getGBCappntDetail(params).then(res => {
if(res.result == 0) {
this.infoContent = res.content
} else {
this.$toast(res.resultMessage)
}
})
},
getGBCappntConnectSave(){
let params = {
"projectCode": this.$route.query.projectCode,
"appntId": this.activeAppntId,
"connectContent": this.connectContent
}
getGBCappntConnectSave(params).then(res=>{
if(res.result == 0) {
this.$toast('保存成功')
this.connectContent = ''
this.activeConnectRecords = false
this.getGBCappntDetail()
} else {
this.$toast(res.resultMessage)
}
})
},
onConfirm(value){
if(this.pickerType == 'toChooseAppntType'){
this.infoContent.appntTypeName = value.text
this.infoContent.appntType = value.id
let params = {
"projectCode": this.$route.query.projectCode,
"appntId": this.activeAppntId,
"appntType": this.infoContent.appntType
}
getGBCappntTypeSave(params).then(res=>{
if(res.result == 0){
this.$toast('保存成功')
} else {
this.$toast(res.resultMessage)
}
})
}
this.popupShow = false
},
toSelect(pickerType){
this.pickerType = pickerType
this.popupShow = true
switch (pickerType) {
case 'toChooseAppntType':
this.columns = this.columns_toChooseAppntType
break
}
},
},
computed: {
},
beforeRouteLeave(to, from, next) {
document.body.style.backgroundColor = ''
next()
}
}
</script>
<style lang="scss" scoped>
.triangle1 {
width: 0;
height: 0;
border-width:30px; /* 设置边长 */
border-style: solid;
transform: translateX(50px) translateY(-30px) rotate(45deg);
border-color: transparent transparent #FC7D5B transparent; /* 透明色为背景色,#000000为需要显示的颜色 */
}
.triangle2 {
width: 0;
height: 0;
border-width:30px; /* 设置边长 */
border-style: solid;
transform: translateX(50px) translateY(-30px) rotate(45deg);
border-color: transparent transparent #3D72D0 transparent; /* 透明色为背景色,#000000为需要显示的颜色 */
}
/deep/ .van-cell:not(:last-child)::after {
border-bottom: 1px dashed #666 !important;
}
/deep/ .van-cell:not(:last-child)::after{
left:0px !important;
}
.customerType{
padding-left: 0px;
padding-right: 0px;
color: #666;
}
/deep/ .message{
border-radius: 10px;
border: 1px solid #dedede;
margin-top: 20px;
padding: 10px;
}
.parents {
width: 100%;
height: 120px;
position: relative;
}
textarea {
border: none;
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
}
.tips {
position: absolute;
bottom: 0;
right: 0;
}
/deep/ .saveMeaasge{
.van-button--small{
padding: 0px 40px;
border-radius: 5px;
}
}
/deep/ .itemMessage{
border: 1px solid #dedede;
border-radius: 10px;
padding: 10px;
.van-field__label{
width: 0;
}
.van-cell{
padding: 0px;
}
.van-field__control{
color: #333;
height: auto;
}
}
/deep/ .van-collapse-item{
.van-cell__title{
font-size: 14px;
font-weight: bold;
}
}
.membersClass{
display: inline-block;
width: 80px;
height: 80px;
border-radius: 5px;
background: #fff;
margin-right: 10px;
overflow: hidden;
position: relative;
}
</style>

View File

@@ -1,475 +0,0 @@
<template>
<div class="public_container" :style="{ paddingTop: marginTop + 'px' }">
<!-- <van-pull-refresh v-model="isLoading" @refresh="onRefresh">-->
<div class="head">
<van-swipe :autoplay="3000" style="width: 100%">
<van-swipe-item v-for="(item, index) in activity" :key="index" @touchstart="touchstart" @touchmove="touchmove" @touchend="touchend(item)">
<!-- <img :src="config.assetsUrl + item.img + '?v=' + thisGetTime" /> -->
<img :src="item.img" />
</van-swipe-item>
</van-swipe>
</div>
<div class="iconPart1">
<van-notice-bar :left-icon="png8" :text="getCodeValue" />
</div>
<div class="top">
<div class="menu" v-for="(item, ind) in homePageIcon" :key="ind" @click="goDetail(item)">
<div class="menuImg">
<img :src="item.img" />
</div>
<span class="menuName">{{ item.title }}</span>
</div>
</div>
<div class="cooperativeUnits">
<div>
<div style="width: 50%; display: inline-block" v-for="(item, index) in list1" :key="index">
<p
style="
display: flex;
justify-content: flex-start;
height: 50px;
align-items: center;
margin: 5px 10px;
border: 1px solid #eee;
border-radius: 5px;
background: #fff;
color: #333333;
padding-left: 10px;
"
>
<img src="@/assets/images/GBC/home-cooperativeUnits-icon.png" style="width: 20px; height: 20px; margin-right: 10px" />
{{ item.name }}
</p>
</div>
</div>
</div>
<div class="companyProfile">
<img :src="image1" style="width: 100%" />
</div>
<!-- </van-pull-refresh>-->
<van-dialog v-model="chooseProjectDialogShow" :showConfirmButton="false">
<template slot="title">
<p style="color: #e9332e">请选择项目</p>
</template>
<template>
<div class="search-project-warpper">
<van-search
v-model="searchProjectName"
shape="round"
background="#fff"
@focus="handleFocus"
@blur="handleBlur"
@search="searchProject"
placeholder="请输入项目名称"
/>
<van-dropdown-menu :overlay="false" active-color="#e9332e">
<van-dropdown-item v-model="searchProjectYear" :options="searchProjectYearOptions" get-container="body" @change="searchProject" />
</van-dropdown-menu>
</div>
<div class="chooseProjectDialog">
<van-radio-group v-model="chooseTeamCode">
<van-radio v-for="(item, index) in projectList" :key="index" :name="item.teamCode" style="margin: 10px">
<span style="margin-left: 20px">
{{ item.projectName }}
<span v-if="item.teamName" style="margin-left: 10px; color: #a7a7a7">
{{ item.teamName }}
</span>
<span v-if="item.projectState" style="margin-left: 10px; color: #a7a7a7"> 状态{{ item.projectState === '1' ? '正常' : '失效' }} </span>
</span>
</van-radio>
</van-radio-group>
</div>
<div style="text-align: center; margin-top: 20px; margin-bottom: 20px">
<van-button round type="danger" size="small" style="padding: 0px 80px; font-size: 14px" @click="chooseProjectList"> 确定 </van-button>
</div>
</template>
</van-dialog>
<!-- 选择过期项目弹窗提示 -->
<van-dialog v-model="enableProjectDialogShow" :showConfirmButton="false">
<div slot="title">
<p style="color: #e9332e">提示</p>
</div>
<div style="padding: 30px; font-size: 14px">{{ chooseProjectName }}项目服务时间已结束</div>
<div style="text-align: center; margin-bottom: 20px">
<van-button round type="danger" size="small" style="padding: 0px 80px; font-size: 14px" @click="enableProjectDialogShow = false"> 返回 </van-button>
</div>
</van-dialog>
</div>
</template>
<script>
import { gbcProjectList, gbcProjectConfirm, homeConfigGBC } from '@/api/GBC/GBC'
import { getAgentInfo } from '@/api/ebiz/my/my.js'
import { Swipe, SwipeItem, NoticeBar, Icon, Popup, PullRefresh, Toast, RadioGroup, Radio, Search, DropdownMenu, DropdownItem } from 'vant'
import config from '@/config'
import png8 from '@/assets/YB_APP/images/8.png'
export default {
name: 'Home',
components: {
[Swipe.name]: Swipe,
[SwipeItem.name]: SwipeItem,
[NoticeBar.name]: NoticeBar,
[Icon.name]: Icon,
[Popup.name]: Popup,
[PullRefresh.name]: PullRefresh,
[RadioGroup.name]: RadioGroup,
[Radio.name]: Radio,
[Toast.name]: Toast,
[Search.name]: Search,
[DropdownMenu.name]: DropdownMenu,
[DropdownItem.name]: DropdownItem
},
data() {
return {
config,
marginTop: '80',
getCodeValue: '',
png8,
activity: [],
homePageIcon: [
{ title: '建议书', route: '/proposal/list', img: require('@/assets/images/GBC/home-menu-1.png') },
{ title: '电子投保', route: '/sale/list', img: require('@/assets/images/GBC/home-menu-2.png') },
{ title: '海报设计', route: '/poster/posterList', img: require('@/assets/images/GBC/home-menu-3.png') },
{ title: 'GBC专区', route: '/GBC/projectList', img: require('@/assets/images/GBC/home-menu-4.png') }
],
isLoading: false,
image1: require('@/assets/images/GBC/home-companyProfile.png'),
list1: [{ name: '广西金融投资集团' }, { name: '广投集团' }, { name: '广西北部湾银行' }, { name: '国海证券' }],
projectList: [],
chooseProjectDialogShow: false,
chooseTeamCode: '',
chooseProjectCode: '',
chooseProjectName: '',
enableProjectDialogShow: false,
searchProjectName: '', // 搜索项目名称
searchProjectYear: '' // 搜索项目年份
}
},
computed: {
searchProjectYearOptions() {
let currentYear = new Date().getFullYear()
let options = [
{
text: '全部',
value: ''
}
]
// 从2024年开始到当前年份结束
for (let i = 2024; i <= currentYear; i++) {
options.push({
text: i + '年',
value: i
})
}
return options
}
},
mounted() {
this.homeConfigGBC()
this.setMarginTop()
if (this.$route.query.isFrom == 'login') {
this.gbcProjectList()
}
this.getAgentInfo()
},
methods: {
getAgentInfo() {
let params = {}
getAgentInfo(params).then((res) => {
if (res.result == '0') {
if (res.branchType == '13') {
window.localStorage.setItem('branchType', '13')
}
} else {
this.$toast(res.resultMessage)
}
})
},
gbcProjectList() {
let params = {}
gbcProjectList(params).then((res) => {
if (res.result == '0') {
this.projectList = res.content
if (this.projectList.length == 1) {
this.chooseProjectDialogShow = false
this.chooseTeamCode = this.projectList[0].teamCode
this.chooseProjectCode = this.projectList[0].projectCode
this.chooseProjectName = this.projectList[0].projectName
this.chooseProjectList()
}
if (this.projectList.length > 1) {
this.chooseProjectDialogShow = true
}
} else {
this.$toast(res.resultMessage)
}
})
},
searchProject() {
let params = {
projectName: this.searchProjectName,
projectYear: this.searchProjectYear
}
gbcProjectList(params).then((res) => {
if (res.result == '0') {
this.chooseTeamCode = ''
this.chooseProjectCode = ''
this.chooseProjectName = ''
this.projectList = res.content
} else {
this.$toast(res.resultMessage)
}
})
},
chooseProjectList() {
if (!this.chooseTeamCode) {
this.$toast('请选择项目')
return false
}
if (this.projectList && this.projectList.length != 0) {
this.projectList.forEach((item) => {
if (item.teamCode == this.chooseTeamCode) {
this.chooseProjectName = item.projectName
}
})
}
let params = {
teamCode: this.chooseTeamCode
}
gbcProjectConfirm(params).then((res) => {
if (res.result == '0') {
if (res.content.enable == 1) {
this.chooseProjectDialogShow = false
} else {
this.enableProjectDialogShow = true
}
} else {
this.$toast(res.resultMessage)
}
})
},
goDetail(data) {
this.$jump({
flag: 'h5',
extra: {
url: location.origin + '/#' + data.route
},
routerInfo: {
path: data.route
}
})
},
setMarginTop() {
EWebBridge.webCallAppInJs('top_bar_height').then((data) => {
console.log(data, 'top_bar_height')
if (data) {
// 获取高度成功
let height = data.height
// 设置高度
this.marginTop = height + 10
}
})
},
homeConfigGBC() {
let params = {}
homeConfigGBC(params).then((res) => {
if (res.result == 0) {
this.activity = res.content.activity
if (res.content.getCodeValue.length != 0) {
res.content.getCodeValue.forEach((item) => {
this.getCodeValue += item + ' '
})
}
this.homePageIcon = res.content.icon.homePageIcon
} else {
this.$toast(res.resultMessage)
}
})
},
touchstart() {
this.clickFlag = true
},
touchmove() {
this.clickFlag = false
},
touchend(data) {
if (this.clickFlag) {
let dataURL = JSON.parse(data.route).extra.url
if (dataURL) {
let thisRoute = dataURL.substring(dataURL.lastIndexOf('/#') + 2)
this.$jump({
flag: 'h5',
extra: {
url: location.origin + '/#' + thisRoute
},
routerInfo: {
path: thisRoute
}
})
}
}
},
// 下拉刷新
onRefresh() {
setTimeout(() => {
Toast('刷新成功')
this.isLoading = false
location.reload()
}, 1000)
}
}
// beforeRouteEnter(to, from, next) {
// next(vm => {
// if(from && from.path){
// console.log(from)
// // eslint-disable-next-line no-undef
// if(form.path == '/login') {
// window.sessionStorage.setItem('GBCFrom','GBCLogin')
// }
// }
// });
// },
}
</script>
<style lang="scss" scoped>
.public_container {
font-size: 12px;
height: 100vh;
width: 100vw;
/*background-image: url("../../assets/YB_APP/images/2-1.png");*/
/*background-repeat: no-repeat;*/
/*background-size: contain;*/
background: #f0f8ff;
}
.head {
position: relative;
margin: 10px;
border-radius: 5px;
/*box-shadow: 0px 5px 8px 0px #7a6fc1;*/
img {
width: 100%;
height: 100%;
border-radius: 5px;
}
/deep/ .van-swipe-item {
height: auto;
}
}
/deep/ .van-notice-bar {
border-radius: 5px;
}
.menuImg {
width: 100%;
display: flex;
justify-content: center;
margin-bottom: 5px;
/deep/ img {
width: 30px;
height: 30px;
}
}
/deep/ .van-notice-bar {
background: #fff;
color: #333;
letter-spacing: 1px;
}
/deep/ .van-icon__image {
width: 100%;
}
/deep/ .van-notice-bar__left-icon {
width: 50px;
}
/deep/ .van-notice-bar__wrap {
margin-left: 10px;
}
/deep/ .van-swipe-item {
img {
height: 145px;
}
}
.iconPart1 {
margin: 10px;
border-radius: 5px;
}
.top {
display: flex;
justify-content: space-between;
margin: 10px;
border-radius: 5px;
align-items: center;
padding: 15px;
}
.title-img {
height: 40px;
}
/deep/ .van-dialog {
// top: calc(100vh - 300px);
top: 55%;
&__header {
padding-top: 20px;
}
}
/deep/ .chooseProjectDialog {
height: calc(100vh - 400px);
min-height: 300px;
padding: 0 15px;
font-size: 14px;
overflow-y: auto;
.van-radio__icon {
.van-icon {
border: 1px solid red;
}
}
}
.cooperativeUnits {
background: url('../../assets/images/GBC/home-cooperativeUnits.png');
background-repeat: no-repeat;
background-size: cover;
height: 130px;
padding-top: 60px;
margin: 10px;
border-radius: 10px;
}
.search-project-warpper {
display: flex;
align-items: center;
padding: 10px 15px 0;
/deep/ .van-search {
flex-grow: 1;
padding: 0;
}
/deep/ .van-dropdown-menu {
min-width: 60px;
flex-shrink: 0;
}
/deep/ .van-hairline--top-bottom::after {
display: none;
}
/deep/ .van-dropdown-item--down {
top: calc(50px + 56px) !important; // 标题栏+搜索框
}
/deep/ .van-button--small {
width: 200px;
}
}
</style>

Some files were not shown because too many files have changed in this diff Show More