冲突修改
This commit is contained in:
		
						commit
						4dda9cae91
					
				| @ -1,6 +1,5 @@ | ||||
| import request from "../utils/Request" | ||||
| import tempRequest from '../common/utils/tempRequest' | ||||
| import http from "@ohos.net.http" | ||||
| import request from '../utils/Request' | ||||
| import http from '@ohos.net.http' | ||||
| 
 | ||||
| /** | ||||
|  * 照片比对 | ||||
|  | ||||
| @ -1,101 +0,0 @@ | ||||
| /** | ||||
|  * 静默安装 | ||||
|  * 事前准备:打包、放在rawFile文件夹下 | ||||
|  */ | ||||
| import installer from '@ohos.bundle.installer'; | ||||
| // @ts-ignore
 | ||||
| // import { BusinessError } from '@ohos.base';
 | ||||
| import fs from '@ohos.file.fs'; | ||||
| import buffer from '@ohos.buffer'; | ||||
| 
 | ||||
| let TAG = 'APPInstall-' | ||||
| // let context = getContext(this) as common.UIAbilityContext;
 | ||||
| const context=AppStorage.get('context') | ||||
| let filesDir = context.filesDir; | ||||
| 
 | ||||
| 
 | ||||
| let installParam: installer.InstallParam = { | ||||
|   userId: 100, | ||||
|   isKeepData: false, | ||||
|   installFlag: 1, | ||||
| }; | ||||
| 
 | ||||
| export default class AppInstaller { | ||||
|   // hap包沙箱路径
 | ||||
|   static hapFilePaths: Array<string> | ||||
|   // hap包名
 | ||||
|   static hapName: string = '' | ||||
|   // 待卸载应用名
 | ||||
|   static bundleName: string = '' | ||||
| 
 | ||||
|   constructor() { | ||||
| 
 | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|    * 从rawFile向沙箱路径复制文件 | ||||
|    * @param name:待安装的hap包名 | ||||
|    */ | ||||
|   async FromRawToBox(name: string) { | ||||
| 
 | ||||
|     let file = filesDir + '/' + name; | ||||
|     AppInstaller.hapFilePaths = [file] | ||||
|     try { | ||||
|       fs.access(file).then((res: boolean) => { | ||||
|         if (res) { | ||||
|           console.info(TAG + "file exists"); | ||||
|         } else { | ||||
|           let sss = fs.createStreamSync(file, "w+"); //没有会创建一个空的
 | ||||
|           sss.closeSync(); | ||||
| 
 | ||||
|           //获取rawfile下hap包
 | ||||
|           let uint8Array: Uint8Array = context.resourceManager.getRawFileContentSync(name); | ||||
|           let bf | ||||
|           try { | ||||
|             bf = buffer.from(uint8Array).buffer; | ||||
|           } catch (error) { | ||||
|             console.log('buffererror', error) | ||||
|           } | ||||
| 
 | ||||
|           // 打开文件
 | ||||
|           const fsOpen = | ||||
|             fs.openSync(file, fs.OpenMode.READ_WRITE | fs.OpenMode.READ_ONLY | fs.OpenMode.CREATE | fs.OpenMode.TRUNC) | ||||
| 
 | ||||
|           // 写入文件
 | ||||
|           let destFile = fs.writeSync(fsOpen.fd, bf); | ||||
|           console.info(TAG + 'write successfully!') | ||||
|           // 关闭文件
 | ||||
|           fs.close(destFile) | ||||
|         } | ||||
|       }).catch((err) => { | ||||
|         console.error("access failed with error message: " + err.message + ", error code: " + err.code); | ||||
|       }); | ||||
|     } catch (err) { | ||||
|       console.log(err) | ||||
|     } | ||||
| 
 | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|    * 安装hap包 | ||||
|    * @param src:hap包沙箱路径 | ||||
|    */ | ||||
|   async SlientInstaller(src: string) { | ||||
|     let hapFilePaths = [src] | ||||
|     try { | ||||
|       const data = await installer.getBundleInstaller().then((data: installer.BundleInstaller) => { | ||||
|         data.install(hapFilePaths, installParam) | ||||
|           .then((data: void) => { | ||||
|             console.info(TAG + 'install successfully: ' + JSON.stringify(data)); | ||||
|           }).catch((error) => { | ||||
|           console.error(TAG + 'install failed:' + error.message); | ||||
|         }); | ||||
|       }).catch((error) => { | ||||
|         console.error(TAG + 'getBundleInstaller failed. Cause: ' + error.message); | ||||
|       }); | ||||
|     } catch (error) { | ||||
|       // let message = (error as BusinessError).message;
 | ||||
|       console.error('getBundleInstaller failed. Cause: ' + error); | ||||
|     } | ||||
|   } | ||||
| } | ||||
| @ -1,96 +0,0 @@ | ||||
| import Prompt from '@system.prompt'; | ||||
| import http from '@ohos.net.http'; | ||||
| 
 | ||||
| enum RequestMethod { | ||||
|   OPTIONS = "OPTIONS", | ||||
|   GET = "GET", | ||||
|   HEAD = "HEAD", | ||||
|   POST = "POST", | ||||
|   PUT = "PUT", | ||||
|   DELETE = "DELETE", | ||||
|   TRACE = "TRACE", | ||||
|   CONNECT = "CONNECT" | ||||
| } | ||||
| 
 | ||||
| const BaseUrl = "" | ||||
| 
 | ||||
| interface Response { | ||||
|   code: number, | ||||
|   data: any, | ||||
|   msg: string | ||||
| } | ||||
| 
 | ||||
| export async function request<T>( | ||||
|   url: string, | ||||
|   config: { | ||||
|     method: string; | ||||
|     params?: any; | ||||
|     data?: any | ||||
| 
 | ||||
|     [key: string]: any | ||||
|   } | ||||
| ): Promise<T> { | ||||
|   const httpRequest = http.createHttp(); | ||||
|   return new Promise((resolve, reject) => { | ||||
|     console.info("start request url:  ", url, "request params: ", JSON.stringify(config.params || config.data || {})) | ||||
|     httpRequest.request(BaseUrl + url, | ||||
|       { | ||||
|         method: config.method as RequestMethod, | ||||
|         header: { | ||||
|           ...config.header, | ||||
|         }, | ||||
|         extraData: { | ||||
|           ...(config.params || {}), | ||||
|           ...(config.data || {}) | ||||
|         }, | ||||
|         expectDataType: http.HttpDataType.OBJECT, | ||||
|         connectTimeout: 60000, //超时时间 | ||||
|       }).then(async (data) => { | ||||
|       let result = data.result as Response | ||||
|       if (result.code === 1) { | ||||
|         console.info("success request url: ", url) | ||||
|         console.info(JSON.stringify(result)) | ||||
|         resolve(data.result as T) | ||||
|       } else if (result.code === 401) { | ||||
|         // console.error("401 request", url) | ||||
|         // let user = await PreferenceUtils.getUserModel() | ||||
|         // if (user?.isLogin) { | ||||
|         //   userLoginUsingPost({ | ||||
|         //     account: user.account, | ||||
|         //     psd: user.password, | ||||
|         //   }).then(res => { | ||||
|         //     let newUser: UserModel = new UserModel(res.data) | ||||
|         //     newUser.account = user.account | ||||
|         //     newUser.password = user.password | ||||
|         //     newUser.isLogin = true | ||||
|         //     PreferenceUtils.writeUserData(newUser) | ||||
|         //     request(url, config) | ||||
|         //   }).catch(() => { | ||||
|         //     PreferenceUtils.writeUserData(new UserModel()) | ||||
|         //     if (router.getState().name !== "Login") { | ||||
|         //       router.pushUrl({ url: "pages/Login" }) | ||||
|         //     } | ||||
|         //   }) | ||||
|         // } else { | ||||
|         //   PreferenceUtils.writeUserData(new UserModel()) | ||||
|         //   if (router.getState().name !== "Login") { | ||||
|         //     router.pushUrl({ url: "pages/Login" }) | ||||
|         //   } | ||||
|         // } | ||||
|       } else { | ||||
|         console.error("error request url: ", url) | ||||
|         console.error(result.msg) | ||||
|         reject(result.msg) | ||||
|         Prompt.showToast({ | ||||
|           message: result.msg, | ||||
|           duration: 2000, | ||||
|         }) | ||||
|       } | ||||
|     }).catch((err) => { | ||||
|       console.error("error request url: ", BaseUrl + url) | ||||
|       console.error(err) | ||||
|       reject(err) | ||||
|     }) | ||||
| 
 | ||||
|   }); | ||||
| } | ||||
| @ -1,255 +0,0 @@ | ||||
| import http from '@ohos.net.http'; | ||||
| import convertxml from '@ohos.convertxml'; | ||||
| import prompt from '@ohos.prompt'; | ||||
| import { tcpUtil } from './TcpRequest'; | ||||
| import Prompt from '@system.prompt'; | ||||
| import tempRequest from './tempRequest'; | ||||
| 
 | ||||
| 
 | ||||
| export default async function request<T>(req: any): Promise<T> { | ||||
|   return tempRequest(req) | ||||
|   return new Promise((resolve, reject) => { | ||||
|     let {url,params = {},data = {},xml,method = 'get',host,isNewCenter = false, timeout} = req; | ||||
|     try { | ||||
|       const options = { | ||||
|         method: http.RequestMethod[method.toUpperCase()], | ||||
|         header: { | ||||
|           'Content-Type': xml ? 'text/xml' : 'application/json' | ||||
|         }, | ||||
|         extraData: xml ? data : JSON.stringify(data), | ||||
|       } | ||||
|       let paramsStr = Reflect.ownKeys(params).reduce((p: string, n: string) => (`${p}${n}=${params[n]}&`), '?') || ''; | ||||
|       paramsStr = paramsStr.toString(); | ||||
|       paramsStr = paramsStr.substring(0, paramsStr.length - 1) | ||||
|       let baseUrl = host ? host : AppStorage.get('host') | ||||
|       console.log('响应头地址1' + baseUrl, url, options.extraData.length) | ||||
| 
 | ||||
|       tcpUtil.request(`${baseUrl}${url}${paramsStr}`, { | ||||
|         method: options.method, | ||||
|         data: xml ? data : JSON.stringify(data), | ||||
|         type: xml ? 1 : 0, | ||||
|         contentType: xml ? 'text/xml' : 'application/json', | ||||
|         timeout: timeout || 90000 | ||||
|       }, (data) => { | ||||
|         try { | ||||
|           console.log(JSON.stringify(data)) | ||||
|           const result = JSON.parse(JSON.stringify(data)) | ||||
|           console.log('响应头地址' + JSON.stringify(result)) | ||||
|           let res: any = xml ? xmlToJson(result, url) : result; | ||||
|           console.log('响应头地址 xml 后 res' + JSON.stringify(res)) | ||||
|           console.log('响应头地址 xml 后 res 类型', typeof res) | ||||
| 
 | ||||
|           let resObj = null; | ||||
|           if (typeof res === "string") { | ||||
|             res = JSON.parse(res) | ||||
|           } | ||||
|           //处理中心服务code
 | ||||
|           if (res.Envelope) { | ||||
|             const msgXml = res.Envelope.Body.writeObjectOutResponse.return; | ||||
|             const dd = handleCenterCode(msgXml, isNewCenter); | ||||
|             // @ts-ignore
 | ||||
|             resolve(dd) | ||||
|             return | ||||
|           } | ||||
| 
 | ||||
|           if (!xml) { | ||||
|             if (res.head.resultCode === '0') { | ||||
|               resolve(res) | ||||
|               return | ||||
|             } else { | ||||
|               const resultMessage = res?.body?.resultMessage || res?.head?.resultMessage | ||||
|               prompt.showToast({ | ||||
|                 message: decodeURIComponent(resultMessage), | ||||
|                 duration: 3000 | ||||
|               }); | ||||
|               reject(false) | ||||
|             } | ||||
|           } | ||||
|           for (let i in res) { | ||||
|             resObj = res[i].head | ||||
|           } | ||||
|           console.info('res in request' + url + JSON.stringify(resObj)) | ||||
|           if (resObj.resultCode === '0') { | ||||
|             resolve(res) | ||||
|             return | ||||
|           } else { | ||||
|             Prompt.showToast({ | ||||
|               message: decodeURIComponent(resObj.resultMessage), | ||||
|               duration: 3000 | ||||
|             }); | ||||
|             reject(res) | ||||
|           } | ||||
|         } catch (e) { | ||||
|           reject(e) | ||||
|           console.log("http parse error: ", JSON.stringify(e)) | ||||
|         } | ||||
| 
 | ||||
|       }, (error) => { | ||||
|         console.log("req timeout", JSON.stringify(error)) | ||||
|         console.log("req timeout url", url) | ||||
|         if (!error || !(error?.message)) { | ||||
|           reject({ | ||||
|             code: -1 | ||||
|           }) | ||||
|         } | ||||
|         const code = error?.code; | ||||
|         Prompt.showToast({ | ||||
|           message: error?.message, | ||||
|           duration: 5000 | ||||
|         }); | ||||
|         switch (code) { | ||||
|         //断网
 | ||||
|           case 2300007: | ||||
|             reject({ | ||||
|               code: 2300007 | ||||
|             }) | ||||
|             break; | ||||
|         // 超时
 | ||||
|           case 2300028: | ||||
|             reject({ | ||||
|               code: 2300028 | ||||
|             }) | ||||
|             break; | ||||
|           default: | ||||
|             reject(error) | ||||
|         } | ||||
|         Prompt.showToast({ | ||||
|           message: JSON.stringify(error), | ||||
|           duration: 3000 | ||||
|         }); | ||||
|       }) | ||||
|     } catch (e) { | ||||
|       console.info('test-error' + url + ' error:resp: ' + JSON.stringify(e)) | ||||
| 
 | ||||
|     } | ||||
|   }) | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| //xml格式转JSON
 | ||||
| function xmlToJson(result, url) { | ||||
|   console.log("xmlToJson begin", url); | ||||
|   let xmlOptions = { | ||||
|     trim: false, | ||||
|     declarationKey: "_declaration", | ||||
|     instructionKey: "_instruction", | ||||
|     attributesKey: "_attributes", | ||||
|     textKey: "_text", | ||||
|     cdataKey: "_cdata", | ||||
|     doctypeKey: "_doctype", | ||||
|     commentKey: "_comment", | ||||
|     parentKey: "_parent", | ||||
|     typeKey: "_type", | ||||
|     nameKey: "_name", | ||||
|     elementsKey: "_elements", | ||||
|     "skipPreprocess": true | ||||
|   } | ||||
| 
 | ||||
|   let strXml = result.toString(); | ||||
|   let conv = new convertxml.ConvertXML(); | ||||
| 
 | ||||
|   console.log("xmlToJson result.length = " + result.length); | ||||
|   console.log("xmlToJson result content = " + result); | ||||
|   // @ts-ignore
 | ||||
|   let {_elements:xmlArr} = conv.convertToJSObject(strXml, xmlOptions); | ||||
|   console.log("xmlToJson deeml begin"); | ||||
|   let res = deeml(xmlArr); | ||||
|   console.log("xmlToJson end", url); | ||||
|   return res | ||||
| } | ||||
| 
 | ||||
| //处理中心服务code
 | ||||
| function handleCenterCode(msgXml, isNewCenter) { | ||||
|   //新监管
 | ||||
|   if (isNewCenter) { | ||||
|     const msg = JSON.parse(msgXml); | ||||
|     const result = msg?.data[0]?.result; | ||||
|     if (result) { | ||||
|       const {code,message,retval} = result | ||||
|       if (code != '1') { | ||||
|         const rMessage = decodeURIComponent(message as string) | ||||
|         prompt.showToast({ | ||||
|           message: rMessage, | ||||
|           duration: 3000 | ||||
|         }); | ||||
|         return { code, message } | ||||
|       } else { | ||||
|         return { code, keystr: retval } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   //正则匹配code message字段
 | ||||
|   const [code, message, keystr] = [/<code>(.*)<\/code>/i, /<message>(.*)<\/message>/i, /<keystr>(.*)<\/keystr>/i].map(pattern => { | ||||
|     const patternArr = pattern.exec(msgXml); | ||||
|     return patternArr && patternArr[1] | ||||
|   }); | ||||
| 
 | ||||
|   if (code != '1') { | ||||
|     prompt.showToast({ | ||||
|       message: decodeURIComponent(message as string), | ||||
|       duration: 3000 | ||||
|     }); | ||||
|     return { code, message: decodeURIComponent(message) } | ||||
|   } else { | ||||
|     return { code, keystr, message } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| //JSON转xml格式
 | ||||
| const deeml = (elements, _name?) => { | ||||
|   const json = {} | ||||
| 
 | ||||
|   elements.map(ele => { | ||||
|     const _elements = ele._elements | ||||
|     if (ele._type === 'element') { | ||||
|       if (_elements == undefined) { | ||||
|         return | ||||
|       } | ||||
|       const thisJson = json[ele._name] | ||||
|       if (_elements && _elements.length === 1 && _elements[0]._type === 'text') { | ||||
|         // 如果值存在了
 | ||||
|         if (thisJson) { | ||||
|           handleCommonArr(_elements[0]._text) | ||||
|         } else { | ||||
|           json[ele._name] = _elements[0]._text | ||||
|         } | ||||
|       } else { | ||||
|         if (thisJson) { | ||||
|           handleCommonArr(deeml(ele._elements, ele._name)) | ||||
|         } else { | ||||
|           json[ele._name] = deeml(ele._elements, ele._name) | ||||
|         } | ||||
|       } | ||||
| 
 | ||||
|       //通用处理重复标签
 | ||||
|       function handleCommonArr(obj) { | ||||
|         if (thisJson) { | ||||
|           if (Array.isArray(thisJson)) { | ||||
|             json[ele._name].push(obj) | ||||
|           } else { | ||||
|             json[ele._name] = [json[ele._name], obj] | ||||
|           } | ||||
|         } else { | ||||
|           json[ele._name] = obj | ||||
|         } | ||||
|       } | ||||
| 
 | ||||
|       0 | ||||
|     } else { | ||||
|       //标签上有属性
 | ||||
|       if (ele._attributes) { | ||||
|         json[_name] = { | ||||
|           value: ele._text, | ||||
|           attributes: ele.__attributes | ||||
|         } | ||||
|       } | ||||
|     } | ||||
| 
 | ||||
|   }); | ||||
|   return json | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| @ -1,253 +0,0 @@ | ||||
| import http from '@ohos.net.http'; | ||||
| import convertxml from '@ohos.convertxml'; | ||||
| import prompt from '@ohos.prompt' | ||||
| import { sendGreen } from '../../pages/judgeSDK/utils/judgeCommon'; | ||||
| import { GlobalConfig } from '../../config/index' | ||||
| import FileUtil from '../../common/utils/File'; | ||||
| import { dateFormat } from '../utils/tools' | ||||
| import Prompt from '@system.prompt'; | ||||
| 
 | ||||
| 
 | ||||
| /** | ||||
|  * @author: Renjun Su | ||||
|  * @date: 2023/2/20 | ||||
|  * @desc 接口请求封装 | ||||
|  * @param {method} | ||||
|  * @param {xml} xml请求的数据 xml是字符串 | ||||
|  * @param {data} post请求的数据 | ||||
|  * @param {params} get请求的数据 | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| export default async function tempRequest<T>(req: any): Promise<T> { | ||||
|   return new Promise((resolve, reject) => { | ||||
|     let httpRequest = http.createHttp(); | ||||
|     const { url, params = {}, data = {}, xml, method = 'get', host, isNewCenter = false } = req; | ||||
|     try { | ||||
|       const options = { | ||||
|         method: http.RequestMethod[method.toUpperCase()], | ||||
|         header: { | ||||
|           'Content-Type': xml ? 'text/xml' : 'application/json' | ||||
|         }, | ||||
|         extraData: xml ? data : JSON.stringify(data), | ||||
|         connectTimeout: 15 * 1000 | ||||
|       } | ||||
|       let paramsStr = Reflect.ownKeys(params).reduce((p: string, n: string) => (`${p}${n}=${params[n]}&`), '?') || ''; | ||||
|       paramsStr = paramsStr.toString(); | ||||
|       paramsStr = paramsStr.substring(0, paramsStr.length - 1) | ||||
|       let baseUrl = host ? host : AppStorage.get('host') | ||||
|       // let baseUrl=host?config.csptHost:config.host'
 | ||||
|       console.log('响应头地址1' + baseUrl, url, options.extraData.length) | ||||
|       // const {result,responseCode} = await
 | ||||
|       httpRequest.request(`${baseUrl}${url}${paramsStr}`, { | ||||
|         ...options | ||||
|       }) | ||||
|         .then(async (data) => { | ||||
|           const result = data.result | ||||
|           console.log('响应头地址' + JSON.stringify(result)) | ||||
|           let res: any = xml ? xmlToJson(result, url) : result; | ||||
|           console.log('响应头地址' + JSON.stringify(res)) | ||||
| 
 | ||||
|           let resObj = null; | ||||
|           if (typeof res === "string") { | ||||
|             res = JSON.parse(res) | ||||
|           } | ||||
|           //处理中心服务code
 | ||||
|           if (res.Envelope) { | ||||
|             const msgXml = res.Envelope.Body.writeObjectOutResponse.return; | ||||
|             const dd = handleCenterCode(msgXml, isNewCenter); | ||||
|             httpRequest.destroy(); | ||||
|             // @ts-ignore
 | ||||
|             resolve(dd) | ||||
|             return | ||||
|           } | ||||
| 
 | ||||
|           if (!xml) { | ||||
|             if (res.head.resultCode === '0') { | ||||
|               httpRequest.destroy(); | ||||
|               resolve(res) | ||||
|               return | ||||
|             } else { | ||||
|               const resultMessage = res?.body?.resultMessage || res?.head?.resultMessage | ||||
|               Prompt.showToast({ | ||||
|                 message: decodeURIComponent(resultMessage), | ||||
|                 duration: 3000 | ||||
|               }); | ||||
|               httpRequest.destroy(); | ||||
|               reject(false) | ||||
|             } | ||||
|           } | ||||
|           for (let i in res) { | ||||
|             resObj = res[i].head | ||||
|           } | ||||
|           console.info('jiangsong:res in request' + url + JSON.stringify(resObj)) | ||||
|           if (resObj.resultCode === '0') { | ||||
|             httpRequest.destroy(); | ||||
|             resolve(res) | ||||
|             return | ||||
|           } else { | ||||
|             Prompt.showToast({ | ||||
|               message: decodeURIComponent(resObj.resultMessage), | ||||
|               duration: 3000 | ||||
|             }); | ||||
|             httpRequest.destroy(); | ||||
|             reject(res) | ||||
|           } | ||||
|         }).catch(Error => { | ||||
|           console.info('test-error0' + url + ' error:resp: ' + JSON.stringify(Error.message)) | ||||
|           Prompt.showToast({ | ||||
|             message: Error?.message, | ||||
|             duration: 5000 | ||||
|           }); | ||||
|           reject(Error) | ||||
|         }) | ||||
| 
 | ||||
|     } catch (e) { | ||||
|       console.info('test-error' + url + ' error:resp: ' + JSON.stringify(e)) | ||||
|       if (!e || !(e?.message)) { | ||||
|         httpRequest.destroy(); | ||||
|         reject({ | ||||
|           code: -1 | ||||
|         }) | ||||
|       } | ||||
|       Prompt.showToast({ | ||||
|         message: e?.message, | ||||
|         duration: 5000 | ||||
|       }); | ||||
|       reject({ | ||||
|         code: e.code | ||||
|       }) | ||||
| 
 | ||||
|     } | ||||
|   }) | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| //xml格式转JSON
 | ||||
| function xmlToJson(result, url) { | ||||
|   console.log("xmlToJson begin", url); | ||||
|   let xmlOptions = { | ||||
|     trim: false, | ||||
|     declarationKey: "_declaration", | ||||
|     instructionKey: "_instruction", | ||||
|     attributesKey: "_attributes", | ||||
|     textKey: "_text", | ||||
|     cdataKey: "_cdata", | ||||
|     doctypeKey: "_doctype", | ||||
|     commentKey: "_comment", | ||||
|     parentKey: "_parent", | ||||
|     typeKey: "_type", | ||||
|     nameKey: "_name", | ||||
|     elementsKey: "_elements", | ||||
|     "skipPreprocess": true | ||||
|   } | ||||
| 
 | ||||
|   let strXml = result.toString(); | ||||
|   let conv = new convertxml.ConvertXML(); | ||||
| 
 | ||||
|   console.log("xmlToJson result.length = " + result.length); | ||||
|   console.log("xmlToJson result content = " + result); | ||||
|   // @ts-ignore
 | ||||
|   let { _elements: xmlArr } = conv.convertToJSObject(strXml, xmlOptions); | ||||
|   console.log("xmlToJson deeml begin"); | ||||
|   let res = deeml(xmlArr); | ||||
|   console.log("xmlToJson end", url); | ||||
|   return res | ||||
| } | ||||
| 
 | ||||
| //处理中心服务code
 | ||||
| function handleCenterCode(msgXml, isNewCenter) { | ||||
|   //新监管
 | ||||
|   if (isNewCenter) { | ||||
|     const msg = JSON.parse(msgXml); | ||||
|     const result = msg?.data[0]?.result; | ||||
|     if (result) { | ||||
|       const { code, message, retval } = result | ||||
|       if (code != '1') { | ||||
|         const rMessage = decodeURIComponent(message as string) | ||||
|         Prompt.showToast({ | ||||
|           message: rMessage, | ||||
|           duration: 3000 | ||||
|         }); | ||||
|         return { code, message } | ||||
|       } else { | ||||
|         return { code, keystr: retval } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   //正则匹配code message字段
 | ||||
|   const [code, message, keystr] = [/<code>(.*)<\/code>/i, /<message>(.*)<\/message>/i, /<keystr>(.*)<\/keystr>/i].map(pattern => { | ||||
|     const patternArr = pattern.exec(msgXml); | ||||
|     return patternArr && patternArr[1] | ||||
|   }); | ||||
| 
 | ||||
|   if (code != '1') { | ||||
|     prompt.showToast({ | ||||
|       message: decodeURIComponent(message as string), | ||||
|       duration: 3000 | ||||
|     }); | ||||
| 
 | ||||
|     return { code, message: decodeURIComponent(message) } | ||||
|   } else { | ||||
|     return { code, keystr, message } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| //JSON转xml格式
 | ||||
| const deeml = (elements, _name?) => { | ||||
|   const json = {} | ||||
| 
 | ||||
|   elements.map(ele => { | ||||
|     const _elements = ele._elements | ||||
|     if (ele._type === 'element') { | ||||
|       if (_elements == undefined) { | ||||
|         return | ||||
|       } | ||||
|       const thisJson = json[ele._name] | ||||
|       if (_elements && _elements.length === 1 && _elements[0]._type === 'text') { | ||||
|         // 如果值存在了
 | ||||
|         if (thisJson) { | ||||
|           handleCommonArr(_elements[0]._text) | ||||
|         } else { | ||||
|           json[ele._name] = _elements[0]._text | ||||
|         } | ||||
|       } else { | ||||
|         if (thisJson) { | ||||
|           handleCommonArr(deeml(ele._elements, ele._name)) | ||||
|         } else { | ||||
|           json[ele._name] = deeml(ele._elements, ele._name) | ||||
|         } | ||||
|       } | ||||
| 
 | ||||
|       //通用处理重复标签
 | ||||
|       function handleCommonArr(obj) { | ||||
|         if (thisJson) { | ||||
|           if (Array.isArray(thisJson)) { | ||||
|             json[ele._name].push(obj) | ||||
|           } else { | ||||
|             json[ele._name] = [json[ele._name], obj] | ||||
|           } | ||||
|         } else { | ||||
|           json[ele._name] = obj | ||||
|         } | ||||
|       } | ||||
| 
 | ||||
|       0 | ||||
|     } else { | ||||
|       //标签上有属性
 | ||||
|       if (ele._attributes) { | ||||
|         json[_name] = { | ||||
|           value: ele._text, | ||||
|           attributes: ele.__attributes | ||||
|         } | ||||
|       } | ||||
|     } | ||||
| 
 | ||||
|   }); | ||||
|   return json | ||||
| }; | ||||
| 
 | ||||
| @ -292,4 +292,3 @@ export function debounce(fn, delay) { | ||||
|     timer = setTimeout(fn, delay); | ||||
|   } | ||||
| } | ||||
| ; | ||||
| @ -7,8 +7,7 @@ export default struct TopLogo { | ||||
|   @State ratio: number = 850 / 960 | ||||
|   @State timeText: string = ''; | ||||
|   @Link outFlag: boolean; //返回按钮触发 | ||||
|   private timer: any = null; | ||||
|   private vocObj = null; | ||||
|   private timer: number = -1; | ||||
| 
 | ||||
|   constructor() { | ||||
|     super() | ||||
| @ -65,7 +64,6 @@ export default struct TopLogo { | ||||
| 
 | ||||
|   aboutToDisappear() { | ||||
|     clearInterval(this.timer) | ||||
|     console.log('jiangsong: topLogo aboutToDisappear222222222') | ||||
|   } | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -1,175 +1,232 @@ | ||||
| import {MarkRule} from '../../judgeSDK/api/judgeSDK' | ||||
| import { MarkRule } from '../../judgeSDK/api/judgeSDK'; | ||||
| import EndPoPup from './EndPopup'; | ||||
| 
 | ||||
| interface SEL{ | ||||
|   fontColor:string | ||||
|   bgColor:string | ||||
| interface SEL { | ||||
|   fontColor: string | ||||
|   bgColor: string | ||||
| } | ||||
| 
 | ||||
| @Component | ||||
| export default struct  DeductedPopup { | ||||
| export default struct DeductedPopup { | ||||
|   @State fontSize: number = 30 | ||||
|   @State unselected: SEL = { fontColor: '#000000', bgColor: '#CCC4B8' } | ||||
|   @State selected: SEL = { fontColor: '#FFAD33', bgColor: '#26231E' } | ||||
|   @State currentIndex: number = 0 | ||||
|   @State currentPageIndex: number = 0 | ||||
|   //通用评判扣分 | ||||
|   @State currentUniversalPageIndex: number = 0; | ||||
|   @State universalMarkRules: MarkRule[] = [] | ||||
|   @State manualMarkRules: MarkRule[] = [] | ||||
|   @State lineBg: Array<string> = ['#4D4136', '#26231E'] | ||||
|   @State selectedLine: number = undefined | ||||
|   @State endPopupVisible: boolean = false | ||||
|   @State selectedLineStyle: SEL = { | ||||
|     fontColor: '#FFF', | ||||
|     bgColor: '#B36E00' | ||||
|   } | ||||
|   @Prop defaultTabIndex: number = 0 | ||||
|   @Prop @Watch('changeCurrentItems') currentItems: string[] = []; | ||||
|   @State preCurrentItemsLength: number = 0 | ||||
|   private markRules: MarkRule[] = [] | ||||
| 
 | ||||
|   constructor() { | ||||
|     super() | ||||
|   } | ||||
| 
 | ||||
|   @State fontSize:number = 30 | ||||
|   @State unselected:SEL = {fontColor:'#000000', bgColor:'#CCC4B8'} | ||||
|   @State selected:SEL =   {fontColor:'#FFAD33', bgColor:'#26231E'} | ||||
| 
 | ||||
|   @State currentIndex:number = 0 | ||||
|   @State currentPageIndex:number = 0 | ||||
|   //通用评判扣分 | ||||
|   @State currentUniversalPageIndex:number = 0; | ||||
|   private  markRules:MarkRule[] = [] | ||||
|   @State universalMarkRules:MarkRule[] = [] | ||||
|   @State manualMarkRules:MarkRule[] = [] | ||||
|   @State lineBg:Array<string> = ['#4D4136','#26231E'] | ||||
|   @State selectedLine:number = undefined | ||||
|   @State endPopupVisible:boolean = false | ||||
|   private  closePopup:Function = ()=> {} | ||||
|   private  confirmMark:Function = (itemno:number,serial:string) => {} | ||||
|   @State selectedLineStyle:SEL = { | ||||
|     fontColor:'#FFF', | ||||
|     bgColor:'#B36E00' | ||||
|   } | ||||
| 
 | ||||
|   @Prop defaultTabIndex:number = 0 | ||||
|   @Prop @Watch('changeCurrentItems') currentItems:string[] = []; | ||||
|   @State preCurrentItemsLength:number = 0 | ||||
| 
 | ||||
|   aboutToAppear(){ | ||||
|     //@ts-ignore | ||||
|     this.universalMarkRules = this.markRules.filter(item => (this.currentItems.includes(item.itemno) || this.currentItems.includes(item.itemno + ''))); | ||||
|   aboutToAppear() { | ||||
|     this.universalMarkRules = this.markRules.filter(item => (this.currentItems.includes(item.itemno.toString()) || | ||||
|     this.currentItems.includes(item.itemno + ''))); | ||||
|     this.currentIndex = this.defaultTabIndex | ||||
|     if(this.currentIndex == 1){ | ||||
|       this.universalMarkRules = this.markRules.filter(item => item.itemno == 20 ) | ||||
|     if (this.currentIndex == 1) { | ||||
|       this.universalMarkRules = this.markRules.filter(item => item.itemno == 20) | ||||
|     } | ||||
|     this.preCurrentItemsLength = this.currentItems.length | ||||
|   } | ||||
| 
 | ||||
|   changeCurrentItems(){ | ||||
|     if(this.currentItems?.length && (this.currentItems?.length >= this.preCurrentItemsLength)){ | ||||
|       //@ts-ignore | ||||
|       this.universalMarkRules = this.markRules.filter(item => (this.currentItems.includes(item.itemno) || this.currentItems.includes(item.itemno + ''))); | ||||
|   changeCurrentItems() { | ||||
|     if (this.currentItems?.length && (this.currentItems?.length >= this.preCurrentItemsLength)) { | ||||
|       this.universalMarkRules = this.markRules.filter(item => (this.currentItems.includes(item.itemno.toString()) || | ||||
|       this.currentItems.includes(item.itemno + ''))); | ||||
|       this.currentIndex = this.defaultTabIndex | ||||
|       if(this.currentIndex == 1){ | ||||
|         this.universalMarkRules = this.markRules.filter(item => item.itemno == 20 ) | ||||
|       if (this.currentIndex == 1) { | ||||
|         this.universalMarkRules = this.markRules.filter(item => item.itemno == 20) | ||||
|       } | ||||
|       this.preCurrentItemsLength = this.currentItems.length | ||||
|     }else{ | ||||
|     } else { | ||||
|       this.preCurrentItemsLength = 0 | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   //上一页 下一页 | ||||
|   goPage(typeIndex){ | ||||
|   goPage(typeIndex: number) { | ||||
|     const currentIndex = this.currentIndex | ||||
|     if(currentIndex){ | ||||
|     if (currentIndex) { | ||||
|       //通用评判 | ||||
|       typeIndex ? (this.currentUniversalPageIndex += 1) : (this.currentUniversalPageIndex -= 1) | ||||
|     }else{ | ||||
|     } else { | ||||
|       typeIndex ? (this.currentPageIndex += 1) : (this.currentPageIndex -= 1) | ||||
|     } | ||||
|     this.selectedLine = -1 | ||||
|   } | ||||
| 
 | ||||
|   //选中扣分项 | ||||
|   getSelectedLine(index){ | ||||
|     const {selectedLine,selectedLineStyle,lineBg} = this; | ||||
|     if(selectedLine === index){ | ||||
|       return selectedLineStyle.bgColor | ||||
|   getSelectedLine(index: number) { | ||||
|     // const { selectedLine, selectedLineStyle, lineBg } = this; | ||||
|     if (this.selectedLine === index) { | ||||
|       return this.selectedLineStyle.bgColor | ||||
|     } | ||||
|     if(index % 2 === 0){ | ||||
|       return lineBg[0] | ||||
|     }else{ | ||||
|       return lineBg[1] | ||||
|     if (index % 2 === 0) { | ||||
|       return this.lineBg[0] | ||||
|     } else { | ||||
|       return this.lineBg[1] | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   //获取当前页的数据 | ||||
|   getCurrentMarkRuleList(){ | ||||
|     const {currentIndex,currentUniversalPageIndex,currentPageIndex,markRules,universalMarkRules} = this; | ||||
|     if(currentIndex){ | ||||
|   getCurrentMarkRuleList() { | ||||
|     // const { currentIndex, currentUniversalPageIndex, currentPageIndex, markRules, universalMarkRules } = this; | ||||
|     if (this.currentIndex) { | ||||
|       //通用评判 | ||||
|       return universalMarkRules.slice(currentUniversalPageIndex*7,(currentUniversalPageIndex + 1)*7) | ||||
|     }else{ | ||||
|       return universalMarkRules.slice(currentPageIndex*7,(currentPageIndex + 1)*7) | ||||
|       return this.universalMarkRules.slice(this.currentUniversalPageIndex * 7, (this.currentUniversalPageIndex + 1) * 7) | ||||
|     } else { | ||||
|       return this.universalMarkRules.slice(this.currentPageIndex * 7, (this.currentPageIndex + 1) * 7) | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   build(){ | ||||
|     Column(){ | ||||
|       Column(){ | ||||
|         Column(){ | ||||
|           Row(){ | ||||
|             Row(){ | ||||
|               ForEach(['人工评判','通用评判'],(text,index)=>{ | ||||
|                 Row(){ | ||||
|                   Text(text).fontColor(index === this.currentIndex ? this.selected.fontColor : this.unselected.fontColor).fontSize(this.fontSize).fontWeight(500) | ||||
|   build() { | ||||
|     Column() { | ||||
|       Column() { | ||||
|         Column() { | ||||
|           Row() { | ||||
|             Row() { | ||||
|               ForEach(['人工评判', '通用评判'], (text: string, index) => { | ||||
|                 Row() { | ||||
|                   Text(text) | ||||
|                     .fontColor(index === this.currentIndex ? this.selected.fontColor : this.unselected.fontColor) | ||||
|                     .fontSize(this.fontSize) | ||||
|                     .fontWeight(500) | ||||
|                 } | ||||
|                 .width(140).height(60) | ||||
|                 .backgroundColor(index === this.currentIndex ? this.selected.bgColor: this.unselected.bgColor ).justifyContent(FlexAlign.Center).justifyContent(FlexAlign.Center) | ||||
|                 .borderRadius({topLeft:20,topRight:20}).margin({right:10}) | ||||
|                 .onClick(()=>{ | ||||
|                 .width(140) | ||||
|                 .height(60) | ||||
|                 .backgroundColor(index === this.currentIndex ? this.selected.bgColor : this.unselected.bgColor) | ||||
|                 .justifyContent(FlexAlign.Center) | ||||
|                 .justifyContent(FlexAlign.Center) | ||||
|                 .borderRadius({ topLeft: 20, topRight: 20 }) | ||||
|                 .margin({ right: 10 }) | ||||
|                 .onClick(() => { | ||||
|                   this.currentIndex = index; | ||||
|                   this.selectedLine = -1; | ||||
|                   if(index === 1) { | ||||
|                     this.universalMarkRules = this.markRules.filter(item => item.itemno == 20 ) | ||||
|                   }else{ | ||||
|                     //@ts-ignore | ||||
|                     this.universalMarkRules = this.markRules.filter(item => (this.currentItems.includes(item.itemno) || this.currentItems.includes(item.itemno+''))) | ||||
|                   if (index === 1) { | ||||
|                     this.universalMarkRules = this.markRules.filter(item => item.itemno == 20) | ||||
|                   } else { | ||||
|                     this.universalMarkRules = | ||||
|                       this.markRules.filter(item => (this.currentItems.includes(item.itemno.toString()) || | ||||
|                       this.currentItems.includes(item.itemno + ''))) | ||||
|                   } | ||||
|                 }) | ||||
|               }) | ||||
|             } | ||||
|             Row(){ | ||||
|               if( | ||||
|                 (Math.ceil(this.universalMarkRules.length / 7 - 1)) >= (this.currentIndex ? this.currentUniversalPageIndex: this.currentPageIndex) && | ||||
|                   (this.currentIndex ? this.currentUniversalPageIndex: this.currentPageIndex) > 0 | ||||
|               ){ | ||||
|                 Row(){ | ||||
|                   Image($rawfile(`judge/km3/zuo_nor.png`)).height(15).margin({left:20,top:0}) | ||||
|                   Text('上一页'){}.fontColor('#FFF').fontSize(this.fontSize) | ||||
|                 }.width(150).height(60).justifyContent(FlexAlign.Start).alignItems(VerticalAlign.Center).backgroundImage($rawfile(`judge/km3/button_nor.png`)).backgroundImageSize({width:'100%',height:'100%'}).margin({right:30}) | ||||
|                 .onClick(()=>{this.goPage(0)}) | ||||
| 
 | ||||
|             Row() { | ||||
|               if ( | ||||
|                 (Math.ceil(this.universalMarkRules.length / 7 - 1)) >= | ||||
|                   (this.currentIndex ? this.currentUniversalPageIndex : this.currentPageIndex) && | ||||
|                   (this.currentIndex ? this.currentUniversalPageIndex : this.currentPageIndex) > 0 | ||||
|               ) { | ||||
|                 Row() { | ||||
|                   Image($rawfile(`judge/km3/zuo_nor.png`)).height(15).margin({ left: 20, top: 0 }) | ||||
|                   Text('上一页') { | ||||
|                   }.fontColor('#FFF').fontSize(this.fontSize) | ||||
|                 } | ||||
|                 .width(150) | ||||
|                 .height(60) | ||||
|                 .justifyContent(FlexAlign.Start) | ||||
|                 .alignItems(VerticalAlign.Center) | ||||
|                 .backgroundImage($rawfile(`judge/km3/button_nor.png`)) | ||||
|                 .backgroundImageSize({ width: '100%', height: '100%' }) | ||||
|                 .margin({ right: 30 }) | ||||
|                 .onClick(() => { | ||||
|                   this.goPage(0) | ||||
|                 }) | ||||
|               } | ||||
| 
 | ||||
|               if( | ||||
|                 (Math.ceil(this.universalMarkRules.length / 7 - 1))  > (this.currentIndex ? this.currentUniversalPageIndex: this.currentPageIndex) | ||||
|               ){ | ||||
|                 Row(){ | ||||
|                   Text('下一页'){}.fontColor('#FFF').fontSize(this.fontSize).padding({left:30}) | ||||
|                   Image($rawfile(`judge/km3/you_nor.png`)).height(15).margin({right:6,top:0}) | ||||
|                 }.width(150).height(60).justifyContent(FlexAlign.Start).alignItems(VerticalAlign.Center).backgroundImage($rawfile(`judge/km3/button_nor.png`)).backgroundImageSize({width:'100%',height:'100%'}).margin({right:30}) | ||||
|                 .onClick(()=>{this.goPage(1)}) | ||||
|               if ( | ||||
|                 (Math.ceil(this.universalMarkRules.length / 7 - 1)) > | ||||
|                   (this.currentIndex ? this.currentUniversalPageIndex : this.currentPageIndex) | ||||
|               ) { | ||||
|                 Row() { | ||||
|                   Text('下一页') { | ||||
|                   }.fontColor('#FFF').fontSize(this.fontSize).padding({ left: 30 }) | ||||
| 
 | ||||
|                   Image($rawfile(`judge/km3/you_nor.png`)).height(15).margin({ right: 6, top: 0 }) | ||||
|                 } | ||||
|                 .width(150) | ||||
|                 .height(60) | ||||
|                 .justifyContent(FlexAlign.Start) | ||||
|                 .alignItems(VerticalAlign.Center) | ||||
|                 .backgroundImage($rawfile(`judge/km3/button_nor.png`)) | ||||
|                 .backgroundImageSize({ width: '100%', height: '100%' }) | ||||
|                 .margin({ right: 30 }) | ||||
|                 .onClick(() => { | ||||
|                   this.goPage(1) | ||||
|                 }) | ||||
|               } | ||||
| 
 | ||||
|               Row(){ | ||||
|                 Text('扣  分'){}.fontColor('#FFF').fontSize(this.fontSize).padding({left:35}) | ||||
|               }.width(140).height(60).justifyContent(FlexAlign.Start).alignItems(VerticalAlign.Center).backgroundImage($rawfile(`judge/km3/button_nor.png`)).backgroundImageSize({width:'100%',height:'100%'}) | ||||
|               .onClick(()=>{ | ||||
|               Row() { | ||||
|                 Text('扣  分') { | ||||
|                 }.fontColor('#FFF').fontSize(this.fontSize).padding({ left: 35 }) | ||||
|               } | ||||
|               .width(140) | ||||
|               .height(60) | ||||
|               .justifyContent(FlexAlign.Start) | ||||
|               .alignItems(VerticalAlign.Center) | ||||
|               .backgroundImage($rawfile(`judge/km3/button_nor.png`)) | ||||
|               .backgroundImageSize({ width: '100%', height: '100%' }) | ||||
|               .onClick(() => { | ||||
|                 this.endPopupVisible = true | ||||
|               }) | ||||
|             } | ||||
|           }.width('100%').justifyContent(FlexAlign.SpaceBetween) | ||||
|           Column(){ | ||||
|             ForEach(this.getCurrentMarkRuleList(),(item,index) => { | ||||
|               Row(){ | ||||
|                 Row(){ | ||||
|                   Text(`${item.markshow} (${item.markcatalog})`).fontColor('#FFF').fontSize(this.fontSize).fontWeight(600) | ||||
| 
 | ||||
|           Column() { | ||||
|             ForEach(this.getCurrentMarkRuleList(), (item: ESObject, index) => { | ||||
|               Row() { | ||||
|                 Row() { | ||||
|                   Text(`${item.markshow} (${item.markcatalog})`) | ||||
|                     .fontColor('#FFF') | ||||
|                     .fontSize(this.fontSize) | ||||
|                     .fontWeight(600) | ||||
|                 }.width(1000) | ||||
|                 Row(){ | ||||
| 
 | ||||
|                 Row() { | ||||
|                   Text(item.markreal + '').fontColor('#FFF').fontSize(this.fontSize).fontWeight(600) | ||||
|                 } | ||||
|               } | ||||
|               .width('100%').justifyContent(FlexAlign.SpaceBetween).alignItems(VerticalAlign.Center).constraintSize({minHeight:70}) | ||||
|               .padding({left:20,right:20}) | ||||
|               .width('100%') | ||||
|               .justifyContent(FlexAlign.SpaceBetween) | ||||
|               .alignItems(VerticalAlign.Center) | ||||
|               .constraintSize({ minHeight: 70 }) | ||||
|               .padding({ left: 20, right: 20 }) | ||||
|               .backgroundColor(this.getSelectedLine(index)) | ||||
|               .onClick(()=>{this.selectedLine = index}) | ||||
|               .onClick(() => { | ||||
|                 this.selectedLine = index | ||||
|               }) | ||||
|             }) | ||||
|           } | ||||
|         } | ||||
|       }.width(1200).height(620).position({x:30,y:315}).backgroundColor('#E6E3DF').padding({top:15,bottom:15,left:25,right:25}).borderRadius(20) | ||||
|       } | ||||
|       .width(1200) | ||||
|       .height(620) | ||||
|       .position({ x: 30, y: 315 }) | ||||
|       .backgroundColor('#E6E3DF') | ||||
|       .padding({ | ||||
|         top: 15, | ||||
|         bottom: 15, | ||||
|         left: 25, | ||||
|         right: 25 | ||||
|       }) | ||||
|       .borderRadius(20) | ||||
| 
 | ||||
|       // Row(){}.width(100).height(100).position({y:'85%',x:'50%'}).backgroundImage($rawfile('judge/km3/close_nor.png')).backgroundImageSize({width:'100%',height:'100%'}) | ||||
|       //结束考试弹窗 | ||||
|       if (this.endPopupVisible) { | ||||
| @ -179,12 +236,19 @@ export default struct  DeductedPopup { | ||||
|             this.endPopupVisible = false; | ||||
|           }, | ||||
|           confirmFn: async () => { | ||||
|             const index = this.currentIndex ? this.currentUniversalPageIndex: this.currentPageIndex; | ||||
|             const index = this.currentIndex ? this.currentUniversalPageIndex : this.currentPageIndex; | ||||
|             const mark = this.universalMarkRules[index * 7 + this.selectedLine] | ||||
|             mark && this.confirmMark(mark.itemno,mark.markserial) | ||||
|             mark && this.confirmMark(mark.itemno, mark.markserial) | ||||
|           } | ||||
|         }) | ||||
|       } | ||||
|     }.width('100%').height('100%').position({y:0}).onClick(()=>{this.closePopup()}) | ||||
|     }.width('100%').height('100%').position({ y: 0 }).onClick(() => { | ||||
|       this.closePopup() | ||||
|     }) | ||||
|   } | ||||
| 
 | ||||
|   private closePopup: Function = () => { | ||||
|   } | ||||
|   private confirmMark: Function = (itemno: number, serial: string) => { | ||||
|   } | ||||
| } | ||||
							
								
								
									
										0
									
								
								entry/src/main/ets/utils/Common.ets
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								entry/src/main/ets/utils/Common.ets
									
									
									
									
									
										Normal file
									
								
							
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user