Handy_Cao 1 gadu atpakaļ
vecāks
revīzija
86c3f2a61c

+ 89 - 18
public/locales/en-US.json

@@ -48,6 +48,7 @@
         "transfer": "Transfer",
         "delivery": "Delivery",
         "listing": "Listing",
+        "delisting": "Delisting",
         "pickup": "Pick Up",
         "details": "Details",
         "deposit": "Make Up",
@@ -210,7 +211,41 @@
             "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!"
+            "tips3": "The contract has been submitted for signing, please wait patiently for approval!",
+            "sign": "Sign",
+            "unreviewed": "UnReviewed",
+            "username": "UserName",
+            "orderqty": "Qty",
+            "orderprice": "Price",
+            "marketmaxsub": "MarketMaxSub",
+            "orderqty1": "ListingQty",
+            "orderqty2": "DelistingQty",
+            "orderprice1": "ListingPrice",
+            "estimateprice": "EstimatePrice",
+            "referenceprice": "ReferencePrice",
+            "orderamount": "ListingAmount",
+            "estimateamount": "EstimateAmount",
+            "permargin": "PerMargin",
+            "avaiablemoney": "AvaiableFunds",
+            "pricemove": "PriceMove",
+            "currentaccount": "CurrentTaAccount",
+            "goodsname": "Name/Code",
+            "buyorsell": "BuyOrSell",
+            "marketprice": "MarketPrice",
+            "limitprice": "LimitPrice",
+            "enableqty": "EnableQty",
+            "sellprice": "SellPrice",
+            "buyprice": "BuyPrice",
+            "tips4": "You can't make a deal with yourself", 
+            "tips5": "The listing was submitted successfully.",
+            "tips6": "Please enter the price",
+            "tips7": "Please enter the listing price",
+            "tips8": "Please enter the listing quantity",
+            "tips9": "Please enter the basis",
+            "tips10": "Please enter the listing basis",
+            "tips11": "Please enter delisting price",
+            "tips12": "Please enter the delisting quantity",
+            "tips13": "The submission was successful."
         },
         "pricing": {
             "title": "Trade",
@@ -245,7 +280,25 @@
             "tips3": "Please select the spot warehouse receipt",
             "tips4": "Please input quantity",
             "tips5": "Insufficient amount available",
-            "tips6": "The listing was submitted successfully."
+            "tips6": "The listing was submitted successfully.",
+            "subtitle": "Spot Order",
+            "subtitle1": "Spot Warehouse Order",
+            "orderqty2": "DelistingQty",
+            "remainqty": "RemainQty",
+            "performancetemplate":"PerformanceTemplate",
+            "wrstandardname": "WrstandardName: ",
+            "warehousename": "WarehouseName:",
+            "warehousename1": "WarehouseName",
+            "enableqty1": "enableQty:",
+            "wrstandard": "WrstandardName",
+            "deliverygoods": "DeliveryGoods",
+            "tons": "Tons",
+            "yuan": "Yuan",
+            "tips8": "Delisting submission was successful.",
+            "tips9": "Please select",
+            "tips10": "Please select a category",
+            "tips11": "Please select the product",
+            "tips12": "Please select warehouse"
         },
         "transfer": {
             "title1": "Transfer Detail",
@@ -1088,22 +1141,40 @@
         "accountid": "AccouuntCode",
         "customername": "UserName",
         "currency": "Currency",
-        "tradedate": "Reckon Date",
-        "tradedetail": "Trade Detail",
-        "inamount": "Cash In",
-        "outamount": "Cash Out",
-        "closepl": "Close Pl",
-        "reckonpl": "Reckon Pl",
-        "paycharge": "Pay Charge",
-        "oriusedmargin": "Oriused Margin",
-        "orioutamountfreeze": "Oriout Amount Freeze",
-        "avaiableoutmoney": "Avaiable Out Cash",
-        "ordersumary": "Order Sumary",
-        "inoutamountdetail": "Cash In Out Detail",
-        "fundsinfo": "Funds Information",
-        "accountinfo": "Account Information",
-        "reckondate": "Reckon Date",
-        "reportdetail": "Report Detail"
+        "tradedate": "ReckonDate",
+        "tradedetail": "TradeDetail",
+        "inamount": "CashIn",
+        "outamount": "CashOut",
+        "closepl": "ClosePl",
+        "reckonpl": "ReckonPl",
+        "paycharge": "PayCharge",
+        "oriusedmargin": "OriusedMargin",
+        "orioutamountfreeze": "OrioutAmountFreeze",
+        "avaiableoutmoney": "AvaiableOutCash",
+        "ordersumary": "OrderSumary",
+        "inoutamountdetail": "CashInOutDetail",
+        "fundsinfo": "FundsInformation",
+        "accountinfo": "AccountInformation",
+        "reckondate": "ReckonDate",
+        "reportdetail": "ReportDetail",
+        "trade": {
+            "tradeqty": "TradeQty",
+            "tradeprice": "TradePrice",
+            "tradeamount": "TradeAmount",
+            "charge": "Charge"
+        },
+        "position": {
+            "curpositionqty": "CurPositionQty",
+            "frozenqty": "FrozenQty",
+            "curholderamount": "CurHolderAmount",
+            "avagepricedisplay": "AveragePrice"
+        },
+        "bank": {
+            "updatetime": "Time",
+            "executetypedisplay": "ExecuteType",
+            "amount": "Amount",
+            "applystatusdisplay": "ApplyStatus"
+        }
     },
     "notices": {
         "title": "Notice Announcement",

+ 76 - 4
public/locales/zh-CN.json

@@ -49,6 +49,7 @@
         "transfer": "转让",
         "delivery": "交收",
         "listing": "挂牌",
+        "delisting": "摘牌",
         "pickup": "提货",
         "details": "详情",
         "deposit": "补足定金",
@@ -209,9 +210,43 @@
             "title": "挂牌",
             "floatprice": "浮动价",
             "fixprice": "固定价",
+            "sign": "签署",
+            "unreviewed": "签署",
+            "username": "挂牌方",
+            "orderqty": "数量",
+            "orderprice": "价格",
+            "marketmaxsub": "点差",
+            "orderqty1": "挂牌量",
+            "orderqty2": "摘牌量",
+            "orderprice1": "挂牌价格",
+            "estimateprice": "估算价格",
+            "referenceprice": "参考价格",
+            "orderamount": "挂牌金额",
+            "estimateamount": "估算金额",
+            "permargin": "履约保证金",
+            "avaiablemoney": "可用资金",
+            "pricemove": "价格类型",
+            "currentaccount": "交易账户",
+            "goodsname": "商品/代码",
+            "buyorsell": "挂牌/方向",
+            "marketprice": "市价",
+            "limitprice": "限价",
+            "enableqty": "可摘量",
+            "sellprice": "卖出价格",
+            "buyprice": "买入价格",
             "tips1": "请先通过“我的”-“协议签署”功能菜单签署相应的合同!",
             "tips2": "未实名认证,请先去实名认证,如果已提交实名认证,请耐心等待审核通过!",
-            "tips3": "合同已提交签署请求,请耐心等待审核通过!"
+            "tips3": "合同已提交签署请求,请耐心等待审核通过!",
+            "tips4": "不能与自己成交", 
+            "tips5": "挂牌提交成功。",
+            "tips6": "请输入价格",
+            "tips7": "请输入挂牌价格",
+            "tips8": "请输入挂牌量",
+            "tips9": "请输入基差",
+            "tips10": "请输入挂牌基差",
+            "tips11": "请输入摘牌价格",
+            "tips12": "请输入摘牌量",
+            "tips13": "提交成功。"
         },
         "pricing": {
             "title": "交易下单",
@@ -228,6 +263,8 @@
         },
         "spot": {
             "title": "挂牌详情",
+            "subtitle": "现货下单",
+            "subtitle1": "现货仓单",
             "orderprice": "价格",
             "operate": "操作",
             "username": "挂牌方",
@@ -241,12 +278,29 @@
             "avaiableMoney": "可用资金",
             "enableqty": "可用量",
             "listingprice": "挂牌价格",
+            "orderqty2": "摘牌量",
+            "remainqty": "剩余量",
+            "performancetemplate":"履约模板",
+            "wrstandardname": "商品:",
+            "warehousename": "仓库:",
+            "warehousename1": "仓库",
+            "enableqty1": "可用:",
+            "wrstandard": "商品",
+            "deliverygoods": "品类",
+            "tons": "吨",
+            "yuan": "元",
             "tips1": "请选择履约模板",
             "tips2": "请输入价格",
             "tips3": "请选择现货仓单",
             "tips4": "请输入数量",
             "tips5": "可用量不足",
-            "tips6": "挂牌提交成功。"
+            "tips7": "剩余量不足",
+            "tips6": "挂牌提交成功。",
+            "tips8": "摘牌提交成功。",
+            "tips9": "请选择",
+            "tips10": "请选择品类",
+            "tips11": "请选择商品",
+            "tips12": "请选择仓库"
         },
         "transfer": {
             "title1": "转让详情",
@@ -1091,7 +1145,7 @@
         "customername": "名称",
         "currency": "币种",
         "tradedate": "结算日期",
-        "tradedetail": "TradeDetail",
+        "tradedetail": "成交明细",
         "inamount": "银行入金",
         "outamount": "银行出金",
         "closepl": "转让损益",
@@ -1105,7 +1159,25 @@
         "fundsinfo": "资金信息",
         "accountinfo": "账户信息",
         "reckondate": "结算日期",
-        "reportdetail": "ReportDetail"
+        "reportdetail": "报表明细",
+        "trade": {
+            "tradeqty": "数量",
+            "tradeprice": "价格",
+            "tradeamount": "成交金额",
+            "charge": "服务费"
+        },
+        "position": {
+            "curpositionqty": "持有量",
+            "frozenqty": "冻结量",
+            "curholderamount": "订单金额",
+            "avagepricedisplay": "均价"
+        },
+        "bank": {
+            "updatetime": "时间",
+            "executetypedisplay": "资金类型",
+            "amount": "金额",
+            "applystatusdisplay": "状态"
+        }
     },
     "notices": {
         "title": "通知公告",

+ 6 - 4
src/packages/mobile/views/report/components/bank/index.vue

@@ -22,6 +22,7 @@ import { shallowRef } from 'vue'
 import { formatDate } from '@/filters'
 import { useRequest } from '@/hooks/request'
 import { queryReportBankAccountOutInLog } from '@/services/api/report'
+import { i18n } from '@/stores'
 import AppModal from '@/components/base/modal/index.vue'
 import AppPullRefresh from '@mobile/components/base/pull-refresh/index.vue'
 import AppList from '@mobile/components/base/list/index.vue'
@@ -40,12 +41,13 @@ const props = defineProps({
 const showModal = shallowRef(true)
 const dataList = shallowRef<Model.ReportBankAccountOutInLogRsp[]>([])
 const error = shallowRef(false)
+const { global: { t } } = i18n
 
 const columns: Model.TableColumn[] = [
-    { field: 'updatetime', label: '时间' },
-    { field: 'executetypedisplay', label: '资金类型' },
-    { field: 'amount', label: '金额' },
-    { field: 'applystatusdisplay', label: '状态' },
+    { field: 'updatetime', label: t('report.bank.updatetime') },
+    { field: 'executetypedisplay', label: t('report.bank.executetypedisplay') },
+    { field: 'amount', label: t('report.bank.amount') },
+    { field: 'applystatusdisplay', label: t('report.bank.applystatusdisplay') },
 ]
 
 const { loading, pageIndex, pageCount, run } = useRequest(queryReportBankAccountOutInLog, {

+ 4 - 4
src/packages/mobile/views/report/components/position/index.vue

@@ -21,19 +21,19 @@
                         <div class="g-order-list__content">
                             <ul>
                                 <li>
-                                    <span>持有量</span>
+                                    <span>{{ $t('report.position.curpositionqty') }}</span>
                                     <span>{{ item.curpositionqty }}</span>
                                 </li>
                                 <li>
-                                    <span>冻结量</span>
+                                    <span>{{ $t('report.position.frozenqty') }}</span>
                                     <span>{{ item.frozenqty }}</span>
                                 </li>
                                 <li>
-                                    <span>订单金额</span>
+                                    <span>{{ $t('report.position.curholderamount') }}</span>
                                     <span>{{ item.curholderamount }}</span>
                                 </li>
                                 <li>
-                                    <span>均价</span>
+                                    <span>{{ $t('report.position.avagepricedisplay') }}</span>
                                     <span>{{ item.avagepricedisplay }}</span>
                                 </li>
                             </ul>

+ 4 - 4
src/packages/mobile/views/report/components/trade/index.vue

@@ -22,19 +22,19 @@
                         <div class="g-order-list__content">
                             <ul>
                                 <li>
-                                    <span>数量</span>
+                                    <span>{{ $t('report.trade.tradeqty') }}</span>
                                     <span>{{ item.tradeqty }}</span>
                                 </li>
                                 <li>
-                                    <span>价格</span>
+                                    <span>{{ $t('report.trade.tradeprice') }}</span>
                                     <span>{{ item.tradeprice }}</span>
                                 </li>
                                 <li>
-                                    <span>成交金额</span>
+                                    <span>{{ $t('report.trade.tradeamount') }}</span>
                                     <span>{{ item.tradeamount }}</span>
                                 </li>
                                 <li>
-                                    <span>服务费</span>
+                                    <span>{{ $t('report.trade.charge') }}</span>
                                     <span>{{ item.charge }}</span>
                                 </li>
                             </ul>

+ 16 - 15
src/packages/mobile/views/spot/add/components/buy/index.vue

@@ -4,38 +4,38 @@
             <CellGroup inset>
                 <Performance ref="performanceRef" tmptype="0,2" name="PerformanceTemplateID"
                     v-model="formData.PerformanceTemplateID" />
-                <Field name="WRFactorTypeId" label="现货仓单" placeholder="请选择" v-model="selectedRow.wrstandardname"
+                <Field name="WRFactorTypeId" :label="$t('quote.spot.subtitle1')" :placeholder="$t('quote.spot.tips9')" v-model="selectedRow.wrstandardname"
                     :rules="formRules.WRFactorTypeId" @click="showWarehouseReceipt = true" is-link readonly />
                 <template v-if="selectedRow.wrfactortypeid">
-                    <Field label="仓库" v-model="selectedRow.warehousename" readonly />
-                    <Field label="可用量">
+                    <Field :label="$t('quote.spot.warehousename1')" v-model="selectedRow.warehousename" readonly />
+                    <Field :label="$t('quote.spot.enableqty')">
                         <template #input>
                             <span>{{ selectedRow.enableqty }}吨</span>
                         </template>
                     </Field>
                 </template>
-                <Field name="FixedPrice" :rules="formRules.FixedPrice" label="价格">
+                <Field name="FixedPrice" :rules="formRules.FixedPrice" :label="$t('quote.spot.orderprice')">
                     <template #input>
                         <Stepper v-model="formData.FixedPrice" theme="round" :min="0" :decimal-length="2" :default-value="0"
                             :auto-fixed="false" button-size="22" />
                     </template>
                 </Field>
-                <Field name="OrderQty" :rules="formRules.OrderQty" label="数量">
+                <Field name="OrderQty" :rules="formRules.OrderQty" :label="$t('quote.spot.orderqty')">
                     <template #input>
                         <Stepper v-model="formData.OrderQty" theme="round" button-size="22" :min="0" :default-value="0"
                             :auto-fixed="false" integer />
                     </template>
                 </Field>
-                <Field label="货款金额">
+                <Field :label="$t('quote.spot.paymentamount')">
                     <template #input>
-                        <span>{{ amount }}</span>
+                        <span>{{ amount }}{{ $t('quote.spot.yuan') }}</span>
                     </template>
                 </Field>
             </CellGroup>
         </Form>
         <template #footer>
             <div class="g-form__footer">
-                <Button type="danger" @click="formRef?.submit" square block>提交</Button>
+                <Button type="danger" @click="formRef?.submit" square block>{{ $t('operation.submit') }}</Button>
             </div>
         </template>
         <component :is="WarehouseReceipt" v-model:show="showWarehouseReceipt" @change="onChange" />
@@ -49,10 +49,11 @@ import { fullloading } from '@/utils/vant'
 import { handleRequestBigNumber } from '@/filters'
 import { useNavigation } from '@mobile/router/navigation'
 import { useHdWROrder } from '@/business/trade'
+import { i18n } from '@/stores'
 
 const WarehouseReceipt = defineAsyncComponent(() => import('./warehouse-receipt.vue'))
 const Performance = defineAsyncComponent(() => import('@mobile/components/modules/performance/index.vue'))
-
+const { global: { t } } = i18n
 const { routerBack, beforeRouteLeave } = useNavigation()
 const { formData, listingSubmit, amount } = useHdWROrder()
 const formRef = shallowRef<FormInstance>()
@@ -63,32 +64,32 @@ const selectedRow = shallowRef<Partial<Model.HoldLBRsp>>({}) //选中的现货
 // 表单验证规则
 const formRules: { [key in keyof Proto.HdWROrderReq]?: FieldRule[] } = {
     WRFactorTypeId: [{
-        message: '请选择现货仓单',
+        message: t('quote.spot.tips3'),
         validator: () => {
             return !!selectedRow.value.wrfactortypeid
         }
     }],
     PerformanceTemplateID: [{
-        message: '请选择履约模板',
+        message: t('quote.spot.tips1'),
         validator: () => {
             return !!formData.PerformanceTemplateID
         }
     }],
     FixedPrice: [{
-        message: '请输入价格',
+        message: t('quote.spot.tips2'),
         validator: () => {
             return !!formData.FixedPrice
         }
     }],
     OrderQty: [{
-        message: '请输入数量',
+        message: t('quote.spot.tips4'),
         validator: (val) => {
             if (val) {
                 const { enableqty = 0 } = selectedRow.value
                 if (val <= enableqty) {
                     return true
                 }
-                return '可用量不足'
+                return t('quote.spot.tips5')
             }
             return false
         }
@@ -116,7 +117,7 @@ const formSubmit = () => {
 
     fullloading(() => {
         listingSubmit().then(() => {
-            showSuccessToast('挂牌提交成功。')
+            showSuccessToast(t('quote.spot.tips6'))
             routerBack()
         }).catch((err) => {
             showFailToast(err)

+ 5 - 5
src/packages/mobile/views/spot/add/components/buy/warehouse-receipt.vue

@@ -2,7 +2,7 @@
     <app-modal direction="right-top" height="100%" width="100%">
         <app-view class="g-form">
             <template #header>
-                <app-navbar title="选择现货仓单" @back="closed" />
+                <app-navbar :title="$t('quote.spot.tips3')" @back="closed" />
             </template>
             <RadioGroup class="g-form__container" v-model="checkedRow" v-if="dataList.length">
                 <CellGroup v-for="(item, index) in dataList" :key="index" @click="onChange(item)" inset>
@@ -11,16 +11,16 @@
                             <Radio :name="item" checked-color="#ee0a24">
                                 <ul style="margin-left: 10px;">
                                     <li>
-                                        <span>商品:</span>
+                                        <span>{{ $t('quote.spot.wrstandardname') }}</span>
                                         <span>{{ item.wrstandardname }}</span>
                                     </li>
                                     <li>
-                                        <span>仓库:</span>
+                                        <span>{{ $t('quote.spot.warehousename') }}</span>
                                         <span>{{ item.warehousename }}</span>
                                     </li>
                                     <li>
-                                        <span>可用:</span>
-                                        <span>{{ item.enableqty }}</span>
+                                        <span>{{ $t('quote.spot.enableqty') }}</span>
+                                        <span>{{ item.enableqty }}{{ $t('quote.spot.tons') }}</span>
                                     </li>
                                 </ul>
                             </Radio>

+ 18 - 18
src/packages/mobile/views/spot/add/components/sell/index.vue

@@ -4,47 +4,47 @@
             <CellGroup inset>
                 <Performance ref="performanceRef" tmptype="0,2" name="PerformanceTemplateID"
                     v-model="formData.PerformanceTemplateID" />
-                <Field name="DeliveryGoodsID" label="品类" :rules="formRules.DeliveryGoodsID" is-link>
+                <Field name="DeliveryGoodsID" :label="$t('quote.spot.deliverygoods')" :rules="formRules.DeliveryGoodsID" is-link>
                     <template #input>
                         <app-select v-model="formData.DeliveryGoodsID" :options="ftDeliveryGoodsList"
                             :optionProps="{ label: 'deliverygoodsname', value: 'deliverygoodsid' }"
                             @confirm="onDeliveryGoodsChange" />
                     </template>
                 </Field>
-                <Field name="WRStandardID" label="商品" :rules="formRules.WRStandardID" is-link
+                <Field name="WRStandardID" :label="$t('quote.spot.wrstandard')" :rules="formRules.WRStandardID" is-link
                     v-if="formData.DeliveryGoodsID">
                     <template #input>
                         <app-select v-model="formData.WRStandardID" :options="goodsList"
                             :optionProps="{ label: 'wrstandardname', value: 'wrstandardid' }" @confirm="onGoodsChange" />
                     </template>
                 </Field>
-                <Field name="FactoryItems" label="仓库" :rules="formRules.FactoryItems" is-link v-if="formData.WRStandardID">
+                <Field name="FactoryItems" :label="$t('quote.spot.warehousename1')" :rules="formRules.FactoryItems" is-link v-if="formData.WRStandardID">
                     <template #input>
                         <app-select :options="warehouseList"
                             :optionProps="{ label: 'dgfactoryitemvalue', value: 'dgfactoryitemid' }"
                             @confirm="onWarehouseChange" />
                     </template>
                 </Field>
-                <Field name="FixedPrice" :rules="formRules.FixedPrice" label="价格">
+                <Field name="FixedPrice" :rules="formRules.FixedPrice" :label="$t('quote.spot.orderprice')">
                     <template #input>
                         <Stepper v-model="formData.FixedPrice" theme="round" :min="0" :decimal-length="2" :default-value="0"
                             :auto-fixed="false" button-size="22" />
                     </template>
                 </Field>
-                <Field name="OrderQty" :rules="formRules.OrderQty" label="数量">
+                <Field name="OrderQty" :rules="formRules.OrderQty" :label="$t('quote.spot.orderqty')">
                     <template #input>
                         <Stepper v-model="formData.OrderQty" theme="round" button-size="22" :min="0" :default-value="0"
                             :auto-fixed="false" integer />
                     </template>
                 </Field>
-                <Field label="货款金额">
+                <Field :label="$t('quote.spot.paymentamount')">
                     <template #input>
-                        <span>{{ amount }}</span>
+                        <span>{{ amount }}{{ $t('quote.spot.yuan') }}</span>
                     </template>
                 </Field>
-                <Field label="可用资金">
+                <Field :label="$t('quote.spot.avaiableMoney')">
                     <template #input>
-                        <span>{{ accountStore.currentAccount.avaiableMoney?.toFixed(2) }}</span>
+                        <span>{{ accountStore.currentAccount.avaiableMoney?.toFixed(2) }}{{ $t('quote.spot.yuan') }}</span>
                     </template>
                 </Field>
             </CellGroup>
@@ -66,7 +66,7 @@ import { useNavigation } from '@mobile/router/navigation'
 import { useRequest } from '@/hooks/request'
 import { queryFtDeliveryGoods, queryWrStandardFactoryItem } from '@/services/api/goods'
 import { useHdWROrder } from '@/business/trade'
-import { useAccountStore } from '@/stores'
+import { useAccountStore, i18n } from '@/stores'
 import AppSelect from '@mobile/components/base/select/index.vue'
 
 const Performance = defineAsyncComponent(() => import('@mobile/components/modules/performance/index.vue'))
@@ -76,7 +76,7 @@ const { formData, listingSubmit, amount } = useHdWROrder()
 const accountStore = useAccountStore()
 const formRef = shallowRef<FormInstance>()
 const performanceRef = shallowRef()
-
+const { global: { t } } = i18n
 const { dataList: ftDeliveryGoodsList } = useRequest(queryFtDeliveryGoods)
 const { dataList: wrStandardFactoryItems, run: getWrStandardFactoryItems } = useRequest(queryWrStandardFactoryItem, { manual: true })
 
@@ -95,37 +95,37 @@ const warehouseList = computed(() => {
 // 表单验证规则
 const formRules: { [key in keyof Proto.HdWROrderReq]?: FieldRule[] } = {
     PerformanceTemplateID: [{
-        message: '请选择履约模板',
+        message: t('quote.spot.tips1'),
         validator: () => {
             return !!formData.PerformanceTemplateID
         }
     }],
     DeliveryGoodsID: [{
-        message: '请选择品类',
+        message: t('quote.spot.tips10'),
         validator: () => {
             return !!formData.DeliveryGoodsID
         }
     }],
     WRStandardID: [{
-        message: '请选择商品',
+        message: t('quote.spot.tips11'),
         validator: () => {
             return !!formData.WRStandardID
         }
     }],
     FactoryItems: [{
-        message: '请选择仓库',
+        message: t('quote.spot.tips12'),
         validator: () => {
             return !!formData.FactoryItems
         }
     }],
     FixedPrice: [{
-        message: '请输入价格',
+        message: t('quote.spot.tips2'),
         validator: () => {
             return !!formData.FixedPrice
         }
     }],
     OrderQty: [{
-        message: '请输入数量',
+        message: t('quote.spot.tips4'),
         validator: () => {
             return !!formData.OrderQty
         }
@@ -165,7 +165,7 @@ const formSubmit = () => {
     formData.BuyOrSell = BuyOrSell.Buy
     fullloading(() => {
         listingSubmit().then(() => {
-            showSuccessToast('挂牌提交成功。')
+            showSuccessToast(t('quote.spot.tips6'))
             routerBack()
         }).catch((err) => {
             showFailToast(err)

+ 3 - 3
src/packages/mobile/views/spot/add/index.vue

@@ -1,13 +1,13 @@
 <template>
     <app-view>
         <template #header>
-            <app-navbar title="现货下单" />
+            <app-navbar :title="$t('quote.spot.subtitle')" />
         </template>
         <Tabs class="van-tabs--list">
-            <Tab title="我要卖">
+            <Tab :title="$t('quote.spot.wantsell')">
                 <buy />
             </Tab>
-            <Tab title="我要买">
+            <Tab :title="$t('quote.spot.wantbuy')">
                 <sell />
             </Tab>
         </Tabs>

+ 16 - 15
src/packages/mobile/views/spot/detail/components/delisting/index.vue

@@ -2,22 +2,22 @@
     <app-popup class="supply-demand-listing" :title="buyorsell === BuyOrSell.Sell ? $t('quote.selll') : $t('quote.buy')"
         v-model:show="showModal" :refresh="refresh">
         <Form class="supply-demand-listing__form" ref="formRef" @submit="onSubmit">
-            <Field label="履约模板">
+            <Field :label="$t('quote.spot.performancetemplate')">
                 <template #input>
                     <span>{{ permancePlanTmp?.templatename ?? quoteDetail.performancetemplateid }}</span>
                 </template>
             </Field>
-            <Field label="挂牌方">
+            <Field :label="$t('quote.spot.username')">
                 <template #input>
                     <span>{{ quoteDetail.username }}</span>
                 </template>
             </Field>
-            <Field label="挂牌价格">
+            <Field :label="$t('quote.spot.listingprice')">
                 <template #input>
                     <span>{{ quoteDetail.fixedprice }}</span>
                 </template>
             </Field>
-            <Field label="剩余量">
+            <Field :label="$t('quote.spot.remainqty')">
                 <template #input>
                     <span>{{ quoteDetail.orderqty }}</span>
                 </template>
@@ -29,12 +29,12 @@
                         @confirm="onConfirm" />
                 </template>
             </Field> -->
-            <Field label="可用量" v-if="buyorsell === BuyOrSell.Sell">
+            <Field :label="$t('quote.spot.enableqty')" v-if="buyorsell === BuyOrSell.Sell">
                 <template #input>
                     <span>{{ selectedRow?.enableqty ?? 0 }}</span>
                 </template>
             </Field>
-            <Field name="OrderQty" :rules="formRules.OrderQty" label="摘牌量">
+            <Field name="OrderQty" :rules="formRules.OrderQty" :label="$t('quote.spot.orderqty2')">
                 <template #input>
                     <div class="g-qty-group__stepper">
                         <Stepper v-model="formData.OrderQty" theme="round" button-size="22" :auto-fixed="false"
@@ -42,19 +42,19 @@
                     </div>
                 </template>
             </Field>
-            <Field label="货款金额">
+            <Field :label="$t('quote.spot.paymentamount')">
                 <template #input>
                     <span>{{ amount }}</span>
                 </template>
             </Field>
-            <Field label="可用资金" v-if="buyorsell === BuyOrSell.Buy">
+            <Field :label="$t('quote.spot.avaiableMoney')" v-if="buyorsell === BuyOrSell.Buy">
                 <template #input>
                     <span>{{ accountStore.currentAccount.avaiableMoney?.toFixed(2) }}</span>
                 </template>
             </Field>
         </Form>
         <template #footer>
-            <Button type="danger" block round @click="formRef?.submit">提交</Button>
+            <Button type="danger" block round @click="formRef?.submit">{{ $t('operation.submit') }}</Button>
         </template>
     </app-popup>
 </template>
@@ -64,7 +64,7 @@ import { shallowRef, PropType, computed } from 'vue'
 import { Form, Field, Stepper, Button, FieldRule, FormInstance } from 'vant'
 import { fullloading, dialog } from '@/utils/vant'
 import { handleRequestBigNumber } from '@/filters'
-import { useAccountStore } from '@/stores'
+import { useAccountStore, i18n } from '@/stores'
 import { useRequest } from '@/hooks/request'
 import { queryPermancePlanTmp } from '@/services/api/performance'
 import { BuyOrSell } from '@/constants/order'
@@ -88,6 +88,7 @@ const props = defineProps({
     }
 })
 
+const { global: { t } } = i18n
 const { formData, formSubmit } = useHdWRDealOrder()
 const accountStore = useAccountStore()
 const formRef = shallowRef<FormInstance>()
@@ -117,21 +118,21 @@ const amount = computed(() => {
 // 表单验证规则
 const formRules: { [key in keyof Proto.HdWRDealOrderReq]?: FieldRule[] } = {
     WRFactorTypeId: [{
-        message: '请选择现货仓单',
+        message: t('quote.spot.tips3'),
         validator: () => {
             return !!selectedRow.value
         }
     }],
     OrderQty: [{
-        message: '请输入数量',
+        message: t('quote.spot.tips4'),
         validator: (val) => {
             if (val) {
                 const { enableqty = 0 } = selectedRow.value ?? {}
                 if (val > props.quoteDetail.orderqty) {
-                    return '剩余量不足'
+                    return t('quote.spot.tips7')
                 }
                 if (props.buyorsell === BuyOrSell.Sell && val > enableqty) {
-                    return '可用量不足'
+                    return t('quote.spot.tips5')
                 }
                 return true
             }
@@ -175,7 +176,7 @@ const onSubmit = () => {
     fullloading((hideLoading) => {
         formSubmit().then(() => {
             hideLoading()
-            dialog('摘牌提交成功。').then(() => closed(true))
+            dialog(t('quote.spot.tips8')).then(() => closed(true))
         }).catch((err) => {
             hideLoading(err, 'fail')
         })

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

@@ -4,7 +4,7 @@
             <app-navbar :title="item.goodscode + '/' + item.goodsname">
                 <template #right>
                     <div class="button-more" v-if="userStore.userType != 5" @click="onListing">
-                        <span>挂牌</span>
+                        <span>{{ $t('operation.listing') }}</span>
                     </div>
                 </template>
             </app-navbar>
@@ -39,19 +39,17 @@
 </template>
 
 <script lang="ts" setup>
-import { shallowRef, defineAsyncComponent, computed } from 'vue'
+import { shallowRef, defineAsyncComponent, computed, onActivated } from 'vue'
 import { Tab, Tabs, Button, showToast, Empty } from 'vant'
 import { useRequest } from '@/hooks/request'
 import { useNavigation } from '@mobile/router/navigation'
 import { useComponent } from '@/hooks/component'
 import { BuyOrSell } from '@/constants/order'
-import { queryTjmdTradeOrderDetail, queryMdUserSwapProtocol } from '@/services/api/swap'
-import { useFuturesStore } from '@/stores'
-import { useLoginStore, useUserStore } from '@/stores'
-import AppList from '@mobile/components/base/list/index.vue'
 import { getUserId } from '@/services/methods/user'
 import { formatDecimal } from '@/filters'
-import { onActivated } from 'vue'
+import { queryTjmdTradeOrderDetail, queryMdUserSwapProtocol } from '@/services/api/swap'
+import { useLoginStore, useUserStore, useFuturesStore, i18n } from '@/stores'
+import AppList from '@mobile/components/base/list/index.vue'
 
 const Price = defineAsyncComponent(() => import('@mobile/components/modules/quote/price/index.vue'))
 const Chart = defineAsyncComponent(() => import('@mobile/components/modules/hqchart/index.vue'))
@@ -71,7 +69,7 @@ const futuresStore = useFuturesStore()
 const quote = futuresStore.getGoodsQuote(item.refgoodsid)
 const goodsCode = computed(() => quote.value?.goodscode ?? '')
 const userStore = useUserStore()
-
+const { global: { t } } = i18n
 const { componentRef, componentId, openComponent, closeComponent } = useComponent(() => onRefresh())
 
 /// 查询用户掉期协议签署表
@@ -107,17 +105,17 @@ const { dataList, run } = useRequest(queryTjmdTradeOrderDetail, {
 const getDelistingButtonTitles = (tab: number, row: Model.TjmdTradeOrderDetailRsp) => {
     /// 如果是机构自己的单 不能签署
     if (row.userid === getUserId()) {
-        return '摘牌'
+        return t('operation.delisting')
     }
     switch (status(row)) {
         case 1:
-            return '签署'
+            return t('operation.sign')
         case 2:
-            return '待审核'
+            return t('operation.unreviewed')
         case 3:
-            return '待审核'
+            return t('operation.unreviewed')
         default:
-            return '摘牌'
+            return t('operation.delisting')
     }
 }
 
@@ -134,17 +132,17 @@ const onRefresh = () => {
 }
 
 const columns: Model.TableColumn[] = [
-    { field: 'orderprice', label: '价格' },
-    { field: 'orderqty', label: '数量' },
-    { field: 'username', label: '挂牌方' },
-    { field: 'operate', label: '摘牌' },
+    { field: 'orderprice', label: t('operation.orderprice') },
+    { field: 'orderqty', label: t('operation.orderqty') },
+    { field: 'username', label: t('operation.username') },
+    { field: 'operate', label: t('operation.delisting') },
 ]
 
 const onDelisting = (row: Model.TjmdTradeOrderDetailRsp) => {
     selectedRow.value = row
     /// 不能与自己成交
     if (row.userid === loginStore.userId) {
-        showToast('不能与自己成交')
+        showToast(t('operation.tips4'))
         return
     }
     switch (status(row)) {

+ 23 - 23
src/packages/mobile/views/swap/detail/components/delisting/Index.vue

@@ -1,62 +1,62 @@
 <template>
-    <app-popup class="g-form" :title="'摘牌'" v-model:show="showModal" :refresh="refresh">
+    <app-popup class="g-form" :title="$t('operation.delisting')" v-model:show="showModal" :refresh="refresh">
         <Form class="g-form__container" ref="formRef" @submit="onSubmit" v-if="props">
-            <Field label="交易账户">
+            <Field :label="$t('quote.swap.currentaccount')">
                 <template #input>
                     <span>{{ accountStore.currentAccountId }}</span>
                 </template>
             </Field>
-            <Field label="商品/代码">
+            <Field :label="$t('quote.swap.goodsname')">
                 <template #input>
                     <span>{{ item.goodsname }}/{{ item.goodscode }}</span>
                 </template>
             </Field>
-            <Field label="挂牌方">
+            <Field :label="$t('quote.swap.username')">
                 <template #input>
                     <span>{{ selectedRow.username }}</span>
                 </template>
             </Field>
-            <Field label="挂牌方向">
+            <Field :label="$t('quote.swap.buyorsell')">
                 <template #input>
                     <span>{{ getBuyOrSellName(selectedRow.buyorsell) }}</span>
                 </template>
             </Field>
-            <Field label="价格类型">
+            <Field :label="$t('quote.swap.pricemove')">
                 <template #input>
                     <RadioGroup v-model="priceMove" direction='horizontal'>
-                        <Radio :name="2" v-if="selectedRow.pricemode === 2">固定价</Radio>
-                        <Radio :name="3" v-if="selectedRow.pricemode === 3">浮动价</Radio>
+                        <Radio :name="2" v-if="selectedRow.pricemode === 2">{{ $t('quote.swap.fixprice') }}</Radio>
+                        <Radio :name="3" v-if="selectedRow.pricemode === 3">{{ $t('quote.swap.floatprice') }}</Radio>
                     </RadioGroup>
                 </template>
             </Field>
-            <Field label="挂牌价格" v-if="priceMove === 2">
+            <Field :label="$t('quote.swap.orderprice1')" v-if="priceMove === 2">
                 <template #input>
                     <span :class="quote?.lastColor">{{ selectedRow.pricemode === 3 ? (selectedRow.marketmaxsub +
                         (quote?.last
                             ?? 0.0)).toFixed(goods?.decimalplace ?? 2.0) : selectedRow.orderprice }}</span>
                 </template>
             </Field>
-            <Field label="挂牌价格" v-if="selectedRow.pricemode === 3">
+            <Field :label="$t('quote.swap.orderprice1')" v-if="selectedRow.pricemode === 3">
                 <template #input>
                     <RadioGroup v-model="priceMode" direction='horizontal'>
-                        <Radio :name="1">市价</Radio>
-                        <Radio :name="2">限价</Radio>
+                        <Radio :name="1">{{ $t('quote.swap.marketprice') }}</Radio>
+                        <Radio :name="2">{{ $t('quote.swap.limitprice') }}</Radio>
                     </RadioGroup>
                 </template>
             </Field>
-            <Field label="可摘量">
+            <Field :label="$t('quote.swap.enableqty')">
                 <template #input>
                     <span>{{ selectedRow.orderqty }}</span>
                 </template>
             </Field>
-            <Field v-if="priceMode !== 1" prop="OrderPrice" :label="selectedRow.buyorsell === 0 ? '卖出价格' : '买入价格'">
+            <Field v-if="priceMode !== 1" prop="OrderPrice" :label="selectedRow.buyorsell === 0 ? $t('quote.swap.sellprice') : $t('quote.swap.buyprice')">
                 <template #input>
                     <Stepper theme="round" button-size="22" :min="0.0" :step="Math.pow(10, -1 * (goods?.decimalplace ?? 0))"
                         :decimal-length="(goods?.decimalplace ?? 2)" v-model="formData.OrderPrice"
                         @change="calculateDelistingAmount" />
                 </template>
             </Field>
-            <Field name="OrderQty" :rules="formRules.OrderQty" label="摘牌量">
+            <Field name="OrderQty" :rules="formRules.OrderQty" :label="$t('quote.swap.orderqty2')">
                 <template #input>
                     <div class="g-qty-group">
                         <div class="g-qty-group__stepper">
@@ -70,17 +70,17 @@
                     </div>
                 </template>
             </Field>
-            <Field label="估算金额" v-if="priceMove === 3">
+            <Field :label="$t('quote.swap.estimateamount')" v-if="priceMove === 3">
                 <template #input>
                     <span>{{ amount.toFixed(2) }}</span>
                 </template>
             </Field>
-            <Field label="履约保证金">
+            <Field :label="$t('quote.swap.permargin')">
                 <template #input>
                     <span>{{ permargin.toFixed(2) }}</span>
                 </template>
             </Field>
-            <Field label="可用资金">
+            <Field :label="$t('quote.swap.avaiablemoney')">
                 <template #input>
                     <span>{{ accountStore.currentAccount.avaiableMoney?.toFixed(2) }}</span>
                 </template>
@@ -98,7 +98,7 @@
 import { shallowRef, PropType, computed } from 'vue'
 import { Form, FormInstance, Button, Field, RadioGroup, Radio, FieldRule, Stepper } from 'vant'
 import { handleRequestBigNumber } from '@/filters'
-import { useAccountStore, useFuturesStore } from '@/stores'
+import { useAccountStore, useFuturesStore, i18n } from '@/stores'
 import { EBuildType, EDelistingType, EListingSelectType, EOrderOperateType, EPriceMode, EValidType } from '@/constants/client'
 import { useOrder } from '@/business/trade'
 import { BuyOrSell, getBuyOrSellName } from '@/constants/order'
@@ -125,7 +125,7 @@ const props = defineProps({
 const formRef = shallowRef<FormInstance>()
 const showModal = shallowRef(true)
 const refresh = shallowRef(false) // 是否刷新父组件数据
-
+const { global: { t } } = i18n
 // 数量步长列表
 const qtyStepList = [1, 5, 10, 20, 30, 50]
 // 数量步长
@@ -150,13 +150,13 @@ const quote = futuresStore.getGoodsQuote(props.item?.refgoodsid ?? 0)
 // 表单验证规则
 const formRules: { [key in keyof Proto.OrderReq]?: FieldRule[] } = {
     OrderPrice: [{
-        message: '请输入摘牌价格',
+        message: t('quote.swap.tips11'),
         validator: () => {
             return !!formData.OrderPrice
         }
     }],
     OrderQty: [{
-        message: '请输入挂牌量',
+        message: t('quote.swap.tips12'),
         validator: () => {
             return !!formData.OrderQty
         }
@@ -238,7 +238,7 @@ const onSubmit = () => {
     fullloading((hideLoading) => {
         formSubmit().then(() => {
             hideLoading()
-            dialog('提交成功。').then(() => closed(true))
+            dialog(t('quote.swap.tips13')).then(() => closed(true))
         }).catch((err) => {
             hideLoading(err, 'fail')
         })

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

@@ -5,12 +5,12 @@
                 <Tab :title="$t('quote.swap.bidlisting')" />
                 <Tab :title="$t('quote.swap.asklisting')" />
             </Tabs>
-            <Field label="交易账户">
+            <Field :label="$t('quote.swap.currentaccount')">
                 <template #input>
                     <span>{{ accountStore.currentAccountId }}</span>
                 </template>
             </Field>
-            <Field label="价格类型">
+            <Field :label="$t('quote.swap.pricemove')">
                 <template #input>
                     <RadioGroup v-model="priceMove" direction='horizontal'>
                         <Radio :name="2">{{ $t('quote.swap.fixprice') }}</Radio>
@@ -18,7 +18,7 @@
                     </RadioGroup>
                 </template>
             </Field>
-            <Field name="OrderPrice" :rules="formRules.OrderPrice" label="挂牌价格" v-if="priceMove === 2">
+            <Field name="OrderPrice" :rules="formRules.OrderPrice" :label="$t('quote.swap.orderprice1')" v-if="priceMove === 2">
                 <template #input>
                     <div class="g-qty-group__stepper">
                         <Stepper v-model="formData.OrderPrice" theme="round" button-size="22" :auto-fixed="false"
@@ -26,7 +26,7 @@
                     </div>
                 </template>
             </Field>
-            <Field name="MarketMaxSub" :rules="formRules.MarketMaxSub" label="点差" v-if="priceMove === 3">
+            <Field name="MarketMaxSub" :rules="formRules.MarketMaxSub" :label="$t('quote.swap.marketmaxsub')" v-if="priceMove === 3">
                 <template #input>
                     <div class="g-qty-group__stepper">
                         <Stepper v-model="formData.MarketMaxSub" theme="round" :max="maxspread" :min="minspread" button-size="22" :auto-fixed="true"
@@ -34,7 +34,7 @@
                     </div>
                 </template>
             </Field>
-            <Field name="OrderQty" :rules="formRules.OrderQty" label="挂牌量">
+            <Field name="OrderQty" :rules="formRules.OrderQty" :label="$t('quote.swap.orderqty1')">
                 <template #input>
                     <div class="g-qty-group">
                         <div class="g-qty-group__stepper">
@@ -48,39 +48,39 @@
                     </div>
                 </template>
             </Field>
-            <Field label="估算价格" v-if="priceMove === 3">
+            <Field :label="$t('quote.swap.estimateprice')" v-if="priceMove === 3">
                 <template #input>
                     <span :class="quote?.lastColor">{{ formatDecimal(estimateprice) }}</span>
                 </template>
             </Field>
-            <Field label="参考价格" v-if="priceMove === 2">
+            <Field :label="$t('quote.swap.referenceprice')"  v-if="priceMove === 2">
                 <template #input>
                     <span :class="quote?.lastColor">{{ quote?.last ?? 0.0 }}</span>
                 </template>
             </Field>
-            <Field label="挂牌金额" v-if="priceMove === 2">
+            <Field :label="$t('quote.swap.orderamount')" v-if="priceMove === 2">
                 <template #input>
                     <span>{{ amount.toFixed(2) }}</span>
                 </template>
             </Field>
-            <Field label="估算金额" v-if="priceMove === 3">
+            <Field :label="$t('quote.swap.estimateamount')" v-if="priceMove === 3">
                 <template #input>
                     <span>{{ amount.toFixed(2) }}</span>
                 </template>
             </Field>
-            <Field label="履约保证金">
+            <Field :label="$t('quote.swap.permargin')">
                 <template #input>
                     <span>{{ permargin.toFixed(2) }}</span>
                 </template>
             </Field>
-            <Field label="可用资金">
+            <Field :label="$t('quote.swap.avaiablemoney')">
                 <template #input>
                     <span>{{ accountStore.currentAccount.avaiableMoney?.toFixed(2) }}</span>
                 </template>
             </Field>
         </Form>
         <template #footer>
-            <Button type="danger" block round @click="formRef?.submit">确定</Button>
+            <Button type="danger" block round @click="formRef?.submit">{{ $t('operation.confirm') }}</Button>
         </template>
     </app-popup>
 </template>
@@ -92,10 +92,10 @@ import { useOrder } from '@/business/trade'
 import { fullloading, dialog } from '@/utils/vant'
 import { useRequest } from '@/hooks/request'
 import { queryTjmdTodayAccountMargin } from '@/services/api/swap'
-import { useAccountStore, useFuturesStore, useUserStore } from '@/stores'
+import { useAccountStore, useFuturesStore, useUserStore, i18n} from '@/stores'
+import { formatDecimal } from '@/filters'
 import { EPriceMode, EListingSelectType, EDelistingType, EBuildType, EValidType, EOrderOperateType } from '@/constants/client'
 import AppPopup from '@mobile/components/base/popup/index.vue'
-import { formatDecimal } from '@/filters'
 
 const props = defineProps({
     item: {
@@ -108,6 +108,7 @@ const props = defineProps({
     }
 })
 
+const { global: { t } } = i18n
 const accountStore = useAccountStore()
 const futuresStore = useFuturesStore()
 const userStore = useUserStore()
@@ -216,7 +217,7 @@ const onSubmit = () => {
     fullloading((hideLoading) => {
         formSubmit().then(() => {
             hideLoading()
-            dialog('挂牌提交成功。').then(() => closed(true))
+            dialog(t('quote.swap.tips5')).then(() => closed(true))
         }).catch((err) => {
             hideLoading(err, 'fail')
         })
@@ -226,31 +227,31 @@ const onSubmit = () => {
 // 表单验证规则
 const formRules: { [key in keyof Proto.OrderReq]?: FieldRule[] } = {
     OrderPrice: [{
-        message: '请输入价格',
+        message: t('quote.swap.tips6'),
         validator: (val) => {
             if (val) {
                 if (priceMove.value === EPriceMode.PRICEMODE_LIMIT) {
                     return true
                 }
-                return '请输入挂牌价格'
+                return t('quote.swap.tips7')
             }
             return false
         }
     }],
     OrderQty: [{
-        message: '请输入挂牌量',
+        message: t('quote.swap.tips8'),
         validator: () => {
             return !!formData.OrderQty
         }
     }],
     MarketMaxSub: [{
-        message: '请输入基差',
+        message: t('quote.swap.tips9'),
         validator: (val) => {
             if (val) {
                 if (priceMove.value === EPriceMode.PRICEMODE_FLOAT) {
                     return !!formData.MarketMaxSub
                 }
-                return '请输入挂牌基差'
+                return t('quote.swap.tips10')
             }
             return false
         }