diff --git a/.env b/.env index 0c43f01..97571e0 100644 --- a/.env +++ b/.env @@ -2,7 +2,7 @@ VITE_APP_TITLE=金融产品设计及数字化营销沙盘 VITE_PORT=9520 VITE_PROXY=http://192.168.31.125:8080 VITE_PUBLIC_PATH=./ -VITE_BASE_API=http://192.168.31.51:9000 +VITE_BASE_API=http://192.168.31.217:9000 # VITE_BASE_API=http://121.37.12.51 VITE_I18N_LOCALE=zh-cn VITE_I18N_FALLBACK_LOCALE=zh-cn diff --git a/src/api/fund.ts b/src/api/fund.ts new file mode 100644 index 0000000..8f5efe9 --- /dev/null +++ b/src/api/fund.ts @@ -0,0 +1,7 @@ +import axios from '@/utils/request'; +// 保险 +export const saveFund = async (data: Record): Promise => (await axios.post('/product/fundProducts/save', data)).data; +export const batchDeletion = async (data: number[]): Promise => (await axios.post(`/product/fundProducts/batchDeletion`, data)).data; +export const fundProductList = async (data: Record): Promise => (await axios.post(`/product/fundProducts/fundProductList`, data)).data; +export const findById = async (id: number): Promise => (await axios.post(`/product/fundProducts/findById?id=${id}`)).data; +export const getAListOfAShares = async (keyWord: string): Promise => (await axios.post(`/product/aShares/data/getAListOfAShares?keyWord=${keyWord}`)).data; diff --git a/src/assets/images/role/icon/选择角色/基金产品经理_nor.png b/src/assets/images/role/fund.png similarity index 100% rename from src/assets/images/role/icon/选择角色/基金产品经理_nor.png rename to src/assets/images/role/fund.png diff --git a/src/assets/images/role/icon/选择角色/基金产品经理_hig.png b/src/assets/images/role/fund1.png similarity index 100% rename from src/assets/images/role/icon/选择角色/基金产品经理_hig.png rename to src/assets/images/role/fund1.png diff --git a/src/layout/components/AppSidebar/Menu.vue b/src/layout/components/AppSidebar/Menu.vue index ec95fa6..4a21bd1 100644 --- a/src/layout/components/AppSidebar/Menu.vue +++ b/src/layout/components/AppSidebar/Menu.vue @@ -81,6 +81,14 @@ alt="" />

保险产品

+ +
  • + +

    基金产品

    +
  • - diff --git a/src/router/index.ts b/src/router/index.ts index d3ce2d2..0e7af71 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -38,6 +38,8 @@ export const routes: Array = [ { path: 'insurance', component: () => import('@/views/product/insurance/List.vue'), meta: { title: '保险产品' } }, { path: 'insurance/:action', component: () => import('@/views/product/insurance/CardList.vue'), meta: { title: '保险产品' } }, { path: 'interestRate/:action', component: () => import('@/views/product/interestRate/CardList.vue'), meta: { title: '利率定价模型' } }, + { path: 'fund', component: () => import('@/views/product/fund/List.vue'), meta: { title: '基金产品' } }, + { path: 'fund/:action', component: () => import('@/views/product/fund/CardList.vue'), meta: { title: '基金产品' } }, ], }, { diff --git a/src/views/Role.vue b/src/views/Role.vue index f0f8f60..57f7635 100644 --- a/src/views/Role.vue +++ b/src/views/Role.vue @@ -59,7 +59,7 @@ -
    +
    +
    +
    + 客户T时买入,T+ + + + + + 确认申购份额期间,资金进入冻结账户。 +
    +
    + 客户T时卖出,T+ + + + + + 确认赎回金额期间,资金进入冻结账户。 +
    + + +

    买入费率(单笔费率应小于5.00%,5000元)

    +
    +

    金额

    +

    费率

    +
    + + + +
    +
    +
    +
    + + + {{ i ? '万' : ' ' }} + + <= 买入金额 + +
    + +
    + + + + +
    + +
    + + + +
    +
    +
    +

    申购计算:

    +

    净申购金额 = 申购金额 / (1 + 申购费用)

    +

    申购费用 = 申购金额 - 净申购金额

    +

    申购份额 = 净申购金额 / T时基金份额净值

    +
    + + +

    运作费率(单笔费率应小于5.00%)

    +
    + 管理费 + % +
    +
    + 托管费 + % +
    +
    + 销售服务费 + % +
    +
    +

    运作费计算:

    +

    管理费 = (前一日的基金资产净值 x 管理费率)/ 365

    +

    托管费 = (前一日的基金资产净值 x 管理费率)/ 365

    +

    销售服务费 = (前一日的基金资产净值 x 管理费率)/ 365

    +
    + + +

    赎回费率(单笔费率应小于5.00%,5000元)

    +
    +

    持有时长

    +

    费率

    +
    + + + +
    +
    +
    +
    + + + + + + + + + <= 持有时长 + +
    + +
    + + + + +
    + +
    + + + +
    +
    +
    +

    赎回计算:

    +

    赎回费用 = 赎回总额 x 赎回费率

    +

    赎回金额 = 赎回总额 - 赎回费用

    +
    +
    + +
    +
    完成
    +
    + + + + + + + + + diff --git a/src/views/product/fund/CardList.vue b/src/views/product/fund/CardList.vue new file mode 100644 index 0000000..50d6ee8 --- /dev/null +++ b/src/views/product/fund/CardList.vue @@ -0,0 +1,137 @@ + + + + + diff --git a/src/views/product/fund/Detail.vue b/src/views/product/fund/Detail.vue new file mode 100644 index 0000000..0ac13d8 --- /dev/null +++ b/src/views/product/fund/Detail.vue @@ -0,0 +1,21 @@ + + + + + diff --git a/src/views/product/fund/Info.vue b/src/views/product/fund/Info.vue new file mode 100644 index 0000000..e6b1bd7 --- /dev/null +++ b/src/views/product/fund/Info.vue @@ -0,0 +1,105 @@ + + + + + diff --git a/src/views/product/fund/List.vue b/src/views/product/fund/List.vue new file mode 100644 index 0000000..bd6946c --- /dev/null +++ b/src/views/product/fund/List.vue @@ -0,0 +1,155 @@ + + + diff --git a/src/views/product/insurance/Add.vue b/src/views/product/insurance/Add.vue index 6f2f07e..51f76e4 100644 --- a/src/views/product/insurance/Add.vue +++ b/src/views/product/insurance/Add.vue @@ -3,20 +3,6 @@ -
    -
    - 审批意见: - {{ getStatus(+info?.status) }} -
    -
    - 意见描述: - {{ info.opinionDescription }} -
    -

    审查日期:{{ info.approvalTime }}

    -

    审查员:公瑾

    -
    - { }; // 新增判分记录 const addRecord = async (data: Record) => { - const preIds = `1,${Cookies.get('sand-level')},275,${data.insuranceType === 310 ? 276 : 277}`; // 1,关卡id,角色(这个页面是保险产品经理新增产品),个人/企业(44/45) + const preIds = `1,${Cookies.get('sand-level')},275,${data.insuranceType === 310 ? 276 : 277}`; // 1,关卡id,角色(这个页面是保险产品经理新增产品) const rule: Array> = [handleId(278, 118, data.insuranceName, preIds + ',278', 3), handleId(279, 119, data.insuranceType, preIds + ',279', 1)]; data.minimumAge && rule.push(handleId(680, 219, data.minimumAge, preIds + ',678,680', 3)); data.maximumAge && rule.push(handleId(679, 218, data.maximumAge, preIds + ',678,679', 3));