li.shaoyi 2 年 前
コミット
efe6263979

+ 0 - 0
doc/碳中心logo曲线.ai → doc/甘肃碳交.ai


ファイルの差分が大きいため隠しています
+ 34 - 0
doc/青岛海商.ai


+ 19 - 20
public/config/router.json

@@ -77,50 +77,35 @@
                         "sort": 1,
                         "title": "预售认购",
                         "code": "bottom_presell_presellposition",
-                        "component": "views/footer/presell/presellposition/index.vue",
-                        "children": [
-                            
-                        ]
+                        "component": "views/footer/presell/presellposition/index.vue"
                     },
                     {
                         "authType": 2,
                         "sort": 2,
                         "title": "转让持仓",
                         "code": "bottom_presell_transferposition",
-                        "component": "views/footer/presell/transferposition/index.vue",
-                        "children": [
-                            
-                        ]
+                        "component": "views/footer/presell/transferposition/index.vue"
                     },
                     {
                         "authType": 2,
                         "sort": 3,
                         "title": "转让委托",
                         "code": "bottom_presell_transferorder",
-                        "component": "views/footer/presell/transferorder/index.vue",
-                        "children": [
-                            
-                        ]
+                        "component": "views/footer/presell/transferorder/index.vue"
                     },
                     {
                         "authType": 2,
                         "sort": 4,
                         "title": "转让成交",
                         "code": "bottom_presell_transfertrader",
-                        "component": "views/footer/presell/transfertrader/index.vue",
-                        "children": [
-                            
-                        ]
+                        "component": "views/footer/presell/transfertrader/index.vue"
                     },
                     {
                         "authType": 2,
                         "sort": 5,
                         "title": "点选交收",
                         "code": "bottom_presell_onlinedelivery",
-                        "component": "views/footer/presell/onlinedelivery/index.vue",
-                        "children": [
-                            
-                        ]
+                        "component": "views/footer/presell/onlinedelivery/index.vue"
                     }
                 ]
             },
@@ -250,6 +235,20 @@
                                 "title": "中远期挂牌",
                                 "code": "market_trade_goods_50102",
                                 "component": "views/market/trade/goods/list/index.vue"
+                            },
+                            {
+                                "authType": 2,
+                                "sort": 3,
+                                "title": "周结挂牌",
+                                "code": "market_trade_goods_50103",
+                                "component": "views/market/trade/goods/list/index.vue"
+                            },
+                            {
+                                "authType": 2,
+                                "sort": 4,
+                                "title": "月结挂牌",
+                                "code": "market_trade_goods_50104",
+                                "component": "views/market/trade/goods/list/index.vue"
                             }
                         ]
                     },

+ 1 - 0
src/hooks/echarts/candlestick/dataset.ts

@@ -4,6 +4,7 @@ import { EchartsDataset, Candlestick, MACD } from './types'
 export function useDataset() {
     const dataset = reactive<EchartsDataset>({
         invalid: [],
+        precision: 0,
         candlestick: {
             dimensions: ['date', 'open', 'close', 'lowest', 'highest', 'ma5', 'ma10', 'ma15'],
             source: [],

+ 1 - 0
src/hooks/echarts/candlestick/types.ts

@@ -6,6 +6,7 @@ import { ECOption } from '@/components/base/echarts/core'
  */
 export interface EchartsDataset {
     invalid: number[]; // 行情历史数据中所有补充数据的索引位置(用于指标计算)
+    precision: number; // 小数位精度
     candlestick: Dataset<Candlestick>;
     macd: Dataset<MACD>;
     vol: Dataset<VOL>;

+ 4 - 4
src/hooks/echarts/timeline/dataset.ts

@@ -7,7 +7,7 @@ export function useDataset() {
         invalid: [],
         rawDate: [],
         yestclose: 0,
-        decimal: 0,
+        precision: 0,
         maxMark: 0,
         minMark: 0,
         interval: 0,
@@ -26,7 +26,7 @@ export function useDataset() {
         dataset.invalid = [];
         dataset.rawDate = [];
         dataset.yestclose = 0;
-        dataset.decimal = 0;
+        dataset.precision = 0;
         dataset.maxMark = 0;
         dataset.minMark = 0;
         dataset.interval = 0;
@@ -42,7 +42,7 @@ export function useDataset() {
         const { date, close, ma5 } = dataset.timeline.source;
         const { preSettle, decimalPlace, runSteps, historyDatas } = rawData;
 
-        dataset.decimal = decimalPlace;
+        dataset.precision = decimalPlace;
         dataset.yestclose = preSettle;
 
         // 开盘交易时间
@@ -98,7 +98,7 @@ export function useDataset() {
     // 计算图表最高最低指标线
     const calcMarkLine = () => {
         const { close } = dataset.timeline.source;
-        const point = Math.pow(10, -dataset.decimal) * 20; // 图表上下保留20个报价点数
+        const point = Math.pow(10, -dataset.precision) * 20; // 图表上下保留20个报价点数
         let max = Math.max(...close); // 取历史行情最高价
         let min = Math.min(...close); // 取历史行情最低价
 

+ 6 - 5
src/hooks/echarts/timeline/options.ts

@@ -71,7 +71,7 @@ export function useOptions(dataset: EchartsDataset) {
     }
 
     const initOptions = () => {
-        const { timeline, maxMark, minMark, interval, yestclose, decimal } = dataset;
+        const { timeline, maxMark, minMark, interval, yestclose, precision } = dataset;
         const { colors } = options;
 
         options.timeline = {
@@ -85,7 +85,7 @@ export function useOptions(dataset: EchartsDataset) {
             },
             axisPointer: {
                 label: {
-                    precision: decimal, // 小数点精度
+                    precision,
                     backgroundColor: 'rgba(128,128,128,.75)',
                 }
             },
@@ -107,10 +107,10 @@ export function useOptions(dataset: EchartsDataset) {
                     min: minMark,
                     interval,
                     axisLabel: {
-                        formatter: (val: number) => val.toFixed(decimal),
+                        formatter: (val: number) => val.toFixed(precision),
                         color: (val) => {
                             if (val) {
-                                const num = Number(val).toFixed(decimal);
+                                const num = Number(val).toFixed(precision);
                                 if (Number(num) > yestclose) return colors.upColor;
                                 if (Number(num) < yestclose) return colors.downColor;
                             }
@@ -133,7 +133,7 @@ export function useOptions(dataset: EchartsDataset) {
                         formatter: (val: number) => calcRatio(val),
                         color: (val) => {
                             if (val) {
-                                const num = Number(val).toFixed(decimal);
+                                const num = Number(val).toFixed(precision);
                                 if (Number(num) > yestclose) return colors.upColor;
                                 if (Number(num) < yestclose) return colors.downColor;
                             }
@@ -181,6 +181,7 @@ export function useOptions(dataset: EchartsDataset) {
                             type: 'dashed',
                             color: 'rgba(128,128,128,.3)'
                         },
+                        precision,
                         data: [
                             {
                                 yAxis: timeline.source.close[timeline.source.close.length - 1] ?? '--', // 最新价

+ 1 - 1
src/hooks/echarts/timeline/types.ts

@@ -7,7 +7,7 @@ export interface EchartsDataset {
     invalid: number[]; // 行情历史数据中所有补充数据的索引位置(用于指标计算)
     rawDate: string[]; // 原始日期
     yestclose: number; // 昨日收盘价
-    decimal: number; // 小数位
+    precision: number; // 小数位精度
     maxMark: number; // Y轴最大刻度
     minMark: number; // Y轴最小刻度
     interval: number, // Y轴间隔高度

+ 1 - 1
src/packages/pc/components/modules/auth-operation/index.vue

@@ -30,7 +30,7 @@
             <ul v-else>
                 <li v-for="(item, index) in dataList" :key="index">
                     <el-button :class="item.className" :type="item.buttonType" size="small"
-                        :disabled="item.code === componentId" @click="openComponent(item.code)" :link="linkButton">
+                        :disabled="item.code === componentId" @click.stop="openComponent(item.code)" :link="linkButton">
                         <el-icon v-if="item.icon">
                             <component :is="item.icon" />
                         </el-icon>

+ 8 - 3
src/packages/pc/views/footer/goods/position/index.vue

@@ -21,7 +21,7 @@
         </template>
         <!-- 操作 -->
         <template #operate="{ row }">
-            <el-button type="primary" size="small" @click="showComponent(row)">转让</el-button>
+            <app-auth-operation :code="code" :options="{ selectedRow: row }" />
         </template>
         <template #footer>
             <component ref="componentRef" v-bind="{ selectedRow }" :is="componentMap.get(componentId)"
@@ -32,11 +32,16 @@
 
 <script lang="ts" setup>
 import { shallowRef, defineAsyncComponent } from 'vue'
+import { handleNumberValue, formatDecimal } from '@/filters'
 import { getBuyOrSellName } from '@/constants/order'
 import { useComponent } from '@/hooks/component'
 import { usePosition } from '@/business/position'
 import AppTable from '@pc/components/base/table/index.vue'
-import { handleNumberValue, formatDecimal } from '@/filters'
+import AppAuthOperation from '@pc/components/modules/auth-operation/index.vue'
+
+defineProps({
+    code: String
+})
 
 const componentMap = new Map<string, unknown>([
     ['delivery', defineAsyncComponent(() => import('./components/delivery/index.vue'))],
@@ -58,7 +63,7 @@ const tableColumns = shallowRef<Model.TableColumn[]>([
     { prop: 'curholderamount', label: '持仓金额' },
     { prop: 'marketValue', label: '市值' },
     { prop: 'closepl', label: '浮动盈亏' },
-    { prop: 'operate', label: '操作', fixed: 'right', width: 80 },
+    { prop: 'operate', label: '操作', fixed: 'right', width: 140 },
 ])
 
 const showComponent = (row: Model.TradePositionRsp) => {

+ 6 - 0
src/packages/pc/views/market/trade/goods/list/index.vue

@@ -120,6 +120,12 @@ onMounted(() => {
         case 'market_trade_goods_50102':
             setMarketId(50102)
             break
+        case 'market_trade_goods_50103':
+            setMarketId(50103)
+            break
+        case 'market_trade_goods_50104':
+            setMarketId(50104)
+            break
     }
     const goodsCodes = marketGoodsList.value.map((e) => e.goodscode)
     subscribe.start(...goodsCodes)

+ 11 - 6
src/packages/pc/views/market/trade/presell/ballot/index.vue

@@ -23,7 +23,7 @@ import { getFileUrl } from '@/filters'
 import { useComponent } from '@/hooks/component'
 import { useRequest } from '@/hooks/request'
 import { useDataFilter } from '@/hooks/datatable'
-import { getWRPresaleStatusList, getWRPresaleStatusName } from '@/constants/order'
+import { getWRPresaleStatusName } from '@/constants/order'
 import { queryPresaleAuctions } from '@/services/api/presale'
 import AppTable from '@pc/components/base/table/index.vue'
 import AppFilter from '@pc/components/base/table-filter/index.vue'
@@ -39,6 +39,7 @@ const selectedRow = shallowRef<Model.PresaleAuctionsRsp>()
 const { dataList, run, loading } = useRequest(queryPresaleAuctions, {
     params: {
         presalemode: 5,
+        presalestatus: 2
     }
 })
 
@@ -54,14 +55,18 @@ const tableColumns = shallowRef<Model.TableColumn[]>([
 
 filterOptons.selectList = [
     {
-        key: 'presalestatusstr',
-        options: getWRPresaleStatusList(),
-    },
+        key: 'presalestatus',
+        selectedValue: 2,
+        options: [
+            { label: getWRPresaleStatusName(1), value: 1 },
+            { label: getWRPresaleStatusName(2), value: 2 },
+        ],
+        locked: true,
+    }
 ]
 
 filterOptons.buttonList = [
-    { lable: '查询', className: 'el-button--info', onClick: () => onSearch() },
-    { lable: '重置', className: 'el-button--info', onClick: () => onSearch(true) }
+    { lable: '查询', className: 'el-button--info', onClick: () => onSearch() }
 ]
 
 const onSearch = (clear = false) => {

+ 6 - 5
src/stores/modules/position.ts

@@ -39,17 +39,18 @@ export const usePositionStore = defineStore(() => {
 
         state.positionList.forEach((item) => {
             const quote = futuresStore.getGoodsQuote(item.goodscode)
-            const { last = 0, lastColor = '' } = quote.value ?? {}
+            const { presettle = 0, last = 0 } = quote.value ?? {}
+            const price = last || presettle // 没有最新价取昨结价
 
             // 计算市值 = 现价 * 数量 * 合约单位
-            const marketValue = last ? last * item.curpositionqty * item.agreeunit : 0
+            const marketValue = price ? price * item.curpositionqty * item.agreeunit : 0
             // 计算浮动盈亏
-            const closepl = last ? (marketValue - item.curholderamount) * (item.buyorsell === BuyOrSell.Buy ? 1 : -1) : 0
+            const closepl = price ? (marketValue - item.curholderamount) * (item.buyorsell === BuyOrSell.Buy ? 1 : -1) : 0
 
             result.push({
                 ...item,
-                last,
-                lastColor,
+                last: price,
+                lastColor: handlePriceColor(price, presettle),
                 closepl,
                 closeplColor: handlePriceColor(closepl, 0),
                 marketValue,

この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません