gc_i18n 1.3.3 → 1.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/gc_i18n.es.js CHANGED
@@ -329,9 +329,9 @@ const ae = (t) => {
329
329
  for (const [s, n] of e)
330
330
  a[s] = n;
331
331
  return a;
332
- }, re = { key: 0 }, ce = { class: "extra" }, ue = { class: "gc_i18n_page" }, he = { style: { display: "flex" } };
333
- function ge(t, e, a, s, n, o) {
334
- const r = d("Spin"), h = d("Table"), g = d("TabPane"), i = d("Icon"), c = d("Checkbox"), u = d("DropdownItem"), k = d("DropdownMenu"), w = d("Dropdown"), C = d("Input"), O = d("Tabs"), j = d("Page"), E = d("Button"), W = d("Modal"), H = q("click-away");
332
+ }, re = { key: 0 }, ce = { class: "extra" }, ue = { class: "gc_i18n_page" }, ge = { style: { display: "flex" } };
333
+ function he(t, e, a, s, n, o) {
334
+ const r = d("Spin"), h = d("Table"), g = d("TabPane"), i = d("Icon"), c = d("Checkbox"), u = d("DropdownItem"), k = d("DropdownMenu"), w = d("Dropdown"), C = d("Input"), E = d("Tabs"), j = d("Page"), O = d("Button"), W = d("Modal"), H = q("click-away");
335
335
  return f(), S(W, {
336
336
  modelValue: n.isModalVisible,
337
337
  "onUpdate:modelValue": e[4] || (e[4] = (m) => n.isModalVisible = m),
@@ -343,7 +343,7 @@ function ge(t, e, a, s, n, o) {
343
343
  }, {
344
344
  default: p(() => [
345
345
  n.isModalVisible ? (f(), I("div", re, [
346
- y(O, {
346
+ y(E, {
347
347
  modelValue: n.type,
348
348
  "onUpdate:modelValue": e[2] || (e[2] = (m) => n.type = m),
349
349
  type: "card",
@@ -468,7 +468,7 @@ function ge(t, e, a, s, n, o) {
468
468
  _: 1
469
469
  }, 8, ["modelValue", "onOnClick"]),
470
470
  b("div", ue, [
471
- b("div", he, [
471
+ b("div", ge, [
472
472
  y(j, {
473
473
  modelValue: o.firstResult,
474
474
  "onUpdate:modelValue": e[3] || (e[3] = (m) => o.firstResult = m),
@@ -483,7 +483,7 @@ function ge(t, e, a, s, n, o) {
483
483
  ])
484
484
  ]),
485
485
  b("div", null, [
486
- y(E, {
486
+ y(O, {
487
487
  style: { "margin-right": "10px" },
488
488
  onClick: o.closeModal
489
489
  }, {
@@ -492,7 +492,7 @@ function ge(t, e, a, s, n, o) {
492
492
  ])]),
493
493
  _: 1
494
494
  }, 8, ["onClick"]),
495
- y(E, {
495
+ y(O, {
496
496
  type: "primary",
497
497
  onClick: o.saveData
498
498
  }, {
@@ -508,7 +508,7 @@ function ge(t, e, a, s, n, o) {
508
508
  _: 1
509
509
  }, 8, ["modelValue", "onOnCancel"]);
510
510
  }
511
- const de = /* @__PURE__ */ G(le, [["render", ge], ["__scopeId", "data-v-1f438196"]]), me = {}, pe = { class: "earth" };
511
+ const de = /* @__PURE__ */ G(le, [["render", he], ["__scopeId", "data-v-1f438196"]]), me = {}, pe = { class: "earth" };
512
512
  function fe(t, e) {
513
513
  const a = d("Input"), s = d("Icon");
514
514
  return f(), I("div", pe, [
@@ -730,32 +730,36 @@ class v {
730
730
  }
731
731
  }
732
732
  }
733
- async setLanguage(e) {
734
- let a = _.get("I18N_MESSAGES_COMMON_" + e);
735
- if (!a) {
736
- const s = await D.get(
733
+ async setLanguage(e = "zh-CN") {
734
+ const a = "I18N_MESSAGES_COMMON_" + e;
735
+ let s = _.get(a);
736
+ if (console.log("commonMessages", s), l.isEmpty(s)) {
737
+ const n = await D.get(
737
738
  `https://cdn.ihotel.cn/i18n_messages/${e}.json`
738
- ), { data: n } = s;
739
- s.status === 200 && (a = n, _.set("I18N_MESSAGES_COMMON_" + e, n));
739
+ );
740
+ if (console.log("lang", n), n) {
741
+ const { data: o } = n;
742
+ s = o, _.set(a, o);
743
+ }
740
744
  }
741
- return new Promise(async (s, n) => {
742
- const o = await ie({
745
+ return new Promise(async (n, o) => {
746
+ const r = await ie({
743
747
  baseUrl: this.baseUrl,
744
748
  appCode: this.appCode,
745
749
  language: e || this.locale,
746
750
  token: this.token,
747
751
  routerName: this.name
748
752
  });
749
- if (o) {
750
- const r = ae(o), h = l.assign(
753
+ if (r) {
754
+ const h = ae(r), g = l.assign(
751
755
  {},
752
- a,
756
+ s,
753
757
  l.get(this.messages, e),
754
- r
758
+ h
755
759
  );
756
- this.i18n.global.setLocaleMessage(e, h);
760
+ this.i18n.global.setLocaleMessage(e, g);
757
761
  }
758
- this.locale = e, this.i18n.global.locale.value = e, _.set("I18N_LANGUAGE", e), s(!0);
762
+ this.locale = e, this.i18n.global.locale.value = e, _.set("I18N_LANGUAGE", e), n(!0);
759
763
  });
760
764
  }
761
765
  createModal(e) {
@@ -1 +1 @@
1
- (function(p,C){typeof exports=="object"&&typeof module<"u"?C(exports,require("keyboardjs"),require("view-ui-plus"),require("view-ui-plus/dist/styles/viewuiplus.css"),require("vue"),require("vue-i18n"),require("lodash-es"),require("axios"),require("store2"),require("jsrsasign")):typeof define=="function"&&define.amd?define(["exports","keyboardjs","view-ui-plus","view-ui-plus/dist/styles/viewuiplus.css","vue","vue-i18n","lodash-es","axios","store2","jsrsasign"],C):(p=typeof globalThis<"u"?globalThis:p||self,C(p.gc_i18n={},p.keyboardJS,p.iview,null,p.Vue,p.vueI18n,p._,p.Axios,p.store2,p.jsrsasign))})(this,(function(p,C,S,le,t,K,r,_,f,U){"use strict";const B=a=>{const e={};for(const n of a)e[n.key]=n.value;return e},A=(a,e,n)=>(e.forEach(s=>{console.log("obj2.key ",s.key);const o=s.key.split(".");o[0]==="common"&&r.find(a,{key:`${n}.${o[1]}`})&&r.remove(a,{key:`${n}.${o[1]}`});const i=r.find(a,{key:s.key});i?r.merge(i,s):a.push(s)}),a),D=async({baseUrl:a,token:e})=>_.get(a+"/i18n-web/sysoption/getsupportedlangs",{headers:{Authorization:e}}),T=async({appCode:a,language:e="zh-CN",page:n,lastPullDate:s,baseUrl:o,token:i})=>new Promise(async(c,g)=>{const u=o+"/i18n-web/kv_translate/kv_translates",l=s?u+"?lastPullDate="+s:u,h=await _({url:l,method:"GET",headers:{appCode:a,page:n,language:e,Authorization:i}});h.data&&h.data.result==0?c(h.data.retVal):c(h)}),G=async({data:a,token:e,baseUrl:n})=>_({url:n+"/i18n-web/kv_translate/userDicts",method:"POST",headers:{Authorization:e},data:a}),P=async({data:a,token:e,baseUrl:n})=>_({url:n+"/i18n-web/kv_translate/batch",method:"POST",data:a,headers:{Authorization:e}}),z=async({baseUrl:a,appCode:e,language:n="zh-CN",token:s,routerName:o})=>new Promise(async(i,c)=>{const g=f.namespace(`I18N_${r.toUpper(e)}`),u={baseUrl:a,appCode:e,language:n,token:s},l=g.get(n);if(!l||!l.lastPullDate){const h=await T(u);h&&(g.set(n,h),i(h.translatesDTOs))}else{const{lastPullDate:h}=l,d=await T({...u,lastPullDate:h});if(d){const y=r.get(l,"translatesDTOs");if(r.isEmpty(d.translatesDTOs))i(y);else{const w=A(y,d.translatesDTOs,o),V={lastPullDate:d.lastPullDate,translatesDTOs:w};f.namespace(`I18N_${r.toUpper(e)}`).set(n,V,":"),i(w)}}}}),j={data(){return{LanguageSettingVisible:!1,isModalVisible:!1,loading:!1,searchText:"",name:"",type:"pageData",languages:[],mySaveData:[],pageData:[],pageDataShow:[],page:{pageSize:10,firstResult:0},data:[]}},computed:{firstResult(){return this.page.firstResult/this.page.pageSize+1},columns(){let a=[{title:"关键词",fixed:"left",width:110,key:"dictKey"}];return r.map(this.languages,e=>{const n=e.code;if(e.checked)return a.push({title:e.name,key:n,render:(s,{row:o,index:i})=>{const c=o[n],{localhost:g}=o;return g?null:t.createVNode(t.resolveComponent("Input"),{modelValue:c,onOnChange:u=>{const l=u.target.value,{dictKey:h}=o,d=r.findIndex(this.mySaveData,{dictKey:h});d>-1?this.mySaveData[d][n]=l:this.mySaveData.push({...o,[n]:l,page:this.type==="loginData"?this.loginRouteName:this.type==="pageData"?this.name:"common"})}},null)}})}),a}},props:{appCode:String,router:Object,setLanguage:Function,token:String,baseUrl:String,translationKeys:Array,loginRouteName:String,loginTranslationKeys:Array,login:{type:Boolean,default:!0},emitter:Object},methods:{saveLanguageSetting(a){const e=r.map(r.filter(this.languages,n=>n.checked),"code");f.set("I18N_LANGUAGE_SETTING",e)},handleLanguageSettingOpen(){this.LanguageSettingVisible=!this.LanguageSettingVisible},onClickOutside(){this.LanguageSettingVisible=!1},inputSearch(){this.type==="pageData"?this.getPageData():this.search()},closeModal(){this.searchText="",this.type="pageData",this.isModalVisible=!1,this.emitter.emit("closeModal")},openModal({name:a}){this.isModalVisible||(this.isModalVisible=!0,this.name=a,this.init())},findShallowStringDiff(a){return r.find(a,["_isEdit",!0])},async saveData({msg:a="保存成功"},e=!0){const n=[];if(r.map(this.mySaveData,o=>{r.map(this.languages,i=>{n.push({key:o.dictKey,page:o.page,lang:i.code,value:o[i.code]})})}),r.isEmpty(n)){S.Message.error({content:"没有需要保存的数据"});return}const s=await P({baseUrl:this.baseUrl,data:{appCode:this.appCode,isLocal:"F",data:n},token:this.token});s&&s.data.result===0?(S.Message.success({content:a||s.data.msg}),this.setLanguage(),this.initialData=r.cloneDeep(this.data.datas),this.mySaveData=[],this.router.go(0)):S.Message.error({content:s.data.msg||"保存失败"})},async saveNoEqual(){r.isEmpty(this.mySaveData)||this.saveData({msg:"已为您自动保存"},!1)},changePage(a){this.saveNoEqual(),this.type==="pageData"?this.getPageData({firstResult:(a-1)*this.page.pageSize}):this.search({firstResult:(a-1)*this.page.pageSize})},async getPageData(a){this.search({...a,commaSeparatedKeys:this.translationKeys.toString()},"pageData")},async getLoginData(a){this.search({...a,page:this.loginRouteName,commaSeparatedKeys:this.loginTranslationKeys.toString()},"pageData")},async search(a,e){this.loading=!0;const n=await G({baseUrl:this.baseUrl,data:{appCode:this.appCode,searchBlur:this.searchText,commaSeparatedLangs:r.map(this.languages,"code").toString(),page:e==="loginData"?this.loginRouteName:e==="pageData"?this.name:"common",pageSize:10,...a},token:this.token});if(n){this.initialData=r.cloneDeep(n.data.retVal.datas);let s=n.data.retVal.datas;this.data=r.cloneDeep(s),this.page={firstResult:n.data.retVal.firstResult,pageSize:n.data.retVal.pageSize,totalRows:n.data.retVal.totalRows}}this.loading=!1},changeTab(a){this.type=a,this.mySaveData=[],a==="data"?this.search():a==="pageData"?this.getPageData():a==="loginData"&&this.getLoginData()},async init(){let a=f.get("I18N_LANGUAGE_SETTING");const e=await D({token:this.token,baseUrl:this.baseUrl});if(e&&e.data.result==0){let n=e.data.retVal;r.isEmpty(a)&&(a=["zh-CN","en-US","zh-TW"]),r.map(n,s=>{r.includes(a,s.code)&&(s.checked=!0)}),this.languages=n,this.getPageData()}else S.Message.error("获取语言失败,出错了")}}},I=(a,e)=>{const n=a.__vccOpts||a;for(const[s,o]of e)n[s]=o;return n},q={key:0},W={class:"extra"},H={class:"gc_i18n_page"},J={style:{display:"flex"}};function F(a,e,n,s,o,i){const c=t.resolveComponent("Spin"),g=t.resolveComponent("Table"),u=t.resolveComponent("TabPane"),l=t.resolveComponent("Icon"),h=t.resolveComponent("Checkbox"),d=t.resolveComponent("DropdownItem"),y=t.resolveComponent("DropdownMenu"),w=t.resolveComponent("Dropdown"),V=t.resolveComponent("Input"),M=t.resolveComponent("Tabs"),ne=t.resolveComponent("Page"),R=t.resolveComponent("Button"),se=t.resolveComponent("Modal"),oe=t.resolveDirective("click-away");return t.openBlock(),t.createBlock(se,{modelValue:o.isModalVisible,"onUpdate:modelValue":e[4]||(e[4]=m=>o.isModalVisible=m),"mask-closable":!1,width:70,title:"多语言管理中心","footer-hide":"",onOnCancel:i.closeModal},{default:t.withCtx(()=>[o.isModalVisible?(t.openBlock(),t.createElementBlock("div",q,[t.createVNode(M,{modelValue:o.type,"onUpdate:modelValue":e[2]||(e[2]=m=>o.type=m),type:"card",class:"gc_i18n_tabs",onOnClick:i.changeTab},{extra:t.withCtx(()=>[t.createElementVNode("div",W,[t.withDirectives((t.openBlock(),t.createBlock(w,{style:{width:"80px"},transfer:"",trigger:"custom",placement:"bottom-start",visible:o.LanguageSettingVisible},{list:t.withCtx(()=>[t.createVNode(y,null,{default:t.withCtx(()=>[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(o.languages,m=>(t.openBlock(),t.createBlock(d,{key:m.code},{default:t.withCtx(()=>[t.createVNode(h,{modelValue:m.checked,"onUpdate:modelValue":ie=>m.checked=ie,onOnChange:i.saveLanguageSetting},{default:t.withCtx(()=>[t.createElementVNode("span",null,t.toDisplayString(m.name),1)]),_:2},1032,["modelValue","onUpdate:modelValue","onOnChange"])]),_:2},1024))),128))]),_:1})]),default:t.withCtx(()=>[t.createElementVNode("a",{href:"javascript:void(0)",onClick:e[0]||(e[0]=(...m)=>i.handleLanguageSettingOpen&&i.handleLanguageSettingOpen(...m))},[e[5]||(e[5]=t.createTextVNode(" 语言 ",-1)),t.createVNode(l,{type:"ios-arrow-down"})])]),_:1},8,["visible"])),[[oe,i.onClickOutside]]),t.createVNode(V,{class:"gc_i18n_search",prefix:"ios-search",placeholder:"请输入搜索内容",modelValue:o.searchText,"onUpdate:modelValue":e[1]||(e[1]=m=>o.searchText=m),clearable:"",onOnEnter:i.inputSearch,onOnClear:i.inputSearch},null,8,["modelValue","onOnEnter","onOnClear"])])]),default:t.withCtx(()=>[t.createVNode(u,{name:"pageData",label:"当前页面"},{default:t.withCtx(()=>[o.loading?(t.openBlock(),t.createBlock(c,{key:0,class:"gc_i18n_spin"})):(t.openBlock(),t.createBlock(g,{key:1,border:"",height:380,columns:i.columns,data:o.data},null,8,["columns","data"]))]),_:1}),t.createVNode(u,{name:"data",label:"当前应用"},{default:t.withCtx(()=>[o.loading?(t.openBlock(),t.createBlock(c,{key:0,class:"gc_i18n_spin"})):(t.openBlock(),t.createBlock(g,{key:1,border:"",height:380,columns:i.columns,data:o.data},null,8,["columns","data"]))]),_:1}),n.login?(t.openBlock(),t.createBlock(u,{key:0,name:"loginData",label:"登录页面"},{default:t.withCtx(()=>[o.loading?(t.openBlock(),t.createBlock(c,{key:0,class:"gc_i18n_spin"})):(t.openBlock(),t.createBlock(g,{key:1,border:"",height:380,columns:i.columns,data:o.data},null,8,["columns","data"]))]),_:1})):t.createCommentVNode("",!0)]),_:1},8,["modelValue","onOnClick"]),t.createElementVNode("div",H,[t.createElementVNode("div",J,[t.createVNode(ne,{modelValue:i.firstResult,"onUpdate:modelValue":e[3]||(e[3]=m=>i.firstResult=m),total:o.page.totalRows,"page-size":10,simple:"","show-total":"",onOnChange:i.changePage},null,8,["modelValue","total","onOnChange"]),t.createElementVNode("div",null,[t.createElementVNode("span",null," 共 "+t.toDisplayString(o.page.totalRows)+" 项当前页数据 ",1)])]),t.createElementVNode("div",null,[t.createVNode(R,{style:{"margin-right":"10px"},onClick:i.closeModal},{default:t.withCtx(()=>[...e[6]||(e[6]=[t.createTextVNode("关闭",-1)])]),_:1},8,["onClick"]),t.createVNode(R,{type:"primary",onClick:i.saveData},{default:t.withCtx(()=>[...e[7]||(e[7]=[t.createTextVNode("保存",-1)])]),_:1},8,["onClick"])])])])):t.createCommentVNode("",!0)]),_:1},8,["modelValue","onOnCancel"])}const Q=I(j,[["render",F],["__scopeId","data-v-1f438196"]]),v={},X={class:"earth"};function Y(a,e){const n=t.resolveComponent("Input"),s=t.resolveComponent("Icon");return t.openBlock(),t.createElementBlock("div",X,[t.createVNode(n,{class:"input"}),t.createVNode(s,{class:"icon",type:"ios-globe",size:"20"})])}const Z=I(v,[["render",Y]]);function b(a){const e=[],n=/(?:\$t|_ctx\.\$t)\s*\(\s*(['"])([^'"]+?)\1/gs;if(a.template){let s;for(;(s=n.exec(a.template))!==null;)e.push(s[2])}if(a.render){const s=a.render.toString();let o;for(;(o=n.exec(s))!==null;)e.push(o[2])}if(a.setup){const s=a.setup.toString();let o;for(;(o=n.exec(s))!==null;)e.push(o[2])}if(a.methods)for(const s in a.methods){const o=a.methods[s].toString();let i;for(;(i=n.exec(o))!==null;)e.push(i[2])}if(a.components)for(const s in a.components){const o=a.components[s];e.push(...b(o))}return[...new Set(e)]}function $(a){return{all:a=a||new Map,on:function(e,n){var s=a.get(e);s?s.push(n):a.set(e,[n])},off:function(e,n){var s=a.get(e);s&&(n?s.splice(s.indexOf(n)>>>0,1):a.set(e,[]))},emit:function(e,n){var s=a.get(e);s&&s.slice().map(function(o){o(n)}),(s=a.get("*"))&&s.slice().map(function(o){o(e,n)})}}}const E=function(){return document.ontouchstart!==null?"click":"touchstart"},N="__vue_click_away__",L=function(a,e,n){x(a);let s=n.context,o=e.value,i=!1;setTimeout(function(){i=!0},0),a[N]=function(c){if((!a||!a.contains(c.target))&&o&&i&&typeof o=="function")return o.call(s,c)},document.addEventListener(E(),a[N],!1)},x=function(a){document.removeEventListener(E(),a[N],!1),delete a[N]},ee=function(a,e,n){e.value!==e.oldValue&&L(a,e,n)},te={install:function(a){a.directive("click-away",ae)}},ae={mounted:L,updated:ee,unmounted:x};function O(a){const e={alg:"HS512"},n={orgCode:a},s=JSON.stringify(e),o=JSON.stringify(n);return U.jws.JWS.sign("HS512",s,o,"")}class k{constructor(e={}){const{router:n,appCode:s,messages:o,token:i,orgCode:c,loginRouteName:g,login:u,keyboard:l,locale:h}=e;this.token=i||O(c)||f.get("I18N_TOKEN"),this.loadI18n=!0,this.appCode=s,this.router=n,this.locale=h||f.get("I18N_LANGUAGE")||navigator.language||"zh-CN",this.name="",this.messages=o||{},this.translationKeys=[],this.translationKeySet=new Set,this.loginRouteName=g||"login",this.login=u,this.loginTranslationKeys=[],this.keyboard=l||"shift>t",this.baseUrl=e.dev?"https://test.ihotel.cn":"https://trans.ihotel.cn",this.initRouterGuards(),this.initI18n(e),C.bind(this.keyboard,d=>{!this.configInstance&&this.name!=this.loginRouteName&&(this.translationKeys=Array.from(this.translationKeySet),this.configInstance=this.createModal(this.name),this.configInstance.openModal({name:this.name}))}),this.setupLanguageChangeListener()}setupLanguageChangeListener(){"onlanguagechange"in window&&window.addEventListener("languagechange",()=>{const e=navigator.language;e!==this.locale&&this.setLanguage(e)})}initRouterGuards(){k._routerGuardRegistered||(k._routerGuardRegistered=!0,this.router.beforeEach(async(e,n,s)=>{var g,u;const{language:o,token:i}=e.query;this.configInstance&&this.configInstance.closeModal(),this.name=e.name,this.translationKeySet=new Set,i&&this.setToken(i),this.loadI18n&&await this.setLanguage(o||this.locale),this.loadI18n=!1;const c=this.router.getRoutes().find(l=>l.name===this.loginRouteName||l.path===`/${this.loginRouteName}`);if(c&&c.components){let l=(g=c.components)==null?void 0:g.default;if(typeof l=="function"&&l.toString().includes("import("))try{l=await l(),l=l.default}catch(d){console.error("加载异步组件时出错:",d),s();return}const h=b(l);this.loginTranslationKeys=h}if(e.matched.length>0)try{const l=[];for(const h of e.matched){let d=(u=h.components)==null?void 0:u.default;if(typeof d=="function"&&d.toString().includes("import(")&&(d=await d(),d=d.default),d){const y=b(d);l.push(...y)}}this.translationKeys=l}catch(l){console.error("加载异步组件时出错:",l),s();return}s()}),k._afterEachGuardRegistered||(k._afterEachGuardRegistered=!0,this.router.afterEach(async()=>{var o,i,c;await t.nextTick();const e=Array.from(this.translationKeySet),n=Array.from(new Set([...this.translationKeys||[],...e]));this.translationKeys=n,((c=(i=(o=this.router)==null?void 0:o.currentRoute)==null?void 0:i.value)==null?void 0:c.name)===this.loginRouteName&&(this.loginTranslationKeys=n)})))}initI18n(e){this.i18n=K.createI18n({locale:this.locale,allowComposition:!0,globalInjection:!0,legacy:!1,silentTranslationWarn:!0,silentFallbackWarn:!0,missingWarn:!1,fallbackWarn:!1,...e});const n=this.i18n.global.t;globalThis.$t=this.i18n.global.t=(s,o)=>{var c,g,u;typeof s=="string"&&this.translationKeySet.add(s);const i=(u=(g=(c=this.router)==null?void 0:c.currentRoute)==null?void 0:g.value)==null?void 0:u.name;if(i){const l=`${i}.${s}`,h=n(l);if(h!==l&&!r.isEmpty(h))return h;{const d=`common.${s}`,y=n(d);return y!==d?y:n(s,o)}}else return n(s,o)},globalThis.$i18nLogin=async s=>{this.setToken(O(s)),this.clearI18n(),await this.setLanguage(this.locale),location.reload()},globalThis.$i18nLogout=s=>{this.clearI18n(),location.reload()},globalThis.$deepScan=function(s){return s},globalThis.$clearI18n=this.clearI18n=()=>{f.namespace(`I18N_${r.toUpper(this.appCode)}`).clearAll()},globalThis.$changeLocale=this.changeLocale=this.i18n.global.changeLocale=async s=>{await this.setLanguage(s||this.locale)}}setToken(e){this.token=e,f.set("I18N_TOKEN",e)}async getLanguages(e=!1){const n=f.get("I18N_LANGUAGES");if(n&&!e)return n;{const s=await D({baseUrl:this.baseUrl,appCode:this.appCode,token:this.token});if(s.data){const o=r.get(s.data,"retVal");return f.set("I18N_LANGUAGES",o),o}}}async setLanguage(e){let n=f.get("I18N_MESSAGES_COMMON_"+e);if(!n){const s=await _.get(`https://cdn.ihotel.cn/i18n_messages/${e}.json`),{data:o}=s;s.status===200&&(n=o,f.set("I18N_MESSAGES_COMMON_"+e,o))}return new Promise(async(s,o)=>{const i=await z({baseUrl:this.baseUrl,appCode:this.appCode,language:e||this.locale,token:this.token,routerName:this.name});if(i){const c=B(i),g=r.assign({},n,r.get(this.messages,e),c);this.i18n.global.setLocaleMessage(e,g)}this.locale=e,this.i18n.global.locale.value=e,f.set("I18N_LANGUAGE",e),s(!0)})}createModal(e){const n=$();return n.on("closeModal",s=>{this.configInstance=null}),t.createApp(Q,{appCode:this.appCode,router:this.router,token:this.token,setLanguage:this.setLanguage.bind(this,this.locale),name:e||this.name,translationKeys:this.translationKeys,loginRouteName:this.loginRouteName,loginTranslationKeys:this.loginTranslationKeys,login:this.login,baseUrl:this.baseUrl,emitter:n}).use(S).use(te).mount(document.createElement("div"))}install(e,n={}){e.use(S,{i18n:this.i18n}),e.use(this.i18n),e.component("i18n-earth",Z)}}p.I18n=k,p.default=k,Object.defineProperties(p,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
1
+ (function(p,C){typeof exports=="object"&&typeof module<"u"?C(exports,require("keyboardjs"),require("view-ui-plus"),require("view-ui-plus/dist/styles/viewuiplus.css"),require("vue"),require("vue-i18n"),require("lodash-es"),require("axios"),require("store2"),require("jsrsasign")):typeof define=="function"&&define.amd?define(["exports","keyboardjs","view-ui-plus","view-ui-plus/dist/styles/viewuiplus.css","vue","vue-i18n","lodash-es","axios","store2","jsrsasign"],C):(p=typeof globalThis<"u"?globalThis:p||self,C(p.gc_i18n={},p.keyboardJS,p.iview,null,p.Vue,p.vueI18n,p._,p.Axios,p.store2,p.jsrsasign))})(this,(function(p,C,S,le,t,K,r,N,f,U){"use strict";const B=a=>{const e={};for(const n of a)e[n.key]=n.value;return e},A=(a,e,n)=>(e.forEach(s=>{console.log("obj2.key ",s.key);const o=s.key.split(".");o[0]==="common"&&r.find(a,{key:`${n}.${o[1]}`})&&r.remove(a,{key:`${n}.${o[1]}`});const i=r.find(a,{key:s.key});i?r.merge(i,s):a.push(s)}),a),D=async({baseUrl:a,token:e})=>N.get(a+"/i18n-web/sysoption/getsupportedlangs",{headers:{Authorization:e}}),T=async({appCode:a,language:e="zh-CN",page:n,lastPullDate:s,baseUrl:o,token:i})=>new Promise(async(c,u)=>{const g=o+"/i18n-web/kv_translate/kv_translates",l=s?g+"?lastPullDate="+s:g,h=await N({url:l,method:"GET",headers:{appCode:a,page:n,language:e,Authorization:i}});h.data&&h.data.result==0?c(h.data.retVal):c(h)}),G=async({data:a,token:e,baseUrl:n})=>N({url:n+"/i18n-web/kv_translate/userDicts",method:"POST",headers:{Authorization:e},data:a}),P=async({data:a,token:e,baseUrl:n})=>N({url:n+"/i18n-web/kv_translate/batch",method:"POST",data:a,headers:{Authorization:e}}),z=async({baseUrl:a,appCode:e,language:n="zh-CN",token:s,routerName:o})=>new Promise(async(i,c)=>{const u=f.namespace(`I18N_${r.toUpper(e)}`),g={baseUrl:a,appCode:e,language:n,token:s},l=u.get(n);if(!l||!l.lastPullDate){const h=await T(g);h&&(u.set(n,h),i(h.translatesDTOs))}else{const{lastPullDate:h}=l,d=await T({...g,lastPullDate:h});if(d){const y=r.get(l,"translatesDTOs");if(r.isEmpty(d.translatesDTOs))i(y);else{const _=A(y,d.translatesDTOs,o),V={lastPullDate:d.lastPullDate,translatesDTOs:_};f.namespace(`I18N_${r.toUpper(e)}`).set(n,V,":"),i(_)}}}}),j={data(){return{LanguageSettingVisible:!1,isModalVisible:!1,loading:!1,searchText:"",name:"",type:"pageData",languages:[],mySaveData:[],pageData:[],pageDataShow:[],page:{pageSize:10,firstResult:0},data:[]}},computed:{firstResult(){return this.page.firstResult/this.page.pageSize+1},columns(){let a=[{title:"关键词",fixed:"left",width:110,key:"dictKey"}];return r.map(this.languages,e=>{const n=e.code;if(e.checked)return a.push({title:e.name,key:n,render:(s,{row:o,index:i})=>{const c=o[n],{localhost:u}=o;return u?null:t.createVNode(t.resolveComponent("Input"),{modelValue:c,onOnChange:g=>{const l=g.target.value,{dictKey:h}=o,d=r.findIndex(this.mySaveData,{dictKey:h});d>-1?this.mySaveData[d][n]=l:this.mySaveData.push({...o,[n]:l,page:this.type==="loginData"?this.loginRouteName:this.type==="pageData"?this.name:"common"})}},null)}})}),a}},props:{appCode:String,router:Object,setLanguage:Function,token:String,baseUrl:String,translationKeys:Array,loginRouteName:String,loginTranslationKeys:Array,login:{type:Boolean,default:!0},emitter:Object},methods:{saveLanguageSetting(a){const e=r.map(r.filter(this.languages,n=>n.checked),"code");f.set("I18N_LANGUAGE_SETTING",e)},handleLanguageSettingOpen(){this.LanguageSettingVisible=!this.LanguageSettingVisible},onClickOutside(){this.LanguageSettingVisible=!1},inputSearch(){this.type==="pageData"?this.getPageData():this.search()},closeModal(){this.searchText="",this.type="pageData",this.isModalVisible=!1,this.emitter.emit("closeModal")},openModal({name:a}){this.isModalVisible||(this.isModalVisible=!0,this.name=a,this.init())},findShallowStringDiff(a){return r.find(a,["_isEdit",!0])},async saveData({msg:a="保存成功"},e=!0){const n=[];if(r.map(this.mySaveData,o=>{r.map(this.languages,i=>{n.push({key:o.dictKey,page:o.page,lang:i.code,value:o[i.code]})})}),r.isEmpty(n)){S.Message.error({content:"没有需要保存的数据"});return}const s=await P({baseUrl:this.baseUrl,data:{appCode:this.appCode,isLocal:"F",data:n},token:this.token});s&&s.data.result===0?(S.Message.success({content:a||s.data.msg}),this.setLanguage(),this.initialData=r.cloneDeep(this.data.datas),this.mySaveData=[],this.router.go(0)):S.Message.error({content:s.data.msg||"保存失败"})},async saveNoEqual(){r.isEmpty(this.mySaveData)||this.saveData({msg:"已为您自动保存"},!1)},changePage(a){this.saveNoEqual(),this.type==="pageData"?this.getPageData({firstResult:(a-1)*this.page.pageSize}):this.search({firstResult:(a-1)*this.page.pageSize})},async getPageData(a){this.search({...a,commaSeparatedKeys:this.translationKeys.toString()},"pageData")},async getLoginData(a){this.search({...a,page:this.loginRouteName,commaSeparatedKeys:this.loginTranslationKeys.toString()},"pageData")},async search(a,e){this.loading=!0;const n=await G({baseUrl:this.baseUrl,data:{appCode:this.appCode,searchBlur:this.searchText,commaSeparatedLangs:r.map(this.languages,"code").toString(),page:e==="loginData"?this.loginRouteName:e==="pageData"?this.name:"common",pageSize:10,...a},token:this.token});if(n){this.initialData=r.cloneDeep(n.data.retVal.datas);let s=n.data.retVal.datas;this.data=r.cloneDeep(s),this.page={firstResult:n.data.retVal.firstResult,pageSize:n.data.retVal.pageSize,totalRows:n.data.retVal.totalRows}}this.loading=!1},changeTab(a){this.type=a,this.mySaveData=[],a==="data"?this.search():a==="pageData"?this.getPageData():a==="loginData"&&this.getLoginData()},async init(){let a=f.get("I18N_LANGUAGE_SETTING");const e=await D({token:this.token,baseUrl:this.baseUrl});if(e&&e.data.result==0){let n=e.data.retVal;r.isEmpty(a)&&(a=["zh-CN","en-US","zh-TW"]),r.map(n,s=>{r.includes(a,s.code)&&(s.checked=!0)}),this.languages=n,this.getPageData()}else S.Message.error("获取语言失败,出错了")}}},I=(a,e)=>{const n=a.__vccOpts||a;for(const[s,o]of e)n[s]=o;return n},q={key:0},W={class:"extra"},H={class:"gc_i18n_page"},J={style:{display:"flex"}};function F(a,e,n,s,o,i){const c=t.resolveComponent("Spin"),u=t.resolveComponent("Table"),g=t.resolveComponent("TabPane"),l=t.resolveComponent("Icon"),h=t.resolveComponent("Checkbox"),d=t.resolveComponent("DropdownItem"),y=t.resolveComponent("DropdownMenu"),_=t.resolveComponent("Dropdown"),V=t.resolveComponent("Input"),M=t.resolveComponent("Tabs"),ne=t.resolveComponent("Page"),R=t.resolveComponent("Button"),se=t.resolveComponent("Modal"),oe=t.resolveDirective("click-away");return t.openBlock(),t.createBlock(se,{modelValue:o.isModalVisible,"onUpdate:modelValue":e[4]||(e[4]=m=>o.isModalVisible=m),"mask-closable":!1,width:70,title:"多语言管理中心","footer-hide":"",onOnCancel:i.closeModal},{default:t.withCtx(()=>[o.isModalVisible?(t.openBlock(),t.createElementBlock("div",q,[t.createVNode(M,{modelValue:o.type,"onUpdate:modelValue":e[2]||(e[2]=m=>o.type=m),type:"card",class:"gc_i18n_tabs",onOnClick:i.changeTab},{extra:t.withCtx(()=>[t.createElementVNode("div",W,[t.withDirectives((t.openBlock(),t.createBlock(_,{style:{width:"80px"},transfer:"",trigger:"custom",placement:"bottom-start",visible:o.LanguageSettingVisible},{list:t.withCtx(()=>[t.createVNode(y,null,{default:t.withCtx(()=>[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(o.languages,m=>(t.openBlock(),t.createBlock(d,{key:m.code},{default:t.withCtx(()=>[t.createVNode(h,{modelValue:m.checked,"onUpdate:modelValue":ie=>m.checked=ie,onOnChange:i.saveLanguageSetting},{default:t.withCtx(()=>[t.createElementVNode("span",null,t.toDisplayString(m.name),1)]),_:2},1032,["modelValue","onUpdate:modelValue","onOnChange"])]),_:2},1024))),128))]),_:1})]),default:t.withCtx(()=>[t.createElementVNode("a",{href:"javascript:void(0)",onClick:e[0]||(e[0]=(...m)=>i.handleLanguageSettingOpen&&i.handleLanguageSettingOpen(...m))},[e[5]||(e[5]=t.createTextVNode(" 语言 ",-1)),t.createVNode(l,{type:"ios-arrow-down"})])]),_:1},8,["visible"])),[[oe,i.onClickOutside]]),t.createVNode(V,{class:"gc_i18n_search",prefix:"ios-search",placeholder:"请输入搜索内容",modelValue:o.searchText,"onUpdate:modelValue":e[1]||(e[1]=m=>o.searchText=m),clearable:"",onOnEnter:i.inputSearch,onOnClear:i.inputSearch},null,8,["modelValue","onOnEnter","onOnClear"])])]),default:t.withCtx(()=>[t.createVNode(g,{name:"pageData",label:"当前页面"},{default:t.withCtx(()=>[o.loading?(t.openBlock(),t.createBlock(c,{key:0,class:"gc_i18n_spin"})):(t.openBlock(),t.createBlock(u,{key:1,border:"",height:380,columns:i.columns,data:o.data},null,8,["columns","data"]))]),_:1}),t.createVNode(g,{name:"data",label:"当前应用"},{default:t.withCtx(()=>[o.loading?(t.openBlock(),t.createBlock(c,{key:0,class:"gc_i18n_spin"})):(t.openBlock(),t.createBlock(u,{key:1,border:"",height:380,columns:i.columns,data:o.data},null,8,["columns","data"]))]),_:1}),n.login?(t.openBlock(),t.createBlock(g,{key:0,name:"loginData",label:"登录页面"},{default:t.withCtx(()=>[o.loading?(t.openBlock(),t.createBlock(c,{key:0,class:"gc_i18n_spin"})):(t.openBlock(),t.createBlock(u,{key:1,border:"",height:380,columns:i.columns,data:o.data},null,8,["columns","data"]))]),_:1})):t.createCommentVNode("",!0)]),_:1},8,["modelValue","onOnClick"]),t.createElementVNode("div",H,[t.createElementVNode("div",J,[t.createVNode(ne,{modelValue:i.firstResult,"onUpdate:modelValue":e[3]||(e[3]=m=>i.firstResult=m),total:o.page.totalRows,"page-size":10,simple:"","show-total":"",onOnChange:i.changePage},null,8,["modelValue","total","onOnChange"]),t.createElementVNode("div",null,[t.createElementVNode("span",null," 共 "+t.toDisplayString(o.page.totalRows)+" 项当前页数据 ",1)])]),t.createElementVNode("div",null,[t.createVNode(R,{style:{"margin-right":"10px"},onClick:i.closeModal},{default:t.withCtx(()=>[...e[6]||(e[6]=[t.createTextVNode("关闭",-1)])]),_:1},8,["onClick"]),t.createVNode(R,{type:"primary",onClick:i.saveData},{default:t.withCtx(()=>[...e[7]||(e[7]=[t.createTextVNode("保存",-1)])]),_:1},8,["onClick"])])])])):t.createCommentVNode("",!0)]),_:1},8,["modelValue","onOnCancel"])}const Q=I(j,[["render",F],["__scopeId","data-v-1f438196"]]),v={},X={class:"earth"};function Y(a,e){const n=t.resolveComponent("Input"),s=t.resolveComponent("Icon");return t.openBlock(),t.createElementBlock("div",X,[t.createVNode(n,{class:"input"}),t.createVNode(s,{class:"icon",type:"ios-globe",size:"20"})])}const Z=I(v,[["render",Y]]);function b(a){const e=[],n=/(?:\$t|_ctx\.\$t)\s*\(\s*(['"])([^'"]+?)\1/gs;if(a.template){let s;for(;(s=n.exec(a.template))!==null;)e.push(s[2])}if(a.render){const s=a.render.toString();let o;for(;(o=n.exec(s))!==null;)e.push(o[2])}if(a.setup){const s=a.setup.toString();let o;for(;(o=n.exec(s))!==null;)e.push(o[2])}if(a.methods)for(const s in a.methods){const o=a.methods[s].toString();let i;for(;(i=n.exec(o))!==null;)e.push(i[2])}if(a.components)for(const s in a.components){const o=a.components[s];e.push(...b(o))}return[...new Set(e)]}function $(a){return{all:a=a||new Map,on:function(e,n){var s=a.get(e);s?s.push(n):a.set(e,[n])},off:function(e,n){var s=a.get(e);s&&(n?s.splice(s.indexOf(n)>>>0,1):a.set(e,[]))},emit:function(e,n){var s=a.get(e);s&&s.slice().map(function(o){o(n)}),(s=a.get("*"))&&s.slice().map(function(o){o(e,n)})}}}const L=function(){return document.ontouchstart!==null?"click":"touchstart"},w="__vue_click_away__",E=function(a,e,n){x(a);let s=n.context,o=e.value,i=!1;setTimeout(function(){i=!0},0),a[w]=function(c){if((!a||!a.contains(c.target))&&o&&i&&typeof o=="function")return o.call(s,c)},document.addEventListener(L(),a[w],!1)},x=function(a){document.removeEventListener(L(),a[w],!1),delete a[w]},ee=function(a,e,n){e.value!==e.oldValue&&E(a,e,n)},te={install:function(a){a.directive("click-away",ae)}},ae={mounted:E,updated:ee,unmounted:x};function O(a){const e={alg:"HS512"},n={orgCode:a},s=JSON.stringify(e),o=JSON.stringify(n);return U.jws.JWS.sign("HS512",s,o,"")}class k{constructor(e={}){const{router:n,appCode:s,messages:o,token:i,orgCode:c,loginRouteName:u,login:g,keyboard:l,locale:h}=e;this.token=i||O(c)||f.get("I18N_TOKEN"),this.loadI18n=!0,this.appCode=s,this.router=n,this.locale=h||f.get("I18N_LANGUAGE")||navigator.language||"zh-CN",this.name="",this.messages=o||{},this.translationKeys=[],this.translationKeySet=new Set,this.loginRouteName=u||"login",this.login=g,this.loginTranslationKeys=[],this.keyboard=l||"shift>t",this.baseUrl=e.dev?"https://test.ihotel.cn":"https://trans.ihotel.cn",this.initRouterGuards(),this.initI18n(e),C.bind(this.keyboard,d=>{!this.configInstance&&this.name!=this.loginRouteName&&(this.translationKeys=Array.from(this.translationKeySet),this.configInstance=this.createModal(this.name),this.configInstance.openModal({name:this.name}))}),this.setupLanguageChangeListener()}setupLanguageChangeListener(){"onlanguagechange"in window&&window.addEventListener("languagechange",()=>{const e=navigator.language;e!==this.locale&&this.setLanguage(e)})}initRouterGuards(){k._routerGuardRegistered||(k._routerGuardRegistered=!0,this.router.beforeEach(async(e,n,s)=>{var u,g;const{language:o,token:i}=e.query;this.configInstance&&this.configInstance.closeModal(),this.name=e.name,this.translationKeySet=new Set,i&&this.setToken(i),this.loadI18n&&await this.setLanguage(o||this.locale),this.loadI18n=!1;const c=this.router.getRoutes().find(l=>l.name===this.loginRouteName||l.path===`/${this.loginRouteName}`);if(c&&c.components){let l=(u=c.components)==null?void 0:u.default;if(typeof l=="function"&&l.toString().includes("import("))try{l=await l(),l=l.default}catch(d){console.error("加载异步组件时出错:",d),s();return}const h=b(l);this.loginTranslationKeys=h}if(e.matched.length>0)try{const l=[];for(const h of e.matched){let d=(g=h.components)==null?void 0:g.default;if(typeof d=="function"&&d.toString().includes("import(")&&(d=await d(),d=d.default),d){const y=b(d);l.push(...y)}}this.translationKeys=l}catch(l){console.error("加载异步组件时出错:",l),s();return}s()}),k._afterEachGuardRegistered||(k._afterEachGuardRegistered=!0,this.router.afterEach(async()=>{var o,i,c;await t.nextTick();const e=Array.from(this.translationKeySet),n=Array.from(new Set([...this.translationKeys||[],...e]));this.translationKeys=n,((c=(i=(o=this.router)==null?void 0:o.currentRoute)==null?void 0:i.value)==null?void 0:c.name)===this.loginRouteName&&(this.loginTranslationKeys=n)})))}initI18n(e){this.i18n=K.createI18n({locale:this.locale,allowComposition:!0,globalInjection:!0,legacy:!1,silentTranslationWarn:!0,silentFallbackWarn:!0,missingWarn:!1,fallbackWarn:!1,...e});const n=this.i18n.global.t;globalThis.$t=this.i18n.global.t=(s,o)=>{var c,u,g;typeof s=="string"&&this.translationKeySet.add(s);const i=(g=(u=(c=this.router)==null?void 0:c.currentRoute)==null?void 0:u.value)==null?void 0:g.name;if(i){const l=`${i}.${s}`,h=n(l);if(h!==l&&!r.isEmpty(h))return h;{const d=`common.${s}`,y=n(d);return y!==d?y:n(s,o)}}else return n(s,o)},globalThis.$i18nLogin=async s=>{this.setToken(O(s)),this.clearI18n(),await this.setLanguage(this.locale),location.reload()},globalThis.$i18nLogout=s=>{this.clearI18n(),location.reload()},globalThis.$deepScan=function(s){return s},globalThis.$clearI18n=this.clearI18n=()=>{f.namespace(`I18N_${r.toUpper(this.appCode)}`).clearAll()},globalThis.$changeLocale=this.changeLocale=this.i18n.global.changeLocale=async s=>{await this.setLanguage(s||this.locale)}}setToken(e){this.token=e,f.set("I18N_TOKEN",e)}async getLanguages(e=!1){const n=f.get("I18N_LANGUAGES");if(n&&!e)return n;{const s=await D({baseUrl:this.baseUrl,appCode:this.appCode,token:this.token});if(s.data){const o=r.get(s.data,"retVal");return f.set("I18N_LANGUAGES",o),o}}}async setLanguage(e="zh-CN"){const n="I18N_MESSAGES_COMMON_"+e;let s=f.get(n);if(console.log("commonMessages",s),r.isEmpty(s)){const o=await N.get(`https://cdn.ihotel.cn/i18n_messages/${e}.json`);if(console.log("lang",o),o){const{data:i}=o;s=i,f.set(n,i)}}return new Promise(async(o,i)=>{const c=await z({baseUrl:this.baseUrl,appCode:this.appCode,language:e||this.locale,token:this.token,routerName:this.name});if(c){const u=B(c),g=r.assign({},s,r.get(this.messages,e),u);this.i18n.global.setLocaleMessage(e,g)}this.locale=e,this.i18n.global.locale.value=e,f.set("I18N_LANGUAGE",e),o(!0)})}createModal(e){const n=$();return n.on("closeModal",s=>{this.configInstance=null}),t.createApp(Q,{appCode:this.appCode,router:this.router,token:this.token,setLanguage:this.setLanguage.bind(this,this.locale),name:e||this.name,translationKeys:this.translationKeys,loginRouteName:this.loginRouteName,loginTranslationKeys:this.loginTranslationKeys,login:this.login,baseUrl:this.baseUrl,emitter:n}).use(S).use(te).mount(document.createElement("div"))}install(e,n={}){e.use(S,{i18n:this.i18n}),e.use(this.i18n),e.component("i18n-earth",Z)}}p.I18n=k,p.default=k,Object.defineProperties(p,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gc_i18n",
3
- "version": "1.3.3",
3
+ "version": "1.3.4",
4
4
  "type": "module",
5
5
  "main": "./lib/gc_i18n.umd.js",
6
6
  "module": "./lib/gc_i18n.es.js",
package/packages/index.js CHANGED
@@ -269,16 +269,19 @@ class I18n {
269
269
  }
270
270
  }
271
271
  }
272
- async setLanguage(language) {
273
- let commonMessages = store2.get("I18N_MESSAGES_COMMON_" + language);
274
- if (!commonMessages) {
275
- const res = await axios.get(
272
+ async setLanguage(language = "zh-CN") {
273
+ const commonMessagesKey = "I18N_MESSAGES_COMMON_" + language;
274
+ let commonMessages = store2.get(commonMessagesKey);
275
+ console.log("commonMessages", commonMessages);
276
+ if (_.isEmpty(commonMessages)) {
277
+ const lang = await axios.get(
276
278
  `https://cdn.ihotel.cn/i18n_messages/${language}.json`
277
279
  );
278
- const { data } = res;
279
- if (res.status === 200) {
280
+ console.log("lang", lang);
281
+ if (lang) {
282
+ const { data } = lang;
280
283
  commonMessages = data;
281
- store2.set("I18N_MESSAGES_COMMON_" + language, data);
284
+ store2.set(commonMessagesKey, data);
282
285
  }
283
286
  }
284
287