Sfoglia il codice sorgente

feat(core): 指房宝MP 中转 日本geosign

gemercheung 3 anni fa
parent
commit
6d403a8132

+ 1 - 1
.env

@@ -2,7 +2,7 @@
 VITE_PORT = 3100
 
 # spa-title
-VITE_GLOB_APP_TITLE = 指房宝中台管理系统
+VITE_GLOB_APP_TITLE = Geosign
 
 # spa shortname
 VITE_GLOB_APP_SHORT_NAME = zfb

+ 1 - 1
.env.development

@@ -7,7 +7,7 @@ VITE_PUBLIC_PATH = /
 # Cross-domain proxy, you can configure multiple
 # Please note that no line breaks
 # http://192.168.0.38:8190/shop
-VITE_PROXY = [["/basic-api","https://cszfb.4dkankan.com/basic-api"],["/upload","http://localhost:3300/upload"],["/zfb-api","https://cszfb.4dkankan.com"]]
+VITE_PROXY = [["/basic-api","https://cszfb.4dkankan.com/basic-api"],["/kankan-api","http://test.4dkankan.com"],["/zfb-api","https://cszfb.4dkankan.com"]]
 #["/zfb-api","http://192.168.0.47:7081"]]
 # VITE_PROXY=[["/api","https://vvbin.cn/test"]]
 

+ 12 - 5
src/api/sys/model/userModel.ts

@@ -1,10 +1,18 @@
 /**
  * @description: Login interface parameters
  */
+
+//  export interface LoginParams {
+//   userName: string;
+//   userPassword: string;
+//   captcha: string;
+// }
+
 export interface LoginParams {
-  userName: string;
-  userPassword: string;
-  captcha: string;
+  password: string;
+  phoneNum: string;
+  randomcode: string;
+  rememberMe: boolean;
 }
 
 export interface RoleInfo {
@@ -39,9 +47,8 @@ export interface RoleInfo {
  * @description: Login interface return value
  */
 export interface LoginResultModel {
-  id?: string | number;
+  // id?: string | number;
   token: string;
-  role?: RoleInfo;
   user: RoleInfo;
 }
 

+ 7 - 8
src/api/sys/user.ts

@@ -7,9 +7,11 @@ import { ContentTypeEnum } from '/@/enums/httpEnum';
 
 enum Api {
   // Login = '/basic-api/sys/login',
-  Login = '/zfb-api/zfb/loginBackground',
+  // Login = '/zfb-api/zfb/loginBackground',
+  Login = '/kankan-api/api/sso/user/login',
   Logout = '/logout',
-  GetUserInfo = '/zfb-api/zfb/shop/sys/user/infoAnon',
+  // GetUserInfo = '/zfb-api/zfb/shop/sys/user/infoAnon',
+  GetUserInfo = '/kankan-api/api/user/getUserInfo',
   GetPermCode = '/getPermCode',
 }
 
@@ -25,7 +27,7 @@ export function loginApi(params: LoginParams, mode: ErrorMessageMode = 'modal')
 
   const paramData: LoginParams = {
     ...params,
-    userPassword: encodeStr(window.btoa(params.userPassword)),
+    password: encodeStr(window.btoa(params.password)),
   };
 
   return defHttp.post<LoginResultModel>(
@@ -44,11 +46,8 @@ export function loginApi(params: LoginParams, mode: ErrorMessageMode = 'modal')
 /**
  * @description: getUserInfo
  */
-export function getUserInfo(id: number) {
-  return defHttp.post<GetUserInfoModel>(
-    { url: `${Api.GetUserInfo}/${id}` },
-    { errorMessageMode: 'none' },
-  );
+export function getUserInfo() {
+  return defHttp.post<GetUserInfoModel>({ url: Api.GetUserInfo }, { errorMessageMode: 'none' });
 }
 
 export function getPermCode() {

+ 10 - 0
src/locales/lang/ja.ts

@@ -0,0 +1,10 @@
+import { genMessage } from '../helper';
+import antdLocale from 'ant-design-vue/es/locale/ja_JP';
+
+const modules = import.meta.globEager('./ja/**/*.ts');
+export default {
+  message: {
+    ...genMessage(modules, 'ja'),
+    antdLocale,
+  },
+};

+ 43 - 0
src/locales/lang/ja/common.ts

@@ -0,0 +1,43 @@
+export default {
+  okText: '確認',
+  closeText: '閉鎖',
+  cancelText: 'キャンセル',
+  loadingText: '読み込み中...',
+  saveText: '保存',
+  delText: '消去',
+  operating: '操作する',
+  resetText: 'リセット',
+  searchText: '探す',
+  queryText: 'お問い合わせ',
+
+  inputText: '入ってください',
+  chooseText: '選んでください',
+  edit: '編集',
+  redo: 'リフレッシュ',
+  back: '戻る',
+  checkTips: '確認プロンプト',
+  light: '明るいテーマ',
+  dark: '暗いテーマ',
+  unbind: '解放する',
+  details: '詳細',
+  bind: '練る',
+  yes: 'はい',
+  no: 'いいえ',
+  roleName: '役割',
+  unusual: '異常な',
+  operation: '操作する',
+  normal: '正常',
+  unNormal: '普通でない',
+  state: '調子',
+  type: 'の種類',
+  fullName: '名前',
+  print: '印刷',
+  all: 'すべて',
+  optSuccess: '正常な操作!',
+  optFail: '操作に失敗しました!',
+  notConnect: 'まだ接続されていません',
+  delConfirm: '削除を確認するかどうか',
+  mobile: '携帯電話',
+  phone: '携帯電話番号を入力してください!',
+  phoneError: '携帯電話番号を正しく入力してください!',
+};

+ 134 - 0
src/locales/lang/ja/component.ts

@@ -0,0 +1,134 @@
+export default {
+  app: {
+    searchNotData: '検索結果はまだありません',
+    toSearch: '確認',
+    toNavigate: 'トグル',
+  },
+  countdown: {
+    normalText: '確認コードを取得する',
+    sendText: '{0}秒後に再フェッチ',
+  },
+  cropper: {
+    selectImage: '画像を選択',
+    uploadSuccess: 'アップロードに成功',
+    modalTitle: 'アバターのアップロード',
+    okText: '確認してアップロード',
+    btn_reset: 'リセット',
+    btn_rotate_left: '反時計回りの回転',
+    btn_rotate_right: '時計回りの回転',
+    btn_scale_x: '水平フリップ',
+    btn_scale_y: '垂直に反転',
+    btn_zoom_in: '拡大',
+    btn_zoom_out: 'ズームアウト',
+    preview: 'プレビュー',
+  },
+  drawer: {
+    loadingText: '読み込み中...',
+    cancelText: '閉鎖',
+    okText: '確認',
+  },
+  excel: {
+    exportModalTitle: 'エクスポートデータ',
+    fileType: 'ファイルタイプ',
+    fileName: 'ファイル名',
+  },
+  form: {
+    putAway: '片付け',
+    unfold: '拡大',
+
+    maxTip: '文字数は{0}桁未満である必要があります',
+
+    apiSelectNotFound: 'お待ちください...',
+  },
+  icon: {
+    placeholder: '選択アイコンをクリックしてください',
+    search: '検索アイコン',
+    copy: '正常にコピー!',
+  },
+  menu: {
+    search: 'メニュー検索',
+  },
+  modal: {
+    cancelText: '閉鎖',
+    okText: '確認',
+    close: '閉鎖',
+    maximize: '最大化',
+    restore: '復元',
+  },
+  table: {
+    settingDens: '密度',
+    settingDensDefault: 'ディフォルト',
+    settingDensMiddle: 'ミディアム',
+    settingDensSmall: '小型',
+    settingColumn: '列設定',
+    settingColumnShow: '列表示',
+    settingIndexColumnShow: 'シリアル番号列',
+    settingSelectColumnShow: '選ぶ',
+    settingFixedLeft: '左に固定',
+    settingFixedRight: '右に固定',
+    settingFullScreen: '全画面表示',
+
+    index: '順序',
+
+    total: '合計{total}個のデータ',
+  },
+  time: {
+    before: '前',
+    after: '後',
+    just: 'ただ',
+    seconds: '秒',
+    minutes: '分',
+    hours: '時間',
+    days: '日々',
+  },
+  tree: {
+    selectAll: 'すべて選択',
+    unSelectAll: '選択をキャンセル',
+    expandAll: 'すべて展開',
+    unExpandAll: 'すべて折りたたむ',
+    checkStrictly: '階層的関連付け',
+    checkUnStrictly: '階層的な独立性',
+  },
+  upload: {
+    save: '保存',
+    upload: 'アップロード',
+    imgUpload: '写真をアップロード',
+    uploaded: 'アップロード',
+
+    operating: '操作する',
+    del: '消去',
+    download: 'ダウンロード',
+    saveWarn: 'ファイルがアップロードされるのを待って、保存してください!',
+    saveError: 'ファイルが正常にアップロードされず、保存できませんでした!',
+
+    preview: 'プレビュー',
+    choose: '選ぶ',
+
+    accept: '{0}形式をサポート',
+    acceptUpload: 'アップロードできるのは{0}形式のファイルのみです',
+    maxSize: '1つのファイルが{0} MBを超えることはできません',
+    maxSizeMultiple: '{0} MBまでのファイルのみをアップロードする!',
+    maxNumber: 'アップロードできるファイルは最大{0}個までです',
+
+    legend: 'サムネイル',
+    fileName: 'ファイル名',
+    fileSize: 'ファイルサイズ',
+    fileStatue: '調子',
+
+    startUpload: 'アップロードを開始',
+    uploadSuccess: 'アップロードに成功',
+    uploadError: 'アップロードに失敗しました',
+    uploading: 'アップロード',
+    uploadWait: 'ファイルのアップロードが完了するまでお待ちください',
+    reUploadFailed: '失敗したファイルを再アップロードする',
+  },
+  verify: {
+    error: '検証に失敗しました!',
+    time: '検証は成功しました。{時間}秒かかります。',
+
+    redoTip: '画像をクリックして更新',
+
+    dragText: 'スライダーを押したままドラッグしてください',
+    successText: '確認済み',
+  },
+};

+ 117 - 0
src/locales/lang/ja/layout.ts

@@ -0,0 +1,117 @@
+export default {
+  footer: { onlinePreview: 'オンラインプレビュー', onlineDocument: 'オンラインドキュメント' },
+  header: {
+    // user dropdown
+    dropdownItemDoc: 'ドキュメント',
+    dropdownItemLoginOut: '出口システム',
+
+    // tooltip
+    tooltipErrorLog: 'エラーログ',
+    tooltipLock: 'ロック画面',
+    tooltipNotify: '通知',
+
+    tooltipEntryFull: '全画面表示',
+    tooltipExitFull: 'フルスクリーンを終了',
+
+    // lock
+    lockScreenPassword: 'ロック画面のパスワード',
+    lockScreen: 'ロック画面',
+    lockScreenBtn: 'ロック',
+
+    home: '首页',
+    personalSetting: '個人設定',
+  },
+  multipleTab: {
+    reload: 'リロード',
+    close: 'タブを閉じる',
+    closeLeft: '左のタブを閉じる',
+    closeRight: '右タブを閉じる',
+    closeOther: '他のタブを閉じる',
+    closeAll: 'すべてのタブを閉じる',
+  },
+  setting: {
+    // content mode
+    contentModeFull: 'ストリーミング',
+    contentModeFixed: '固定幅',
+    // topMenu align
+    topMenuAlignLeft: '左',
+    topMenuAlignRight: '中央揃え',
+    topMenuAlignCenter: '正しい',
+    // menu trigger
+    menuTriggerNone: '見せないで',
+    menuTriggerBottom: '下',
+    menuTriggerTop: '上',
+    // menu type
+    menuTypeSidebar: '左メニューモード',
+    menuTypeMixSidebar: '左メニューブレンドモード',
+    menuTypeMix: 'トップメニューブレンドモード',
+    menuTypeTopMenu: 'トップメニューモード',
+
+    on: '開いた',
+    off: 'オフ',
+    minute: '分',
+
+    operatingTitle: '成功',
+    operatingContent:
+      '正常にコピーします。に移動してください src/settings/projectSetting.ts 設定を変更する!',
+    resetSuccess: '重置成功!',
+
+    copyBtn: 'コピー',
+    clearBtn: 'キャッシュをクリアしてログインページに戻る',
+
+    drawerTitle: 'プロジェクト構成',
+
+    darkMode: 'テーマ',
+    navMode: 'ナビゲーションバーモード',
+    interfaceFunction: '関数',
+    interfaceDisplay: 'インターフェイスディスプレイ',
+    animation: 'アニメーション',
+    splitMenu: '分割メニュー',
+    closeMixSidebarOnChange: 'ページクローズメニューの切り替え',
+
+    sysTheme: 'システムテーマ',
+    headerTheme: 'トップバーのテーマ',
+    sidebarTheme: 'メニューテーマ',
+
+    menuDrag: 'サイドメニュードラッグ',
+    menuSearch: 'メニュー検索',
+    menuAccordion: 'サイドメニューアコーディオンモード',
+    menuCollapse: '折りたたみメニュー',
+    collapseMenuDisplayName: 'メニュー表示名を折りたたむ',
+    topMenuLayout: 'トップメニューのレイアウト',
+    menuCollapseButton: 'メニュー折りたたみボタン',
+    contentMode: 'コンテンツ領域の幅',
+    expandedMenuWidth: 'メニュー拡張幅',
+
+    breadcrumb: 'パンくず',
+    breadcrumbIcon: 'パンくずアイコン',
+    tabs: 'ブックマークページ',
+    tabDetail: 'タグの詳細ページ',
+    tabsQuickBtn: 'タブショートカットボタン',
+    tabsRedoBtn: 'タブ更新ボタン',
+    tabsFoldBtn: 'タブ折りたたみボタン',
+    sidebar: '左メニュー',
+    header: 'トップバー',
+    footer: 'フッター',
+    fullContent: 'フルスクリーンコンテンツ',
+    grayMode: 'グレーモード',
+    colorWeak: '色弱モード',
+
+    progress: 'トッププログレスバー',
+    switchLoading: 'トグルloading',
+    switchAnimation: 'アニメーションを切り替える',
+    animationType: 'アニメーションの種類',
+
+    autoScreenLock: '自動ロック画面',
+    notAutoScreenLock: '画面を自動的にロックしないでください',
+
+    fixedHeader: '修繕header',
+    fixedSideBar: '固定Sidebar',
+
+    mixSidebarTrigger: 'ハイブリッドメニュートリガー方式',
+    triggerHover: 'ホバーをトリガー',
+    triggerClick: 'クリック',
+
+    mixSidebarFixed: '展開メニューを修正',
+  },
+};

+ 3 - 0
src/locales/lang/ja/modal.ts

@@ -0,0 +1,3 @@
+export default {
+  atLeastOne: '少なくとも1つ選択してください',
+};

+ 7 - 0
src/locales/lang/ja/routes/basic.ts

@@ -0,0 +1,7 @@
+export default {
+  login: 'ログイン',
+  welcome: 'ようこそ',
+  welcomeLogin: 'ようこそ',
+  welcomeUser: 'ようこそユーザー:{0}',
+  errorLogList: 'エラーログリスト',
+};

+ 32 - 0
src/locales/lang/ja/routes/corporation.ts

@@ -0,0 +1,32 @@
+export default {
+  recharge: '充電する',
+  device: '装置',
+  deviceId: '装置ID',
+  sub_account: 'サブアカウント',
+  stateName: {
+    0: 'レビュー中',
+    1: '合格しました',
+    2: '拒否されました',
+    9: 'すべて',
+  },
+  businessAuth: '企業認定',
+  timeField: '時間フィールド',
+  phone: '電話番号',
+  enterpriseName: '会社名',
+  submitTime: '提出時間',
+  enterpriseId: 'エンタープライズアカウント',
+  rechargeId: 'アカウントのリチャージ',
+  sceneLogo: 'ローディングインターフェースLOGO',
+  floorLogo: 'ロードLOGO',
+  bgMusic: '背景音楽',
+  cameraNum: '設備数量',
+  subNum: 'サブアカウントの数',
+  sceneNum: 'アップロードシーン数',
+  point: 'バランス',
+  expirationTime: '有効期限',
+  detailed: '詳細',
+  modifySubId: 'サブアカウントの変更',
+  activeTime: 'アクティベーション時間',
+  unBind: '解放する',
+  isUnBind: 'バインドを解除するかどうか?',
+};

+ 34 - 0
src/locales/lang/ja/routes/dashboard.ts

@@ -0,0 +1,34 @@
+export default {
+  dashboard: 'Dashboard',
+  about: 'だいたい',
+  workbench: '作業台',
+  analysis: '分析ページ',
+  corporation: 'ビジネス管理',
+  corporationAccount: 'アカウント',
+  corporationVerify: '企業認定',
+  bulletin: '情報公開',
+  bulletinRentInfo: 'レンタル情報',
+  bulletinSellInfo: '販売情報',
+  bulletinDecoration: 'サイトの装飾',
+  advertisement: '广告位',
+  advertisementList: 'カルーセル画像',
+  advertisementPads: '推奨位置',
+  scenes: 'VRシーン管理',
+  scenesDownload: 'シーンのダウンロード',
+  scenesList: 'シーンリスト',
+  scenesLive: '生放送',
+  devices: 'デバイス管理',
+  product: '商品管理',
+  productRef: '製品の属性',
+  productList: '製品リスト',
+  productCategory: 'カテゴリ',
+  order: '注文管理',
+  orderList: 'オーダーリスト',
+  orderDetail: '注文詳細',
+  member: 'メンバー管理',
+  memberList: 'メンバーリスト',
+  staff: 'スタッフ管理',
+  staffList: '従業員リスト',
+  feedback: 'フィードバック',
+  feedbackList: 'フィードバックリスト',
+};

+ 47 - 0
src/locales/lang/ja/routes/devices.ts

@@ -0,0 +1,47 @@
+export default {
+  deviceList: 'デバイスリスト',
+  device: 'デバイス',
+  addDevice: 'デバイスを追加',
+  browserDevice: '機器を見る',
+  address: '物理アドレス',
+  balance: '初期点',
+  cameraType: 'カメラタイプ',
+  childName: 'デバイスID',
+  companyId: 'クライアントの名前',
+  phoneName: '携帯電話番号(ユーザー名)',
+  orderSn: '注文番号',
+  own: 'アウトバウンドタイプ',
+  addCamera: 'カメラを追加する',
+  type: '機器タイプ',
+  wifiName: 'Wi-Fi名',
+  normalSales: '通常販売',
+  giftGive: '贈答',
+  selfUse: '従業員自身の使用',
+  other: '他の',
+  activationTime: '起動時間',
+  shipmentType: '出荷タイプ',
+  snCode: 'snコード',
+  cameraName: {
+    '1': 'Lite',
+    '4': 'Pro',
+    '6': 'サードパーティのカメラ',
+    '9': '双眼ターンテーブル',
+    '10': 'レーザーカメラ',
+    '7': '三脚セット',
+  },
+  ownName: {
+    '0': '通常販売',
+    '1': '自己使用',
+    '2': '贈答',
+    '3': '他の',
+  },
+  partList: {},
+  addSubAccount: 'サブアカウントを追加する',
+  bindErr: 'サブアカウントは会社によってバインドされています',
+  excess: 'サブアカウントの数がいっぱいです!',
+  unbindWarning: 'このサブアカウントのバインドを解除してもよろしいですか?',
+  addeduser: '追加されたアカウントの数',
+  subNum: '機器数量',
+  // normalSales: '正常销售',
+  // normalSales: '正常销售',
+};

+ 42 - 0
src/locales/lang/ja/routes/scenes.ts

@@ -0,0 +1,42 @@
+export default {
+  sceneName: 'シーン名',
+  webSite: 'シーンリンク',
+  childName: 'カメラID',
+  viewCount: 'シーン訪問',
+  createTime: '撮影時間',
+  num: 'シーンコード',
+  process: 'ダウンロードの進捗状況',
+  sceneList: 'シーンリスト',
+  bindAnchor: 'アンカーをバインドする',
+  anchorRoom: 'ライブルーム名',
+  appListPicUrl: 'ライブルームカバー',
+  sortOrder: '選別',
+  bindShowerNameList: 'アンカーがバインドされました',
+  livestreamStatus: '放送するかどうか',
+  liveBroadcast: 'ライブリスト',
+  downloadScene: 'シーンをダウンロード',
+  downloadSceneConfirm: 'ダウンロードシーンを確認するかどうか',
+  editor: 'エディターを開く',
+  cancelDownload: 'ダウンロードをキャンセル',
+  own: 'アンカーの選択',
+  userName: '従業員名:',
+  canShow: '一緒に訪れるために同時に開くかどうか',
+  bindTime: 'バインディング時間',
+  anchorList: 'ホストリスト',
+  addLive: 'シーンを追加する',
+  liveType: 'ライブルームタイプ',
+  liveName: 'ライブルーム名',
+  makeLiveCover: 'ライブルームカバーを生成する',
+  sceneUrl: 'シーンリンク',
+  roleType: {
+    0: '会社の管理者',
+    1: '労働者',
+  },
+  houseType: {
+    0: '新しい家',
+    1: '中古住宅',
+    2: 'アパート',
+    3: 'ホームステイ',
+    9: 'すべて',
+  },
+};

+ 12 - 0
src/locales/lang/ja/routes/staff.ts

@@ -0,0 +1,12 @@
+export default {
+  deptName: '関係会社',
+  userName: '従業員名',
+  nickName: 'ニックネーム',
+  mobile: '携帯電話',
+  createTime: '作成時間',
+  staffList: '従業員リスト',
+  roleType: {
+    0: '会社の管理者',
+    1: '労働者',
+  },
+};

+ 9 - 0
src/locales/lang/ja/routes/system.ts

@@ -0,0 +1,9 @@
+const account = {
+  userName: 'ユーザー名',
+  accountList: 'アカウントリスト',
+};
+
+export default {
+  ...account,
+  buttonMenuWaring: '親メニューはメニュータイプのみにすることができます',
+};

+ 110 - 0
src/locales/lang/ja/sys.ts

@@ -0,0 +1,110 @@
+export default {
+  api: {
+    operationFailed: '操作に失敗しました',
+    errorTip: 'エラーメッセージ',
+    errorMessage: '操作に失敗しました、システムは異常です!',
+    timeoutMessage: 'ログインがタイムアウトしました。もう一度ログインしてください。',
+    apiTimeoutMessage:
+      'インターフェイスリクエストがタイムアウトしました。ページを更新して、もう一度お試しください。',
+    apiRequestFailed: 'エラーをリクエストしてください。後でもう一度やり直してください',
+    networkException: 'ネットワークの異常',
+    networkExceptionMsg:
+      'ネットワークが異常です。ネットワーク接続が正常かどうかを確認してください。',
+
+    errMsg401: 'ユーザーに権限がありません(トークン、ユーザー名、間違ったパスワード)!',
+    errMsg403: 'ユーザーは許可されていますが、アクセスは禁止されています。!',
+    errMsg404: 'ネットワーク要求エラー、リソースが見つかりません!',
+    errMsg405: 'ネットワークリクエストエラー、リクエストメソッドは許可されていません!',
+    errMsg408: 'ネットワークリクエストがタイムアウトしました!',
+    errMsg500: 'サーバーエラー、管理者に連絡してください!',
+    errMsg501: 'ネットワークが実装されていません!',
+    errMsg502: 'ネットワークエラー!',
+    errMsg503: 'サービスが利用できない、サーバーが一時的に過負荷または保守されている!',
+    errMsg504: 'ネットワークタイムアウト!',
+    errMsg505: 'httpバージョンはリクエストをサポートしていません!',
+  },
+  app: {
+    logoutTip: 'リマインダー',
+    logoutMessage: 'システムからログアウトすることを確認するかどうか?',
+    menuLoading: '菜单加载中...',
+  },
+  errorLog: {
+    tableTitle: 'エラーログリスト',
+    tableColumnType: '種類',
+    tableColumnDate: '時間',
+    tableColumnFile: '資料',
+    tableColumnMsg: 'エラーメッセージ',
+    tableColumnStackMsg: 'stack情報',
+
+    tableActionDesc: '詳細',
+
+    modalTitle: 'エラーの詳細',
+
+    fireVueError: 'クリックしてvueエラーをトリガーします',
+    fireResourceError: 'クリックしてリソースロードエラーをトリガーします',
+    fireAjaxError: 'クリックしてajaxエラーをトリガーします',
+
+    enableMessage:
+      '`/ src / settings / projectSetting.ts`でuseErrorHandle = trueの場合にのみ有効になります。',
+  },
+  exception: {
+    backLogin: 'ログインに戻る',
+    backHome: '家に帰る',
+    subTitle403: '申し訳ありませんが、このページにアクセスする権限がありません。',
+    subTitle404: '申し訳ありませんが、アクセスしたページは存在しません。',
+    subTitle500: '申し訳ありませんが、サーバーからエラーが報告されました。',
+    noDataTitle: '現在のページにはデータがありません',
+    networkErrorTitle: 'ネットワークエラー',
+    networkErrorSubTitle:
+      '申し訳ありませんが、ネットワーク接続がダウンしています。ネットワークを確認してください。',
+  },
+  lock: {
+    unlock: 'クリックしてロックを解除',
+    alert: 'ロック画面のパスワードが間違っています',
+    backToLogin: 'ログインに戻る',
+    entry: 'システムに入る',
+    placeholder: 'ロック画面のパスワードまたはユーザーパスワードを入力してください',
+  },
+  login: {
+    backSignIn: '戻る',
+    signInFormTitle: 'ログイン',
+    mobileSignInFormTitle: '電話でログイン',
+    qrSignInFormTitle: 'コードをスキャンしてログインする',
+    signUpFormTitle: '登録',
+    forgetFormTitle: 'パスワードを再設定する',
+
+    signInTitle: '10分で実際のVR',
+    signInDesc: 'セルフサービス720度のライブVRリリース管理、セルフサービス、シンプル、安全、効率的',
+    policy: 'xxxプライバシーポリシーに同意します',
+    scanSign: `コードをスキャンした後、「確認」をクリックしてログインを完了します`,
+
+    loginButton: 'ログイン',
+    registerButton: '登録',
+    rememberMe: '覚えて',
+    forgetPassword: 'パスワードを忘れる?',
+    otherSignIn: 'その他のログイン方法',
+
+    // notify
+    loginSuccessTitle: 'ログイン成功',
+    loginSuccessDesc: 'お帰りなさい',
+
+    // placeholder
+    accountPlaceholder: 'ユーザー名を入力してください',
+    passwordPlaceholder: 'パスワードを入力して下さい',
+    smsPlaceholder: '確認コードを入力してください',
+    mobilePlaceholder: '電話番号を入力してください',
+    policyPlaceholder: '確認後、ご登録ください',
+    diffPwd: '2回入力したパスワードが一致しません',
+
+    userName: 'アカウント',
+    password: 'パスワード',
+    confirmPassword: 'パスワードを認証する',
+    email: '郵便',
+    smsCode: 'SMS確認コード',
+    mobile: '携帯番号',
+
+    loginDragValidate: 'ログインにはドラッグアンドドロップによる確認が必要です',
+    loginAgain: 'もう一度やり直してください',
+    captcha: '検証コード',
+  },
+};

src/router/routes/modules/advertisement.ts → src/router/routes/modules/advertisement.ts.bk


src/router/routes/modules/bulletin.ts → src/router/routes/modules/bulletin.ts.bk


src/router/routes/modules/dashboard.ts → src/router/routes/modules/dashboard.ts.bk


src/router/routes/modules/feedback.ts → src/router/routes/modules/feedback.ts.bk


src/router/routes/modules/order.ts → src/router/routes/modules/order.ts.bk


src/router/routes/modules/product.ts → src/router/routes/modules/product.ts.bk


+ 9 - 9
src/router/routes/modules/scenes.ts

@@ -32,15 +32,15 @@ const scenes: AppRouteModule = {
         icon: 'mdi:drama-masks',
       },
     },
-    {
-      path: 'live',
-      name: 'ScenesLive',
-      component: () => import('/@/views/scenes/live.vue'),
-      meta: {
-        title: t('routes.dashboard.scenesLive'),
-        icon: 'carbon:flow-stream',
-      },
-    },
+    // {
+    //   path: 'live',
+    //   name: 'ScenesLive',
+    //   component: () => import('/@/views/scenes/live.vue'),
+    //   meta: {
+    //     title: t('routes.dashboard.scenesLive'),
+    //     icon: 'carbon:flow-stream',
+    //   },
+    // },
   ],
 };
 

src/router/routes/modules/system.ts → src/router/routes/modules/system.ts.bk


+ 9 - 4
src/settings/localeSetting.ts

@@ -3,7 +3,8 @@ import type { LocaleSetting, LocaleType } from '/#/config';
 
 export const LOCALE: { [key: string]: LocaleType } = {
   ZH_CN: 'zh_CN',
-  EN_US: 'en',
+  JA: 'ja',
+  // EN_US: 'en',
 };
 
 export const localeSetting: LocaleSetting = {
@@ -13,7 +14,7 @@ export const localeSetting: LocaleSetting = {
   // Default locale
   fallback: LOCALE.ZH_CN,
   // available Locales
-  availableLocales: [LOCALE.ZH_CN, LOCALE.EN_US],
+  availableLocales: [LOCALE.ZH_CN, LOCALE.JA],
 };
 
 // locale list
@@ -22,8 +23,12 @@ export const localeList: DropMenu[] = [
     text: '简体中文',
     event: LOCALE.ZH_CN,
   },
+  // {
+  //   text: 'English',
+  //   event: LOCALE.EN_US,
+  // },
   {
-    text: 'English',
-    event: LOCALE.EN_US,
+    text: '日本語',
+    event: LOCALE.JA,
   },
 ];

+ 1 - 1
src/settings/projectSetting.ts

@@ -25,7 +25,7 @@ const setting: ProjectConfig = {
 
   // Permission mode
   // permissionMode: PermissionModeEnum.BACK,
-  permissionMode: PermissionModeEnum.BACK,
+  permissionMode: PermissionModeEnum.ROUTE_MAPPING,
   // Permission-related cache is stored in sessionStorage or localStorage
   permissionCacheType: CacheTypeEnum.LOCAL,
 

+ 8 - 11
src/store/modules/user.ts

@@ -95,22 +95,20 @@ export const useUserStore = defineStore({
       try {
         const { goHome = true, mode, ...loginParams } = params;
         const data = await loginApi(loginParams, mode);
-        const { id, token } = data;
-
-        console.log('user', data);
-        const userID = Number(id);
+        const { user, token } = data;
 
+        console.log('user', user);
         // save token
         this.setToken(token);
-        return this.afterLoginAction(userID, goHome);
+        return this.afterLoginAction(goHome);
       } catch (error) {
         return Promise.reject(error);
       }
     },
-    async afterLoginAction(id: number, goHome?: boolean): Promise<GetUserInfoModel | null> {
+    async afterLoginAction(goHome?: boolean): Promise<GetUserInfoModel | null> {
       if (!this.getToken) return null;
       // get user info
-      const userInfo = await this.getUserInfoAction(id);
+      const userInfo = await this.getUserInfoAction();
 
       const sessionTimeout = this.sessionTimeout;
       if (sessionTimeout) {
@@ -129,11 +127,10 @@ export const useUserStore = defineStore({
       }
       return userInfo;
     },
-    async getUserInfoAction(id?: number): Promise<UserInfo | null> {
+    async getUserInfoAction(): Promise<UserInfo | null> {
       if (!this.getToken) return null;
-      const userId: number = id || Number(this.getUserInfoCache.id);
-      // debugger;
-      const userInfo = await getUserInfo(userId);
+
+      const userInfo = await getUserInfo();
       const { roles = [] } = userInfo;
       if (isArray(roles)) {
         const roleList = roles.map((item) => item.value) as RoleEnum[];

+ 18 - 13
src/utils/http/axios/index.ts

@@ -43,29 +43,31 @@ const transform: AxiosTransform = {
     }
     // 错误的时候返回
 
-    const { data } = res;
-    if (!data) {
+    const { data: dataRes } = res;
+    if (!dataRes) {
       // return '[HTTP] Request has no return value';
       throw new Error(t('sys.api.apiRequestFailed'));
     }
     //  这里 code,result,message为 后台统一的字段,需要在 types.ts内修改为项目自己的接口返回格式
 
-    const { code, error, message } = data;
+    const { code, error, message, data, msg } = dataRes;
+
     // TODO
     // 这里逻辑可以根据项目进行修改
-    const hasSuccess =
-      data &&
-      Reflect.has(data, 'code') &&
-      (code === ResultEnum.SUCCESS || code === ResultEnum.NORMAL);
+    const hasSuccess = code === ResultEnum.SUCCESS || code === ResultEnum.NORMAL;
 
     if (hasSuccess) {
-      const converterResult = data.message;
-      const converterMessage = error;
-      data.result = converterResult;
-      data.message = converterMessage;
-      delete data.error;
+      if (data) {
+        return data;
+      } else {
+        const converterResult = message;
+        // const converterMessage = error;
+        // data.result = converterResult;
+        // data.message = converterMessage;
+        delete dataRes.error;
 
-      return data.result || data;
+        return converterResult;
+      }
     }
 
     // 在此处根据自己项目的实际情况对不同的code执行不同的操作
@@ -87,6 +89,9 @@ const transform: AxiosTransform = {
         if (message) {
           timeoutMsg = message;
         }
+        if (msg) {
+          timeoutMsg = msg;
+        }
       //TODO 由于后端HACKCODE error当信息string
       // if (error) {
       //   timeoutMsg = error;

+ 1 - 1
src/views/scenes/list.vue

@@ -2,7 +2,7 @@
   <div class="p-4">
     <BasicTable @register="registerTable" :rowSelection="{ type: 'checkbox' }">
       <template #toolbar>
-        <a-button type="primary" @click="() => {}"> 新增</a-button>
+        <!-- <a-button type="primary" @click="() => {}"> 新增</a-button> -->
         <!-- <a-button type="primary" color="warning" @click="() => {}"> 编辑</a-button>
         <a-button type="primary" color="error" @click="() => {}"> 删除</a-button> -->
       </template>

+ 7 - 6
src/views/sys/login/LoginForm.vue

@@ -147,8 +147,8 @@
   const isDragValidate = ref(false);
 
   const formData = reactive({
-    account: '17324327132',
-    password: 'zfb123456',
+    account: '18819272208',
+    password: 'Aa123456',
     // password: encodeStr(window.btoa('zfb123456')),
     // captcha: '',
   });
@@ -178,10 +178,11 @@
     try {
       loading.value = true;
       const userInfo = await userStore.login({
-        userPassword: data.password,
-        userName: data.account,
-        captcha: data.captcha,
-        mode: 'none', //不要默认的错误提示
+        password: data.password,
+        phoneNum: data.account,
+        randomcode: data.captcha,
+        rememberMe: false,
+        // mode: 'none', //不要默认的错误提示
       });
 
       if (userInfo) {

+ 4 - 3
types/axios.d.ts

@@ -36,9 +36,10 @@ export type Result = FlawResult;
 export interface FlawResult<T = any> {
   code: number;
   type?: 'success' | 'error' | 'warning';
-  message: T;
-  result?: T;
-  error?: string;
+  msg: T;
+  data?: T;
+  message?: T;
+  error?: string | T;
 }
 
 // multipart/form-data: upload file