fence13 преди 10 месеца
родител
ревизия
64fcf36273

+ 6 - 6
src/locales/en.ts

@@ -431,7 +431,7 @@ export default {
       signInTitle: 'Out-of-the-box middle and back office management system',
       signInDesc: 'Enter your personal details to get started!',
       policy: 'I agree to the xxx Privacy Policy',
-      scanSign: `Scan the code and click ‘Confirm’ to complete your login.`,
+      scanSign: `Scan the code and click 'Confirm' to complete your login.`,
       loginButton: 'Sign In',
       registerButton: 'Sign Up',
       rememberMe: 'Remember me',
@@ -1184,9 +1184,9 @@ export default {
     boundMembershipCard: 'Bound membership card',
     points: 'Points',
     commissionAmount: 'Commission Amount',
-    consecutiveSignInDays: 'Consecutive days of signing in',
+    consecutiveSignInDays: 'Consecutive Sign-in Days',
     loginIp: 'Login ip',
-    level: 'Level',
+    userLevel: 'Level',
     promotionId: 'Promotion id',
     purchaseCount: 'Purchase',
     subordinateCount: 'Number of subordinates',
@@ -1629,9 +1629,9 @@ export default {
     pleaseEnterMessageEncryptionKey: 'Please enter the message encryption and decryption key',
     pleaseEnterMiniProgramAppId: 'Please enter applet appId',
     pleaseEnterMiniProgramAppSecret: 'Please enter the applet appSecret',
-    tip11: 'You can find ‘Micro Signal’ in the menu [Settings & Development - Public Number Settings - Account Details] of WeChat Public Platform (mp.weixin.qq.com).',
-    tip12: 'You can find ‘Developer ID (AppID)’ in the menu [Settings & Development - Public Number Settings - Basic Settings] of WeChat Public Platform (mp.weixin.qq.com).',
-    tip13: 'You can find ‘Developer Password (AppSecret)’ in [Settings & Development - Public Number Settings - Basic Settings] on the menu of WeChat Public Platform (mp.weixin.qq.com).',
+    tip11: 'You can find "Micro Signal" in the menu [Settings & Development - Public Number Settings - Account Details] of WeChat Public Platform (mp.weixin.qq.com).',
+    tip12: 'You can find "Developer ID (AppID)" in the menu [Settings & Development - Public Number Settings - Basic Settings] of WeChat Public Platform (mp.weixin.qq.com).',
+    tip13: 'You can find "Developer Password (AppSecret)" in [Settings & Development - Public Number Settings - Basic Settings] on the menu of WeChat Public Platform (mp.weixin.qq.com).',
     nameCannotBeEmpty: 'Name cannot be empty',
     officialAccountCannotBeEmpty: 'Public number account cannot be empty.',
     officialAccountAppIdCannotBeEmpty: 'Public appId cannot be empty.',

+ 1 - 0
src/locales/ja.ts

@@ -953,6 +953,7 @@ export default {
   },
   mall: {
     orderTotalPrice: '注文合計金額',
+    userLevel: '等級',
     actualPaymentAmount: '実際の支払金額',
     paymentResult: '支払い結果',
     scanningTheCodeForReceivingPayment: '支払い用QRコードをスキャン中...',

+ 14 - 4
src/locales/zh-CN.ts

@@ -427,7 +427,7 @@ export default {
       mobileSignInFormTitle: '手机登录',
       qrSignInFormTitle: '二维码登录',
       signUpFormTitle: '注册',
-      forgetFormTitle: '重置密码',
+      forgetFormTitle: '找回密码',
       signInTitle: '开箱即用的中后台管理系统',
       signInDesc: '输入您的个人详细信息开始使用!',
       policy: '我同意xxx隐私政策',
@@ -1188,6 +1188,7 @@ export default {
     commissionAmount: '佣金金额',
     consecutiveSignInDays: '连续签到天数',
     loginIp: '登录ip',
+    userLevel: '等级',  // 改为更具体的键名
     promotionId: '推广id',
     purchaseCount: '购买次数',
     subordinateCount: '下级人数',
@@ -2367,6 +2368,7 @@ export default {
     allHaveBeenMarkedAsReadSuccessfully:'全部已读成功!',
     batchMarkingAsReadWasSuccessful:'批量已读成功!',
     testSending:'测试发送',
+    update: '更新/修改'
   },
   public: {
     all: '全部',
@@ -2377,7 +2379,6 @@ export default {
     endDate: '结束日期',
     delete: '删除',
     createTime: '创建时间',
-    update: '修改',
     none: '无',
     close: '关闭',
     normal: '正常',
@@ -2395,7 +2396,16 @@ export default {
     pleaseEnterNotes: '请输入备注',
     expand: '展开',
     collapse: '折叠',
-    scord: '秒'
+    scord: '秒',
+    update: '更新'
+  },
+  'OAuth 2.0': 'OAuth 2.0', // 避免菜单名是 OAuth 2.0 时,一直 warn 报错
+  update: {
+    update: '更新'
   },
-  'OAuth 2.0': 'OAuth 2.0' // 避免菜单名是 OAuth 2.0 时,一直 warn 报错
+  dict: {
+    typeUpdate: '字典类型编辑',
+    dataUpdate: '字典数据编辑',
+    update: '更新'
+  }
 }

+ 11 - 9
src/plugins/vueI18n/index.ts

@@ -21,18 +21,20 @@ const createI18nOptions = async (): Promise<I18nOptions> => {
   })
 
   return {
-    legacy: false,
-    locale: locale.lang,
-    fallbackLocale: locale.lang,
+    legacy: false, // 是否使用 Vue I18n Legacy API,false 表示使用 Composition API
+    locale: locale.lang, // 当前语言
+    fallbackLocale: locale.lang, // 回退语言,当前语言的翻译没有找到时会使用这个语言
     // globalInjection: true,
     messages: {
-      [locale.lang]: message
+      [locale.lang]: message // 语言包信息
     },
-    availableLocales: localeMap.map((v) => v.lang),
-    sync: true,
-    silentTranslationWarn: true,
-    missingWarn: false,
-    silentFallbackWarn: true
+    availableLocales: localeMap.map((v) => v.lang), // 可用的语言列表
+    sync: true, // 是否将根组件的语言环境与 Vue 实例同步
+    silentTranslationWarn: false, // 是否禁止翻译警告,true 表示禁止
+    missingWarn: true, // 是否在缺少翻译时发出警告,false 表示不警告
+    silentFallbackWarn: false, // 是否禁止 fallback 时的警告,true 表示禁止
+    fallbackWarn: false, // 是否在 fallback 时发出警告,false 表示不警告
+    warnHtmlMessage: false // 是否在 HTML 消息中发出警告,false 表示不警告
   }
 }
 

+ 7 - 6
src/views/mall/cashier/help.vue

@@ -93,7 +93,7 @@
 
                   <div class="goods-item" :key="idx" v-for="(item,idx) in productList">
                       <div class="item" @click="clickGoods(item.id)"  >
-                        <img class="image" lazy :src="convertImageUrl(item.image)" />
+                        <img class="image" lazy :src=" convertImageUrl(item.image)" />
                         <div class="goods-name">{{item.storeName}}</div>
                         <div class="goods-price">¥{{item.price}}</div>
                       </div>
@@ -143,16 +143,17 @@
 <script setup lang="ts" name="Cashier">
 import * as ProductCategoryApi from '@/api/mall/product/category'
 import * as StoreProductApi from '@/api/mall/product/product'
-import * as ShopApi from '@/api/mall/store/shop'
+// import * as ShopApi from '@/api/mall/store/shop'
 import * as CashierApi from '@/api/mall/cashier'
 import type { TabsPaneContext } from 'element-plus'
-import { formatPast,formatDate } from '@/utils/formatTime'
-import settlement from './settlement.vue'
+// import { formatPast,formatDate } from '@/utils/formatTime'
+import {convertImageUrl} from '@/utils/image-helper'
+// import settlement from './settlement.vue'
 // import payResult from './payResult.vue'
 // import scanPay from './scanPay.vue'
-import hangList from './hangList.vue'
+// import hangList from './hangList.vue'
 import { useUserStore } from '@/store/modules/user'
-import { convertImageUrl } from '@/utils/image-helper'
+
 const { t } = useI18n()
 
 const drawer = ref(false)

+ 1 - 1
src/views/mall/member/user/UserDetail.vue

@@ -17,7 +17,7 @@
             <el-descriptions-item :label="t('mall.commissionAmount')">{{ DetailData.brokeragePrice }}</el-descriptions-item>
             <el-descriptions-item :label="t('mall.consecutiveSignInDays')">{{ DetailData.signNum }}</el-descriptions-item>
             <el-descriptions-item :label="t('mall.loginIp')">{{ DetailData.loginIp }}</el-descriptions-item>
-            <el-descriptions-item :label="t('mall.level')">{{ DetailData.level }}</el-descriptions-item>
+            <el-descriptions-item :label="t('mall.userLevel')">{{ DetailData.level }}</el-descriptions-item>
             <el-descriptions-item :label="t('mall.promotionId')">{{ DetailData.spreadUid }}</el-descriptions-item>
             <el-descriptions-item :label="t('mall.purchaseCount')">{{ DetailData.payCount }}</el-descriptions-item>
             <el-descriptions-item :label="t('mall.subordinateCount')">{{ DetailData.spreadCount }}</el-descriptions-item>

+ 32 - 17
src/views/mall/order/storeOrder/OrderDetail.vue

@@ -14,23 +14,38 @@
               {{ t('mall.dishDetails') }}
             </div>
           </template>
-          <div
-            style="background: linear-gradient(to bottom, #e9f1ee, #fcfcf4); padding: 20px 30px; margin: 10px 0; border-radius: 20px"
-            v-for="(item, index) in DetailData.appDeskOrderVo"
-            :key="index"
-          >
-            <div class="flex align-center">
-              <div><el-avatar :size="50" :src="item.uavatar" /></div>
-              <div class="flex flex-1 justify-between font-size-sm text-color-assist">
-                <div class="flex flex-column ml-2">
-                  <span>{{ item.unickname }}</span>
-                  <span>{{ formatDate(item.addTime) }}</span>
-                </div>
-                <div style="">
-                  <span style="color: #9acafc; font-weight: bold">{{
-                    item.uidType == 'user' ? t('mall.userOrdering') : t('mall.staffOrderingOnBehalf')
-                  }}</span>
-                  <span style="color: #5ac725">({{ item.isOrder == 0 ? t('mall.mealNotServed') : t('mall.mealServed') }})</span>
+          
+            <div
+              style="background: linear-gradient(to bottom, #e9f1ee, #fcfcf4); padding: 20px 30px; margin: 10px 0; border-radius: 20px"
+              v-for="(item, index) in DetailData.appDeskOrderVo"
+              :key="index"
+            >
+              <div class="flex align-center">
+                <div><el-avatar :size="50" :src="item.uavatar" /></div>
+                <div class="flex flex-1 justify-between font-size-sm text-color-assist">
+                  <div class="flex flex-column ml-2">
+                    <span>{{ item.unickname }}</span>
+                    <span>{{ formatDate(item.addTime) }}</span>
+                  </div>
+                  <div style="">
+                    <span style="color: #9acafc; font-weight: bold">{{
+                      item.uidType == 'user' ? t('mall.userOrdering') : t('mall.staffOrderingOnBehalf')
+                    }}</span>
+                    <span style="color: #5ac725">({{ item.isOrder == 0 ? t('mall.mealNotServed') : t('mall.mealServed') }})</span>
+                  <el-divider />
+                  <div class="flex align-center" v-for="(good,index2) in item.appDeskOrderGoodsVos" :key="index2">
+                    <div><el-image :src="convertImageUrl(good.image)" style="width: 70px;height: 70px;" /></div>
+                    <div class="flex  flex-1 flex-column ml-2 font-size-sm">
+                        <div class="flex justify-between"><span class="font-weight-bolder">{{good.title}}</span><span style="color: #f56c6c;">{{good.spec}}</span></div>
+                        <div class="flex justify-between mt-1"><span>¥{{good.price}}</span><span>x{{good.number}}</span></div>
+                    </div>
+                  </div>
+                  <div style="">
+                    <span style="color: #9acafc; font-weight: bold">{{
+                      item.uidType == 'user' ? t('mall.userOrdering') : t('mall.staffOrderingOnBehalf')
+                    }}</span>
+                    <span style="color: #5ac725">({{ item.isOrder == 0 ? t('mall.mealNotServed') : t('mall.mealServed') }})</span>
+                  </div>
                 </div>
               </div>
             </div>