ljc 7 месяцев назад
Родитель
Сommit
f2ba8450de

+ 1 - 0
package.json

@@ -18,6 +18,7 @@
   },
   "dependencies": {
     "@better-scroll/core": "^2.4.2",
+    "@vue/runtime-dom": "^3.5.24",
     "@vueuse/core": "^9.1.1",
     "@wangeditor/editor": "^5.1.14",
     "@wangeditor/editor-for-vue": "^5.1.12",

+ 10 - 1
src/App.vue

@@ -1,14 +1,23 @@
 <template>
-  <el-config-provider :size="globalComSize">
+  <el-config-provider :size="globalComSize" :locale="currentLocale">
     <router-view v-if="isRouterAlive"></router-view>
   </el-config-provider>
 </template>
 
 <script lang="ts" setup>
   import { computed, provide, nextTick, onMounted, ref, getCurrentInstance } from 'vue'
+  import zhCn from 'element-plus/es/locale/lang/zh-cn'
+  import en from 'element-plus/es/locale/lang/en'
   import { useSettingStore } from '@/store/modules/setting'
   import Pigeon from './lib/pigeon.js'
   import Session from './lib/session.js'
+  import { useStore } from 'vuex'
+
+  const store = useStore()
+  // 切换语言
+  const currentLocale = computed(() => {
+    return store.state.home.locale === 'cn' ? zhCn : en
+  })
 
   let isRouterAlive = ref(true)
   const SettingStore = useSettingStore()

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
src/assets/theme/index.scss


+ 4 - 1
src/lib/pigeon.js

@@ -28,7 +28,10 @@ class Pigeon {
         this.vue.$message.success({ customClass: 'crm_message crm_msg_suc', message: msg })
         break
       case 2:
-        this.vue.$message.warning({ customClass: 'crm_message crm_msg_war', message: msg })
+        this.vue.$message.warning({
+          customClass: 'crm_message crm_msg_war',
+          message: msg,
+        })
         break
       case 3:
         this.vue.$message.error({ customClass: 'crm_message crm_msg_err', message: msg })

+ 1 - 2
src/lib/service.js

@@ -1,6 +1,6 @@
 import axios from 'axios'
 import Config from '../config'
-import { useStore } from 'vuex'
+import store from '../vuexStore'
 // axios.defaults.baseURL = Config.Host
 
 if (sessionStorage.getItem('access_token')) {
@@ -21,7 +21,6 @@ class Service {
   // session过期
   SessionExpire() {
     // 状态管理去处理过期事件
-    const store = useStore()
     console.log(store, 'store')
     store.commit('InfoExpire', true)
     // this.vue.$store.commit('InfoExpire', true)

+ 6 - 1
src/main.ts

@@ -1,4 +1,4 @@
-import { createApp } from 'vue'
+import { createApp, ref, toRef } from 'vue'
 import App from './App.vue'
 import router from './routers'
 import vuex from './vuexStore'
@@ -24,6 +24,7 @@ import '@/styles/cwg_common.scss'
 // 引入阿里图标库
 import '@/assets/iconfont/iconfont.scss'
 import '@/assets/iconfont/iconfont.js'
+import '@/assets/theme/index.scss'
 // 引入国际化
 import i18n from './i18n'
 
@@ -40,6 +41,10 @@ const mixins = {
 
 const app = createApp(App)
 registerElIcons(app)
+
+const instance = ref(null)
+app.config.globalProperties.$instance = instance
+app.provide('instance', toRef(instance))
 app.mixin(mixins)
 app.component('SvgIcon', SvgIcon)
 app.component('PageWrapLayout', PageWrapLayout)

+ 0 - 16
src/styles/common.scss

@@ -35,23 +35,7 @@ body {
   }
 }
 
-/** 设置滚动条 **/
-::-webkit-scrollbar {
-  width: 7px;
-  height: 8px;
-}
-
-::-webkit-scrollbar-track {
-  background-color: rgb(0 0 0 / 5%);
-}
 
-::-webkit-scrollbar-thumb {
-  // background: rgba(0, 0, 0, 0.6);
-  background-color: rgb(144 147 153 / 30%);
-  // background-color: rgba(144, 147, 153, 0.3);
-  border-radius: 2px;
-  box-shadow: inset 0 0 6px rgb(0 0 0 / 20%);
-}
 
 /* nprogress样式 */
 #nprogress .bar {

+ 5 - 0
src/styles/cwg_common.scss

@@ -67,6 +67,9 @@ a {
 //去左边框
 .crm-border-left-no{
   border-left: none!important;
+  .el-input__wrapper{
+    padding: 0 !important;
+  }
   .el-input__inner, .el-button{
     border-left: none;
   }
@@ -224,6 +227,7 @@ a {
   border: none;
   height: 40px;
   line-height: 40px;
+  transform: translate(10%);
 
   .el-message__icon {
     width: 40px;
@@ -373,6 +377,7 @@ a {
 .crm_pagination {
   display: flex;
   justify-content: flex-end;
+  align-items: center;
   margin-top: 20px;
   .crm_page_total {
     line-height: 32px;

+ 12 - 4
src/utils/export.js

@@ -1,7 +1,15 @@
 import axios from 'axios'
 import i18n from '../i18n'
-import pigeon from '@/lib/pigeon'
 
+const { t } = i18n.global
+
+/**
+ * 导出表格
+ * @param {Object} that - pigeon实例(弹窗实例)
+ * @param {String} url - 接口地址
+ * @param {Object} params - 请求参数
+ * @param {String} name - 文件名
+ */
 export function exportExcel(that, url, params, name = 'Download') {
   axios
     .post(url, { ...params }, { responseType: 'blob' })
@@ -20,14 +28,14 @@ export function exportExcel(that, url, params, name = 'Download') {
             window.URL.revokeObjectURL(url)
           }
         } else {
-          pigeon.MessageError(i18n.t('Msg.Download'))
+          that.MessageError(t('Msg.Download'))
         }
       } catch (error) {
-        pigeon.MessageError(i18n.t('Msg.Download'))
+        that.MessageError(t('Msg.Download'))
       }
     })
     .catch(() => {
-      pigeon.MessageError(i18n.t('Msg.SystemError'))
+      that.MessageError(t('Msg.SystemError'))
     })
 }
 function formatDate(date = new Date(), format = 'yyyyMMddHHmmss') {

+ 99 - 92
src/views/card/CardOrder/index.vue

@@ -8,96 +8,97 @@
   >
     <div class="crm_search">
       <el-form ref="form" label-position="" :model="search" label-width="">
-        <!--        <el-row>-->
-        <!--          <el-col :span="24" :md="24" :lg="24">-->
-        <el-form-item>
-          <el-select
-            v-model="search.tag"
-            class="crm_search_down crm-border-radius-no"
-            :placeholder="$t('Placeholder.Choose')"
-          >
-            <el-option :label="$t('Label.CidAccount')" :value="1"></el-option>
-            <el-option :label="$t('Ucard.KycAuth.item2')" :value="2"></el-option>
-            <el-option :label="$t('Ucard.KycAuth.item3')" :value="3"></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item style="margin-right: 10px">
-          <el-input
-            v-if="search.tag == 1"
-            v-model.trim="search.cId"
-            class="crm-border-left-no crm-border-radius-no"
-            clearable
-            :placeholder="$t('Placeholder.Input')"
-            @keyup.enter="toSearch"
-          ></el-input>
-          <el-input
-            v-if="search.tag == 2"
-            v-model.trim="search.mobile"
-            class="crm-border-left-no crm-border-radius-no"
-            clearable
-            :placeholder="$t('Placeholder.Input')"
-            @keyup.enter="toSearch"
-          ></el-input>
-          <el-input
-            v-if="search.tag == 3"
-            v-model.trim="search.email"
-            class="crm-border-left-no crm-border-radius-no"
-            clearable
-            :placeholder="$t('Placeholder.Input')"
-            @keyup.enter="toSearch"
-          ></el-input>
-        </el-form-item>
-        <el-form-item style="margin-right: 10px">
-          <el-select
-            v-model="search.tradeStatus"
-            class="crm-border-radius-no"
-            clearable
-            :placeholder="t('Ucard.CardOrder.item8')"
-            @change="toSearch"
-          >
-            <el-option :label="$t('Ucard.CardOrder.t5')" :value="1"></el-option>
-            <el-option :label="$t('Ucard.CardOrder.t8')" :value="2"></el-option>
-            <el-option :label="$t('Ucard.CardOrder.t9')" :value="3"></el-option>
-            <el-option :label="$t('Ucard.CardOrder.t11')" :value="4"></el-option>
-            <el-option :label="$t('Ucard.CardOrder.t12')" :value="5"></el-option>
-            <el-option :label="$t('Ucard.CardOrder.t13')" :value="6"></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item style="margin-right: 10px">
-          <el-select
-            v-model="search.approveStatus"
-            class="crm-border-radius-no"
-            clearable
-            :placeholder="$t('R-Review-Status')"
-            @change="toSearch"
-          >
-            <el-option :label="$t('Ucard.UserOrder.t11')" value="1"></el-option>
-            <el-option :label="$t('Ucard.UserOrder.t12')" value="2"></el-option>
-            <el-option :label="$t('Ucard.UserOrder.t13')" value="3"></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item>
-          <el-select
-            v-model="search.status"
-            class="crm-border-radius-no"
-            clearable
-            :placeholder="$t('card.Info.s41')"
-            @change="toSearch"
-          >
-            <el-option :label="$t('Ucard.CardOrder.t10')" value="wait_process"></el-option>
-            <el-option :label="$t('Ucard.CardOrder.t5')" value="processing"></el-option>
-            <el-option :label="$t('Ucard.CardOrder.t6')" value="success"></el-option>
-            <el-option :label="$t('card.New2.p3')" value="cancel"></el-option>
-            <el-option :label="$t('Ucard.CardOrder.t7')" value="fail"></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item>
-          <el-button class="crm-border-radius-no crm-border-left-no" @click="toSearch">
-            <el-icon><Search /></el-icon>
-          </el-button>
-        </el-form-item>
-        <!--          </el-col>-->
-        <!--        </el-row>-->
+        <el-row>
+          <el-col :span="24" :md="24" :lg="24">
+            <el-form-item>
+              <el-select
+                v-model="search.tag"
+                class="crm_search_down crm-border-radius-no"
+                :placeholder="$t('Placeholder.Choose')"
+              >
+                <el-option :label="$t('Label.CidAccount')" :value="1"></el-option>
+                <el-option :label="$t('Ucard.KycAuth.item2')" :value="2"></el-option>
+                <el-option :label="$t('Ucard.KycAuth.item3')" :value="3"></el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item style="margin-right: 10px">
+              <el-input
+                v-if="search.tag == 1"
+                v-model.trim="search.cId"
+                class="crm-border-left-no crm-border-radius-no"
+                clearable
+                size="small"
+                :placeholder="$t('Placeholder.Input')"
+                @keyup.enter="toSearch"
+              ></el-input>
+              <el-input
+                v-if="search.tag == 2"
+                v-model.trim="search.mobile"
+                class="crm-border-left-no crm-border-radius-no"
+                clearable
+                :placeholder="$t('Placeholder.Input')"
+                @keyup.enter="toSearch"
+              ></el-input>
+              <el-input
+                v-if="search.tag == 3"
+                v-model.trim="search.email"
+                class="crm-border-left-no crm-border-radius-no"
+                clearable
+                :placeholder="$t('Placeholder.Input')"
+                @keyup.enter="toSearch"
+              ></el-input>
+            </el-form-item>
+            <el-form-item style="margin-right: 10px">
+              <el-select
+                v-model="search.tradeStatus"
+                class="crm-border-radius-no"
+                clearable
+                :placeholder="t('Ucard.CardOrder.item8')"
+                @change="toSearch"
+              >
+                <el-option :label="$t('Ucard.CardOrder.t5')" :value="1"></el-option>
+                <el-option :label="$t('Ucard.CardOrder.t8')" :value="2"></el-option>
+                <el-option :label="$t('Ucard.CardOrder.t9')" :value="3"></el-option>
+                <el-option :label="$t('Ucard.CardOrder.t11')" :value="4"></el-option>
+                <el-option :label="$t('Ucard.CardOrder.t12')" :value="5"></el-option>
+                <el-option :label="$t('Ucard.CardOrder.t13')" :value="6"></el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item style="margin-right: 10px">
+              <el-select
+                v-model="search.approveStatus"
+                class="crm-border-radius-no"
+                clearable
+                :placeholder="$t('R-Review-Status')"
+                @change="toSearch"
+              >
+                <el-option :label="$t('Ucard.UserOrder.t11')" value="1"></el-option>
+                <el-option :label="$t('Ucard.UserOrder.t12')" value="2"></el-option>
+                <el-option :label="$t('Ucard.UserOrder.t13')" value="3"></el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item>
+              <el-select
+                v-model="search.status"
+                class="crm-border-radius-no"
+                clearable
+                :placeholder="$t('card.Info.s41')"
+                @change="toSearch"
+              >
+                <el-option :label="$t('Ucard.CardOrder.t10')" value="wait_process"></el-option>
+                <el-option :label="$t('Ucard.CardOrder.t5')" value="processing"></el-option>
+                <el-option :label="$t('Ucard.CardOrder.t6')" value="success"></el-option>
+                <el-option :label="$t('card.New2.p3')" value="cancel"></el-option>
+                <el-option :label="$t('Ucard.CardOrder.t7')" value="fail"></el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item>
+              <el-button class="crm-border-radius-no crm-border-left-no" @click="toSearch">
+                <el-icon><Search /></el-icon>
+              </el-button>
+            </el-form-item>
+          </el-col>
+        </el-row>
         <el-form-item>
           <el-button
             v-if="display['R-CardOrder-Export'] && display['R-CardOrder-Export'].show"
@@ -350,6 +351,7 @@
   import { exportExcel } from '@/utils/export.js'
   import { useI18n } from 'vue-i18n'
   import { Search } from '@element-plus/icons-vue'
+  import { log } from 'echarts/types/src/util/log'
   // 混入
   const Session = inject('session')
   const pigeon = inject('pigeon')
@@ -418,7 +420,7 @@
 
   // 导出
   const exportAgents = async () => {
-    exportExcel('/wasabi/card/apply/list/export', { ...search }, 'Card_Applications')
+    exportExcel(pigeon, '/wasabi/card/apply/list/export', { ...search }, 'Card_Applications')
   }
 
   const getDetail = async (row) => {
@@ -562,9 +564,11 @@
 
   // 列表
   const searchFunc = async () => {
-    // pictLoading.value = true
+    pictLoading.value = true
+    console.log(0)
     if (!display.value['R-CardOrder-Search']?.show) {
       pigeon.MessageWarning(t('Msg.NotDisplay'))
+      console.log(1)
       pictLoading.value = false
       return
     }
@@ -577,6 +581,7 @@
           row: pagerInfo.row,
         },
       })
+      console.log(res, 2)
       if (res.code == Code.StatusOK) {
         mock_tableData.value = res.data
         if (res.page != null) {
@@ -585,10 +590,12 @@
         } else {
           pagerInfo.rowTotal = 0
         }
+        console.log(3)
         pigeon.MessageOK(t('Msg.SearchSuccess'))
       } else {
         pigeon.MessageError(res.msg)
       }
+      pictLoading.value = false
     } catch (error) {
       // pigeon.MessageError('搜索失败')
     } finally {

+ 34 - 25
src/views/home2/Home.vue

@@ -8,21 +8,22 @@
         <el-row :gutter="10">
           <el-col :span="2">
             <div class="btn-control" @click="ChangeCollapse">
-              <i class="el-icon-s-fold"></i>
+              <i class="el-icon-s-fold iconfont"></i>
             </div>
           </el-col>
           <el-col :span="22" class="tool-box">
-            <el-button
-              v-if="isQAlist"
-              plain
-              round
-              size="mini"
-              type="primary"
-              icon="el-icon-chat-line-round"
-              style="margin-right: 20px"
-              @click="openQA"
-              >{{ 'Q&A' }}</el-button
-            >
+            <!--            <el-button-->
+            <!--              v-if="isQAlist"-->
+            <!--              plain-->
+            <!--              round-->
+            <!--              size="small"-->
+            <!--              type="primary"-->
+            <!--              icon="el-icon-chat-line-round"-->
+            <!--              style="margin-right: 20px"-->
+            <!--              @click="openQA"-->
+            <!--            >-->
+            <!--              {{ 'Q&A' }}-->
+            <!--            </el-button>-->
             <el-dropdown trigger="click" class="language">
               <span class="el-dropdown-link">
                 <span>{{ langName }}</span
@@ -279,7 +280,7 @@
         })
       })
     }
-    session.Set('display', JSON.stringify(display))
+    session.Set('display', JSON.stringify(display), true)
   }
 
   // QA相关方法
@@ -332,13 +333,16 @@
 
   // 退出登录
   const beforeLogout = () => {
-    pi.confirm('确定要退出登录吗?', '系统提示', {
-      confirmButtonText: '确认',
-      cancelButtonText: '取消',
-      type: 'warning',
-    }).then(() => {
-      logout()
-    })
+    pigeon.MessageConfirm(
+      t('Msg.Logout'),
+      t('Msg.SystemPrompt'),
+      t('Btn.Confirm'),
+      t('Btn.Cancel'),
+      function () {
+        logout()
+      },
+      function () {}
+    )
   }
 
   const logout = async () => {
@@ -433,6 +437,7 @@
     // 如果是使用 vue-i18n@next,可能需要通过 useI18n() 来处理
     langName.value = langs[lang]
     session.Set('lang', lang)
+    store.commit('ChangeLanguage', lang)
     axios.defaults.headers.common['Language'] = lang
     setTimeout(() => {
       reload()
@@ -558,6 +563,7 @@
   const InitLanguage = () => {
     if (!session.Get('lang')) {
       session.Set('lang', 'cn')
+      store.commit('ChangeLanguage', 'cn')
     }
     const lang = session.Get('lang') || 'cn'
     // 这里需要根据实际情况处理i18n
@@ -601,7 +607,7 @@
     initDisplay()
 
     // 初始化侧边栏状态
-    isCollapse.value = session.Get('isCollapse') === 'true'
+    isCollapse.value = session.Get('isCollapse', false) === 'true'
     InitLanguage()
     ListenResize()
     resize()
@@ -635,14 +641,14 @@
           let res = await Service.Logout({})
           if (res.code == Code.StatusOK) {
             sessionStorage.clear()
-            _this.$router.push({ path: '/signin' })
-            _this.$store.commit('InfoExpire', false)
+            await router.push({ path: '/signin' })
+            store.commit('InfoExpire', false)
           } else {
-            _this.$pigeon.MessageError(res.msg)
+            pigeon.MessageError(res.msg)
           }
         },
         function () {
-          _this.$store.commit('InfoExpire', false)
+          store.commit('InfoExpire', false)
         }
       )
     }
@@ -672,6 +678,9 @@
         }
       }
       .tool-box {
+        display: flex;
+        align-items: center;
+        justify-content: flex-end;
         text-align: right;
         .username {
           margin: 0 20px;

+ 6 - 3
src/views/login/index.vue

@@ -297,11 +297,10 @@
         store.commit('InitInfo', res.data)
         store.commit('InfoExpire', false)
         sessionStorage.setItem('info', JSON.stringify(res.data))
-        console.log('登录成功')
         pigeon.MessageOK(t('Msg.LoginSuccess'))
         setTimeout(() => {
-          console.log('跳转')
-          router.push({ path: '/' }).catch((err) => console.log(err))
+          // 目前可能没有首页先跳有页面的
+          router.push({ path: '/card/order' }).catch((err) => console.log(err))
         }, 1000)
       } else {
         store.commit('InfoExpire', false)
@@ -394,7 +393,11 @@
 </style>
 <style lang="scss">
   #signin {
+    .el-input__inner {
+      border: none !important;
+    }
     .el-input__wrapper {
+      width: 100%;
       border: none;
       border-bottom: 1px solid;
       border-radius: 0;

+ 5 - 0
src/vuexStore/modules/home.ts

@@ -5,6 +5,7 @@ export default {
     user: '',
     isTab: '',
     expire: false,
+    locale: 'cn',
   },
   mutations: {
     //个人信息/登录信息
@@ -32,5 +33,9 @@ export default {
     InfoExpire(state, payload) {
       state.expire = payload
     },
+    // 切换语言
+    ChangeLanguage(state, payload) {
+      state.locale = payload
+    },
   },
 }

Некоторые файлы не были показаны из-за большого количества измененных файлов