Handy_Cao 1 jaar geleden
bovenliggende
commit
a5bc63e261

+ 148 - 98
public/locales/en-US.json

@@ -18,7 +18,9 @@
         "ikonw": "I Konw",
         "exit": "exit",
         "tryagain": "try again",
-        "loading": "loading..."
+        "loading": "loading...",
+        "nomore": "No more",
+        "requestfailure": "Request failed, click Reload"
     },
     "tabbar": {
         "home": "Home",
@@ -48,15 +50,15 @@
         "listing": "Listing",
         "pickup": "Pick Up",
         "details": "Details",
-        "deposit": "补足定金",
-        "deposit2": "追加定金",
-        "close": "平仓",
+        "deposit": "Make Up",
+        "deposit2": "Add On",
+        "close": "Close",
         "default": "Breach",
         "default2": "ApplyBreach",
         "modify": "Modify",
         "modify2": "Modify Info",
-        "extension": "延期申请",
-        "execution": "立即执行",
+        "extension": "Delay",
+        "execution": "Execute",
         "payment": "Payment",
         "disagree": "Disagree",
         "agree": "Agree"
@@ -98,6 +100,7 @@
     },
     "quote": {
         "goodsname": "Name/Code",
+        "refgoodsname": "RefGoodsName",
         "averageprice": "Average",
         "last": "last",
         "rise": "Up Down",
@@ -113,6 +116,8 @@
         "askvolume": "AskVolume",
         "bid": "BidPrice",
         "ask": "AskPrice",
+        "time": "Time",
+        "vol": "VOL",
         "totalvolume": "Total Volume",
         "totalturnover": "Total Turnover",
         "buyhall": "Buy Hall",
@@ -128,6 +133,8 @@
         "transfersell": "Transfer Sell",
         "buy": "Buy",
         "selll": "Sell",
+        "bidlisting": "Bid Orders",
+        "asklisting": "Ask Orders",
         "bid1": "Bid1",
         "bid2": "Bid2",
         "bid3": "Bid3",
@@ -177,6 +184,34 @@
             "remainqty": "RemainQty",
             "listingprice": "ListingPrice",
             "taaccount": "TaAccount"
+        },
+        "presale": {
+            "startprice": "StartPrice",
+            "presalehistory": "Pre-sale History",
+            "starttime": "StartTime:",
+            "endtime": "EndTime:",
+            "presalebidding": "Pre-sale Bidding"
+        },
+        "swap": {
+            "title": "Listing",
+            "floatprice": "Float Price",
+            "fixprice": "Fix Price",
+            "tips1": "Please sign the corresponding contract through the menu of 'Mine' - 'Agreement Signing' function first!",
+            "tips2": "If there is no real-name authentication, please go to real-name authentication first. If you have submitted real-name authentication, please wait patiently for the approval!",
+            "tips3": "The contract has been submitted for signing, please wait patiently for approval!"
+        },
+        "pricing": {
+            "title": "Trade",
+            "buyorsell": "BuyOrSell",
+            "pricemode": "PriceMode",
+            "orderqty": "OrderQty",
+            "marketmaxsub": "MarketMaxSub",
+            "price": "OrderPrice",
+            "enableQty": "Estimate Buy Qty",
+            "deposit": "Deposit",
+            "avaiableMoney": "Avaiable Funds",
+            "tips1": "Please enter the order qty",
+            "tips2": "Please enter the order price"
         }
     },
     "order": {
@@ -185,131 +220,138 @@
             "title": "Goods Order",
             "title2": "History Goods Order",
             "subtitle": "Goods Order Information",
-            "goodsname": "name/code",
-            "buyorsell": "direction",
-            "buildtype": "buildtype",
-            "orderqty": "orderqty",
-            "orderprice": "orderprice",
-            "tradeqty": "tradeqty",
-            "orderstatus": "orderstatus",
-            "ordertime": "ordertime",
-            "orderid": "orderid"
+            "goodsname": "Name/Codee",
+            "buyorsell": "BuyOrSell",
+            "buildtype": "BuildType",
+            "orderqty": "OrderQty",
+            "orderprice": "OrderPrice",
+            "tradeqty": "TradeQty",
+            "orderstatus": "OrderStatus",
+            "ordertime": "OrderTime",
+            "orderid": "OrderID"
         },
         "goodstrade": {
             "title": "Goods Trade",
             "title2": "History Goods Trade",
             "subtitle": "Goods Trade Information",
-            "goodsname": "name/code",
-            "buyorsell": "direction",
-            "buildtype": "buildtype",
-            "tradeqty": "tradeqty",
-            "tradeprice": "tradeprice",
-            "charge": "charge",
-            "closepl": "closepl",
-            "tradetime": "tradetime",
-            "tradeid": "tradeid"
+            "goodsname": "Name/Code",
+            "buyorsell": "BuyOrSell",
+            "buildtype": "BuildType",
+            "tradeqty": "TradeQty",
+            "tradeprice": "TradePrice",
+            "charge": "Charge",
+            "closepl": "Close Pl",
+            "tradetime": "TradeTime",
+            "tradeid": "TradeID"
         },
         "listingorder": {
             "title": "Listing Order",
             "title2": "History Listing Order",
             "subtitle": "Listing Order Information",
-            "goodsname": "name/code",
-            "warehousename": "warehouse",
-            "wrtradetype": "wrtradetype",
-            "buyorsell": "direction",
-            "fixedprice": "fixedprice",
-            "orderqty": "orderqty",
-            "tradeqty": "tradeqty",
-            "cancelqty": "cancelqty",
-            "ordertime": "ordertime",
-            "wrtradeorderstatus": "orderstatus",
-            "wrtradeorderid": "orderid"
+            "goodsname": "Name/Code",
+            "warehousename": "Warehouse",
+            "wrtradetype": "WrTradeType",
+            "buyorsell": "BuyOrSell",
+            "fixedprice": "FixedPrice",
+            "orderqty": "OrderQty",
+            "tradeqty": "TradeQty",
+            "cancelqty": "CancelQty",
+            "ordertime": "OrderTime",
+            "orderdate": "OrderDate",
+            "wrtradeorderstatus": "OrderStatus",
+            "wrtradeorderid": "WrTradeOrderID"
         },
         "listingtrade": {
             "title": "Listing Trade",
             "title2": "History Listing Trade",
             "subtitle": "Listing Trade Information",
-            "goodsname": "name/code",
-            "warehousename": "warehouse",
-            "wrtradetype": "wrtradetype",
-            "buyorsell": "direction",
-            "tradeprice": "tradeprice",
-            "tradeqty": "tradeqty",
-            "tradeamount": "tradeamount",
-            "tradetime": "tradetime",
-            "matchusername": "matchusername",
-            "wrtradedetailid": "wrtradedetailid"
+            "goodsname": "Name/Code",
+            "warehousename": "Warehouse",
+            "wrtradetype": "WrTradeType",
+            "buyorsell": "BuyOrSell",
+            "tradeprice": "TradePrice",
+            "tradeqty": "TradeQty",
+            "tradeamount": "TradeAmount",
+            "tradetime": "TradeTime",
+            "matchusername": "MatchUserName",
+            "wrtradedetailid": "WrTradeDetailID"
         },
         "presale": {
             "title": "Presale Subscription",
             "subtitle": "Presale Subscription Information",
-            "goodsname": "name/code",
-            "orderqty": "orderqty",
-            "orderprice": "orderprice",
-            "orderamount": "orderamount",
-            "presaledepositalgorithm": "presaledepositalgorithm",
-            "presaledepositvalue": "presaledeposit",
-            "freezemargin": "freezemargin",
-            "sellname": "sellname",
-            "starttime": "starttime",
-            "endtime": "endtime",
-            "orderstatus": "orderstatus",
-            "ordertime": "ordertime",
-            "tradeprice": "tradeprice",
-            "tradeqty": "tradeqty",
-            "orderid": "orderid"
+            "goodsname": "Name/Code",
+            "orderqty": "OrderQty",
+            "orderprice": "OrderPrice",
+            "orderamount": "OrderAmount",
+            "presaledepositalgorithm": "PreSaleDepositAlgorithm",
+            "presaledepositvalue": "PreSaleDeposit",
+            "freezemargin": "freezeMargin",
+            "sellname": "SellName",
+            "starttime": "StartTime",
+            "endtime": "EndTime",
+            "orderstatus": "OrderStatus",
+            "ordertime": "OrderTime",
+            "tradeprice": "TradePrice",
+            "tradeqty": "TradeQty",
+            "orderid": "OrderID"
         },
         "transferorder": {
             "title": "Transfer Order",
             "subtitle": "Transfer Order Information",
-            "goodsname": "name/code",
-            "orderqty": "orderqty",
-            "orderprice": "orderprice",
-            "presaleprice": "presaleprice",
-            "tradeqty": "tradeqty",
-            "orderstatus": "orderstatus",
-            "ordertime": "ordertime",
-            "orderid": "orderid"
+            "goodsname": "Name/Code",
+            "orderqty": "OrderQty",
+            "orderprice": "OrderPrice",
+            "presaleprice": "PreSalePrice",
+            "tradeqty": "TradeQty",
+            "orderstatus": "OrderStatus",
+            "ordertime": "OrderTime",
+            "orderid": "OrderID"
         },
         "transfertrade": {
             "title": "Transfer Trade",
             "subtitle": "Transfer Trade Information",
-            "goodsname": "name/code",
-            "buyorsell": "direction",
-            "tradeqty": "tradeqty",
-            "tradeprice": "tradeprice",
-            "presaleprice": "presaleprice",
-            "closepl": "closepl",
-            "accountname": "accountname",
-            "tradetime": "tradetime",
-            "orderid": "orderid"
+            "goodsname": "Name/Code",
+            "buyorsell": "BuyOrSell",
+            "tradeqty": "TradeQty",
+            "tradeprice": "TradePrice",
+            "presaleprice": "PreSalePrice",
+            "closepl": "ClosePl",
+            "accountname": "AccountName",
+            "tradetime": "TradeTime",
+            "orderid": "OrderID"
         },
         "swaporder": {
             "title": "Swap Order",
             "subtitle": "Order Information",
-            "goodsname": "name/code",
-            "buyorsell": "direction",
-            "orderqty": "orderqty",
-            "orderprice": "orderprice",
-            "tradeqty": "tradeqty",
-            "orderstatus": "orderstatus",
-            "ordertime": "ordertime",
-            "orderid": "orderid"
+            "goodsname": "Name/Code",
+            "buyorsell": "BuyOrSell",
+            "orderqty": "OrderQty",
+            "orderprice": "OrderPrice",
+            "tradeqty": "TradeQty",
+            "orderstatus": "OrderStatus",
+            "ordertime": "OrderTime",
+            "orderid": "OrderID"
         },
         "swaptrade": {
             "title": "Swap Trade",
             "subtitle": "Trade Information",
-            "goodsname": "name/code",
-            "buyorsell": "direction",
-            "buildtype": "buildtype",
-            "tradeqty": "tradeqty",
-            "tradeprice": "tradeprice",
-            "tradeamount": "tradeamount",
-            "charge": "charge",
-            "closepl": "closepl",
-            "matchaccountid": "matchaccountid",
-            "tradetime": "tradetime",
-            "tradeid": "tradeid"
+            "goodsname": "Name/Code",
+            "buyorsell": "BuyOrSell",
+            "buildtype": "BuildType",
+            "tradeqty": "TradeQty",
+            "tradeprice": "TradePrice",
+            "tradeamount": "TradeAmount",
+            "charge": "Charge",
+            "closepl": "ClosePl",
+            "matchaccountid": "MatchAccountid",
+            "tradetime": "TradeTime",
+            "tradeid": "TradeID"
+        },
+        "pricingorder": {
+            "title": "Pricing Order"
+        },
+        "pricingtrade": {
+            "title": "Pricing Trade"
         }
     },
     "position": {
@@ -369,11 +411,12 @@
         },
         "presale": {
             "title": "PreSale Position",
+            "title1": "PreSale Position Detail",
             "subtitle": "PreSale Position Info",
             "goodsname": "Name/Code",
             "sellname": "SellName",
             "starttime": "StartTime",
-            "endtime": "EndTime:",
+            "endtime": "EndTime",
             "tradeqty": "TradeQty",
             "openprice": "OpenPrice",
             "tradeamount": "TradeAmount",
@@ -381,7 +424,8 @@
             "transferdeposit": "TransferDeposit",
             "depositremain": "DepositRemain",
             "paystatus": "PayStatus",
-            "tradeid": "OrderId"
+            "tradeid": "TradeID",
+            "tips": "Is the transfer deposit made up?"
         },
         "transfer": {
             "title": "Transfer Position",
@@ -834,5 +878,11 @@
         "numbers": "numbers:",
         "hotnews": "Hot News",
         "author": "author:"
+    },
+    "slider": {
+        "testTip": "Under verification...",
+        "tipTxt": "Swipe right to verify",
+        "successTip": "Success",
+        "failTip": "Verification failed. Please try again"
     }
 }

+ 52 - 2
public/locales/zh-CN.json

@@ -18,7 +18,9 @@
         "ikonw": "我知道了",
         "exit": "退出",
         "tryagain": "重试",
-        "loading": "正在加载..."
+        "loading": "正在加载...",
+        "nomore": "没有更多了",
+        "requestfailure": "请求失败,点击重新加载"
     },
     "tabbar": {
         "home": "首页",
@@ -98,6 +100,7 @@
     },
     "quote": {
         "goodsname": "商品/代码",
+        "refgoodsname": "标的合约",
         "averageprice": "均价",
         "last": "最新价",
         "rise": "涨跌",
@@ -113,6 +116,8 @@
         "askvolume": "卖量",
         "bid": "买价",
         "ask": "卖价",
+        "time": "时间",
+        "vol": "现量",
         "totalvolume": "成交量",
         "totalturnover": "成交额",
         "buyhall": "买大厅",
@@ -128,6 +133,8 @@
         "transfersell": "转让卖出",
         "buy": "买入",
         "selll": "卖出",
+        "bidlisting": "买挂牌",
+        "asklisting": "卖挂牌",
         "bid1": "买一",
         "bid2": "买二",
         "bid3": "买三",
@@ -177,6 +184,34 @@
             "remainqty": "剩余量",
             "listingprice": "挂牌价格",
             "taaccount": "交易账户"
+        },
+        "presale": {
+            "startprice": "起拍价",
+            "presalehistory": "发售历史",
+            "starttime": "开始:",
+            "endtime": "结束:",
+            "presalebidding": "预售竞拍"
+        },
+        "swap": {
+            "title": "挂牌",
+            "floatprice": "浮动价",
+            "fixprice": "固定价",
+            "tips1": "请先通过“我的”-“协议签署”功能菜单签署相应的合同!",
+            "tips2": "未实名认证,请先去实名认证,如果已提交实名认证,请耐心等待审核通过!",
+            "tips3": "合同已提交签署请求,请耐心等待审核通过!"
+        },
+        "pricing": {
+            "title": "交易下单",
+            "buyorsell": "方向",
+            "pricemode": "价格方式",
+            "orderqty": "数量",
+            "marketmaxsub": "允许成交范围",
+            "price": "价格",
+            "enableQty": "预估可订立量",
+            "deposit": "预扣保证金",
+            "avaiableMoney": "可用资金",
+            "tips1": "请输入数量",
+            "tips2": "请输入价格"
         }
     },
     "order": {
@@ -222,6 +257,7 @@
             "tradeqty": "成交量",
             "cancelqty": "撤销量",
             "ordertime": "委托时间",
+            "orderdate": "委托日期",
             "wrtradeorderstatus": "委托状态",
             "wrtradeorderid": "委托单号"
         },
@@ -310,6 +346,12 @@
             "matchaccountid": "贸易对方",
             "tradetime": "成交时间",
             "tradeid": "成交单号"
+        },
+        "pricingorder": {
+            "title": "点价委托"
+        },
+        "pricingtrade": {
+            "title": "点价成交"
         }
     },
     "position": {
@@ -369,6 +411,7 @@
         },
         "presale": {
             "title": "预售持仓",
+            "title1": "预售持仓详情",
             "subtitle": "预售持仓信息",
             "goodsname": "商品代码/名称",
             "sellname": "发售方",
@@ -381,7 +424,8 @@
             "transferdeposit": "转让定金",
             "depositremain": "未付定金",
             "paystatus": "支付状态",
-            "tradeid": "成交单号"
+            "tradeid": "成交单号",
+            "tips": "是否补足转让定金?"
         },
         "transfer": {
             "title": "转让持仓",
@@ -835,5 +879,11 @@
         "numbers": "阅览数:",
         "hotnews": "热门资讯",
         "author": "作者:"
+    },
+    "slider": {
+        "testTip": "正在验证...",
+        "tipTxt": "向右滑动验证",
+        "successTip": "验证通过",
+        "failTip": "验证失败,请重试"
     }
 }

+ 12 - 10
src/packages/mobile/components/modules/hqchart/index.vue

@@ -2,17 +2,17 @@
     <div class="app-quote-chart">
         <div class="app-quote-chart__header">
             <Tabs v-model:active="tabIndex" :before-change="onTabChange">
-                <Tab title="分时" />
+                <Tab :title="$t('chart.time')" />
                 <Tab>
                     <template #title>
                         <Popover :actions="actions" @select="onPopoverSelect">
-                            <template #reference>{{ selectedText || '分钟' }}</template>
+                            <template #reference>{{ selectedText || $t('chart.minutes') }}</template>
                         </Popover>
                     </template>
                 </Tab>
-                <Tab title="日线" />
-                <Tab title="周线" />
-                <Tab title="月线" />
+                <Tab :title="$t('chart.dayline')" />
+                <Tab :title="$t('chart.weekline')" />
+                <Tab :title="$t('chart.monthline')" />
             </Tabs>
             <Icon name="setting-o" style="padding: 0 16px;" v-if="false" />
         </div>
@@ -27,6 +27,7 @@ import { Tab, Tabs, Popover, Icon, PopoverAction } from 'vant'
 import { ChartCycleType } from '@/constants/chart'
 import MLine from './timeline/index.vue'
 import KLine from './candlestick/index.vue'
+import { i18n } from '@/stores'
 
 defineProps({
     goodsCode: {
@@ -35,17 +36,18 @@ defineProps({
     }
 })
 
+const { global: { t } } = i18n
 const symbol = '000000.et' // https://blog.csdn.net/jones2000/article/details/104457569
 const tabIndex = shallowRef(0) // 当前选中的标签
 const selectedText = shallowRef('') // 当前选中的分钟线
 const cycleType = shallowRef(ChartCycleType.Minutes) // 图表周期类型
 
 const actions = [
-    { text: '1分钟' },
-    { text: '5分钟', },
-    { text: '30分钟', },
-    { text: '60分钟', },
-    { text: '4小时', }
+    { text: t('chart.oneminutes') },
+    { text: t('chart.fiveminutes'), },
+    { text: t('chart.thirtyminutes'), },
+    { text: t('chart.onehour'), },
+    { text: t('chart.fourhour'), }
 ]
 
 // 切换图表

+ 12 - 10
src/packages/mobile/components/modules/quote/chart/index.vue

@@ -2,17 +2,17 @@
     <div class="app-quote-chart">
         <div class="app-quote-chart__header">
             <Tabs v-model:active="tabIndex" :before-change="onTabChange">
-                <Tab title="分时" />
+                <Tab :title="$t('chart.time')" />
                 <Tab>
                     <template #title>
                         <Popover :actions="actions" @select="onPopoverSelect">
-                            <template #reference>{{ selectedText || '分钟' }}</template>
+                            <template #reference>{{ selectedText || $t('chart.minutes') }}</template>
                         </Popover>
                     </template>
                 </Tab>
-                <Tab title="日线" />
-                <Tab title="周线" />
-                <Tab title="月线" />
+                <Tab :title="$t('chart.dayline')" />
+                <Tab :title="$t('chart.weekline')" />
+                <Tab :title="$t('chart.monthline')" />
             </Tabs>
             <Icon name="setting-o" style="padding: 0 16px;" v-if="false" />
         </div>
@@ -27,6 +27,7 @@ import { Tab, Tabs, Popover, Icon, PopoverAction } from 'vant'
 import { ChartCycleType } from '@/constants/chart'
 import TimeLine from './timeline/index.vue'
 import KLine from './kline/index.vue'
+import { i18n } from "@/stores";
 
 defineProps({
     goodsCode: {
@@ -35,16 +36,17 @@ defineProps({
     }
 })
 
+const { global: { t } } = i18n
 const tabIndex = shallowRef(0) // 当前选中的标签
 const selectedText = shallowRef('') // 当前选中的分钟线
 const cycleType = shallowRef(ChartCycleType.Minutes) // 图表周期类型
 
 const actions = [
-    { text: '1分钟' },
-    { text: '5分钟', },
-    { text: '30分钟', },
-    { text: '60分钟', },
-    { text: '4小时', }
+    { text: t('chart.oneminutes') },
+    { text: t('chart.fiveminutes'), },
+    { text: t('chart.thirtyminutes'), },
+    { text: t('chart.onehour'), },
+    { text: t('chart.fourhour'), }
 ]
 
 // 切换图表

+ 2 - 2
src/packages/mobile/components/modules/quote/chart/timeline/index.vue

@@ -1,10 +1,10 @@
 <template>
     <div class="app-echats-timeline">
         <template v-if="loading">
-            <div class="app-echats-timeline__tip">正在加载...</div>
+            <div class="app-echats-timeline__tip">{{ $t('common.loading') }}</div>
         </template>
         <template v-else-if="isEmpty">
-            <div class="app-echats-timeline__tip">暂无数据</div>
+            <div class="app-echats-timeline__tip">{{ $t('common.nodatas') }}</div>
         </template>
         <template v-else>
             <div class="app-echats-timeline__container">

+ 16 - 15
src/packages/mobile/components/modules/quote/forex/index.vue

@@ -2,8 +2,8 @@
     <div class="app-quote-forex">
         <dl>
             <dt>
-                <span>卖挂牌</span>
-                <span @click="onMoreClick(BuyOrSell.Sell)" v-if="showMore">更多
+                <span>{{ $t('quote.asklisting')}}</span>
+                <span @click="onMoreClick(BuyOrSell.Sell)" v-if="showMore">{{ $t('common.more')}}
                     <Icon name="arrow" />
                 </span>
             </dt>
@@ -17,8 +17,8 @@
         </dl>
         <dl>
             <dt>
-                <span>买挂牌</span>
-                <span @click="onMoreClick(BuyOrSell.Buy)" v-if="showMore">更多
+                <span>{{ $t('quote.bidlisting')}}</span>
+                <span @click="onMoreClick(BuyOrSell.Buy)" v-if="showMore">{{ $t('common.more')}}
                     <Icon name="arrow" />
                 </span>
             </dt>
@@ -38,7 +38,7 @@ import { shallowRef, computed, useAttrs } from 'vue'
 import { Icon } from 'vant'
 import { handleNumberValue } from '@/filters'
 import { BuyOrSell } from '@/constants/order'
-import { useFuturesStore } from '@/stores'
+import { useFuturesStore, i18n } from '@/stores'
 
 const props = defineProps({
     goodsCode: {
@@ -51,6 +51,7 @@ const props = defineProps({
     }
 })
 
+const { global: { t } } = i18n
 const emit = defineEmits<{ (event: string, ...args: unknown[]): void }>()
 const attrs = useAttrs()
 const futuresStore = useFuturesStore()
@@ -62,31 +63,31 @@ const buyList = computed(() => {
     if (item) {
         const result = [
             {
-                label: '买一',
+                label: t('quote.bid1'),
                 price: item.bid,
                 qty: item.bidvolume,
                 color: item.bidColor,
             },
             {
-                label: '买二',
+                label: t('quote.bid2'),
                 price: item.bid2,
                 qty: item.bidvolume2,
                 color: item.bid2Color,
             },
             {
-                label: '买三',
+                label: t('quote.bid3'),
                 price: item.bid3,
                 qty: item.bidvolume3,
                 color: item.bid3Color,
             },
             {
-                label: '买四',
+                label: t('quote.bid4'),
                 price: item.bid4,
                 qty: item.bidvolume4,
                 color: item.bid4Color,
             },
             {
-                label: '买五',
+                label: t('quote.bid5'),
                 price: item.bid5,
                 qty: item.bidvolume5,
                 color: item.bid5Color,
@@ -102,31 +103,31 @@ const sellList = computed(() => {
     if (item) {
         const result = [
             {
-                label: '卖一',
+                label: t('quote.ask1'),
                 price: item.ask,
                 qty: item.askvolume,
                 color: item.askColor,
             },
             {
-                label: '卖二',
+                label: t('quote.ask2'),
                 price: item.ask2,
                 qty: item.askvolume2,
                 color: item.ask2Color,
             },
             {
-                label: '卖三',
+                label: t('quote.ask3'),
                 price: item.ask3,
                 qty: item.askvolume3,
                 color: item.ask3Color,
             },
             {
-                label: '卖四',
+                label: t('quote.ask4'),
                 price: item.ask4,
                 qty: item.askvolume4,
                 color: item.ask4Color,
             },
             {
-                label: '卖五',
+                label: t('quote.ask5'),
                 price: item.ask5,
                 qty: item.askvolume5,
                 color: item.ask5Color,

+ 20 - 20
src/packages/mobile/components/modules/quote/price/index.vue

@@ -13,35 +13,35 @@
             <div class="block-right" v-if="quote.marketid === 99201">
                 <ul>
                     <li>
-                        <span>开盘</span>
+                        <span>{{ $t('quote.opened') }}</span>
                         <span :class="quote.openedColor">
                             {{ handleNumberValue(quote.opened.toFixed(quote.decimalplace)) }}
                         </span>
                     </li>
                     <li>
-                        <span>最高</span>
+                        <span>{{ $t('quote.highest') }}</span>
                         <span :class="quote.highestColor">
                             {{ handleNumberValue(quote.highest.toFixed(quote.decimalplace)) }}
                         </span>
                     </li>
                     <li>
-                        <span>最低</span>
+                        <span>{{ $t('quote.lowest') }}</span>
                         <span :class="quote.lowestColor">
                             {{ handleNumberValue(quote.lowest.toFixed(quote.decimalplace)) }}
                         </span>
                     </li>
                     <li>
-                        <span>昨结</span>
+                        <span>{{ $t('quote.presettle') }}</span>
                         <span>{{ handleNumberValue(quote.presettle.toFixed(quote.decimalplace)) }}</span>
                     </li>
                     <li>
-                        <span>均价</span>
+                        <span>{{ $t('quote.averageprice') }}</span>
                         <span :class="quote.averagepriceColor">
                             {{ handleNumberValue(quote.averageprice.toFixed(quote.decimalplace)) }}
                         </span>
                     </li>
                     <li>
-                        <span>振幅</span>
+                        <span>{{ $t('quote.amplitude') }}</span>
                         <span>{{ parsePercent(quote.amplitude) }}</span>
                     </li>
                 </ul>
@@ -49,37 +49,37 @@
             <div class="block-right" v-else>
                 <ul>
                     <li>
-                        <span>开盘</span>
+                        <span>{{ $t('quote.opened') }}</span>
                         <span :class="quote.openedColor">
                             {{ handleNumberValue(quote.opened.toFixed(quote.decimalplace)) }}
                         </span>
                     </li>
                     <li>
-                        <span>最高</span>
+                        <span>{{ $t('quote.highest') }}</span>
                         <span :class="quote.highestColor">
                             {{ handleNumberValue(quote.highest.toFixed(quote.decimalplace)) }}
                         </span>
                     </li>
                     <li>
-                        <span>涨停</span>
+                        <span>{{ $t('quote.limitup') }}</span>
                         <span class="g-price-up">
                             {{ handleNumberValue(quote.limitup.toFixed(quote.decimalplace)) }}
                         </span>
                     </li>
                     <li>
-                        <span>昨结</span>
+                        <span>{{ $t('quote.presettle') }}</span>
                         <span>
                             {{ handleNumberValue(quote.presettle.toFixed(quote.decimalplace)) }}
                         </span>
                     </li>
                     <li>
-                        <span>最低</span>
+                        <span>{{ $t('quote.lowest') }}</span>
                         <span :class="quote.lowestColor">
                             {{ handleNumberValue(quote.lowest.toFixed(quote.decimalplace)) }}
                         </span>
                     </li>
                     <li>
-                        <span>跌停</span>
+                        <span>{{ $t('quote.limitdown') }}</span>
                         <span class="g-price-down">
                             {{ handleNumberValue(quote.limitdown.toFixed(quote.decimalplace)) }}
                         </span>
@@ -94,36 +94,36 @@
             <div class="app-quote-price__more" v-if="quote">
                 <ul v-show="showMore">
                     <li>
-                        <span>买量</span>
+                        <span>{{ $t('quote.bidvolume') }}</span>
                         <span>{{ handleNumberValue(quote.bidvolume) }}</span>
                     </li>
                     <li>
-                        <span>卖量</span>
+                        <span>{{ $t('quote.askvolume') }}</span>
                         <span>{{ handleNumberValue(quote.askvolume) }}</span>
                     </li>
                     <li>
-                        <span>买价</span>
+                        <span>{{ $t('quote.bid') }}</span>
                         <span :class="quote.bidColor">{{ handleNumberValue(quote.bid.toFixed(quote.decimalplace)) }}</span>
                     </li>
                     <li>
-                        <span>卖价</span>
+                        <span>{{ $t('quote.ask') }}</span>
                         <span :class="quote.askColor">{{ handleNumberValue(quote.ask.toFixed(quote.decimalplace)) }}</span>
                     </li>
                     <li>
-                        <span>均价</span>
+                        <span>{{ $t('quote.averageprice') }}</span>
                         <span :class="quote.averagepriceColor">{{
                             handleNumberValue(quote.averageprice.toFixed(quote.decimalplace)) }}</span>
                     </li>
                     <li>
-                        <span>振幅</span>
+                        <span>{{ $t('quote.amplitude') }}</span>
                         <span>{{ parsePercent(quote.amplitude) }}</span>
                     </li>
                     <li>
-                        <span>成交量</span>
+                        <span>{{ $t('quote.totalvolume') }}</span>
                         <span :class="quote.averagepriceColor">{{ changeUnit(quote.totalvolume) }}</span>
                     </li>
                     <li>
-                        <span>成交额</span>
+                        <span>{{ $t('quote.totalturnover') }}</span>
                         <span>{{ changeUnit(quote.totalturnover) }}</span>
                     </li>
                 </ul>

+ 5 - 4
src/packages/mobile/components/modules/quote/tik/index.vue

@@ -17,7 +17,7 @@ import { ref, shallowReactive, onMounted } from 'vue'
 import { formatDate, handleNumberValue, formatDecimal } from '@/filters'
 import { useRequest } from '@/hooks/request'
 import { queryHistoryTikDatas, queryMarketRun } from '@/services/api/market'
-import { useFuturesStore } from '@/stores'
+import { useFuturesStore, i18n } from '@/stores'
 import AppList from '@mobile/components/base/list/index.vue'
 
 const props = defineProps({
@@ -27,14 +27,15 @@ const props = defineProps({
     },
 })
 
+const { global: { t }} = i18n
 const { getGoodsQuote, quoteWatch } = useFuturesStore()
 const quote = getGoodsQuote(props.goodsCode)
 const dataList = ref<Model.HistoryTikDatasRsp[]>([])
 
 const columns = shallowReactive<Model.TableColumn[]>([
-    { field: 'TS', label: '时间' },
-    { field: 'PE', label: '最新价' },
-    { field: 'Vol', label: '现量' },
+    { field: 'TS', label: t('quote.time') },
+    { field: 'PE', label: t('quote.last') },
+    { field: 'Vol', label: t('quote.vol') },
 ])
 
 const { run: getHistoryTikDatas } = useRequest(queryHistoryTikDatas, {

+ 14 - 11
src/packages/mobile/views/order/list/Index.vue

@@ -25,70 +25,73 @@
 import { shallowRef, defineAsyncComponent, computed } from 'vue'
 import { Tab, Tabs } from 'vant'
 import { useComponent } from '@/hooks/component'
+import { i18n } from "@/stores"
+
+const { global: { t } } = i18n
 
 const components = [
     {
         name: 'goodsorder',
-        title: '订单委托',
+        title: t('order.goodsorder.title'),
         component: defineAsyncComponent(() => import('./components/goodsorder/list/Index.vue')),
         history: defineAsyncComponent(() => import('./components/goodsorder/history/Index.vue')),
     },
     {
         name: 'goodstrade',
-        title: '订单成交',
+        title: t('order.goodstrade.title'),
         component: defineAsyncComponent(() => import('./components/goodstrade/list/Index.vue')),
         history: defineAsyncComponent(() => import('./components/goodstrade/history/Index.vue')),
     },
     {
         name: 'listingorder',
-        title: '挂牌委托',
+        title: t('order.listingorder.title'),
         component: defineAsyncComponent(() => import('./components/listingorder/list/Index.vue')),
         history: defineAsyncComponent(() => import('./components/listingorder/history/Index.vue')),
     },
     {
         name: 'listingtrade',
-        title: '挂牌成交',
+        title: t('order.listingtrade.title'),
         component: defineAsyncComponent(() => import('./components/listingtrade/list/Index.vue')),
         history: defineAsyncComponent(() => import('./components/listingtrade/history/Index.vue')),
     },
     {
         name: 'presale',
-        title: '预售认购',
+        title: t('order.presale.title'),
         component: defineAsyncComponent(() => import('./components/presale/list/Index.vue')),
         history: defineAsyncComponent(() => import('./components/presale/history/index.vue')),
     },
     {
         name: 'transferorder',
-        title: '转让委托',
+        title: t('order.transferorder.title'),
         component: defineAsyncComponent(() => import('./components/transferorder/list/Index.vue')),
         history: defineAsyncComponent(() => import('./components/transferorder/history/index.vue')),
     },
     {
         name: 'transfertrade',
-        title: '转让成交',
+        title: t('order.transfertrade.title'),
         component: defineAsyncComponent(() => import('./components/transfertrade/list/Index.vue')),
         history: defineAsyncComponent(() => import('./components/transfertrade/history/index.vue')),
     },
     {
         name: 'swaporder',
-        title: '掉期委托',
+        title: t('order.swaporder.title'),
         component: defineAsyncComponent(() => import('./components/swaporder/list/Index.vue')),
         history: defineAsyncComponent(() => import('./components/swaporder/history/Index.vue')),
     },
     {
         name: 'swaptrade',
-        title: '掉期成交',
+        title: t('order.swaptrade.title'),
         component: defineAsyncComponent(() => import('./components/swaptrade/list/Index.vue')),
         history: defineAsyncComponent(() => import('./components/swaptrade/history/Index.vue')),
     },
     {
         name: 'pricingorder',
-        title: '点价委托',
+        title: t('order.pricingorder.title'),
         component: defineAsyncComponent(() => import('./components/pricingorder/list/Index.vue')),
     },
     {
         name: 'pricingtrade',
-        title: '点价成交',
+        title: t('order.pricingtrade.title'),
         component: defineAsyncComponent(() => import('./components/pricingtrade/list/Index.vue')),
     },
 ]

+ 13 - 13
src/packages/mobile/views/order/position/components/goods/close/Index.vue

@@ -6,15 +6,15 @@
                 <app-navbar :title="$t('operation.transfer')" @back="closed" />
             </template>
             <Form ref="formRef" class="g-form__container" @submit="onCloseSumit">
-                <CellGroup :title="$t('position.order.subtitle')" inset>
-                    <Cell :title="$t('position.order.goodsname')" :value="`${selectedRow.goodscode}/${selectedRow.goodsname}`" />
-                    <Cell :title="$t('position.order.buyorsell')" :value="getBuyOrSellName(selectedRow.buyorsell)" />
-                    <Cell :title="$t('position.order.curholderamount')" :value="formatDecimal(selectedRow.curholderamount)" />
-                    <Cell :title="$t('position.order.curpositionqty')" :value="selectedRow.curpositionqty" />
-                    <Cell :title="$t('position.order.frozenqty')" :value="selectedRow.frozenqty" />
-                    <Cell :title="$t('position.order.enableqty')" :value="selectedRow.enableqty" />
-                    <Cell :title="$t('position.order.averageprice')" :value="selectedRow.averageprice" />
-                    <Cell :title="$t('position.order.closepl')">
+                <CellGroup :title="$t('position.goods.subtitle')" inset>
+                    <Cell :title="$t('position.goods.goodsname')" :value="`${selectedRow.goodscode}/${selectedRow.goodsname}`" />
+                    <Cell :title="$t('position.goods.buyorsell')" :value="getBuyOrSellName(selectedRow.buyorsell)" />
+                    <Cell :title="$t('position.goods.curholderamount')" :value="formatDecimal(selectedRow.curholderamount)" />
+                    <Cell :title="$t('position.goods.curpositionqty')" :value="selectedRow.curpositionqty" />
+                    <Cell :title="$t('position.goods.frozenqty')" :value="selectedRow.frozenqty" />
+                    <Cell :title="$t('position.goods.enableqty')" :value="selectedRow.enableqty" />
+                    <Cell :title="$t('position.goods.averageprice')" :value="selectedRow.averageprice" />
+                    <Cell :title="$t('position.goods.closepl')">
                         <template #value>
                             <span :class="selectedRow.closeplColor">
                                 {{ formatDecimal(selectedRow.closepl, selectedRow.decimalplace) }}
@@ -22,15 +22,15 @@
                         </template>
                     </Cell>
                 </CellGroup>
-                <CellGroup :title="$t('position.order.subtitle3')" inset>
-                    <Cell :title="$t('position.order.last')" :value="handleNumberValue(quote?.last)" />
-                    <Field name="OrderPrice" :rules="formRules.OrderPrice" :label="$t('position.order.transferprice')">
+                <CellGroup :title="$t('position.goods.subtitle3')" inset>
+                    <Cell :title="$t('position.goods.last')" :value="handleNumberValue(quote?.last)" />
+                    <Field name="OrderPrice" :rules="formRules.OrderPrice" :label="$t('position.goods.transferprice')">
                         <template #input>
                             <Stepper v-model="formData.OrderPrice" theme="round" button-size="22" :min="0"
                                 :decimal-length="quote?.decimalplace" :step="quote?.decimalvalue" :auto-fixed="false" />
                         </template>
                     </Field>
-                    <Field name="OrderQty" :rules="formRules.OrderQty" :label="$t('position.order.qty')">
+                    <Field name="OrderQty" :rules="formRules.OrderQty" :label="$t('position.goods.qty')">
                         <template #input>
                             <div class="g-qty-group">
                                 <div class="g-qty-group__stepper">

+ 14 - 14
src/packages/mobile/views/order/position/components/presale/detail/Index.vue

@@ -3,22 +3,22 @@
     <app-modal direction="right-top" height="100%" width="100%" v-model:show="showModal">
         <app-view class="g-form">
             <template #header>
-                <app-navbar title="预售持仓详情" @back="closed" />
+                <app-navbar :title="$t('position.presale.title1')" @back="closed" />
             </template>
             <div class="g-form__container">
-                <CellGroup title="预售持仓信息">
-                    <Cell title="商品代码/名称" :value="`${selectedRow.goodscode}/${selectedRow.goodsname}`" />
-                    <Cell title="发售方" :value="selectedRow.sellname" />
-                    <Cell title="开始日期" :value="formatDate(selectedRow.starttime, 'YYYY-MM-DD')" />
-                    <Cell title="结束日期" :value="formatDate(selectedRow.endtime, 'YYYY-MM-DD')" />
-                    <Cell title="认购量" :value="selectedRow.tradeqty" />
-                    <Cell title="预售价" :value="selectedRow.openprice" />
-                    <Cell title="总货款" :value="selectedRow.tradeamount" />
-                    <Cell title="转让定金比例" :value="parsePercent(selectedRow.transferdepositratio)" />
-                    <Cell title="转让订金" :value="selectedRow.transferdeposit" />
-                    <Cell title="未付订金" :value="selectedRow.depositremain" />
-                    <Cell title="支付状态" :value="getPayStatusName(selectedRow.paystatus)" />
-                    <Cell title="成交单号" :value="selectedRow.tradeid" />
+                <CellGroup :title="$t('position.presale.subtitle')">
+                    <Cell :title="$t('position.presale.goodsname')" :value="`${selectedRow.goodscode}/${selectedRow.goodsname}`" />
+                    <Cell :title="$t('position.presale.sellname')" :value="selectedRow.sellname" />
+                    <Cell :title="$t('position.presale.starttime')" :value="formatDate(selectedRow.starttime, 'YYYY-MM-DD')" />
+                    <Cell :title="$t('position.presale.endtime')" :value="formatDate(selectedRow.endtime, 'YYYY-MM-DD')" />
+                    <Cell :title="$t('position.presale.tradeqty')" :value="selectedRow.tradeqty" />
+                    <Cell :title="$t('position.presale.openprice')" :value="selectedRow.openprice" />
+                    <Cell :title="$t('position.presale.tradeamount')" :value="selectedRow.tradeamount" />
+                    <Cell :title="$t('position.presale.transferdepositratio')" :value="parsePercent(selectedRow.transferdepositratio)" />
+                    <Cell :title="$t('position.presale.transferdeposit')" :value="selectedRow.transferdeposit" />
+                    <Cell :title="$t('position.presale.depositremain')" :value="selectedRow.depositremain" />
+                    <Cell :title="$t('position.presale.paystatus')" :value="getPayStatusName(selectedRow.paystatus)" />
+                    <Cell :title="$t('position.presale.tradeid')" :value="selectedRow.tradeid" />
                 </CellGroup>
             </div>
         </app-view>

+ 13 - 11
src/packages/mobile/views/order/position/components/presale/list/Index.vue

@@ -19,39 +19,39 @@
                             <span>{{ item.tradeqty }}</span>
                         </li>
                         <li>
-                            <span>预售价</span>
+                            <span>{{ $t('position.presale.openprice') }}</span>
                             <span>{{ item.openprice }}</span>
                         </li>
                         <li>
-                            <span>总货款</span>
+                            <span>{{ $t('position.presale.tradeamount') }}</span>
                             <span>{{ item.tradeamount }}</span>
                         </li>
                         <li>
-                            <span>转让定金比例</span>
+                            <span>{{ $t('position.presale.transferdepositratio') }}</span>
                             <span>{{ parsePercent(item.transferdepositratio) }}</span>
                         </li>
                         <li>
-                            <span>转让定金</span>
+                            <span>{{ $t('position.presale.transferdeposit') }}</span>
                             <span>{{ item.transferdeposit }}</span>
                         </li>
                         <li>
-                            <span>未付定金</span>
+                            <span>{{ $t('position.presale.depositremain') }}</span>
                             <span>{{ item.depositremain }}</span>
                         </li>
                         <li>
-                            <span>发售方</span>
+                            <span>{{ $t('position.presale.sellname') }}</span>
                             <span>{{ item.sellname }}</span>
                         </li>
                         <li>
-                            <span>结束日期</span>
+                            <span>{{ $t('position.presale.endtime') }}</span>
                             <span>{{ item.endtime }}</span>
                         </li>
                     </ul>
                 </div>
                 <div class="g-order-list__btnbar">
                     <Button size="small" @click="depositPayment(item)" round
-                        v-if="item.paystatus === PayStatus.UnPay">补足定金</Button>
-                    <Button size="small" @click="showComponent('detail', item)" round>详情</Button>
+                        v-if="item.paystatus === PayStatus.UnPay">{{ $t('operation.deposit') }}</Button>
+                    <Button size="small" @click="showComponent('detail', item)" round>{{ $t('operation.details') }}</Button>
                 </div>
             </div>
         </div>
@@ -71,11 +71,13 @@ import { useRequest } from '@/hooks/request'
 import { queryMineCpTradePreSaleResults } from '@/services/api/presale'
 import { makeUpDeposit } from '@/services/api/trade'
 import AppPullRefresh from '@mobile/components/base/pull-refresh/index.vue'
+import { i18n } from '@/stores'
 
 const componentMap = new Map<string, unknown>([
     ['detail', defineAsyncComponent(() => import('../detail/Index.vue'))],
 ])
 
+const { global: { t } } = i18n
 const dataList = shallowRef<Model.MineCpTradePreSaleResultsRsp[]>([])
 const selectedRow = shallowRef<Model.MineCpTradePreSaleResultsRsp>()
 const error = shallowRef(false)
@@ -108,7 +110,7 @@ const showComponent = (componentName: string, row: Model.MineCpTradePreSaleResul
 // 补足定金
 const depositPayment = (row: Model.MineCpTradePreSaleResultsRsp) => {
     dialog({
-        message: '是否补足转让定金?',
+        message: t('position.presale.tips'),
         showCancelButton: true,
     }).then(() => {
         fullloading((hideLoading) => {
@@ -120,7 +122,7 @@ const depositPayment = (row: Model.MineCpTradePreSaleResultsRsp) => {
                     TradeID: handleRequestBigNumber(row.tradeid)
                 }
             }).then(() => {
-                hideLoading('提交成功')
+                hideLoading(t('common.submitsuccess'))
                 pullRefreshRef.value?.refresh()
             }).catch((err) => {
                 hideLoading(err, 'fail')

+ 13 - 11
src/packages/mobile/views/presale/list/Index.vue

@@ -18,7 +18,7 @@
                         <div class="goods-info">
                             <div class="goods-info__title">{{ item.goodsname }}</div>
                             <div class="goods-info__price">
-                                <Tag type="danger" plain>起拍价</Tag>
+                                <Tag type="danger" plain>{{ $t('quote.presale.startprice') }}</Tag>
                                 <span class="unit">¥</span>
                                 <span class="integer">{{ item.startprice }}</span>
                             </div>
@@ -26,7 +26,7 @@
                     </div>
                 </template>
             </Waterfall>
-            <Divider>发售历史</Divider>
+            <Divider>{{ $t('quote.presale.presalebidding') }}</Divider>
             <Waterfall class="g-goods-waterfall" :data-list="endList">
                 <template #default="{ item }">
                     <div class="goods" @click="toDetail(item)">
@@ -36,7 +36,7 @@
                         <div class="goods-info">
                             <div class="goods-info__title">{{ item.goodsname }}</div>
                             <div class="goods-info__price">
-                                <Tag type="danger" plain>起拍价</Tag>
+                                <Tag type="danger" plain>{{ $t('quote.presale.startprice') }}</Tag>
                                 <span class="unit">¥</span>
                                 <span class="integer">{{ item.tradeprice }}</span>
                             </div>
@@ -52,29 +52,29 @@
                     <div class="info">
                         <div class="title">{{ item.goodscode }}/{{ item.goodsname }}</div>
                         <div class="desc">
-                            <span>开始:{{ item.starttime }}</span>
-                            <span>结束:{{ item.endtime }}</span>
+                            <span>{{ $t('quote.presale.starttime') }}{{ item.starttime }}</span>
+                            <span>{{ $t('quote.presale.endtime') }}{{ item.endtime }}</span>
                         </div>
                         <div class="price">
-                            <Tag type="danger" plain>起拍价</Tag>
+                            <Tag type="danger" plain>{{ $t('quote.presale.startprice') }}</Tag>
                             <span class="unit">¥</span>
                             <span class="integer">{{ item.startprice }}</span>
                         </div>
                     </div>
                 </li>
             </ul>
-            <Divider>发售历史</Divider>
+            <Divider>{{ $t('quote.presale.presalehistory') }}</Divider>
             <ul class="g-goods-list">
                 <li class="list-item" v-for="(item, index) in endList" :key="index" @click="toDetail(item)">
                     <div class="img mask"><img :src="getFirstImage(item.attachmenturl)" /></div>
                     <div class="info">
                         <div class="title">{{ item.goodscode }}/{{ item.goodsname }}</div>
                         <div class="desc">
-                            <span>开始:{{ item.starttime }}</span>
-                            <span>结束:{{ item.endtime }}</span>
+                            <span>{{ $t('quote.presale.starttime') }}{{ item.starttime }}</span>
+                            <span>{{ $t('quote.presale.endtime') }}{{ item.endtime }}</span>
                         </div>
                         <div class="price">
-                            <Tag type="danger" plain>起拍价</Tag>
+                            <Tag type="danger" plain>{{ $t('quote.presale.startprice') }}</Tag>
                             <span class="unit">¥</span>
                             <span class="integer">{{ item.tradeprice }}</span>
                         </div>
@@ -94,6 +94,7 @@ import { useRequest } from '@/hooks/request'
 import { queryPresaleAuctions } from '@/services/api/presale'
 import Banner from '@mobile/components/base/banner/index.vue'
 import Waterfall from '@mobile/components/base/waterfall/index.vue'
+import { i18n } from "@/stores"
 
 const props = defineProps({
     showBackButton: {
@@ -105,12 +106,13 @@ const props = defineProps({
     }
 })
 
+const { global: { t } } = i18n
 const isWaterfall = shallowRef(false)
 const { router, getQueryString, setGlobalUrlParams } = useNavigation()
 const bannerList = shallowRef<string[]>([])
 
 const title = getQueryString('title')
-const titleName = computed(() => title ? decodeURIComponent(title) : props.marketSection?.displayname ?? '预售竞拍')
+const titleName = computed(() => title ? decodeURIComponent(title) : props.marketSection?.displayname ?? t('quote.presale.presalebidding'))
 
 // 预售准备
 const { dataList } = useRequest(queryPresaleAuctions, {

+ 1 - 1
src/packages/mobile/views/pricing/detail/Index.vue

@@ -1,7 +1,7 @@
 <template>
     <app-view class="goods-detail g-form">
         <template #header>
-            <app-navbar :title="quote ? quote.goodscode + '/' + quote.goodsname : '挂牌大厅'" />
+            <app-navbar :title="quote ? quote.goodscode + '/' + quote.goodsname : $t('quote.listinghall')" />
         </template>
         <component :is="Price" v-bind="{ goodsCode }" />
         <component :is="Chart" v-bind="{ goodsCode }" />

+ 18 - 17
src/packages/mobile/views/pricing/detail/components/trade/Index.vue

@@ -2,14 +2,14 @@
     <app-modal direction="right-top" height="100%" width="100%" v-model:show="showModal" :refresh="refresh">
         <app-view class="goods-listing g-form">
             <template #header>
-                <app-navbar :title="quote ? `${quote.goodscode}/${quote.goodsname}` : '交易下单'" @back="closed" />
+                <app-navbar :title="quote ? `${quote.goodscode}/${quote.goodsname}` : $t('quote.pricing.title')" @back="closed" />
             </template>
             <component :is="Price" v-bind="{ goodsCode }" />
             <component :is="Forex" v-bind="{ goodsCode, showMore: false }" @price-click="onPriceClick" />
             <!-- 下单 -->
             <Form ref="formRef" class="g-form__container" @submit="onSubmit">
                 <CellGroup inset>
-                    <Field label="方向">
+                    <Field :label="$t('quote.pricing.buyorsell')">
                         <template #input>
                             <RadioGroup v-model="formData.BuyOrSell" direction="horizontal" @click="onBuyOrSellChanged">
                                 <Radio v-for="(item, index) in getBuyOrSellList()" :key="index" :name="item.value">{{ item.label
@@ -17,7 +17,7 @@
                             </RadioGroup>
                         </template>
                     </Field> 
-                    <Field label="价格方式">
+                    <Field :label="$t('quote.pricing.pricemode')">
                         <template #input>
                             <RadioGroup v-model="formData.PriceMode" direction="horizontal" @click="onPriceModeChanged">
                                 <Radio v-for="(item, index) in getPricemode2List()" :key="index" :name="item.value">{{
@@ -26,7 +26,7 @@
                             </RadioGroup>
                         </template>
                     </Field> 
-                    <Field name="OrderQty" label="数量">
+                    <Field name="OrderQty" :label="$t('quote.pricing.orderqty')">
                         <template #input>
                             <div class="g-qty-group">
                                 <div class="g-qty-group__stepper">
@@ -47,14 +47,14 @@
                         </template>
                     </Field> -->
                     <!-- 允许成交范围 -->
-                    <Field name="MarketMaxSub" label="允许成交范围" v-if="formData.PriceMode === PriceMode.Market">
+                    <Field name="MarketMaxSub" :label="$t('quote.pricing.marketmaxsub')" v-if="formData.PriceMode === PriceMode.Market">
                         <template #input>
                             <Stepper v-model="formData.MarketMaxSub" theme="round" button-size="22" :auto-fixed="false"
                                 integer />
                         </template>
                     </Field>
                     <!-- 限价 -->
-                    <Field name="OrderPrice" :rules="formRules.OrderPrice" label="价格" v-if="formData.PriceMode === PriceMode.Limit">
+                    <Field name="OrderPrice" :rules="formRules.OrderPrice" :label="$t('quote.pricing.price')" v-if="formData.PriceMode === PriceMode.Limit">
                         <template #input>
                             <Stepper v-model="formData.OrderPrice" theme="round" button-size="22" :min="0"
                              :auto-fixed="false" :decimal-length="decimalplace" :step="decimalvalue" />
@@ -81,18 +81,18 @@
                         </template>
                     </Field> -->
                     <template v-if="formData.BuyOrSell === BuyOrSell.Buy || quote?.tradeproperty !== 2">
-                        <Field label="预估可订立量">
+                        <Field :label="$t('quote.pricing.enableQty')">
                             <template #input>
                                 <span>{{ total.enableQty }}</span>
                             </template>
                         </Field>
-                        <Field label="预扣保证金">
+                        <Field :label="$t('quote.pricing.deposit')">
                             <template #input>
                                 <span>{{ total.deposit.toFixed(2) }}</span>
                             </template>
                         </Field>
                     </template>
-                    <Field label="可用资金">
+                    <Field :label="$t('quote.pricing.avaiableMoney')">
                         <template #input>
                             <span>{{ accountStore.currentAccount.avaiableMoney?.toFixed(2) }}</span>
                         </template>
@@ -103,22 +103,22 @@
                 <div class="g-form__footer">
                     <template v-if="formData.BuyOrSell === BuyOrSell.Buy">
                         <Button type="danger" block square :disabled="!formData.OrderQty"
-                            @click="onBeforeSubmit(BuildType.Open)" v-if="!quote?.iscannotbuy">订立买入</Button>
+                            @click="onBeforeSubmit(BuildType.Open)" v-if="!quote?.iscannotbuy">{{ $t('quote.orderbuy') }}</Button>
                         <Button color="#199e00" block square
                             :disabled="!formData.OrderQty || !sellQty || (formData.OrderQty > sellQty)"
                             @click="onBeforeSubmit(BuildType.Close)" v-if="!isTrademode16">
-                            <span>转让买入</span>
+                            <span>{{ $t('quote.transferbuy') }}</span>
                             <span v-if="sellQty">(≤{{ sellQty }})</span>
                         </Button>
                     </template>
                     <template v-if="formData.BuyOrSell === BuyOrSell.Sell">
                         <Button type="danger" block square :disabled="!formData.OrderQty"
                             @click="onBeforeSubmit(BuildType.Open)"
-                            v-if="!isTrademode16 && !quote?.iscannotsell">订立卖出</Button>
+                            v-if="!isTrademode16 && !quote?.iscannotsell">{{ $t('quote.ordersell') }}</Button>
                         <Button color="#199e00" block square
                             :disabled="!formData.OrderQty || !buyQty || (formData.OrderQty > buyQty)"
                             @click="onBeforeSubmit(BuildType.Close)">
-                            <span>转让卖出</span>
+                            <span>{{ $t('quote.transfersell') }}</span>
                             <span v-if="buyQty">(≤{{ buyQty }})</span>
                         </Button>
                     </template>
@@ -129,7 +129,7 @@
 </template>
 
 <script lang="ts" setup>
-import { useFuturesStore, useAccountStore, usePositionStore } from '@/stores'
+import { useFuturesStore, useAccountStore, usePositionStore, i18n } from '@/stores'
 import { useNavigation } from '@mobile/router/navigation'
 import { shallowRef, onMounted, computed, defineAsyncComponent } from 'vue'
 import { Form, Field, Button, FieldRule, FormInstance, Radio, RadioGroup, CellGroup } from 'vant'
@@ -153,6 +153,7 @@ const props = defineProps({
     }
 })
 
+const { global: { t } } = i18n
 const { router } = useNavigation()
 const futuresStore = useFuturesStore()
 const accountStore = useAccountStore()
@@ -217,14 +218,14 @@ const sellQty = computed(() => positionStore.getOrderQty(BuyOrSell.Sell, props.g
 // 表单验证规则
 const formRules: { [key in keyof Proto.OrderReq]?: FieldRule[] } = {
     OrderQty: [{
-        message: '请输入数量',
+        message: t('quote.pricing.tips1'),
         validator: () => {
             return !!formData.OrderQty
         }
     }],
     // 限价
     OrderPrice: [{
-        message: '请输入价格',
+        message: t('quote.pricing.tips2'),
         validator: () => {
             if (formData.PriceMode === PriceMode.Limit) {
                 return !!formData.OrderPrice
@@ -294,7 +295,7 @@ const onSubmit = () => {
     fullloading((hideLoading) => {
         formSubmit().then(() => {
             hideLoading()
-            dialog('委托成功。').then(() => {
+            dialog(t('common.submitsuccess')).then(() => {
                 router.back()
             })
         }).catch((err) => {

+ 13 - 12
src/packages/mobile/views/pricing/list/Index.vue

@@ -47,7 +47,7 @@ import { parsePercent, handleNumberValue, formatDecimal } from '@/filters'
 import { useNavigation } from '@mobile/router/navigation'
 import { useRequest } from '@/hooks/request'
 import { queryQuoteGoodsList } from '@/services/api/swap'
-import { useFuturesStore, useUserStore } from '@/stores'
+import { useFuturesStore, useUserStore, i18n } from '@/stores'
 import quoteSocket from '@/services/websocket/quote'
 import AppList from '@mobile/components/base/list/index.vue'
 import { BuyOrSell, BuildType } from '@/constants/order'
@@ -62,6 +62,7 @@ const props = defineProps({
     }
 })
 
+const { global: { t } } = i18n
 const { router, getQueryString } = useNavigation()
 const futuresStore = useFuturesStore()
 const userStore = useUserStore()
@@ -108,17 +109,17 @@ const tableList = computed(() => {
 })
 
 const columns: Model.TableColumn[] = [
-    { field: 'goodsname', label: '商品/标的' },
-    { field: 'last', label: '当前价' },
-    { field: 'ask', label: '买价' },
-    { field: 'bid', label: '卖价' },
-    { field: 'rise', label: '涨跌' },
-    { field: 'change', label: '幅度' },
-    { field: 'opened', label: '今开' },
-    { field: 'presettle', label: '昨结' },
-    { field: 'lowest', label: '最低' },
-    { field: 'highest', label: '最高' },
-    { field: 'amplitude', label: '振幅' },
+    { field: 'goodsname', label: t('quote.goodsname') },
+    { field: 'last', label: t('quote.last') },
+    { field: 'ask', label: t('quote.ask') },
+    { field: 'bid', label: t('quote.bid') },
+    { field: 'rise', label: t('quote.rise') },
+    { field: 'change', label: t('quote.change') },
+    { field: 'opened', label: t('quote.opened') },
+    { field: 'presettle', label: t('quote.presettle') },
+    { field: 'lowest', label: t('quote.lowest') },
+    { field: 'highest', label: t('quote.highest') },
+    { field: 'amplitude', label: t('quote.amplitude') },
 ]
 
 const rowClick = (row: Model.GoodsQuote) => {

+ 4 - 4
src/packages/mobile/views/spot/list/Index.vue

@@ -21,12 +21,12 @@
                             <div class="goods-info__title">{{ item.wrstandardcode }} / {{ item.wrstandardname }}</div>
                             <div class="goods-info__desc">{{ item.warehousename }}</div>
                             <div class="goods-info__price sell" v-if="item.sellprice">
-                                <Tag type="success" plain>卖价</Tag>
+                                <Tag type="success" plain>{{ $t('quote.ask') }}</Tag>
                                 <span class="unit">¥</span>
                                 <span class="integer">{{ item.sellprice }}</span>
                             </div>
                             <div class="goods-info__price buy" v-if="item.buyprice">
-                                <Tag type="danger" plain>买价</Tag>
+                                <Tag type="danger" plain>{{ $t('quote.bid') }}</Tag>
                                 <span class="unit">¥</span>
                                 <span class="integer">{{ item.buyprice }}</span>
                             </div>
@@ -43,12 +43,12 @@
                         <div class="desc">{{ item.warehousename }}</div>
                         <div class="price">
                             <div class="sellprice" v-if="item.sellprice">
-                                <Tag type="success" plain>卖价</Tag>
+                                <Tag type="success" plain>{{ $t('quote.ask') }}</Tag>
                                 <span class="unit">¥</span>
                                 <span class="integer">{{ item.sellprice }}</span>
                             </div>
                             <div class="buyprice" v-if="item.buyprice">
-                                <Tag type="danger" plain>买价</Tag>
+                                <Tag type="danger" plain>{{ $t('quote.bid') }}</Tag>
                                 <span class="unit">¥</span>
                                 <span class="integer">{{ item.buyprice }}</span>
                             </div>

+ 3 - 3
src/packages/mobile/views/swap/detail/Index.vue

@@ -12,8 +12,8 @@
         <component :is="Price" v-bind="{ goodsCode }" />
         <component :is="Chart" v-bind="{ goodsCode }" />
         <Tabs v-model:active="tabIndex" @click="onRefresh" style="margin-top: 10px;">
-            <Tab title="买大厅" :name="BuyOrSell.Buy" />
-            <Tab title="卖大厅" :name="BuyOrSell.Sell" />
+            <Tab :title="$t('quote.buyhall')" :name="BuyOrSell.Buy" />
+            <Tab :title="$t('quote.sellhall')" :name="BuyOrSell.Sell" />
         </Tabs>
         <div class="trade-section sell" v-if="dataList.length">
             <app-list :columns="columns" :data-list="dataList">
@@ -31,7 +31,7 @@
                 </template>
             </app-list>
         </div>
-        <Empty description="暂无数据" v-else />
+        <Empty :description="$t('common.nodatas')" v-else />
         <component :is="Tik" v-bind="{ goodsCode }" />
         <component ref="componentRef" :is="componentMap.get(componentId)" v-bind="{ selectedRow, tabIndex, item }"
             @closed="closeComponent" v-if="componentId" />

+ 5 - 5
src/packages/mobile/views/swap/detail/components/listing/Index.vue

@@ -1,9 +1,9 @@
 <template>
-    <app-popup class="swap-listing" :title="'挂牌'" v-model:show="showModal" :refresh="refresh">
+    <app-popup class="swap-listing" :title="$t('quote.swap.title')" v-model:show="showModal" :refresh="refresh">
         <Form class="swap-listing__form" ref="formRef" @submit="onSubmit">
             <Tabs class="van-tabs--list" v-model:active="buyOrSell" :swipe-threshold="2">
-                <Tab title="买挂牌" />
-                <Tab title="卖挂牌" />
+                <Tab :title="$t('quote.swap.bidlisting')" />
+                <Tab :title="$t('quote.swap.asklisting')" />
             </Tabs>
             <Field label="交易账户">
                 <template #input>
@@ -13,8 +13,8 @@
             <Field label="价格类型">
                 <template #input>
                     <RadioGroup v-model="priceMove" direction='horizontal'>
-                        <Radio :name="2">固定价</Radio>
-                        <Radio :name="3" v-if="userStore.userType != 5">浮动价</Radio>
+                        <Radio :name="2">{{ $t('quote.swap.fixprice') }}</Radio>
+                        <Radio :name="3" v-if="userStore.userType != 5">{{ $t('quote.swap.floatprice') }}</Radio>
                     </RadioGroup>
                 </template>
             </Field>

+ 15 - 14
src/packages/mobile/views/swap/list/Index.vue

@@ -44,7 +44,7 @@ import { useRequest } from '@/hooks/request'
 import { useNavigation } from '@mobile/router/navigation'
 import { queryQuoteGoodsList, queryMdUserSwapProtocol } from '@/services/api/swap'
 import { requestInitMdUserSwapProtocol } from '@/services/api/account'
-import { useFuturesStore, useUserStore } from '@/stores'
+import { useFuturesStore, useUserStore, i18n } from '@/stores'
 import { showToast } from 'vant'
 import { getMemberUserId, getUserId } from '@/services/methods/user'
 import { shallowRef } from 'vue'
@@ -62,6 +62,7 @@ const props = defineProps({
     }
 })
 
+const { global: { t } } = i18n
 const { router, getQueryString, setGlobalUrlParams } = useNavigation()
 const futuresStore = useFuturesStore()
 const userStore = useUserStore()
@@ -111,29 +112,29 @@ const tableList = computed(() => {
 })
 
 const columns: Model.TableColumn[] = [
-    { field: 'goodsname', label: '商品/代码' },
-    { field: 'refgoodsname', label: '标的合约' },
-    { field: 'last', label: '当前价' },
-    { field: 'rise', label: '涨跌' },
-    { field: 'change', label: '幅度' },
-    { field: 'opened', label: '今开' },
-    { field: 'presettle', label: '昨结' },
-    { field: 'lowest', label: '最低' },
-    { field: 'highest', label: '最高' },
-    { field: 'amplitude', label: '振幅' },
+    { field: 'goodsname', label: t('quote.goodsname') },
+    { field: 'refgoodsname', label: t('quote.refgoodsname') },
+    { field: 'last', label: t('quote.last') },
+    { field: 'rise', label: t('quote.rise') },
+    { field: 'change', label: t('quote.change') },
+    { field: 'opened', label: t('quote.opened') },
+    { field: 'presettle', label: t('quote.presettle') },
+    { field: 'lowest', label: t('quote.lowest') },
+    { field: 'highest', label: t('quote.highest') },
+    { field: 'amplitude', label: t('quote.amplitude') },
 ]
 
 const rowClick = (row: Model.QuoteGoodsListRsp) => {
     /// 这里要去判断是否已经实名认证
     if (userStore.hasAuth) {
         if (userStore.userInfo.usertype != 2 && !canProtocolSign.value) {
-            showToast('请先通过“我的”-“协议签署”功能菜单签署相应的合同!')
+            showToast(t('quote.swap.tips1'))
         } else {
             setGlobalUrlParams(row)
             router.push({ name: 'swap-detail' })
         }
     } else {
-        showToast('未实名认证,请先去实名认证,如果已提交实名认证,请耐心等待审核通过!')
+        showToast(t('quote.swap.tips2'))
     }
 }
 
@@ -148,7 +149,7 @@ const { run: initMdUserSwapProtocol } = useRequest(requestInitMdUserSwapProtocol
         /// 可以交易
         canProtocolSign.value = true
         /// 重新请求
-        showToast('合同已提交签署请求,请耐心等待审核通过!')
+        showToast(t('quote.swap.tips3'))
     }
 })
 

+ 17 - 16
src/packages/mobile/views/transfer/list/Index.vue

@@ -69,7 +69,7 @@
 import { onActivated, onUnmounted, computed, PropType } from 'vue'
 import { parsePercent, handleNumberValue, formatDecimal } from '@/filters'
 import { useNavigation } from '@mobile/router/navigation'
-import { useFuturesStore } from '@/stores'
+import { useFuturesStore, i18n } from '@/stores'
 import quoteSocket from '@/services/websocket/quote'
 import AppList from '@mobile/components/base/list/index.vue'
 
@@ -83,6 +83,7 @@ const props = defineProps({
     }
 })
 
+const { global: { t } } = i18n
 const { router, getQueryString } = useNavigation()
 const subscribe = quoteSocket.createSubscribe()
 const futuresStore = useFuturesStore()
@@ -91,21 +92,21 @@ const title = getQueryString('title')
 const titleName = computed(() => title ? decodeURIComponent(title) : props.marketSection?.displayname ?? '定金转让')
 
 const columns: Model.TableColumn[] = [
-    { field: 'goodsname', label: '商品名称/代码' },
-    { field: 'bid', label: '买价' },
-    { field: 'bidvolume', label: '买量' },
-    { field: 'ask', label: '卖价' },
-    { field: 'askvolume', label: '卖量' },
-    { field: 'last', label: '当前价' },
-    { field: 'rise', label: '涨跌' },
-    { field: 'change', label: '幅度' },
-    { field: 'opened', label: '今开' },
-    { field: 'presettle', label: '昨结' },
-    { field: 'lowest', label: '最低' },
-    { field: 'highest', label: '最高' },
-    { field: 'amplitude', label: '振幅' },
-    { field: 'limitup', label: '涨停价' },
-    { field: 'limitdown', label: '跌停价' },
+    { field: 'goodsname', label: t('quote.goodsname') },
+    { field: 'bid', label: t('quote.bid') },
+    { field: 'bidvolume', label: t('quote.bidvolume') },
+    { field: 'ask', label: t('quote.ask') },
+    { field: 'askvolume', label: t('quote.askvolume') },
+    { field: 'last', label: t('quote.last') },
+    { field: 'rise', label: t('quote.rise') },
+    { field: 'change', label: t('quote.change') },
+    { field: 'opened', label: t('quote.opened') },
+    { field: 'presettle', label: t('quote.presettle') },
+    { field: 'lowest', label: t('quote.lowest') },
+    { field: 'highest', label: t('quote.highest') },
+    { field: 'amplitude', label: t('quote.amplitude') },
+    { field: 'limitup', label: t('quote.limitup') },
+    { field: 'limitdown', label: t('quote.limitdown') },
 ]
 
 const rowClick = ({ goodsid }: Model.GoodsQuote) => {