li.shaoyi пре 2 година
родитељ
комит
ef1f731e7a

+ 1 - 1
app/package.json

@@ -1,6 +1,6 @@
 {
   "name": "trading-beta",
-  "version": "1.0.0",
+  "version": "1.0.5",
   "main": "main.js",
   "dependencies": {
     "electron-updater": "^6.1.4",

+ 4 - 2
src/packages/gcszt/App.vue

@@ -29,9 +29,11 @@ eventBus.$on('LogoutNotify', (msg) => {
 })
 
 // 接收风控通知
-eventBus.$on('RiskControlNtf', (msg) => {
+eventBus.$on('RiskToWebNtf', (msg) => {
+  const notify = msg as { title: string, content: string }
   dialog({
-    message: msg as string,
+    title: notify.title,
+    message: notify.content,
     confirmButtonText: '确定'
   })
 })

+ 4 - 2
src/packages/gstj/App.vue

@@ -29,9 +29,11 @@ eventBus.$on('LogoutNotify', (msg) => {
 })
 
 // 接收风控通知
-eventBus.$on('RiskControlNtf', (msg) => {
+eventBus.$on('RiskToWebNtf', (msg) => {
+  const notify = msg as { title: string, content: string }
   dialog({
-    message: msg as string,
+    title: notify.title,
+    message: notify.content,
     confirmButtonText: '确定'
   })
 })

+ 4 - 2
src/packages/mobile/App.vue

@@ -29,9 +29,11 @@ eventBus.$on('LogoutNotify', (msg) => {
 })
 
 // 接收风控通知
-eventBus.$on('RiskControlNtf', (msg) => {
+eventBus.$on('RiskToWebNtf', (msg) => {
+  const notify = msg as { title: string, content: string }
   dialog({
-    message: msg as string,
+    title: notify.title,
+    message: notify.content,
     confirmButtonText: '确定'
   })
 })

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
src/packages/mobile/assets/themes/base/iconfont.less


+ 38 - 0
src/packages/mobile/components/modules/hqchart/candlestick/index.less

@@ -0,0 +1,38 @@
+.app-candlestick {
+    flex: 1;
+    display: flex;
+    flex-direction: column;
+    height: 8rem;
+    overflow: hidden;
+
+    .app-hqchart {
+        flex: 1;
+    }
+
+    .app-tabs--indicator {
+        .tabs {
+            width: 100%;
+            font-size: 12px;
+            border-top: 1px solid #22292c;
+            padding: 1px;
+
+            &-item {
+                z-index: 1;
+                display: flex;
+                justify-content: center;
+                align-items: center;
+                color: #7a8a94;
+                cursor: pointer;
+                padding: 5px 16px;
+
+                &:hover {
+                    background-color: #181E22;
+                }
+
+                &.is-active {
+                    color: #0D96FF;
+                }
+            }
+        }
+    }
+}

+ 166 - 0
src/packages/mobile/components/modules/hqchart/candlestick/index.vue

@@ -0,0 +1,166 @@
+<template>
+    <div class="app-candlestick">
+        <HQChart @ready="onReady" />
+        <Tabs class="app-tabs--indicator" :data-list="tabs" @change="changeIndex" />
+    </div>
+</template>
+
+<script lang="ts" setup>
+import { shallowRef, watch, computed } from 'vue'
+import { Chart } from 'hqchart'
+import { ChartCycleType } from '@/constants/chart'
+import { useFuturesStore } from '@/stores'
+import { useDataset } from '@/hooks/hqchart/candlestick/dataset'
+import { NetworkFilterData, NetworkFilterCallback } from '@/hooks/hqchart/candlestick/types'
+import HQChart from '@/components/base/hqchart/index.vue'
+import Tabs from '@/components/base/tabs/index.vue'
+
+const props = defineProps({
+    symbol: {
+        type: String,
+        required: true
+    },
+    goodsCode: {
+        type: String,
+        required: true
+    },
+    cycleType: {
+        type: Number,
+        required: true
+    }
+})
+
+const { cycleType, networkFilter, updateLastData } = useDataset(props.goodsCode, props.cycleType)
+const { quoteWatch, getGoodsQuote } = useFuturesStore()
+const goods = getGoodsQuote(props.goodsCode)
+const chartInstance = shallowRef() // 图表实例
+
+const tabs = [
+    { label: 'VOL', value: 'VOL' },
+    { label: 'MACD', value: 'MACD' },
+    { label: 'KDJ', value: 'KDJ' },
+    { label: 'RSI', value: 'RSI' },
+    { label: 'WR', value: 'WR' },
+    { label: 'OBV', value: 'OBV' },
+    { label: 'CCI', value: 'CCI' },
+    { label: 'DMI', value: 'DMI' }
+]
+
+// 自定义品种小数位
+// https://blog.csdn.net/jones2000/article/details/106592730/
+Chart.MARKET_SUFFIX_NAME.GetCustomDecimal = () => goods.value?.decimalplace ?? 2
+
+// 图表周期
+const period = computed(() => {
+    switch (props.cycleType) {
+        case ChartCycleType.Day:
+            return 0
+        case ChartCycleType.Minutes:
+            return 4
+        case ChartCycleType.Minutes5:
+            return 5
+        case ChartCycleType.Minutes30:
+            return 7
+        case ChartCycleType.Minutes60:
+            return 8
+        case ChartCycleType.Hours4:
+            return 12
+        default:
+            return -1
+    }
+})
+
+// https://blog.csdn.net/jones2000/article/details/90272733
+const chartOption = {
+    Symbol: props.symbol,
+    Type: '历史K线图',
+    IsAutoUpdate: false,
+    IsApiPeriod: true, // 每次切换周期请求接口数据
+    NetworkFilter: (data: NetworkFilterData, callback: NetworkFilterCallback) => networkFilter(data, callback),
+    // https://blog.csdn.net/jones2000/article/details/102928907
+    Windows: [
+        { Index: 'MA', Change: false },
+        { Index: 'VOL', Close: false }
+    ],
+    IsShowCorssCursorInfo: false,
+    // https://blog.csdn.net/jones2000/article/details/97682466
+    CorssCursorInfo: {
+        Left: 0,
+        Right: 1,
+    },
+    Border: {
+        Left: 0,
+        Right: 0,
+        Top: 30,
+        Bottom: 25,
+        AutoLeft: { Blank: 15, MinWidth: 30 },
+        AutoRight: { Blank: 15, MinWidth: 30 },
+    },
+    KLine: {
+        Right: 1,
+        // [30001-32000) 秒周期
+        // 0=日线 1=周线 2=月线 3=年线 9=季线  [40001-50000) 自定义日线
+        // 4=1分钟 5=5分钟 6=15分钟 7=30分钟 8=60分钟 11=120分钟 12=240分钟 [20001-30000) 自定义分钟
+        Period: period.value,
+        PageSize: 50,
+        // 最后数据和右边框空白间距,空白的宽度=RightSpaceCount*k线宽度
+        RightSpaceCount: 1,
+        // https://blog.csdn.net/jones2000/article/details/104443471
+        IsShowTooltip: true,
+    },
+    KLineTitle:
+    {
+        IsShowName: false, // 不显示股票名称
+        IsShowSettingInfo: false // 不显示周期/复权
+    },
+    Frame: [
+        {
+            Custom: [
+                {
+                    Type: 0,
+                    Position: 'right',
+                }
+            ],
+            IsShowRightText: false // 是否显示Y轴右侧刻度
+        },
+        {
+            IsShowRightText: false // 是否显示Y轴右侧刻度
+        }
+    ]
+}
+
+// 切换指标
+const changeIndex = (index: number) => {
+    // ChangeIndex(windowIndex, indexName, option)
+    chartInstance.value.ChangeIndex(1, tabs[index].value)
+}
+
+const onReady = (chart: unknown) => {
+    chartInstance.value = chart
+    chartInstance.value.SetOption(chartOption)
+}
+
+quoteWatch(props.goodsCode, (q) => {
+    const data = updateLastData(q)
+    const { JSChartContainer } = chartInstance.value ?? {}
+    // 在 SetOption 之后才会出现 JSChartContainer 属性
+    if (JSChartContainer && data.length) {
+        JSChartContainer.RecvMinuteRealtimeDataV2({
+            symbol: props.symbol,
+            data
+        })
+    }
+})
+
+watch(() => props.cycleType, (val) => {
+    cycleType.value = val
+    if (period.value > -1) {
+        // 切换周期
+        chartInstance.value.ChangePeriod(period.value)
+    }
+})
+</script>
+
+<style lang="less">
+@import './index.less';
+</style>

+ 6 - 0
src/packages/mobile/components/modules/hqchart/index.less

@@ -0,0 +1,6 @@
+.app-chart{
+    display: flex;
+    flex-direction: column;
+    height: 100%;
+    background-color: #000;
+}

+ 35 - 0
src/packages/mobile/components/modules/hqchart/index.vue

@@ -0,0 +1,35 @@
+<template>
+    <div class="app-chart">
+        <Tabs class="app-tabs--info" :data-list="dataList" @change="changePeriod" />
+        <MLine v-bind="{ symbol, goodsCode }" v-if="cycleType === ChartCycleType.Time" />
+        <KLine v-bind="{ symbol, goodsCode, cycleType }" v-else />
+    </div>
+</template>
+
+<script lang="ts" setup>
+import { shallowRef } from 'vue'
+import { ChartCycleType, getChartCycleTypeList } from '@/constants/chart'
+import Tabs from '@/components/base/tabs/index.vue'
+import KLine from './candlestick/index.vue'
+import MLine from './timeline/index.vue'
+
+defineProps({
+    goodsCode: {
+        type: String,
+        required: true
+    }
+})
+
+const symbol = '600000.sh' // 股票代码
+const cycleType = shallowRef(ChartCycleType.Time) // 图表周期类型
+const dataList = getChartCycleTypeList()
+
+// 切换周期
+const changePeriod = (index: number) => {
+    cycleType.value = dataList[index].value
+}
+</script>
+
+<style lang="less">
+@import './index.less';
+</style>

+ 93 - 0
src/packages/mobile/components/modules/hqchart/timeline/index.vue

@@ -0,0 +1,93 @@
+<template>
+    <HQChart @ready="onReady" default-theme="Dark" />
+</template>
+
+<script lang="ts" setup>
+import { shallowRef } from 'vue'
+import { Chart } from 'hqchart'
+import { useFuturesStore } from '@/stores'
+import { useDataset } from '@/hooks/hqchart/timeline/dataset'
+import { NetworkFilterData, NetworkFilterCallback } from '@/hooks/hqchart/timeline/types'
+import HQChart from '@/components/base/hqchart/index.vue'
+
+const props = defineProps({
+    symbol: {
+        type: String,
+        required: true
+    },
+    goodsCode: {
+        type: String,
+        required: true
+    }
+})
+
+const { getTSDataAsync, timeSplit, handleXAxisScale, networkFilter, updateLastData } = useDataset(props.goodsCode)
+const { quoteWatch, getGoodsQuote } = useFuturesStore()
+const goods = getGoodsQuote(props.goodsCode)
+const chartInstance = shallowRef() // 图表实例
+
+// 自定义品种小数位
+// https://blog.csdn.net/jones2000/article/details/106592730/
+Chart.MARKET_SUFFIX_NAME.GetCustomDecimal = () => goods.value?.decimalplace ?? 2
+
+// https://blog.csdn.net/jones2000/article/details/90319619
+const chartOption = {
+    Symbol: props.symbol,
+    Type: '分钟走势图',
+    IsAutoUpdate: false,
+    NetworkFilter: (data: NetworkFilterData, callback: NetworkFilterCallback) => networkFilter(data, callback),
+    IsShowCorssCursorInfo: true,
+    DayCount: 1,
+    Border: {
+        Left: 80,
+        Right: 80,
+        Top: 30,
+        Bottom: 25,
+        AutoLeft: { Blank: 15, MinWidth: 30 },
+        AutoRight: { Blank: 15, MinWidth: 30 },
+    },
+    MinuteLine: {
+        IsShowAveragePrice: false, // 不显示均线
+    },
+    MinuteLineTitle:
+    {
+        IsShowName: false, // 不显示股票名称
+    },
+    Frame: [
+        // {
+        //     Custom: [
+        //         {
+        //             Type: 0,
+        //             Position: 'right',
+        //         }
+        //     ]
+        // },
+        // {
+        //     Height: 0 // 第2个成交量图高度设置0隐藏掉
+        // }
+    ]
+}
+
+const onReady = (chart: unknown) => {
+    chartInstance.value = chart
+    getTSDataAsync.then(() => {
+        // https://blog.csdn.net/jones2000/article/details/105587559
+        const minuteTimeStringData = Chart.JSChart.GetMinuteTimeStringData()
+        const minuteCoordinateData = Chart.JSChart.GetMinuteCoordinateData()
+        // 替换交易时间段
+        minuteTimeStringData.CreateSHSZData = () => minuteTimeStringData.CreateTimeData(timeSplit.value)
+        // 替换X轴刻度信息
+        minuteCoordinateData.GetSHSZData = () => handleXAxisScale(minuteTimeStringData.CreateSHSZData())
+        chartInstance.value.SetOption(chartOption)
+    })
+}
+
+quoteWatch(props.goodsCode, (q) => {
+    const data = updateLastData(q)
+    const { JSChartContainer } = chartInstance.value ?? {}
+    // 在 SetOption 之后才会出现 JSChartContainer 属性
+    if (JSChartContainer && data) {
+        JSChartContainer.RecvMinuteData(data)
+    }
+})
+</script>

+ 8 - 1
src/packages/mobile/views/mine/setting/Index.vue

@@ -10,7 +10,7 @@
                         <app-iconfont icon="g-icon-password">修改密码</app-iconfont>
                     </template>
                 </Cell>
-                <Cell is-link :to="{ name: 'user-cancel' }">
+                <Cell is-link :to="{ name: 'user-cancel' }" v-if="showCancel">
                     <template #title>
                         <app-iconfont icon="g-icon-cancel">注销服务</app-iconfont>
                     </template>
@@ -23,4 +23,11 @@
 <script lang="ts" setup>
 import { Cell, CellGroup } from 'vant'
 import AppIconfont from '@/components/base/iconfont/index.vue'
+
+defineProps({
+    showCancel: {
+        type: Boolean,
+        default: true
+    }
+})
 </script>

+ 3 - 2
src/packages/pc/App.vue

@@ -29,7 +29,8 @@ eventBus.$on('LogoutNotify', (msg) => {
 })
 
 // 接收风控通知
-eventBus.$on('RiskControlNtf', (msg) => {
-  ElMessageBox.alert(msg as string, '风控通知')
+eventBus.$on('RiskToWebNtf', (msg) => {
+  const notify = msg as { title: string, content: string }
+  ElMessageBox.alert(notify.content, notify.title)
 })
 </script>

+ 1 - 1
src/packages/pc/components/modules/hqchart/candlestick/index.vue

@@ -80,7 +80,7 @@ const chartOption = {
     // https://blog.csdn.net/jones2000/article/details/102928907
     Windows: [
         { Index: 'MA', Change: false },
-        { Index: 'VOL', Change: false, Close: false }
+        { Index: 'VOL', Close: false }
     ],
     IsShowCorssCursorInfo: true,
     // https://blog.csdn.net/jones2000/article/details/97682466

+ 4 - 2
src/packages/qdhs/App.vue

@@ -29,9 +29,11 @@ eventBus.$on('LogoutNotify', (msg) => {
 })
 
 // 接收风控通知
-eventBus.$on('RiskControlNtf', (msg) => {
+eventBus.$on('RiskToWebNtf', (msg) => {
+  const notify = msg as { title: string, content: string }
   dialog({
-    message: msg as string,
+    title: notify.title,
+    message: notify.content,
     confirmButtonText: '确定'
   })
 })

+ 4 - 2
src/packages/qxst/App.vue

@@ -29,9 +29,11 @@ eventBus.$on('LogoutNotify', (msg) => {
 })
 
 // 接收风控通知
-eventBus.$on('RiskControlNtf', (msg) => {
+eventBus.$on('RiskToWebNtf', (msg) => {
+  const notify = msg as { title: string, content: string }
   dialog({
-    message: msg as string,
+    title: notify.title,
+    message: notify.content,
     confirmButtonText: '确定'
   })
 })

+ 4 - 2
src/packages/sbyj/App.vue

@@ -29,9 +29,11 @@ eventBus.$on('LogoutNotify', (msg) => {
 })
 
 // 接收风控通知
-eventBus.$on('RiskControlNtf', (msg) => {
+eventBus.$on('RiskToWebNtf', (msg) => {
+  const notify = msg as { title: string, content: string }
   dialog({
-    message: msg as string,
+    title: notify.title,
+    message: notify.content,
     confirmButtonText: '确定'
   })
 })

+ 16 - 3
src/packages/sbyj/router/index.ts

@@ -181,18 +181,31 @@ const routes: Array<RouteRecordRaw> = [
     component: Page,
     children: [
       {
-        path: 'list',
+        path: '',
         name: 'order-list',
         component: () => import('../views/order/list/index.vue'),
       },
-    ],
+      {
+        path: 'history',
+        name: 'history-list',
+        component: () => import('../views/order/history/index.vue'),
+      },
+      {
+        path: 'cancel',
+        name: 'cancel-list',
+        component: () => import('../views/order/history/index.vue'),
+        props: {
+          title: '终止订单'
+        }
+      }
+    ]
   },
   {
     path: '/delivery',
     component: Page,
     children: [
       {
-        path: 'list',
+        path: '',
         name: 'delivery-list',
         component: () => import('../views/delivery/list/index.vue'),
       },

+ 2 - 2
src/packages/sbyj/views/home/main/index.vue

@@ -16,10 +16,10 @@
             <Iconfont label-direction="bottom" icon="g-icon-quote--line">行情</Iconfont>
           </li>
           <li @click="routerTo('order-list')">
-            <Iconfont label-direction="bottom" icon="g-icon-order--line">订单</Iconfont>
+            <Iconfont label-direction="bottom" icon="g-icon-order--line">持有订单</Iconfont>
           </li>
           <li @click="routerTo('delivery-list')">
-            <Iconfont label-direction="bottom" icon="g-icon-delivery--line">交料</Iconfont>
+            <Iconfont label-direction="bottom" icon="g-icon-delivery--line">交料订单</Iconfont>
           </li>
         </ul>
       </app-block>

+ 5 - 2
src/packages/sbyj/views/mine/index.vue

@@ -48,10 +48,13 @@
         <app-block class="mine-iconbar">
             <ul>
                 <li @click="routerTo('order-list')">
-                    <Iconfont label-direction="bottom" icon="g-icon-order--line">订单</Iconfont>
+                    <Iconfont label-direction="bottom" icon="g-icon-order--line">持有订单</Iconfont>
+                </li>
+                <li @click="routerTo('cancel-list')">
+                    <Iconfont label-direction="bottom" icon="g-icon-order-cancel--line">终止订单</Iconfont>
                 </li>
                 <li @click="routerTo('delivery-list')">
-                    <Iconfont label-direction="bottom" icon="g-icon-delivery--line">交料</Iconfont>
+                    <Iconfont label-direction="bottom" icon="g-icon-delivery--line">交料订单</Iconfont>
                 </li>
             </ul>
         </app-block>

+ 65 - 72
src/packages/sbyj/views/order/history/index.vue

@@ -1,67 +1,65 @@
 <template>
-    <app-modal direction="right" height="100%" v-model:show="showModal">
-        <app-view>
-            <template #header>
-                <app-navbar title="全部订单" @back="closed" />
-            </template>
-            <app-pull-refresh ref="pullRefreshRef" v-model:loading="loading" v-model:error="error"
-                v-model:pageIndex="pageIndex" :page-count="pageCount" @refresh="run">
-                <div class="g-order-list">
-                    <div class="g-order-list__box" v-for="(item, index) in dataList" :key="index">
-                        <div class="g-order-list__titlebar">
-                            <div class="left">
-                                <h4 :class="item.buyorsell === BuyOrSell.Buy ? 'g-price-up' : 'g-price-down'">
-                                    {{ item.buyorsell === BuyOrSell.Buy ? '买料:' : '卖料:' }}
-                                    {{ item.goodscode + '/' + item.goodsname }}
-                                </h4>
-                            </div>
-                        </div>
-                        <div class="g-order-list__content">
-                            <ul>
-                                <li>
-                                    <span>订单重量</span>
-                                    <span>
-                                        {{ item.openqty * item.agreeunit }}
-                                        {{ getGoodsUnitName(item.goodunitid) }}
-                                    </span>
-                                </li>
-                                <li>
-                                    <span>可用重量</span>
-                                    <span>
-                                        {{ enableqty(item) + getGoodsUnitName(item.goodunitid) }}
-                                    </span>
-                                </li>
-                                <li>
-                                    <span>订单金额</span>
-                                    <span>{{ item.tradeamount }}</span>
-                                </li>
-                                <li>
-                                    <span>订单价格</span>
-                                    <span>{{ formatDecimal(item.openprice) }}</span>
-                                </li>
-                                <li>
-                                    <span>已付定金</span>
-                                    <span>{{ item.payeddeposit }}</span>
-                                </li>
-                                <li>
-                                    <span>已补定金</span>
-                                    <span>{{ handleNumberValue(item.restockdeposit) }}</span>
-                                </li>
-                                <li>
-                                    <span>订单天数</span>
-                                    <span>{{ item.holddays }}天</span>
-                                </li>
-                                <li>
-                                    <span>滞纳金</span>
-                                    <span>{{ handleNumberValue(item.callatefee) }}</span>
-                                </li>
-                            </ul>
+    <app-view>
+        <template #header>
+            <app-navbar :title="title" />
+        </template>
+        <app-pull-refresh ref="pullRefreshRef" v-model:loading="loading" v-model:error="error" v-model:pageIndex="pageIndex"
+            :page-count="pageCount" @refresh="run">
+            <div class="g-order-list">
+                <div class="g-order-list__box" v-for="(item, index) in dataList" :key="index">
+                    <div class="g-order-list__titlebar">
+                        <div class="left">
+                            <h4 :class="item.buyorsell === BuyOrSell.Buy ? 'g-price-up' : 'g-price-down'">
+                                {{ item.buyorsell === BuyOrSell.Buy ? '买料:' : '卖料:' }}
+                                {{ item.goodscode + '/' + item.goodsname }}
+                            </h4>
                         </div>
                     </div>
+                    <div class="g-order-list__content">
+                        <ul>
+                            <li>
+                                <span>订单重量</span>
+                                <span>
+                                    {{ item.openqty * item.agreeunit }}
+                                    {{ getGoodsUnitName(item.goodunitid) }}
+                                </span>
+                            </li>
+                            <li>
+                                <span>可用重量</span>
+                                <span>
+                                    {{ enableqty(item) + getGoodsUnitName(item.goodunitid) }}
+                                </span>
+                            </li>
+                            <li>
+                                <span>订单金额</span>
+                                <span>{{ item.tradeamount }}</span>
+                            </li>
+                            <li>
+                                <span>订单价格</span>
+                                <span>{{ formatDecimal(item.openprice) }}</span>
+                            </li>
+                            <li>
+                                <span>已付定金</span>
+                                <span>{{ item.payeddeposit }}</span>
+                            </li>
+                            <li>
+                                <span>已补定金</span>
+                                <span>{{ handleNumberValue(item.restockdeposit) }}</span>
+                            </li>
+                            <li>
+                                <span>订单天数</span>
+                                <span>{{ item.holddays }}天</span>
+                            </li>
+                            <li>
+                                <span>滞纳金</span>
+                                <span>{{ handleNumberValue(item.callatefee) }}</span>
+                            </li>
+                        </ul>
+                    </div>
                 </div>
-            </app-pull-refresh>
-        </app-view>
-    </app-modal>
+            </div>
+        </app-pull-refresh>
+    </app-view>
 </template>
 
 <script lang="ts" setup>
@@ -71,10 +69,15 @@ import { BuyOrSell } from '@/constants/order'
 import { getGoodsUnitName } from '@/constants/unit'
 import { useRequest } from '@/hooks/request'
 import { queryTradeHolderDetailEx } from '@/services/api/order'
-import AppModal from '@/components/base/modal/index.vue'
 import AppPullRefresh from '@mobile/components/base/pull-refresh/index.vue'
 
-const showModal = shallowRef(true)
+defineProps({
+    title:{
+        type:String,
+        default:'全部订单'
+    }
+})
+
 const error = shallowRef(false)
 const dataList = shallowRef<Model.TradeHolderDetailExRsp[]>([])
 
@@ -97,14 +100,4 @@ const { loading, pageIndex, pageCount, run } = useRequest(queryTradeHolderDetail
         error.value = true
     }
 })
-
-// 关闭弹窗
-const closed = () => {
-    showModal.value = false
-}
-
-// 暴露组件属性给父组件调用
-defineExpose({
-    closed,
-})
 </script>

+ 1 - 2
src/packages/sbyj/views/order/list/index.vue

@@ -3,7 +3,7 @@
         <template #header>
             <app-navbar title="我的订单">
                 <template #right>
-                    <div class="button-more" @click="openComponent('history')">
+                    <div class="button-more" @click="$router.push({ name: 'history-list' })">
                         <span>更多</span>
                     </div>
                 </template>
@@ -95,7 +95,6 @@ import { useSBYJOrder } from '@/business/order'
 import AppPullRefresh from '@mobile/components/base/pull-refresh/index.vue'
 
 const componentMap = new Map<string, unknown>([
-    ['history', defineAsyncComponent(() => import('../history/index.vue'))], // 更多
     ['detail', defineAsyncComponent(() => import('../detail/index.vue'))], // 详情
     ['supplement', defineAsyncComponent(() => import('./components/supplement-deposit/index.vue'))], // 补充
     ['delivery', defineAsyncComponent(() => import('./components/market-order-delivery/index.vue'))], // 交收

+ 4 - 2
src/packages/tc/App.vue

@@ -29,9 +29,11 @@ eventBus.$on('LogoutNotify', (msg) => {
 })
 
 // 接收风控通知
-eventBus.$on('RiskControlNtf', (msg) => {
+eventBus.$on('RiskToWebNtf', (msg) => {
+  const notify = msg as { title: string, content: string }
   dialog({
-    message: msg as string,
+    title: notify.title,
+    message: notify.content,
     confirmButtonText: '确定'
   })
 })

+ 4 - 2
src/packages/tjmd/App.vue

@@ -29,9 +29,11 @@ eventBus.$on('LogoutNotify', (msg) => {
 })
 
 // 接收风控通知
-eventBus.$on('RiskControlNtf', (msg) => {
+eventBus.$on('RiskToWebNtf', (msg) => {
+  const notify = msg as { title: string, content: string }
   dialog({
-    message: msg as string,
+    title: notify.title,
+    message: notify.content,
     confirmButtonText: '确定'
   })
 })

+ 9 - 6
src/packages/tjmd/router/index.ts

@@ -256,8 +256,11 @@ const routes: Array<RouteRecordRaw> = [
         path: 'setting',
         name: 'mine-setting',
         component: () => import('@mobile/views/mine/setting/Index.vue'),
-      },
-    ],
+        props: {
+          showCancel: false
+        }
+      }
+    ]
   },
   {
     path: '/notice',
@@ -267,8 +270,8 @@ const routes: Array<RouteRecordRaw> = [
         path: '',
         name: 'notice-list',
         component: () => import('@mobile/views/notice/list/index.vue'),
-      },
-    ],
+      }
+    ]
   },
   {
     path: '/rules',
@@ -312,8 +315,8 @@ const routes: Array<RouteRecordRaw> = [
         component: () => import("@mobile/views/rules/fwrx/Index.vue"),
         meta: {
           ignoreAuth: true,
-        },
-      },
+        }
+      }
     ]
   }
 ]

+ 2 - 2
src/packages/tjmd/views/mine/Index.vue

@@ -88,7 +88,7 @@
                         <Iconfont icon="g-icon-profile">个人信息</Iconfont>
                     </template>
                 </Cell>
-                <Cell is-link :to="{ name: 'rules-zcxy' }">
+                <!-- <Cell is-link :to="{ name: 'rules-zcxy' }">
                     <template #title>
                         <Iconfont icon="g-icon-zcxy">用户注册协议</Iconfont>
                     </template>
@@ -97,7 +97,7 @@
                     <template #title>
                         <Iconfont icon="g-icon-yszc">关于隐私</Iconfont>
                     </template>
-                </Cell>
+                </Cell> -->
                 <Cell is-link :to="{ name: 'rules-fwrx' }">
                     <template #title>
                         <Iconfont icon="g-icon-fwrx">服务热线</Iconfont>

+ 4 - 2
src/packages/zrwyt/App.vue

@@ -29,9 +29,11 @@ eventBus.$on('LogoutNotify', (msg) => {
 })
 
 // 接收风控通知
-eventBus.$on('RiskControlNtf', (msg) => {
+eventBus.$on('RiskToWebNtf', (msg) => {
+  const notify = msg as { title: string, content: string }
   dialog({
-    message: msg as string,
+    title: notify.title,
+    message: notify.content,
     confirmButtonText: '确定'
   })
 })

+ 6 - 5
src/services/websocket/message.ts

@@ -85,17 +85,18 @@ export async function pushMessage50(pkg: Package50, contentType: 'encrypted' | '
         }
         case FunCode.RiskToWebNtf: {
             try {
-                //console.log('接收到风控通知', funCode)
+                // console.log('接收到风控通知', funCode)
                 if (contentType === 'encrypted') {
                     const res = await decodeProto<Proto.RiskToWebNtf>('RiskToWebNtf', content)
-                    eventBus.$emit('RiskToWebNtf', res.Content)
+                    const msg = JSON.parse(res.Content)
+                    eventBus.$emit('RiskToWebNtf', msg)
                 } else {
                     const res = new TextDecoder().decode(content)
-                    const data = JSON.parse(res)
-                    eventBus.$emit('RiskToWebNtf', data.Content)
+                    const msg = JSON.parse(JSON.parse(res).Content)
+                    eventBus.$emit('RiskToWebNtf', msg)
                 }
             } catch (err) {
-                console.error('报文解析失败', FunCode.RiskToWebNtf, err)
+                console.error('报文解析失败', funCode, err)
             }
             break
         }

Неке датотеке нису приказане због велике количине промена