diff --git a/WebSite/.browserslistrc b/WebSite/.browserslistrc new file mode 100644 index 0000000000000000000000000000000000000000..214388fe43cdfd7ce1c29cd3e401541ded620dba --- /dev/null +++ b/WebSite/.browserslistrc @@ -0,0 +1,3 @@ +> 1% +last 2 versions +not dead diff --git a/WebSite/.editorconfig b/WebSite/.editorconfig deleted file mode 100644 index 3454886e3a5743c9c3ab8ec8ac3547d3c9343a47..0000000000000000000000000000000000000000 --- a/WebSite/.editorconfig +++ /dev/null @@ -1,14 +0,0 @@ -# https://editorconfig.org -root = true - -[*] -charset = utf-8 -indent_style = space -indent_size = 2 -end_of_line = lf -insert_final_newline = true -trim_trailing_whitespace = true - -[*.md] -insert_final_newline = false -trim_trailing_whitespace = false diff --git a/WebSite/.env b/WebSite/.env new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/WebSite/.env.development b/WebSite/.env.development index 8f5856db1ce09e8f781d9138d249385058b47bac..df8158a7db50ce48ab8eb6a9a270d4b5059d62f0 100644 --- a/WebSite/.env.development +++ b/WebSite/.env.development @@ -1,14 +1 @@ -# just a flag -ENV = 'development' - -# base api -VUE_APP_BASE_API = '/dev-api' - -# vue-cli uses the VUE_CLI_BABEL_TRANSPILE_MODULES environment variable, -# to control whether the babel-plugin-dynamic-import-node plugin is enabled. -# It only does one thing by converting all import() to require(). -# This configuration can significantly increase the speed of hot updates, -# when you have a large number of pages. -# Detail: https://github.com/vuejs/vue-cli/blob/dev/packages/@vue/babel-preset-app/index.js - -VUE_CLI_BABEL_TRANSPILE_MODULES = true +VUE_APP_BASE_API = '/api' \ No newline at end of file diff --git a/WebSite/.env.mock b/WebSite/.env.mock new file mode 100644 index 0000000000000000000000000000000000000000..4e12c3ce0365b066be9c15d74790dabbb0b49f71 --- /dev/null +++ b/WebSite/.env.mock @@ -0,0 +1,2 @@ +NODE_ENV = mock +VUE_APP_BASE_API = '/api' \ No newline at end of file diff --git a/WebSite/.env.production b/WebSite/.env.production index 07d391eac87b44967ed8f9d65de38be589c3751d..df8158a7db50ce48ab8eb6a9a270d4b5059d62f0 100644 --- a/WebSite/.env.production +++ b/WebSite/.env.production @@ -1,6 +1 @@ -# just a flag -ENV = 'production' - -# base api -VUE_APP_BASE_API = '/api' - +VUE_APP_BASE_API = '/api' \ No newline at end of file diff --git a/WebSite/.env.staging b/WebSite/.env.staging deleted file mode 100644 index d69f66342f439a02a3a5ba73f1e553d6642b404f..0000000000000000000000000000000000000000 --- a/WebSite/.env.staging +++ /dev/null @@ -1,8 +0,0 @@ -NODE_ENV = production - -# just a flag -ENV = 'staging' - -# base api -VUE_APP_BASE_API = '/api' - diff --git a/WebSite/.env.test b/WebSite/.env.test deleted file mode 100644 index 49eb66d58240be21be2a98bb53b7b638f01e62c4..0000000000000000000000000000000000000000 --- a/WebSite/.env.test +++ /dev/null @@ -1,8 +0,0 @@ -NODE_ENV = production - -# just a flag -ENV = 'test' - -# base api -VUE_APP_BASE_API = '/api' - diff --git a/WebSite/.eslintrc.js b/WebSite/.eslintrc.js index c5ce0efebe63309cc2d05c4007504b1a15a2c1eb..ea36cfea09df15cd2eabd31549eacbeab029ae92 100644 --- a/WebSite/.eslintrc.js +++ b/WebSite/.eslintrc.js @@ -1,15 +1,21 @@ +/* + * @Description: + * @Autor: dongjunhua + * @Date: 2020-12-17 10:20:47 + * @LastEditors: dongjunhua + * @LastEditTime: 2020-12-18 09:49:30 + */ module.exports = { root: true, env: { node: true }, - extends: ["plugin:vue/essential", "@vue/prettier"], - rules: { - 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', - 'no-unused-vars': "off", - 'no-console': "off" - }, + extends: ['plugin:vue/vue3-essential', 'eslint:recommended', '@vue/prettier'], parserOptions: { - parser: "babel-eslint" + parser: 'babel-eslint' + }, + rules: { + 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', + 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off' } }; diff --git a/WebSite/.gitignore b/WebSite/.gitignore index eec534798181927c00299ed829f2d1662ec14cc5..403adbc1e527906a4aa59558cd582c20bcd1d738 100644 --- a/WebSite/.gitignore +++ b/WebSite/.gitignore @@ -1,14 +1,17 @@ .DS_Store -node_modules/ -dist/ +node_modules +/dist + + +# local env files +.env.local +.env.*.local + +# Log files npm-debug.log* yarn-debug.log* yarn-error.log* -**/*.log - -tests/**/coverage/ -tests/e2e/reports -selenium-debug.log +pnpm-debug.log* # Editor directories and files .idea @@ -17,7 +20,4 @@ selenium-debug.log *.ntvs* *.njsproj *.sln -*.local - -# package-lock.json -yarn.lock +*.sw? diff --git a/WebSite/.prettierrc.js b/WebSite/.prettierrc.js index 6294ecf963c64ee6a4df3568e14402bcaf483c69..f93732760758eb09de680623741a0f12e3d02ea7 100644 --- a/WebSite/.prettierrc.js +++ b/WebSite/.prettierrc.js @@ -1,12 +1,12 @@ /* * @Description: - * @Autor: dong jun hua - * @Date: 2020-06-08 09:28:07 - * @LastEditors: dong jun hua - * @LastEditTime: 2020-06-08 12:47:32 - */ + * @Autor: dongjunhua + * @Date: 2020-12-18 09:43:18 + * @LastEditors: dongjunhua + * @LastEditTime: 2020-12-18 09:49:08 + */ module.exports = { semi: true, - printWidth: 80, - endOfLine: "auto" -}; + singleQuote: true, + bracketSpacing: true +} \ No newline at end of file diff --git a/WebSite/.travis.yml b/WebSite/.travis.yml deleted file mode 100644 index f4be7a085597785fd16e9f1bcec912dc6b340326..0000000000000000000000000000000000000000 --- a/WebSite/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -node_js: 10 -script: npm run test -notifications: - email: false diff --git a/WebSite/CHANGELOG.md b/WebSite/CHANGELOG.md new file mode 100644 index 0000000000000000000000000000000000000000..5cc9a237a38893a836d6b9787f582103b2df2184 --- /dev/null +++ b/WebSite/CHANGELOG.md @@ -0,0 +1,26 @@ +# 0.8.1 (2020-2-26) + +#### 鍙樻洿 + +- 閮ㄥ垎鏍峰紡璋冩暣 +- 閮ㄥ垎css浠g爜浼樺寲 + +#### 淇 + +- 涓诲尯鍩熸粴鍔ㄦ潯闂 + + + +# 0.8.0 (2020-2-25) + +#### 鏂板 + +- 娣诲姞椤堕儴鑿滃崟锛堝綋鍓嶈彍鍗曟縺娲婚」瀛樺湪闂锛屽皻涓嶈兘纭畾闂鍘熷洜锛屽彲鑳戒负Element缁勪欢鑷韩bug锛� + +#### 鍙樻洿 + +- Element Plus鐗堟湰鍗囩骇鍒�1.0.2-beta.32 + +#### 淇 + +- 涓€浜涙牱寮忛棶棰� \ No newline at end of file diff --git a/WebSite/Dockerfile b/WebSite/Dockerfile index 86f2bc70d46969f3ec9e7542f0628201cb6674a8..4a16bc973edbdc5d222a8e1ff1b04c455510c701 100644 --- a/WebSite/Dockerfile +++ b/WebSite/Dockerfile @@ -1,9 +1,6 @@ -From nginx:latest -#COPY ./dist /usr/share/nginx/html -#COPY ./conf/nginx.conf /etc/nginx/nginx.conf +FROM nginx:latest COPY ./dist /app/html COPY ./conf/nginx.conf /app/nginx.conf COPY ./conf/init.sh /app/run.sh ENTRYPOINT ["nohup","/app/run.sh","&"] -CMD [ "" ] -#ENTRYPOINT ["nginx","-g","daemon off"] \ No newline at end of file +CMD [ "" ] \ No newline at end of file diff --git a/WebSite/LICENSE b/WebSite/LICENSE index 61515750df8d215937d8a5c58202d649dcdff957..1b81e7c4151313e212d61763ad1604274f2e9580 100644 --- a/WebSite/LICENSE +++ b/WebSite/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2017-present PanJiaChen +Copyright (c) 2021 DongJunHua Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/WebSite/README.md b/WebSite/README.md index 33d03e3c58150d315c70dcaa26acfd653283818b..9ef888befa13699b72daba299fb1e451889d0095 100644 --- a/WebSite/README.md +++ b/WebSite/README.md @@ -1,27 +1,387 @@ -<!-- - * @Descripttion: - * @Author: dongjunhua - * @Date: 2020-04-21 18:54:20 - * @LastEditors: dong jun hua - * @LastEditTime: 2020-09-18 15:41:52 ---> -# Vue Element Admin + -鍓嶇鍩虹妯℃澘锛屽熀浜� Vue 2.x 鍙� element-ui -妯℃澘鍚庣画鍐呭浠呭湪 develop 鍒嗘敮鏇存柊锛岃鍕夸娇鐢� master 鍒嗘敮 -**鏇存柊鍘嗗彶** +# Vue Element Next -2020/9/18 -version: 1.1.0 -鍐呭锛氭坊鍔犲墠绔疷I瑙勮寖锛岃皟鏁撮儴鍒嗙晫闈� +鍩轰簬Vue 3鍙奅lement鐨勬柊鐗堝墠绔鏋舵ā鏉� -2020/8/20 -version: 1.0.0 -鍐呭锛氱涓€涓寮忕増鏈� +鈥� 鏈€鏂扮増鏈細v0.8.1(305)-alpha [鏇存柊鏃ュ織](CHANGELOG.md) -**娉ㄦ剰浜嬮」** +鈥� 椤圭洰鍦板潃锛歨ttp://git.seaskysh.com.cn:8800/dongjunhua/vue-element-next + +鈥� Vue.js 3鐩稿叧鏂囨。鏂囨。璇峰弬鑰冿細https://v3.vuejs.org/ + +鈥� Element Plus缁勪欢搴撴枃妗h鍙傝€冿細https://element-plus.gitee.io/#/zh-CN + +鈥� 椤圭洰鐩墠浠嶅浜巃lpha鐗堟湰闃舵锛屽皻涓嶅畬鍠勪笖绋冲畾鎬х浉瀵硅緝宸紝鍙兘瀛樺湪涓€绯诲垪鐨勯棶棰� + +鈥� 濡傚彂鐜颁换浣曢棶棰橈紝娆㈣繋闅忔椂鎶ュ憡鎴栨彁浜ゅ悎骞惰姹傦紝浠ヤ究蹇€熶慨澶嶅拰杩唬 + + + + + +## 濡備綍杩愯椤圭洰 + +##### 涓嬭浇椤圭洰渚濊禆 + +``` +npm install +``` + +##### 寮€鍙戠幆澧冪紪璇戝苟杩愯 +``` +npm run serve +``` + +##### 寮€鍙戠幆澧冪紪璇戝苟杩愯锛堝悓鏃跺惎鍔╩ock鏈嶅姟锛� + +``` +npm run serve:mock +``` + +##### 鐢熶骇鐜鎵撳寘椤圭洰 + +``` +npm run build +``` + +##### 鏍煎紡鍖栦唬鐮� +``` +npm run lint +``` + +##### 瀵煎嚭webpack閰嶇疆锛堝紑鍙戠幆澧冿級 + +``` +npm run config:dev +``` + +##### 瀵煎嚭webpack閰嶇疆锛堢敓浜х幆澧冿級 + +``` +npm run config:prod +``` + + + + + +## 璇存槑鏂囨。 + +#### 涓€銆侀」鐩粨鏋勫強涓昏鐩綍 + +| 浣嶇疆 | 璇存槑 | +| --------------- | ------------------------------------------------------------ | +| /mock | mock.js鐩綍锛宮ock鐨勪綔鐢ㄦ槸涓洪」鐩彁渚涙ā鎷熸暟鎹紝鏂逛究鑴辩鍚庣杩涜寮€鍙� | +| /src | 涓荤洰褰� | +| /src/api | api鎺ュ彛鏂规硶鐩綍锛屾寜涓氬姟鍔熻兘鍒掑垎 | +| /src/components | 鍏叡缁勪欢鐩綍 | +| /src/core | 鏍稿績浠g爜鍙婄被搴撶洰褰� | +| /src/layout | 甯冨眬缁撴瀯浠g爜鐩綍锛屽寘鎷竟鏍忥紙鑿滃崟锛夈€侀《鏍忥紙闈㈠寘灞戠瓑锛夈€佹爣绛炬爮浠ュ強涓绘樉绀哄尯鍩� | +| /src/router | 璺敱妯″潡鐩綍 | +| /src/settings | 椤圭洰鍙傛暟閰嶇疆鐩綍 | +| /src/store | vuex鍏ㄥ眬鐘舵€佺鐞嗘ā鍧楃洰褰� | +| /src/style | 鏍峰紡鐩綍 | +| /src/utils | 宸ュ叿绫荤洰褰� | +| /src/views | 涓氬姟鍔熻兘椤甸潰缁勪欢鐩綍 | + + + +#### 浜屻€佺嫭绔嬩細璇濇ā鍧楋紙ISM锛� + +鐙珛浼氳瘽妯″潡鏄ā鏉块」鐩殑鏍稿績妯″潡锛屾彁渚涗簡瀹屾暣鐨勪細璇濈浉鍏冲姛鑳斤紝鍖呮嫭璁よ瘉銆佹巿鏉冦€佸姞瀵嗗拰浼氳瘽绠$悊绛夛紝鍏剁洰鐨勫湪浜庤В鍐充互寰€鍓嶇寮€鍙戜汉鍛樺洜涓虹粡楠屽拰瀵瑰叕鍙稿熀纭€鏁版嵁涓氬姟娴佺▼銆侀€昏緫鐨勮璇嗕笉澶燂紝鎵€瀵艰嚧鐨勫奖鍝嶅紑鍙戞晥鐜囨垨鍏朵粬鐩稿叧闂銆� + +涓昏鐢变互涓嬪瓙妯″潡缁勬垚锛� + +##### 鈥� Subject + +###### 鐩綍锛�/src/store/modules/subject.js + +鐙珛浼氳瘽妯″潡鐨勬牳蹇冨瓙妯″潡锛屾剰涓轰富浣擄紝浼氳瘽鐨勭鐞嗚€咃紝鍊熺敱vuex瀹炵幇锛岀淮鎶や細璇濇暟鎹苟璋冨害鍏朵粬妯″潡璇稿璺敱鏉ュ疄鐜板鏉冮檺鐨勬帶鍒讹紝娉ㄦ剰锛孲ubject鍐呴儴涓嶄細鐩存帴璋冪敤浠讳綍鍚庣鎺ュ彛鏉ヨ幏寰楄璇佹垨鎺堟潈鏁版嵁锛岃繖浜涙暟鎹渶瑕侀€氳繃Realm鏉ユ彁渚涖€� + +浠ヤ笅鏄疭ubject鎻愪緵鐨勬柟娉� + +| 鏂规硶 | 鍙傛暟 | 鍙傛暟绫诲瀷 | 鍔熻兘 | +| --------------- | ------- | -------------------------- | ------------------------------------------------------------ | +| login | token | String/AuthenticationToken | 鐧诲綍骞剁敓鎴愬墠绔細璇濓紝鍦ㄩ粯璁ゆā寮忎笅锛岃皟鐢ㄦ鏂规硶闇€瑕佹彁渚涗竴涓狝uthenticationToken瀹炰緥锛屽湪鍗曠偣鐧诲綍妯″紡涓嬶紝鍒欓€氬父闇€瑕佹彁渚涘崟鐐圭櫥褰曠杩斿洖鐨勪护鐗岀爜锛宭ogin浼氳皟鐢≧ealm.doGetAuthenticationInfo()鏂规硶骞朵紶鍏oken锛岄€氬父鎴戜滑搴旇鍦ㄦ鏂规硶涓皟鐢ㄥ悗绔櫥褰曟帴鍙f垨閫氳繃浠ょ墝鑾峰彇鐧诲綍鐢ㄦ埛淇℃伅锛屽苟杩斿洖涓€涓狝uthenticationInfo瀹炰緥浣滀负璁よ瘉缁撴灉銆侫uthenticationToken瀹炰緥瀵硅薄鍖呭惈涓や釜瀛楁锛�<br />**principals**锛圫tring/蹇呴』锛夛細韬唤锛岄€氬父涓虹敤鎴峰悕锛�<br />**credentials**锛圫tring/蹇呴』锛夛細璇佹槑锛岄€氬父涓哄瘑鐮併€� | +| permit | payload | Object | 鎺堟潈锛屽湪鐧诲綍瀹屾垚鍚庤皟鐢紝permit浼氳皟鐢≧ealm.doGetAuthorizationInfo()鏂规硶锛岄€氬父鎴戜滑搴旇鍦ㄦ鏂规硶涓皟鐢ㄥ悗绔帴鍙h幏鍙栧綋鍓嶇櫥褰曠敤鎴风殑鏉冮檺鐩稿叧淇℃伅锛屽苟杩斿洖涓€涓狝uthorizationInfo瀹炰緥銆�<br />璇ユ柟娉曟帴鏀朵竴涓璞′綔涓哄弬鏁帮紝鍖呮嫭涓や釜瀛楁锛�<br />**authorizationToken**锛圫tring/鍙€夛級锛氳鍙傛暟浼氫綔涓篟ealm.doGetAuthorizationInfo()鏂规硶鐨勫弬鏁帮紱<br />**afterPermitted**锛團unction/鍙€夛級锛氳鍑芥暟灏嗕細鍦ㄦ巿鏉冨畬鎴愬悗琚墽琛岋紙渚嬪锛氬崟鐐圭櫥褰曠瀹屾垚鐧诲綍鍚庨渶瑕佽烦杞洖涓氬姟绯荤粺锛夛紝榛樿鎯呭喌涓嬶紝subject灏嗕細璋冨害router璺宠浆鍒伴椤点€� | +| checkPermission | payload | Object | 鐢ㄤ簬瀵硅矾鐢辫繘琛屾潈闄愭牎楠岋紝璇ユ柟娉曞湪璺敱瀹堝崼涓璋冪敤骞惰繑鍥炴牎楠岀粨鏋溿€�<br />璇ユ柟娉曟帴鏀朵竴涓璞′綔涓哄弬鏁帮紝鍖呮嫭涓や釜瀛楁锛�<br />**path**锛圫tring/蹇呴』锛夛細闇€瑕佽鏍¢獙鐨勮矾鐢憋紱<br />**whiteList**锛圓rray/鍙€夛級锛氱櫧鍚嶅崟锛岀敤浜庤眮鍏嶆潈闄愭牎楠屻€� | +| recovery | - | - | 鐢ㄤ簬鍦╲uex閲嶇疆鍚庝粠storage鎭㈠浼氳瘽淇℃伅锛屽湪璺敱瀹堝崼涓璋冪敤銆� | +| logout | payload | Object | 娉ㄩ攢褰撳墠浼氳瘽锛屾敞閿€鍓嶅皢浼氳皟鐢≧ealm.beforeLogout()锛岄€氬父鐢ㄤ簬璋冪敤鍚庣娉ㄩ攢鎺ュ彛锛屾敞閿€鍚庡皢璋冨害router璺宠浆鍒扮櫥褰曢〉闈紝鍗曠偣鐧诲綍妯″紡涓嬪皢璺宠浆鍒板搷搴旂殑鍗曠偣鐧诲綍鍦板潃銆�<br />璇ユ柟娉曟帴鏀朵竴涓璞′綔涓哄弬鏁帮紝鍖呮嫭鍥涗釜瀛楁锛�<br />**beforeLogout**锛團unction/鍙€夛級锛氱敤浜庢浛鎹㈤粯璁ょ殑Realm.beforeLogout()锛屽湪鍗曠偣鐧诲綍妯″紡涓嬶紝鍙湪璇ュ嚱鏁拌繑鍥炲崟鐐圭櫥褰曠殑鍦板潃锛�<br />**ssoAddress**锛圫tring/鍙€夛級锛氬崟鐐圭櫥褰曟ā寮忎笅浣跨敤锛岃〃绀哄崟鐐圭櫥褰曞湴鍧€锛屾敞鎰忥紝鍏辨湁涓変釜鍏ュ彛鍙彁渚涘崟鐐圭櫥褰曞湴鍧€锛屼紭鍏堢骇涓猴細姝ゅ瓧娈垫彁渚涚殑鍦板潃 > beforeLogout()杩斿洖鐨勫湴鍧€ > setting涓畾涔夌殑鍦板潃锛�<br />**ssoLogout**锛圔oolean/鍙€夛級锛氬崟鐐圭櫥褰曟ā寮忎笅浣跨敤锛岀敤浜庢敞閿€鍗曠偣鐧诲綍绔殑浼氳瘽<br />**query**锛圤bject/鍙€夛級锛氳烦杞櫥褰曢〉闈㈡椂闄勫姞鐨勫弬鏁般€� | + + + +##### 鈥� Realm + +###### 鐩綍锛�/src/core/base/Realm.js + +瀹夊叏鏁版嵁婧愶紝鐢ㄤ簬涓篠ubject鎻愪緵浼氳瘽鎵€蹇呴』鐨勬暟鎹紙璐﹀彿銆佺敤鎴枫€佹潈闄愮瓑锛夛紝閫氬父鎴戜滑闇€瑕佸湪Realm鐨勬柟娉曚腑璋冪敤鐩稿簲鐨勫悗绔痑pi鎺ュ彛鑾峰彇蹇呰鐨勬暟鎹紝骞惰繑鍥炵粰Subject銆� + +涓昏鏂规硶濡備笅锛� + +``` + /** + * @method 鑾峰彇韬唤璁よ瘉淇℃伅 + * @for Realm + * @param {*} authenticationToken + * @return {Promise} + */ + static async doGetAuthenticationInfo(authenticationToken) { + const { principals, credentials } = authenticationToken; + // 璋冪敤鍚庣api + // 蹇呴』杩斿洖涓€涓狝uthenticationInfo瀹炰緥 + return new AuthenticationInfo(); + } + + /** + * @method 鑾峰彇鐢ㄦ埛鏉冮檺淇℃伅 + * @for Realm + * @param {*} authorizationToken + * @return {Promise} + */ + static async doGetAuthorizationInfo(authorizationToken) { + // 璋冪敤鍚庣api + // 蹇呴』杩斿洖涓€涓狝uthorizationInfo瀹炰緥 + return new AuthorizationInfo(); + } + + /** + * @method 娉ㄩ攢鍓嶇殑琛屼负 + * @for Realm + * @return {String} ssoAddress + */ + static async beforeLogout() { + // 璋冪敤鍚庣api锛岄€氬父鏄敞閿€ + // 鍙繑鍥炰竴涓崟鐐圭櫥褰曞湴鍧€ + return; + } +``` + + + +##### 鈥� Guards + +###### 鐩綍锛�/src/router/guards.js + +鍏ㄥ眬璺敱瀹堝崼锛岀敤浜庝笌subject閰嶅悎鏉ュ畬鎴愭潈闄愭牎楠屽拰璺敱璺宠浆銆� + +娴佺▼鍥惧涓嬶細 + + + + + +##### 鈥� Storage + +###### 鐩綍锛�/src/utils/Storage.js + +Storage宸ュ叿绫伙紝鐢ㄤ簬閰嶅悎subject瀹屾垚瀵瑰墠绔細璇濈殑鎸佷箙鍖栨暟鎹淮鎶わ紙鍖呮嫭閮ㄥ垎app鍙傛暟锛夛紝鎻愪緵鏂板锛屾洿鏂板拰鍒犻櫎锛屽姞瑙e瘑绛夋柟娉曪紝鍙厤缃繃鏈熸椂闂淬€� + +涓昏鏂规硶濡備笅锛� + +``` + /** + * @method 璁剧疆localStorage + * @for Storage + * @param {string} key + * @param {*} value + * @param {number} expired + */ + static setLocal(key, value, expired) + + /** + * @method 鑾峰彇localStorage + * @for Storage + * @param {string} key + * @return {*} + */ + static getLocal(key) + + /** + * @method 鍒犻櫎localStorage + * @for Storage + * @param {string} key + */ + static delLocal(key) + + /** + * @method 璁剧疆sessionStorage + * @for Storage + * @param {string} key + * @param {*} value + * @param {number} expired + */ + static setSession(key, value, expired) + + /** + * @method 鑾峰彇sessionStorage + * @for Storage + * @param {string} key + * @return {*} + */ + static getSession(key) + + /** + * @method 鍒犻櫎sessionStorage + * @for Storage + * @param {string} key + */ + static delSession(key) + + /** + * @method 娣诲姞瀵筍torage鐨勭洃鍚� + * @for Storage + * @param {function} callback + */ + static addListener(callback) + + /** + * @method 鍒犻櫎瀵筍torage鐨勭洃鍚� + * @for Storage + * @param {function} callback + */ + static removeListener(callback) +``` + + + +#### 涓夈€佷富棰樻ā鍧� + +涓婚妯″潡鎻愪緵鏇存崲涓婚閰嶈壊鐨勫姛鑳斤紝鍙€氳繃绠€鍗曠殑閰嶇疆瀹炵幇涓婚鐨勬柊澧炲拰淇敼銆� + +##### 鈥� 涓婚鍒楄〃閰嶇疆 + +###### 鐩綍锛�/src/settings/theme.js + +鐢ㄤ簬涓虹晫闈笂鐨勪富棰橀€夋嫨涓嬫媺妗嗘彁渚涢€夐」锛岄厤缃涓嬶細 + +``` +{ + name: 'light', // 涓婚鍚嶇О + className: 'light', // 瀵瑰簲css绫诲悕 + default: true // 鏄惁榛樿涓婚锛堝彲閫夛級 +} +``` + + + +##### 鈥� 涓婚绫婚厤缃� + +###### 鐩綍锛�/src/styles/mixin-theme.scss + +瀹氫箟涓婚鐨勯厤鑹诧紝閰嶇疆濡備笅锛� + +``` +/* theme: light */ +.light, +.light ~ .el-popper { + @include theme( + light, // 涓婚鍚嶇О + #fafafa, // 涓昏壊璋冿紙涓€绾ц彍鍗曡儗鏅壊锛岀櫥褰曠晫闈㈣儗鏅壊锛� + #e6e6e6, // 涓€绾ц彍鍗曟偓鍋滄椂楂樹寒鑹� + #f0f0f0, // 浜岀骇鑿滃崟鑳屾櫙鑹� + #e1e1e1, // 浜岀骇鑿滃崟鎮仠鏃堕珮浜壊 + #707276, // 鑿滃崟鏂囧瓧棰滆壊 + #508aff, // 鑿滃崟婵€娲绘椂鏂囧瓧棰滆壊 + #495060, // 鑿滃崟婵€娲绘椂鐖剁骇鏂囧瓧棰滆壊 + #508aff // 婵€娲绘爣蹇楅鑹� + ); +} +.light.theme-selection { + background-color: rgba(230, 230, 230, 1); // 涓婚閫夋嫨涓嬫媺妗嗕腑瀵瑰簲涓婚鍥炬爣鐨勯鑹� +} +``` + + + +#### 鍥涖€佸弬鏁伴厤缃� + +###### 鐩綍锛�/src/settings/theme.js + +椤圭洰灞炴€у拰杩愯鍙傛暟鐨勯厤缃� + +``` +module.exports = { + /** + * 搴旂敤鍚嶇О锛屼綔涓烘爣棰樺湪鐧诲綍鐣岄潰鏄剧ず + */ + applicationName: 'Vue Element Next' || npmConfig.name, + /** + * 搴旂敤璇嗗埆id锛岀敤浜庢爣璇嗗簲鐢紝蹇呴』鍏ㄥ眬鍞竴 + */ + recognizeId: 'vue_element_next', + /** + * 鐗堟湰 + */ + releaseCycle: '伪lpha', + /** + * 鐗堟湰鍙� + */ + version: npmConfig.version, + /** + * Vue鐗堟湰鍙� + */ + coreVersion: npmConfig.dependencies.vue.replace(/\./g, ''), + /** + * 鐧诲綍妯″紡锛坉efault: 榛樿/sso: 鍗曠偣鐧诲綍锛� + */ + loginType: 'default', + /** + * 鍗曠偣鐧诲綍鍦板潃锛屽湪浣跨敤鍗曠偣鐧诲綍妯″紡鏃堕渶瑕侀厤缃椤� + */ + ssoAddress: '', + /** + * 浼氳瘽鏈夋晥鏃堕棿锛堝崟浣嶏細ms锛夛紝瓒呰繃璁剧疆鐨勬椂闂村悗鍓嶇浼氳瘽澶辨晥 + */ + loginValidDuration: 60000, + /** + * 缂撳瓨鍔犲瘑锛岃缃槸鍚︿互鍔犲瘑鐨勫舰寮忓瓨鍌╯torage锛屼慨鏀规閰嶇疆鍚庤鎵嬪姩鍒犻櫎鐜版湁storage + */ + storageEncrypt: false, + /** + * 鐜鏍囪瘑锛岃〃绀哄綋鍓嶈繍琛屼簬妗岄潰绔繕鏄墜鏈虹 + */ + device: 'desktop', + /** + * 鏄惁寮€鍚櫥褰曢〉闈㈠姩鎬佽儗鏅紝寮€鍚椤逛細澧炲姞鎬ц兘寮€閿€ + */ + dynamicLoginBg: true, + /** + * ElementUI鍏ㄥ眬閰嶇疆 + */ + element: { + size: 'mini', + zIndex: 3000 + }, + /** + * 瀵艰埅鏍忛厤缃紙椤堕儴鑿滃崟锛� + * 寮€鍚椂璇峰叧闂晶杈规爮 + */ + navbar: { + enabled: true + }, + /** + * 瀵艰埅淇℃伅鏍忛厤缃� + */ + navigation: { + enabled: true + }, + /** + * 渚ц竟鏍忛厤缃紙渚ц竟鑿滃崟锛� + * 寮€鍚椂璇峰叧闂鑸爮 + */ + sidebar: { + enabled: false, + showLogo: false + }, + /** + * 鏍囩椤甸厤缃� + */ + tagsView: { + enabled: true + } +}; +``` -濡傞渶鍦ㄦ墦鍖呮椂浣跨敤鐗瑰畾鐨勯厤缃紙渚嬪鍚庣鍦板潃锛夛紝璇峰湪鏍圭洰褰曟坊鍔犲搴旂殑 .env.xxx 鏂囦欢锛坸xx 涓鸿嚜瀹氫箟鐨勭幆澧冨悕绉帮級锛屽苟鍦� /src/assets/configs 鐩綍涓嬫坊鍔� xxx.json 鏂囦欢锛� -鏈€鍚庡湪 package.json 涓殑 scripts 瀛楁涓坊鍔犲搴旂殑鍛戒护锛�"build:xxx": "vue-cli-service build --mode xxx" diff --git a/WebSite/babel.config.js b/WebSite/babel.config.js index ba179669a123909a9728283fd9c004c65adb90c5..916db641e17c08bc2159e9458f5a93813f6a40e2 100644 --- a/WebSite/babel.config.js +++ b/WebSite/babel.config.js @@ -1,5 +1,3 @@ module.exports = { - presets: [ - '@vue/app' - ] -} + presets: ['@vue/cli-plugin-babel/preset'] +}; diff --git a/WebSite/conf/nginx.conf b/WebSite/conf/nginx.conf index 59cb2ea2916fc3375b9abbe6a21dd44be2559ee0..b907ebf27b3dca7c037d3f99f1401f135dd33db5 100644 --- a/WebSite/conf/nginx.conf +++ b/WebSite/conf/nginx.conf @@ -1,4 +1,4 @@ - +#nginx.conf user nginx; worker_processes 1; diff --git a/WebSite/docs/guards_er.png b/WebSite/docs/guards_er.png new file mode 100644 index 0000000000000000000000000000000000000000..814f67027c4f48622c593665b531e4e7b1dfeb97 Binary files /dev/null and b/WebSite/docs/guards_er.png differ diff --git a/WebSite/docs/logo_s.png b/WebSite/docs/logo_s.png new file mode 100644 index 0000000000000000000000000000000000000000..ddca8a1fd985356373253f0cc7380c4638119591 Binary files /dev/null and b/WebSite/docs/logo_s.png differ diff --git a/WebSite/jest.config.js b/WebSite/jest.config.js deleted file mode 100644 index 143cdc868cbc529ca55eff89bbc0dc3f23fba65d..0000000000000000000000000000000000000000 --- a/WebSite/jest.config.js +++ /dev/null @@ -1,24 +0,0 @@ -module.exports = { - moduleFileExtensions: ['js', 'jsx', 'json', 'vue'], - transform: { - '^.+\\.vue$': 'vue-jest', - '.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$': - 'jest-transform-stub', - '^.+\\.jsx?$': 'babel-jest' - }, - moduleNameMapper: { - '^@/(.*)$': '<rootDir>/src/$1' - }, - snapshotSerializers: ['jest-serializer-vue'], - testMatch: [ - '**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)' - ], - collectCoverageFrom: ['src/utils/**/*.{js,vue}', '!src/utils/auth.js', '!src/utils/request.js', 'src/components/**/*.{js,vue}'], - coverageDirectory: '<rootDir>/tests/unit/coverage', - // 'collectCoverage': true, - 'coverageReporters': [ - 'lcov', - 'text-summary' - ], - testURL: 'http://localhost/' -} diff --git a/WebSite/mock/account.js b/WebSite/mock/account.js index bad54c09d20e24abe7bcbc8e9c35710fd7f8a452..5f431eaec0da46cd345fb5ba5c2e18486157a6e2 100644 --- a/WebSite/mock/account.js +++ b/WebSite/mock/account.js @@ -1,166 +1,117 @@ /* * @Description: - * @Autor: dong jun hua - * @Date: 2020-07-11 19:09:10 - * @LastEditors: dong jun hua - * @LastEditTime: 2020-09-18 13:57:07 + * @Autor: dongjunhua + * @Date: 2021-01-28 10:12:07 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-02-25 10:36:09 */ -import { deepClone } from "../src/utils/index"; + +const { deepClone } = require('./utils'); const userList = [ { - id: "1", - available: "YES", - versionDate: "2020-07-01 01:34:33.767", - updator: "1", - creator: "1", - remark: "test", - name: "瑙掕壊1", - code: "0001", - userType: "ADMIN", - mobilePhone: "15911111111", - email: "test@seasky.com", - enabled: "YES" + id: '1', + available: 'YES', + versionDate: '2020-07-01 01:34:33.767', + updator: '1', + creator: '1', + remark: '', + name: 'Administrator', + code: 'admin', + userType: 'ADMIN', + mobilePhone: '15911111111', + email: 'test@seasky.com', + enabled: 'YES' + }, + { + id: '2', + available: 'YES', + versionDate: '2020-07-01 01:34:33.767', + updator: '1', + creator: '1', + remark: '', + name: 'Guest 01', + code: '0001', + userType: 'ADMIN', + mobilePhone: '15911111111', + email: 'test@seasky.com', + enabled: 'YES' }, { - id: "2", - available: "YES", - versionDate: "2020-07-01 01:34:33.767", - updator: "1", - creator: "1", - remark: "test", - name: "瑙掕壊2", - code: "0002", - userType: "ADMIN", - mobilePhone: "15911111111", - email: "test@seasky.com", - enabled: "YES" + id: '3', + available: 'YES', + versionDate: '2020-07-01 01:34:33.767', + updator: '1', + creator: '1', + remark: '', + name: 'Guest 02', + code: '0002', + userType: 'ADMIN', + mobilePhone: '15911111111', + email: 'test@seasky.com', + enabled: 'YES' } ]; const menuList = [ { - id: "1", - available: "YES", - versionDate: "2020-07-10 02:31:46.962", - creator: "1", - applicationId: "1", - menuNo: "0000", - name: "婕旂ず", - icon: "list", - parentId: "0", - routingUrl: "", - isNewWindow: "NO", - isSystem: "YES", - withUserId: "NO", - enabled: "YES", - authUser: ["1", "2"], + id: '1', + available: 'YES', + versionDate: '2020-07-10 02:31:46.962', + creator: '1', + applicationId: '1', + menuNo: '0000', + name: '閮ㄩ棬棰勭畻椤圭洰搴�', + icon: 'fas fa-globe-asia', + parentId: '0', + routingUrl: '', + isNewWindow: 'NO', + isSystem: 'YES', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], children: [ { - id: "2", - available: "YES", - versionDate: "2020-07-10 05:53:01.597", - updator: "1", - creator: "1", - applicationId: "1", - menuNo: "SBD_001", - name: "椹鹃┒鑸�", - icon: "dashboard", - parentId: "1", - routingUrl: "dashboard", - redirectUrl: "", - urlParameter: "", - isNewWindow: "NO", - isSystem: "NO", - withUserId: "NO", - enabled: "YES", - authUser: ["1"], + id: '2', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_001', + name: '鏈儴闂ㄩ」鐩簱', + icon: 'fas fa-cube', + parentId: '1', + routingUrl: 'project-library/department', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], children: [] }, { - id: "3", - available: "YES", - versionDate: "2020-07-10 05:53:08.334", - updator: "1", - creator: "1", - applicationId: "1", - menuNo: "SBD_003", - name: "UI瑙勮寖", - icon: "example", - parentId: "1", - routingUrl: "", - redirectUrl: "", - urlParameter: "", - isNewWindow: "NO", - isSystem: "NO", - withUserId: "NO", - enabled: "YES", - authUser: ["1"], - children: [ - { - id: "301", - menuNo: "301", - name: "姒傝堪", - icon: "", - routingUrl: "example/index", - redirectUrl: "", - authUser: ["1"] - }, - { - id: "302", - menuNo: "302", - name: "甯冨眬", - icon: "", - routingUrl: "example/layout", - redirectUrl: "", - authUser: ["1"] - }, - { - id: "303", - menuNo: "303", - name: "鍥炬爣", - icon: "", - routingUrl: "example/icon", - redirectUrl: "", - authUser: ["1"] - }, - { - id: "304", - menuNo: "304", - name: "鎸夐挳", - icon: "", - routingUrl: "example/button", - redirectUrl: "", - authUser: ["1"] - }, - { - id: "305", - menuNo: "305", - name: "琛ㄦ牸", - icon: "", - routingUrl: "example/table", - redirectUrl: "", - authUser: ["1"] - }, - { - id: "306", - menuNo: "306", - name: "琛ㄥ崟", - icon: "", - routingUrl: "example/form", - redirectUrl: "", - authUser: ["1"] - }, - { - id: "307", - menuNo: "307", - name: "瀵硅瘽妗�", - icon: "", - routingUrl: "example/dialog", - redirectUrl: "", - authUser: ["1"] - } - ] + id: '3', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_002', + name: '鏍″唴椤圭洰搴�', + icon: 'fas fa-feather-alt', + parentId: '1', + routingUrl: 'project-library/inSchool', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1'], + children: [] } ] } @@ -186,53 +137,53 @@ function getMenuListByUser() { return menus; } -export default [ +module.exports = [ // login { - url: "/account/pc/v1/login", - type: "post", - response: _ => { + url: '/account/pc/v1/login', + type: 'post', + response: () => { return { data: [ { - id: "1", - available: "YES", - versionDate: "2020-07-08 02:30:50.390", - updator: "1", - username: "admin", - enabled: "YES", - isInitial: "NO", + id: '1', + available: 'YES', + versionDate: '2020-07-08 02:30:50.390', + updator: '1', + username: 'admin', + enabled: 'YES', + isInitial: 'NO', users: userList, - token: "d79ba79c-0561-43ed-afa4-d94a9ef2b5ff" + token: 'd79ba79c-0561-43ed-afa4-d94a9ef2b5ff' } ], - code: "00000", - description: "鎴愬姛", - currentTime: "1594465972765", - rid: "pyAn4K2g" + code: '00000', + description: '鎴愬姛', + currentTime: '1594465972765', + rid: 'pyAn4K2g' }; } }, // setCurrent { - url: "/user/pc/v1/setCurrent", - type: "post", + url: '/user/pc/v1/setCurrent', + type: 'post', response: config => { const { id } = config.body; currentUser = userList.find(u => u.id === id); return { - code: "00000", - currentTime: "1594466609898", - description: "鎴愬姛", - rid: "79HgNrDI" + code: '00000', + currentTime: '1594466609898', + description: '鎴愬姛', + rid: '79HgNrDI' }; } }, // getCurrent { - url: "/user/pc/v1/getCurrent", - type: "post", - response: _ => { + url: '/user/pc/v1/getCurrent', + type: 'post', + response: () => { return { data: [ { @@ -241,23 +192,23 @@ export default [ functionList: [] } ], - code: "00000", - description: "鎴愬姛", - currentTime: "1594466793502", - rid: "YBi5A0sJ" + code: '00000', + description: '鎴愬姛', + currentTime: '1594466793502', + rid: 'YBi5A0sJ' }; } }, // modifyPassword { - url: "/account/pc/v1/modifyPassword", - type: "post", - response: _ => { + url: '/account/pc/v1/modifyPassword', + type: 'post', + response: () => { return { - code: "00000", - description: "鎴愬姛", - currentTime: "1594466793502", - rid: "YBi5A0sJ" + code: '00000', + description: '鎴愬姛', + currentTime: '1594466793502', + rid: 'YBi5A0sJ' }; } } diff --git a/WebSite/mock/application.js b/WebSite/mock/application.js deleted file mode 100644 index d632ae7cd4f14cdff481bbb5065f2603c873b8fc..0000000000000000000000000000000000000000 --- a/WebSite/mock/application.js +++ /dev/null @@ -1,169 +0,0 @@ -export default [ - // application listApplication - { - url: "/application/pc/v1/listApplication", - type: "post", - response: config => { - return { - data: [ - { - id: 1268442997780377601, - available: "YES", - versionDate: "2020-06-04 07:22:33.393", - recognizeId: "20756ac0-a858-4d3f-9989-f5418dc3866a", - name: "鍐呴儴搴旂敤1", - applicationType: "INNER", - enabled: "YES" - }, - { - id: 1268443025580224514, - available: "YES", - versionDate: "2020-06-04 07:22:39.890", - recognizeId: "0e010dfd-f48b-44b0-8f19-2157083d9a30", - name: "鍐呴儴搴旂敤2", - applicationType: "INNER", - enabled: "YES" - } - ], - pageIndex: 1, - pageSize: 10, - pageCount: 1, - total: 2, - code: "00000", - description: "鎴愬姛", - currentTime: 1591602092687, - rid: "AynrJyfn" - }; - } - }, - - { - url: "/application/pc/v1/get", - type: "post", - response: config => { - return { - data: [ - { - id: 1268442997780377601, - available: "YES", - versionDate: "2020-06-04 07:22:33.393", - recognizeId: "20756ac0-a858-4d3f-9989-f5418dc3866a", - name: "鍐呴儴搴旂敤1", - applicationType: "INNER", - enabled: "YES" - } - ], - code: "00000", - description: "鎴愬姛", - currentTime: 1591602092687, - rid: "AynrJyfn" - }; - } - }, - - { - url: "/application/pc/v1/createApplication", - type: "post", - response: config => { - return { - data: [ - { - id: 1270152614558253057, - recognizeId: "470eb8c0-07b9-45d5-903c-2cb3911c2e7a", - name: "鍐呴儴搴旂敤11", - applicationType: "INNER", - secret: "QzBCMjhEMTlDNjNFRTM1RUNDQ0NCNEFCMUMyMjZDNEI=", - enabled: "YES" - } - ], - code: "00000", - description: "鎴愬姛", - currentTime: 1591662956455, - rid: "LifKbaKn" - }; - } - }, - - { - url: "/application/pc/v1/modifyApplication", - type: "post", - response: config => { - return { - data: [ - { - id: 1270152614558253057, - recognizeId: "470eb8c0-07b9-45d5-903c-2cb3911c2e7a", - name: "鍐呴儴搴旂敤11", - applicationType: "INNER", - enabled: "YES" - } - ], - code: "00000", - description: "鎴愬姛", - currentTime: 1591662956455, - rid: "LifKbaKn" - }; - } - }, - - { - url: "/application/pc/v1/removeApplication", - type: "get", - response: config => { - return { - data: [true], - code: "00000", - description: "鎴愬姛", - currentTime: 1591662956455, - rid: "LifKbaKn" - }; - } - }, - - { - url: "/application/pc/v1/resetApplicationSecret", - type: "get", - response: config => { - return { - data: [ - { - id: 1267367522282737666, - available: "YES", - versionDate: "2020-06-02T18:26:32.916+0000", - updator: 1267339697195388929, - creator: 1267339697195388929, - recognizeId: "48adee8b-a3b5-11ea-be76-00163e142fbd", - name: "鍩虹鏁版嵁", - applicationType: "INNER", - secret: "QzBCMjhEMTlDNjNFRTM1RUNDQ0NCNEFCMUMyMjZDNEI=", - enabled: "YES" - } - ], - code: "00000", - description: "鎴愬姛", - currentTime: 1591151192578, - rid: "pasRnum3" - }; - } - }, - - { - url: "/application/pc/v1/exportApplication", - type: "get", - response: "@paragraph(2)" - }, - - { - url: "/application/pc/v1/importApplication", - type: "post", - response: config => { - return { - data: [true], - code: "00000", - description: "鎴愬姛", - currentTime: 1591662956455, - rid: "LifKbaKn" - }; - } - } -]; diff --git a/WebSite/mock/article.js b/WebSite/mock/article.js deleted file mode 100644 index 4955578f52e3746823b6364c7b11c00192aa66e3..0000000000000000000000000000000000000000 --- a/WebSite/mock/article.js +++ /dev/null @@ -1,128 +0,0 @@ -import Mock from "mockjs"; - -const List = []; -const count = 100; - -const baseContent = - '<p>I am testing data, I am testing data.</p><p><img src="https://wpimg.wallstcn.com/4c69009c-0fd4-4153-b112-6cb53d1cf943"></p>'; -const image_uri = - "https://wpimg.wallstcn.com/e4558086-631c-425c-9430-56ffb46e70b3"; - -for (let i = 0; i < count; i++) { - List.push( - Mock.mock({ - id: "@increment", - timestamp: +Mock.Random.date("T"), - author: "@first", - reviewer: "@first", - title: "@title(5, 10)", - content_short: "mock data", - content: baseContent, - forecast: "@float(0, 100, 2, 2)", - importance: "@integer(1, 3)", - "type|1": ["CN", "US", "JP", "EU"], - "status|1": ["published", "draft"], - display_time: "@datetime", - comment_disabled: true, - pageviews: "@integer(300, 5000)", - image_uri, - platforms: ["a-platform"] - }) - ); -} - -export default [ - { - url: "/vue-element-admin/article/list", - type: "get", - response: config => { - const { - importance, - type, - title, - page = 1, - limit = 20, - sort - } = config.query; - - let mockList = List.filter(item => { - if (importance && item.importance !== +importance) return false; - if (type && item.type !== type) return false; - if (title && item.title.indexOf(title) < 0) return false; - return true; - }); - - if (sort === "-id") { - mockList = mockList.reverse(); - } - - const pageList = mockList.filter( - (item, index) => index < limit * page && index >= limit * (page - 1) - ); - - return { - code: 20000, - data: { - total: mockList.length, - items: pageList - } - }; - } - }, - - { - url: "/vue-element-admin/article/detail", - type: "get", - response: config => { - const { id } = config.query; - for (const article of List) { - if (article.id === +id) { - return { - code: 20000, - data: article - }; - } - } - } - }, - - { - url: "/vue-element-admin/article/pv", - type: "get", - response: _ => { - return { - code: 20000, - data: { - pvData: [ - { key: "PC", pv: 1024 }, - { key: "mobile", pv: 1024 }, - { key: "ios", pv: 1024 }, - { key: "android", pv: 1024 } - ] - } - }; - } - }, - - { - url: "/vue-element-admin/article/create", - type: "post", - response: _ => { - return { - code: 20000, - data: "success" - }; - } - }, - - { - url: "/vue-element-admin/article/update", - type: "post", - response: _ => { - return { - code: 20000, - data: "success" - }; - } - } -]; diff --git a/WebSite/mock/index.js b/WebSite/mock/index.js index 94723e6092be97688b4576df0d5a561b3add8027..055270b0feacc8283d65cefc45505a3bd0e03483 100644 --- a/WebSite/mock/index.js +++ b/WebSite/mock/index.js @@ -1,34 +1,21 @@ /* * @Description: - * @Autor: dong jun hua - * @Date: 2020-07-11 18:39:03 - * @LastEditors: dong jun hua - * @LastEditTime: 2020-07-11 19:32:46 + * @Autor: dongjunhua + * @Date: 2021-01-28 10:08:10 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-01-28 10:16:30 */ +const Mock = require('mockjs'); +const { param2Obj } = require('./utils'); -import Mock from "mockjs"; -import { param2Obj } from "../src/utils"; +const account = require('./account'); -import user from "./user"; -import role from "./role"; -import article from "./article"; -import search from "./remote-search"; -import application from "./application"; -import account from "./account"; - -const mocks = [ - ...user, - ...role, - ...article, - ...search, - ...application, - ...account -]; +const mocks = [...account]; // for front mock // please use it cautiously, it will redefine XMLHttpRequest, // which will cause many of your third-party libraries to be invalidated(like progress event). -export function mockXHR() { +function mockXHR() { // mock patch // https://github.com/nuysoft/Mock/issues/300 Mock.XHR.prototype.proxy_send = Mock.XHR.prototype.send; @@ -64,10 +51,13 @@ export function mockXHR() { for (const i of mocks) { Mock.mock( new RegExp(i.url), - i.type || "get", + i.type || 'get', XHR2ExpressReqWrap(i.response) ); } } -export default mocks; +module.exports = { + mocks, + mockXHR +}; diff --git a/WebSite/mock/mock-server.js b/WebSite/mock/mock-server.js index 8a458518503c6eff9244bb1009cf26568c8d43ab..319ec26dd0e477bec1bc87f9318b00d5e7b3d3e6 100644 --- a/WebSite/mock/mock-server.js +++ b/WebSite/mock/mock-server.js @@ -1,14 +1,21 @@ -const chokidar = require("chokidar"); -const bodyParser = require("body-parser"); -const chalk = require("chalk"); -const path = require("path"); -const Mock = require("mockjs"); +/* + * @Description: + * @Autor: dongjunhua + * @Date: 2021-01-28 10:07:16 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-01-28 10:07:39 + */ +const chokidar = require('chokidar'); +const bodyParser = require('body-parser'); +const chalk = require('chalk'); +const path = require('path'); +const Mock = require('mockjs'); -const mockDir = path.join(process.cwd(), "mock"); +const mockDir = path.join(process.cwd(), 'mock'); function registerRoutes(app) { let mockLastIndex; - const { default: mocks } = require("./index.js"); + const { mocks } = require('./index.js'); const mocksForServer = mocks.map(route => { return responseFake(route.url, route.type, route.response); }); @@ -35,9 +42,9 @@ function unregisterRoutes() { const responseFake = (url, type, respond) => { return { url: new RegExp(`${process.env.VUE_APP_BASE_API}${url}`), - type: type || "get", + type: type || 'get', response(req, res) { - console.log("request invoke:" + req.path); + console.log('request invoke:' + req.path); res.json( Mock.mock(respond instanceof Function ? respond(req, res) : respond) ); @@ -46,9 +53,6 @@ const responseFake = (url, type, respond) => { }; module.exports = app => { - // es6 polyfill - require("@babel/register"); - // parse app.body // https://expressjs.com/en/4x/api.html#req.body app.use(bodyParser.json()); @@ -68,8 +72,8 @@ module.exports = app => { ignored: /mock-server/, ignoreInitial: true }) - .on("all", (event, path) => { - if (event === "change" || event === "add") { + .on('all', (event, path) => { + if (event === 'change' || event === 'add') { try { // remove mock routes stack app._router.stack.splice(mockStartIndex, mockRoutesLength); diff --git a/WebSite/mock/remote-search.js b/WebSite/mock/remote-search.js deleted file mode 100644 index 60809cb86f2f60a4f5a34fcf4b6e13fccd8bcfac..0000000000000000000000000000000000000000 --- a/WebSite/mock/remote-search.js +++ /dev/null @@ -1,51 +0,0 @@ -import Mock from 'mockjs' - -const NameList = [] -const count = 100 - -for (let i = 0; i < count; i++) { - NameList.push(Mock.mock({ - name: '@first' - })) -} -NameList.push({ name: 'mock-Pan' }) - -export default [ - // username search - { - url: '/vue-element-admin/search/user', - type: 'get', - response: config => { - const { name } = config.query - const mockNameList = NameList.filter(item => { - const lowerCaseName = item.name.toLowerCase() - return !(name && lowerCaseName.indexOf(name.toLowerCase()) < 0) - }) - return { - code: 20000, - data: { items: mockNameList } - } - } - }, - - // transaction list - { - url: '/vue-element-admin/transaction/list', - type: 'get', - response: _ => { - return { - code: 20000, - data: { - total: 20, - 'items|20': [{ - order_no: '@guid()', - timestamp: +Mock.Random.date('T'), - username: '@name()', - price: '@float(1000, 15000, 0, 2)', - 'status|1': ['success', 'pending'] - }] - } - } - } - } -] diff --git a/WebSite/mock/role/index.js b/WebSite/mock/role/index.js deleted file mode 100644 index 6f74be8bb8dfee9d40c14aee390bb838a406e736..0000000000000000000000000000000000000000 --- a/WebSite/mock/role/index.js +++ /dev/null @@ -1,101 +0,0 @@ -import Mock from "mockjs"; -import { deepClone } from "../../src/utils/index.js"; -import { asyncRoutes, constantRoutes } from "./routes.js"; - -const routes = deepClone([...constantRoutes, ...asyncRoutes]); - -const roles = [ - { - key: "admin", - name: "admin", - description: "Super Administrator. Have access to view all pages.", - routes: routes - }, - { - key: "editor", - name: "editor", - description: "Normal Editor. Can see all pages except permission page", - routes: routes.filter(i => i.path !== "/permission") // just a mock - }, - { - key: "visitor", - name: "visitor", - description: - "Just a visitor. Can only see the home page and the document page", - routes: [ - { - path: "", - redirect: "dashboard", - children: [ - { - path: "dashboard", - name: "Dashboard", - meta: { title: "dashboard", icon: "dashboard" } - } - ] - } - ] - } -]; - -export default [ - // mock get all routes form server - { - url: "/vue-element-admin/routes", - type: "get", - response: _ => { - return { - code: 20000, - data: routes - }; - } - }, - - // mock get all roles form server - { - url: "/vue-element-admin/roles", - type: "get", - response: _ => { - return { - code: 20000, - data: roles - }; - } - }, - - // add role - { - url: "/vue-element-admin/role", - type: "post", - response: { - code: 20000, - data: { - key: Mock.mock("@integer(300, 5000)") - } - } - }, - - // update role - { - url: "/vue-element-admin/role/[A-Za-z0-9]", - type: "put", - response: { - code: 20000, - data: { - status: "success" - } - } - }, - - // delete role - { - url: "/vue-element-admin/role/[A-Za-z0-9]", - type: "delete", - response: { - code: 20000, - data: { - status: "success" - } - } - } -]; diff --git a/WebSite/mock/role/routes.js b/WebSite/mock/role/routes.js deleted file mode 100644 index 2eec336fc01011703472e8e3334c2168ab3f44dc..0000000000000000000000000000000000000000 --- a/WebSite/mock/role/routes.js +++ /dev/null @@ -1,525 +0,0 @@ -// Just a mock data - -export const constantRoutes = [ - { - path: "/redirect", - component: "layout/Layout", - hidden: true, - children: [ - { - path: "/redirect/:path*", - component: "views/redirect/index" - } - ] - }, - { - path: "/login", - component: "views/login/index", - hidden: true - }, - { - path: "/auth-redirect", - component: "views/login/auth-redirect", - hidden: true - }, - { - path: "/404", - component: "views/error-page/404", - hidden: true - }, - { - path: "/401", - component: "views/error-page/401", - hidden: true - }, - { - path: "", - component: "layout/Layout", - redirect: "dashboard", - children: [ - { - path: "dashboard", - component: "views/dashboard/index", - name: "Dashboard", - meta: { title: "Dashboard", icon: "dashboard", affix: true } - } - ] - }, - { - path: "/documentation", - component: "layout/Layout", - children: [ - { - path: "index", - component: "views/documentation/index", - name: "Documentation", - meta: { title: "Documentation", icon: "documentation", affix: true } - } - ] - }, - { - path: "/guide", - component: "layout/Layout", - redirect: "/guide/index", - children: [ - { - path: "index", - component: "views/guide/index", - name: "Guide", - meta: { title: "Guide", icon: "guide", noCache: true } - } - ] - } -]; - -export const asyncRoutes = [ - { - path: "/permission", - component: "layout/Layout", - redirect: "/permission/index", - alwaysShow: true, - meta: { - title: "Permission", - icon: "lock", - roles: ["admin", "editor"] - }, - children: [ - { - path: "page", - component: "views/permission/page", - name: "PagePermission", - meta: { - title: "Page Permission", - roles: ["admin"] - } - }, - { - path: "directive", - component: "views/permission/directive", - name: "DirectivePermission", - meta: { - title: "Directive Permission" - } - }, - { - path: "role", - component: "views/permission/role", - name: "RolePermission", - meta: { - title: "Role Permission", - roles: ["admin"] - } - } - ] - }, - - { - path: "/icon", - component: "layout/Layout", - children: [ - { - path: "index", - component: "views/icons/index", - name: "Icons", - meta: { title: "Icons", icon: "icon", noCache: true } - } - ] - }, - - { - path: "/components", - component: "layout/Layout", - redirect: "noRedirect", - name: "ComponentDemo", - meta: { - title: "Components", - icon: "component" - }, - children: [ - { - path: "tinymce", - component: "views/components-demo/tinymce", - name: "TinymceDemo", - meta: { title: "Tinymce" } - }, - { - path: "markdown", - component: "views/components-demo/markdown", - name: "MarkdownDemo", - meta: { title: "Markdown" } - }, - { - path: "json-editor", - component: "views/components-demo/json-editor", - name: "JsonEditorDemo", - meta: { title: "Json Editor" } - }, - { - path: "split-pane", - component: "views/components-demo/split-pane", - name: "SplitpaneDemo", - meta: { title: "SplitPane" } - }, - { - path: "avatar-upload", - component: "views/components-demo/avatar-upload", - name: "AvatarUploadDemo", - meta: { title: "Avatar Upload" } - }, - { - path: "dropzone", - component: "views/components-demo/dropzone", - name: "DropzoneDemo", - meta: { title: "Dropzone" } - }, - { - path: "sticky", - component: "views/components-demo/sticky", - name: "StickyDemo", - meta: { title: "Sticky" } - }, - { - path: "count-to", - component: "views/components-demo/count-to", - name: "CountToDemo", - meta: { title: "Count To" } - }, - { - path: "mixin", - component: "views/components-demo/mixin", - name: "ComponentMixinDemo", - meta: { title: "componentMixin" } - }, - { - path: "back-to-top", - component: "views/components-demo/back-to-top", - name: "BackToTopDemo", - meta: { title: "Back To Top" } - }, - { - path: "drag-dialog", - component: "views/components-demo/drag-dialog", - name: "DragDialogDemo", - meta: { title: "Drag Dialog" } - }, - { - path: "drag-select", - component: "views/components-demo/drag-select", - name: "DragSelectDemo", - meta: { title: "Drag Select" } - }, - { - path: "dnd-list", - component: "views/components-demo/dnd-list", - name: "DndListDemo", - meta: { title: "Dnd List" } - }, - { - path: "drag-kanban", - component: "views/components-demo/drag-kanban", - name: "DragKanbanDemo", - meta: { title: "Drag Kanban" } - } - ] - }, - { - path: "/charts", - component: "layout/Layout", - redirect: "noRedirect", - name: "Charts", - meta: { - title: "Charts", - icon: "chart" - }, - children: [ - { - path: "keyboard", - component: "views/charts/keyboard", - name: "KeyboardChart", - meta: { title: "Keyboard Chart", noCache: true } - }, - { - path: "line", - component: "views/charts/line", - name: "LineChart", - meta: { title: "Line Chart", noCache: true } - }, - { - path: "mixchart", - component: "views/charts/mixChart", - name: "MixChart", - meta: { title: "Mix Chart", noCache: true } - } - ] - }, - { - path: "/nested", - component: "layout/Layout", - redirect: "/nested/menu1/menu1-1", - name: "Nested", - meta: { - title: "Nested", - icon: "nested" - }, - children: [ - { - path: "menu1", - component: "views/nested/menu1/index", - name: "Menu1", - meta: { title: "Menu1" }, - redirect: "/nested/menu1/menu1-1", - children: [ - { - path: "menu1-1", - component: "views/nested/menu1/menu1-1", - name: "Menu1-1", - meta: { title: "Menu1-1" } - }, - { - path: "menu1-2", - component: "views/nested/menu1/menu1-2", - name: "Menu1-2", - redirect: "/nested/menu1/menu1-2/menu1-2-1", - meta: { title: "Menu1-2" }, - children: [ - { - path: "menu1-2-1", - component: "views/nested/menu1/menu1-2/menu1-2-1", - name: "Menu1-2-1", - meta: { title: "Menu1-2-1" } - }, - { - path: "menu1-2-2", - component: "views/nested/menu1/menu1-2/menu1-2-2", - name: "Menu1-2-2", - meta: { title: "Menu1-2-2" } - } - ] - }, - { - path: "menu1-3", - component: "views/nested/menu1/menu1-3", - name: "Menu1-3", - meta: { title: "Menu1-3" } - } - ] - }, - { - path: "menu2", - name: "Menu2", - component: "views/nested/menu2/index", - meta: { title: "Menu2" } - } - ] - }, - - { - path: "/example", - component: "layout/Layout", - redirect: "/example/list", - name: "Example", - meta: { - title: "Example", - icon: "example" - }, - children: [ - { - path: "create", - component: "views/example/create", - name: "CreateArticle", - meta: { title: "Create Article", icon: "edit" } - }, - { - path: "edit/:id(\\d+)", - component: "views/example/edit", - name: "EditArticle", - meta: { title: "Edit Article", noCache: true }, - hidden: true - }, - { - path: "list", - component: "views/example/list", - name: "ArticleList", - meta: { title: "Article List", icon: "list" } - } - ] - }, - - { - path: "/tab", - component: "layout/Layout", - children: [ - { - path: "index", - component: "views/tab/index", - name: "Tab", - meta: { title: "Tab", icon: "tab" } - } - ] - }, - - { - path: "/error", - component: "layout/Layout", - redirect: "noRedirect", - name: "ErrorPages", - meta: { - title: "Error Pages", - icon: "404" - }, - children: [ - { - path: "401", - component: "views/error-page/401", - name: "Page401", - meta: { title: "Page 401", noCache: true } - }, - { - path: "404", - component: "views/error-page/404", - name: "Page404", - meta: { title: "Page 404", noCache: true } - } - ] - }, - - { - path: "/error-log", - component: "layout/Layout", - redirect: "noRedirect", - children: [ - { - path: "log", - component: "views/error-log/index", - name: "ErrorLog", - meta: { title: "Error Log", icon: "bug" } - } - ] - }, - - { - path: "/excel", - component: "layout/Layout", - redirect: "/excel/export-excel", - name: "Excel", - meta: { - title: "Excel", - icon: "excel" - }, - children: [ - { - path: "export-excel", - component: "views/excel/export-excel", - name: "ExportExcel", - meta: { title: "Export Excel" } - }, - { - path: "export-selected-excel", - component: "views/excel/select-excel", - name: "SelectExcel", - meta: { title: "Select Excel" } - }, - { - path: "export-merge-header", - component: "views/excel/merge-header", - name: "MergeHeader", - meta: { title: "Merge Header" } - }, - { - path: "upload-excel", - component: "views/excel/upload-excel", - name: "UploadExcel", - meta: { title: "Upload Excel" } - } - ] - }, - - { - path: "/zip", - component: "layout/Layout", - redirect: "/zip/download", - alwaysShow: true, - meta: { title: "Zip", icon: "zip" }, - children: [ - { - path: "download", - component: "views/zip/index", - name: "ExportZip", - meta: { title: "Export Zip" } - } - ] - }, - - { - path: "/pdf", - component: "layout/Layout", - redirect: "/pdf/index", - children: [ - { - path: "index", - component: "views/pdf/index", - name: "PDF", - meta: { title: "PDF", icon: "pdf" } - } - ] - }, - { - path: "/pdf/download", - component: "views/pdf/download", - hidden: true - }, - - { - path: "/theme", - component: "layout/Layout", - redirect: "noRedirect", - children: [ - { - path: "index", - component: "views/theme/index", - name: "Theme", - meta: { title: "Theme", icon: "theme" } - } - ] - }, - - { - path: "/clipboard", - component: "layout/Layout", - redirect: "noRedirect", - children: [ - { - path: "index", - component: "views/clipboard/index", - name: "ClipboardDemo", - meta: { title: "Clipboard Demo", icon: "clipboard" } - } - ] - }, - - { - path: "/i18n", - component: "layout/Layout", - children: [ - { - path: "index", - component: "views/i18n-demo/index", - name: "I18n", - meta: { title: "I18n", icon: "international" } - } - ] - }, - - { - path: "external-link", - component: "layout/Layout", - children: [ - { - path: "https://github.com/PanJiaChen/vue-element-admin", - meta: { title: "External Link", icon: "link" } - } - ] - }, - - { path: "*", redirect: "/404", hidden: true } -]; diff --git a/WebSite/mock/user.js b/WebSite/mock/user.js deleted file mode 100644 index a544b5c69cfdffcb065aa81022c54c00c15b1e90..0000000000000000000000000000000000000000 --- a/WebSite/mock/user.js +++ /dev/null @@ -1,85 +0,0 @@ -const tokens = { - admin: { - token: "admin-token" - }, - editor: { - token: "editor-token" - } -}; - -const users = { - "admin-token": { - roles: ["admin"], - introduction: "I am a super administrator", - avatar: - "https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif", - name: "Super Admin" - }, - "editor-token": { - roles: ["editor"], - introduction: "I am an editor", - avatar: - "https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif", - name: "Normal Editor" - } -}; - -export default [ - // user login - { - url: "/vue-element-admin/user/login", - type: "post", - response: config => { - const { username } = config.body; - const token = tokens[username]; - - // mock error - if (!token) { - return { - code: 60204, - message: "Account and password are incorrect." - }; - } - - return { - code: 20000, - data: token - }; - } - }, - - // get user info - { - url: "/vue-element-admin/user/info.*", - type: "get", - response: config => { - const { token } = config.query; - const info = users[token]; - - // mock error - if (!info) { - return { - code: 50008, - message: "Login failed, unable to get user details." - }; - } - - return { - code: 20000, - data: info - }; - } - }, - - // user logout - { - url: "/vue-element-admin/user/logout", - type: "post", - response: _ => { - return { - code: 20000, - data: "success" - }; - } - } -]; diff --git a/WebSite/mock/utils.js b/WebSite/mock/utils.js new file mode 100644 index 0000000000000000000000000000000000000000..071d6d30b6c39514dc93772c046e573bf307e86a --- /dev/null +++ b/WebSite/mock/utils.js @@ -0,0 +1,55 @@ +/* + * @Description: + * @Autor: dongjunhua + * @Date: 2021-01-28 10:09:44 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-01-28 10:09:51 + */ +/** + * @param {string} url + * @returns {Object} + */ +function param2Obj(url) { + const search = decodeURIComponent(url.split('?')[1]).replace(/\+/g, ' '); + if (!search) { + return {}; + } + const obj = {}; + const searchArr = search.split('&'); + searchArr.forEach(v => { + const index = v.indexOf('='); + if (index !== -1) { + const name = v.substring(0, index); + const val = v.substring(index + 1, v.length); + obj[name] = val; + } + }); + return obj; +} + +/** + * This is just a simple version of deep copy + * Has a lot of edge cases bug + * If you want to use a perfect deep copy, use lodash's _.cloneDeep + * @param {Object} source + * @returns {Object} + */ +function deepClone(source) { + if (!source && typeof source !== 'object') { + throw new Error('error arguments', 'deepClone'); + } + const targetObj = source.constructor === Array ? [] : {}; + Object.keys(source).forEach(keys => { + if (source[keys] && typeof source[keys] === 'object') { + targetObj[keys] = deepClone(source[keys]); + } else { + targetObj[keys] = source[keys]; + } + }); + return targetObj; +} + +module.exports = { + param2Obj, + deepClone +}; diff --git a/WebSite/package-lock.json b/WebSite/package-lock.json index a7cd0ff82c115a79ef057276cc08c0d032a0d532..6a10e658d3b2e8fcaa35a9a1bca5a0f826e54259 100644 --- a/WebSite/package-lock.json +++ b/WebSite/package-lock.json @@ -1,368 +1,453 @@ { - "name": "vue-element-admin", - "version": "4.2.1", + "name": "vue-element-next", + "version": "0.8.1", "lockfileVersion": 1, "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.8.3.tgz", - "integrity": "sha1-M+JZA9dIEYFTThLsCiXxa2/PQZ4=", + "version": "7.12.11", + "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.12.11.tgz", + "integrity": "sha1-9K1DWqJj25NbjxDyxVLSP7cWpj8=", "dev": true, "requires": { - "@babel/highlight": "^7.8.3" + "@babel/highlight": "^7.10.4" } }, + "@babel/compat-data": { + "version": "7.12.7", + "resolved": "https://registry.npm.taobao.org/@babel/compat-data/download/@babel/compat-data-7.12.7.tgz", + "integrity": "sha1-kym0eCp9a71+71fhGt35HuPvHkE=", + "dev": true + }, "@babel/core": { - "version": "7.0.0", - "resolved": "https://registry.npm.taobao.org/@babel/core/download/@babel/core-7.0.0.tgz?cache=0&sync_timestamp=1583373395226&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fcore%2Fdownload%2F%40babel%2Fcore-7.0.0.tgz", - "integrity": "sha1-DLDA/S54oKK+yXaY9UmunOC5lRU=", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.0.0", - "@babel/helpers": "^7.0.0", - "@babel/parser": "^7.0.0", - "@babel/template": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@babel/types": "^7.0.0", - "convert-source-map": "^1.1.0", - "debug": "^3.1.0", - "json5": "^0.5.0", - "lodash": "^4.17.10", - "resolve": "^1.3.2", + "version": "7.12.10", + "resolved": "https://registry.npm.taobao.org/@babel/core/download/@babel/core-7.12.10.tgz?cache=0&sync_timestamp=1607569002613&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fcore%2Fdownload%2F%40babel%2Fcore-7.12.10.tgz", + "integrity": "sha1-t5ouG59w7T2Eu/ttjE74JfYGvM0=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.10", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.5", + "@babel/parser": "^7.12.10", + "@babel/template": "^7.12.7", + "@babel/traverse": "^7.12.10", + "@babel/types": "^7.12.10", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", "semver": "^5.4.1", "source-map": "^0.5.0" } }, "@babel/generator": { - "version": "7.8.7", - "resolved": "https://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.8.7.tgz", - "integrity": "sha1-hws895hPUpeZgVKvYlxPPjQUAPc=", + "version": "7.12.11", + "resolved": "https://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.12.11.tgz?cache=0&sync_timestamp=1608076804367&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fgenerator%2Fdownload%2F%40babel%2Fgenerator-7.12.11.tgz", + "integrity": "sha1-mKffe4w1jJo3qweiQFaFMBaro68=", "dev": true, "requires": { - "@babel/types": "^7.8.7", + "@babel/types": "^7.12.11", "jsesc": "^2.5.1", - "lodash": "^4.17.13", "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/helper-annotate-as-pure/download/@babel/helper-annotate-as-pure-7.8.3.tgz", - "integrity": "sha1-YLwLxlf2Ogkk/5pLSgskoTz03u4=", + "version": "7.12.10", + "resolved": "https://registry.npm.taobao.org/@babel/helper-annotate-as-pure/download/@babel/helper-annotate-as-pure-7.12.10.tgz?cache=0&sync_timestamp=1607583990559&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-annotate-as-pure%2Fdownload%2F%40babel%2Fhelper-annotate-as-pure-7.12.10.tgz", + "integrity": "sha1-VKubAA5gqTZEzhez830xOq8dEV0=", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.10" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/helper-builder-binary-assignment-operator-visitor/download/@babel/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz", - "integrity": "sha1-yECXpCegYaxWocMOv1S3si0kFQM=", + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/helper-builder-binary-assignment-operator-visitor/download/@babel/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha1-uwt18xv5jL+f8UPBrleLhydK4aM=", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" } }, - "@babel/helper-call-delegate": { - "version": "7.8.7", - "resolved": "https://registry.npm.taobao.org/@babel/helper-call-delegate/download/@babel/helper-call-delegate-7.8.7.tgz", - "integrity": "sha1-KKJ5wubGIqYjPaVIEn+YB1EyTKs=", + "@babel/helper-compilation-targets": { + "version": "7.12.5", + "resolved": "https://registry.npm.taobao.org/@babel/helper-compilation-targets/download/@babel/helper-compilation-targets-7.12.5.tgz", + "integrity": "sha1-y0cMdhmNtqJOnbyJhydWMeXSmDE=", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.7" + "@babel/compat-data": "^7.12.5", + "@babel/helper-validator-option": "^7.12.1", + "browserslist": "^4.14.5", + "semver": "^5.5.0" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.8.6", - "resolved": "https://registry.npm.taobao.org/@babel/helper-create-class-features-plugin/download/@babel/helper-create-class-features-plugin-7.8.6.tgz", - "integrity": "sha1-JDpbRuL48PZ03BOHYx62souFHeA=", + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/helper-create-class-features-plugin/download/@babel/helper-create-class-features-plugin-7.12.1.tgz", + "integrity": "sha1-PEWZj0Me3UqSFMXx060USKYTf24=", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-member-expression-to-functions": "^7.8.3", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.6", - "@babel/helper-split-export-declaration": "^7.8.3" + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.8.6", - "resolved": "https://registry.npm.taobao.org/@babel/helper-create-regexp-features-plugin/download/@babel/helper-create-regexp-features-plugin-7.8.6.tgz?cache=0&sync_timestamp=1582806206622&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-create-regexp-features-plugin%2Fdownload%2F%40babel%2Fhelper-create-regexp-features-plugin-7.8.6.tgz", - "integrity": "sha1-f6BAyX+4rr4SR6XGRTMMMtCDBms=", + "version": "7.12.7", + "resolved": "https://registry.npm.taobao.org/@babel/helper-create-regexp-features-plugin/download/@babel/helper-create-regexp-features-plugin-7.12.7.tgz", + "integrity": "sha1-IIQXLpVEP6CgkhS6G7Mo+a6hJ48=", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-regex": "^7.8.3", - "regexpu-core": "^4.6.0" + "@babel/helper-annotate-as-pure": "^7.10.4", + "regexpu-core": "^4.7.1" } }, "@babel/helper-define-map": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/helper-define-map/download/@babel/helper-define-map-7.8.3.tgz", - "integrity": "sha1-oGVcrVRRw3YLcm66h18c2PqgLBU=", + "version": "7.10.5", + "resolved": "https://registry.npm.taobao.org/@babel/helper-define-map/download/@babel/helper-define-map-7.10.5.tgz", + "integrity": "sha1-tTwQ23imQIABUmkrEzkxR6y5uzA=", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/types": "^7.8.3", - "lodash": "^4.17.13" + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" } }, "@babel/helper-explode-assignable-expression": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/helper-explode-assignable-expression/download/@babel/helper-explode-assignable-expression-7.8.3.tgz", - "integrity": "sha1-pyjcW06J4w/C38fQT6KKkwZT+YI=", + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/helper-explode-assignable-expression/download/@babel/helper-explode-assignable-expression-7.12.1.tgz", + "integrity": "sha1-gAakZmlcSthqKl8vsVtfLDGtVjM=", "dev": true, "requires": { - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" } }, "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.8.3.tgz?cache=0&sync_timestamp=1578980714632&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-function-name%2Fdownload%2F%40babel%2Fhelper-function-name-7.8.3.tgz", - "integrity": "sha1-7utmWgGx8RBo6fuGrVahyxqCTMo=", + "version": "7.12.11", + "resolved": "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.12.11.tgz?cache=0&sync_timestamp=1608076808489&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-function-name%2Fdownload%2F%40babel%2Fhelper-function-name-7.12.11.tgz", + "integrity": "sha1-H9dziu5dz1PD7P8k8dqcUR7Ee0I=", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-get-function-arity": "^7.12.10", + "@babel/template": "^7.12.7", + "@babel/types": "^7.12.11" } }, "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.8.3.tgz?cache=0&sync_timestamp=1578980710093&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-get-function-arity%2Fdownload%2F%40babel%2Fhelper-get-function-arity-7.8.3.tgz", - "integrity": "sha1-uJS5R70AQ4HOY+odufCFR+kgq9U=", + "version": "7.12.10", + "resolved": "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.12.10.tgz?cache=0&sync_timestamp=1607584582871&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-get-function-arity%2Fdownload%2F%40babel%2Fhelper-get-function-arity-7.12.10.tgz", + "integrity": "sha1-sViBejFltfqiBHgl36YZcN3MFs8=", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.10" } }, "@babel/helper-hoist-variables": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/helper-hoist-variables/download/@babel/helper-hoist-variables-7.8.3.tgz", - "integrity": "sha1-Hb6ba1XXjJtBg/yM3G4wzrg7cTQ=", + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/helper-hoist-variables/download/@babel/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha1-1JsAHR1aaMpeZgTdoBpil/fJOB4=", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/helper-member-expression-to-functions/download/@babel/helper-member-expression-to-functions-7.8.3.tgz", - "integrity": "sha1-ZZtxBJjqbB2ZB+DHPyBu7n2twkw=", + "version": "7.12.7", + "resolved": "https://registry.npm.taobao.org/@babel/helper-member-expression-to-functions/download/@babel/helper-member-expression-to-functions-7.12.7.tgz", + "integrity": "sha1-qne9A5bsgRTl4weH76eFmdh0qFU=", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.7" } }, "@babel/helper-module-imports": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/helper-module-imports/download/@babel/helper-module-imports-7.8.3.tgz", - "integrity": "sha1-f+OVibOcAWMxtrjD9EHo8LFBlJg=", + "version": "7.12.5", + "resolved": "https://registry.npm.taobao.org/@babel/helper-module-imports/download/@babel/helper-module-imports-7.12.5.tgz?cache=0&sync_timestamp=1604441102741&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-module-imports%2Fdownload%2F%40babel%2Fhelper-module-imports-7.12.5.tgz", + "integrity": "sha1-G/wCKfeUmI927QpNTpCGCFC1Tfs=", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.5" } }, "@babel/helper-module-transforms": { - "version": "7.8.6", - "resolved": "https://registry.npm.taobao.org/@babel/helper-module-transforms/download/@babel/helper-module-transforms-7.8.6.tgz", - "integrity": "sha1-ahO17srcNWkgRwc6ZOQpd7l2VKQ=", + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/helper-module-transforms/download/@babel/helper-module-transforms-7.12.1.tgz", + "integrity": "sha1-eVT+xx9bMsSOSzA7Q3w0RT/XJHw=", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.6", - "@babel/helper-simple-access": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/template": "^7.8.6", - "@babel/types": "^7.8.6", - "lodash": "^4.17.13" + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-simple-access": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/helper-validator-identifier": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "lodash": "^4.17.19" } }, "@babel/helper-optimise-call-expression": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/helper-optimise-call-expression/download/@babel/helper-optimise-call-expression-7.8.3.tgz", - "integrity": "sha1-ftBxgT0Jx1KY708giVYAa2ER7Lk=", + "version": "7.12.10", + "resolved": "https://registry.npm.taobao.org/@babel/helper-optimise-call-expression/download/@babel/helper-optimise-call-expression-7.12.10.tgz?cache=0&sync_timestamp=1607576932268&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-optimise-call-expression%2Fdownload%2F%40babel%2Fhelper-optimise-call-expression-7.12.10.tgz", + "integrity": "sha1-lMpOMG7hGn3W6fQoI+Ksa0mIHi0=", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.10" } }, "@babel/helper-plugin-utils": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.8.3.tgz", - "integrity": "sha1-nqKTvhm6vA9S/4yoizTDYRsghnA=", + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=", "dev": true }, - "@babel/helper-regex": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/helper-regex/download/@babel/helper-regex-7.8.3.tgz", - "integrity": "sha1-E5dyYH1RuT8j7/5yEFsxnSpMaWU=", + "@babel/helper-remap-async-to-generator": { + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/helper-remap-async-to-generator/download/@babel/helper-remap-async-to-generator-7.12.1.tgz", + "integrity": "sha1-jE27+RYxT2BH3AXmoiFwdCODR/0=", "dev": true, "requires": { - "lodash": "^4.17.13" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/types": "^7.12.1" } }, - "@babel/helper-remap-async-to-generator": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/helper-remap-async-to-generator/download/@babel/helper-remap-async-to-generator-7.8.3.tgz", - "integrity": "sha1-JzxgDYub9QBhQsHjWIfVVcEu3YY=", + "@babel/helper-replace-supers": { + "version": "7.12.11", + "resolved": "https://registry.npm.taobao.org/@babel/helper-replace-supers/download/@babel/helper-replace-supers-7.12.11.tgz?cache=0&sync_timestamp=1608076803456&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-replace-supers%2Fdownload%2F%40babel%2Fhelper-replace-supers-7.12.11.tgz", + "integrity": "sha1-6lEWWPxmx5CPkjEG3YjgjRmX1g0=", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-wrap-function": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-member-expression-to-functions": "^7.12.7", + "@babel/helper-optimise-call-expression": "^7.12.10", + "@babel/traverse": "^7.12.10", + "@babel/types": "^7.12.11" } }, - "@babel/helper-replace-supers": { - "version": "7.8.6", - "resolved": "https://registry.npm.taobao.org/@babel/helper-replace-supers/download/@babel/helper-replace-supers-7.8.6.tgz?cache=0&sync_timestamp=1582807511441&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-replace-supers%2Fdownload%2F%40babel%2Fhelper-replace-supers-7.8.6.tgz", - "integrity": "sha1-Wtp0T9WtcyA78dZ0WaJ9y6Z+/8g=", + "@babel/helper-simple-access": { + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/helper-simple-access/download/@babel/helper-simple-access-7.12.1.tgz?cache=0&sync_timestamp=1602802634851&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-simple-access%2Fdownload%2F%40babel%2Fhelper-simple-access-7.12.1.tgz", + "integrity": "sha1-MkJ+WqYVR9OOsebq9f0UJv2tkTY=", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.8.3", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/traverse": "^7.8.6", - "@babel/types": "^7.8.6" + "@babel/types": "^7.12.1" } }, - "@babel/helper-simple-access": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/helper-simple-access/download/@babel/helper-simple-access-7.8.3.tgz", - "integrity": "sha1-f4EJkotNq0ZUB2mGr1dSMd62Oa4=", + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/helper-skip-transparent-expression-wrappers/download/@babel/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha1-Ri3GOn5DWt6EaDhcY9K4TM5LPL8=", "dev": true, "requires": { - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.1" } }, "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.8.3.tgz?cache=0&sync_timestamp=1578980712591&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-split-export-declaration%2Fdownload%2F%40babel%2Fhelper-split-export-declaration-7.8.3.tgz", - "integrity": "sha1-ManzAHD5E2inGCzwX4MXgQZfx6k=", + "version": "7.12.11", + "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.12.11.tgz?cache=0&sync_timestamp=1608076804774&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-split-export-declaration%2Fdownload%2F%40babel%2Fhelper-split-export-declaration-7.12.11.tgz", + "integrity": "sha1-G0zEJEWGQ8R9NwIiI9oz126kYDo=", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/types": "^7.12.11" } }, + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npm.taobao.org/@babel/helper-validator-identifier/download/@babel/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha1-yaHwIZF9y1zPDU5FPjmQIpgfye0=" + }, + "@babel/helper-validator-option": { + "version": "7.12.11", + "resolved": "https://registry.npm.taobao.org/@babel/helper-validator-option/download/@babel/helper-validator-option-7.12.11.tgz", + "integrity": "sha1-1my4t6Pn/kxpYrMgIKEx7PCEf08=", + "dev": true + }, "@babel/helper-wrap-function": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/helper-wrap-function/download/@babel/helper-wrap-function-7.8.3.tgz", - "integrity": "sha1-nb2yu1XvFKqgH+jJm2Kb1TUthhA=", + "version": "7.12.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-wrap-function/download/@babel/helper-wrap-function-7.12.3.tgz", + "integrity": "sha1-MzIzn8TR+78cJ9eVjCfTRwjpkNk=", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helpers": { - "version": "7.8.4", - "resolved": "https://registry.npm.taobao.org/@babel/helpers/download/@babel/helpers-7.8.4.tgz", - "integrity": "sha1-dU6z7nJ8Fl4KJA1sIH3nxFXzb3M=", + "version": "7.12.5", + "resolved": "https://registry.npm.taobao.org/@babel/helpers/download/@babel/helpers-7.12.5.tgz", + "integrity": "sha1-Ghukp2jZtYMQ7aUWxEmRP+ZHEW4=", "dev": true, "requires": { - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.4", - "@babel/types": "^7.8.3" + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" } }, "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.8.3.tgz", - "integrity": "sha1-KPFz0EIj6qpZvB1Dmjg25tEmV5c=", + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.10.4.tgz", + "integrity": "sha1-fRvf1ldTU4+r5sOFls23bZrGAUM=", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.8.7", - "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.8.7.tgz", - "integrity": "sha1-e4+s+V0l/vlTSq1RxP/s3hph4mo=", - "dev": true + "version": "7.12.11", + "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.12.11.tgz?cache=0&sync_timestamp=1608076801657&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fparser%2Fdownload%2F%40babel%2Fparser-7.12.11.tgz", + "integrity": "sha1-nONZW810vFxGaQXobFNbiyUBHnk=" }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-async-generator-functions/download/@babel/plugin-proposal-async-generator-functions-7.8.3.tgz", - "integrity": "sha1-utMpxnCzgliXIbJ1QMfSiGAcbm8=", + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-async-generator-functions/download/@babel/plugin-proposal-async-generator-functions-7.12.1.tgz?cache=0&sync_timestamp=1602802638761&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-async-generator-functions%2Fdownload%2F%40babel%2Fplugin-proposal-async-generator-functions-7.12.1.tgz", + "integrity": "sha1-3GwRcOJ9isqZ/2X0klvQaxyQVQ4=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1", "@babel/plugin-syntax-async-generators": "^7.8.0" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-class-properties/download/@babel/plugin-proposal-class-properties-7.8.3.tgz", - "integrity": "sha1-XgZlSvXNBLYIkVqtqbKmeIAERk4=", + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-class-properties/download/@babel/plugin-proposal-class-properties-7.12.1.tgz?cache=0&sync_timestamp=1602802520476&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-class-properties%2Fdownload%2F%40babel%2Fplugin-proposal-class-properties-7.12.1.tgz", + "integrity": "sha1-oIL/VB8qKaSCEGW4rdk0bAwW5d4=", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-proposal-decorators": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-decorators/download/@babel/plugin-proposal-decorators-7.8.3.tgz", - "integrity": "sha1-IVaGCrZcWr8GjD9nBCGEBBBmVD4=", + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-decorators/download/@babel/plugin-proposal-decorators-7.12.1.tgz", + "integrity": "sha1-WScUOf7UFFRWxBBnRQVDruMy0V8=", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-decorators": "^7.12.1" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-dynamic-import/download/@babel/plugin-proposal-dynamic-import-7.12.1.tgz?cache=0&sync_timestamp=1602802624550&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-dynamic-import%2Fdownload%2F%40babel%2Fplugin-proposal-dynamic-import-7.12.1.tgz", + "integrity": "sha1-Q+tcKjSH7NmMXI6otf22midJstw=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-export-namespace-from/download/@babel/plugin-proposal-export-namespace-from-7.12.1.tgz?cache=0&sync_timestamp=1602802622582&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-export-namespace-from%2Fdownload%2F%40babel%2Fplugin-proposal-export-namespace-from-7.12.1.tgz", + "integrity": "sha1-i5uPN2stiPXdd05NJKXMLjZ5ttQ=", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-decorators": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-json-strings/download/@babel/plugin-proposal-json-strings-7.8.3.tgz", - "integrity": "sha1-2lIWsjipi1ih4F1oUhBLEPmnDWs=", + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-json-strings/download/@babel/plugin-proposal-json-strings-7.12.1.tgz", + "integrity": "sha1-1FQjtRdxTu3VYhqd/cA/qfTrJBw=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.0" } }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-logical-assignment-operators/download/@babel/plugin-proposal-logical-assignment-operators-7.12.1.tgz?cache=0&sync_timestamp=1602802623336&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-logical-assignment-operators%2Fdownload%2F%40babel%2Fplugin-proposal-logical-assignment-operators-7.12.1.tgz", + "integrity": "sha1-8sSQ024bPJZZJBA0pdLNUCY6J1E=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-nullish-coalescing-operator/download/@babel/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz?cache=0&sync_timestamp=1602802623075&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-nullish-coalescing-operator%2Fdownload%2F%40babel%2Fplugin-proposal-nullish-coalescing-operator-7.12.1.tgz", + "integrity": "sha1-PtT/8xwBXn8/FGfxkNvlRc17BGw=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.12.7", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-numeric-separator/download/@babel/plugin-proposal-numeric-separator-7.12.7.tgz", + "integrity": "sha1-i/JT3oE5CZ/qGTspfSOp1AbvBWs=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-object-rest-spread/download/@babel/plugin-proposal-object-rest-spread-7.8.3.tgz", - "integrity": "sha1-61rjZhGN3KZ77Vg7U9dVTK2ZUbs=", + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-object-rest-spread/download/@babel/plugin-proposal-object-rest-spread-7.12.1.tgz?cache=0&sync_timestamp=1602802329071&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-object-rest-spread%2Fdownload%2F%40babel%2Fplugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha1-3vm9A86g+bcig9rA7CLSicdpEGk=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.1" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-optional-catch-binding/download/@babel/plugin-proposal-optional-catch-binding-7.8.3.tgz", - "integrity": "sha1-ne6WqxZQ7tiGRq6XNMoWesSpxck=", + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-optional-catch-binding/download/@babel/plugin-proposal-optional-catch-binding-7.12.1.tgz?cache=0&sync_timestamp=1602802625025&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-optional-catch-binding%2Fdownload%2F%40babel%2Fplugin-proposal-optional-catch-binding-7.12.1.tgz", + "integrity": "sha1-zMJCGvZNOq5QtVinHO3pKaWrKUI=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" } }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.12.7", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-optional-chaining/download/@babel/plugin-proposal-optional-chaining-7.12.7.tgz", + "integrity": "sha1-4C8OobXcWdQB7Bb7gkZ59oPTMDw=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-private-methods/download/@babel/plugin-proposal-private-methods-7.12.1.tgz", + "integrity": "sha1-hoFPbnohN0yYDBDTi0ST5wP0o4k=", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-unicode-property-regex/download/@babel/plugin-proposal-unicode-property-regex-7.8.3.tgz", - "integrity": "sha1-tkbDrepfmIAMmrRRBaw00GzUpH8=", + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-unicode-property-regex/download/@babel/plugin-proposal-unicode-property-regex-7.12.1.tgz?cache=0&sync_timestamp=1602802514976&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-unicode-property-regex%2Fdownload%2F%40babel%2Fplugin-proposal-unicode-property-regex-7.12.1.tgz", + "integrity": "sha1-Khg5WNQXdluerjNPR3WOXWqC4HI=", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-async-generators": { @@ -374,13 +459,22 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-class-properties/download/@babel/plugin-syntax-class-properties-7.12.1.tgz?cache=0&sync_timestamp=1602802624701&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-syntax-class-properties%2Fdownload%2F%40babel%2Fplugin-syntax-class-properties-7.12.1.tgz", + "integrity": "sha1-vLKXxTZueb663vUJVJzZOwTxmXg=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-syntax-decorators": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-decorators/download/@babel/plugin-syntax-decorators-7.8.3.tgz", - "integrity": "sha1-jSwVqfGvYksAJflhaCqdU9MAG9o=", + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-decorators/download/@babel/plugin-syntax-decorators-7.12.1.tgz?cache=0&sync_timestamp=1602802624858&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-syntax-decorators%2Fdownload%2F%40babel%2Fplugin-syntax-decorators-7.12.1.tgz", + "integrity": "sha1-gai1NbKER2xBvm3gaFOogCuYxd0=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-dynamic-import": { @@ -392,6 +486,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-export-namespace-from/download/@babel/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha1-AolkqbqA28CUyRXEh618TnpmRlo=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, "@babel/plugin-syntax-json-strings": { "version": "7.8.3", "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-json-strings/download/@babel/plugin-syntax-json-strings-7.8.3.tgz", @@ -402,12 +505,39 @@ } }, "@babel/plugin-syntax-jsx": { + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-jsx/download/@babel/plugin-syntax-jsx-7.12.1.tgz", + "integrity": "sha1-nZ01fMgYqnrnk1kXwSV/Z2d6CSY=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-logical-assignment-operators/download/@babel/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha1-ypHvRjA1MESLkGZSusLp/plB9pk=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-jsx/download/@babel/plugin-syntax-jsx-7.8.3.tgz", - "integrity": "sha1-UhsGyDxASA8eWLT9M7kuzrHW6pQ=", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-nullish-coalescing-operator/download/@babel/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha1-Fn7XA2iIYIH3S1w2xlqIwDtm0ak=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-numeric-separator/download/@babel/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha1-ubBws+M1cM2f0Hun+pHA3Te5r5c=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-object-rest-spread": { @@ -428,458 +558,491 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, - "@babel/plugin-transform-arrow-functions": { + "@babel/plugin-syntax-optional-chaining": { "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-arrow-functions/download/@babel/plugin-transform-arrow-functions-7.8.3.tgz", - "integrity": "sha1-gndsLtDNnhpJlW2uuJYCTJRzuLY=", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-optional-chaining/download/@babel/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha1-T2nCq5UWfgGAzVM2YT+MV4j31Io=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-top-level-await/download/@babel/plugin-syntax-top-level-await-7.12.1.tgz?cache=0&sync_timestamp=1602802626493&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-syntax-top-level-await%2Fdownload%2F%40babel%2Fplugin-syntax-top-level-await-7.12.1.tgz", + "integrity": "sha1-3WwLNXrBuxQtmFN0UKMZYl0T0qA=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-arrow-functions/download/@babel/plugin-transform-arrow-functions-7.12.1.tgz", + "integrity": "sha1-gIP/yGrI53f74ktZZ8SyUh88srM=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-async-to-generator/download/@babel/plugin-transform-async-to-generator-7.8.3.tgz", - "integrity": "sha1-Qwj60NlAnXHq+5sabuNfnWS2QIY=", + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-async-to-generator/download/@babel/plugin-transform-async-to-generator-7.12.1.tgz", + "integrity": "sha1-OEmknMKiLpdDy9a1KSbTAzcimvE=", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3" + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-block-scoped-functions/download/@babel/plugin-transform-block-scoped-functions-7.8.3.tgz", - "integrity": "sha1-Q37sW3mbWFIHIISzrl72boNJ6KM=", + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-block-scoped-functions/download/@babel/plugin-transform-block-scoped-functions-7.12.1.tgz", + "integrity": "sha1-8qGjZb3itxEuCm3tkGf918B5Bdk=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-block-scoping/download/@babel/plugin-transform-block-scoping-7.8.3.tgz", - "integrity": "sha1-l9Ndq2aFekN8FmNYuR0JBQyGjzo=", + "version": "7.12.11", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-block-scoping/download/@babel/plugin-transform-block-scoping-7.12.11.tgz?cache=0&sync_timestamp=1608074943321&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-block-scoping%2Fdownload%2F%40babel%2Fplugin-transform-block-scoping-7.12.11.tgz", + "integrity": "sha1-g66SoQTbuTp9bG3RhE81EIPEa08=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "lodash": "^4.17.13" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-classes": { - "version": "7.8.6", - "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-classes/download/@babel/plugin-transform-classes-7.8.6.tgz?cache=0&sync_timestamp=1582806192447&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-classes%2Fdownload%2F%40babel%2Fplugin-transform-classes-7.8.6.tgz", - "integrity": "sha1-d1NER6R3y+WZWuSu4+OfvICQxG0=", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-define-map": "^7.8.3", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.6", - "@babel/helper-split-export-declaration": "^7.8.3", + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-classes/download/@babel/plugin-transform-classes-7.12.1.tgz?cache=0&sync_timestamp=1602802519287&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-classes%2Fdownload%2F%40babel%2Fplugin-transform-classes-7.12.1.tgz", + "integrity": "sha1-ZeZQ/K3dPYjdzmfA+DSj1DajLbY=", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-computed-properties/download/@babel/plugin-transform-computed-properties-7.8.3.tgz", - "integrity": "sha1-ltDSi3985OtbEguy4OlDNDyG+Bs=", + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-computed-properties/download/@babel/plugin-transform-computed-properties-7.12.1.tgz?cache=0&sync_timestamp=1602802627593&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-computed-properties%2Fdownload%2F%40babel%2Fplugin-transform-computed-properties-7.12.1.tgz", + "integrity": "sha1-1oz2ybf4OKikFEutvpdUHqCQSFI=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-destructuring": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-destructuring/download/@babel/plugin-transform-destructuring-7.8.3.tgz", - "integrity": "sha1-IN372eRnaQaxBW7mCviFkMx6qgs=", + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-destructuring/download/@babel/plugin-transform-destructuring-7.12.1.tgz", + "integrity": "sha1-uaVw/g0KjUYBFkE8tPl+jgiy+Ec=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-dotall-regex/download/@babel/plugin-transform-dotall-regex-7.8.3.tgz", - "integrity": "sha1-w8bsXuYSXGmTxcvKINyGIanqem4=", + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-dotall-regex/download/@babel/plugin-transform-dotall-regex-7.12.1.tgz?cache=0&sync_timestamp=1602802515252&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-dotall-regex%2Fdownload%2F%40babel%2Fplugin-transform-dotall-regex-7.12.1.tgz", + "integrity": "sha1-odFsFIYoF7ZAnApnjW+Tc8qc2XU=", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-duplicate-keys/download/@babel/plugin-transform-duplicate-keys-7.8.3.tgz", - "integrity": "sha1-jRLfMJqlN/JyiZxWXqF2jihuIfE=", + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-duplicate-keys/download/@babel/plugin-transform-duplicate-keys-7.12.1.tgz", + "integrity": "sha1-dFZhuropWsBuaGgieXpp+6osoig=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-exponentiation-operator/download/@babel/plugin-transform-exponentiation-operator-7.8.3.tgz", - "integrity": "sha1-WBptf1aXDga/UVYM1k9elHtw17c=", + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-exponentiation-operator/download/@babel/plugin-transform-exponentiation-operator-7.12.1.tgz", + "integrity": "sha1-sPLtNWuhvhQo7K8Sj/iiTwKDCuA=", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-for-of": { - "version": "7.8.6", - "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-for-of/download/@babel/plugin-transform-for-of-7.8.6.tgz?cache=0&sync_timestamp=1582807505906&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-for-of%2Fdownload%2F%40babel%2Fplugin-transform-for-of-7.8.6.tgz", - "integrity": "sha1-oFG9G0AsYa+Xon/1G0aDIcfCoIU=", + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-for-of/download/@babel/plugin-transform-for-of-7.12.1.tgz", + "integrity": "sha1-B2QPKIZ+0W+VEcmciIKR9WCSHPo=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-function-name/download/@babel/plugin-transform-function-name-7.8.3.tgz", - "integrity": "sha1-J5NzyycyKqrWfCaD53bfxHGW7Ys=", + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-function-name/download/@babel/plugin-transform-function-name-7.12.1.tgz", + "integrity": "sha1-LsdiWMcP4IxtfaFUADpIBiDrpmc=", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-literals": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-literals/download/@babel/plugin-transform-literals-7.8.3.tgz", - "integrity": "sha1-rvI5gj2RmU7Hto5VGTUl1229XcE=", + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-literals/download/@babel/plugin-transform-literals-7.12.1.tgz", + "integrity": "sha1-1zuAOiazcBfd+dO7j03Fi/uAb1c=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-member-expression-literals/download/@babel/plugin-transform-member-expression-literals-7.12.1.tgz?cache=0&sync_timestamp=1602802629539&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-member-expression-literals%2Fdownload%2F%40babel%2Fplugin-transform-member-expression-literals-7.12.1.tgz", + "integrity": "sha1-SWA4YC2vFRSmTUPY4Xy7J1Xgw60=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-amd/download/@babel/plugin-transform-modules-amd-7.8.3.tgz", - "integrity": "sha1-ZWBtRGFrUCJedvVXjzPFaKC4dqU=", + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-amd/download/@babel/plugin-transform-modules-amd-7.12.1.tgz", + "integrity": "sha1-MVQwCwJhhWZu67DA7X+EFf789vk=", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-commonjs/download/@babel/plugin-transform-modules-commonjs-7.8.3.tgz", - "integrity": "sha1-3yUXBuwzG9BYo0vdcmE5FfgpKKU=", + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-commonjs/download/@babel/plugin-transform-modules-commonjs-7.12.1.tgz?cache=0&sync_timestamp=1602802521057&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-modules-commonjs%2Fdownload%2F%40babel%2Fplugin-transform-modules-commonjs-7.12.1.tgz", + "integrity": "sha1-+kAxJFQmNseGz5tGCg/7tIqG5kg=", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-simple-access": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.12.1", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-systemjs/download/@babel/plugin-transform-modules-systemjs-7.8.3.tgz", - "integrity": "sha1-2LvyIsHb42YfRA8vAMFum7fQ1CA=", + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-systemjs/download/@babel/plugin-transform-modules-systemjs-7.12.1.tgz?cache=0&sync_timestamp=1602802350800&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-modules-systemjs%2Fdownload%2F%40babel%2Fplugin-transform-modules-systemjs-7.12.1.tgz", + "integrity": "sha1-Zj/qYg1ZPJPyFKRkzTmb9txoMIY=", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.8.3", - "@babel/helper-module-transforms": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-identifier": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-umd/download/@babel/plugin-transform-modules-umd-7.8.3.tgz", - "integrity": "sha1-WS1XjOBsUvW5iwL5E9ZT/+lyZho=", + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-umd/download/@babel/plugin-transform-modules-umd-7.12.1.tgz", + "integrity": "sha1-61ohjWscaPPWIXuPosyC/sZUeQI=", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-named-capturing-groups-regex/download/@babel/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", - "integrity": "sha1-oqcr/6ICrA4tBQav0JOcXsvEjGw=", + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-named-capturing-groups-regex/download/@babel/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", + "integrity": "sha1-tAf1yWvg2fX4hGdJf6grMKw+h1M=", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.12.1" } }, "@babel/plugin-transform-new-target": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-new-target/download/@babel/plugin-transform-new-target-7.8.3.tgz", - "integrity": "sha1-YMwq5m2FyVq1QOs0urtkNNTHDEM=", + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-new-target/download/@babel/plugin-transform-new-target-7.12.1.tgz?cache=0&sync_timestamp=1602802505443&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-new-target%2Fdownload%2F%40babel%2Fplugin-transform-new-target-7.12.1.tgz", + "integrity": "sha1-gAc/Au4bstNlw0FkkOCFyVdZ3sA=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-object-super": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-object-super/download/@babel/plugin-transform-object-super-7.8.3.tgz", - "integrity": "sha1-67ah56hv+paFi9asAQLWWUQmFyU=", + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-object-super/download/@babel/plugin-transform-object-super-7.12.1.tgz?cache=0&sync_timestamp=1602802640327&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-object-super%2Fdownload%2F%40babel%2Fplugin-transform-object-super-7.12.1.tgz", + "integrity": "sha1-TqCGlrjS5lhB0MdwZIKwSL7RBm4=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1" } }, "@babel/plugin-transform-parameters": { - "version": "7.8.7", - "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-parameters/download/@babel/plugin-transform-parameters-7.8.7.tgz", - "integrity": "sha1-ZvovHeQSm04ER1CSI6xxvaSVU5U=", + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-parameters/download/@babel/plugin-transform-parameters-7.12.1.tgz", + "integrity": "sha1-0uljsDh3FlDJIu/1k3mclthTJV0=", "dev": true, "requires": { - "@babel/helper-call-delegate": "^7.8.7", - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-property-literals/download/@babel/plugin-transform-property-literals-7.12.1.tgz", + "integrity": "sha1-QbyBIA1zCrtEVquLP71VN7Wa3s0=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-regenerator": { - "version": "7.8.7", - "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-regenerator/download/@babel/plugin-transform-regenerator-7.8.7.tgz", - "integrity": "sha1-Xkag3KK+4a2ChesFJ+arycN2cvg=", + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-regenerator/download/@babel/plugin-transform-regenerator-7.12.1.tgz", + "integrity": "sha1-Xwoo2EL2RiKB8GqWToi6jXq0l1M=", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, + "@babel/plugin-transform-reserved-words": { + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-reserved-words/download/@babel/plugin-transform-reserved-words-7.12.1.tgz", + "integrity": "sha1-b9/IzH7cxCs2p8EhiMZ4fIc63Ng=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-transform-runtime": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-runtime/download/@babel/plugin-transform-runtime-7.8.3.tgz", - "integrity": "sha1-wBU7wKU3XrwfFZHLfuoiOt6p8Wk=", + "version": "7.12.10", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-runtime/download/@babel/plugin-transform-runtime-7.12.10.tgz?cache=0&sync_timestamp=1607569369088&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-runtime%2Fdownload%2F%40babel%2Fplugin-transform-runtime-7.12.10.tgz", + "integrity": "sha1-rw/e1OhGxLNweOjl0G3qxs2EhWI=", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "resolve": "^1.8.1", + "@babel/helper-module-imports": "^7.12.5", + "@babel/helper-plugin-utils": "^7.10.4", "semver": "^5.5.1" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-shorthand-properties/download/@babel/plugin-transform-shorthand-properties-7.8.3.tgz", - "integrity": "sha1-KFRSFuAjqDLU06EYXtSSvP6sCMg=", + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-shorthand-properties/download/@babel/plugin-transform-shorthand-properties-7.12.1.tgz", + "integrity": "sha1-C/nKxVUPzgz98ENCD2YdZF/cdeM=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-spread": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-spread/download/@babel/plugin-transform-spread-7.8.3.tgz", - "integrity": "sha1-nI/+gXD9+4ixFOy5ILgvtulf5eg=", + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-spread/download/@babel/plugin-transform-spread-7.12.1.tgz?cache=0&sync_timestamp=1602802639374&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-spread%2Fdownload%2F%40babel%2Fplugin-transform-spread-7.12.1.tgz", + "integrity": "sha1-Un+fMRvk7H/cK3m7ife/iEs+Hh4=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-sticky-regex/download/@babel/plugin-transform-sticky-regex-7.8.3.tgz", - "integrity": "sha1-vnoSkPgdrnZ0dUUhmeH3bWF1sQA=", + "version": "7.12.7", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-sticky-regex/download/@babel/plugin-transform-sticky-regex-7.12.7.tgz", + "integrity": "sha1-VgIkYTqyOYdFOUjtIdCwsZP6f60=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-regex": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-template-literals": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-template-literals/download/@babel/plugin-transform-template-literals-7.8.3.tgz", - "integrity": "sha1-e/pHMrRV6mpDEwrcC6dn7A5AKoA=", + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-template-literals/download/@babel/plugin-transform-template-literals-7.12.1.tgz", + "integrity": "sha1-tD7ObtmnnAxxEZ9XbSme8J2UKEM=", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.8.4", - "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-typeof-symbol/download/@babel/plugin-transform-typeof-symbol-7.8.4.tgz", - "integrity": "sha1-7eQGIxXOCq+KZXqSCFjxovNfxBI=", + "version": "7.12.10", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-typeof-symbol/download/@babel/plugin-transform-typeof-symbol-7.12.10.tgz?cache=0&sync_timestamp=1607569558495&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-typeof-symbol%2Fdownload%2F%40babel%2Fplugin-transform-typeof-symbol-7.12.10.tgz", + "integrity": "sha1-3gHEyPllgL0A8YMHKw0Ozc8N7Es=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.8.3", - "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-unicode-regex/download/@babel/plugin-transform-unicode-regex-7.8.3.tgz", - "integrity": "sha1-DO8247pz5cVyc+/7GC9GuRoeyq0=", + "@babel/plugin-transform-unicode-escapes": { + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-unicode-escapes/download/@babel/plugin-transform-unicode-escapes-7.12.1.tgz", + "integrity": "sha1-UjK5+BzLBwcLfDw2xnobePGEVwk=", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, - "@babel/preset-env": { - "version": "7.3.4", - "resolved": "https://registry.npm.taobao.org/@babel/preset-env/download/@babel/preset-env-7.3.4.tgz?cache=0&sync_timestamp=1583373395373&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fpreset-env%2Fdownload%2F%40babel%2Fpreset-env-7.3.4.tgz", - "integrity": "sha1-iHzzi20jyC8ZtRNSmL2xYAYuM+E=", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-async-generator-functions": "^7.2.0", - "@babel/plugin-proposal-json-strings": "^7.2.0", - "@babel/plugin-proposal-object-rest-spread": "^7.3.4", - "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.2.0", - "@babel/plugin-syntax-async-generators": "^7.2.0", - "@babel/plugin-syntax-json-strings": "^7.2.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", - "@babel/plugin-transform-arrow-functions": "^7.2.0", - "@babel/plugin-transform-async-to-generator": "^7.3.4", - "@babel/plugin-transform-block-scoped-functions": "^7.2.0", - "@babel/plugin-transform-block-scoping": "^7.3.4", - "@babel/plugin-transform-classes": "^7.3.4", - "@babel/plugin-transform-computed-properties": "^7.2.0", - "@babel/plugin-transform-destructuring": "^7.2.0", - "@babel/plugin-transform-dotall-regex": "^7.2.0", - "@babel/plugin-transform-duplicate-keys": "^7.2.0", - "@babel/plugin-transform-exponentiation-operator": "^7.2.0", - "@babel/plugin-transform-for-of": "^7.2.0", - "@babel/plugin-transform-function-name": "^7.2.0", - "@babel/plugin-transform-literals": "^7.2.0", - "@babel/plugin-transform-modules-amd": "^7.2.0", - "@babel/plugin-transform-modules-commonjs": "^7.2.0", - "@babel/plugin-transform-modules-systemjs": "^7.3.4", - "@babel/plugin-transform-modules-umd": "^7.2.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.3.0", - "@babel/plugin-transform-new-target": "^7.0.0", - "@babel/plugin-transform-object-super": "^7.2.0", - "@babel/plugin-transform-parameters": "^7.2.0", - "@babel/plugin-transform-regenerator": "^7.3.4", - "@babel/plugin-transform-shorthand-properties": "^7.2.0", - "@babel/plugin-transform-spread": "^7.2.0", - "@babel/plugin-transform-sticky-regex": "^7.2.0", - "@babel/plugin-transform-template-literals": "^7.2.0", - "@babel/plugin-transform-typeof-symbol": "^7.2.0", - "@babel/plugin-transform-unicode-regex": "^7.2.0", - "browserslist": "^4.3.4", - "invariant": "^2.2.2", - "js-levenshtein": "^1.1.3", - "semver": "^5.3.0" - } - }, - "@babel/register": { - "version": "7.0.0", - "resolved": "https://registry.npm.taobao.org/@babel/register/download/@babel/register-7.0.0.tgz", - "integrity": "sha1-+mNLrhv6Qp9gYVt1T8Hx10Xt2Cc=", + "@babel/plugin-transform-unicode-regex": { + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-unicode-regex/download/@babel/plugin-transform-unicode-regex-7.12.1.tgz?cache=0&sync_timestamp=1602802516121&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-unicode-regex%2Fdownload%2F%40babel%2Fplugin-transform-unicode-regex-7.12.1.tgz", + "integrity": "sha1-zJZh9hOQ21xl4/66zO/Vxqw/rss=", "dev": true, "requires": { - "core-js": "^2.5.7", - "find-cache-dir": "^1.0.0", - "home-or-tmp": "^3.0.0", - "lodash": "^4.17.10", - "mkdirp": "^0.5.1", - "pirates": "^4.0.0", - "source-map-support": "^0.5.9" + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" } }, - "@babel/runtime": { - "version": "7.8.7", - "resolved": "https://registry.npm.taobao.org/@babel/runtime/download/@babel/runtime-7.8.7.tgz?cache=0&sync_timestamp=1583373757080&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fruntime%2Fdownload%2F%40babel%2Fruntime-7.8.7.tgz", - "integrity": "sha1-j+/OmALbVIgbpZ+Quyhxm0mWMk0=", + "@babel/preset-env": { + "version": "7.12.11", + "resolved": "https://registry.npm.taobao.org/@babel/preset-env/download/@babel/preset-env-7.12.11.tgz?cache=0&sync_timestamp=1608076805354&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fpreset-env%2Fdownload%2F%40babel%2Fpreset-env-7.12.11.tgz", + "integrity": "sha1-VdX3mBSHNlyT27yEUHscchXoV/k=", + "dev": true, + "requires": { + "@babel/compat-data": "^7.12.7", + "@babel/helper-compilation-targets": "^7.12.5", + "@babel/helper-module-imports": "^7.12.5", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-option": "^7.12.11", + "@babel/plugin-proposal-async-generator-functions": "^7.12.1", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-dynamic-import": "^7.12.1", + "@babel/plugin-proposal-export-namespace-from": "^7.12.1", + "@babel/plugin-proposal-json-strings": "^7.12.1", + "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-numeric-separator": "^7.12.7", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.7", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.12.1", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-async-to-generator": "^7.12.1", + "@babel/plugin-transform-block-scoped-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.11", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-computed-properties": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-dotall-regex": "^7.12.1", + "@babel/plugin-transform-duplicate-keys": "^7.12.1", + "@babel/plugin-transform-exponentiation-operator": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-function-name": "^7.12.1", + "@babel/plugin-transform-literals": "^7.12.1", + "@babel/plugin-transform-member-expression-literals": "^7.12.1", + "@babel/plugin-transform-modules-amd": "^7.12.1", + "@babel/plugin-transform-modules-commonjs": "^7.12.1", + "@babel/plugin-transform-modules-systemjs": "^7.12.1", + "@babel/plugin-transform-modules-umd": "^7.12.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", + "@babel/plugin-transform-new-target": "^7.12.1", + "@babel/plugin-transform-object-super": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-property-literals": "^7.12.1", + "@babel/plugin-transform-regenerator": "^7.12.1", + "@babel/plugin-transform-reserved-words": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/plugin-transform-sticky-regex": "^7.12.7", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/plugin-transform-typeof-symbol": "^7.12.10", + "@babel/plugin-transform-unicode-escapes": "^7.12.1", + "@babel/plugin-transform-unicode-regex": "^7.12.1", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.12.11", + "core-js-compat": "^3.8.0", + "semver": "^5.5.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.4", + "resolved": "https://registry.npm.taobao.org/@babel/preset-modules/download/@babel/preset-modules-0.1.4.tgz", + "integrity": "sha1-Ni8raMZihClw/bXiVP/I/BwuQV4=", "dev": true, "requires": { - "regenerator-runtime": "^0.13.4" - }, - "dependencies": { - "regenerator-runtime": { - "version": "0.13.4", - "resolved": "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.13.4.tgz?cache=0&sync_timestamp=1582505712016&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregenerator-runtime%2Fdownload%2Fregenerator-runtime-0.13.4.tgz", - "integrity": "sha1-6Wv2EqM2LRK7affo90/+qyXHrJE=", - "dev": true - } + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" } }, - "@babel/runtime-corejs2": { - "version": "7.8.7", - "resolved": "https://registry.npm.taobao.org/@babel/runtime-corejs2/download/@babel/runtime-corejs2-7.8.7.tgz?cache=0&sync_timestamp=1583373407579&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fruntime-corejs2%2Fdownload%2F%40babel%2Fruntime-corejs2-7.8.7.tgz", - "integrity": "sha1-XGr8sz7xL6H422uRX/a17K9q+xE=", + "@babel/runtime": { + "version": "7.12.5", + "resolved": "https://registry.npm.taobao.org/@babel/runtime/download/@babel/runtime-7.12.5.tgz?cache=0&sync_timestamp=1604443606981&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fruntime%2Fdownload%2F%40babel%2Fruntime-7.12.5.tgz", + "integrity": "sha1-QQ5+SHRB4bNgwpvnFdhw2bmFiC4=", "dev": true, "requires": { - "core-js": "^2.6.5", "regenerator-runtime": "^0.13.4" - }, - "dependencies": { - "regenerator-runtime": { - "version": "0.13.4", - "resolved": "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.13.4.tgz?cache=0&sync_timestamp=1582505712016&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregenerator-runtime%2Fdownload%2Fregenerator-runtime-0.13.4.tgz", - "integrity": "sha1-6Wv2EqM2LRK7affo90/+qyXHrJE=", - "dev": true - } } }, "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.8.6.tgz", - "integrity": "sha1-hrIq8V+CjfsIZHT5ZNzD45xDzis=", + "version": "7.12.7", + "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.12.7.tgz", + "integrity": "sha1-yBcjNpYBjjn7tsSR0vtoTgXtQ7w=", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.12.7", + "@babel/types": "^7.12.7" } }, "@babel/traverse": { - "version": "7.8.6", - "resolved": "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.8.6.tgz", - "integrity": "sha1-rP4MZOHNmRs+MuroE6brVklUtf8=", + "version": "7.12.10", + "resolved": "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.12.10.tgz?cache=0&sync_timestamp=1607569332108&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftraverse%2Fdownload%2F%40babel%2Ftraverse-7.12.10.tgz", + "integrity": "sha1-LR9AQei/QuoJnlstxI1qWUwAAXo=", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.6", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6", + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.10", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.12.10", + "@babel/types": "^7.12.10", "debug": "^4.1.0", "globals": "^11.1.0", - "lodash": "^4.17.13" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npm.taobao.org/debug/download/debug-4.1.1.tgz", - "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz", - "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", - "dev": true - } + "lodash": "^4.17.19" } }, "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.8.7.tgz?cache=0&sync_timestamp=1583373407005&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.8.7.tgz", - "integrity": "sha1-H8lynhrLsjN9W2l3pjl5tIGfXR0=", - "dev": true, + "version": "7.12.11", + "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.12.11.tgz", + "integrity": "sha1-qG5NceMKm27hAlkERsmGYliSg84=", "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } }, + "@fortawesome/fontawesome-free": { + "version": "5.15.1", + "resolved": "https://registry.npm.taobao.org/@fortawesome/fontawesome-free/download/@fortawesome/fontawesome-free-5.15.1.tgz", + "integrity": "sha1-zP723b5Z+P6PaUeD4dPriJAtxes=", + "dev": true + }, "@hapi/address": { "version": "2.1.4", - "resolved": "https://registry.npm.taobao.org/@hapi/address/download/@hapi/address-2.1.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40hapi%2Faddress%2Fdownload%2F%40hapi%2Faddress-2.1.4.tgz", + "resolved": "https://registry.npm.taobao.org/@hapi/address/download/@hapi/address-2.1.4.tgz", "integrity": "sha1-XWftQ/P9QaadS5/3tW58DR0KgeU=", "dev": true }, @@ -891,13 +1054,13 @@ }, "@hapi/hoek": { "version": "8.5.1", - "resolved": "https://registry.npm.taobao.org/@hapi/hoek/download/@hapi/hoek-8.5.1.tgz", + "resolved": "https://registry.npm.taobao.org/@hapi/hoek/download/@hapi/hoek-8.5.1.tgz?cache=0&sync_timestamp=1599008863490&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40hapi%2Fhoek%2Fdownload%2F%40hapi%2Fhoek-8.5.1.tgz", "integrity": "sha1-/elgZMpEbeyMVajC8TCVewcMbgY=", "dev": true }, "@hapi/joi": { "version": "15.1.1", - "resolved": "https://registry.npm.taobao.org/@hapi/joi/download/@hapi/joi-15.1.1.tgz", + "resolved": "https://registry.npm.taobao.org/@hapi/joi/download/@hapi/joi-15.1.1.tgz?cache=0&sync_timestamp=1603524515155&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40hapi%2Fjoi%2Fdownload%2F%40hapi%2Fjoi-15.1.1.tgz", "integrity": "sha1-xnW4pxKW8Cgz+NbSQ7NMV7jOGdc=", "dev": true, "requires": { @@ -943,249 +1106,460 @@ "integrity": "sha1-K1o6s/kYzKSKjHVMCBaOPwPrphs=", "dev": true }, - "@samverschueren/stream-to-observable": { - "version": "0.3.0", - "resolved": "https://registry.npm.taobao.org/@samverschueren/stream-to-observable/download/@samverschueren/stream-to-observable-0.3.0.tgz", - "integrity": "sha1-7N9I1TLFjqR3rPyrgDSEJPjQZi8=", - "dev": true, - "requires": { - "any-observable": "^0.3.0" - } + "@popperjs/core": { + "version": "2.8.4", + "resolved": "https://registry.npm.taobao.org/@popperjs/core/download/@popperjs/core-2.8.4.tgz?cache=0&sync_timestamp=1614177420453&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40popperjs%2Fcore%2Fdownload%2F%40popperjs%2Fcore-2.8.4.tgz", + "integrity": "sha1-bxdEsPafUHpDP0KHTMOy60sRszc=" }, "@soda/friendly-errors-webpack-plugin": { - "version": "1.7.1", - "resolved": "https://registry.npm.taobao.org/@soda/friendly-errors-webpack-plugin/download/@soda/friendly-errors-webpack-plugin-1.7.1.tgz", - "integrity": "sha1-cG9kvLSouWQrSK46zkRMcDNNYV0=", + "version": "1.8.0", + "resolved": "https://registry.npm.taobao.org/@soda/friendly-errors-webpack-plugin/download/@soda/friendly-errors-webpack-plugin-1.8.0.tgz?cache=0&sync_timestamp=1607927399532&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40soda%2Ffriendly-errors-webpack-plugin%2Fdownload%2F%40soda%2Ffriendly-errors-webpack-plugin-1.8.0.tgz", + "integrity": "sha1-hHUdgqkwGdXJLAzw5FrFkIfNIkA=", "dev": true, "requires": { - "chalk": "^1.1.3", - "error-stack-parser": "^2.0.0", - "string-width": "^2.0.0" + "chalk": "^2.4.2", + "error-stack-parser": "^2.0.2", + "string-width": "^2.0.0", + "strip-ansi": "^5" }, "dependencies": { "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz?cache=0&sync_timestamp=1573282949696&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-2.1.1.tgz", + "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", "dev": true, "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz?cache=0&sync_timestamp=1573280518303&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } } }, "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz?cache=0&sync_timestamp=1573280518303&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz?cache=0&sync_timestamp=1573280518303&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-5.2.0.tgz", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz", + "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=", + "dev": true + } } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true } } }, - "@types/codemirror": { - "version": "0.0.71", - "resolved": "https://registry.npm.taobao.org/@types/codemirror/download/@types/codemirror-0.0.71.tgz", - "integrity": "sha1-hh8byzEAwKBkVnxUAPKYHPSujKc=", + "@soda/get-current-script": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/@soda/get-current-script/download/@soda/get-current-script-1.0.2.tgz", + "integrity": "sha1-pTUV2yXYA4N0OBtzryC7Ty5QjYc=", + "dev": true + }, + "@types/anymatch": { + "version": "1.3.1", + "resolved": "https://registry.npm.taobao.org/@types/anymatch/download/@types/anymatch-1.3.1.tgz?cache=0&sync_timestamp=1605052639708&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fanymatch%2Fdownload%2F%40types%2Fanymatch-1.3.1.tgz", + "integrity": "sha1-M2utwb7sudrMOL6izzKt9ieoQho=", + "dev": true + }, + "@types/body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npm.taobao.org/@types/body-parser/download/@types/body-parser-1.19.0.tgz", + "integrity": "sha1-BoWzxH6zAG/+0RfN1VFkth+AU48=", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.34", + "resolved": "https://registry.npm.taobao.org/@types/connect/download/@types/connect-3.4.34.tgz?cache=0&sync_timestamp=1607458904874&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fconnect%2Fdownload%2F%40types%2Fconnect-3.4.34.tgz", + "integrity": "sha1-FwpAIjptZmAG2TyhKK8r6x2bGQE=", + "dev": true, "requires": { - "@types/tern": "*" + "@types/node": "*" } }, - "@types/estree": { - "version": "0.0.42", - "resolved": "https://registry.npm.taobao.org/@types/estree/download/@types/estree-0.0.42.tgz", - "integrity": "sha1-jQwfSAM57+2z5GBw4i3WPgQw3RE=" + "@types/connect-history-api-fallback": { + "version": "1.3.3", + "resolved": "https://registry.npm.taobao.org/@types/connect-history-api-fallback/download/@types/connect-history-api-fallback-1.3.3.tgz", + "integrity": "sha1-R3K3m4tTGF8PTJ3qsJI2uvdu47Q=", + "dev": true, + "requires": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } }, - "@types/events": { - "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/@types/events/download/@types/events-3.0.0.tgz?cache=0&sync_timestamp=1580841990603&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fevents%2Fdownload%2F%40types%2Fevents-3.0.0.tgz", - "integrity": "sha1-KGLz9Yqaf3w+eNefEw3U1xwlwqc=", - "dev": true + "@types/express": { + "version": "4.17.9", + "resolved": "https://registry.npm.taobao.org/@types/express/download/@types/express-4.17.9.tgz?cache=0&sync_timestamp=1605057477768&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fexpress%2Fdownload%2F%40types%2Fexpress-4.17.9.tgz", + "integrity": "sha1-9fLfat1wP/KEKK3VK97IoQkbCng=", + "dev": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "*", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.17", + "resolved": "https://registry.npm.taobao.org/@types/express-serve-static-core/download/@types/express-serve-static-core-4.17.17.tgz?cache=0&sync_timestamp=1608052291315&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fexpress-serve-static-core%2Fdownload%2F%40types%2Fexpress-serve-static-core-4.17.17.tgz", + "integrity": "sha1-a6AkZRZbbJw9jbOije9rFvybcPU=", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } }, "@types/glob": { - "version": "7.1.1", - "resolved": "https://registry.npm.taobao.org/@types/glob/download/@types/glob-7.1.1.tgz", - "integrity": "sha1-qlmhxuP7xCHgfM0xqUTDDrpSFXU=", + "version": "7.1.3", + "resolved": "https://registry.npm.taobao.org/@types/glob/download/@types/glob-7.1.3.tgz?cache=0&sync_timestamp=1605053345113&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fglob%2Fdownload%2F%40types%2Fglob-7.1.3.tgz", + "integrity": "sha1-5rqA82t9qtLGhazZJmOC5omFwYM=", "dev": true, "requires": { - "@types/events": "*", "@types/minimatch": "*", "@types/node": "*" } }, - "@types/jquery": { - "version": "3.3.33", - "resolved": "https://registry.npm.taobao.org/@types/jquery/download/@types/jquery-3.3.33.tgz", - "integrity": "sha1-YdnL1ABP/N9s9+NHIKh6ViWn2Ok=", + "@types/http-proxy": { + "version": "1.17.4", + "resolved": "https://registry.npm.taobao.org/@types/http-proxy/download/@types/http-proxy-1.17.4.tgz?cache=0&sync_timestamp=1605053586725&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fhttp-proxy%2Fdownload%2F%40types%2Fhttp-proxy-1.17.4.tgz", + "integrity": "sha1-58kuPb4+E6p5lED/QubToXqdBFs=", + "dev": true, "requires": { - "@types/sizzle": "*" + "@types/node": "*" } }, - "@types/json-schema": { - "version": "7.0.5", - "resolved": "https://registry.npm.taobao.org/@types/json-schema/download/@types/json-schema-7.0.5.tgz?cache=0&sync_timestamp=1591720889158&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fjson-schema%2Fdownload%2F%40types%2Fjson-schema-7.0.5.tgz", - "integrity": "sha1-3M5EMOZLRDuolF8CkPtWStW6xt0=" - }, - "@types/linkify-it": { - "version": "2.1.0", - "resolved": "https://registry.npm.taobao.org/@types/linkify-it/download/@types/linkify-it-2.1.0.tgz", - "integrity": "sha1-6j3WTEgFWXMReQth6HLL0e0s2AY=" - }, - "@types/markdown-it": { - "version": "0.0.7", - "resolved": "https://registry.npm.taobao.org/@types/markdown-it/download/@types/markdown-it-0.0.7.tgz", - "integrity": "sha1-dQcEhaPYrRHn3rgof0QwvhW/TTk=", + "@types/http-proxy-middleware": { + "version": "0.19.3", + "resolved": "https://registry.npm.taobao.org/@types/http-proxy-middleware/download/@types/http-proxy-middleware-0.19.3.tgz?cache=0&sync_timestamp=1605053586886&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fhttp-proxy-middleware%2Fdownload%2F%40types%2Fhttp-proxy-middleware-0.19.3.tgz", + "integrity": "sha1-suuW+8D5rHJQtdnExTqt4ElJfQM=", + "dev": true, "requires": { - "@types/linkify-it": "*" + "@types/connect": "*", + "@types/http-proxy": "*", + "@types/node": "*" } }, + "@types/json-schema": { + "version": "7.0.6", + "resolved": "https://registry.npm.taobao.org/@types/json-schema/download/@types/json-schema-7.0.6.tgz?cache=0&sync_timestamp=1605053861867&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fjson-schema%2Fdownload%2F%40types%2Fjson-schema-7.0.6.tgz", + "integrity": "sha1-9MfsQ+gbMZqYFRFQMXCfJph4kfA=", + "dev": true + }, + "@types/mime": { + "version": "2.0.3", + "resolved": "https://registry.npm.taobao.org/@types/mime/download/@types/mime-2.0.3.tgz", + "integrity": "sha1-yJO3NyHbc2mZQ7/DZTsd63+qSjo=", + "dev": true + }, "@types/minimatch": { "version": "3.0.3", - "resolved": "https://registry.npm.taobao.org/@types/minimatch/download/@types/minimatch-3.0.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fminimatch%2Fdownload%2F%40types%2Fminimatch-3.0.3.tgz", + "resolved": "https://registry.npm.taobao.org/@types/minimatch/download/@types/minimatch-3.0.3.tgz", "integrity": "sha1-PcoOPzOyAPx9ETnAzZbBJoyt/Z0=", "dev": true }, + "@types/minimist": { + "version": "1.2.1", + "resolved": "https://registry.npm.taobao.org/@types/minimist/download/@types/minimist-1.2.1.tgz?cache=0&sync_timestamp=1604943486106&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fminimist%2Fdownload%2F%40types%2Fminimist-1.2.1.tgz", + "integrity": "sha1-KD9mn/dte4Jg34q3pCYsyD2YglY=", + "dev": true + }, "@types/node": { - "version": "13.9.0", - "resolved": "https://registry.npm.taobao.org/@types/node/download/@types/node-13.9.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-13.9.0.tgz", - "integrity": "sha1-W27np3+qzd195xkBfQvBL1L4FYk=", + "version": "14.14.14", + "resolved": "https://registry.npm.taobao.org/@types/node/download/@types/node-14.14.14.tgz?cache=0&sync_timestamp=1608047832709&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-14.14.14.tgz", + "integrity": "sha1-9/1fPMhSEwERn2ORDw+5ZcfXYa4=", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npm.taobao.org/@types/normalize-package-data/download/@types/normalize-package-data-2.4.0.tgz?cache=0&sync_timestamp=1605054783883&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fnormalize-package-data%2Fdownload%2F%40types%2Fnormalize-package-data-2.4.0.tgz", + "integrity": "sha1-5IbQ2XOW15vu3QpuM/RTT/a0lz4=", "dev": true }, "@types/q": { - "version": "1.5.2", - "resolved": "https://registry.npm.taobao.org/@types/q/download/@types/q-1.5.2.tgz?cache=0&sync_timestamp=1580864548163&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fq%2Fdownload%2F%40types%2Fq-1.5.2.tgz", - "integrity": "sha1-aQoUdbhPKohP0HzXl8APXzE1bqg=", + "version": "1.5.4", + "resolved": "https://registry.npm.taobao.org/@types/q/download/@types/q-1.5.4.tgz?cache=0&sync_timestamp=1605055096527&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fq%2Fdownload%2F%40types%2Fq-1.5.4.tgz", + "integrity": "sha1-FZJUFOCtLNdlv+9YhC9+JqesyyQ=", "dev": true }, - "@types/sizzle": { - "version": "2.3.2", - "resolved": "https://registry.npm.taobao.org/@types/sizzle/download/@types/sizzle-2.3.2.tgz", - "integrity": "sha1-qBG4wY4rq6t9VCszZYh64uTZ3kc=" + "@types/qs": { + "version": "6.9.5", + "resolved": "https://registry.npm.taobao.org/@types/qs/download/@types/qs-6.9.5.tgz?cache=0&sync_timestamp=1605055106687&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fqs%2Fdownload%2F%40types%2Fqs-6.9.5.tgz", + "integrity": "sha1-Q0cRvdSete5p2QwdZ8NUqajssYs=", + "dev": true }, - "@types/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/@types/strip-bom/download/@types/strip-bom-3.0.0.tgz", - "integrity": "sha1-FKjsOVbC6B7bdSB5CuzyHCkK69I=", + "@types/range-parser": { + "version": "1.2.3", + "resolved": "https://registry.npm.taobao.org/@types/range-parser/download/@types/range-parser-1.2.3.tgz", + "integrity": "sha1-fuMwunyq+5gJC+zoal7kQRWQTCw=", + "dev": true + }, + "@types/serve-static": { + "version": "1.13.8", + "resolved": "https://registry.npm.taobao.org/@types/serve-static/download/@types/serve-static-1.13.8.tgz?cache=0&sync_timestamp=1605657862811&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fserve-static%2Fdownload%2F%40types%2Fserve-static-1.13.8.tgz", + "integrity": "sha1-hREp1DRDPHCCFIV0/+wmPVgwnEY=", + "dev": true, + "requires": { + "@types/mime": "*", + "@types/node": "*" + } + }, + "@types/source-list-map": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/@types/source-list-map/download/@types/source-list-map-0.1.2.tgz", + "integrity": "sha1-AHiDYGP/rxdBI0m7o2QIfgrALsk=", "dev": true }, - "@types/strip-json-comments": { - "version": "0.0.30", - "resolved": "https://registry.npm.taobao.org/@types/strip-json-comments/download/@types/strip-json-comments-0.0.30.tgz", - "integrity": "sha1-mqMMBNshKpoGSdaub9UKzMQHSKE=", + "@types/tapable": { + "version": "1.0.6", + "resolved": "https://registry.npm.taobao.org/@types/tapable/download/@types/tapable-1.0.6.tgz?cache=0&sync_timestamp=1605057449125&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Ftapable%2Fdownload%2F%40types%2Ftapable-1.0.6.tgz", + "integrity": "sha1-qcpLcKGLJwzLK8Cqr+/R1Ia36nQ=", "dev": true }, - "@types/tern": { - "version": "0.23.3", - "resolved": "https://registry.npm.taobao.org/@types/tern/download/@types/tern-0.23.3.tgz", - "integrity": "sha1-S1RTjwSojJ/3neH2+U9XWn8zlGA=", + "@types/uglify-js": { + "version": "3.11.1", + "resolved": "https://registry.npm.taobao.org/@types/uglify-js/download/@types/uglify-js-3.11.1.tgz?cache=0&sync_timestamp=1605057452755&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fuglify-js%2Fdownload%2F%40types%2Fuglify-js-3.11.1.tgz", + "integrity": "sha1-l/8w5hoKpodsJwtfU4c34tarjOs=", + "dev": true, + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "@types/webpack": { + "version": "4.41.25", + "resolved": "https://registry.npm.taobao.org/@types/webpack/download/@types/webpack-4.41.25.tgz", + "integrity": "sha1-TTta7MTkQRezdigPv9LcNml5aMQ=", + "dev": true, + "requires": { + "@types/anymatch": "*", + "@types/node": "*", + "@types/tapable": "*", + "@types/uglify-js": "*", + "@types/webpack-sources": "*", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "@types/webpack-dev-server": { + "version": "3.11.1", + "resolved": "https://registry.npm.taobao.org/@types/webpack-dev-server/download/@types/webpack-dev-server-3.11.1.tgz", + "integrity": "sha1-+PTawdoibVML0VodXcNLI7p2bMs=", + "dev": true, + "requires": { + "@types/connect-history-api-fallback": "*", + "@types/express": "*", + "@types/http-proxy-middleware": "*", + "@types/serve-static": "*", + "@types/webpack": "*" + } + }, + "@types/webpack-sources": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/@types/webpack-sources/download/@types/webpack-sources-2.1.0.tgz", + "integrity": "sha1-iIKwvWLR4M5i8YPQ0Bty5ugujBA=", + "dev": true, "requires": { - "@types/estree": "*" + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.7.3.tgz", + "integrity": "sha1-UwL4FpAxc1ImVECS5kmB91F1A4M=", + "dev": true + } } }, "@vue/babel-helper-vue-jsx-merge-props": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/@vue/babel-helper-vue-jsx-merge-props/download/@vue/babel-helper-vue-jsx-merge-props-1.0.0.tgz", - "integrity": "sha1-BI/leZWNpAj7eosqPsBQtQpmEEA=", + "version": "1.2.1", + "resolved": "https://registry.npm.taobao.org/@vue/babel-helper-vue-jsx-merge-props/download/@vue/babel-helper-vue-jsx-merge-props-1.2.1.tgz?cache=0&sync_timestamp=1602851174430&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-helper-vue-jsx-merge-props%2Fdownload%2F%40vue%2Fbabel-helper-vue-jsx-merge-props-1.2.1.tgz", + "integrity": "sha1-MWJKelBfsU2h1YAjclpMXycOaoE=", + "dev": true + }, + "@vue/babel-helper-vue-transform-on": { + "version": "1.0.0-rc.2", + "resolved": "https://registry.npm.taobao.org/@vue/babel-helper-vue-transform-on/download/@vue/babel-helper-vue-transform-on-1.0.0-rc.2.tgz", + "integrity": "sha1-ckY0H2ZufG5lsT2kIOLOhXFPu8o=", "dev": true }, + "@vue/babel-plugin-jsx": { + "version": "1.0.0-rc.5", + "resolved": "https://registry.npm.taobao.org/@vue/babel-plugin-jsx/download/@vue/babel-plugin-jsx-1.0.0-rc.5.tgz?cache=0&sync_timestamp=1607773057378&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-plugin-jsx%2Fdownload%2F%40vue%2Fbabel-plugin-jsx-1.0.0-rc.5.tgz", + "integrity": "sha1-5EC+LQd17jgoy6LDigOxmpIXSGU=", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "@vue/babel-helper-vue-transform-on": "^1.0.0-rc.2", + "camelcase": "^6.0.0", + "html-tags": "^3.1.0", + "svg-tags": "^1.0.0" + } + }, "@vue/babel-plugin-transform-vue-jsx": { - "version": "1.1.2", - "resolved": "https://registry.npm.taobao.org/@vue/babel-plugin-transform-vue-jsx/download/@vue/babel-plugin-transform-vue-jsx-1.1.2.tgz", - "integrity": "sha1-wKPm78Ai515CR7RIqPxrhvA+kcA=", + "version": "1.2.1", + "resolved": "https://registry.npm.taobao.org/@vue/babel-plugin-transform-vue-jsx/download/@vue/babel-plugin-transform-vue-jsx-1.2.1.tgz?cache=0&sync_timestamp=1602851113524&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-plugin-transform-vue-jsx%2Fdownload%2F%40vue%2Fbabel-plugin-transform-vue-jsx-1.2.1.tgz", + "integrity": "sha1-ZGBGxlLC8CQnJ/NFGdkXsGQEHtc=", "dev": true, "requires": { "@babel/helper-module-imports": "^7.0.0", "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", "html-tags": "^2.0.0", "lodash.kebabcase": "^4.1.1", "svg-tags": "^1.0.0" + }, + "dependencies": { + "html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/html-tags/download/html-tags-2.0.0.tgz", + "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=", + "dev": true + } } }, "@vue/babel-preset-app": { - "version": "3.12.1", - "resolved": "https://registry.npm.taobao.org/@vue/babel-preset-app/download/@vue/babel-preset-app-3.12.1.tgz", - "integrity": "sha1-JMR3BS8HjzD9t3NRA7FN0fosv+E=", + "version": "4.5.9", + "resolved": "https://registry.npm.taobao.org/@vue/babel-preset-app/download/@vue/babel-preset-app-4.5.9.tgz?cache=0&sync_timestamp=1607995430964&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-preset-app%2Fdownload%2F%40vue%2Fbabel-preset-app-4.5.9.tgz", + "integrity": "sha1-pO8YMKITAeT3fXzUoEVV2KAerzM=", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/plugin-proposal-class-properties": "^7.0.0", - "@babel/plugin-proposal-decorators": "^7.1.0", - "@babel/plugin-syntax-dynamic-import": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.0.0", - "@babel/plugin-transform-runtime": "^7.4.0", - "@babel/preset-env": "^7.0.0 < 7.4.0", - "@babel/runtime": "^7.0.0", - "@babel/runtime-corejs2": "^7.2.0", - "@vue/babel-preset-jsx": "^1.0.0", - "babel-plugin-dynamic-import-node": "^2.2.0", - "babel-plugin-module-resolver": "3.2.0", - "core-js": "^2.6.5" + "@babel/core": "^7.11.0", + "@babel/helper-compilation-targets": "^7.9.6", + "@babel/helper-module-imports": "^7.8.3", + "@babel/plugin-proposal-class-properties": "^7.8.3", + "@babel/plugin-proposal-decorators": "^7.8.3", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.11.0", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.0", + "@vue/babel-plugin-jsx": "^1.0.0-0", + "@vue/babel-preset-jsx": "^1.1.2", + "babel-plugin-dynamic-import-node": "^2.3.3", + "core-js": "^3.6.5", + "core-js-compat": "^3.6.5", + "semver": "^6.1.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz?cache=0&sync_timestamp=1606853731020&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-6.3.0.tgz", + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=", + "dev": true + } } }, "@vue/babel-preset-jsx": { - "version": "1.1.2", - "resolved": "https://registry.npm.taobao.org/@vue/babel-preset-jsx/download/@vue/babel-preset-jsx-1.1.2.tgz", - "integrity": "sha1-LhaetMIE6jfKZsLqhaiAv8mdTyA=", + "version": "1.2.4", + "resolved": "https://registry.npm.taobao.org/@vue/babel-preset-jsx/download/@vue/babel-preset-jsx-1.2.4.tgz?cache=0&sync_timestamp=1603806927648&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-preset-jsx%2Fdownload%2F%40vue%2Fbabel-preset-jsx-1.2.4.tgz", + "integrity": "sha1-kv6nnbbxOwHoDToAmeKSS9y+Toc=", + "dev": true, + "requires": { + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", + "@vue/babel-sugar-composition-api-inject-h": "^1.2.1", + "@vue/babel-sugar-composition-api-render-instance": "^1.2.4", + "@vue/babel-sugar-functional-vue": "^1.2.2", + "@vue/babel-sugar-inject-h": "^1.2.2", + "@vue/babel-sugar-v-model": "^1.2.3", + "@vue/babel-sugar-v-on": "^1.2.3" + } + }, + "@vue/babel-sugar-composition-api-inject-h": { + "version": "1.2.1", + "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-composition-api-inject-h/download/@vue/babel-sugar-composition-api-inject-h-1.2.1.tgz?cache=0&sync_timestamp=1602851113182&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-sugar-composition-api-inject-h%2Fdownload%2F%40vue%2Fbabel-sugar-composition-api-inject-h-1.2.1.tgz", + "integrity": "sha1-BdbgxDJxDjdYKyvppgSbaJtvA+s=", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-composition-api-render-instance": { + "version": "1.2.4", + "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-composition-api-render-instance/download/@vue/babel-sugar-composition-api-render-instance-1.2.4.tgz?cache=0&sync_timestamp=1603806850559&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-sugar-composition-api-render-instance%2Fdownload%2F%40vue%2Fbabel-sugar-composition-api-render-instance-1.2.4.tgz", + "integrity": "sha1-5MvGmXw0T6wnF4WteikyXFHWjRk=", "dev": true, "requires": { - "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0", - "@vue/babel-plugin-transform-vue-jsx": "^1.1.2", - "@vue/babel-sugar-functional-vue": "^1.1.2", - "@vue/babel-sugar-inject-h": "^1.1.2", - "@vue/babel-sugar-v-model": "^1.1.2", - "@vue/babel-sugar-v-on": "^1.1.2" + "@babel/plugin-syntax-jsx": "^7.2.0" } }, "@vue/babel-sugar-functional-vue": { - "version": "1.1.2", - "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-functional-vue/download/@vue/babel-sugar-functional-vue-1.1.2.tgz", - "integrity": "sha1-9+JPugnm8e5wEEVgqICAV1VfGpo=", + "version": "1.2.2", + "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-functional-vue/download/@vue/babel-sugar-functional-vue-1.2.2.tgz?cache=0&sync_timestamp=1602929973472&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-sugar-functional-vue%2Fdownload%2F%40vue%2Fbabel-sugar-functional-vue-1.2.2.tgz", + "integrity": "sha1-JnqayNeHyW7b8Dzj85LEnam9Jlg=", "dev": true, "requires": { "@babel/plugin-syntax-jsx": "^7.2.0" } }, "@vue/babel-sugar-inject-h": { - "version": "1.1.2", - "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-inject-h/download/@vue/babel-sugar-inject-h-1.1.2.tgz", - "integrity": "sha1-ilJ2ttji7Rb/yAeKrZQjYnTm7fA=", + "version": "1.2.2", + "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-inject-h/download/@vue/babel-sugar-inject-h-1.2.2.tgz?cache=0&sync_timestamp=1602929885089&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-sugar-inject-h%2Fdownload%2F%40vue%2Fbabel-sugar-inject-h-1.2.2.tgz", + "integrity": "sha1-1zjTyJM2fshJHcu2abAAkZKT46o=", "dev": true, "requires": { "@babel/plugin-syntax-jsx": "^7.2.0" } }, "@vue/babel-sugar-v-model": { - "version": "1.1.2", - "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-v-model/download/@vue/babel-sugar-v-model-1.1.2.tgz", - "integrity": "sha1-H/b9G4ACI/ycsehNzrXlLXN6gZI=", + "version": "1.2.3", + "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-v-model/download/@vue/babel-sugar-v-model-1.2.3.tgz", + "integrity": "sha1-+h8pulHr8KoabDX6ZtU5vEWaGPI=", "dev": true, "requires": { "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0", - "@vue/babel-plugin-transform-vue-jsx": "^1.1.2", + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", "camelcase": "^5.0.0", "html-tags": "^2.0.0", "svg-tags": "^1.0.0" @@ -1196,17 +1570,23 @@ "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-5.3.1.tgz", "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=", "dev": true + }, + "html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/html-tags/download/html-tags-2.0.0.tgz", + "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=", + "dev": true } } }, "@vue/babel-sugar-v-on": { - "version": "1.1.2", - "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-v-on/download/@vue/babel-sugar-v-on-1.1.2.tgz", - "integrity": "sha1-su+ZuPL6sJ++rSWq1w70Lhz1sTs=", + "version": "1.2.3", + "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-v-on/download/@vue/babel-sugar-v-on-1.2.3.tgz", + "integrity": "sha1-NCNnF4WGpp85LwS/ujICHQKROto=", "dev": true, "requires": { "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-plugin-transform-vue-jsx": "^1.1.2", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", "camelcase": "^5.0.0" }, "dependencies": { @@ -1219,364 +1599,355 @@ } }, "@vue/cli-overlay": { - "version": "3.12.1", - "resolved": "https://registry.npm.taobao.org/@vue/cli-overlay/download/@vue/cli-overlay-3.12.1.tgz", - "integrity": "sha1-vf3o9xI1YasG5OTGC4VMxQkvWrE=", + "version": "4.5.9", + "resolved": "https://registry.npm.taobao.org/@vue/cli-overlay/download/@vue/cli-overlay-4.5.9.tgz?cache=0&sync_timestamp=1607995708025&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fcli-overlay%2Fdownload%2F%40vue%2Fcli-overlay-4.5.9.tgz", + "integrity": "sha1-OTQYttXq+GOPWZyTnLQlg4JX03w=", "dev": true }, "@vue/cli-plugin-babel": { - "version": "3.5.3", - "resolved": "https://registry.npm.taobao.org/@vue/cli-plugin-babel/download/@vue/cli-plugin-babel-3.5.3.tgz", - "integrity": "sha1-bo3o9gkEvMGITb4Q7g1hfd2TrwQ=", + "version": "4.5.9", + "resolved": "https://registry.npm.taobao.org/@vue/cli-plugin-babel/download/@vue/cli-plugin-babel-4.5.9.tgz?cache=0&sync_timestamp=1607993492631&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fcli-plugin-babel%2Fdownload%2F%40vue%2Fcli-plugin-babel-4.5.9.tgz", + "integrity": "sha1-oJmHVL3QjthAKnvvSU7LFs7hfpI=", "dev": true, "requires": { - "@babel/core": "^7.0.0", - "@vue/babel-preset-app": "^3.5.3", - "@vue/cli-shared-utils": "^3.5.1", - "babel-loader": "^8.0.5", - "webpack": ">=4 < 4.29" + "@babel/core": "^7.11.0", + "@vue/babel-preset-app": "^4.5.9", + "@vue/cli-shared-utils": "^4.5.9", + "babel-loader": "^8.1.0", + "cache-loader": "^4.1.0", + "thread-loader": "^2.1.3", + "webpack": "^4.0.0" } }, "@vue/cli-plugin-eslint": { - "version": "3.12.1", - "resolved": "https://registry.npm.taobao.org/@vue/cli-plugin-eslint/download/@vue/cli-plugin-eslint-3.12.1.tgz", - "integrity": "sha1-MCxGOGfzjnkLuZbq/fcVnHgtyM8=", + "version": "4.5.9", + "resolved": "https://registry.npm.taobao.org/@vue/cli-plugin-eslint/download/@vue/cli-plugin-eslint-4.5.9.tgz?cache=0&sync_timestamp=1607995816126&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fcli-plugin-eslint%2Fdownload%2F%40vue%2Fcli-plugin-eslint-4.5.9.tgz", + "integrity": "sha1-fX+KSLjnPmsZ/i9Us5x4hQqasz0=", "dev": true, "requires": { - "@vue/cli-shared-utils": "^3.12.1", - "babel-eslint": "^10.0.1", - "eslint": "^4.19.1", - "eslint-loader": "^2.1.2", - "eslint-plugin-vue": "^4.7.1", + "@vue/cli-shared-utils": "^4.5.9", + "eslint-loader": "^2.2.1", "globby": "^9.2.0", + "inquirer": "^7.1.0", "webpack": "^4.0.0", "yorkie": "^2.0.0" - }, - "dependencies": { - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npm.taobao.org/ajv/download/ajv-5.5.2.tgz?cache=0&sync_timestamp=1582379612319&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv%2Fdownload%2Fajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "dev": true, - "optional": true, - "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" - } - }, - "eslint": { - "version": "4.19.1", - "resolved": "https://registry.npm.taobao.org/eslint/download/eslint-4.19.1.tgz", - "integrity": "sha1-MtHWU+HZBAiFS/spbwdux+GGowA=", - "dev": true, - "optional": true, - "requires": { - "ajv": "^5.3.0", - "babel-code-frame": "^6.22.0", - "chalk": "^2.1.0", - "concat-stream": "^1.6.0", - "cross-spawn": "^5.1.0", - "debug": "^3.1.0", - "doctrine": "^2.1.0", - "eslint-scope": "^3.7.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^3.5.4", - "esquery": "^1.0.0", - "esutils": "^2.0.2", - "file-entry-cache": "^2.0.0", - "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.0.1", - "ignore": "^3.3.3", - "imurmurhash": "^0.1.4", - "inquirer": "^3.0.6", - "is-resolvable": "^1.0.0", - "js-yaml": "^3.9.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.4", - "minimatch": "^3.0.2", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", - "pluralize": "^7.0.0", - "progress": "^2.0.0", - "regexpp": "^1.0.1", - "require-uncached": "^1.0.3", - "semver": "^5.3.0", - "strip-ansi": "^4.0.0", - "strip-json-comments": "~2.0.1", - "table": "4.0.2", - "text-table": "~0.2.0" - } - }, - "eslint-plugin-vue": { - "version": "4.7.1", - "resolved": "https://registry.npm.taobao.org/eslint-plugin-vue/download/eslint-plugin-vue-4.7.1.tgz?cache=0&sync_timestamp=1583662392429&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-plugin-vue%2Fdownload%2Feslint-plugin-vue-4.7.1.tgz", - "integrity": "sha1-yCm5/GJYLBiXtaC5Sv1E7MpRHmM=", - "dev": true, - "optional": true, - "requires": { - "vue-eslint-parser": "^2.0.3" - } - }, - "eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-3.7.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-scope%2Fdownload%2Feslint-scope-3.7.3.tgz", - "integrity": "sha1-u1ByANPRf2AkdjYWC0gmKEsQhTU=", - "dev": true, - "optional": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-1.1.0.tgz?cache=0&sync_timestamp=1575383928809&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-deep-equal%2Fdownload%2Ffast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", - "dev": true, - "optional": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true, - "optional": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz?cache=0&sync_timestamp=1573280518303&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "optional": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } } }, - "@vue/cli-plugin-unit-jest": { - "version": "3.5.3", - "resolved": "https://registry.npm.taobao.org/@vue/cli-plugin-unit-jest/download/@vue/cli-plugin-unit-jest-3.5.3.tgz", - "integrity": "sha1-0R8Iedc/brcS30UHLZRw2Kh9CeU=", + "@vue/cli-plugin-router": { + "version": "4.5.9", + "resolved": "https://registry.npm.taobao.org/@vue/cli-plugin-router/download/@vue/cli-plugin-router-4.5.9.tgz?cache=0&sync_timestamp=1607994046816&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fcli-plugin-router%2Fdownload%2F%40vue%2Fcli-plugin-router-4.5.9.tgz", + "integrity": "sha1-s9I6gIPSaoG9Cb+cjQEKPk5LE9A=", "dev": true, "requires": { - "@vue/cli-shared-utils": "^3.5.1", - "babel-jest": "^23.6.0", - "babel-plugin-transform-es2015-modules-commonjs": "^6.26.2", - "jest": "^23.6.0", - "jest-serializer-vue": "^2.0.2", - "jest-transform-stub": "^2.0.0", - "vue-jest": "^3.0.3" + "@vue/cli-shared-utils": "^4.5.9" } }, + "@vue/cli-plugin-vuex": { + "version": "4.5.9", + "resolved": "https://registry.npm.taobao.org/@vue/cli-plugin-vuex/download/@vue/cli-plugin-vuex-4.5.9.tgz", + "integrity": "sha1-WujxUAx+KUBrAvrILM6uq4bB6Do=", + "dev": true + }, "@vue/cli-service": { - "version": "3.5.3", - "resolved": "https://registry.npm.taobao.org/@vue/cli-service/download/@vue/cli-service-3.5.3.tgz", - "integrity": "sha1-B5sJBlrWWXIRkGxlwStYYgkmN/I=", + "version": "4.5.9", + "resolved": "https://registry.npm.taobao.org/@vue/cli-service/download/@vue/cli-service-4.5.9.tgz?cache=0&sync_timestamp=1607994273937&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fcli-service%2Fdownload%2F%40vue%2Fcli-service-4.5.9.tgz", + "integrity": "sha1-PKMRKkQYPKrOQR1R0LamFuLhl7E=", "dev": true, "requires": { "@intervolga/optimize-cssnano-plugin": "^1.0.5", "@soda/friendly-errors-webpack-plugin": "^1.7.1", - "@vue/cli-overlay": "^3.5.1", - "@vue/cli-shared-utils": "^3.5.1", - "@vue/component-compiler-utils": "^2.6.0", + "@soda/get-current-script": "^1.0.0", + "@types/minimist": "^1.2.0", + "@types/webpack": "^4.0.0", + "@types/webpack-dev-server": "^3.11.0", + "@vue/cli-overlay": "^4.5.9", + "@vue/cli-plugin-router": "^4.5.9", + "@vue/cli-plugin-vuex": "^4.5.9", + "@vue/cli-shared-utils": "^4.5.9", + "@vue/component-compiler-utils": "^3.1.2", "@vue/preload-webpack-plugin": "^1.1.0", "@vue/web-component-wrapper": "^1.2.0", - "acorn": "^6.1.0", - "acorn-walk": "^6.1.1", - "address": "^1.0.3", - "autoprefixer": "^9.4.8", - "cache-loader": "^2.0.1", - "case-sensitive-paths-webpack-plugin": "^2.2.0", - "chalk": "^2.4.2", - "clipboardy": "^1.2.3", - "cliui": "^4.1.0", - "copy-webpack-plugin": "^4.6.0", + "acorn": "^7.4.0", + "acorn-walk": "^7.1.1", + "address": "^1.1.2", + "autoprefixer": "^9.8.6", + "browserslist": "^4.12.0", + "cache-loader": "^4.1.0", + "case-sensitive-paths-webpack-plugin": "^2.3.0", + "cli-highlight": "^2.1.4", + "clipboardy": "^2.3.0", + "cliui": "^6.0.0", + "copy-webpack-plugin": "^5.1.1", + "css-loader": "^3.5.3", "cssnano": "^4.1.10", "debug": "^4.1.1", - "dotenv": "^6.2.0", - "dotenv-expand": "^4.2.0", - "escape-string-regexp": "^1.0.5", - "file-loader": "^3.0.1", + "default-gateway": "^5.0.5", + "dotenv": "^8.2.0", + "dotenv-expand": "^5.1.0", + "file-loader": "^4.2.0", "fs-extra": "^7.0.1", - "globby": "^9.0.0", - "hash-sum": "^1.0.2", + "globby": "^9.2.0", + "hash-sum": "^2.0.0", "html-webpack-plugin": "^3.2.0", "launch-editor-middleware": "^2.2.1", - "lodash.defaultsdeep": "^4.6.0", + "lodash.defaultsdeep": "^4.6.1", "lodash.mapvalues": "^4.6.0", "lodash.transform": "^4.6.0", - "mini-css-extract-plugin": "^0.5.0", - "minimist": "^1.2.0", - "ora": "^3.1.0", - "portfinder": "^1.0.20", + "mini-css-extract-plugin": "^0.9.0", + "minimist": "^1.2.5", + "pnp-webpack-plugin": "^1.6.4", + "portfinder": "^1.0.26", "postcss-loader": "^3.0.0", - "read-pkg": "^4.0.1", - "semver": "^5.6.0", - "slash": "^2.0.0", - "source-map-url": "^0.4.0", - "ssri": "^6.0.1", - "string.prototype.padend": "^3.0.0", - "terser-webpack-plugin": "^1.2.2", - "thread-loader": "^2.1.2", - "url-loader": "^1.1.2", - "vue-loader": "^15.6.4", - "webpack": ">=4 < 4.29", - "webpack-bundle-analyzer": "^3.0.4", - "webpack-chain": "^4.11.0", - "webpack-dev-server": "^3.2.0", - "webpack-merge": "^4.2.1", - "yorkie": "^2.0.0" + "ssri": "^7.1.0", + "terser-webpack-plugin": "^2.3.6", + "thread-loader": "^2.1.3", + "url-loader": "^2.2.0", + "vue-loader": "^15.9.2", + "vue-loader-v16": "npm:vue-loader@^16.0.0-beta.7", + "vue-style-loader": "^4.1.2", + "webpack": "^4.0.0", + "webpack-bundle-analyzer": "^3.8.0", + "webpack-chain": "^6.4.0", + "webpack-dev-server": "^3.11.0", + "webpack-merge": "^4.2.2" }, "dependencies": { "acorn": { - "version": "6.4.1", - "resolved": "https://registry.npm.taobao.org/acorn/download/acorn-6.4.1.tgz?cache=0&sync_timestamp=1583823913618&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-6.4.1.tgz", - "integrity": "sha1-Ux5Yuj9RudrLmmZGyk3r9bFMpHQ=", + "version": "7.4.1", + "resolved": "https://registry.npm.taobao.org/acorn/download/acorn-7.4.1.tgz?cache=0&sync_timestamp=1602534280466&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-7.4.1.tgz", + "integrity": "sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=", "dev": true }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npm.taobao.org/debug/download/debug-4.1.1.tgz", - "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npm.taobao.org/minimist/download/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npm.taobao.org/big.js/download/big.js-3.2.0.tgz", + "integrity": "sha1-pfwpi4G54Nyi5FiCR4S2XFK6WI4=", "dev": true }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz", - "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", + "cacache": { + "version": "13.0.1", + "resolved": "https://registry.npm.taobao.org/cacache/download/cacache-13.0.1.tgz?cache=0&sync_timestamp=1594428108619&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcacache%2Fdownload%2Fcacache-13.0.1.tgz", + "integrity": "sha1-qAAMIWlwiQgvhSh6GuxuOCAkpxw=", + "dev": true, + "requires": { + "chownr": "^1.1.2", + "figgy-pudding": "^3.5.1", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "minipass": "^3.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "p-map": "^3.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^2.7.1", + "ssri": "^7.0.0", + "unique-filename": "^1.1.1" + } + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/emojis-list/download/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", "dev": true }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npm.taobao.org/parse-json/download/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "html-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npm.taobao.org/html-webpack-plugin/download/html-webpack-plugin-3.2.0.tgz?cache=0&sync_timestamp=1613744691795&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhtml-webpack-plugin%2Fdownload%2Fhtml-webpack-plugin-3.2.0.tgz", + "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", "dev": true, "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "html-minifier": "^3.2.3", + "loader-utils": "^0.2.16", + "lodash": "^4.17.3", + "pretty-error": "^2.0.2", + "tapable": "^1.0.0", + "toposort": "^1.0.0", + "util.promisify": "1.0.0" } }, - "read-pkg": { - "version": "4.0.1", - "resolved": "https://registry.npm.taobao.org/read-pkg/download/read-pkg-4.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fread-pkg%2Fdownload%2Fread-pkg-4.0.1.tgz", - "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=", - "dev": true, - "requires": { - "normalize-package-data": "^2.3.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0" - } - } - } - }, - "@vue/cli-shared-utils": { - "version": "3.12.1", - "resolved": "https://registry.npm.taobao.org/@vue/cli-shared-utils/download/@vue/cli-shared-utils-3.12.1.tgz", - "integrity": "sha1-vPB2KH3a3uu7l8anSN/p/1DsjfA=", - "dev": true, - "requires": { - "@hapi/joi": "^15.0.1", - "chalk": "^2.4.1", - "execa": "^1.0.0", - "launch-editor": "^2.2.1", - "lru-cache": "^5.1.1", - "node-ipc": "^9.1.1", - "open": "^6.3.0", - "ora": "^3.4.0", - "request": "^2.87.0", - "request-promise-native": "^1.0.7", - "semver": "^6.0.0", - "string.prototype.padstart": "^3.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-6.0.5.tgz?cache=0&sync_timestamp=1570439926300&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcross-spawn%2Fdownload%2Fcross-spawn-6.0.5.tgz", - "integrity": "sha1-Sl7Hxk364iw6FBJNus3uhG2Ay8Q=", + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npm.taobao.org/json5/download/json5-0.5.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson5%2Fdownload%2Fjson5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", "dev": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz", - "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=", - "dev": true - } + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" } }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/execa/download/execa-1.0.0.tgz?cache=0&sync_timestamp=1576749101742&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexeca%2Fdownload%2Fexeca-1.0.0.tgz", - "integrity": "sha1-xiNqW7TfbW8V6I5/AXeYIWdJ3dg=", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + }, + "ssri": { + "version": "7.1.0", + "resolved": "https://registry.npm.taobao.org/ssri/download/ssri-7.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fssri%2Fdownload%2Fssri-7.1.0.tgz", + "integrity": "sha1-ksJBv23oI2W1x/tL126XVSLhKU0=", "dev": true, "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "figgy-pudding": "^3.5.1", + "minipass": "^3.1.1" } }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-4.1.0.tgz", - "integrity": "sha1-wbJVV189wh1Zv8ec09K0axw6VLU=", + "terser-webpack-plugin": { + "version": "2.3.8", + "resolved": "https://registry.npm.taobao.org/terser-webpack-plugin/download/terser-webpack-plugin-2.3.8.tgz?cache=0&sync_timestamp=1603881839307&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fterser-webpack-plugin%2Fdownload%2Fterser-webpack-plugin-2.3.8.tgz", + "integrity": "sha1-iUdkoZsHQ/L3BOfCqEjFKDppZyQ=", "dev": true, "requires": { - "pump": "^3.0.0" + "cacache": "^13.0.1", + "find-cache-dir": "^3.3.1", + "jest-worker": "^25.4.0", + "p-limit": "^2.3.0", + "schema-utils": "^2.6.6", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.6.12", + "webpack-sources": "^1.4.3" } }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-5.1.1.tgz", - "integrity": "sha1-HaJ+ZxAnGUdpXa9oSOhH8B2EuSA=", + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/util.promisify/download/util.promisify-1.0.0.tgz?cache=0&sync_timestamp=1610159858516&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Futil.promisify%2Fdownload%2Futil.promisify-1.0.0.tgz", + "integrity": "sha1-RA9xZaRZyaFtwUXrjnLzVocJcDA=", "dev": true, "requires": { - "yallist": "^3.0.2" + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" } - }, + } + } + }, + "@vue/cli-shared-utils": { + "version": "4.5.9", + "resolved": "https://registry.npm.taobao.org/@vue/cli-shared-utils/download/@vue/cli-shared-utils-4.5.9.tgz?cache=0&sync_timestamp=1607992019644&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fcli-shared-utils%2Fdownload%2F%40vue%2Fcli-shared-utils-4.5.9.tgz", + "integrity": "sha1-SHzqS0KC9N/5B+59iruo3Q3QPM0=", + "dev": true, + "requires": { + "@hapi/joi": "^15.0.1", + "chalk": "^2.4.2", + "execa": "^1.0.0", + "launch-editor": "^2.2.1", + "lru-cache": "^5.1.1", + "node-ipc": "^9.1.1", + "open": "^6.3.0", + "ora": "^3.4.0", + "read-pkg": "^5.1.1", + "request": "^2.88.2", + "semver": "^6.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { "semver": { "version": "6.3.0", - "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz?cache=0&sync_timestamp=1606853731020&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-6.3.0.tgz", "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=", "dev": true + } + } + }, + "@vue/compiler-core": { + "version": "3.0.5", + "resolved": "https://registry.npm.taobao.org/@vue/compiler-core/download/@vue/compiler-core-3.0.5.tgz", + "integrity": "sha1-puVMq+lTbnTGUTrNJknzEa8dQ6w=", + "dev": true, + "requires": { + "@babel/parser": "^7.12.0", + "@babel/types": "^7.12.0", + "@vue/shared": "3.0.5", + "estree-walker": "^2.0.1", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "@vue/compiler-dom": { + "version": "3.0.5", + "resolved": "https://registry.npm.taobao.org/@vue/compiler-dom/download/@vue/compiler-dom-3.0.5.tgz", + "integrity": "sha1-eIWhPm0Y9k3ejrzuwFLtLBAmlsI=", + "dev": true, + "requires": { + "@vue/compiler-core": "3.0.5", + "@vue/shared": "3.0.5" + } + }, + "@vue/compiler-sfc": { + "version": "3.0.5", + "resolved": "https://registry.npm.taobao.org/@vue/compiler-sfc/download/@vue/compiler-sfc-3.0.5.tgz", + "integrity": "sha1-OuCOYCRKcvr5WYNhh0+3vbWx03w=", + "dev": true, + "requires": { + "@babel/parser": "^7.12.0", + "@babel/types": "^7.12.0", + "@vue/compiler-core": "3.0.5", + "@vue/compiler-dom": "3.0.5", + "@vue/compiler-ssr": "3.0.5", + "@vue/shared": "3.0.5", + "consolidate": "^0.16.0", + "estree-walker": "^2.0.1", + "hash-sum": "^2.0.0", + "lru-cache": "^5.1.1", + "magic-string": "^0.25.7", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.32", + "postcss-modules": "^3.2.2", + "postcss-selector-parser": "^6.0.4", + "source-map": "^0.6.1" + }, + "dependencies": { + "consolidate": { + "version": "0.16.0", + "resolved": "https://registry.npm.taobao.org/consolidate/download/consolidate-0.16.0.tgz?cache=0&sync_timestamp=1599596863404&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fconsolidate%2Fdownload%2Fconsolidate-0.16.0.tgz", + "integrity": "sha1-oRhkdokw8vGUMWYKZZBmaPX73BY=", + "dev": true, + "requires": { + "bluebird": "^3.7.2" + } }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-3.1.1.tgz", - "integrity": "sha1-27fa+b/YusmrRev2ArjLrQ1dCP0=", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", "dev": true } } }, + "@vue/compiler-ssr": { + "version": "3.0.5", + "resolved": "https://registry.npm.taobao.org/@vue/compiler-ssr/download/@vue/compiler-ssr-3.0.5.tgz", + "integrity": "sha1-dmGtiRoL6UhybH960eQlJTxYe4M=", + "dev": true, + "requires": { + "@vue/compiler-dom": "3.0.5", + "@vue/shared": "3.0.5" + } + }, "@vue/component-compiler-utils": { - "version": "2.6.0", - "resolved": "https://registry.npm.taobao.org/@vue/component-compiler-utils/download/@vue/component-compiler-utils-2.6.0.tgz", - "integrity": "sha1-qkbSpvdkdECwuJMkNNIvEjceVDs=", + "version": "3.2.0", + "resolved": "https://registry.npm.taobao.org/@vue/component-compiler-utils/download/@vue/component-compiler-utils-3.2.0.tgz", + "integrity": "sha1-j4UYLO7Sjps8dTE95mn4MWbRHl0=", "dev": true, "requires": { "consolidate": "^0.15.1", @@ -1584,68 +1955,111 @@ "lru-cache": "^4.1.2", "merge-source-map": "^1.1.0", "postcss": "^7.0.14", - "postcss-selector-parser": "^5.0.0", - "prettier": "1.16.3", + "postcss-selector-parser": "^6.0.2", + "prettier": "^1.18.2", "source-map": "~0.6.1", "vue-template-es2015-compiler": "^1.9.0" }, "dependencies": { - "cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/cssesc/download/cssesc-2.0.0.tgz", - "integrity": "sha1-OxO9G7HLNuG8taTc0n9UxdyzVwM=", + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/hash-sum/download/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", "dev": true }, - "postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha1-JJBENWaXsztk8aj3yAki3d7nGVw=", + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.5.tgz?cache=0&sync_timestamp=1594427573763&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flru-cache%2Fdownload%2Flru-cache-4.1.5.tgz", + "integrity": "sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80=", "dev": true, "requires": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, - "prettier": { - "version": "1.16.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.16.3.tgz", - "integrity": "sha512-kn/GU6SMRYPxUakNXhpP0EedT/KmaPzr0H5lIsDogrykbaxOpOfAFfk5XA7DZrJyMAv1wlMV3CPcZruGXVVUZw==", - "dev": true - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true } } }, "@vue/eslint-config-prettier": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@vue/eslint-config-prettier/-/eslint-config-prettier-6.0.0.tgz", - "integrity": "sha512-wFQmv45c3ige5EA+ngijq40YpVcIkAy0Lihupnsnd1Dao5CBbPyfCzqtejFLZX1EwH/kCJdpz3t6s+5wd3+KxQ==", + "resolved": "https://registry.npm.taobao.org/@vue/eslint-config-prettier/download/@vue/eslint-config-prettier-6.0.0.tgz", + "integrity": "sha1-rVkSswj0rkaEWOAqKwXbC50kZwA=", "dev": true, "requires": { "eslint-config-prettier": "^6.0.0" } }, "@vue/preload-webpack-plugin": { - "version": "1.1.1", - "resolved": "https://registry.npm.taobao.org/@vue/preload-webpack-plugin/download/@vue/preload-webpack-plugin-1.1.1.tgz", - "integrity": "sha1-GHI1MNME9EMCHaIpLW7JUCgmEEo=", + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/@vue/preload-webpack-plugin/download/@vue/preload-webpack-plugin-1.1.2.tgz", + "integrity": "sha1-zrkktOyzucQ4ccekKaAvhCPmIas=", "dev": true }, - "@vue/test-utils": { - "version": "1.0.0-beta.29", - "resolved": "https://registry.npm.taobao.org/@vue/test-utils/download/@vue/test-utils-1.0.0-beta.29.tgz?cache=0&sync_timestamp=1583751388817&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Ftest-utils%2Fdownload%2F%40vue%2Ftest-utils-1.0.0-beta.29.tgz", - "integrity": "sha1-yULPJeiRzwgbagMzK0rh70MHJvA=", - "dev": true, + "@vue/reactivity": { + "version": "3.0.5", + "resolved": "https://registry.npm.taobao.org/@vue/reactivity/download/@vue/reactivity-3.0.5.tgz?cache=0&sync_timestamp=1614198861169&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Freactivity%2Fdownload%2F%40vue%2Freactivity-3.0.5.tgz", + "integrity": "sha1-43ieTVI9hF+a4LTXcOK0VZR0L9I=", + "requires": { + "@vue/shared": "3.0.5" + }, + "dependencies": { + "@vue/shared": { + "version": "3.0.5", + "resolved": "https://registry.npm.taobao.org/@vue/shared/download/@vue/shared-3.0.5.tgz", + "integrity": "sha1-wTHYi9ZxPMTZOzuxNy7bGYMiX/A=" + } + } + }, + "@vue/runtime-core": { + "version": "3.0.5", + "resolved": "https://registry.npm.taobao.org/@vue/runtime-core/download/@vue/runtime-core-3.0.5.tgz?cache=0&sync_timestamp=1614198861689&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fruntime-core%2Fdownload%2F%40vue%2Fruntime-core-3.0.5.tgz", + "integrity": "sha1-2mMx1fMA1XlOng69yKi9cqnhmWI=", + "requires": { + "@vue/reactivity": "3.0.5", + "@vue/shared": "3.0.5" + }, + "dependencies": { + "@vue/shared": { + "version": "3.0.5", + "resolved": "https://registry.npm.taobao.org/@vue/shared/download/@vue/shared-3.0.5.tgz", + "integrity": "sha1-wTHYi9ZxPMTZOzuxNy7bGYMiX/A=" + } + } + }, + "@vue/runtime-dom": { + "version": "3.0.5", + "resolved": "https://registry.npm.taobao.org/@vue/runtime-dom/download/@vue/runtime-dom-3.0.5.tgz?cache=0&sync_timestamp=1614198861553&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fruntime-dom%2Fdownload%2F%40vue%2Fruntime-dom-3.0.5.tgz", + "integrity": "sha1-HOLJxEniarBpY9oAZAluiCp6iTU=", "requires": { - "dom-event-types": "^1.0.0", - "lodash": "^4.17.4" + "@vue/runtime-core": "3.0.5", + "@vue/shared": "3.0.5", + "csstype": "^2.6.8" + }, + "dependencies": { + "@vue/shared": { + "version": "3.0.5", + "resolved": "https://registry.npm.taobao.org/@vue/shared/download/@vue/shared-3.0.5.tgz", + "integrity": "sha1-wTHYi9ZxPMTZOzuxNy7bGYMiX/A=" + } } }, + "@vue/shared": { + "version": "3.0.5", + "resolved": "https://registry.npm.taobao.org/@vue/shared/download/@vue/shared-3.0.5.tgz", + "integrity": "sha1-wTHYi9ZxPMTZOzuxNy7bGYMiX/A=", + "dev": true + }, "@vue/web-component-wrapper": { "version": "1.2.0", "resolved": "https://registry.npm.taobao.org/@vue/web-component-wrapper/download/@vue/web-component-wrapper-1.2.0.tgz", @@ -1653,175 +2067,178 @@ "dev": true }, "@webassemblyjs/ast": { - "version": "1.7.11", - "resolved": "https://registry.npm.taobao.org/@webassemblyjs/ast/download/@webassemblyjs/ast-1.7.11.tgz?cache=0&sync_timestamp=1580600103531&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fast%2Fdownload%2F%40webassemblyjs%2Fast-1.7.11.tgz", - "integrity": "sha1-uYhYLK+7Kwlei1VlJvMMkNBXys4=", + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/ast/download/@webassemblyjs/ast-1.9.0.tgz", + "integrity": "sha1-vYUGBLQEJFmlpBzX0zjL7Wle2WQ=", "dev": true, "requires": { - "@webassemblyjs/helper-module-context": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/wast-parser": "1.7.11" + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.7.11", - "resolved": "https://registry.npm.taobao.org/@webassemblyjs/floating-point-hex-parser/download/@webassemblyjs/floating-point-hex-parser-1.7.11.tgz?cache=0&sync_timestamp=1580600093212&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Ffloating-point-hex-parser%2Fdownload%2F%40webassemblyjs%2Ffloating-point-hex-parser-1.7.11.tgz", - "integrity": "sha1-pp8K9lAuuaPARVVbGmEp09Py4xM=", + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/floating-point-hex-parser/download/@webassemblyjs/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha1-PD07Jxvd/ITesA9xNEQ4MR1S/7Q=", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.7.11", - "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-api-error/download/@webassemblyjs/helper-api-error-1.7.11.tgz?cache=0&sync_timestamp=1580600095518&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fhelper-api-error%2Fdownload%2F%40webassemblyjs%2Fhelper-api-error-1.7.11.tgz", - "integrity": "sha1-x7a7gQX4QDlRGis5zklPGTgYoyo=", + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-api-error/download/@webassemblyjs/helper-api-error-1.9.0.tgz", + "integrity": "sha1-ID9nbjM7lsnaLuqzzO8zxFkotqI=", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.7.11", - "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-buffer/download/@webassemblyjs/helper-buffer-1.7.11.tgz?cache=0&sync_timestamp=1580600094393&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fhelper-buffer%2Fdownload%2F%40webassemblyjs%2Fhelper-buffer-1.7.11.tgz", - "integrity": "sha1-MSLUjcxslFbtmC3r4WyPNxAd85s=", + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-buffer/download/@webassemblyjs/helper-buffer-1.9.0.tgz", + "integrity": "sha1-oUQtJpxf6yP8vJ73WdrDVH8p3gA=", "dev": true }, "@webassemblyjs/helper-code-frame": { - "version": "1.7.11", - "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-code-frame/download/@webassemblyjs/helper-code-frame-1.7.11.tgz?cache=0&sync_timestamp=1580600150532&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fhelper-code-frame%2Fdownload%2F%40webassemblyjs%2Fhelper-code-frame-1.7.11.tgz", - "integrity": "sha1-z48QbnRmYqDaKb3vY1/NPRJINks=", + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-code-frame/download/@webassemblyjs/helper-code-frame-1.9.0.tgz", + "integrity": "sha1-ZH+Iks0gQ6gqwMjF51w28dkVnyc=", "dev": true, "requires": { - "@webassemblyjs/wast-printer": "1.7.11" + "@webassemblyjs/wast-printer": "1.9.0" } }, "@webassemblyjs/helper-fsm": { - "version": "1.7.11", - "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-fsm/download/@webassemblyjs/helper-fsm-1.7.11.tgz?cache=0&sync_timestamp=1580600091792&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fhelper-fsm%2Fdownload%2F%40webassemblyjs%2Fhelper-fsm-1.7.11.tgz", - "integrity": "sha1-3ziIKmJAgNA/dQP5Pj8XrFrAEYE=", + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-fsm/download/@webassemblyjs/helper-fsm-1.9.0.tgz", + "integrity": "sha1-wFJWtxJEIUZx9LCOwQitY7cO3bg=", "dev": true }, "@webassemblyjs/helper-module-context": { - "version": "1.7.11", - "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-module-context/download/@webassemblyjs/helper-module-context-1.7.11.tgz?cache=0&sync_timestamp=1580600151060&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fhelper-module-context%2Fdownload%2F%40webassemblyjs%2Fhelper-module-context-1.7.11.tgz", - "integrity": "sha1-2HTXIuUeYqwgJHaTXWScgC+g4gk=", - "dev": true + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-module-context/download/@webassemblyjs/helper-module-context-1.9.0.tgz", + "integrity": "sha1-JdiIS3aDmHGgimxvgGw5ee9xLwc=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0" + } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.7.11", - "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-wasm-bytecode/download/@webassemblyjs/helper-wasm-bytecode-1.7.11.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fhelper-wasm-bytecode%2Fdownload%2F%40webassemblyjs%2Fhelper-wasm-bytecode-1.7.11.tgz", - "integrity": "sha1-3ZoegX8cLrEFtM8QEwk8ufPJywY=", + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-wasm-bytecode/download/@webassemblyjs/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha1-T+2L6sm4wU+MWLcNEk1UndH+V5A=", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.7.11", - "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-wasm-section/download/@webassemblyjs/helper-wasm-section-1.7.11.tgz", - "integrity": "sha1-nJrEHs+fvP/8lvbSZ14t4zgR5oo=", + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-wasm-section/download/@webassemblyjs/helper-wasm-section-1.9.0.tgz", + "integrity": "sha1-WkE41aYpK6GLBMWuSXF+QWeWU0Y=", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-buffer": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/wasm-gen": "1.7.11" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" } }, "@webassemblyjs/ieee754": { - "version": "1.7.11", - "resolved": "https://registry.npm.taobao.org/@webassemblyjs/ieee754/download/@webassemblyjs/ieee754-1.7.11.tgz", - "integrity": "sha1-yVg562N1ejGICq7HtlEtQZGsZAs=", + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/ieee754/download/@webassemblyjs/ieee754-1.9.0.tgz", + "integrity": "sha1-Fceg+6roP7JhQ7us9tbfFwKtOeQ=", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.7.11", - "resolved": "https://registry.npm.taobao.org/@webassemblyjs/leb128/download/@webassemblyjs/leb128-1.7.11.tgz?cache=0&sync_timestamp=1580600096686&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fleb128%2Fdownload%2F%40webassemblyjs%2Fleb128-1.7.11.tgz", - "integrity": "sha1-1yZ6HunEWU/T9+NymIGOxlaH22M=", + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/leb128/download/@webassemblyjs/leb128-1.9.0.tgz", + "integrity": "sha1-8Zygt2ptxVYjoJz/p2noOPoeHJU=", "dev": true, "requires": { - "@xtuc/long": "4.2.1" + "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.7.11", - "resolved": "https://registry.npm.taobao.org/@webassemblyjs/utf8/download/@webassemblyjs/utf8-1.7.11.tgz?cache=0&sync_timestamp=1580600100063&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Futf8%2Fdownload%2F%40webassemblyjs%2Futf8-1.7.11.tgz", - "integrity": "sha1-Btchjqn9yUpnk6qSIIFg2z0m7oI=", + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/utf8/download/@webassemblyjs/utf8-1.9.0.tgz", + "integrity": "sha1-BNM7Y2945qaBMifoJAL3Y3tiKas=", "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.7.11", - "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wasm-edit/download/@webassemblyjs/wasm-edit-1.7.11.tgz?cache=0&sync_timestamp=1580600102353&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fwasm-edit%2Fdownload%2F%40webassemblyjs%2Fwasm-edit-1.7.11.tgz", - "integrity": "sha1-jHTKR01PlR0B266b1wgU7iKoIAU=", + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wasm-edit/download/@webassemblyjs/wasm-edit-1.9.0.tgz", + "integrity": "sha1-P+bXnT8PkiGDqoYALELdJWz+6c8=", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-buffer": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/helper-wasm-section": "1.7.11", - "@webassemblyjs/wasm-gen": "1.7.11", - "@webassemblyjs/wasm-opt": "1.7.11", - "@webassemblyjs/wasm-parser": "1.7.11", - "@webassemblyjs/wast-printer": "1.7.11" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" } }, "@webassemblyjs/wasm-gen": { - "version": "1.7.11", - "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wasm-gen/download/@webassemblyjs/wasm-gen-1.7.11.tgz?cache=0&sync_timestamp=1580600104620&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fwasm-gen%2Fdownload%2F%40webassemblyjs%2Fwasm-gen-1.7.11.tgz", - "integrity": "sha1-m7upQvIjdWhqb7dZr816ycRdoag=", + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wasm-gen/download/@webassemblyjs/wasm-gen-1.9.0.tgz", + "integrity": "sha1-ULxw7Gje2OJ2OwGhQYv0NJGnpJw=", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/ieee754": "1.7.11", - "@webassemblyjs/leb128": "1.7.11", - "@webassemblyjs/utf8": "1.7.11" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, "@webassemblyjs/wasm-opt": { - "version": "1.7.11", - "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wasm-opt/download/@webassemblyjs/wasm-opt-1.7.11.tgz?cache=0&sync_timestamp=1580600101082&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fwasm-opt%2Fdownload%2F%40webassemblyjs%2Fwasm-opt-1.7.11.tgz", - "integrity": "sha1-szHo5874+OLwB9QsOjagWAp9bKc=", + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wasm-opt/download/@webassemblyjs/wasm-opt-1.9.0.tgz", + "integrity": "sha1-IhEYHlsxMmRDzIES658LkChyGmE=", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-buffer": "1.7.11", - "@webassemblyjs/wasm-gen": "1.7.11", - "@webassemblyjs/wasm-parser": "1.7.11" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" } }, "@webassemblyjs/wasm-parser": { - "version": "1.7.11", - "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wasm-parser/download/@webassemblyjs/wasm-parser-1.7.11.tgz?cache=0&sync_timestamp=1580600149379&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fwasm-parser%2Fdownload%2F%40webassemblyjs%2Fwasm-parser-1.7.11.tgz", - "integrity": "sha1-bj0g+mo1GfawhO+Tka1YIR77Cho=", + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wasm-parser/download/@webassemblyjs/wasm-parser-1.9.0.tgz", + "integrity": "sha1-nUjkSCbfSmWYKUqmyHRp1kL/9l4=", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-api-error": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/ieee754": "1.7.11", - "@webassemblyjs/leb128": "1.7.11", - "@webassemblyjs/utf8": "1.7.11" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, "@webassemblyjs/wast-parser": { - "version": "1.7.11", - "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wast-parser/download/@webassemblyjs/wast-parser-1.7.11.tgz?cache=0&sync_timestamp=1580600149981&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fwast-parser%2Fdownload%2F%40webassemblyjs%2Fwast-parser-1.7.11.tgz", - "integrity": "sha1-Jb0RdWLKjAAnIP+BFu+QctnKhpw=", + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wast-parser/download/@webassemblyjs/wast-parser-1.9.0.tgz", + "integrity": "sha1-MDERXXmsW9JhVWzsw/qQo+9FGRQ=", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/floating-point-hex-parser": "1.7.11", - "@webassemblyjs/helper-api-error": "1.7.11", - "@webassemblyjs/helper-code-frame": "1.7.11", - "@webassemblyjs/helper-fsm": "1.7.11", - "@xtuc/long": "4.2.1" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" } }, "@webassemblyjs/wast-printer": { - "version": "1.7.11", - "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wast-printer/download/@webassemblyjs/wast-printer-1.7.11.tgz?cache=0&sync_timestamp=1580600105652&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fwast-printer%2Fdownload%2F%40webassemblyjs%2Fwast-printer-1.7.11.tgz", - "integrity": "sha1-xCRbbeJCy1CizJUBdP2/ZceNeBM=", + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wast-printer/download/@webassemblyjs/wast-printer-1.9.0.tgz", + "integrity": "sha1-STXVTIX+9jewDOn1I3dFHQDUeJk=", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/wast-parser": "1.7.11", - "@xtuc/long": "4.2.1" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" } }, "@xtuc/ieee754": { @@ -1831,26 +2248,9 @@ "dev": true }, "@xtuc/long": { - "version": "4.2.1", - "resolved": "https://registry.npm.taobao.org/@xtuc/long/download/@xtuc/long-4.2.1.tgz", - "integrity": "sha1-XIXWYvdvodNFdXZsXc1mFavNMNg=", - "dev": true - }, - "JSV": { - "version": "4.0.2", - "resolved": "https://registry.npm.taobao.org/JSV/download/JSV-4.0.2.tgz", - "integrity": "sha1-0Hf2glVx+CEy+d/67Vh7QCn+/1c=" - }, - "abab": { - "version": "2.0.3", - "resolved": "https://registry.npm.taobao.org/abab/download/abab-2.0.3.tgz", - "integrity": "sha1-Yj4gdeAustPyR15J+ZyRhGRnkHo=", - "dev": true - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npm.taobao.org/abbrev/download/abbrev-1.1.1.tgz", - "integrity": "sha1-+PLIh60Qv2f2NPAFtph/7TF5qsg=", + "version": "4.2.2", + "resolved": "https://registry.npm.taobao.org/@xtuc/long/download/@xtuc/long-4.2.2.tgz", + "integrity": "sha1-0pHGpOl5ibXGHZrPOWrk/hM6cY0=", "dev": true }, "accepts": { @@ -1864,61 +2264,21 @@ } }, "acorn": { - "version": "5.7.4", - "resolved": "https://registry.npm.taobao.org/acorn/download/acorn-5.7.4.tgz?cache=0&sync_timestamp=1583823913618&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-5.7.4.tgz", - "integrity": "sha1-Po2KmUfQWZoXltECJddDL0pKz14=", + "version": "6.4.2", + "resolved": "https://registry.npm.taobao.org/acorn/download/acorn-6.4.2.tgz?cache=0&sync_timestamp=1602534280466&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-6.4.2.tgz", + "integrity": "sha1-NYZv1xBSjpLeEM8GAWSY5H454eY=", "dev": true }, - "acorn-dynamic-import": { - "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/acorn-dynamic-import/download/acorn-dynamic-import-3.0.0.tgz", - "integrity": "sha1-kBzu5Mf6rvfgetKkfokGddpQong=", - "dev": true, - "requires": { - "acorn": "^5.0.0" - } - }, - "acorn-globals": { - "version": "4.3.4", - "resolved": "https://registry.npm.taobao.org/acorn-globals/download/acorn-globals-4.3.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn-globals%2Fdownload%2Facorn-globals-4.3.4.tgz", - "integrity": "sha1-n6GSat3BHJcwjE5m163Q1Awycuc=", - "dev": true, - "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" - }, - "dependencies": { - "acorn": { - "version": "6.4.1", - "resolved": "https://registry.npm.taobao.org/acorn/download/acorn-6.4.1.tgz?cache=0&sync_timestamp=1583823913618&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-6.4.1.tgz", - "integrity": "sha1-Ux5Yuj9RudrLmmZGyk3r9bFMpHQ=", - "dev": true - } - } - }, "acorn-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npm.taobao.org/acorn-jsx/download/acorn-jsx-3.0.1.tgz", - "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", - "dev": true, - "optional": true, - "requires": { - "acorn": "^3.0.4" - }, - "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npm.taobao.org/acorn/download/acorn-3.3.0.tgz?cache=0&sync_timestamp=1583823913618&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true, - "optional": true - } - } + "version": "5.3.1", + "resolved": "https://registry.npm.taobao.org/acorn-jsx/download/acorn-jsx-5.3.1.tgz", + "integrity": "sha1-/IZh4Rt6wVOcR9v+oucrOvNNJns=", + "dev": true }, "acorn-walk": { - "version": "6.2.0", - "resolved": "https://registry.npm.taobao.org/acorn-walk/download/acorn-walk-6.2.0.tgz", - "integrity": "sha1-Ejy487hMIXHx9/slJhWxx4prGow=", + "version": "7.2.0", + "resolved": "https://registry.npm.taobao.org/acorn-walk/download/acorn-walk-7.2.0.tgz", + "integrity": "sha1-DeiJpgEgOQmw++B7iTjcIdLpZ7w=", "dev": true }, "address": { @@ -1927,19 +2287,20 @@ "integrity": "sha1-vxEWycdYxRt6kz0pa3LCIe2UKLY=", "dev": true }, - "adler-32": { - "version": "1.2.0", - "resolved": "https://registry.npm.taobao.org/adler-32/download/adler-32-1.2.0.tgz", - "integrity": "sha1-aj5r8KY5ALoVZSgIyxXGgT0aXyU=", + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/aggregate-error/download/aggregate-error-3.1.0.tgz", + "integrity": "sha1-kmcP9Q9TWb23o+DUDQ7DDFc3aHo=", + "dev": true, "requires": { - "exit-on-epipe": "~1.0.1", - "printj": "~1.1.0" + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" } }, "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npm.taobao.org/ajv/download/ajv-6.12.0.tgz?cache=0&sync_timestamp=1582379612319&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv%2Fdownload%2Fajv-6.12.0.tgz", - "integrity": "sha1-BtYLlth7hFSlrauobnhU2mKdtLc=", + "version": "6.12.6", + "resolved": "https://registry.npm.taobao.org/ajv/download/ajv-6.12.6.tgz?cache=0&sync_timestamp=1608145983865&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv%2Fdownload%2Fajv-6.12.6.tgz", + "integrity": "sha1-uvWmLoArB9l3A0WG+MO69a3ybfQ=", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -1950,14 +2311,15 @@ }, "ajv-errors": { "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/ajv-errors/download/ajv-errors-1.0.1.tgz", + "resolved": "https://registry.npm.taobao.org/ajv-errors/download/ajv-errors-1.0.1.tgz?cache=0&sync_timestamp=1608064310528&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv-errors%2Fdownload%2Fajv-errors-1.0.1.tgz", "integrity": "sha1-81mGrOuRr63sQQL72FAUlQzvpk0=", "dev": true }, "ajv-keywords": { - "version": "3.4.1", - "resolved": "https://registry.npm.taobao.org/ajv-keywords/download/ajv-keywords-3.4.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv-keywords%2Fdownload%2Fajv-keywords-3.4.1.tgz", - "integrity": "sha1-75FuJxxkrBIXH9g4TqrmsjRYVNo=" + "version": "3.5.2", + "resolved": "https://registry.npm.taobao.org/ajv-keywords/download/ajv-keywords-3.5.2.tgz?cache=0&sync_timestamp=1608059810829&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv-keywords%2Fdownload%2Fajv-keywords-3.5.2.tgz", + "integrity": "sha1-MfKdpatuANHC0yms97WSlhTVAU0=", + "dev": true }, "alphanum-sort": { "version": "1.0.2", @@ -1965,12 +2327,6 @@ "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", "dev": true }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/amdefine/download/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true - }, "ansi-colors": { "version": "3.2.4", "resolved": "https://registry.npm.taobao.org/ansi-colors/download/ansi-colors-3.2.4.tgz", @@ -1978,10 +2334,21 @@ "dev": true }, "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npm.taobao.org/ansi-escapes/download/ansi-escapes-3.2.0.tgz", - "integrity": "sha1-h4C5j/nb9WOBUtHx/lwde0RCl2s=", - "dev": true + "version": "4.3.1", + "resolved": "https://registry.npm.taobao.org/ansi-escapes/download/ansi-escapes-4.3.1.tgz", + "integrity": "sha1-pcR8xDGB8fOP/XB2g3cA05VSKmE=", + "dev": true, + "requires": { + "type-fest": "^0.11.0" + }, + "dependencies": { + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npm.taobao.org/type-fest/download/type-fest-0.11.0.tgz?cache=0&sync_timestamp=1606468796224&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftype-fest%2Fdownload%2Ftype-fest-0.11.0.tgz", + "integrity": "sha1-l6vwhyMQ/tiKXEZrJWgVdhReM/E=", + "dev": true + } + } }, "ansi-html": { "version": "0.0.7", @@ -1990,49 +2357,34 @@ "dev": true }, "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz", + "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=", + "dev": true }, "ansi-styles": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-1.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-1.0.0.tgz", - "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=" + "version": "3.2.1", + "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz?cache=0&sync_timestamp=1606792371412&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-3.2.1.tgz", + "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } }, - "any-observable": { - "version": "0.3.0", - "resolved": "https://registry.npm.taobao.org/any-observable/download/any-observable-0.3.0.tgz", - "integrity": "sha1-r5M0deWAamfQ198JDdXovvZdEZs=", + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npm.taobao.org/any-promise/download/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", "dev": true }, "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/anymatch/download/anymatch-2.0.0.tgz", - "integrity": "sha1-vLJLTzeTTZqnrBe0ra+J58du8us=", + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/anymatch/download/anymatch-3.1.1.tgz", + "integrity": "sha1-xV7PAhheJGklk5kxDBc84xIzsUI=", "dev": true, "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "append-transform": { - "version": "0.4.0", - "resolved": "https://registry.npm.taobao.org/append-transform/download/append-transform-0.4.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fappend-transform%2Fdownload%2Fappend-transform-0.4.0.tgz", - "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", - "dev": true, - "requires": { - "default-require-extensions": "^1.0.0" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" } }, "aproba": { @@ -2042,25 +2394,16 @@ "dev": true }, "arch": { - "version": "2.1.1", - "resolved": "https://registry.npm.taobao.org/arch/download/arch-2.1.1.tgz", - "integrity": "sha1-j1wnMao1owkpIhuwZA7tZRdeyE4=", + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/arch/download/arch-2.2.0.tgz", + "integrity": "sha1-G8R4GPMFdk8jqzMGsL/AhsWinRE=", "dev": true }, - "are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npm.taobao.org/are-we-there-yet/download/are-we-there-yet-1.1.5.tgz", - "integrity": "sha1-SzXClE8GKov82mZBB2A1D+nd/CE=", - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npm.taobao.org/argparse/download/argparse-1.0.10.tgz", "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=", + "dev": true, "requires": { "sprintf-js": "~1.0.2" } @@ -2083,36 +2426,12 @@ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, - "array-each": { - "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/array-each/download/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", - "dev": true - }, - "array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/array-equal/download/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", - "dev": true - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npm.taobao.org/array-find-index/download/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, "array-flatten": { "version": "1.1.1", "resolved": "https://registry.npm.taobao.org/array-flatten/download/array-flatten-1.1.1.tgz?cache=0&sync_timestamp=1574313315299&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Farray-flatten%2Fdownload%2Farray-flatten-1.1.1.tgz", "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", "dev": true }, - "array-slice": { - "version": "1.1.0", - "resolved": "https://registry.npm.taobao.org/array-slice/download/array-slice-1.1.0.tgz", - "integrity": "sha1-42jqFfibxwaff/uJrsOmx9SsItQ=", - "dev": true - }, "array-union": { "version": "1.0.2", "resolved": "https://registry.npm.taobao.org/array-union/download/array-union-1.0.2.tgz", @@ -2134,12 +2453,6 @@ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/arrify/download/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npm.taobao.org/asn1/download/asn1-0.2.4.tgz", @@ -2150,14 +2463,23 @@ } }, "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npm.taobao.org/asn1.js/download/asn1.js-4.10.1.tgz", - "integrity": "sha1-ucK/WAXx5kqt7tbfOiv6+1pz9aA=", + "version": "5.4.1", + "resolved": "https://registry.npm.taobao.org/asn1.js/download/asn1.js-5.4.1.tgz", + "integrity": "sha1-EamAuE67kXgc41sP3C7ilON4Pwc=", "dev": true, "requires": { "bn.js": "^4.0.0", "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-4.11.9.tgz", + "integrity": "sha1-JtVWgpRY+dHoH8SJUkk9C6NQeCg=", + "dev": true + } } }, "assert": { @@ -2178,7 +2500,7 @@ }, "util": { "version": "0.10.3", - "resolved": "https://registry.npm.taobao.org/util/download/util-0.10.3.tgz", + "resolved": "https://registry.npm.taobao.org/util/download/util-0.10.3.tgz?cache=0&sync_timestamp=1588238435623&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Futil%2Fdownload%2Futil-0.10.3.tgz", "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", "dev": true, "requires": { @@ -2220,12 +2542,6 @@ "integrity": "sha1-tyfb+H12UWAvBvTUrDh/R9kbDL8=", "dev": true }, - "async-foreach": { - "version": "0.1.3", - "resolved": "https://registry.npm.taobao.org/async-foreach/download/async-foreach-0.1.3.tgz", - "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", - "dev": true - }, "async-limiter": { "version": "1.0.1", "resolved": "https://registry.npm.taobao.org/async-limiter/download/async-limiter-1.0.1.tgz?cache=0&sync_timestamp=1574272018408&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fasync-limiter%2Fdownload%2Fasync-limiter-1.0.1.tgz", @@ -2233,12 +2549,9 @@ "dev": true }, "async-validator": { - "version": "1.8.5", - "resolved": "https://registry.npm.taobao.org/async-validator/download/async-validator-1.8.5.tgz?cache=0&sync_timestamp=1575620599372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fasync-validator%2Fdownload%2Fasync-validator-1.8.5.tgz", - "integrity": "sha1-3D4I7B/Q3dtn5ghC8CwM0c7G1/A=", - "requires": { - "babel-runtime": "6.x" - } + "version": "3.5.1", + "resolved": "https://registry.npm.taobao.org/async-validator/download/async-validator-3.5.1.tgz", + "integrity": "sha1-zWK5aIskZfSEIOJ620d2CrG1VZ8=" }, "asynckit": { "version": "0.4.0", @@ -2253,18 +2566,18 @@ "dev": true }, "autoprefixer": { - "version": "9.7.4", - "resolved": "https://registry.npm.taobao.org/autoprefixer/download/autoprefixer-9.7.4.tgz", - "integrity": "sha1-+L8+BnB9BH8GQdh67oz7F0sqU3g=", + "version": "9.8.6", + "resolved": "https://registry.npm.taobao.org/autoprefixer/download/autoprefixer-9.8.6.tgz?cache=0&sync_timestamp=1607413393711&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fautoprefixer%2Fdownload%2Fautoprefixer-9.8.6.tgz", + "integrity": "sha1-O3NZTKG/kmYyDFrPFYjXTep0IQ8=", "dev": true, "requires": { - "browserslist": "^4.8.3", - "caniuse-lite": "^1.0.30001020", - "chalk": "^2.4.2", + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "colorette": "^1.2.1", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", - "postcss": "^7.0.26", - "postcss-value-parser": "^4.0.2" + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" } }, "aws-sign2": { @@ -2274,622 +2587,168 @@ "dev": true }, "aws4": { - "version": "1.9.1", - "resolved": "https://registry.npm.taobao.org/aws4/download/aws4-1.9.1.tgz?cache=0&sync_timestamp=1578959055063&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Faws4%2Fdownload%2Faws4-1.9.1.tgz", - "integrity": "sha1-fjPY99RJs/ZzzXLeuavcVS2+Uo4=", + "version": "1.11.0", + "resolved": "https://registry.npm.taobao.org/aws4/download/aws4-1.11.0.tgz?cache=0&sync_timestamp=1604101647749&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Faws4%2Fdownload%2Faws4-1.11.0.tgz", + "integrity": "sha1-1h9G2DslGSUOJ4Ta9bCUeai0HFk=", "dev": true }, "axios": { - "version": "0.18.1", - "resolved": "https://registry.npm.taobao.org/axios/download/axios-0.18.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Faxios%2Fdownload%2Faxios-0.18.1.tgz", - "integrity": "sha1-/z8N4ue10YDnV62YAA8Qgbh7zqM=", - "requires": { - "follow-redirects": "1.5.10", - "is-buffer": "^2.0.2" - } - }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npm.taobao.org/babel-code-frame/download/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true, + "version": "0.21.1", + "resolved": "https://registry.npm.taobao.org/axios/download/axios-0.21.1.tgz?cache=0&sync_timestamp=1608611162952&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Faxios%2Fdownload%2Faxios-0.21.1.tgz", + "integrity": "sha1-IlY0gZYvTWvemnbVFu8OXTwJsrg=", "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz?cache=0&sync_timestamp=1573282949696&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npm.taobao.org/js-tokens/download/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz?cache=0&sync_timestamp=1573280518303&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } + "follow-redirects": "^1.10.0" } }, - "babel-core": { - "version": "7.0.0-bridge.0", - "resolved": "https://registry.npm.taobao.org/babel-core/download/babel-core-7.0.0-bridge.0.tgz", - "integrity": "sha1-laSS3dkPm06aSh2hTrM1uHtjTs4=", - "dev": true - }, "babel-eslint": { - "version": "10.0.1", - "resolved": "https://registry.npm.taobao.org/babel-eslint/download/babel-eslint-10.0.1.tgz", - "integrity": "sha1-kZaB3AmWFM19MdRciQhpUJKh+u0=", + "version": "10.1.0", + "resolved": "https://registry.npm.taobao.org/babel-eslint/download/babel-eslint-10.1.0.tgz?cache=0&sync_timestamp=1600349064486&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabel-eslint%2Fdownload%2Fbabel-eslint-10.1.0.tgz", + "integrity": "sha1-aWjlaKkQt4+zd5zdi2rC9HmUMjI=", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@babel/types": "^7.0.0", - "eslint-scope": "3.7.1", - "eslint-visitor-keys": "^1.0.0" - }, - "dependencies": { - "eslint-scope": { - "version": "3.7.1", - "resolved": "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-3.7.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-scope%2Fdownload%2Feslint-scope-3.7.1.tgz", - "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - } + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" } }, - "babel-generator": { - "version": "6.26.1", - "resolved": "https://registry.npm.taobao.org/babel-generator/download/babel-generator-6.26.1.tgz", - "integrity": "sha1-GERAjTuPDTWkBOp6wYDwh6YBvZA=", + "babel-loader": { + "version": "8.2.2", + "resolved": "https://registry.npm.taobao.org/babel-loader/download/babel-loader-8.2.2.tgz", + "integrity": "sha1-k2POhMEMmkDmx1N0jhRBtgyKC4E=", "dev": true, "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" - }, - "dependencies": { - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npm.taobao.org/jsesc/download/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true - } + "find-cache-dir": "^3.3.1", + "loader-utils": "^1.4.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" } }, - "babel-helper-vue-jsx-merge-props": { - "version": "2.0.3", - "resolved": "https://registry.npm.taobao.org/babel-helper-vue-jsx-merge-props/download/babel-helper-vue-jsx-merge-props-2.0.3.tgz", - "integrity": "sha1-Iq69OzOQIyjlEyk6jkmSs4T58bY=" - }, - "babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npm.taobao.org/babel-helpers/download/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npm.taobao.org/babel-plugin-dynamic-import-node/download/babel-plugin-dynamic-import-node-2.3.3.tgz?cache=0&sync_timestamp=1587495874530&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabel-plugin-dynamic-import-node%2Fdownload%2Fbabel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha1-hP2hnJduxcbe/vV/lCez3vZuF6M=", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "object.assign": "^4.1.0" } }, - "babel-jest": { - "version": "23.6.0", - "resolved": "https://registry.npm.taobao.org/babel-jest/download/babel-jest-23.6.0.tgz?cache=0&sync_timestamp=1579654876842&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabel-jest%2Fdownload%2Fbabel-jest-23.6.0.tgz", - "integrity": "sha1-pkQjI2ZVeiJAoMCD2msleGGFovE=", - "dev": true, - "requires": { - "babel-plugin-istanbul": "^4.1.6", - "babel-preset-jest": "^23.2.0" - } + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true }, - "babel-loader": { - "version": "8.0.6", - "resolved": "https://registry.npm.taobao.org/babel-loader/download/babel-loader-8.0.6.tgz", - "integrity": "sha1-4zvbbzYrA/S7FBoMIauHxQG3Dfs=", + "base": { + "version": "0.11.2", + "resolved": "https://registry.npm.taobao.org/base/download/base-0.11.2.tgz", + "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=", "dev": true, "requires": { - "find-cache-dir": "^2.0.0", - "loader-utils": "^1.0.2", - "mkdirp": "^0.5.1", - "pify": "^4.0.1" + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" }, "dependencies": { - "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-2.1.0.tgz", - "integrity": "sha1-jQ+UzRP+Q8bHwmGg2GEVypGMBfc=", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz", - "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-3.0.0.tgz", - "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npm.taobao.org/make-dir/download/make-dir-2.1.0.tgz?cache=0&sync_timestamp=1581538411621&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmake-dir%2Fdownload%2Fmake-dir-2.1.0.tgz", - "integrity": "sha1-XwMQ4YuL6JjMBwCSlaMK5B6R5vU=", + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "is-descriptor": "^1.0.0" } }, - "p-limit": { - "version": "2.2.2", - "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-2.2.2.tgz?cache=0&sync_timestamp=1577904218145&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-limit%2Fdownload%2Fp-limit-2.2.2.tgz", - "integrity": "sha1-YSebZ3IfUoeqHBOpp/u8SMkpGx4=", + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", "dev": true, "requires": { - "p-try": "^2.0.0" + "kind-of": "^6.0.0" } }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-3.0.0.tgz", - "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=", + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", "dev": true, "requires": { - "p-limit": "^2.0.0" + "kind-of": "^6.0.0" } }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npm.taobao.org/p-try/download/p-try-2.2.0.tgz", - "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=", - "dev": true - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npm.taobao.org/pify/download/pify-4.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-4.0.1.tgz", - "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=", - "dev": true - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-3.0.0.tgz", - "integrity": "sha1-J0kCDyOe2ZCIGx9xIQ1R62UjvqM=", + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", "dev": true, "requires": { - "find-up": "^3.0.0" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } } } }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npm.taobao.org/babel-messages/download/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npm.taobao.org/base64-js/download/base64-js-1.5.1.tgz", + "integrity": "sha1-GxtEAWClv3rUC2UPCVljSBkDkwo=", + "dev": true }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.0", - "resolved": "https://registry.npm.taobao.org/babel-plugin-dynamic-import-node/download/babel-plugin-dynamic-import-node-2.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabel-plugin-dynamic-import-node%2Fdownload%2Fbabel-plugin-dynamic-import-node-2.3.0.tgz", - "integrity": "sha1-8A9Qe9qjw+P/bn5emNkKesq5b38=", + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/batch/download/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "dev": true, "requires": { - "object.assign": "^4.1.0" + "tweetnacl": "^0.14.3" } }, - "babel-plugin-istanbul": { - "version": "4.1.6", - "resolved": "https://registry.npm.taobao.org/babel-plugin-istanbul/download/babel-plugin-istanbul-4.1.6.tgz", - "integrity": "sha1-NsWbIZLvzoHFs3gyG3QXWt0cmkU=", + "bfj": { + "version": "6.1.2", + "resolved": "https://registry.npm.taobao.org/bfj/download/bfj-6.1.2.tgz", + "integrity": "sha1-MlyGGoIryzWKQceKM7jm4ght3n8=", "dev": true, "requires": { - "babel-plugin-syntax-object-rest-spread": "^6.13.0", - "find-up": "^2.1.0", - "istanbul-lib-instrument": "^1.10.1", - "test-exclude": "^4.2.1" + "bluebird": "^3.5.5", + "check-types": "^8.0.3", + "hoopy": "^0.1.4", + "tryer": "^1.0.1" } }, - "babel-plugin-jest-hoist": { - "version": "23.2.0", - "resolved": "https://registry.npm.taobao.org/babel-plugin-jest-hoist/download/babel-plugin-jest-hoist-23.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabel-plugin-jest-hoist%2Fdownload%2Fbabel-plugin-jest-hoist-23.2.0.tgz", - "integrity": "sha1-5h+uBaHKiAGq3uV6bWa4zvr0QWc=", + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npm.taobao.org/big.js/download/big.js-5.2.2.tgz", + "integrity": "sha1-ZfCvOC9Xi83HQr2cKB6cstd2gyg=", "dev": true }, - "babel-plugin-module-resolver": { - "version": "3.2.0", - "resolved": "https://registry.npm.taobao.org/babel-plugin-module-resolver/download/babel-plugin-module-resolver-3.2.0.tgz", - "integrity": "sha1-3fpeMB47mqEthSqZefGLN4gf9ac=", - "dev": true, - "requires": { - "find-babel-config": "^1.1.0", - "glob": "^7.1.2", - "pkg-up": "^2.0.0", - "reselect": "^3.0.1", - "resolve": "^1.4.0" - } - }, - "babel-plugin-syntax-object-rest-spread": { - "version": "6.13.0", - "resolved": "https://registry.npm.taobao.org/babel-plugin-syntax-object-rest-spread/download/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", - "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-2.2.0.tgz?cache=0&sync_timestamp=1610299514499&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbinary-extensions%2Fdownload%2Fbinary-extensions-2.2.0.tgz", + "integrity": "sha1-dfUC7q+f/eQvyYgpZFvk6na9ni0=", "dev": true }, - "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.2", - "resolved": "https://registry.npm.taobao.org/babel-plugin-transform-es2015-modules-commonjs/download/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", - "integrity": "sha1-WKeThjqefKhwvcWogRF/+sJ9tvM=", + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npm.taobao.org/bindings/download/bindings-1.5.0.tgz", + "integrity": "sha1-EDU8npRTNLwFEabZCzj7x8nFBN8=", "dev": true, + "optional": true, "requires": { - "babel-plugin-transform-strict-mode": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-types": "^6.26.0" - } - }, - "babel-plugin-transform-strict-mode": { - "version": "6.24.1", - "resolved": "https://registry.npm.taobao.org/babel-plugin-transform-strict-mode/download/babel-plugin-transform-strict-mode-6.24.1.tgz", - "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-preset-jest": { - "version": "23.2.0", - "resolved": "https://registry.npm.taobao.org/babel-preset-jest/download/babel-preset-jest-23.2.0.tgz", - "integrity": "sha1-jsegOhOPABoaj7HoETZSvxpV2kY=", - "dev": true, - "requires": { - "babel-plugin-jest-hoist": "^23.2.0", - "babel-plugin-syntax-object-rest-spread": "^6.13.0" - } - }, - "babel-register": { - "version": "6.26.0", - "resolved": "https://registry.npm.taobao.org/babel-register/download/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", - "dev": true, - "requires": { - "babel-core": "^6.26.0", - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "home-or-tmp": "^2.0.0", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "source-map-support": "^0.4.15" - }, - "dependencies": { - "babel-core": { - "version": "6.26.3", - "resolved": "https://registry.npm.taobao.org/babel-core/download/babel-core-6.26.3.tgz", - "integrity": "sha1-suLwnjQtDwyI4vAuBneUEl51wgc=", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.1", - "debug": "^2.6.9", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.8", - "slash": "^1.0.0", - "source-map": "^0.5.7" - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/home-or-tmp/download/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "dev": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.1" - } - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/slash/download/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true - }, - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npm.taobao.org/source-map-support/download/source-map-support-0.4.18.tgz?cache=0&sync_timestamp=1572389965235&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map-support%2Fdownload%2Fsource-map-support-0.4.18.tgz", - "integrity": "sha1-Aoam3ovkJkEzhZTpfM6nXwosWF8=", - "dev": true, - "requires": { - "source-map": "^0.5.6" - } - } - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npm.taobao.org/babel-runtime/download/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npm.taobao.org/babel-template/download/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } - }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npm.taobao.org/babel-traverse/download/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npm.taobao.org/globals/download/globals-9.18.0.tgz", - "integrity": "sha1-qjiWs+abSH8X4x7SFD1pqOMMLYo=", - "dev": true - } - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npm.taobao.org/babel-types/download/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - }, - "dependencies": { - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npm.taobao.org/to-fast-properties/download/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true - } - } - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npm.taobao.org/babylon/download/babylon-6.18.0.tgz", - "integrity": "sha1-ry87iPpvXB5MY00aD46sT1WzleM=", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npm.taobao.org/base/download/base-0.11.2.tgz", - "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", - "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz", - "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "base64-js": { - "version": "1.3.1", - "resolved": "https://registry.npm.taobao.org/base64-js/download/base64-js-1.3.1.tgz", - "integrity": "sha1-WOzoy3XdB+ce0IxzarxfrE2/jfE=", - "dev": true - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npm.taobao.org/batch/download/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npm.taobao.org/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "bfj": { - "version": "6.1.2", - "resolved": "https://registry.npm.taobao.org/bfj/download/bfj-6.1.2.tgz", - "integrity": "sha1-MlyGGoIryzWKQceKM7jm4ght3n8=", - "dev": true, - "requires": { - "bluebird": "^3.5.5", - "check-types": "^8.0.3", - "hoopy": "^0.1.4", - "tryer": "^1.0.1" - } - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npm.taobao.org/big.js/download/big.js-5.2.2.tgz", - "integrity": "sha1-ZfCvOC9Xi83HQr2cKB6cstd2gyg=" - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-1.13.1.tgz", - "integrity": "sha1-WYr+VHVbKGilMw0q/51Ou1Mgm2U=", - "dev": true - }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npm.taobao.org/bindings/download/bindings-1.5.0.tgz", - "integrity": "sha1-EDU8npRTNLwFEabZCzj7x8nFBN8=", - "dev": true, - "optional": true, - "requires": { - "file-uri-to-path": "1.0.0" - } - }, - "block-stream": { - "version": "0.0.9", - "resolved": "https://registry.npm.taobao.org/block-stream/download/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", - "dev": true, - "requires": { - "inherits": "~2.0.0" + "file-uri-to-path": "1.0.0" } }, "bluebird": { @@ -2899,9 +2758,9 @@ "dev": true }, "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-4.11.8.tgz", - "integrity": "sha1-LN4J617jQfSEdGuwMJsyU7GxRC8=", + "version": "5.1.3", + "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-5.1.3.tgz", + "integrity": "sha1-vsoAVAj2Quvr6oCwQrTRjSrA7ms=", "dev": true }, "body-parser": { @@ -2924,13 +2783,19 @@ "dependencies": { "debug": { "version": "2.6.9", - "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1607566580543&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz", "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "dev": true, "requires": { "ms": "2.0.0" } }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1607433905701&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, "qs": { "version": "6.7.0", "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz", @@ -2969,7 +2834,7 @@ }, "brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz", + "resolved": "https://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz?cache=0&sync_timestamp=1601898189928&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbrace-expansion%2Fdownload%2Fbrace-expansion-1.1.11.tgz", "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", "dev": true, "requires": { @@ -3012,29 +2877,6 @@ "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", "dev": true }, - "browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/browser-process-hrtime/download/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha1-PJtLfXgsgSHlbxAQbYTA0P/JRiY=", - "dev": true - }, - "browser-resolve": { - "version": "1.11.3", - "resolved": "https://registry.npm.taobao.org/browser-resolve/download/browser-resolve-1.11.3.tgz", - "integrity": "sha1-m3y7PQ9RDky4a9vXlhJNKLWJCvY=", - "dev": true, - "requires": { - "resolve": "1.1.7" - }, - "dependencies": { - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npm.taobao.org/resolve/download/resolve-1.1.7.tgz?cache=0&sync_timestamp=1580943346382&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fresolve%2Fdownload%2Fresolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - } - } - }, "browserify-aes": { "version": "1.2.0", "resolved": "https://registry.npm.taobao.org/browserify-aes/download/browserify-aes-1.2.0.tgz", @@ -3073,28 +2915,49 @@ } }, "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npm.taobao.org/browserify-rsa/download/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/browserify-rsa/download/browserify-rsa-4.1.0.tgz", + "integrity": "sha1-sv0Gtbda4pf3zi3GUfkY9b4VjI0=", "dev": true, "requires": { - "bn.js": "^4.1.0", + "bn.js": "^5.0.0", "randombytes": "^2.0.1" } }, "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npm.taobao.org/browserify-sign/download/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "version": "4.2.1", + "resolved": "https://registry.npm.taobao.org/browserify-sign/download/browserify-sign-4.2.1.tgz", + "integrity": "sha1-6vSt1G3VS+O7OzbAzxWrvrp5VsM=", "dev": true, "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-3.6.0.tgz?cache=0&sync_timestamp=1581622984924&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freadable-stream%2Fdownload%2Freadable-stream-3.6.0.tgz", + "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.2.1.tgz?cache=0&sync_timestamp=1589129103371&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsafe-buffer%2Fdownload%2Fsafe-buffer-5.2.1.tgz", + "integrity": "sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY=", + "dev": true + } } }, "browserify-zlib": { @@ -3107,28 +2970,21 @@ } }, "browserslist": { - "version": "4.9.1", - "resolved": "https://registry.npm.taobao.org/browserslist/download/browserslist-4.9.1.tgz", - "integrity": "sha1-Af+5yjGhrvdngSj8aiJTMWqnKHw=", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001030", - "electron-to-chromium": "^1.3.363", - "node-releases": "^1.1.50" - } - }, - "bser": { - "version": "2.1.1", - "resolved": "https://registry.npm.taobao.org/bser/download/bser-2.1.1.tgz?cache=0&sync_timestamp=1571761384718&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbser%2Fdownload%2Fbser-2.1.1.tgz", - "integrity": "sha1-5nh9og7OnQeZhTPP2d5vXDj0vAU=", + "version": "4.16.0", + "resolved": "https://registry.npm.taobao.org/browserslist/download/browserslist-4.16.0.tgz?cache=0&sync_timestamp=1607665649211&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbrowserslist%2Fdownload%2Fbrowserslist-4.16.0.tgz", + "integrity": "sha1-QQJ3YnUAvjyyihv+A3WG++35SIs=", "dev": true, "requires": { - "node-int64": "^0.4.0" + "caniuse-lite": "^1.0.30001165", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.621", + "escalade": "^3.1.1", + "node-releases": "^1.1.67" } }, "buffer": { "version": "4.9.2", - "resolved": "https://registry.npm.taobao.org/buffer/download/buffer-4.9.2.tgz", + "resolved": "https://registry.npm.taobao.org/buffer/download/buffer-4.9.2.tgz?cache=0&sync_timestamp=1606098100352&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbuffer%2Fdownload%2Fbuffer-4.9.2.tgz", "integrity": "sha1-Iw6tNEACmIZEhBqwJEr4xEu+Pvg=", "dev": true, "requires": { @@ -3137,28 +2993,6 @@ "isarray": "^1.0.0" } }, - "buffer-alloc": { - "version": "1.2.0", - "resolved": "https://registry.npm.taobao.org/buffer-alloc/download/buffer-alloc-1.2.0.tgz", - "integrity": "sha1-iQ3ZDZI6hz4I4Q5f1RpX5bfM4Ow=", - "dev": true, - "requires": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" - } - }, - "buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npm.taobao.org/buffer-alloc-unsafe/download/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha1-vX3CauKXLQ7aJTvgYdupkjScGfA=", - "dev": true - }, - "buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/buffer-fill/download/buffer-fill-1.0.0.tgz", - "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", - "dev": true - }, "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npm.taobao.org/buffer-from/download/buffer-from-1.1.1.tgz", @@ -3171,6 +3005,12 @@ "integrity": "sha1-Uvq8xqYG0aADAoAmSO9o9jnaJow=", "dev": true }, + "buffer-json": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/buffer-json/download/buffer-json-2.0.0.tgz", + "integrity": "sha1-9z4TseQvGW/i/WfQAcfXEH7dfCM=", + "dev": true + }, "buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npm.taobao.org/buffer-xor/download/buffer-xor-1.0.3.tgz", @@ -3190,9 +3030,9 @@ "dev": true }, "cacache": { - "version": "12.0.3", - "resolved": "https://registry.npm.taobao.org/cacache/download/cacache-12.0.3.tgz", - "integrity": "sha1-vpmruk4b9d9GHNWiwQcfxDJXM5A=", + "version": "12.0.4", + "resolved": "https://registry.npm.taobao.org/cacache/download/cacache-12.0.4.tgz?cache=0&sync_timestamp=1594428108619&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcacache%2Fdownload%2Fcacache-12.0.4.tgz", + "integrity": "sha1-ZovL0QWutfHZL+JVcOyVJcj6pAw=", "dev": true, "requires": { "bluebird": "^3.5.5", @@ -3210,29 +3050,6 @@ "ssri": "^6.0.1", "unique-filename": "^1.1.1", "y18n": "^4.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-5.1.1.tgz", - "integrity": "sha1-HaJ+ZxAnGUdpXa9oSOhH8B2EuSA=", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npm.taobao.org/y18n/download/y18n-4.0.0.tgz", - "integrity": "sha1-le+U+F7MgdAHwmThkKEg8KPIVms=", - "dev": true - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-3.1.1.tgz", - "integrity": "sha1-27fa+b/YusmrRev2ArjLrQ1dCP0=", - "dev": true - } } }, "cache-base": { @@ -3253,29 +3070,27 @@ } }, "cache-loader": { - "version": "2.0.1", - "resolved": "https://registry.npm.taobao.org/cache-loader/download/cache-loader-2.0.1.tgz", - "integrity": "sha1-V1j0GmLXwjlB48PHAW5vrrA6ywc=", + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/cache-loader/download/cache-loader-4.1.0.tgz", + "integrity": "sha1-mUjK41OuwKH8ser9ojAIFuyFOH4=", "dev": true, "requires": { - "loader-utils": "^1.1.0", + "buffer-json": "^2.0.0", + "find-cache-dir": "^3.0.0", + "loader-utils": "^1.2.3", "mkdirp": "^0.5.1", - "neo-async": "^2.6.0", - "normalize-path": "^3.0.0", - "schema-utils": "^1.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fschema-utils%2Fdownload%2Fschema-utils-1.0.0.tgz", - "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } + "neo-async": "^2.6.1", + "schema-utils": "^2.0.0" + } + }, + "call-bind": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/call-bind/download/call-bind-1.0.0.tgz?cache=0&sync_timestamp=1604117087261&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcall-bind%2Fdownload%2Fcall-bind-1.0.0.tgz", + "integrity": "sha1-JBJwVLs/m9y0sfuCQYGGBy93uM4=", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.0" } }, "call-me-maybe": { @@ -3291,65 +3106,28 @@ "dev": true, "requires": { "callsites": "^2.0.0" - }, - "dependencies": { - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/callsites/download/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true - } } }, "caller-path": { - "version": "0.1.0", - "resolved": "https://registry.npm.taobao.org/caller-path/download/caller-path-0.1.0.tgz?cache=0&sync_timestamp=1574395542397&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcaller-path%2Fdownload%2Fcaller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/caller-path/download/caller-path-2.0.0.tgz?cache=0&sync_timestamp=1574395542397&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcaller-path%2Fdownload%2Fcaller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", "dev": true, - "optional": true, "requires": { - "callsites": "^0.2.0" + "caller-callsite": "^2.0.0" } }, "callsites": { - "version": "0.2.0", - "resolved": "https://registry.npm.taobao.org/callsites/download/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", - "dev": true, - "optional": true - }, - "camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/camel-case/download/camel-case-3.0.0.tgz", - "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", - "dev": true, - "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" - } + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/callsites/download/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true }, "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npm.taobao.org/camelcase-keys/download/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true, - "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" - }, - "dependencies": { - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true - } - } + "version": "6.2.0", + "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-6.2.0.tgz", + "integrity": "sha1-kkr4gcnVJaydh/QNlk5c6pgqGAk=", + "dev": true }, "caniuse-api": { "version": "3.0.0", @@ -3364,20 +3142,11 @@ } }, "caniuse-lite": { - "version": "1.0.30001033", - "resolved": "https://registry.npm.taobao.org/caniuse-lite/download/caniuse-lite-1.0.30001033.tgz", - "integrity": "sha1-YMMo+1aGDeYPmiy0GcMfuAWHy6A=", + "version": "1.0.30001168", + "resolved": "https://registry.npm.taobao.org/caniuse-lite/download/caniuse-lite-1.0.30001168.tgz?cache=0&sync_timestamp=1608095067466&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcaniuse-lite%2Fdownload%2Fcaniuse-lite-1.0.30001168.tgz", + "integrity": "sha1-b80JjBOdADub1ITLucomy4mQf5o=", "dev": true }, - "capture-exit": { - "version": "1.2.0", - "resolved": "https://registry.npm.taobao.org/capture-exit/download/capture-exit-1.2.0.tgz", - "integrity": "sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28=", - "dev": true, - "requires": { - "rsvp": "^3.3.3" - } - }, "case-sensitive-paths-webpack-plugin": { "version": "2.3.0", "resolved": "https://registry.npm.taobao.org/case-sensitive-paths-webpack-plugin/download/case-sensitive-paths-webpack-plugin-2.3.0.tgz", @@ -3390,69 +3159,22 @@ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true }, - "cfb": { - "version": "1.1.3", - "resolved": "https://registry.npm.taobao.org/cfb/download/cfb-1.1.3.tgz", - "integrity": "sha1-Bd5oFiWcjovDJxOrqQVgjuOF32Y=", - "requires": { - "adler-32": "~1.2.0", - "commander": "^2.16.0", - "crc-32": "~1.2.0", - "printj": "~1.1.2" - } - }, "chalk": { "version": "2.4.2", - "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-2.4.2.tgz?cache=0&sync_timestamp=1573282949696&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-2.4.2.tgz", + "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-2.4.2.tgz?cache=0&sync_timestamp=1591687076871&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-2.4.2.tgz", "integrity": "sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=", + "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-3.2.1.tgz", - "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=", - "requires": { - "color-convert": "^1.9.0" - } - } - } - }, - "change-case": { - "version": "3.1.0", - "resolved": "https://registry.npm.taobao.org/change-case/download/change-case-3.1.0.tgz", - "integrity": "sha1-DmEbftyZUt8uhROye0LecmR90X4=", - "dev": true, - "requires": { - "camel-case": "^3.0.0", - "constant-case": "^2.0.0", - "dot-case": "^2.1.0", - "header-case": "^1.0.0", - "is-lower-case": "^1.1.0", - "is-upper-case": "^1.1.0", - "lower-case": "^1.1.1", - "lower-case-first": "^1.0.0", - "no-case": "^2.3.2", - "param-case": "^2.1.0", - "pascal-case": "^2.0.0", - "path-case": "^2.1.0", - "sentence-case": "^2.1.0", - "snake-case": "^2.1.0", - "swap-case": "^1.1.0", - "title-case": "^2.1.0", - "upper-case": "^1.1.1", - "upper-case-first": "^1.1.0" } }, "chardet": { - "version": "0.4.2", - "resolved": "https://registry.npm.taobao.org/chardet/download/chardet-0.4.2.tgz?cache=0&sync_timestamp=1562888139305&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchardet%2Fdownload%2Fchardet-0.4.2.tgz", - "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", - "dev": true, - "optional": true + "version": "0.7.0", + "resolved": "https://registry.npm.taobao.org/chardet/download/chardet-0.7.0.tgz", + "integrity": "sha1-kAlISfCTfy7twkJdDSip5fDLrZ4=", + "dev": true }, "check-types": { "version": "8.0.3", @@ -3461,23 +3183,54 @@ "dev": true }, "chokidar": { - "version": "2.1.5", - "resolved": "https://registry.npm.taobao.org/chokidar/download/chokidar-2.1.5.tgz", - "integrity": "sha1-CuhDTZYigaX1bHKGnnnLbZ2GrU0=", + "version": "3.5.1", + "resolved": "https://registry.npm.taobao.org/chokidar/download/chokidar-3.5.1.tgz?cache=0&sync_timestamp=1610719440699&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchokidar%2Fdownload%2Fchokidar-3.5.1.tgz", + "integrity": "sha1-7pznu+vSt59J8wR5nVRo4x4U5oo=", "dev": true, "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.3.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npm.taobao.org/braces/download/braces-3.0.2.tgz", + "integrity": "sha1-NFThpGLujVmeI23zNs2epPiv4Qc=", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npm.taobao.org/fill-range/download/fill-range-7.0.1.tgz", + "integrity": "sha1-GRmmp8df44ssfHflGYU12prN2kA=", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npm.taobao.org/is-number/download/is-number-7.0.0.tgz", + "integrity": "sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss=", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npm.taobao.org/to-regex-range/download/to-regex-range-5.0.1.tgz", + "integrity": "sha1-FkjESq58jZiKMmAY7XL1tN0DkuQ=", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } } }, "chownr": { @@ -3511,13 +3264,6 @@ "safe-buffer": "^5.0.1" } }, - "circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npm.taobao.org/circular-json/download/circular-json-0.3.3.tgz", - "integrity": "sha1-gVyZ6oT2gJUp0vRXkb34JxE1LWY=", - "dev": true, - "optional": true - }, "class-utils": { "version": "0.3.6", "resolved": "https://registry.npm.taobao.org/class-utils/download/class-utils-0.3.6.tgz", @@ -3558,6 +3304,12 @@ } } }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/clean-stack/download/clean-stack-2.2.0.tgz?cache=0&sync_timestamp=1605702369164&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fclean-stack%2Fdownload%2Fclean-stack-2.2.0.tgz", + "integrity": "sha1-7oRy27Ep5yezHooQpCfe6d/kAIs=", + "dev": true + }, "cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npm.taobao.org/cli-cursor/download/cli-cursor-2.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcli-cursor%2Fdownload%2Fcli-cursor-2.1.0.tgz", @@ -3567,74 +3319,86 @@ "restore-cursor": "^2.0.0" } }, - "cli-spinners": { - "version": "2.2.0", - "resolved": "https://registry.npm.taobao.org/cli-spinners/download/cli-spinners-2.2.0.tgz", - "integrity": "sha1-6LmI2SBsaSMC2O6DTnqFwBRNj3c=", - "dev": true - }, - "cli-truncate": { - "version": "0.2.1", - "resolved": "https://registry.npm.taobao.org/cli-truncate/download/cli-truncate-0.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcli-truncate%2Fdownload%2Fcli-truncate-0.2.1.tgz", - "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", + "cli-highlight": { + "version": "2.1.9", + "resolved": "https://registry.npm.taobao.org/cli-highlight/download/cli-highlight-2.1.9.tgz?cache=0&sync_timestamp=1606814157980&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcli-highlight%2Fdownload%2Fcli-highlight-2.1.9.tgz", + "integrity": "sha1-T07LBTJtcNVtS0JJ+r+acPsAJJc=", "dev": true, "requires": { - "slice-ansi": "0.0.4", - "string-width": "^1.0.1" + "chalk": "^4.0.0", + "highlight.js": "^10.0.0", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^15.0.0" }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-4.3.0.tgz?cache=0&sync_timestamp=1606792371412&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-4.3.0.tgz", + "integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=", "dev": true, "requires": { - "number-is-nan": "^1.0.0" + "color-convert": "^2.0.1" } }, - "slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npm.taobao.org/slice-ansi/download/slice-ansi-0.0.4.tgz?cache=0&sync_timestamp=1581872792458&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fslice-ansi%2Fdownload%2Fslice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", - "dev": true + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-4.1.0.tgz?cache=0&sync_timestamp=1591687076871&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-4.1.0.tgz", + "integrity": "sha1-ThSHCmGNni7dl92DRf2dncMVZGo=", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz", + "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=", "dev": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "color-name": "~1.1.4" } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz?cache=0&sync_timestamp=1573280518303&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz", + "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz", + "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-7.2.0.tgz?cache=0&sync_timestamp=1608033349725&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-7.2.0.tgz", + "integrity": "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "has-flag": "^4.0.0" } } } }, + "cli-spinners": { + "version": "2.5.0", + "resolved": "https://registry.npm.taobao.org/cli-spinners/download/cli-spinners-2.5.0.tgz?cache=0&sync_timestamp=1602505897921&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcli-spinners%2Fdownload%2Fcli-spinners-2.5.0.tgz", + "integrity": "sha1-EnY+RyUb+VHLdcIB36WP8byy0Ec=", + "dev": true + }, "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npm.taobao.org/cli-width/download/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/cli-width/download/cli-width-3.0.0.tgz", + "integrity": "sha1-ovSEN6LKqaIkNueUvwceyeYc7fY=", "dev": true }, "clipboard": { "version": "2.0.4", - "resolved": "https://registry.npm.taobao.org/clipboard/download/clipboard-2.0.4.tgz?cache=0&sync_timestamp=1583389652647&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fclipboard%2Fdownload%2Fclipboard-2.0.4.tgz", + "resolved": "https://registry.npm.taobao.org/clipboard/download/clipboard-2.0.4.tgz", "integrity": "sha1-g22v1mzw/qXXHOXVsL9ulYAJES0=", "requires": { "good-listener": "^1.2.2", @@ -3643,50 +3407,36 @@ } }, "clipboardy": { - "version": "1.2.3", - "resolved": "https://registry.npm.taobao.org/clipboardy/download/clipboardy-1.2.3.tgz", - "integrity": "sha1-BSY2G/eHJMHyC+JI1CjjZUM8B+8=", + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/clipboardy/download/clipboardy-2.3.0.tgz", + "integrity": "sha1-PCkDZQxo5GqRs4iYW8J3QofbopA=", "dev": true, "requires": { - "arch": "^2.1.0", - "execa": "^0.8.0" + "arch": "^2.1.1", + "execa": "^1.0.0", + "is-wsl": "^2.1.1" }, "dependencies": { - "execa": { - "version": "0.8.0", - "resolved": "https://registry.npm.taobao.org/execa/download/execa-0.8.0.tgz?cache=0&sync_timestamp=1576749101742&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexeca%2Fdownload%2Fexeca-0.8.0.tgz", - "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/is-wsl/download/is-wsl-2.2.0.tgz", + "integrity": "sha1-dKTHbnfKn9P5MvKQwX6jJs0VcnE=", "dev": true, "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "is-docker": "^2.0.0" } } } }, "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npm.taobao.org/cliui/download/cliui-4.1.0.tgz", - "integrity": "sha1-NIQi2+gtgAswIu709qwQvy5NG0k=", + "version": "6.0.0", + "resolved": "https://registry.npm.taobao.org/cliui/download/cliui-6.0.0.tgz", + "integrity": "sha1-UR1wLAxOQcoVbX0OlgIfI+EyJbE=", + "dev": true, "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz?cache=0&sync_timestamp=1573280518303&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" } }, "clone": { @@ -3706,12 +3456,6 @@ "shallow-clone": "^3.0.0" } }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npm.taobao.org/co/download/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, "coa": { "version": "2.0.2", "resolved": "https://registry.npm.taobao.org/coa/download/coa-2.0.2.tgz", @@ -3723,32 +3467,6 @@ "q": "^1.1.2" } }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npm.taobao.org/code-point-at/download/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" - }, - "codemirror": { - "version": "5.45.0", - "resolved": "https://registry.npm.taobao.org/codemirror/download/codemirror-5.45.0.tgz", - "integrity": "sha1-2167s79EAoxoQFPzlU0BHvzsJ60=" - }, - "codepage": { - "version": "1.14.0", - "resolved": "https://registry.npm.taobao.org/codepage/download/codepage-1.14.0.tgz", - "integrity": "sha1-jL4lSBMjVZ19MHVxsP/5HnodL5k=", - "requires": { - "commander": "~2.14.1", - "exit-on-epipe": "~1.0.1" - }, - "dependencies": { - "commander": { - "version": "2.14.1", - "resolved": "https://registry.npm.taobao.org/commander/download/commander-2.14.1.tgz", - "integrity": "sha1-IjUSPjevjKPGXfRbAm29NXsBuao=" - } - } - }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npm.taobao.org/collection-visit/download/collection-visit-1.0.0.tgz", @@ -3760,19 +3478,20 @@ } }, "color": { - "version": "3.1.2", - "resolved": "https://registry.npm.taobao.org/color/download/color-3.1.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcolor%2Fdownload%2Fcolor-3.1.2.tgz", - "integrity": "sha1-aBSOf4XUGtdknF+oyBBvCY0inhA=", + "version": "3.1.3", + "resolved": "https://registry.npm.taobao.org/color/download/color-3.1.3.tgz", + "integrity": "sha1-ymf7TnuX1hHc3jns7tQiBn2RWW4=", "dev": true, "requires": { "color-convert": "^1.9.1", - "color-string": "^1.5.2" + "color-string": "^1.5.4" } }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-1.9.3.tgz", "integrity": "sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg=", + "dev": true, "requires": { "color-name": "1.1.3" } @@ -3780,18 +3499,25 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "color-string": { - "version": "1.5.3", - "resolved": "https://registry.npm.taobao.org/color-string/download/color-string-1.5.3.tgz", - "integrity": "sha1-ybvF8BtYtUkvPWhXRZy2WQziBMw=", + "version": "1.5.4", + "resolved": "https://registry.npm.taobao.org/color-string/download/color-string-1.5.4.tgz", + "integrity": "sha1-3VHNJc/ulT0Tj+QAI3LMPQ5QTLY=", "dev": true, "requires": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" } }, + "colorette": { + "version": "1.2.1", + "resolved": "https://registry.npm.taobao.org/colorette/download/colorette-1.2.1.tgz", + "integrity": "sha1-TQuSEyXBT6+SYzCGpTbbbolWSxs=", + "dev": true + }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npm.taobao.org/combined-stream/download/combined-stream-1.0.8.tgz", @@ -3802,9 +3528,10 @@ } }, "commander": { - "version": "2.17.1", - "resolved": "https://registry.npm.taobao.org/commander/download/commander-2.17.1.tgz", - "integrity": "sha1-vXerfebelCBc6sxy8XFtKfIKd78=" + "version": "2.20.3", + "resolved": "https://registry.npm.taobao.org/commander/download/commander-2.20.3.tgz?cache=0&sync_timestamp=1607933281807&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcommander%2Fdownload%2Fcommander-2.20.3.tgz", + "integrity": "sha1-/UhehMA+tIgcIHIrpIA16FMa6zM=", + "dev": true }, "commondir": { "version": "1.0.1", @@ -3850,12 +3577,18 @@ }, "debug": { "version": "2.6.9", - "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1607566580543&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz", "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "dev": true, "requires": { "ms": "2.0.0" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1607433905701&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true } } }, @@ -3877,132 +3610,25 @@ "typedarray": "^0.0.6" } }, - "condense-newlines": { - "version": "0.2.1", - "resolved": "https://registry.npm.taobao.org/condense-newlines/download/condense-newlines-0.2.1.tgz", - "integrity": "sha1-PemFVTE5R10yUCyDsC9gaE0kxV8=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-whitespace": "^0.3.0", - "kind-of": "^3.0.2" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz", - "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npm.taobao.org/connect-history-api-fallback/download/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha1-izIIk1kwjRERFdgcrT/Oq4iPl7w=", + "dev": true + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/console-browserify/download/console-browserify-1.2.0.tgz", + "integrity": "sha1-ZwY871fOts9Jk6KrOlWECujEkzY=", + "dev": true }, - "config-chain": { - "version": "1.1.12", - "resolved": "https://registry.npm.taobao.org/config-chain/download/config-chain-1.1.12.tgz", - "integrity": "sha1-D96NCRIA616AjK8l/mGMAvSOTvo=", + "consolidate": { + "version": "0.15.1", + "resolved": "https://registry.npm.taobao.org/consolidate/download/consolidate-0.15.1.tgz?cache=0&sync_timestamp=1599596863404&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fconsolidate%2Fdownload%2Fconsolidate-0.15.1.tgz", + "integrity": "sha1-IasEMjXHGgfUXZqtmFk7DbpWurc=", "dev": true, "requires": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "connect": { - "version": "3.6.6", - "resolved": "https://registry.npm.taobao.org/connect/download/connect-3.6.6.tgz", - "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", - "dev": true, - "requires": { - "debug": "2.6.9", - "finalhandler": "1.1.0", - "parseurl": "~1.3.2", - "utils-merge": "1.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "finalhandler": { - "version": "1.1.0", - "resolved": "https://registry.npm.taobao.org/finalhandler/download/finalhandler-1.1.0.tgz", - "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.1", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.3.1", - "unpipe": "~1.0.0" - } - }, - "statuses": { - "version": "1.3.1", - "resolved": "https://registry.npm.taobao.org/statuses/download/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", - "dev": true - } - } - }, - "connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npm.taobao.org/connect-history-api-fallback/download/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha1-izIIk1kwjRERFdgcrT/Oq4iPl7w=", - "dev": true - }, - "console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npm.taobao.org/console-browserify/download/console-browserify-1.2.0.tgz", - "integrity": "sha1-ZwY871fOts9Jk6KrOlWECujEkzY=", - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npm.taobao.org/console-control-strings/download/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true - }, - "consolidate": { - "version": "0.15.1", - "resolved": "https://registry.npm.taobao.org/consolidate/download/consolidate-0.15.1.tgz", - "integrity": "sha1-IasEMjXHGgfUXZqtmFk7DbpWurc=", - "dev": true, - "requires": { - "bluebird": "^3.1.1" - } - }, - "constant-case": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/constant-case/download/constant-case-2.0.0.tgz", - "integrity": "sha1-QXV2TTidP6nI7NKRhu1gBSQ7akY=", - "dev": true, - "requires": { - "snake-case": "^2.1.0", - "upper-case": "^1.1.1" + "bluebird": "^3.1.1" } }, "constants-browserify": { @@ -4037,7 +3663,7 @@ }, "cookie": { "version": "0.4.0", - "resolved": "https://registry.npm.taobao.org/cookie/download/cookie-0.4.0.tgz", + "resolved": "https://registry.npm.taobao.org/cookie/download/cookie-0.4.0.tgz?cache=0&sync_timestamp=1587525873712&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcookie%2Fdownload%2Fcookie-0.4.0.tgz", "integrity": "sha1-vrQ35wIrO21JAZ0IhmUwPr6cFLo=", "dev": true }, @@ -4068,40 +3694,64 @@ "dev": true }, "copy-webpack-plugin": { - "version": "4.6.0", - "resolved": "https://registry.npm.taobao.org/copy-webpack-plugin/download/copy-webpack-plugin-4.6.0.tgz", - "integrity": "sha1-5/QN2KaEd9QF3Rt6hUquMksVi64=", + "version": "5.1.2", + "resolved": "https://registry.npm.taobao.org/copy-webpack-plugin/download/copy-webpack-plugin-5.1.2.tgz?cache=0&sync_timestamp=1608126698047&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcopy-webpack-plugin%2Fdownload%2Fcopy-webpack-plugin-5.1.2.tgz", + "integrity": "sha1-ioieHcr6bJHGzUvhrRWPHTgjuuI=", "dev": true, "requires": { - "cacache": "^10.0.4", - "find-cache-dir": "^1.0.0", + "cacache": "^12.0.3", + "find-cache-dir": "^2.1.0", + "glob-parent": "^3.1.0", "globby": "^7.1.1", - "is-glob": "^4.0.0", - "loader-utils": "^1.1.0", + "is-glob": "^4.0.1", + "loader-utils": "^1.2.3", "minimatch": "^3.0.4", - "p-limit": "^1.0.0", - "serialize-javascript": "^1.4.0" + "normalize-path": "^3.0.0", + "p-limit": "^2.2.1", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "webpack-log": "^2.0.0" }, "dependencies": { - "cacache": { - "version": "10.0.4", - "resolved": "https://registry.npm.taobao.org/cacache/download/cacache-10.0.4.tgz", - "integrity": "sha1-ZFI2eZnv+dQYiu/ZoU6dfGomNGA=", + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-2.1.0.tgz", + "integrity": "sha1-jQ+UzRP+Q8bHwmGg2GEVypGMBfc=", "dev": true, "requires": { - "bluebird": "^3.5.1", - "chownr": "^1.0.1", - "glob": "^7.1.2", - "graceful-fs": "^4.1.11", - "lru-cache": "^4.1.1", - "mississippi": "^2.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.2", - "ssri": "^5.2.4", - "unique-filename": "^1.1.0", - "y18n": "^4.0.0" + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz?cache=0&sync_timestamp=1597169795121&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-up%2Fdownload%2Ffind-up-3.0.0.tgz", + "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/glob-parent/download/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } } }, "globby": { @@ -4116,78 +3766,117 @@ "ignore": "^3.3.5", "pify": "^3.0.0", "slash": "^1.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } } }, - "mississippi": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/mississippi/download/mississippi-2.0.0.tgz", - "integrity": "sha1-NEKlCPr8KFAEhv7qmUCWduTuWm8=", + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npm.taobao.org/ignore/download/ignore-3.3.10.tgz", + "integrity": "sha1-Cpf7h2mG6AgcYxFg+PnziRV/AEM=", + "dev": true + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-3.0.0.tgz", + "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=", "dev": true, "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^2.0.1", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" } }, - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npm.taobao.org/pump/download/pump-2.0.1.tgz", - "integrity": "sha1-Ejma3W5M91Jtlzy8i1zi4pCLOQk=", + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/make-dir/download/make-dir-2.1.0.tgz", + "integrity": "sha1-XwMQ4YuL6JjMBwCSlaMK5B6R5vU=", "dev": true, "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "pify": "^4.0.1", + "semver": "^5.6.0" } }, - "serialize-javascript": { - "version": "1.9.1", - "resolved": "https://registry.npm.taobao.org/serialize-javascript/download/serialize-javascript-1.9.1.tgz?cache=0&sync_timestamp=1581887711256&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fserialize-javascript%2Fdownload%2Fserialize-javascript-1.9.1.tgz", - "integrity": "sha1-z8IArvd7YAxH2pu4FJyUPnmML9s=", - "dev": true + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-3.0.0.tgz?cache=0&sync_timestamp=1597081369770&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-locate%2Fdownload%2Fp-locate-3.0.0.tgz", + "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/slash/download/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true }, - "ssri": { - "version": "5.3.0", - "resolved": "https://registry.npm.taobao.org/ssri/download/ssri-5.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fssri%2Fdownload%2Fssri-5.3.0.tgz", - "integrity": "sha1-ujhyycbTOgcEp9cf8EXl7EiZnQY=", + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-3.0.0.tgz", + "integrity": "sha1-J0kCDyOe2ZCIGx9xIQ1R62UjvqM=", "dev": true, "requires": { - "safe-buffer": "^5.1.1" + "find-up": "^3.0.0" } }, - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npm.taobao.org/y18n/download/y18n-4.0.0.tgz", - "integrity": "sha1-le+U+F7MgdAHwmThkKEg8KPIVms=", + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz", + "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/slash/download/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", "dev": true } } }, "core-js": { - "version": "2.6.11", - "resolved": "https://registry.npm.taobao.org/core-js/download/core-js-2.6.11.tgz", - "integrity": "sha1-OIMUafmSK97Y7iHJ3EaYXgOZMIw=" + "version": "3.8.1", + "resolved": "https://registry.npm.taobao.org/core-js/download/core-js-3.8.1.tgz?cache=0&sync_timestamp=1607215907966&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcore-js%2Fdownload%2Fcore-js-3.8.1.tgz", + "integrity": "sha1-9RUjZorIopTRKFw7nbRAJf2mbUc=" + }, + "core-js-compat": { + "version": "3.8.1", + "resolved": "https://registry.npm.taobao.org/core-js-compat/download/core-js-compat-3.8.1.tgz?cache=0&sync_timestamp=1607215923501&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcore-js-compat%2Fdownload%2Fcore-js-compat-3.8.1.tgz", + "integrity": "sha1-jR3dNB1mC6YZTL4M5g9MeUyHo24=", + "dev": true, + "requires": { + "browserslist": "^4.15.0", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-7.0.0.tgz?cache=0&sync_timestamp=1606853731020&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-7.0.0.tgz", + "integrity": "sha1-XzyjV2HkfgWyBsba/yz4FPAxa44=", + "dev": true + } + } }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true }, "cosmiconfig": { "version": "5.2.1", - "resolved": "https://registry.npm.taobao.org/cosmiconfig/download/cosmiconfig-5.2.1.tgz?cache=0&sync_timestamp=1572710769619&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcosmiconfig%2Fdownload%2Fcosmiconfig-5.2.1.tgz", + "resolved": "https://registry.npm.taobao.org/cosmiconfig/download/cosmiconfig-5.2.1.tgz", "integrity": "sha1-BA9yaAnFked6F8CjYmykW08Wixo=", "dev": true, "requires": { @@ -4209,23 +3898,22 @@ } } }, - "crc-32": { - "version": "1.2.0", - "resolved": "https://registry.npm.taobao.org/crc-32/download/crc-32-1.2.0.tgz", - "integrity": "sha1-yy224puIUI4y2d0OwWk+e0Ghggg=", - "requires": { - "exit-on-epipe": "~1.0.1", - "printj": "~1.1.0" - } - }, "create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npm.taobao.org/create-ecdh/download/create-ecdh-4.0.3.tgz", - "integrity": "sha1-yREbbzMEXEaX8UR4f5JUzcd8Rf8=", + "version": "4.0.4", + "resolved": "https://registry.npm.taobao.org/create-ecdh/download/create-ecdh-4.0.4.tgz", + "integrity": "sha1-1uf0v/pmc2CFoHYv06YyaE2rzE4=", "dev": true, "requires": { "bn.js": "^4.1.0", - "elliptic": "^6.0.0" + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-4.11.9.tgz", + "integrity": "sha1-JtVWgpRY+dHoH8SJUkk9C6NQeCg=", + "dev": true + } } }, "create-hash": { @@ -4256,11 +3944,14 @@ } }, "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-5.1.0.tgz?cache=0&sync_timestamp=1570439926300&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcross-spawn%2Fdownload%2Fcross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "version": "6.0.5", + "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-6.0.5.tgz", + "integrity": "sha1-Sl7Hxk364iw6FBJNus3uhG2Ay8Q=", + "dev": true, "requires": { - "lru-cache": "^4.0.1", + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", "shebang-command": "^1.2.0", "which": "^1.2.9" } @@ -4284,25 +3975,10 @@ "randomfill": "^1.0.3" } }, - "css": { - "version": "2.2.4", - "resolved": "https://registry.npm.taobao.org/css/download/css-2.2.4.tgz", - "integrity": "sha1-xkZ1XHOXHyu6amAeLPL9cbEpiSk=", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "source-map": "^0.6.1", - "source-map-resolve": "^0.5.2", - "urix": "^0.1.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", - "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", - "dev": true - } - } + "crypto-js": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/crypto-js/download/crypto-js-4.0.0.tgz", + "integrity": "sha1-KQSrJnep0EKFai6i74DekuSjbcw=" }, "css-color-names": { "version": "0.0.4", @@ -4312,7 +3988,7 @@ }, "css-declaration-sorter": { "version": "4.0.1", - "resolved": "https://registry.npm.taobao.org/css-declaration-sorter/download/css-declaration-sorter-4.0.1.tgz?cache=0&sync_timestamp=1582155815799&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcss-declaration-sorter%2Fdownload%2Fcss-declaration-sorter-4.0.1.tgz", + "resolved": "https://registry.npm.taobao.org/css-declaration-sorter/download/css-declaration-sorter-4.0.1.tgz?cache=0&sync_timestamp=1604519271783&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcss-declaration-sorter%2Fdownload%2Fcss-declaration-sorter-4.0.1.tgz", "integrity": "sha1-wZiUD2OnbX42wecQGLABchBUyyI=", "dev": true, "requires": { @@ -4322,8 +3998,9 @@ }, "css-loader": { "version": "3.6.0", - "resolved": "https://registry.npm.taobao.org/css-loader/download/css-loader-3.6.0.tgz?cache=0&sync_timestamp=1592056820460&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcss-loader%2Fdownload%2Fcss-loader-3.6.0.tgz", + "resolved": "https://registry.npm.taobao.org/css-loader/download/css-loader-3.6.0.tgz?cache=0&sync_timestamp=1604507120816&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcss-loader%2Fdownload%2Fcss-loader-3.6.0.tgz", "integrity": "sha1-Lkssfm4tJ/jI8o9hv/zS5ske9kU=", + "dev": true, "requires": { "camelcase": "^5.3.1", "cssesc": "^3.0.0", @@ -4340,70 +4017,23 @@ "semver": "^6.3.0" }, "dependencies": { - "ajv": { - "version": "6.12.3", - "resolved": "https://registry.npm.taobao.org/ajv/download/ajv-6.12.3.tgz?cache=0&sync_timestamp=1593878551850&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv%2Fdownload%2Fajv-6.12.3.tgz", - "integrity": "sha1-GMWvOKER3etPJpe9eNaKvByr1wY=", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, "camelcase": { "version": "5.3.1", "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-5.3.1.tgz", - "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=" - }, - "postcss": { - "version": "7.0.32", - "resolved": "https://registry.npm.taobao.org/postcss/download/postcss-7.0.32.tgz", - "integrity": "sha1-QxDW7jRwU9o0M9sr5JKIPWLOxZ0=", - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "postcss-value-parser": { - "version": "4.1.0", - "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-4.1.0.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-4.1.0.tgz", - "integrity": "sha1-RD9qIM7WSBor2k+oUypuVdeJoss=" - }, - "schema-utils": { - "version": "2.7.0", - "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-2.7.0.tgz", - "integrity": "sha1-FxUfdtjq5n+793lgwzxnatn078c=", - "requires": { - "@types/json-schema": "^7.0.4", - "ajv": "^6.12.2", - "ajv-keywords": "^3.4.1" - } + "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=", + "dev": true }, "semver": { "version": "6.3.0", - "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz?cache=0&sync_timestamp=1586886267748&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-6.3.0.tgz", - "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", - "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=" - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-6.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-6.1.0.tgz", - "integrity": "sha1-B2Srxpxj1ayELdSGfo0CXogN+PM=", - "requires": { - "has-flag": "^3.0.0" - } + "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz?cache=0&sync_timestamp=1606853731020&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-6.3.0.tgz", + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=", + "dev": true } } }, "css-select": { "version": "2.1.0", - "resolved": "https://registry.npm.taobao.org/css-select/download/css-select-2.1.0.tgz", + "resolved": "https://registry.npm.taobao.org/css-select/download/css-select-2.1.0.tgz?cache=0&sync_timestamp=1607468308878&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcss-select%2Fdownload%2Fcss-select-2.1.0.tgz", "integrity": "sha1-ajRlM1ZjWTSoG6ymjQJVQyEF2+8=", "dev": true, "requires": { @@ -4420,31 +4050,34 @@ "dev": true }, "css-tree": { - "version": "1.0.0-alpha.28", - "resolved": "https://registry.npm.taobao.org/css-tree/download/css-tree-1.0.0-alpha.28.tgz?cache=0&sync_timestamp=1575583542748&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcss-tree%2Fdownload%2Fcss-tree-1.0.0-alpha.28.tgz", - "integrity": "sha1-joloGQ2IbJR3vI1h6W9hrz9/+n8=", + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npm.taobao.org/css-tree/download/css-tree-1.0.0-alpha.37.tgz?cache=0&sync_timestamp=1606404040784&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcss-tree%2Fdownload%2Fcss-tree-1.0.0-alpha.37.tgz", + "integrity": "sha1-mL69YsTB2flg7DQM+fdSLjBwmiI=", "dev": true, "requires": { - "mdn-data": "~1.1.0", - "source-map": "^0.5.3" + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } } }, - "css-url-regex": { - "version": "1.1.0", - "resolved": "https://registry.npm.taobao.org/css-url-regex/download/css-url-regex-1.1.0.tgz", - "integrity": "sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w=", - "dev": true - }, "css-what": { - "version": "3.2.1", - "resolved": "https://registry.npm.taobao.org/css-what/download/css-what-3.2.1.tgz", - "integrity": "sha1-9KjxJCEGRiG0VnVeNKA6LCLfXaE=", + "version": "3.4.2", + "resolved": "https://registry.npm.taobao.org/css-what/download/css-what-3.4.2.tgz?cache=0&sync_timestamp=1602570970779&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcss-what%2Fdownload%2Fcss-what-3.4.2.tgz", + "integrity": "sha1-6nAm/LAXd+295SEk4h8yfnrpUOQ=", "dev": true }, "cssesc": { "version": "3.0.0", "resolved": "https://registry.npm.taobao.org/cssesc/download/cssesc-3.0.0.tgz", - "integrity": "sha1-N3QZGZA7hoVl4cCep0dEXNGJg+4=" + "integrity": "sha1-N3QZGZA7hoVl4cCep0dEXNGJg+4=", + "dev": true }, "cssnano": { "version": "4.1.10", @@ -4460,7 +4093,7 @@ }, "cssnano-preset-default": { "version": "4.0.7", - "resolved": "https://registry.npm.taobao.org/cssnano-preset-default/download/cssnano-preset-default-4.0.7.tgz", + "resolved": "https://registry.npm.taobao.org/cssnano-preset-default/download/cssnano-preset-default-4.0.7.tgz?cache=0&sync_timestamp=1603212703768&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcssnano-preset-default%2Fdownload%2Fcssnano-preset-default-4.0.7.tgz", "integrity": "sha1-UexmLM/KD4izltzZZ5zbkxvhf3Y=", "dev": true, "requires": { @@ -4524,113 +4157,77 @@ "dev": true }, "csso": { - "version": "3.5.1", - "resolved": "https://registry.npm.taobao.org/csso/download/csso-3.5.1.tgz", - "integrity": "sha1-e564vmFiiXPBsmHhadLwJACOdYs=", + "version": "4.2.0", + "resolved": "https://registry.npm.taobao.org/csso/download/csso-4.2.0.tgz?cache=0&sync_timestamp=1606408790645&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcsso%2Fdownload%2Fcsso-4.2.0.tgz", + "integrity": "sha1-6jpWE0bo3J9UbW/r7dUBh884lSk=", "dev": true, "requires": { - "css-tree": "1.0.0-alpha.29" + "css-tree": "^1.1.2" }, "dependencies": { "css-tree": { - "version": "1.0.0-alpha.29", - "resolved": "https://registry.npm.taobao.org/css-tree/download/css-tree-1.0.0-alpha.29.tgz?cache=0&sync_timestamp=1575583542748&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcss-tree%2Fdownload%2Fcss-tree-1.0.0-alpha.29.tgz", - "integrity": "sha1-P6nU7zFCy9HDAedmTB81K9gvWjk=", + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/css-tree/download/css-tree-1.1.2.tgz?cache=0&sync_timestamp=1606404040784&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcss-tree%2Fdownload%2Fcss-tree-1.1.2.tgz", + "integrity": "sha1-muOTtdr9fa6KYiR1yux409j717U=", "dev": true, "requires": { - "mdn-data": "~1.1.0", - "source-map": "^0.5.3" + "mdn-data": "2.0.14", + "source-map": "^0.6.1" } + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npm.taobao.org/mdn-data/download/mdn-data-2.0.14.tgz", + "integrity": "sha1-cRP8QoGRfWPOKbQ0RvcB5owlulA=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true } } }, - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npm.taobao.org/cssom/download/cssom-0.3.8.tgz?cache=0&sync_timestamp=1573719337707&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcssom%2Fdownload%2Fcssom-0.3.8.tgz", - "integrity": "sha1-nxJ29bK0Y/IRTT8sdSUK+MGjb0o=", - "dev": true - }, - "cssstyle": { - "version": "1.4.0", - "resolved": "https://registry.npm.taobao.org/cssstyle/download/cssstyle-1.4.0.tgz", - "integrity": "sha1-nTEyginTxWXGHlhrAgQaKPzNzPE=", - "dev": true, - "requires": { - "cssom": "0.3.x" - } - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npm.taobao.org/currently-unhandled/download/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "requires": { - "array-find-index": "^1.0.1" - } - }, - "cyclist": { - "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/cyclist/download/cyclist-1.0.1.tgz", - "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "csstype": { + "version": "2.6.16", + "resolved": "https://registry.npm.taobao.org/csstype/download/csstype-2.6.16.tgz?cache=0&sync_timestamp=1614159662633&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcsstype%2Fdownload%2Fcsstype-2.6.16.tgz", + "integrity": "sha1-VE1p9UcBO4WkDRW/912zjzT+nDk=" + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/cyclist/download/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", "dev": true }, "dashdash": { "version": "1.14.1", - "resolved": "https://registry.npm.taobao.org/dashdash/download/dashdash-1.14.1.tgz", + "resolved": "https://registry.npm.taobao.org/dashdash/download/dashdash-1.14.1.tgz?cache=0&sync_timestamp=1601073333186&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdashdash%2Fdownload%2Fdashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, "requires": { "assert-plus": "^1.0.0" } }, - "data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npm.taobao.org/data-urls/download/data-urls-1.1.0.tgz?cache=0&sync_timestamp=1577997348324&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdata-urls%2Fdownload%2Fdata-urls-1.1.0.tgz", - "integrity": "sha1-Fe4Fgrql4iu1nHcUDaj5x2lju/4=", - "dev": true, - "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - }, - "dependencies": { - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npm.taobao.org/whatwg-url/download/whatwg-url-7.1.0.tgz?cache=0&sync_timestamp=1578023109671&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwhatwg-url%2Fdownload%2Fwhatwg-url-7.1.0.tgz", - "integrity": "sha1-wsSS8eymEpiO/T0iZr4bn8YXDQY=", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - } - } - }, - "date-fns": { - "version": "1.30.1", - "resolved": "https://registry.npm.taobao.org/date-fns/download/date-fns-1.30.1.tgz", - "integrity": "sha1-LnG/CxGRU9u0zE6I2epaz7UNwFw=", - "dev": true - }, - "de-indent": { - "version": "1.0.2", - "resolved": "https://registry.npm.taobao.org/de-indent/download/de-indent-1.0.2.tgz", - "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=", - "dev": true + "dayjs": { + "version": "1.10.4", + "resolved": "https://registry.npm.taobao.org/dayjs/download/dayjs-1.10.4.tgz?cache=0&sync_timestamp=1611309982734&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdayjs%2Fdownload%2Fdayjs-1.10.4.tgz", + "integrity": "sha1-jlRKm4aD9heD9XCYCoqA6vVKseI=" }, "debug": { - "version": "3.1.0", - "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz", - "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", + "version": "4.3.1", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-4.3.1.tgz?cache=0&sync_timestamp=1607566580543&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-4.3.1.tgz", + "integrity": "sha1-8NIpxQXgxtjEmsVT0bE9wYP2su4=", + "dev": true, "requires": { - "ms": "2.0.0" + "ms": "2.1.2" } }, "decamelize": { "version": "1.2.0", "resolved": "https://registry.npm.taobao.org/decamelize/download/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true }, "decode-uri-component": { "version": "0.2.0", @@ -4638,15 +4235,9 @@ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, - "dedent": { - "version": "0.7.0", - "resolved": "https://registry.npm.taobao.org/dedent/download/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", - "dev": true - }, "deep-equal": { "version": "1.1.1", - "resolved": "https://registry.npm.taobao.org/deep-equal/download/deep-equal-1.1.1.tgz", + "resolved": "https://registry.npm.taobao.org/deep-equal/download/deep-equal-1.1.1.tgz?cache=0&sync_timestamp=1606859943631&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdeep-equal%2Fdownload%2Fdeep-equal-1.1.1.tgz", "integrity": "sha1-tcmMlCzv+vfLBR4k4UNKJaLmB2o=", "dev": true, "requires": { @@ -4667,66 +4258,124 @@ "deepmerge": { "version": "1.5.2", "resolved": "https://registry.npm.taobao.org/deepmerge/download/deepmerge-1.5.2.tgz", - "integrity": "sha1-EEmdhohEza1P7ghC34x/bwyVp1M=" + "integrity": "sha1-EEmdhohEza1P7ghC34x/bwyVp1M=", + "dev": true }, "default-gateway": { - "version": "4.2.0", - "resolved": "https://registry.npm.taobao.org/default-gateway/download/default-gateway-4.2.0.tgz", - "integrity": "sha1-FnEEx1AMIRX23WmwpTa7jtcgVSs=", + "version": "5.0.5", + "resolved": "https://registry.npm.taobao.org/default-gateway/download/default-gateway-5.0.5.tgz", + "integrity": "sha1-T9a9XShV05s0zFpZUFSG6ar8mxA=", "dev": true, "requires": { - "execa": "^1.0.0", - "ip-regex": "^2.1.0" + "execa": "^3.3.0" }, "dependencies": { "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-6.0.5.tgz?cache=0&sync_timestamp=1570439926300&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcross-spawn%2Fdownload%2Fcross-spawn-6.0.5.tgz", - "integrity": "sha1-Sl7Hxk364iw6FBJNus3uhG2Ay8Q=", + "version": "7.0.3", + "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-7.0.3.tgz", + "integrity": "sha1-9zqFudXUHQRVUcF34ogtSshXKKY=", "dev": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, "execa": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/execa/download/execa-1.0.0.tgz?cache=0&sync_timestamp=1576749101742&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexeca%2Fdownload%2Fexeca-1.0.0.tgz", - "integrity": "sha1-xiNqW7TfbW8V6I5/AXeYIWdJ3dg=", + "version": "3.4.0", + "resolved": "https://registry.npm.taobao.org/execa/download/execa-3.4.0.tgz?cache=0&sync_timestamp=1606970975645&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexeca%2Fdownload%2Fexeca-3.4.0.tgz", + "integrity": "sha1-wI7UVQ72XYWPrCaf/IVyRG8364k=", "dev": true, "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "p-finally": "^2.0.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" } }, "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-4.1.0.tgz", - "integrity": "sha1-wbJVV189wh1Zv8ec09K0axw6VLU=", + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-5.2.0.tgz", + "integrity": "sha1-SWaheV7lrOZecGxLe+txJX1uItM=", "dev": true, "requires": { "pump": "^3.0.0" } + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/is-stream/download/is-stream-2.0.0.tgz", + "integrity": "sha1-venDJoDW+uBBKdasnZIc54FfeOM=", + "dev": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-2.1.0.tgz", + "integrity": "sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/npm-run-path/download/npm-run-path-4.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnpm-run-path%2Fdownload%2Fnpm-run-path-4.0.1.tgz", + "integrity": "sha1-t+zR5e1T2o43pV4cImnguX7XSOo=", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npm.taobao.org/onetime/download/onetime-5.1.2.tgz", + "integrity": "sha1-0Oluu1awdHbfHdnEgG5SN5hcpF4=", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "p-finally": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/p-finally/download/p-finally-2.0.1.tgz?cache=0&sync_timestamp=1560955759606&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-finally%2Fdownload%2Fp-finally-2.0.1.tgz", + "integrity": "sha1-vW/KqcVZoJa2gIBvTWV7Pw8kBWE=", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/path-key/download/path-key-3.1.1.tgz?cache=0&sync_timestamp=1574441322626&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpath-key%2Fdownload%2Fpath-key-3.1.1.tgz", + "integrity": "sha1-WB9q3mWMu6ZaDTOA3ndTKVBU83U=", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/shebang-command/download/shebang-command-2.0.0.tgz", + "integrity": "sha1-zNCvT4g1+9wmW4JGGq8MNmY/NOo=", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/shebang-regex/download/shebang-regex-3.0.0.tgz", + "integrity": "sha1-rhbxZE2HPsrYQ7AwexQzYtTEIXI=", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/which/download/which-2.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwhich%2Fdownload%2Fwhich-2.0.2.tgz", + "integrity": "sha1-fGqN0KY2oDJ+ELWckobu6T8/UbE=", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } } } }, - "default-require-extensions": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/default-require-extensions/download/default-require-extensions-1.0.0.tgz", - "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", - "dev": true, - "requires": { - "strip-bom": "^2.0.0" - } - }, "defaults": { "version": "1.0.3", "resolved": "https://registry.npm.taobao.org/defaults/download/defaults-1.0.3.tgz", @@ -4788,7 +4437,7 @@ }, "del": { "version": "4.1.1", - "resolved": "https://registry.npm.taobao.org/del/download/del-4.1.1.tgz", + "resolved": "https://registry.npm.taobao.org/del/download/del-4.1.1.tgz?cache=0&sync_timestamp=1601076741536&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdel%2Fdownload%2Fdel-4.1.1.tgz", "integrity": "sha1-no8RciLqRKMf86FWwEm5kFKp8LQ=", "dev": true, "requires": { @@ -4822,10 +4471,10 @@ } } }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npm.taobao.org/pify/download/pify-4.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-4.0.1.tgz", - "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=", + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/p-map/download/p-map-2.1.0.tgz", + "integrity": "sha1-MQko/u+cnsxltosXaTAYpmXOoXU=", "dev": true } } @@ -4841,12 +4490,6 @@ "resolved": "https://registry.npm.taobao.org/delegate/download/delegate-3.2.0.tgz", "integrity": "sha1-tmtxwxWFIuirV0T3INjKDCr1kWY=" }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/delegates/download/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true - }, "depd": { "version": "1.1.2", "resolved": "https://registry.npm.taobao.org/depd/download/depd-1.1.2.tgz", @@ -4869,39 +4512,12 @@ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", "dev": true }, - "detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/detect-file/download/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", - "dev": true - }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npm.taobao.org/detect-indent/download/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "detect-newline": { - "version": "2.1.0", - "resolved": "https://registry.npm.taobao.org/detect-newline/download/detect-newline-2.1.0.tgz", - "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", - "dev": true - }, "detect-node": { "version": "2.0.4", "resolved": "https://registry.npm.taobao.org/detect-node/download/detect-node-2.0.4.tgz", "integrity": "sha1-AU7o+PZpxcWAI9pkuBecCDooxGw=", "dev": true }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npm.taobao.org/diff/download/diff-3.5.0.tgz", - "integrity": "sha1-gAwN0eCov7yVg1wgKtIg/jF+WhI=", - "dev": true - }, "diffie-hellman": { "version": "5.0.3", "resolved": "https://registry.npm.taobao.org/diffie-hellman/download/diffie-hellman-5.0.3.tgz", @@ -4911,6 +4527,14 @@ "bn.js": "^4.1.0", "miller-rabin": "^4.0.0", "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-4.11.9.tgz", + "integrity": "sha1-JtVWgpRY+dHoH8SJUkk9C6NQeCg=", + "dev": true + } } }, "dir-glob": { @@ -4948,11 +4572,10 @@ } }, "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npm.taobao.org/doctrine/download/doctrine-2.1.0.tgz", - "integrity": "sha1-XNAfwQFiG0LEzX9dGmYkNxbT850=", + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/doctrine/download/doctrine-3.0.0.tgz", + "integrity": "sha1-rd6+rXKmV023g2OdyHoSF3OXOWE=", "dev": true, - "optional": true, "requires": { "esutils": "^2.0.2" } @@ -4966,15 +4589,9 @@ "utila": "~0.4" } }, - "dom-event-types": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/dom-event-types/download/dom-event-types-1.0.0.tgz", - "integrity": "sha1-WDCgop4b+Df+UKcM2ApZcjKBPK4=", - "dev": true - }, "dom-serializer": { "version": "0.2.2", - "resolved": "https://registry.npm.taobao.org/dom-serializer/download/dom-serializer-0.2.2.tgz?cache=0&sync_timestamp=1573447907918&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdom-serializer%2Fdownload%2Fdom-serializer-0.2.2.tgz", + "resolved": "https://registry.npm.taobao.org/dom-serializer/download/dom-serializer-0.2.2.tgz?cache=0&sync_timestamp=1607193111136&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdom-serializer%2Fdownload%2Fdom-serializer-0.2.2.tgz", "integrity": "sha1-GvuB9TNxcXXUeGVd68XjMtn5u1E=", "dev": true, "requires": { @@ -4983,43 +4600,28 @@ }, "dependencies": { "domelementtype": { - "version": "2.0.1", - "resolved": "https://registry.npm.taobao.org/domelementtype/download/domelementtype-2.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomelementtype%2Fdownload%2Fdomelementtype-2.0.1.tgz", - "integrity": "sha1-H4vf6R9aeAYydOgDtL3O326U+U0=", - "dev": true - }, - "entities": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/entities/download/entities-2.0.0.tgz", - "integrity": "sha1-aNYITKsbB5dnVA2A5Wo5tCPkq/Q=", + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/domelementtype/download/domelementtype-2.1.0.tgz?cache=0&sync_timestamp=1606865969598&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomelementtype%2Fdownload%2Fdomelementtype-2.1.0.tgz", + "integrity": "sha1-qFHAgKbRw9lDRK7RUdmfZp7fWF4=", "dev": true } } }, "domain-browser": { "version": "1.2.0", - "resolved": "https://registry.npm.taobao.org/domain-browser/download/domain-browser-1.2.0.tgz?cache=0&sync_timestamp=1575879334171&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomain-browser%2Fdownload%2Fdomain-browser-1.2.0.tgz", + "resolved": "https://registry.npm.taobao.org/domain-browser/download/domain-browser-1.2.0.tgz", "integrity": "sha1-PTH1AZGmdJ3RN1p/Ui6CPULlTto=", "dev": true }, "domelementtype": { "version": "1.3.1", - "resolved": "https://registry.npm.taobao.org/domelementtype/download/domelementtype-1.3.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomelementtype%2Fdownload%2Fdomelementtype-1.3.1.tgz", + "resolved": "https://registry.npm.taobao.org/domelementtype/download/domelementtype-1.3.1.tgz?cache=0&sync_timestamp=1606865969598&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomelementtype%2Fdownload%2Fdomelementtype-1.3.1.tgz", "integrity": "sha1-0EjESzew0Qp/Kj1f7j9DM9eQSB8=", "dev": true }, - "domexception": { - "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/domexception/download/domexception-1.0.1.tgz", - "integrity": "sha1-k3RCZEymoxJh7zbj7Gd/6AVYLJA=", - "dev": true, - "requires": { - "webidl-conversions": "^4.0.2" - } - }, "domhandler": { "version": "2.4.2", - "resolved": "https://registry.npm.taobao.org/domhandler/download/domhandler-2.4.2.tgz", + "resolved": "https://registry.npm.taobao.org/domhandler/download/domhandler-2.4.2.tgz?cache=0&sync_timestamp=1606872259940&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomhandler%2Fdownload%2Fdomhandler-2.4.2.tgz", "integrity": "sha1-iAUJfpM9ZehVRvcm1g9euItE+AM=", "dev": true, "requires": { @@ -5042,50 +4644,31 @@ "domelementtype": "1" } }, - "dot-case": { - "version": "2.1.1", - "resolved": "https://registry.npm.taobao.org/dot-case/download/dot-case-2.1.1.tgz", - "integrity": "sha1-NNzzf1Co6TwrO8qLt/uRVcfaO+4=", - "dev": true, - "requires": { - "no-case": "^2.2.0" - } - }, "dot-prop": { - "version": "5.2.0", - "resolved": "https://registry.npm.taobao.org/dot-prop/download/dot-prop-5.2.0.tgz?cache=0&sync_timestamp=1572620518450&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdot-prop%2Fdownload%2Fdot-prop-5.2.0.tgz", - "integrity": "sha1-w07MKVVtxF8fTCJpe29JBODMT8s=", + "version": "5.3.0", + "resolved": "https://registry.npm.taobao.org/dot-prop/download/dot-prop-5.3.0.tgz?cache=0&sync_timestamp=1605778245141&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdot-prop%2Fdownload%2Fdot-prop-5.3.0.tgz", + "integrity": "sha1-kMzOcIzZzYLMTcjD3dmr3VWyDog=", "dev": true, "requires": { "is-obj": "^2.0.0" } }, "dotenv": { - "version": "6.2.0", - "resolved": "https://registry.npm.taobao.org/dotenv/download/dotenv-6.2.0.tgz?cache=0&sync_timestamp=1571190685588&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdotenv%2Fdownload%2Fdotenv-6.2.0.tgz", - "integrity": "sha1-lBwEEFNdlCyL7PKNPzV9vZ1HYGQ=", + "version": "8.2.0", + "resolved": "https://registry.npm.taobao.org/dotenv/download/dotenv-8.2.0.tgz?cache=0&sync_timestamp=1571190685588&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdotenv%2Fdownload%2Fdotenv-8.2.0.tgz", + "integrity": "sha1-l+YZJZradQ7qPk6j4mvO6lQksWo=", "dev": true }, "dotenv-expand": { - "version": "4.2.0", - "resolved": "https://registry.npm.taobao.org/dotenv-expand/download/dotenv-expand-4.2.0.tgz", - "integrity": "sha1-3vHxyl1gWdJKdm5YeULCEQbOEnU=", + "version": "5.1.0", + "resolved": "https://registry.npm.taobao.org/dotenv-expand/download/dotenv-expand-5.1.0.tgz", + "integrity": "sha1-P7rwIL/XlIhAcuomsel5HUWmKfA=", "dev": true }, - "driver.js": { - "version": "0.9.5", - "resolved": "https://registry.npm.taobao.org/driver.js/download/driver.js-0.9.5.tgz", - "integrity": "sha1-7oqLan06Sbq29Vy14lBVg322zaQ=" - }, - "dropzone": { - "version": "5.5.1", - "resolved": "https://registry.npm.taobao.org/dropzone/download/dropzone-5.5.1.tgz", - "integrity": "sha1-BuL1E+YdaqNj1LVW8YV09Hz3uiY=" - }, "duplexer": { - "version": "0.1.1", - "resolved": "https://registry.npm.taobao.org/duplexer/download/duplexer-0.1.1.tgz", - "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/duplexer/download/duplexer-0.1.2.tgz", + "integrity": "sha1-Or5DrvODX4rgd9E23c4PJ2sEAOY=", "dev": true }, "duplexify": { @@ -5101,9 +4684,9 @@ } }, "easy-stack": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/easy-stack/download/easy-stack-1.0.0.tgz", - "integrity": "sha1-EskbMIWjfwuqM26UhurEv5Tj54g=", + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/easy-stack/download/easy-stack-1.0.1.tgz", + "integrity": "sha1-iv5CZGJpiMq7EfPHBMzQyDVBEGY=", "dev": true }, "ecc-jsbn": { @@ -5116,34 +4699,6 @@ "safer-buffer": "^2.1.0" } }, - "echarts": { - "version": "4.2.1", - "resolved": "https://registry.npm.taobao.org/echarts/download/echarts-4.2.1.tgz", - "integrity": "sha1-mo6jsDNU+G+CTZdiXDNM8Wll7wM=", - "requires": { - "zrender": "4.0.7" - } - }, - "editorconfig": { - "version": "0.15.3", - "resolved": "https://registry.npm.taobao.org/editorconfig/download/editorconfig-0.15.3.tgz", - "integrity": "sha1-vvhMTnX7jcsM5c7o79UcFZmb78U=", - "dev": true, - "requires": { - "commander": "^2.19.0", - "lru-cache": "^4.1.5", - "semver": "^5.6.0", - "sigmund": "^1.0.1" - }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npm.taobao.org/commander/download/commander-2.20.3.tgz", - "integrity": "sha1-/UhehMA+tIgcIHIrpIA16FMa6zM=", - "dev": true - } - } - }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz", @@ -5157,34 +4712,29 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.373", - "resolved": "https://registry.npm.taobao.org/electron-to-chromium/download/electron-to-chromium-1.3.373.tgz?cache=0&sync_timestamp=1583812992693&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Felectron-to-chromium%2Fdownload%2Felectron-to-chromium-1.3.373.tgz", - "integrity": "sha1-ZF3nocCTy2FOJxZzg0eBj5MJI/8=", + "version": "1.3.628", + "resolved": "https://registry.npm.taobao.org/electron-to-chromium/download/electron-to-chromium-1.3.628.tgz?cache=0&sync_timestamp=1608143621573&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Felectron-to-chromium%2Fdownload%2Felectron-to-chromium-1.3.628.tgz", + "integrity": "sha1-vloU3fOkVd6HYnTITeCSZDmih6c=", "dev": true }, - "elegant-spinner": { - "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/elegant-spinner/download/elegant-spinner-1.0.1.tgz", - "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=", - "dev": true - }, - "element-ui": { - "version": "2.13.0", - "resolved": "https://registry.npm.taobao.org/element-ui/download/element-ui-2.13.0.tgz", - "integrity": "sha1-9rsE5bCnbqX2JGYES3dEB7pOvS0=", + "element-plus": { + "version": "1.0.2-beta.32", + "resolved": "https://registry.npm.taobao.org/element-plus/download/element-plus-1.0.2-beta.32.tgz?cache=0&sync_timestamp=1612775298236&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Felement-plus%2Fdownload%2Felement-plus-1.0.2-beta.32.tgz", + "integrity": "sha1-Iol1z8IlWZPvfM2QI4zqmnB/B0I=", "requires": { - "async-validator": "~1.8.1", - "babel-helper-vue-jsx-merge-props": "^2.0.0", - "deepmerge": "^1.2.0", + "@popperjs/core": "^2.4.4", + "async-validator": "^3.4.0", + "dayjs": "1.x", + "lodash": "^4.17.20", + "mitt": "^2.1.0", "normalize-wheel": "^1.0.1", - "resize-observer-polyfill": "^1.5.0", - "throttle-debounce": "^1.0.1" + "resize-observer-polyfill": "^1.5.1" } }, "elliptic": { - "version": "6.5.2", - "resolved": "https://registry.npm.taobao.org/elliptic/download/elliptic-6.5.2.tgz", - "integrity": "sha1-BcVnjXFzwEnYykM1UiJKSV0ON2I=", + "version": "6.5.3", + "resolved": "https://registry.npm.taobao.org/elliptic/download/elliptic-6.5.3.tgz?cache=0&sync_timestamp=1592492754083&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Felliptic%2Fdownload%2Felliptic-6.5.3.tgz", + "integrity": "sha1-y1nrLv2vc6C9eMzXAVpirW4Pk9Y=", "dev": true, "requires": { "bn.js": "^4.4.0", @@ -5194,18 +4744,27 @@ "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0", "minimalistic-crypto-utils": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-4.11.9.tgz", + "integrity": "sha1-JtVWgpRY+dHoH8SJUkk9C6NQeCg=", + "dev": true + } } }, "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-7.0.3.tgz", - "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=", + "version": "8.0.0", + "resolved": "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-8.0.0.tgz", + "integrity": "sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc=", "dev": true }, "emojis-list": { "version": "3.0.0", "resolved": "https://registry.npm.taobao.org/emojis-list/download/emojis-list-3.0.0.tgz", - "integrity": "sha1-VXBmIEatKeLpFucariYKvf9Pang=" + "integrity": "sha1-VXBmIEatKeLpFucariYKvf9Pang=", + "dev": true }, "encodeurl": { "version": "1.0.2", @@ -5223,9 +4782,9 @@ } }, "enhanced-resolve": { - "version": "4.1.1", - "resolved": "https://registry.npm.taobao.org/enhanced-resolve/download/enhanced-resolve-4.1.1.tgz?cache=0&sync_timestamp=1572993058578&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fenhanced-resolve%2Fdownload%2Fenhanced-resolve-4.1.1.tgz", - "integrity": "sha1-KTfiuAZs0P584JkKmPDXGjUYn2Y=", + "version": "4.3.0", + "resolved": "https://registry.npm.taobao.org/enhanced-resolve/download/enhanced-resolve-4.3.0.tgz?cache=0&sync_timestamp=1606945778512&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fenhanced-resolve%2Fdownload%2Fenhanced-resolve-4.3.0.tgz", + "integrity": "sha1-O4BvO/r8HsfeaVUe+TzKRsFwQSY=", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -5246,14 +4805,15 @@ } }, "entities": { - "version": "1.1.2", - "resolved": "https://registry.npm.taobao.org/entities/download/entities-1.1.2.tgz", - "integrity": "sha1-vfpzUplmTfr9NFKe1PhSKidf6lY=" + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/entities/download/entities-2.1.0.tgz?cache=0&sync_timestamp=1602898797807&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fentities%2Fdownload%2Fentities-2.1.0.tgz", + "integrity": "sha1-mS0xKc999ocLlsV4WMJJoSD4uLU=", + "dev": true }, "errno": { - "version": "0.1.7", - "resolved": "https://registry.npm.taobao.org/errno/download/errno-0.1.7.tgz", - "integrity": "sha1-RoTXF3mtOa8Xfj8AeZb3xnyFJhg=", + "version": "0.1.8", + "resolved": "https://registry.npm.taobao.org/errno/download/errno-0.1.8.tgz", + "integrity": "sha1-i7Ppx9Rjvkl2/4iPdrSAnrwugR8=", "dev": true, "requires": { "prr": "~1.0.1" @@ -5278,22 +4838,23 @@ } }, "es-abstract": { - "version": "1.17.4", - "resolved": "https://registry.npm.taobao.org/es-abstract/download/es-abstract-1.17.4.tgz", - "integrity": "sha1-467fGXBrIOfCWUw1/A1XYFp54YQ=", + "version": "1.18.0-next.1", + "resolved": "https://registry.npm.taobao.org/es-abstract/download/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha1-bjoKS9pxflAjqzuOkL7DYQjSLGg=", "dev": true, "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" } }, "es-to-primitive": { @@ -5307,6 +4868,12 @@ "is-symbol": "^1.0.2" } }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/escalade/download/escalade-3.1.1.tgz?cache=0&sync_timestamp=1602567230854&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fescalade%2Fdownload%2Fescalade-3.1.1.tgz", + "integrity": "sha1-2M/ccACWXFoBdLSoLqpcBVJ0LkA=", + "dev": true + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz", @@ -5315,333 +4882,117 @@ }, "escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fescape-string-regexp%2Fdownload%2Fescape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - }, - "escodegen": { - "version": "1.14.1", - "resolved": "https://registry.npm.taobao.org/escodegen/download/escodegen-1.14.1.tgz?cache=0&sync_timestamp=1580954812183&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fescodegen%2Fdownload%2Fescodegen-1.14.1.tgz", - "integrity": "sha1-ugHQyCeLXpWppFNQFCAmZZAnpFc=", - "dev": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", - "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", - "dev": true, - "optional": true - } - } + "resolved": "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true }, "eslint": { - "version": "5.15.3", - "resolved": "https://registry.npm.taobao.org/eslint/download/eslint-5.15.3.tgz", - "integrity": "sha1-x5w5CdyKf6NxT7NAwR4w/SUmuLU=", + "version": "6.8.0", + "resolved": "https://registry.npm.taobao.org/eslint/download/eslint-6.8.0.tgz?cache=0&sync_timestamp=1607153145204&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint%2Fdownload%2Feslint-6.8.0.tgz", + "integrity": "sha1-YiYtZylzn5J1cjgkMC+yJ8jJP/s=", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "ajv": "^6.9.1", + "ajv": "^6.10.0", "chalk": "^2.1.0", "cross-spawn": "^6.0.5", "debug": "^4.0.1", "doctrine": "^3.0.0", - "eslint-scope": "^4.0.3", - "eslint-utils": "^1.3.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^5.0.1", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", "esquery": "^1.0.1", "esutils": "^2.0.2", "file-entry-cache": "^5.0.1", "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.7.0", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", - "inquirer": "^6.2.2", - "js-yaml": "^3.12.0", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.3.0", - "lodash": "^4.17.11", + "lodash": "^4.17.14", "minimatch": "^3.0.4", "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", + "optionator": "^0.8.3", "progress": "^2.0.0", "regexpp": "^2.0.1", - "semver": "^5.5.1", - "strip-ansi": "^4.0.0", - "strip-json-comments": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", "table": "^5.2.3", - "text-table": "^0.2.0" + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" }, "dependencies": { - "acorn": { - "version": "6.4.1", - "resolved": "https://registry.npm.taobao.org/acorn/download/acorn-6.4.1.tgz?cache=0&sync_timestamp=1583823913618&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-6.4.1.tgz", - "integrity": "sha1-Ux5Yuj9RudrLmmZGyk3r9bFMpHQ=", - "dev": true - }, - "acorn-jsx": { - "version": "5.2.0", - "resolved": "https://registry.npm.taobao.org/acorn-jsx/download/acorn-jsx-5.2.0.tgz", - "integrity": "sha1-TGYGkXPW/daO2FI5/CViJhgrLr4=", - "dev": true - }, - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz", - "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-3.2.1.tgz", - "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=", + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-5.1.1.tgz?cache=0&sync_timestamp=1600070417656&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-scope%2Fdownload%2Feslint-scope-5.1.1.tgz", + "integrity": "sha1-54blmmbLkrP2wfsNUIqrF0hI9Iw=", "dev": true, "requires": { - "color-convert": "^1.9.0" + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" } }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npm.taobao.org/chardet/download/chardet-0.7.0.tgz?cache=0&sync_timestamp=1562888139305&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchardet%2Fdownload%2Fchardet-0.7.0.tgz", - "integrity": "sha1-kAlISfCTfy7twkJdDSip5fDLrZ4=", - "dev": true - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-6.0.5.tgz?cache=0&sync_timestamp=1570439926300&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcross-spawn%2Fdownload%2Fcross-spawn-6.0.5.tgz", - "integrity": "sha1-Sl7Hxk364iw6FBJNus3uhG2Ay8Q=", + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npm.taobao.org/globals/download/globals-12.4.0.tgz?cache=0&sync_timestamp=1607413619483&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglobals%2Fdownload%2Fglobals-12.4.0.tgz", + "integrity": "sha1-oYgTV2pBsAokqX5/gVkYwuGZJfg=", "dev": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "type-fest": "^0.8.1" } }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npm.taobao.org/debug/download/debug-4.1.1.tgz", - "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", + "import-fresh": { + "version": "3.2.2", + "resolved": "https://registry.npm.taobao.org/import-fresh/download/import-fresh-3.2.2.tgz?cache=0&sync_timestamp=1604255567620&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fimport-fresh%2Fdownload%2Fimport-fresh-3.2.2.tgz", + "integrity": "sha1-/BKcFgxdaCNVB/QzGmuq0Ya9vD4=", "dev": true, "requires": { - "ms": "^2.1.1" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" } }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/doctrine/download/doctrine-3.0.0.tgz", - "integrity": "sha1-rd6+rXKmV023g2OdyHoSF3OXOWE=", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/resolve-from/download/resolve-from-4.0.0.tgz", + "integrity": "sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY=", + "dev": true }, - "espree": { - "version": "5.0.1", - "resolved": "https://registry.npm.taobao.org/espree/download/espree-5.0.1.tgz?cache=0&sync_timestamp=1583168748616&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fespree%2Fdownload%2Fespree-5.0.1.tgz", - "integrity": "sha1-XWUm+k/H8HiKXPdbFfMDI+L4H3o=", + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz?cache=0&sync_timestamp=1606853731020&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-6.3.0.tgz", + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz?cache=0&sync_timestamp=1573280518303&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-5.2.0.tgz", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", "dev": true, "requires": { - "acorn": "^6.0.7", - "acorn-jsx": "^5.0.0", - "eslint-visitor-keys": "^1.0.0" + "ansi-regex": "^4.1.0" } }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npm.taobao.org/external-editor/download/external-editor-3.1.0.tgz?cache=0&sync_timestamp=1562602052556&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexternal-editor%2Fdownload%2Fexternal-editor-3.1.0.tgz", - "integrity": "sha1-ywP3QL764D6k0oPK7SdBqD8zVJU=", - "dev": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, - "file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npm.taobao.org/file-entry-cache/download/file-entry-cache-5.0.1.tgz", - "integrity": "sha1-yg9u+m3T1WEzP7FFFQZcL6/fQ5w=", - "dev": true, - "requires": { - "flat-cache": "^2.0.1" - } - }, - "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npm.taobao.org/flat-cache/download/flat-cache-2.0.1.tgz", - "integrity": "sha1-XSltbwS9pEpGMKMBQTvbwuwIXsA=", - "dev": true, - "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - } - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npm.taobao.org/ignore/download/ignore-4.0.6.tgz", - "integrity": "sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw=", - "dev": true - }, - "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npm.taobao.org/import-fresh/download/import-fresh-3.2.1.tgz?cache=0&sync_timestamp=1573665120798&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fimport-fresh%2Fdownload%2Fimport-fresh-3.2.1.tgz", - "integrity": "sha1-Yz/2GFBueTr1rJG/SLcmd+FcvmY=", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "inquirer": { - "version": "6.5.2", - "resolved": "https://registry.npm.taobao.org/inquirer/download/inquirer-6.5.2.tgz?cache=0&sync_timestamp=1583819607980&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finquirer%2Fdownload%2Finquirer-6.5.2.tgz", - "integrity": "sha1-rVCUI3XQNtMn/1KMCL1fqwiZKMo=", - "dev": true, - "requires": { - "ansi-escapes": "^3.2.0", - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.12", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^2.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" - }, - "dependencies": { - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz?cache=0&sync_timestamp=1573280518303&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-5.2.0.tgz", - "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz", - "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", - "dev": true - }, - "regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npm.taobao.org/regexpp/download/regexpp-2.0.1.tgz?cache=0&sync_timestamp=1567160849322&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregexpp%2Fdownload%2Fregexpp-2.0.1.tgz", - "integrity": "sha1-jRnTHPYySCtYkEn4KB+T28uk0H8=", - "dev": true - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npm.taobao.org/resolve-from/download/resolve-from-4.0.0.tgz", - "integrity": "sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY=", + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npm.taobao.org/type-fest/download/type-fest-0.8.1.tgz?cache=0&sync_timestamp=1606468796224&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftype-fest%2Fdownload%2Ftype-fest-0.8.1.tgz", + "integrity": "sha1-CeJJ696FHTseSNJ8EFREZn8XuD0=", "dev": true - }, - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npm.taobao.org/rimraf/download/rimraf-2.6.3.tgz?cache=0&sync_timestamp=1581257110269&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frimraf%2Fdownload%2Frimraf-2.6.3.tgz", - "integrity": "sha1-stEE/g2Psnz54KHNqCYt04M8bKs=", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npm.taobao.org/slice-ansi/download/slice-ansi-2.1.0.tgz?cache=0&sync_timestamp=1581872792458&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fslice-ansi%2Fdownload%2Fslice-ansi-2.1.0.tgz", - "integrity": "sha1-ys12k0YaY3pXiNkqfdT7oGjoFjY=", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz?cache=0&sync_timestamp=1573280518303&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - } - } - }, - "table": { - "version": "5.4.6", - "resolved": "https://registry.npm.taobao.org/table/download/table-5.4.6.tgz", - "integrity": "sha1-EpLRlQDOP4YFOwXw6Ofko7shB54=", - "dev": true, - "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "dependencies": { - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-3.1.0.tgz", - "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz?cache=0&sync_timestamp=1573280518303&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-5.2.0.tgz", - "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "write": { - "version": "1.0.3", - "resolved": "https://registry.npm.taobao.org/write/download/write-1.0.3.tgz", - "integrity": "sha1-CADhRSO5I6OH5BUSPIZWFqrg9cM=", - "dev": true, - "requires": { - "mkdirp": "^0.5.1" - } } } }, "eslint-config-prettier": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.10.0.tgz", - "integrity": "sha512-AtndijGte1rPILInUdHjvKEGbIV06NuvPrqlIEaEaWtbtvJh464mDeyGMdZEQMsGvC0ZVkiex1fSNcC4HAbRGg==", + "version": "6.15.0", + "resolved": "https://registry.npm.taobao.org/eslint-config-prettier/download/eslint-config-prettier-6.15.0.tgz?cache=0&sync_timestamp=1607205673337&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-config-prettier%2Fdownload%2Feslint-config-prettier-6.15.0.tgz", + "integrity": "sha1-f5P2y31FqS8VN6cOzAY2bhrG/tk=", "dev": true, "requires": { "get-stdin": "^6.0.0" @@ -5661,80 +5012,64 @@ } }, "eslint-plugin-prettier": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz", - "integrity": "sha512-GlolCC9y3XZfv3RQfwGew7NnuFDKsfI4lbvRK+PIIo23SFH+LemGs4cKwzAaRa+Mdb+lQO/STaIayno8T5sJJA==", + "version": "3.3.0", + "resolved": "https://registry.npm.taobao.org/eslint-plugin-prettier/download/eslint-plugin-prettier-3.3.0.tgz?cache=0&sync_timestamp=1607910777157&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-plugin-prettier%2Fdownload%2Feslint-plugin-prettier-3.3.0.tgz", + "integrity": "sha1-YeKVNJplaI/6wLeAjvCoJEvdjUA=", "dev": true, "requires": { "prettier-linter-helpers": "^1.0.0" } }, "eslint-plugin-vue": { - "version": "5.2.2", - "resolved": "https://registry.npm.taobao.org/eslint-plugin-vue/download/eslint-plugin-vue-5.2.2.tgz?cache=0&sync_timestamp=1583662392429&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-plugin-vue%2Fdownload%2Feslint-plugin-vue-5.2.2.tgz", - "integrity": "sha1-hmAYI7dyG3C8ktVPFyjPwDs2KDw=", + "version": "7.3.0", + "resolved": "https://registry.npm.taobao.org/eslint-plugin-vue/download/eslint-plugin-vue-7.3.0.tgz?cache=0&sync_timestamp=1608096201611&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-plugin-vue%2Fdownload%2Feslint-plugin-vue-7.3.0.tgz", + "integrity": "sha1-D68Pzw4bEFK/gA1N7kLWT1BnnLA=", "dev": true, "requires": { - "vue-eslint-parser": "^5.0.0" + "eslint-utils": "^2.1.0", + "natural-compare": "^1.4.0", + "semver": "^7.3.2", + "vue-eslint-parser": "^7.3.0" }, "dependencies": { - "acorn": { - "version": "6.4.1", - "resolved": "https://registry.npm.taobao.org/acorn/download/acorn-6.4.1.tgz?cache=0&sync_timestamp=1583823913618&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-6.4.1.tgz", - "integrity": "sha1-Ux5Yuj9RudrLmmZGyk3r9bFMpHQ=", - "dev": true - }, - "acorn-jsx": { - "version": "5.2.0", - "resolved": "https://registry.npm.taobao.org/acorn-jsx/download/acorn-jsx-5.2.0.tgz", - "integrity": "sha1-TGYGkXPW/daO2FI5/CViJhgrLr4=", - "dev": true - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npm.taobao.org/debug/download/debug-4.1.1.tgz", - "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/eslint-utils/download/eslint-utils-2.1.0.tgz", + "integrity": "sha1-0t5eA0JOcH3BDHQGjd7a5wh0Gyc=", "dev": true, "requires": { - "ms": "^2.1.1" + "eslint-visitor-keys": "^1.1.0" } }, - "espree": { - "version": "4.1.0", - "resolved": "https://registry.npm.taobao.org/espree/download/espree-4.1.0.tgz?cache=0&sync_timestamp=1583168748616&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fespree%2Fdownload%2Fespree-4.1.0.tgz", - "integrity": "sha1-co1UUeD9FWwEOEp62J7VH/VOsl8=", + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-6.0.0.tgz?cache=0&sync_timestamp=1594427573763&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flru-cache%2Fdownload%2Flru-cache-6.0.0.tgz", + "integrity": "sha1-bW/mVw69lqr5D8rR2vo7JWbbOpQ=", "dev": true, "requires": { - "acorn": "^6.0.2", - "acorn-jsx": "^5.0.0", - "eslint-visitor-keys": "^1.0.0" + "yallist": "^4.0.0" } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz", - "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", - "dev": true - }, - "vue-eslint-parser": { - "version": "5.0.0", - "resolved": "https://registry.npm.taobao.org/vue-eslint-parser/download/vue-eslint-parser-5.0.0.tgz", - "integrity": "sha1-APTk2pTsl0uCGib/DtD3p4QCuKE=", + "semver": { + "version": "7.3.4", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-7.3.4.tgz?cache=0&sync_timestamp=1606853731020&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-7.3.4.tgz", + "integrity": "sha1-J6qn0uTKdkUvmNOt0JOnLJQ+3Jc=", "dev": true, "requires": { - "debug": "^4.1.0", - "eslint-scope": "^4.0.0", - "eslint-visitor-keys": "^1.0.0", - "espree": "^4.1.0", - "esquery": "^1.0.1", - "lodash": "^4.17.11" + "lru-cache": "^6.0.0" } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-4.0.0.tgz", + "integrity": "sha1-m7knkNnA7/7GO+c1GeEaNQGaOnI=", + "dev": true } } }, "eslint-scope": { "version": "4.0.3", - "resolved": "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-4.0.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-scope%2Fdownload%2Feslint-scope-4.0.3.tgz", + "resolved": "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-4.0.3.tgz?cache=0&sync_timestamp=1600070417656&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-scope%2Fdownload%2Feslint-scope-4.0.3.tgz", "integrity": "sha1-ygODMxD2iJoyZHgaqC5j65z+eEg=", "dev": true, "requires": { @@ -5744,7 +5079,7 @@ }, "eslint-utils": { "version": "1.4.3", - "resolved": "https://registry.npm.taobao.org/eslint-utils/download/eslint-utils-1.4.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-utils%2Fdownload%2Feslint-utils-1.4.3.tgz", + "resolved": "https://registry.npm.taobao.org/eslint-utils/download/eslint-utils-1.4.3.tgz", "integrity": "sha1-dP7HxU0Hdrb2fgJRBAtYBlZOmB8=", "dev": true, "requires": { @@ -5752,20 +5087,28 @@ } }, "eslint-visitor-keys": { - "version": "1.1.0", - "resolved": "https://registry.npm.taobao.org/eslint-visitor-keys/download/eslint-visitor-keys-1.1.0.tgz?cache=0&sync_timestamp=1565705523991&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-visitor-keys%2Fdownload%2Feslint-visitor-keys-1.1.0.tgz", - "integrity": "sha1-4qgs6oT/JGrW+1f5veW0ZiFFnsI=", + "version": "1.3.0", + "resolved": "https://registry.npm.taobao.org/eslint-visitor-keys/download/eslint-visitor-keys-1.3.0.tgz?cache=0&sync_timestamp=1599829544231&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-visitor-keys%2Fdownload%2Feslint-visitor-keys-1.3.0.tgz", + "integrity": "sha1-MOvR73wv3/AcOk8VEESvJfqwUj4=", "dev": true }, "espree": { - "version": "3.5.4", - "resolved": "https://registry.npm.taobao.org/espree/download/espree-3.5.4.tgz?cache=0&sync_timestamp=1583168748616&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fespree%2Fdownload%2Fespree-3.5.4.tgz", - "integrity": "sha1-sPRHGHyKi+2US4FaZgvd9d610ac=", + "version": "6.2.1", + "resolved": "https://registry.npm.taobao.org/espree/download/espree-6.2.1.tgz?cache=0&sync_timestamp=1607144055171&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fespree%2Fdownload%2Fespree-6.2.1.tgz", + "integrity": "sha1-d/xy4f10SiBSwg84pbV1gy6Cc0o=", "dev": true, - "optional": true, "requires": { - "acorn": "^5.5.0", - "acorn-jsx": "^3.0.0" + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npm.taobao.org/acorn/download/acorn-7.4.1.tgz?cache=0&sync_timestamp=1602534280466&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-7.4.1.tgz", + "integrity": "sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=", + "dev": true + } } }, "esprima": { @@ -5775,21 +5118,37 @@ "dev": true }, "esquery": { - "version": "1.1.0", - "resolved": "https://registry.npm.taobao.org/esquery/download/esquery-1.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fesquery%2Fdownload%2Fesquery-1.1.0.tgz", - "integrity": "sha1-xcC2bzg+dlZAT4azEzTXJSTt20g=", + "version": "1.3.1", + "resolved": "https://registry.npm.taobao.org/esquery/download/esquery-1.3.1.tgz?cache=0&sync_timestamp=1587061209806&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fesquery%2Fdownload%2Fesquery-1.3.1.tgz", + "integrity": "sha1-t4tYKKqOIU4p+3TE1bdS4cAz2lc=", "dev": true, "requires": { - "estraverse": "^4.0.0" + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/estraverse/download/estraverse-5.2.0.tgz", + "integrity": "sha1-MH30JUfmzHMk088DwVXVzbjFOIA=", + "dev": true + } } }, "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npm.taobao.org/esrecurse/download/esrecurse-4.2.1.tgz", - "integrity": "sha1-AHo7n9vCs7uH5IeeoZyS/b05Qs8=", + "version": "4.3.0", + "resolved": "https://registry.npm.taobao.org/esrecurse/download/esrecurse-4.3.0.tgz", + "integrity": "sha1-eteWTWeauyi+5yzsY3WLHF0smSE=", "dev": true, "requires": { - "estraverse": "^4.1.0" + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/estraverse/download/estraverse-5.2.0.tgz", + "integrity": "sha1-MH30JUfmzHMk088DwVXVzbjFOIA=", + "dev": true + } } }, "estraverse": { @@ -5798,6 +5157,11 @@ "integrity": "sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0=", "dev": true }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/estree-walker/download/estree-walker-2.0.2.tgz", + "integrity": "sha1-UvAQF4wqTBF6d1fP6UKtt9LaTKw=" + }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npm.taobao.org/esutils/download/esutils-2.0.3.tgz", @@ -5810,26 +5174,22 @@ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", "dev": true }, - "eve": { - "version": "git://github.com/adobe-webplatform/eve.git#eef80ed8d188423c2272746fb8ae5cc8dad84cb1", - "from": "git://github.com/adobe-webplatform/eve.git#eef80ed" - }, "event-pubsub": { "version": "4.3.0", - "resolved": "https://registry.npm.taobao.org/event-pubsub/download/event-pubsub-4.3.0.tgz", + "resolved": "https://registry.npm.taobao.org/event-pubsub/download/event-pubsub-4.3.0.tgz?cache=0&sync_timestamp=1606361501216&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fevent-pubsub%2Fdownload%2Fevent-pubsub-4.3.0.tgz", "integrity": "sha1-9o2Ba8KfHsAsU53FjI3UDOcss24=", "dev": true }, "eventemitter3": { - "version": "4.0.0", - "resolved": "https://registry.npm.taobao.org/eventemitter3/download/eventemitter3-4.0.0.tgz?cache=0&sync_timestamp=1560950873670&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feventemitter3%2Fdownload%2Feventemitter3-4.0.0.tgz", - "integrity": "sha1-1lF2FjiH7lnzhtZMgmELaWpKdOs=", + "version": "4.0.7", + "resolved": "https://registry.npm.taobao.org/eventemitter3/download/eventemitter3-4.0.7.tgz", + "integrity": "sha1-Lem2j2Uo1WRO9cWVJqG0oHMGFp8=", "dev": true }, "events": { - "version": "3.1.0", - "resolved": "https://registry.npm.taobao.org/events/download/events-3.1.0.tgz", - "integrity": "sha1-hCea8bNMt1qoi/X/KR9tC9mzGlk=", + "version": "3.2.0", + "resolved": "https://registry.npm.taobao.org/events/download/events-3.2.0.tgz", + "integrity": "sha1-k7h8GPjvzUICpGGuxN/AVWtjk3k=", "dev": true }, "eventsource": { @@ -5851,22 +5211,14 @@ "safe-buffer": "^5.1.1" } }, - "exec-sh": { - "version": "0.2.2", - "resolved": "https://registry.npm.taobao.org/exec-sh/download/exec-sh-0.2.2.tgz", - "integrity": "sha1-Kl5//L19C6J1W97LFuWkJ9+97DY=", - "dev": true, - "requires": { - "merge": "^1.2.0" - } - }, "execa": { - "version": "0.7.0", - "resolved": "https://registry.npm.taobao.org/execa/download/execa-0.7.0.tgz?cache=0&sync_timestamp=1576749101742&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexeca%2Fdownload%2Fexeca-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/execa/download/execa-1.0.0.tgz?cache=0&sync_timestamp=1606970975645&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexeca%2Fdownload%2Fexeca-1.0.0.tgz", + "integrity": "sha1-xiNqW7TfbW8V6I5/AXeYIWdJ3dg=", + "dev": true, "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", "is-stream": "^1.1.0", "npm-run-path": "^2.0.0", "p-finally": "^1.0.0", @@ -5874,17 +5226,6 @@ "strip-eof": "^1.0.0" } }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npm.taobao.org/exit/download/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true - }, - "exit-on-epipe": { - "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/exit-on-epipe/download/exit-on-epipe-1.0.1.tgz", - "integrity": "sha1-C92S6H1ShdJn2qgXHQ6wYVlolpI=" - }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npm.taobao.org/expand-brackets/download/expand-brackets-2.1.4.tgz", @@ -5902,7 +5243,7 @@ "dependencies": { "debug": { "version": "2.6.9", - "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1607566580543&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz", "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "dev": true, "requires": { @@ -5926,97 +5267,12 @@ "requires": { "is-extendable": "^0.1.0" } - } - } - }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npm.taobao.org/expand-range/download/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true, - "requires": { - "fill-range": "^2.1.0" - }, - "dependencies": { - "fill-range": { - "version": "2.2.4", - "resolved": "https://registry.npm.taobao.org/fill-range/download/fill-range-2.2.4.tgz", - "integrity": "sha1-6x53OrsFbc2N8r/favWbizqTZWU=", - "dev": true, - "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" - } }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz", - "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1607433905701&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npm.taobao.org/is-number/download/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npm.taobao.org/isobject/download/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npm.taobao.org/expand-tilde/download/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, - "expect": { - "version": "23.6.0", - "resolved": "https://registry.npm.taobao.org/expect/download/expect-23.6.0.tgz?cache=0&sync_timestamp=1579654879185&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexpect%2Fdownload%2Fexpect-23.6.0.tgz", - "integrity": "sha1-HgyNO6mlgch71x+5vIhi1ENCX5g=", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "jest-diff": "^23.6.0", - "jest-get-type": "^22.1.0", - "jest-matcher-utils": "^23.6.0", - "jest-message-util": "^23.4.0", - "jest-regex-util": "^23.3.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-3.2.1.tgz", - "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } } } }, @@ -6060,17 +5316,17 @@ "dependencies": { "debug": { "version": "2.6.9", - "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1607566580543&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz", "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "dev": true, "requires": { "ms": "2.0.0" } }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1607433905701&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, "qs": { @@ -6109,14 +5365,13 @@ } }, "external-editor": { - "version": "2.2.0", - "resolved": "https://registry.npm.taobao.org/external-editor/download/external-editor-2.2.0.tgz?cache=0&sync_timestamp=1562602052556&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexternal-editor%2Fdownload%2Fexternal-editor-2.2.0.tgz", - "integrity": "sha1-BFURz9jRM/OEZnPRBHwVTiFK09U=", + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/external-editor/download/external-editor-3.1.0.tgz?cache=0&sync_timestamp=1562602052556&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexternal-editor%2Fdownload%2Fexternal-editor-3.1.0.tgz", + "integrity": "sha1-ywP3QL764D6k0oPK7SdBqD8zVJU=", "dev": true, - "optional": true, "requires": { - "chardet": "^0.4.0", - "iconv-lite": "^0.4.17", + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", "tmp": "^0.0.33" } }, @@ -6185,15 +5440,6 @@ } } }, - "extract-from-css": { - "version": "0.4.4", - "resolved": "https://registry.npm.taobao.org/extract-from-css/download/extract-from-css-0.4.4.tgz", - "integrity": "sha1-HqffLnx8brmSL6COitrqSG9vj5I=", - "dev": true, - "requires": { - "css": "^2.1.0" - } - }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npm.taobao.org/extsprintf/download/extsprintf-1.3.0.tgz", @@ -6201,19 +5447,20 @@ "dev": true }, "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-3.1.1.tgz?cache=0&sync_timestamp=1575383928809&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-deep-equal%2Fdownload%2Ffast-deep-equal-3.1.1.tgz", - "integrity": "sha1-VFFFB3xQFJHjOxXsQIwpQ3bpSuQ=" + "version": "3.1.3", + "resolved": "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-3.1.3.tgz?cache=0&sync_timestamp=1591599651635&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-deep-equal%2Fdownload%2Ffast-deep-equal-3.1.3.tgz", + "integrity": "sha1-On1WtVnWy8PrUSMlJE5hmmXGxSU=", + "dev": true }, "fast-diff": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "resolved": "https://registry.npm.taobao.org/fast-diff/download/fast-diff-1.2.0.tgz", + "integrity": "sha1-c+4RmC2Gyq95WYKNUZz+kn+sXwM=", "dev": true }, "fast-glob": { "version": "2.2.7", - "resolved": "https://registry.npm.taobao.org/fast-glob/download/fast-glob-2.2.7.tgz", + "resolved": "https://registry.npm.taobao.org/fast-glob/download/fast-glob-2.2.7.tgz?cache=0&sync_timestamp=1592290365180&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-glob%2Fdownload%2Ffast-glob-2.2.7.tgz", "integrity": "sha1-aVOFfDr6R1//ku5gFdUtpwpM050=", "dev": true, "requires": { @@ -6223,12 +5470,36 @@ "is-glob": "^4.0.0", "merge2": "^1.2.3", "micromatch": "^3.1.10" + }, + "dependencies": { + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/glob-parent/download/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + } } }, "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.1.0.tgz?cache=0&sync_timestamp=1576340291001&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-json-stable-stringify%2Fdownload%2Ffast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha1-h0v2nG9ATCtdmcSBNBOZ/VWJJjM=" + "integrity": "sha1-h0v2nG9ATCtdmcSBNBOZ/VWJJjM=", + "dev": true }, "fast-levenshtein": { "version": "2.0.6", @@ -6245,69 +5516,40 @@ "websocket-driver": ">=0.5.1" } }, - "fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npm.taobao.org/fb-watchman/download/fb-watchman-2.0.1.tgz", - "integrity": "sha1-/IT7OdJwnPP/bXQ3BhV7tXCKioU=", - "dev": true, - "requires": { - "bser": "2.1.1" - } - }, "figgy-pudding": { - "version": "3.5.1", - "resolved": "https://registry.npm.taobao.org/figgy-pudding/download/figgy-pudding-3.5.1.tgz", - "integrity": "sha1-hiRwESkBxyeg5JWoB0S9W6odZ5A=", + "version": "3.5.2", + "resolved": "https://registry.npm.taobao.org/figgy-pudding/download/figgy-pudding-3.5.2.tgz", + "integrity": "sha1-tO7oFIq7Adzx0aw0Nn1Z4S+mHW4=", "dev": true }, "figures": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/figures/download/figures-2.0.0.tgz?cache=0&sync_timestamp=1581865437156&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffigures%2Fdownload%2Ffigures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "version": "3.2.0", + "resolved": "https://registry.npm.taobao.org/figures/download/figures-3.2.0.tgz?cache=0&sync_timestamp=1581865437156&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffigures%2Fdownload%2Ffigures-3.2.0.tgz", + "integrity": "sha1-YlwYvSk8YE3EqN2y/r8MiDQXRq8=", "dev": true, "requires": { "escape-string-regexp": "^1.0.5" } }, "file-entry-cache": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/file-entry-cache/download/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "version": "5.0.1", + "resolved": "https://registry.npm.taobao.org/file-entry-cache/download/file-entry-cache-5.0.1.tgz", + "integrity": "sha1-yg9u+m3T1WEzP7FFFQZcL6/fQ5w=", "dev": true, - "optional": true, "requires": { - "flat-cache": "^1.2.1", - "object-assign": "^4.0.1" + "flat-cache": "^2.0.1" } }, "file-loader": { - "version": "3.0.1", - "resolved": "https://registry.npm.taobao.org/file-loader/download/file-loader-3.0.1.tgz?cache=0&sync_timestamp=1582135550059&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffile-loader%2Fdownload%2Ffile-loader-3.0.1.tgz", - "integrity": "sha1-+OC6C1mZGLUa3+RdZtHnca1WD6o=", + "version": "4.3.0", + "resolved": "https://registry.npm.taobao.org/file-loader/download/file-loader-4.3.0.tgz?cache=0&sync_timestamp=1603816990383&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffile-loader%2Fdownload%2Ffile-loader-4.3.0.tgz", + "integrity": "sha1-eA8ED3KbPRgBnyBgX3I+hEuKWK8=", "dev": true, "requires": { - "loader-utils": "^1.0.2", - "schema-utils": "^1.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fschema-utils%2Fdownload%2Fschema-utils-1.0.0.tgz", - "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } + "loader-utils": "^1.2.3", + "schema-utils": "^2.5.0" } }, - "file-saver": { - "version": "2.0.1", - "resolved": "https://registry.npm.taobao.org/file-saver/download/file-saver-2.0.1.tgz", - "integrity": "sha1-f+IkKvHLxVminYF2B4qLVteB+nk=" - }, "file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npm.taobao.org/file-uri-to-path/download/file-uri-to-path-1.0.0.tgz?cache=0&sync_timestamp=1570825475173&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffile-uri-to-path%2Fdownload%2Ffile-uri-to-path-1.0.0.tgz", @@ -6315,22 +5557,6 @@ "dev": true, "optional": true }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npm.taobao.org/filename-regex/download/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true - }, - "fileset": { - "version": "2.0.3", - "resolved": "https://registry.npm.taobao.org/fileset/download/fileset-2.0.3.tgz", - "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", - "dev": true, - "requires": { - "glob": "^7.0.3", - "minimatch": "^3.0.3" - } - }, "filesize": { "version": "3.6.1", "resolved": "https://registry.npm.taobao.org/filesize/download/filesize-3.6.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffilesize%2Fdownload%2Ffilesize-3.6.1.tgz", @@ -6377,103 +5603,51 @@ "dependencies": { "debug": { "version": "2.6.9", - "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1607566580543&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz", "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "dev": true, "requires": { "ms": "2.0.0" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1607433905701&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true } } }, - "find-babel-config": { - "version": "1.2.0", - "resolved": "https://registry.npm.taobao.org/find-babel-config/download/find-babel-config-1.2.0.tgz", - "integrity": "sha1-qbezF+tbmGDNqdVHQKjIM3oig6I=", - "dev": true, - "requires": { - "json5": "^0.5.1", - "path-exists": "^3.0.0" - } - }, "find-cache-dir": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-1.0.0.tgz", - "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-3.3.1.tgz", + "integrity": "sha1-ibM/rUpGcNqpT4Vff74x1thP6IA=", "dev": true, "requires": { "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^2.0.0" + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" } }, - "find-parent-dir": { - "version": "0.3.0", - "resolved": "https://registry.npm.taobao.org/find-parent-dir/download/find-parent-dir-0.3.0.tgz", - "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=", - "dev": true - }, "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "requires": { - "locate-path": "^2.0.0" - } - }, - "findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/findup-sync/download/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", - "dev": true, - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^3.1.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "fined": { - "version": "1.2.0", - "resolved": "https://registry.npm.taobao.org/fined/download/fined-1.2.0.tgz", - "integrity": "sha1-0AvszxqitHXRbUI7Aji3E6LEo3s=", + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-4.1.0.tgz?cache=0&sync_timestamp=1597169795121&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-up%2Fdownload%2Ffind-up-4.1.0.tgz", + "integrity": "sha1-l6/n1s3AvFkoWEt8jXsW6KmqXRk=", "dev": true, "requires": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, - "flagged-respawn": { - "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/flagged-respawn/download/flagged-respawn-1.0.1.tgz", - "integrity": "sha1-595vEnnd2cqarIpZcdYYYGs6q0E=", - "dev": true - }, "flat-cache": { - "version": "1.3.4", - "resolved": "https://registry.npm.taobao.org/flat-cache/download/flat-cache-1.3.4.tgz", - "integrity": "sha1-LC73dSXMKSkAff/6HdMUqpyd7m8=", + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/flat-cache/download/flat-cache-2.0.1.tgz", + "integrity": "sha1-XSltbwS9pEpGMKMBQTvbwuwIXsA=", "dev": true, - "optional": true, "requires": { - "circular-json": "^0.3.1", - "graceful-fs": "^4.1.2", - "rimraf": "~2.6.2", - "write": "^0.2.1" + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" }, "dependencies": { "rimraf": { @@ -6481,7 +5655,6 @@ "resolved": "https://registry.npm.taobao.org/rimraf/download/rimraf-2.6.3.tgz?cache=0&sync_timestamp=1581257110269&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frimraf%2Fdownload%2Frimraf-2.6.3.tgz", "integrity": "sha1-stEE/g2Psnz54KHNqCYt04M8bKs=", "dev": true, - "optional": true, "requires": { "glob": "^7.1.3" } @@ -6489,9 +5662,9 @@ } }, "flatted": { - "version": "2.0.1", - "resolved": "https://registry.npm.taobao.org/flatted/download/flatted-2.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fflatted%2Fdownload%2Fflatted-2.0.1.tgz", - "integrity": "sha1-aeV8qo8OrLwoHS4stFjUb9tEngg=", + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/flatted/download/flatted-2.0.2.tgz", + "integrity": "sha1-RXWyHivO50NKqb5mL0t7X5wrUTg=", "dev": true }, "flush-write-stream": { @@ -6504,19 +5677,10 @@ "readable-stream": "^2.3.6" } }, - "fn-name": { - "version": "2.0.1", - "resolved": "https://registry.npm.taobao.org/fn-name/download/fn-name-2.0.1.tgz", - "integrity": "sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=", - "dev": true - }, "follow-redirects": { - "version": "1.5.10", - "resolved": "https://registry.npm.taobao.org/follow-redirects/download/follow-redirects-1.5.10.tgz", - "integrity": "sha1-e3qfmuov3/NnhqlP9kPtB/T/Xio=", - "requires": { - "debug": "=3.1.0" - } + "version": "1.13.1", + "resolved": "https://registry.npm.taobao.org/follow-redirects/download/follow-redirects-1.13.1.tgz?cache=0&sync_timestamp=1607916833378&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffollow-redirects%2Fdownload%2Ffollow-redirects-1.13.1.tgz", + "integrity": "sha1-X2m4Ezds7k/QR0o6uoNd8Eq3Y7c=" }, "for-in": { "version": "1.0.2", @@ -6524,15 +5688,6 @@ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npm.taobao.org/for-own/download/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npm.taobao.org/forever-agent/download/forever-agent-0.6.1.tgz", @@ -6556,11 +5711,6 @@ "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", "dev": true }, - "frac": { - "version": "1.1.2", - "resolved": "https://registry.npm.taobao.org/frac/download/frac-1.1.2.tgz", - "integrity": "sha1-PXT39keMiKG1AgMG10fcYxPHTQs=" - }, "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npm.taobao.org/fragment-cache/download/fragment-cache-0.2.1.tgz", @@ -6597,6 +5747,15 @@ "universalify": "^0.1.0" } }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/fs-minipass/download/fs-minipass-2.1.0.tgz", + "integrity": "sha1-f1A2/b8SxjwWkZDL5BmchSJx+fs=", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, "fs-write-stream-atomic": { "version": "1.0.10", "resolved": "https://registry.npm.taobao.org/fs-write-stream-atomic/download/fs-write-stream-atomic-1.0.10.tgz", @@ -6616,1972 +5775,246 @@ "dev": true }, "fsevents": { - "version": "1.2.11", - "resolved": "https://registry.npm.taobao.org/fsevents/download/fsevents-1.2.11.tgz?cache=0&sync_timestamp=1580708699417&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffsevents%2Fdownload%2Ffsevents-1.2.11.tgz", - "integrity": "sha1-Z79X9HWPAu3oj7KhcS/vTRU1i+M=", + "version": "2.3.1", + "resolved": "https://registry.npm.taobao.org/fsevents/download/fsevents-2.3.1.tgz", + "integrity": "sha1-sgmrFMYQEmNsiGNQft9/tozFTp8=", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/function-bind/download/function-bind-1.1.1.tgz", + "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/functional-red-black-tree/download/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "generic-names": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/generic-names/download/generic-names-2.0.1.tgz?cache=0&sync_timestamp=1603542764418&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fgeneric-names%2Fdownload%2Fgeneric-names-2.0.1.tgz", + "integrity": "sha1-+KN46tLMqno08DF7BVVIMq5BuHI=", + "dev": true, + "requires": { + "loader-utils": "^1.1.0" + } + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npm.taobao.org/gensync/download/gensync-1.0.0-beta.2.tgz?cache=0&sync_timestamp=1603830155677&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fgensync%2Fdownload%2Fgensync-1.0.0-beta.2.tgz", + "integrity": "sha1-MqbudsPX9S1GsrGuXZP+qFgKJeA=", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npm.taobao.org/get-caller-file/download/get-caller-file-2.0.5.tgz", + "integrity": "sha1-T5RBKoLbMvNuOwuXQfipf+sDH34=", + "dev": true + }, + "get-intrinsic": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/get-intrinsic/download/get-intrinsic-1.0.1.tgz?cache=0&sync_timestamp=1604120586779&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fget-intrinsic%2Fdownload%2Fget-intrinsic-1.0.1.tgz", + "integrity": "sha1-lKl2j8vdBZWhySc6rPTInQdWMb4=", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npm.taobao.org/get-stdin/download/get-stdin-6.0.0.tgz", + "integrity": "sha1-ngm/cSs2CrkiXoEgSPcf3pyJZXs=", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-4.1.0.tgz", + "integrity": "sha1-wbJVV189wh1Zv8ec09K0axw6VLU=", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npm.taobao.org/get-value/download/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npm.taobao.org/getpass/download/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npm.taobao.org/glob/download/glob-7.1.6.tgz", + "integrity": "sha1-FB8zuBp8JJLhJVlDB0gMRmeSeKY=", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npm.taobao.org/glob-parent/download/glob-parent-5.1.1.tgz", + "integrity": "sha1-tsHvQXxOVmPqSY8cRa+saRa7wik=", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npm.taobao.org/glob-to-regexp/download/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", + "dev": true + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npm.taobao.org/globals/download/globals-11.12.0.tgz?cache=0&sync_timestamp=1607413619483&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglobals%2Fdownload%2Fglobals-11.12.0.tgz", + "integrity": "sha1-q4eVM4hooLq9hSV1gBjCp+uVxC4=", + "dev": true + }, + "globby": { + "version": "9.2.0", + "resolved": "https://registry.npm.taobao.org/globby/download/globby-9.2.0.tgz", + "integrity": "sha1-/QKacGxwPSm90XD0tts6P3p8tj0=", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^1.0.2", + "dir-glob": "^2.2.2", + "fast-glob": "^2.2.6", + "glob": "^7.1.3", + "ignore": "^4.0.3", + "pify": "^4.0.1", + "slash": "^2.0.0" + } + }, + "good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npm.taobao.org/good-listener/download/good-listener-1.2.2.tgz", + "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", + "requires": { + "delegate": "^3.1.2" + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.2.4.tgz?cache=0&sync_timestamp=1588086876757&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fgraceful-fs%2Fdownload%2Fgraceful-fs-4.2.4.tgz", + "integrity": "sha1-Ila94U02MpWMRl68ltxGfKB6Kfs=", + "dev": true + }, + "gzip-size": { + "version": "5.1.1", + "resolved": "https://registry.npm.taobao.org/gzip-size/download/gzip-size-5.1.1.tgz?cache=0&sync_timestamp=1605523115814&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fgzip-size%2Fdownload%2Fgzip-size-5.1.1.tgz", + "integrity": "sha1-y5vuaS+HwGErIyhAqHOQTkwTUnQ=", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "pify": "^4.0.1" + } + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/handle-thing/download/handle-thing-2.0.1.tgz", + "integrity": "sha1-hX95zjWVgMNA1DCBzGSJcNC7I04=", + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/har-schema/download/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/har-validator/download/har-validator-5.1.5.tgz", + "integrity": "sha1-HwgDufjLIMD6E4It8ezds2veHv0=", + "dev": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/has/download/has-1.0.3.tgz", + "integrity": "sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y=", "dev": true, - "optional": true, "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1", - "node-pre-gyp": "*" + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/has-ansi/download/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" }, "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, "ansi-regex": { "version": "2.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "debug": { - "version": "3.2.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.6.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "bundled": true, - "dev": true, - "optional": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true, - "optional": true - }, - "minipass": { - "version": "2.9.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.3.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.9.0" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.14.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4.4.2" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.4.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.7.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "5.7.1", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.13", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "yallist": { - "version": "3.1.1", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "fstream": { - "version": "1.0.12", - "resolved": "https://registry.npm.taobao.org/fstream/download/fstream-1.0.12.tgz", - "integrity": "sha1-Touo7i1Ivk99DeUFRVVI6uWTIEU=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npm.taobao.org/function-bind/download/function-bind-1.1.1.tgz", - "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=", - "dev": true - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/functional-red-black-tree/download/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "fuse.js": { - "version": "3.4.4", - "resolved": "https://registry.npm.taobao.org/fuse.js/download/fuse.js-3.4.4.tgz", - "integrity": "sha1-+Y9V/LO1lc9qPmKcX/rxCYIQPpU=" - }, - "g-status": { - "version": "2.0.2", - "resolved": "https://registry.npm.taobao.org/g-status/download/g-status-2.0.2.tgz", - "integrity": "sha1-Jw/TIRno/JSW8Gb+X+iOCmvHi5c=", - "dev": true, - "requires": { - "arrify": "^1.0.1", - "matcher": "^1.0.0", - "simple-git": "^1.85.0" - } - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npm.taobao.org/gauge/download/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dev": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz?cache=0&sync_timestamp=1573280518303&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "gaze": { - "version": "1.1.3", - "resolved": "https://registry.npm.taobao.org/gaze/download/gaze-1.1.3.tgz", - "integrity": "sha1-xEFzPhO5J6yMD/C0w7Az8ogSkko=", - "dev": true, - "requires": { - "globule": "^1.0.0" - } - }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npm.taobao.org/get-caller-file/download/get-caller-file-1.0.3.tgz", - "integrity": "sha1-+Xj6TJDR3+f/LWvtoqUV5xO9z0o=" - }, - "get-own-enumerable-property-symbols": { - "version": "3.0.2", - "resolved": "https://registry.npm.taobao.org/get-own-enumerable-property-symbols/download/get-own-enumerable-property-symbols-3.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fget-own-enumerable-property-symbols%2Fdownload%2Fget-own-enumerable-property-symbols-3.0.2.tgz", - "integrity": "sha1-tf3nfyLL4185C04ImSLFC85u9mQ=", - "dev": true - }, - "get-stdin": { - "version": "6.0.0", - "resolved": "https://registry.npm.taobao.org/get-stdin/download/get-stdin-6.0.0.tgz", - "integrity": "sha1-ngm/cSs2CrkiXoEgSPcf3pyJZXs=", - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npm.taobao.org/get-value/download/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npm.taobao.org/getpass/download/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npm.taobao.org/glob/download/glob-7.1.6.tgz", - "integrity": "sha1-FB8zuBp8JJLhJVlDB0gMRmeSeKY=", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npm.taobao.org/glob-base/download/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true, - "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - }, - "dependencies": { - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/glob-parent/download/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "requires": { - "is-glob": "^2.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/is-extglob/download/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - } - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npm.taobao.org/glob-parent/download/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npm.taobao.org/glob-to-regexp/download/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", - "dev": true - }, - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/global-modules/download/global-modules-1.0.0.tgz", - "integrity": "sha1-bXcPDrUjrHgWTXK15xqIdyZcw+o=", - "dev": true, - "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - } - }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npm.taobao.org/global-prefix/download/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npm.taobao.org/globals/download/globals-11.12.0.tgz", - "integrity": "sha1-q4eVM4hooLq9hSV1gBjCp+uVxC4=", - "dev": true - }, - "globby": { - "version": "9.2.0", - "resolved": "https://registry.npm.taobao.org/globby/download/globby-9.2.0.tgz", - "integrity": "sha1-/QKacGxwPSm90XD0tts6P3p8tj0=", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "array-union": "^1.0.2", - "dir-glob": "^2.2.2", - "fast-glob": "^2.2.6", - "glob": "^7.1.3", - "ignore": "^4.0.3", - "pify": "^4.0.1", - "slash": "^2.0.0" - }, - "dependencies": { - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npm.taobao.org/ignore/download/ignore-4.0.6.tgz", - "integrity": "sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw=", - "dev": true - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npm.taobao.org/pify/download/pify-4.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-4.0.1.tgz", - "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=", - "dev": true - } - } - }, - "globule": { - "version": "1.3.1", - "resolved": "https://registry.npm.taobao.org/globule/download/globule-1.3.1.tgz", - "integrity": "sha1-kKJTOPIrf761J87mPGKa6nVNM7k=", - "dev": true, - "requires": { - "glob": "~7.1.1", - "lodash": "~4.17.12", - "minimatch": "~3.0.2" - } - }, - "good-listener": { - "version": "1.2.2", - "resolved": "https://registry.npm.taobao.org/good-listener/download/good-listener-1.2.2.tgz", - "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", - "requires": { - "delegate": "^3.1.2" - } - }, - "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.2.3.tgz", - "integrity": "sha1-ShL/G2A3bvCYYsIJPt2Qgyi+hCM=", - "dev": true - }, - "growly": { - "version": "1.3.0", - "resolved": "https://registry.npm.taobao.org/growly/download/growly-1.3.0.tgz", - "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", - "dev": true - }, - "gzip-size": { - "version": "5.1.1", - "resolved": "https://registry.npm.taobao.org/gzip-size/download/gzip-size-5.1.1.tgz", - "integrity": "sha1-y5vuaS+HwGErIyhAqHOQTkwTUnQ=", - "dev": true, - "requires": { - "duplexer": "^0.1.1", - "pify": "^4.0.1" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npm.taobao.org/pify/download/pify-4.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-4.0.1.tgz", - "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=", - "dev": true - } - } - }, - "handle-thing": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/handle-thing/download/handle-thing-2.0.0.tgz", - "integrity": "sha1-DgOWlf9QyT/CiFV9aW88HcZ3Z1Q=", - "dev": true - }, - "handlebars": { - "version": "4.7.3", - "resolved": "https://registry.npm.taobao.org/handlebars/download/handlebars-4.7.3.tgz", - "integrity": "sha1-js4nl4Johs+AgtFyb/IdKgIlUO4=", - "dev": true, - "requires": { - "neo-async": "^2.6.0", - "optimist": "^0.6.1", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", - "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", - "dev": true - } - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/har-schema/download/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true - }, - "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npm.taobao.org/har-validator/download/har-validator-5.1.3.tgz", - "integrity": "sha1-HvievT5JllV2de7ZiTEQ3DUPoIA=", - "dev": true, - "requires": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npm.taobao.org/has/download/has-1.0.3.tgz", - "integrity": "sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y=", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/has-ansi/download/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - } - } - }, - "has-color": { - "version": "0.1.7", - "resolved": "https://registry.npm.taobao.org/has-color/download/has-color-0.1.7.tgz", - "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=" - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/has-symbols/download/has-symbols-1.0.1.tgz?cache=0&sync_timestamp=1573950719586&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhas-symbols%2Fdownload%2Fhas-symbols-1.0.1.tgz", - "integrity": "sha1-n1IUdYpEGWxAbZvXbOv4HsLdMeg=", - "dev": true - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npm.taobao.org/has-unicode/download/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/has-value/download/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/has-values/download/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz", - "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", - "dev": true - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npm.taobao.org/hash-base/download/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "hash-sum": { - "version": "1.0.2", - "resolved": "https://registry.npm.taobao.org/hash-sum/download/hash-sum-1.0.2.tgz", - "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", - "dev": true - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npm.taobao.org/hash.js/download/hash.js-1.1.7.tgz", - "integrity": "sha1-C6vKU46NTuSg+JiNaIZlN6ADz0I=", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npm.taobao.org/he/download/he-1.2.0.tgz", - "integrity": "sha1-hK5l+n6vsWX922FWauFLrwVmTw8=", - "dev": true - }, - "header-case": { - "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/header-case/download/header-case-1.0.1.tgz", - "integrity": "sha1-lTWXMZfBRLCWE81l0xfvGZY70C0=", - "dev": true, - "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.1.3" - } - }, - "hex-color-regex": { - "version": "1.1.0", - "resolved": "https://registry.npm.taobao.org/hex-color-regex/download/hex-color-regex-1.1.0.tgz", - "integrity": "sha1-TAb8y0YC/iYCs8k9+C1+fb8aio4=", - "dev": true - }, - "highlight.js": { - "version": "9.18.1", - "resolved": "https://registry.npm.taobao.org/highlight.js/download/highlight.js-9.18.1.tgz", - "integrity": "sha1-7SGqAB/mJSuxCj121HVzxlOf4Tw=" - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/hmac-drbg/download/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "home-or-tmp": { - "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/home-or-tmp/download/home-or-tmp-3.0.0.tgz", - "integrity": "sha1-V6j+JM8zzdUkhgoVgh3cJchmcfs=", - "dev": true - }, - "homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npm.taobao.org/homedir-polyfill/download/homedir-polyfill-1.0.3.tgz", - "integrity": "sha1-dDKYzvTlrz4ZQWH7rcwhUdOgWOg=", - "dev": true, - "requires": { - "parse-passwd": "^1.0.0" - } - }, - "hoopy": { - "version": "0.1.4", - "resolved": "https://registry.npm.taobao.org/hoopy/download/hoopy-0.1.4.tgz", - "integrity": "sha1-YJIH1mEQADOpqUAq096mdzgcGx0=", - "dev": true - }, - "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npm.taobao.org/hosted-git-info/download/hosted-git-info-2.8.8.tgz?cache=0&sync_timestamp=1583017354488&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhosted-git-info%2Fdownload%2Fhosted-git-info-2.8.8.tgz", - "integrity": "sha1-dTm9S8Hg4KiVgVouAmJCCxKFhIg=", - "dev": true - }, - "hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npm.taobao.org/hpack.js/download/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - } - }, - "hsl-regex": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/hsl-regex/download/hsl-regex-1.0.0.tgz", - "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", - "dev": true - }, - "hsla-regex": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/hsla-regex/download/hsla-regex-1.0.0.tgz", - "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", - "dev": true - }, - "html-comment-regex": { - "version": "1.1.2", - "resolved": "https://registry.npm.taobao.org/html-comment-regex/download/html-comment-regex-1.1.2.tgz", - "integrity": "sha1-l9RoiutcgYhqNk+qDK0d2hTUM6c=", - "dev": true - }, - "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npm.taobao.org/html-encoding-sniffer/download/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha1-5w2EuU2lOqN14R/jo1G+ZkLKRvg=", - "dev": true, - "requires": { - "whatwg-encoding": "^1.0.1" - } - }, - "html-entities": { - "version": "1.2.1", - "resolved": "https://registry.npm.taobao.org/html-entities/download/html-entities-1.2.1.tgz", - "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", - "dev": true - }, - "html-minifier": { - "version": "3.5.21", - "resolved": "https://registry.npm.taobao.org/html-minifier/download/html-minifier-3.5.21.tgz", - "integrity": "sha1-0AQOBUcw41TbAIRjWTGUAVIS0gw=", - "dev": true, - "requires": { - "camel-case": "3.0.x", - "clean-css": "4.2.x", - "commander": "2.17.x", - "he": "1.2.x", - "param-case": "2.1.x", - "relateurl": "0.2.x", - "uglify-js": "3.4.x" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", - "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", - "dev": true - }, - "uglify-js": { - "version": "3.4.10", - "resolved": "https://registry.npm.taobao.org/uglify-js/download/uglify-js-3.4.10.tgz?cache=0&sync_timestamp=1582036112063&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fuglify-js%2Fdownload%2Fuglify-js-3.4.10.tgz", - "integrity": "sha1-mtlWPY6zrN+404WX0q8dgV9qdV8=", - "dev": true, - "requires": { - "commander": "~2.19.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "commander": { - "version": "2.19.0", - "resolved": "https://registry.npm.taobao.org/commander/download/commander-2.19.0.tgz", - "integrity": "sha1-9hmKqE5bg8RgVLlN3tv+1e6f8So=", - "dev": true - } - } - } - } - }, - "html-tags": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/html-tags/download/html-tags-2.0.0.tgz", - "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=", - "dev": true - }, - "html-webpack-plugin": { - "version": "3.2.0", - "resolved": "https://registry.npm.taobao.org/html-webpack-plugin/download/html-webpack-plugin-3.2.0.tgz?cache=0&sync_timestamp=1573491310172&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhtml-webpack-plugin%2Fdownload%2Fhtml-webpack-plugin-3.2.0.tgz", - "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", - "dev": true, - "requires": { - "html-minifier": "^3.2.3", - "loader-utils": "^0.2.16", - "lodash": "^4.17.3", - "pretty-error": "^2.0.2", - "tapable": "^1.0.0", - "toposort": "^1.0.0", - "util.promisify": "1.0.0" - }, - "dependencies": { - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npm.taobao.org/big.js/download/big.js-3.2.0.tgz", - "integrity": "sha1-pfwpi4G54Nyi5FiCR4S2XFK6WI4=", - "dev": true - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npm.taobao.org/emojis-list/download/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", - "dev": true - }, - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "dev": true, - "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" - } - }, - "util.promisify": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/util.promisify/download/util.promisify-1.0.0.tgz", - "integrity": "sha1-RA9xZaRZyaFtwUXrjnLzVocJcDA=", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" - } - } - } - }, - "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npm.taobao.org/htmlparser2/download/htmlparser2-3.10.1.tgz?cache=0&sync_timestamp=1582422905208&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhtmlparser2%2Fdownload%2Fhtmlparser2-3.10.1.tgz", - "integrity": "sha1-vWedw/WYl7ajS7EHSchVu1OpOS8=", - "dev": true, - "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-3.6.0.tgz?cache=0&sync_timestamp=1581622984924&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freadable-stream%2Fdownload%2Freadable-stream-3.6.0.tgz", - "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npm.taobao.org/http-deceiver/download/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", - "dev": true - }, - "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npm.taobao.org/http-errors/download/http-errors-1.7.2.tgz?cache=0&sync_timestamp=1561418493658&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-errors%2Fdownload%2Fhttp-errors-1.7.2.tgz", - "integrity": "sha1-T1ApzxMjnzEDblsuVSkrz7zIXI8=", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finherits%2Fdownload%2Finherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - } - } - }, - "http-parser-js": { - "version": "0.4.10", - "resolved": "https://registry.npm.taobao.org/http-parser-js/download/http-parser-js-0.4.10.tgz?cache=0&sync_timestamp=1572714277347&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-parser-js%2Fdownload%2Fhttp-parser-js-0.4.10.tgz", - "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=", - "dev": true - }, - "http-proxy": { - "version": "1.18.0", - "resolved": "https://registry.npm.taobao.org/http-proxy/download/http-proxy-1.18.0.tgz?cache=0&sync_timestamp=1568770896103&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-proxy%2Fdownload%2Fhttp-proxy-1.18.0.tgz", - "integrity": "sha1-2+VfY+daNH2389mZdPJpKjFKajo=", - "dev": true, - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-proxy-middleware": { - "version": "0.19.1", - "resolved": "https://registry.npm.taobao.org/http-proxy-middleware/download/http-proxy-middleware-0.19.1.tgz", - "integrity": "sha1-GDx9xKoUeRUDBkmMIQza+WCApDo=", - "dev": true, - "requires": { - "http-proxy": "^1.17.0", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npm.taobao.org/http-signature/download/http-signature-1.2.0.tgz?cache=0&sync_timestamp=1582586910479&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-signature%2Fdownload%2Fhttp-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/https-browserify/download/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, - "husky": { - "version": "1.3.1", - "resolved": "https://registry.npm.taobao.org/husky/download/husky-1.3.1.tgz", - "integrity": "sha1-JoI+OZMAOIyir/8Rz6ioawAz+uA=", - "dev": true, - "requires": { - "cosmiconfig": "^5.0.7", - "execa": "^1.0.0", - "find-up": "^3.0.0", - "get-stdin": "^6.0.0", - "is-ci": "^2.0.0", - "pkg-dir": "^3.0.0", - "please-upgrade-node": "^3.1.1", - "read-pkg": "^4.0.1", - "run-node": "^1.0.0", - "slash": "^2.0.0" - }, - "dependencies": { - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/ci-info/download/ci-info-2.0.0.tgz", - "integrity": "sha1-Z6npZL4xpR4V5QENWObxKDQAL0Y=", - "dev": true - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-6.0.5.tgz?cache=0&sync_timestamp=1570439926300&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcross-spawn%2Fdownload%2Fcross-spawn-6.0.5.tgz", - "integrity": "sha1-Sl7Hxk364iw6FBJNus3uhG2Ay8Q=", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/execa/download/execa-1.0.0.tgz?cache=0&sync_timestamp=1576749101742&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexeca%2Fdownload%2Fexeca-1.0.0.tgz", - "integrity": "sha1-xiNqW7TfbW8V6I5/AXeYIWdJ3dg=", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz", - "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-4.1.0.tgz", - "integrity": "sha1-wbJVV189wh1Zv8ec09K0axw6VLU=", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/is-ci/download/is-ci-2.0.0.tgz", - "integrity": "sha1-a8YzQYGBDgS1wis9WJ/cpVAmQEw=", - "dev": true, - "requires": { - "ci-info": "^2.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-3.0.0.tgz", - "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.2.2", - "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-2.2.2.tgz?cache=0&sync_timestamp=1577904218145&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-limit%2Fdownload%2Fp-limit-2.2.2.tgz", - "integrity": "sha1-YSebZ3IfUoeqHBOpp/u8SMkpGx4=", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-3.0.0.tgz", - "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npm.taobao.org/p-try/download/p-try-2.2.0.tgz", - "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=", - "dev": true - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npm.taobao.org/parse-json/download/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-3.0.0.tgz", - "integrity": "sha1-J0kCDyOe2ZCIGx9xIQ1R62UjvqM=", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "read-pkg": { - "version": "4.0.1", - "resolved": "https://registry.npm.taobao.org/read-pkg/download/read-pkg-4.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fread-pkg%2Fdownload%2Fread-pkg-4.0.1.tgz", - "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=", - "dev": true, - "requires": { - "normalize-package-data": "^2.3.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0" - } - } - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.24.tgz?cache=0&sync_timestamp=1579333981154&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ficonv-lite%2Fdownload%2Ficonv-lite-0.4.24.tgz", - "integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "icss-utils": { - "version": "4.1.1", - "resolved": "https://registry.npm.taobao.org/icss-utils/download/icss-utils-4.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ficss-utils%2Fdownload%2Ficss-utils-4.1.1.tgz", - "integrity": "sha1-IRcLU3ie4nRHwvR91oMIFAP5pGc=", - "requires": { - "postcss": "^7.0.14" - } - }, - "ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npm.taobao.org/ieee754/download/ieee754-1.1.13.tgz", - "integrity": "sha1-7BaFWOlaoYH9h9N/VcMrvLZwi4Q=", - "dev": true - }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npm.taobao.org/iferr/download/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", - "dev": true - }, - "ignore": { - "version": "3.3.10", - "resolved": "https://registry.npm.taobao.org/ignore/download/ignore-3.3.10.tgz", - "integrity": "sha1-Cpf7h2mG6AgcYxFg+PnziRV/AEM=", - "dev": true - }, - "image-size": { - "version": "0.5.5", - "resolved": "https://registry.npm.taobao.org/image-size/download/image-size-0.5.5.tgz?cache=0&sync_timestamp=1569841504754&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fimage-size%2Fdownload%2Fimage-size-0.5.5.tgz", - "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", - "dev": true - }, - "immediate": { - "version": "3.0.6", - "resolved": "https://registry.npm.taobao.org/immediate/download/immediate-3.0.6.tgz", - "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" - }, - "import-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npm.taobao.org/import-cwd/download/import-cwd-2.1.0.tgz", - "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", - "dev": true, - "requires": { - "import-from": "^2.1.0" - } - }, - "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/import-fresh/download/import-fresh-2.0.0.tgz?cache=0&sync_timestamp=1573665120798&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fimport-fresh%2Fdownload%2Fimport-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", - "dev": true, - "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - }, - "dependencies": { - "caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/caller-path/download/caller-path-2.0.0.tgz?cache=0&sync_timestamp=1574395542397&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcaller-path%2Fdownload%2Fcaller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", - "dev": true, - "requires": { - "caller-callsite": "^2.0.0" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/resolve-from/download/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - } - } - }, - "import-from": { - "version": "2.1.0", - "resolved": "https://registry.npm.taobao.org/import-from/download/import-from-2.1.0.tgz", - "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", - "dev": true, - "requires": { - "resolve-from": "^3.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/resolve-from/download/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - } - } - }, - "import-local": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/import-local/download/import-local-1.0.0.tgz", - "integrity": "sha1-Xk/9wD9P5sAJxnKb6yljHC+CJ7w=", - "dev": true, - "requires": { - "pkg-dir": "^2.0.0", - "resolve-cwd": "^2.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npm.taobao.org/imurmurhash/download/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "in-publish": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/in-publish/download/in-publish-2.0.0.tgz", - "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", - "dev": true - }, - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npm.taobao.org/indent-string/download/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", - "dev": true - }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/indexes-of/download/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" - }, - "infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npm.taobao.org/infer-owner/download/infer-owner-1.0.4.tgz", - "integrity": "sha1-xM78qo5RBRwqQLos6KPScpWvlGc=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finherits%2Fdownload%2Finherits-2.0.4.tgz", - "integrity": "sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=" - }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npm.taobao.org/ini/download/ini-1.3.5.tgz", - "integrity": "sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc=", - "dev": true - }, - "inquirer": { - "version": "3.3.0", - "resolved": "https://registry.npm.taobao.org/inquirer/download/inquirer-3.3.0.tgz?cache=0&sync_timestamp=1583819607980&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finquirer%2Fdownload%2Finquirer-3.3.0.tgz", - "integrity": "sha1-ndLyrXZdyrH/BEO0kUQqILoifck=", - "dev": true, - "optional": true, - "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.0", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^2.0.4", - "figures": "^2.0.0", - "lodash": "^4.3.0", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rx-lite": "^4.0.8", - "rx-lite-aggregates": "^4.0.8", - "string-width": "^2.1.0", - "strip-ansi": "^4.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz?cache=0&sync_timestamp=1573280518303&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "optional": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "internal-ip": { - "version": "4.3.0", - "resolved": "https://registry.npm.taobao.org/internal-ip/download/internal-ip-4.3.0.tgz", - "integrity": "sha1-hFRSuq2dLKO2nGNaE3rLmg2tCQc=", - "dev": true, - "requires": { - "default-gateway": "^4.2.0", - "ipaddr.js": "^1.9.0" - } - }, - "interpret": { - "version": "1.2.0", - "resolved": "https://registry.npm.taobao.org/interpret/download/interpret-1.2.0.tgz", - "integrity": "sha1-1QYaYiS+WOgIOYX1AU2EQ1lXYpY=", - "dev": true - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npm.taobao.org/invariant/download/invariant-2.2.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finvariant%2Fdownload%2Finvariant-2.2.4.tgz", - "integrity": "sha1-YQ88ksk1nOHbYW5TgAjSP/NRWOY=", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/invert-kv/download/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" - }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npm.taobao.org/ip/download/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", - "dev": true - }, - "ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npm.taobao.org/ip-regex/download/ip-regex-2.1.0.tgz", - "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", - "dev": true - }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npm.taobao.org/ipaddr.js/download/ipaddr.js-1.9.1.tgz", - "integrity": "sha1-v/OFQ+64mEglB5/zoqjmy9RngbM=", - "dev": true - }, - "is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/is-absolute/download/is-absolute-1.0.0.tgz", - "integrity": "sha1-OV4a6EsR8mrReV5zwXN45IowFXY=", - "dev": true, - "requires": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" - } - }, - "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npm.taobao.org/is-absolute-url/download/is-absolute-url-2.1.0.tgz?cache=0&sync_timestamp=1569736493122&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-absolute-url%2Fdownload%2Fis-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz", - "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-arguments": { - "version": "1.0.4", - "resolved": "https://registry.npm.taobao.org/is-arguments/download/is-arguments-1.0.4.tgz", - "integrity": "sha1-P6+WbHy6D/Q3+zH2JQCC/PBEjPM=", - "dev": true - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npm.taobao.org/is-arrayish/download/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/is-binary-path/download/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-buffer": { - "version": "2.0.4", - "resolved": "https://registry.npm.taobao.org/is-buffer/download/is-buffer-2.0.4.tgz", - "integrity": "sha1-PlcvI8hBGlz9lVfISeNmXgspBiM=" - }, - "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npm.taobao.org/is-callable/download/is-callable-1.1.5.tgz", - "integrity": "sha1-9+RrWWiQRW23Tn9ul2yzJz0G+qs=", - "dev": true - }, - "is-ci": { - "version": "1.2.1", - "resolved": "https://registry.npm.taobao.org/is-ci/download/is-ci-1.2.1.tgz", - "integrity": "sha1-43ecjuF/zPQoSI9uKBGH8uYyhBw=", - "dev": true, - "requires": { - "ci-info": "^1.5.0" - } - }, - "is-color-stop": { - "version": "1.1.0", - "resolved": "https://registry.npm.taobao.org/is-color-stop/download/is-color-stop-1.1.0.tgz", - "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", - "dev": true, - "requires": { - "css-color-names": "^0.0.4", - "hex-color-regex": "^1.1.0", - "hsl-regex": "^1.0.0", - "hsla-regex": "^1.0.0", - "rgb-regex": "^1.0.1", - "rgba-regex": "^1.0.0" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz", - "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npm.taobao.org/is-date-object/download/is-date-object-1.0.2.tgz?cache=0&sync_timestamp=1576729182289&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-date-object%2Fdownload%2Fis-date-object-1.0.2.tgz", - "integrity": "sha1-vac28s2P0G0yhE53Q7+nSUw7/X4=", - "dev": true - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-0.1.6.tgz", - "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-5.1.0.tgz", - "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true } } }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npm.taobao.org/is-directory/download/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", - "dev": true - }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npm.taobao.org/is-dotfile/download/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npm.taobao.org/is-equal-shallow/download/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true, - "requires": { - "is-primitive": "^2.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npm.taobao.org/is-extendable/download/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npm.taobao.org/is-extglob/download/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "is-finite": { - "version": "1.1.0", - "resolved": "https://registry.npm.taobao.org/is-finite/download/is-finite-1.1.0.tgz?cache=0&sync_timestamp=1581061044831&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-finite%2Fdownload%2Fis-finite-1.1.0.tgz", - "integrity": "sha1-kEE1x3+0LAZB1qobzbxNqo2ggvM=", + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/has-symbols/download/has-symbols-1.0.1.tgz?cache=0&sync_timestamp=1573950719586&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhas-symbols%2Fdownload%2Fhas-symbols-1.0.1.tgz", + "integrity": "sha1-n1IUdYpEGWxAbZvXbOv4HsLdMeg=", "dev": true }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "is-generator-fn": { + "has-value": { "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/is-generator-fn/download/is-generator-fn-1.0.0.tgz", - "integrity": "sha1-lp1J4bszKfa7fwkIm+JleLLd1Go=", - "dev": true - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-4.0.1.tgz", - "integrity": "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-lower-case": { - "version": "1.1.3", - "resolved": "https://registry.npm.taobao.org/is-lower-case/download/is-lower-case-1.1.3.tgz", - "integrity": "sha1-fhR75HaNxGbbO/shzGCzHmrWk5M=", + "resolved": "https://registry.npm.taobao.org/has-value/download/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "dev": true, "requires": { - "lower-case": "^1.1.0" + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" } }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/is-number/download/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/has-values/download/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" }, "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz", - "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", - "dev": true - }, "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -8589,1077 +6022,775 @@ } } }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/is-obj/download/is-obj-2.0.0.tgz", - "integrity": "sha1-Rz+wXZc3BeP9liBUUBjKjiLvSYI=", - "dev": true - }, - "is-observable": { - "version": "1.1.0", - "resolved": "https://registry.npm.taobao.org/is-observable/download/is-observable-1.1.0.tgz", - "integrity": "sha1-s+mGyPRN6VCGfKtUA/WjRlAFl14=", - "dev": true, - "requires": { - "symbol-observable": "^1.1.0" - } - }, - "is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npm.taobao.org/is-path-cwd/download/is-path-cwd-2.2.0.tgz", - "integrity": "sha1-Z9Q7gmZKe1GR/ZEZEn6zAASKn9s=", - "dev": true - }, - "is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npm.taobao.org/is-path-in-cwd/download/is-path-in-cwd-2.1.0.tgz?cache=0&sync_timestamp=1562347183080&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-path-in-cwd%2Fdownload%2Fis-path-in-cwd-2.1.0.tgz", - "integrity": "sha1-v+Lcomxp85cmWkAJljYCk1oFOss=", - "dev": true, - "requires": { - "is-path-inside": "^2.1.0" - } - }, - "is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npm.taobao.org/is-path-inside/download/is-path-inside-2.1.0.tgz", - "integrity": "sha1-fJgQWH1lmkDSe8201WFuqwWUlLI=", - "dev": true, - "requires": { - "path-is-inside": "^1.0.2" - } - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npm.taobao.org/is-plain-obj/download/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npm.taobao.org/is-plain-object/download/is-plain-object-2.0.4.tgz", - "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/hash-base/download/hash-base-3.1.0.tgz", + "integrity": "sha1-VcOB2eBuHSmXqIO0o/3f5/DTrzM=", "dev": true, "requires": { - "isobject": "^3.0.1" + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-3.6.0.tgz?cache=0&sync_timestamp=1581622984924&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freadable-stream%2Fdownload%2Freadable-stream-3.6.0.tgz", + "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.2.1.tgz?cache=0&sync_timestamp=1589129103371&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsafe-buffer%2Fdownload%2Fsafe-buffer-5.2.1.tgz", + "integrity": "sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY=", + "dev": true + } } }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npm.taobao.org/is-posix-bracket/download/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true - }, - "is-primitive": { + "hash-sum": { "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/is-primitive/download/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "dev": true - }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npm.taobao.org/is-promise/download/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true - }, - "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npm.taobao.org/is-regex/download/is-regex-1.0.5.tgz", - "integrity": "sha1-OdWJo1i/GJZ/cmlnEguPwa7XTq4=", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/is-regexp/download/is-regexp-1.0.0.tgz", - "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", - "dev": true - }, - "is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/is-relative/download/is-relative-1.0.0.tgz", - "integrity": "sha1-obtpNc6MXboei5dUubLcwCDiJg0=", - "dev": true, - "requires": { - "is-unc-path": "^1.0.0" - } - }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npm.taobao.org/is-resolvable/download/is-resolvable-1.1.0.tgz", - "integrity": "sha1-+xj4fOH+uSUWnJpAfBkxijIG7Yg=", - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npm.taobao.org/is-stream/download/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, - "is-svg": { - "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/is-svg/download/is-svg-3.0.0.tgz", - "integrity": "sha1-kyHb0pwhLlypnE+peUxxS8r6L3U=", - "dev": true, - "requires": { - "html-comment-regex": "^1.1.0" - } - }, - "is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npm.taobao.org/is-symbol/download/is-symbol-1.0.3.tgz?cache=0&sync_timestamp=1574296409833&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-symbol%2Fdownload%2Fis-symbol-1.0.3.tgz", - "integrity": "sha1-OOEBS55jKb4N6dJKQU/XRB7GGTc=", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/is-unc-path/download/is-unc-path-1.0.0.tgz", - "integrity": "sha1-1zHoiY7QkKEsNSrS6u1Qla0yLJ0=", - "dev": true, - "requires": { - "unc-path-regex": "^0.1.2" - } - }, - "is-upper-case": { - "version": "1.1.2", - "resolved": "https://registry.npm.taobao.org/is-upper-case/download/is-upper-case-1.1.2.tgz?cache=0&sync_timestamp=1575601779106&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-upper-case%2Fdownload%2Fis-upper-case-1.1.2.tgz", - "integrity": "sha1-jQsfp+eTOh5YSDYA7H2WYcuvdW8=", - "dev": true, - "requires": { - "upper-case": "^1.1.0" - } - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npm.taobao.org/is-utf8/download/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "is-whitespace": { - "version": "0.3.0", - "resolved": "https://registry.npm.taobao.org/is-whitespace/download/is-whitespace-0.3.0.tgz", - "integrity": "sha1-Fjnssb4DauxppUy7QBz77XEUq38=", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npm.taobao.org/is-windows/download/is-windows-1.0.2.tgz", - "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=", - "dev": true - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npm.taobao.org/is-wsl/download/is-wsl-1.1.0.tgz?cache=0&sync_timestamp=1569219566107&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-wsl%2Fdownload%2Fis-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "resolved": "https://registry.npm.taobao.org/hash-sum/download/hash-sum-2.0.0.tgz", + "integrity": "sha1-gdAbtd6OpKIUrV1urRtSNGCwtFo=", "dev": true }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz?cache=0&sync_timestamp=1562592096220&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fisarray%2Fdownload%2Fisarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "isbinaryfile": { - "version": "3.0.3", - "resolved": "https://registry.npm.taobao.org/isbinaryfile/download/isbinaryfile-3.0.3.tgz?cache=0&sync_timestamp=1578829407263&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fisbinaryfile%2Fdownload%2Fisbinaryfile-3.0.3.tgz", - "integrity": "sha1-XW3vPt6/boyoyunDAYOoBLX4voA=", + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npm.taobao.org/hash.js/download/hash.js-1.1.7.tgz", + "integrity": "sha1-C6vKU46NTuSg+JiNaIZlN6ADz0I=", "dev": true, "requires": { - "buffer-alloc": "^1.2.0" - } - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/isexe/download/isexe-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fisexe%2Fdownload%2Fisexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npm.taobao.org/isobject/download/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "he": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/he/download/he-1.2.0.tgz", + "integrity": "sha1-hK5l+n6vsWX922FWauFLrwVmTw8=", "dev": true }, - "istanbul-api": { - "version": "1.3.7", - "resolved": "https://registry.npm.taobao.org/istanbul-api/download/istanbul-api-1.3.7.tgz", - "integrity": "sha1-qGx3DSsD4R4/d4zXrt2C0nIgkqo=", - "dev": true, - "requires": { - "async": "^2.1.4", - "fileset": "^2.0.2", - "istanbul-lib-coverage": "^1.2.1", - "istanbul-lib-hook": "^1.2.2", - "istanbul-lib-instrument": "^1.10.2", - "istanbul-lib-report": "^1.1.5", - "istanbul-lib-source-maps": "^1.2.6", - "istanbul-reports": "^1.5.1", - "js-yaml": "^3.7.0", - "mkdirp": "^0.5.1", - "once": "^1.4.0" - } + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/hex-color-regex/download/hex-color-regex-1.1.0.tgz", + "integrity": "sha1-TAb8y0YC/iYCs8k9+C1+fb8aio4=", + "dev": true }, - "istanbul-lib-coverage": { - "version": "1.2.1", - "resolved": "https://registry.npm.taobao.org/istanbul-lib-coverage/download/istanbul-lib-coverage-1.2.1.tgz?cache=0&sync_timestamp=1577062400885&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fistanbul-lib-coverage%2Fdownload%2Fistanbul-lib-coverage-1.2.1.tgz", - "integrity": "sha1-zPftzQoLubj3Kf7rCTBHD5r2ZPA=", + "highlight.js": { + "version": "10.4.1", + "resolved": "https://registry.npm.taobao.org/highlight.js/download/highlight.js-10.4.1.tgz", + "integrity": "sha1-1I+89KmXHENhs/lfMCdHr+GdutA=", "dev": true }, - "istanbul-lib-hook": { - "version": "1.2.2", - "resolved": "https://registry.npm.taobao.org/istanbul-lib-hook/download/istanbul-lib-hook-1.2.2.tgz", - "integrity": "sha1-vGvwfxKmQfvxyFOR0Nqo8K6mv4Y=", + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/hmac-drbg/download/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", "dev": true, "requires": { - "append-transform": "^0.4.0" + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" } }, - "istanbul-lib-instrument": { - "version": "1.10.2", - "resolved": "https://registry.npm.taobao.org/istanbul-lib-instrument/download/istanbul-lib-instrument-1.10.2.tgz?cache=0&sync_timestamp=1580741110293&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fistanbul-lib-instrument%2Fdownload%2Fistanbul-lib-instrument-1.10.2.tgz", - "integrity": "sha1-H1XtEKw8R/K93dUweTUSZ1TQqco=", - "dev": true, - "requires": { - "babel-generator": "^6.18.0", - "babel-template": "^6.16.0", - "babel-traverse": "^6.18.0", - "babel-types": "^6.18.0", - "babylon": "^6.18.0", - "istanbul-lib-coverage": "^1.2.1", - "semver": "^5.3.0" - } + "hoopy": { + "version": "0.1.4", + "resolved": "https://registry.npm.taobao.org/hoopy/download/hoopy-0.1.4.tgz", + "integrity": "sha1-YJIH1mEQADOpqUAq096mdzgcGx0=", + "dev": true }, - "istanbul-lib-report": { - "version": "1.1.5", - "resolved": "https://registry.npm.taobao.org/istanbul-lib-report/download/istanbul-lib-report-1.1.5.tgz?cache=0&sync_timestamp=1577062405578&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fistanbul-lib-report%2Fdownload%2Fistanbul-lib-report-1.1.5.tgz", - "integrity": "sha1-8qZX/GKC+WFwqvKB6zCkWPf0Fww=", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^1.2.1", - "mkdirp": "^0.5.1", - "path-parse": "^1.0.5", - "supports-color": "^3.1.2" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-3.2.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npm.taobao.org/hosted-git-info/download/hosted-git-info-2.8.8.tgz", + "integrity": "sha1-dTm9S8Hg4KiVgVouAmJCCxKFhIg=", + "dev": true }, - "istanbul-lib-source-maps": { - "version": "1.2.6", - "resolved": "https://registry.npm.taobao.org/istanbul-lib-source-maps/download/istanbul-lib-source-maps-1.2.6.tgz?cache=0&sync_timestamp=1577062405633&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fistanbul-lib-source-maps%2Fdownload%2Fistanbul-lib-source-maps-1.2.6.tgz", - "integrity": "sha1-N7n/ZhWA+PyhEjJ1LuQuCMZnXY8=", + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npm.taobao.org/hpack.js/download/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", "dev": true, "requires": { - "debug": "^3.1.0", - "istanbul-lib-coverage": "^1.2.1", - "mkdirp": "^0.5.1", - "rimraf": "^2.6.1", - "source-map": "^0.5.3" + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" } }, - "istanbul-reports": { - "version": "1.5.1", - "resolved": "https://registry.npm.taobao.org/istanbul-reports/download/istanbul-reports-1.5.1.tgz", - "integrity": "sha1-l+Tb87UV6MSEyuoV1lJO69P/Tho=", - "dev": true, - "requires": { - "handlebars": "^4.0.3" - } + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/hsl-regex/download/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", + "dev": true }, - "javascript-stringify": { - "version": "1.6.0", - "resolved": "https://registry.npm.taobao.org/javascript-stringify/download/javascript-stringify-1.6.0.tgz?cache=0&sync_timestamp=1572948916758&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjavascript-stringify%2Fdownload%2Fjavascript-stringify-1.6.0.tgz", - "integrity": "sha1-FC0RHzpuPa6PSpr9d9RYVbWpzOM=", + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/hsla-regex/download/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", + "dev": true + }, + "html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/html-comment-regex/download/html-comment-regex-1.1.2.tgz", + "integrity": "sha1-l9RoiutcgYhqNk+qDK0d2hTUM6c=", + "dev": true + }, + "html-entities": { + "version": "1.3.3", + "resolved": "https://registry.npm.taobao.org/html-entities/download/html-entities-1.3.3.tgz?cache=0&sync_timestamp=1607916471106&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhtml-entities%2Fdownload%2Fhtml-entities-1.3.3.tgz", + "integrity": "sha1-PcpjikPufeMW/CMGc5hJEVKtRzY=", "dev": true }, - "jest": { - "version": "23.6.0", - "resolved": "https://registry.npm.taobao.org/jest/download/jest-23.6.0.tgz", - "integrity": "sha1-rVg16SPr9uGeeh11KaQy7f7ngT0=", + "html-minifier": { + "version": "3.5.21", + "resolved": "https://registry.npm.taobao.org/html-minifier/download/html-minifier-3.5.21.tgz", + "integrity": "sha1-0AQOBUcw41TbAIRjWTGUAVIS0gw=", "dev": true, "requires": { - "import-local": "^1.0.0", - "jest-cli": "^23.6.0" + "camel-case": "3.0.x", + "clean-css": "4.2.x", + "commander": "2.17.x", + "he": "1.2.x", + "param-case": "2.1.x", + "relateurl": "0.2.x", + "uglify-js": "3.4.x" }, "dependencies": { - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/arr-diff/download/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/camel-case/download/camel-case-3.0.0.tgz?cache=0&sync_timestamp=1606867359182&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcamel-case%2Fdownload%2Fcamel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", "dev": true, "requires": { - "arr-flatten": "^1.0.1" + "no-case": "^2.2.0", + "upper-case": "^1.1.1" } }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npm.taobao.org/array-unique/download/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npm.taobao.org/commander/download/commander-2.17.1.tgz?cache=0&sync_timestamp=1607933281807&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcommander%2Fdownload%2Fcommander-2.17.1.tgz", + "integrity": "sha1-vXerfebelCBc6sxy8XFtKfIKd78=", "dev": true }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npm.taobao.org/braces/download/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-6.0.5.tgz?cache=0&sync_timestamp=1570439926300&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcross-spawn%2Fdownload%2Fcross-spawn-6.0.5.tgz", - "integrity": "sha1-Sl7Hxk364iw6FBJNus3uhG2Ay8Q=", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/execa/download/execa-1.0.0.tgz?cache=0&sync_timestamp=1576749101742&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexeca%2Fdownload%2Fexeca-1.0.0.tgz", - "integrity": "sha1-xiNqW7TfbW8V6I5/AXeYIWdJ3dg=", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npm.taobao.org/expand-brackets/download/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npm.taobao.org/lower-case/download/lower-case-1.1.4.tgz?cache=0&sync_timestamp=1606867304538&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flower-case%2Fdownload%2Flower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npm.taobao.org/extglob/download/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npm.taobao.org/no-case/download/no-case-2.3.2.tgz", + "integrity": "sha1-YLgTOWvjmz8SiKTB7V0efSi0ZKw=", "dev": true, "requires": { - "is-extglob": "^1.0.0" + "lower-case": "^1.1.1" } }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-4.1.0.tgz", - "integrity": "sha1-wbJVV189wh1Zv8ec09K0axw6VLU=", + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/param-case/download/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", "dev": true, "requires": { - "pump": "^3.0.0" + "no-case": "^2.2.0" } - }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/invert-kv/download/invert-kv-2.0.0.tgz", - "integrity": "sha1-c5P1r6Weyf9fZ6J2INEcIm4+7AI=", - "dev": true - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz", - "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", + } + } + }, + "html-tags": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/html-tags/download/html-tags-3.1.0.tgz", + "integrity": "sha1-e15vfmZen7QfMAB+2eDUHpf7IUA=", + "dev": true + }, + "html-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npm.taobao.org/html-webpack-plugin/download/html-webpack-plugin-3.2.0.tgz?cache=0&sync_timestamp=1613744691795&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhtml-webpack-plugin%2Fdownload%2Fhtml-webpack-plugin-3.2.0.tgz", + "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", + "dev": true, + "requires": { + "html-minifier": "^3.2.3", + "loader-utils": "^0.2.16", + "lodash": "^4.17.3", + "pretty-error": "^2.0.2", + "tapable": "^1.0.0", + "toposort": "^1.0.0", + "util.promisify": "1.0.0" + }, + "dependencies": { + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npm.taobao.org/big.js/download/big.js-3.2.0.tgz", + "integrity": "sha1-pfwpi4G54Nyi5FiCR4S2XFK6WI4=", "dev": true }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/is-extglob/download/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/emojis-list/download/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", "dev": true }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "jest-cli": { - "version": "23.6.0", - "resolved": "https://registry.npm.taobao.org/jest-cli/download/jest-cli-23.6.0.tgz?cache=0&sync_timestamp=1579655155387&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-cli%2Fdownload%2Fjest-cli-23.6.0.tgz", - "integrity": "sha1-YauRd0Qzj0Q+8rqigt3/3WWKXaQ=", - "dev": true, - "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.1.11", - "import-local": "^1.0.0", - "is-ci": "^1.0.10", - "istanbul-api": "^1.3.1", - "istanbul-lib-coverage": "^1.2.0", - "istanbul-lib-instrument": "^1.10.1", - "istanbul-lib-source-maps": "^1.2.4", - "jest-changed-files": "^23.4.2", - "jest-config": "^23.6.0", - "jest-environment-jsdom": "^23.4.0", - "jest-get-type": "^22.1.0", - "jest-haste-map": "^23.6.0", - "jest-message-util": "^23.4.0", - "jest-regex-util": "^23.3.0", - "jest-resolve-dependencies": "^23.6.0", - "jest-runner": "^23.6.0", - "jest-runtime": "^23.6.0", - "jest-snapshot": "^23.6.0", - "jest-util": "^23.4.0", - "jest-validate": "^23.6.0", - "jest-watcher": "^23.4.0", - "jest-worker": "^23.2.0", - "micromatch": "^2.3.11", - "node-notifier": "^5.2.1", - "prompts": "^0.1.9", - "realpath-native": "^1.0.0", - "rimraf": "^2.5.4", - "slash": "^1.0.0", - "string-length": "^2.0.0", - "strip-ansi": "^4.0.0", - "which": "^1.2.12", - "yargs": "^11.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/lcid/download/lcid-2.0.0.tgz", - "integrity": "sha1-bvXS32DlL4LrIopMNz6NHzlyU88=", - "dev": true, - "requires": { - "invert-kv": "^2.0.0" - } - }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npm.taobao.org/mem/download/mem-4.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmem%2Fdownload%2Fmem-4.3.0.tgz", - "integrity": "sha1-Rhr0l7xK4JYIzbLmDu+2m/90QXg=", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npm.taobao.org/micromatch/download/micromatch-2.3.11.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmicromatch%2Fdownload%2Fmicromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-2.1.0.tgz", - "integrity": "sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=", + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npm.taobao.org/json5/download/json5-0.5.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson5%2Fdownload%2Fjson5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", "dev": true }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", "dev": true, "requires": { - "remove-trailing-separator": "^1.0.1" + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" } }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npm.taobao.org/os-locale/download/os-locale-3.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fos-locale%2Fdownload%2Fos-locale-3.1.0.tgz", - "integrity": "sha1-qAKm7hfyTBBIOrmTVxnO9O0Wvxo=", + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/util.promisify/download/util.promisify-1.0.0.tgz?cache=0&sync_timestamp=1610159858516&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Futil.promisify%2Fdownload%2Futil.promisify-1.0.0.tgz", + "integrity": "sha1-RA9xZaRZyaFtwUXrjnLzVocJcDA=", "dev": true, "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" } - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/slash/download/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + } + } + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npm.taobao.org/htmlparser2/download/htmlparser2-3.10.1.tgz?cache=0&sync_timestamp=1607394302039&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhtmlparser2%2Fdownload%2Fhtmlparser2-3.10.1.tgz", + "integrity": "sha1-vWedw/WYl7ajS7EHSchVu1OpOS8=", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/entities/download/entities-1.1.2.tgz?cache=0&sync_timestamp=1602898797807&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fentities%2Fdownload%2Fentities-1.1.2.tgz", + "integrity": "sha1-vfpzUplmTfr9NFKe1PhSKidf6lY=", "dev": true }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz?cache=0&sync_timestamp=1573280518303&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "yargs": { - "version": "11.1.1", - "resolved": "https://registry.npm.taobao.org/yargs/download/yargs-11.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs%2Fdownload%2Fyargs-11.1.1.tgz", - "integrity": "sha1-UFLv40RqTfXtZpyZWIbMDxNwJ2Y=", - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.1.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" - } - }, - "yargs-parser": { - "version": "9.0.2", - "resolved": "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-9.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs-parser%2Fdownload%2Fyargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-3.6.0.tgz?cache=0&sync_timestamp=1581622984924&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freadable-stream%2Fdownload%2Freadable-stream-3.6.0.tgz", + "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=", "dev": true, "requires": { - "camelcase": "^4.1.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } } } }, - "jest-changed-files": { - "version": "23.4.2", - "resolved": "https://registry.npm.taobao.org/jest-changed-files/download/jest-changed-files-23.4.2.tgz", - "integrity": "sha1-Hu1og3DNXuuv5K6T00uztklo/oM=", + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npm.taobao.org/http-deceiver/download/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npm.taobao.org/http-errors/download/http-errors-1.7.2.tgz", + "integrity": "sha1-T1ApzxMjnzEDblsuVSkrz7zIXI8=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finherits%2Fdownload%2Finherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npm.taobao.org/http-proxy/download/http-proxy-1.18.1.tgz?cache=0&sync_timestamp=1589778321455&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-proxy%2Fdownload%2Fhttp-proxy-1.18.1.tgz", + "integrity": "sha1-QBVB8FNIhLv5UmAzTnL4juOXZUk=", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npm.taobao.org/http-proxy-middleware/download/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha1-GDx9xKoUeRUDBkmMIQza+WCApDo=", + "dev": true, + "requires": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/http-signature/download/http-signature-1.2.0.tgz?cache=0&sync_timestamp=1600868613104&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-signature%2Fdownload%2Fhttp-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/https-browserify/download/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/human-signals/download/human-signals-1.1.1.tgz", + "integrity": "sha1-xbHNFPUK6uCatsWf5jujOV/k36M=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.24.tgz", + "integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/icss-replace-symbols/download/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "dev": true + }, + "icss-utils": { + "version": "4.1.1", + "resolved": "https://registry.npm.taobao.org/icss-utils/download/icss-utils-4.1.1.tgz?cache=0&sync_timestamp=1605801267950&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ficss-utils%2Fdownload%2Ficss-utils-4.1.1.tgz", + "integrity": "sha1-IRcLU3ie4nRHwvR91oMIFAP5pGc=", + "dev": true, + "requires": { + "postcss": "^7.0.14" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npm.taobao.org/ieee754/download/ieee754-1.2.1.tgz?cache=0&sync_timestamp=1603838209136&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fieee754%2Fdownload%2Fieee754-1.2.1.tgz", + "integrity": "sha1-jrehCmP/8l0VpXsAFYbRd9Gw01I=", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npm.taobao.org/iferr/download/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npm.taobao.org/ignore/download/ignore-4.0.6.tgz", + "integrity": "sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw=", + "dev": true + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npm.taobao.org/image-size/download/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "dev": true + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/import-cwd/download/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/import-fresh/download/import-fresh-2.0.0.tgz?cache=0&sync_timestamp=1604255567620&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fimport-fresh%2Fdownload%2Fimport-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/import-from/download/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", "dev": true, "requires": { - "throat": "^4.0.0" + "resolve-from": "^3.0.0" } }, - "jest-config": { - "version": "23.6.0", - "resolved": "https://registry.npm.taobao.org/jest-config/download/jest-config-23.6.0.tgz?cache=0&sync_timestamp=1579655052078&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-config%2Fdownload%2Fjest-config-23.6.0.tgz", - "integrity": "sha1-+CVGqQreLYxwJvv2rFIH/CL46x0=", + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/import-local/download/import-local-2.0.0.tgz", + "integrity": "sha1-VQcL44pZk88Y72236WH1vuXFoJ0=", "dev": true, "requires": { - "babel-core": "^6.0.0", - "babel-jest": "^23.6.0", - "chalk": "^2.0.1", - "glob": "^7.1.1", - "jest-environment-jsdom": "^23.4.0", - "jest-environment-node": "^23.4.0", - "jest-get-type": "^22.1.0", - "jest-jasmine2": "^23.6.0", - "jest-regex-util": "^23.3.0", - "jest-resolve": "^23.6.0", - "jest-util": "^23.4.0", - "jest-validate": "^23.6.0", - "micromatch": "^2.3.11", - "pretty-format": "^23.6.0" + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" }, "dependencies": { - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/arr-diff/download/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npm.taobao.org/array-unique/download/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "babel-core": { - "version": "6.26.3", - "resolved": "https://registry.npm.taobao.org/babel-core/download/babel-core-6.26.3.tgz", - "integrity": "sha1-suLwnjQtDwyI4vAuBneUEl51wgc=", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.1", - "debug": "^2.6.9", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.8", - "slash": "^1.0.0", - "source-map": "^0.5.7" - } - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npm.taobao.org/braces/download/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz?cache=0&sync_timestamp=1597169795121&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-up%2Fdownload%2Ffind-up-3.0.0.tgz", + "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=", "dev": true, "requires": { - "ms": "2.0.0" + "locate-path": "^3.0.0" } }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npm.taobao.org/expand-brackets/download/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-3.0.0.tgz", + "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=", "dev": true, "requires": { - "is-posix-bracket": "^0.1.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" } }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npm.taobao.org/extglob/download/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-3.0.0.tgz?cache=0&sync_timestamp=1597081369770&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-locate%2Fdownload%2Fp-locate-3.0.0.tgz", + "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=", "dev": true, "requires": { - "is-extglob": "^1.0.0" + "p-limit": "^2.0.0" } }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz", - "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", - "dev": true - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/is-extglob/download/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npm.taobao.org/micromatch/download/micromatch-2.3.11.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmicromatch%2Fdownload%2Fmicromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-3.0.0.tgz", + "integrity": "sha1-J0kCDyOe2ZCIGx9xIQ1R62UjvqM=", "dev": true, "requires": { - "remove-trailing-separator": "^1.0.1" + "find-up": "^3.0.0" } - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/slash/download/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true } } }, - "jest-diff": { - "version": "23.6.0", - "resolved": "https://registry.npm.taobao.org/jest-diff/download/jest-diff-23.6.0.tgz?cache=0&sync_timestamp=1579655156028&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-diff%2Fdownload%2Fjest-diff-23.6.0.tgz", - "integrity": "sha1-FQDz8W6FC7PXEjNAgIm+CZ9hDH0=", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "diff": "^3.2.0", - "jest-get-type": "^22.1.0", - "pretty-format": "^23.6.0" - } + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npm.taobao.org/imurmurhash/download/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true }, - "jest-docblock": { - "version": "23.2.0", - "resolved": "https://registry.npm.taobao.org/jest-docblock/download/jest-docblock-23.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-docblock%2Fdownload%2Fjest-docblock-23.2.0.tgz", - "integrity": "sha1-8IXh8YVI2Z/dabICB+b9VdkTg6c=", - "dev": true, - "requires": { - "detect-newline": "^2.1.0" - } + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/indent-string/download/indent-string-4.0.0.tgz", + "integrity": "sha1-Yk+PRJfWGbLZdoUx1Y9BIoVNclE=", + "dev": true }, - "jest-each": { - "version": "23.6.0", - "resolved": "https://registry.npm.taobao.org/jest-each/download/jest-each-23.6.0.tgz", - "integrity": "sha1-ugw6gqgFQ4cBYTnHM6BSQtPXFXU=", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "pretty-format": "^23.6.0" - } + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/indexes-of/download/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true }, - "jest-environment-jsdom": { - "version": "23.4.0", - "resolved": "https://registry.npm.taobao.org/jest-environment-jsdom/download/jest-environment-jsdom-23.4.0.tgz?cache=0&sync_timestamp=1579655041281&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-environment-jsdom%2Fdownload%2Fjest-environment-jsdom-23.4.0.tgz", - "integrity": "sha1-BWp5UrP+pROsYqFAosNox52eYCM=", - "dev": true, - "requires": { - "jest-mock": "^23.2.0", - "jest-util": "^23.4.0", - "jsdom": "^11.5.1" - } + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/infer-owner/download/infer-owner-1.0.4.tgz", + "integrity": "sha1-xM78qo5RBRwqQLos6KPScpWvlGc=", + "dev": true }, - "jest-environment-node": { - "version": "23.4.0", - "resolved": "https://registry.npm.taobao.org/jest-environment-node/download/jest-environment-node-23.4.0.tgz", - "integrity": "sha1-V+gO0IQd6jAxZ8zozXlSHeuv3hA=", + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { - "jest-mock": "^23.2.0", - "jest-util": "^23.4.0" + "once": "^1.3.0", + "wrappy": "1" } }, - "jest-get-type": { - "version": "22.4.3", - "resolved": "https://registry.npm.taobao.org/jest-get-type/download/jest-get-type-22.4.3.tgz", - "integrity": "sha1-46hQTYR5NC3UQgI2syKGnxiQDOQ=", + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finherits%2Fdownload%2Finherits-2.0.4.tgz", + "integrity": "sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=", "dev": true }, - "jest-haste-map": { - "version": "23.6.0", - "resolved": "https://registry.npm.taobao.org/jest-haste-map/download/jest-haste-map-23.6.0.tgz?cache=0&sync_timestamp=1579654873769&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-haste-map%2Fdownload%2Fjest-haste-map-23.6.0.tgz", - "integrity": "sha1-Lj65l4FMppbWKv2z8lKfW7yTXhY=", - "dev": true, - "requires": { - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.1.11", - "invariant": "^2.2.4", - "jest-docblock": "^23.2.0", - "jest-serializer": "^23.0.1", - "jest-worker": "^23.2.0", - "micromatch": "^2.3.11", - "sane": "^2.0.0" + "inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npm.taobao.org/inquirer/download/inquirer-7.3.3.tgz", + "integrity": "sha1-BNF2sq8Er8FXqD/XwQDpjuCq0AM=", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" }, "dependencies": { - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/arr-diff/download/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-4.3.0.tgz?cache=0&sync_timestamp=1606792371412&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-4.3.0.tgz", + "integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=", "dev": true, "requires": { - "arr-flatten": "^1.0.1" + "color-convert": "^2.0.1" } }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npm.taobao.org/array-unique/download/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npm.taobao.org/braces/download/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-4.1.0.tgz?cache=0&sync_timestamp=1591687076871&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-4.1.0.tgz", + "integrity": "sha1-ThSHCmGNni7dl92DRf2dncMVZGo=", "dev": true, "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npm.taobao.org/expand-brackets/download/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/cli-cursor/download/cli-cursor-3.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcli-cursor%2Fdownload%2Fcli-cursor-3.1.0.tgz", + "integrity": "sha1-JkMFp65JDR0Dvwybp8kl0XU68wc=", "dev": true, "requires": { - "is-posix-bracket": "^0.1.0" + "restore-cursor": "^3.1.0" } }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npm.taobao.org/extglob/download/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz", + "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=", "dev": true, "requires": { - "is-extglob": "^1.0.0" + "color-name": "~1.1.4" } }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz", - "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz", + "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=", "dev": true }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/is-extglob/download/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz", + "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=", "dev": true }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-2.1.0.tgz", + "integrity": "sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=", + "dev": true + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npm.taobao.org/onetime/download/onetime-5.1.2.tgz", + "integrity": "sha1-0Oluu1awdHbfHdnEgG5SN5hcpF4=", "dev": true, "requires": { - "is-extglob": "^1.0.0" + "mimic-fn": "^2.1.0" } }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/restore-cursor/download/restore-cursor-3.1.0.tgz", + "integrity": "sha1-OfZ8VLOnpYzqUjbZXPADQjljH34=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" } }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npm.taobao.org/micromatch/download/micromatch-2.3.11.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmicromatch%2Fdownload%2Fmicromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-7.2.0.tgz?cache=0&sync_timestamp=1608033349725&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-7.2.0.tgz", + "integrity": "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=", "dev": true, "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" + "has-flag": "^4.0.0" } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + } + } + }, + "internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npm.taobao.org/internal-ip/download/internal-ip-4.3.0.tgz?cache=0&sync_timestamp=1605885653768&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finternal-ip%2Fdownload%2Finternal-ip-4.3.0.tgz", + "integrity": "sha1-hFRSuq2dLKO2nGNaE3rLmg2tCQc=", + "dev": true, + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + }, + "dependencies": { + "default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npm.taobao.org/default-gateway/download/default-gateway-4.2.0.tgz", + "integrity": "sha1-FnEEx1AMIRX23WmwpTa7jtcgVSs=", + "dev": true, + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } + } + } + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npm.taobao.org/ip/download/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/ip-regex/download/ip-regex-2.1.0.tgz?cache=0&sync_timestamp=1601334312409&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fip-regex%2Fdownload%2Fip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npm.taobao.org/ipaddr.js/download/ipaddr.js-1.9.1.tgz", + "integrity": "sha1-v/OFQ+64mEglB5/zoqjmy9RngbM=", + "dev": true + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/is-absolute-url/download/is-absolute-url-2.1.0.tgz?cache=0&sync_timestamp=1569736493122&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-absolute-url%2Fdownload%2Fis-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "remove-trailing-separator": "^1.0.1" + "is-buffer": "^1.1.5" } } } }, - "jest-jasmine2": { - "version": "23.6.0", - "resolved": "https://registry.npm.taobao.org/jest-jasmine2/download/jest-jasmine2-23.6.0.tgz", - "integrity": "sha1-hA6Tf4SKbIY43yQ2CrhpzHGFkuA=", + "is-arguments": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/is-arguments/download/is-arguments-1.1.0.tgz?cache=0&sync_timestamp=1607117383813&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-arguments%2Fdownload%2Fis-arguments-1.1.0.tgz", + "integrity": "sha1-YjUwMd++4HzrNGVqa95Z7+yujdk=", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npm.taobao.org/is-arrayish/download/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/is-binary-path/download/is-binary-path-2.1.0.tgz", + "integrity": "sha1-6h9/O4DwZCNug0cPhsCcJU+0Wwk=", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz?cache=0&sync_timestamp=1604429388528&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-buffer%2Fdownload%2Fis-buffer-1.1.6.tgz", + "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", + "dev": true + }, + "is-callable": { + "version": "1.2.2", + "resolved": "https://registry.npm.taobao.org/is-callable/download/is-callable-1.2.2.tgz", + "integrity": "sha1-x8ZxXNItTdtI0+GZcCI6zquwgNk=", + "dev": true + }, + "is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npm.taobao.org/is-ci/download/is-ci-1.2.1.tgz", + "integrity": "sha1-43ecjuF/zPQoSI9uKBGH8uYyhBw=", "dev": true, "requires": { - "babel-traverse": "^6.0.0", - "chalk": "^2.0.1", - "co": "^4.6.0", - "expect": "^23.6.0", - "is-generator-fn": "^1.0.0", - "jest-diff": "^23.6.0", - "jest-each": "^23.6.0", - "jest-matcher-utils": "^23.6.0", - "jest-message-util": "^23.4.0", - "jest-snapshot": "^23.6.0", - "jest-util": "^23.4.0", - "pretty-format": "^23.6.0" + "ci-info": "^1.5.0" } }, - "jest-leak-detector": { - "version": "23.6.0", - "resolved": "https://registry.npm.taobao.org/jest-leak-detector/download/jest-leak-detector-23.6.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-leak-detector%2Fdownload%2Fjest-leak-detector-23.6.0.tgz", - "integrity": "sha1-5CMP1CzzgaGhlxI3rVaJfefhcd4=", + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/is-color-stop/download/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", "dev": true, "requires": { - "pretty-format": "^23.6.0" + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" } }, - "jest-matcher-utils": { - "version": "23.6.0", - "resolved": "https://registry.npm.taobao.org/jest-matcher-utils/download/jest-matcher-utils-23.6.0.tgz?cache=0&sync_timestamp=1579655064075&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-matcher-utils%2Fdownload%2Fjest-matcher-utils-23.6.0.tgz", - "integrity": "sha1-cmvOoMUpQmGnQXr7baMYa0uMrIA=", + "is-core-module": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/is-core-module/download/is-core-module-2.2.0.tgz?cache=0&sync_timestamp=1606411666495&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-core-module%2Fdownload%2Fis-core-module-2.2.0.tgz", + "integrity": "sha1-lwN+89UiJNhRY/VZeytj2a/tmBo=", "dev": true, "requires": { - "chalk": "^2.0.1", - "jest-get-type": "^22.1.0", - "pretty-format": "^23.6.0" + "has": "^1.0.3" } }, - "jest-message-util": { - "version": "23.4.0", - "resolved": "https://registry.npm.taobao.org/jest-message-util/download/jest-message-util-23.4.0.tgz?cache=0&sync_timestamp=1579655040577&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-message-util%2Fdownload%2Fjest-message-util-23.4.0.tgz", - "integrity": "sha1-F2EMUJQjSVCNAaPR4L2iwHkIap8=", + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0-beta.35", - "chalk": "^2.0.1", - "micromatch": "^2.3.11", - "slash": "^1.0.0", - "stack-utils": "^1.0.1" + "kind-of": "^3.0.2" }, "dependencies": { - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/arr-diff/download/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npm.taobao.org/array-unique/download/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npm.taobao.org/braces/download/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npm.taobao.org/expand-brackets/download/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npm.taobao.org/extglob/download/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz", - "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", - "dev": true - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/is-extglob/download/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", @@ -9668,272 +6799,88 @@ "requires": { "is-buffer": "^1.1.5" } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npm.taobao.org/micromatch/download/micromatch-2.3.11.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmicromatch%2Fdownload%2Fmicromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/slash/download/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true } } }, - "jest-mock": { - "version": "23.2.0", - "resolved": "https://registry.npm.taobao.org/jest-mock/download/jest-mock-23.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-mock%2Fdownload%2Fjest-mock-23.2.0.tgz", - "integrity": "sha1-rRxg8p6HGdR8JuETgJi20YsmETQ=", - "dev": true - }, - "jest-regex-util": { - "version": "23.3.0", - "resolved": "https://registry.npm.taobao.org/jest-regex-util/download/jest-regex-util-23.3.0.tgz?cache=0&sync_timestamp=1579654911019&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-regex-util%2Fdownload%2Fjest-regex-util-23.3.0.tgz", - "integrity": "sha1-X4ZylUfCeFxAAs6qj4Sf6MpHG8U=", + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/is-date-object/download/is-date-object-1.0.2.tgz?cache=0&sync_timestamp=1576729182289&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-date-object%2Fdownload%2Fis-date-object-1.0.2.tgz", + "integrity": "sha1-vac28s2P0G0yhE53Q7+nSUw7/X4=", "dev": true }, - "jest-resolve": { - "version": "23.6.0", - "resolved": "https://registry.npm.taobao.org/jest-resolve/download/jest-resolve-23.6.0.tgz?cache=0&sync_timestamp=1579655061407&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-resolve%2Fdownload%2Fjest-resolve-23.6.0.tgz", - "integrity": "sha1-zx0aJM5+57I9ZhwzuiFQ866/oK4=", + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-0.1.6.tgz", + "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", "dev": true, "requires": { - "browser-resolve": "^1.11.3", - "chalk": "^2.0.1", - "realpath-native": "^1.0.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-5.1.0.tgz", + "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=", + "dev": true + } } }, - "jest-resolve-dependencies": { - "version": "23.6.0", - "resolved": "https://registry.npm.taobao.org/jest-resolve-dependencies/download/jest-resolve-dependencies-23.6.0.tgz", - "integrity": "sha1-tFJq8kyFQNmj+rECwVCBz1Cbcj0=", - "dev": true, - "requires": { - "jest-regex-util": "^23.3.0", - "jest-snapshot": "^23.6.0" - } + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npm.taobao.org/is-directory/download/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-docker": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/is-docker/download/is-docker-2.1.1.tgz", + "integrity": "sha1-QSWojkTkUNOE4JBH7eca3C0UQVY=", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npm.taobao.org/is-extendable/download/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/is-extglob/download/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0=", + "dev": true }, - "jest-runner": { - "version": "23.6.0", - "resolved": "https://registry.npm.taobao.org/jest-runner/download/jest-runner-23.6.0.tgz", - "integrity": "sha1-OJS9IZ/8Pzy5TcSKQXCi5vI6Wjg=", + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-4.0.1.tgz", + "integrity": "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=", "dev": true, "requires": { - "exit": "^0.1.2", - "graceful-fs": "^4.1.11", - "jest-config": "^23.6.0", - "jest-docblock": "^23.2.0", - "jest-haste-map": "^23.6.0", - "jest-jasmine2": "^23.6.0", - "jest-leak-detector": "^23.6.0", - "jest-message-util": "^23.4.0", - "jest-runtime": "^23.6.0", - "jest-util": "^23.4.0", - "jest-worker": "^23.2.0", - "source-map-support": "^0.5.6", - "throat": "^4.0.0" + "is-extglob": "^2.1.1" } }, - "jest-runtime": { - "version": "23.6.0", - "resolved": "https://registry.npm.taobao.org/jest-runtime/download/jest-runtime-23.6.0.tgz", - "integrity": "sha1-BZ5YyKtEWRfNDg2ErCumjejyMII=", + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/is-negative-zero/download/is-negative-zero-2.0.1.tgz?cache=0&sync_timestamp=1607125693555&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-negative-zero%2Fdownload%2Fis-negative-zero-2.0.1.tgz", + "integrity": "sha1-PedGwY3aIxkkGlNnWQjY92bxHCQ=", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/is-number/download/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "babel-core": "^6.0.0", - "babel-plugin-istanbul": "^4.1.6", - "chalk": "^2.0.1", - "convert-source-map": "^1.4.0", - "exit": "^0.1.2", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.1.11", - "jest-config": "^23.6.0", - "jest-haste-map": "^23.6.0", - "jest-message-util": "^23.4.0", - "jest-regex-util": "^23.3.0", - "jest-resolve": "^23.6.0", - "jest-snapshot": "^23.6.0", - "jest-util": "^23.4.0", - "jest-validate": "^23.6.0", - "micromatch": "^2.3.11", - "realpath-native": "^1.0.0", - "slash": "^1.0.0", - "strip-bom": "3.0.0", - "write-file-atomic": "^2.1.0", - "yargs": "^11.0.0" + "kind-of": "^3.0.2" }, "dependencies": { - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/arr-diff/download/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npm.taobao.org/array-unique/download/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "babel-core": { - "version": "6.26.3", - "resolved": "https://registry.npm.taobao.org/babel-core/download/babel-core-6.26.3.tgz", - "integrity": "sha1-suLwnjQtDwyI4vAuBneUEl51wgc=", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.1", - "debug": "^2.6.9", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.8", - "slash": "^1.0.0", - "source-map": "^0.5.7" - } - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npm.taobao.org/braces/download/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-6.0.5.tgz?cache=0&sync_timestamp=1570439926300&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcross-spawn%2Fdownload%2Fcross-spawn-6.0.5.tgz", - "integrity": "sha1-Sl7Hxk364iw6FBJNus3uhG2Ay8Q=", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/execa/download/execa-1.0.0.tgz?cache=0&sync_timestamp=1576749101742&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexeca%2Fdownload%2Fexeca-1.0.0.tgz", - "integrity": "sha1-xiNqW7TfbW8V6I5/AXeYIWdJ3dg=", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npm.taobao.org/expand-brackets/download/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npm.taobao.org/extglob/download/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-4.1.0.tgz", - "integrity": "sha1-wbJVV189wh1Zv8ec09K0axw6VLU=", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/invert-kv/download/invert-kv-2.0.0.tgz", - "integrity": "sha1-c5P1r6Weyf9fZ6J2INEcIm4+7AI=", - "dev": true - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz", - "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", - "dev": true - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/is-extglob/download/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", @@ -9942,272 +6889,187 @@ "requires": { "is-buffer": "^1.1.5" } - }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/lcid/download/lcid-2.0.0.tgz", - "integrity": "sha1-bvXS32DlL4LrIopMNz6NHzlyU88=", - "dev": true, - "requires": { - "invert-kv": "^2.0.0" - } - }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npm.taobao.org/mem/download/mem-4.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmem%2Fdownload%2Fmem-4.3.0.tgz", - "integrity": "sha1-Rhr0l7xK4JYIzbLmDu+2m/90QXg=", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npm.taobao.org/micromatch/download/micromatch-2.3.11.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmicromatch%2Fdownload%2Fmicromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-2.1.0.tgz", - "integrity": "sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=", - "dev": true - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npm.taobao.org/os-locale/download/os-locale-3.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fos-locale%2Fdownload%2Fos-locale-3.1.0.tgz", - "integrity": "sha1-qAKm7hfyTBBIOrmTVxnO9O0Wvxo=", - "dev": true, - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/slash/download/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/strip-bom/download/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, - "yargs": { - "version": "11.1.1", - "resolved": "https://registry.npm.taobao.org/yargs/download/yargs-11.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs%2Fdownload%2Fyargs-11.1.1.tgz", - "integrity": "sha1-UFLv40RqTfXtZpyZWIbMDxNwJ2Y=", - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.1.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" - } - }, - "yargs-parser": { - "version": "9.0.2", - "resolved": "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-9.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs-parser%2Fdownload%2Fyargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", - "dev": true, - "requires": { - "camelcase": "^4.1.0" - } } } }, - "jest-serializer": { - "version": "23.0.1", - "resolved": "https://registry.npm.taobao.org/jest-serializer/download/jest-serializer-23.0.1.tgz", - "integrity": "sha1-o3dq6zEekP6D+rnlM+hRAr0WQWU=", + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/is-obj/download/is-obj-2.0.0.tgz", + "integrity": "sha1-Rz+wXZc3BeP9liBUUBjKjiLvSYI=", + "dev": true + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/is-path-cwd/download/is-path-cwd-2.2.0.tgz", + "integrity": "sha1-Z9Q7gmZKe1GR/ZEZEn6zAASKn9s=", "dev": true }, - "jest-serializer-vue": { - "version": "2.0.2", - "resolved": "https://registry.npm.taobao.org/jest-serializer-vue/download/jest-serializer-vue-2.0.2.tgz", - "integrity": "sha1-sjjvKGNX7GtIBCG9RxRQUJh9WbM=", + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/is-path-in-cwd/download/is-path-in-cwd-2.1.0.tgz?cache=0&sync_timestamp=1562347183080&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-path-in-cwd%2Fdownload%2Fis-path-in-cwd-2.1.0.tgz", + "integrity": "sha1-v+Lcomxp85cmWkAJljYCk1oFOss=", "dev": true, "requires": { - "pretty": "2.0.0" + "is-path-inside": "^2.1.0" } }, - "jest-snapshot": { - "version": "23.6.0", - "resolved": "https://registry.npm.taobao.org/jest-snapshot/download/jest-snapshot-23.6.0.tgz?cache=0&sync_timestamp=1579654884339&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-snapshot%2Fdownload%2Fjest-snapshot-23.6.0.tgz", - "integrity": "sha1-+cJiXRsYrNoB7C0rgmwM5YpaoXo=", + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/is-path-inside/download/is-path-inside-2.1.0.tgz", + "integrity": "sha1-fJgQWH1lmkDSe8201WFuqwWUlLI=", "dev": true, "requires": { - "babel-types": "^6.0.0", - "chalk": "^2.0.1", - "jest-diff": "^23.6.0", - "jest-matcher-utils": "^23.6.0", - "jest-message-util": "^23.4.0", - "jest-resolve": "^23.6.0", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^23.6.0", - "semver": "^5.5.0" + "path-is-inside": "^1.0.2" } }, - "jest-transform-stub": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/jest-transform-stub/download/jest-transform-stub-2.0.0.tgz", - "integrity": "sha1-GQGLCFH3VolyFHpdYAdLVfAiWn0=", + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/is-plain-obj/download/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", "dev": true }, - "jest-util": { - "version": "23.4.0", - "resolved": "https://registry.npm.taobao.org/jest-util/download/jest-util-23.4.0.tgz", - "integrity": "sha1-TQY8uSe68KI4Mf9hvsLLv0l5NWE=", + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npm.taobao.org/is-plain-object/download/is-plain-object-2.0.4.tgz?cache=0&sync_timestamp=1600349132080&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-plain-object%2Fdownload%2Fis-plain-object-2.0.4.tgz", + "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", "dev": true, "requires": { - "callsites": "^2.0.0", - "chalk": "^2.0.1", - "graceful-fs": "^4.1.11", - "is-ci": "^1.0.10", - "jest-message-util": "^23.4.0", - "mkdirp": "^0.5.1", - "slash": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/callsites/download/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/slash/download/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", - "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", - "dev": true - } + "isobject": "^3.0.1" } }, - "jest-validate": { - "version": "23.6.0", - "resolved": "https://registry.npm.taobao.org/jest-validate/download/jest-validate-23.6.0.tgz?cache=0&sync_timestamp=1579654875817&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-validate%2Fdownload%2Fjest-validate-23.6.0.tgz", - "integrity": "sha1-NnYfmdHtM/zUJbTkxVldYrZZdHQ=", + "is-regex": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/is-regex/download/is-regex-1.1.1.tgz", + "integrity": "sha1-xvmKrMVG9s7FRooHt7FTq1ZKV7k=", "dev": true, "requires": { - "chalk": "^2.0.1", - "jest-get-type": "^22.1.0", - "leven": "^2.1.0", - "pretty-format": "^23.6.0" + "has-symbols": "^1.0.1" } }, - "jest-watcher": { - "version": "23.4.0", - "resolved": "https://registry.npm.taobao.org/jest-watcher/download/jest-watcher-23.4.0.tgz", - "integrity": "sha1-0uKM50+NrWxq/JIrksq+9u0FyRw=", + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/is-resolvable/download/is-resolvable-1.1.0.tgz", + "integrity": "sha1-+xj4fOH+uSUWnJpAfBkxijIG7Yg=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/is-stream/download/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-svg": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/is-svg/download/is-svg-3.0.0.tgz", + "integrity": "sha1-kyHb0pwhLlypnE+peUxxS8r6L3U=", "dev": true, "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "string-length": "^2.0.0" + "html-comment-regex": "^1.1.0" } }, - "jest-worker": { - "version": "23.2.0", - "resolved": "https://registry.npm.taobao.org/jest-worker/download/jest-worker-23.2.0.tgz?cache=0&sync_timestamp=1579655017974&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-worker%2Fdownload%2Fjest-worker-23.2.0.tgz", - "integrity": "sha1-+vcGqNo2+uYOsmlXJX+ntdjqArk=", + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/is-symbol/download/is-symbol-1.0.3.tgz?cache=0&sync_timestamp=1574296409833&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-symbol%2Fdownload%2Fis-symbol-1.0.3.tgz", + "integrity": "sha1-OOEBS55jKb4N6dJKQU/XRB7GGTc=", "dev": true, "requires": { - "merge-stream": "^1.0.1" + "has-symbols": "^1.0.1" } }, - "jquery": { - "version": "3.4.1", - "resolved": "https://registry.npm.taobao.org/jquery/download/jquery-3.4.1.tgz", - "integrity": "sha1-cU8fjZ3eS9+lV2S6N+8hRjDYDvI=" + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/is-windows/download/is-windows-1.0.2.tgz", + "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/is-wsl/download/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true }, - "js-base64": { - "version": "2.5.2", - "resolved": "https://registry.npm.taobao.org/js-base64/download/js-base64-2.5.2.tgz", - "integrity": "sha1-MTtidN2nGPcU0AszMLuubjjpAgk=", + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz?cache=0&sync_timestamp=1562592096220&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fisarray%2Fdownload%2Fisarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/isexe/download/isexe-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fisexe%2Fdownload%2Fisexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/isobject/download/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "javascript-stringify": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/javascript-stringify/download/javascript-stringify-2.0.1.tgz?cache=0&sync_timestamp=1572948916758&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjavascript-stringify%2Fdownload%2Fjavascript-stringify-2.0.1.tgz", + "integrity": "sha1-bvNYA1MQ411mfGde1j0+t8GqGeU=", "dev": true }, - "js-beautify": { - "version": "1.10.3", - "resolved": "https://registry.npm.taobao.org/js-beautify/download/js-beautify-1.10.3.tgz", - "integrity": "sha1-xz+hDPadPfpS2O1iTyPGTApqlME=", + "jest-worker": { + "version": "25.5.0", + "resolved": "https://registry.npm.taobao.org/jest-worker/download/jest-worker-25.5.0.tgz", + "integrity": "sha1-JhHQcbec6g9D7lej0RhZOsFUfbE=", "dev": true, "requires": { - "config-chain": "^1.1.12", - "editorconfig": "^0.15.3", - "glob": "^7.1.3", - "mkdirp": "~0.5.1", - "nopt": "~4.0.1" + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz", + "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-7.2.0.tgz?cache=0&sync_timestamp=1608033349725&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-7.2.0.tgz", + "integrity": "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, - "js-cookie": { - "version": "2.2.0", - "resolved": "https://registry.npm.taobao.org/js-cookie/download/js-cookie-2.2.0.tgz", - "integrity": "sha1-Gywnmm7s44ChIWi5JIUmWzWx7/s=" - }, - "js-levenshtein": { - "version": "1.1.6", - "resolved": "https://registry.npm.taobao.org/js-levenshtein/download/js-levenshtein-1.1.6.tgz", - "integrity": "sha1-xs7ljrNVA3LfjeuF+tXOZs4B1Z0=", + "js-base64": { + "version": "2.6.4", + "resolved": "https://registry.npm.taobao.org/js-base64/download/js-base64-2.6.4.tgz?cache=0&sync_timestamp=1604448575022&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjs-base64%2Fdownload%2Fjs-base64-2.6.4.tgz", + "integrity": "sha1-9OaGxd4eofhn28rT1G2WlCjfmMQ=", "dev": true }, "js-message": { - "version": "1.0.5", - "resolved": "https://registry.npm.taobao.org/js-message/download/js-message-1.0.5.tgz", - "integrity": "sha1-IwDSSxrwjondCVvBpMnJz8uJLRU=", + "version": "1.0.7", + "resolved": "https://registry.npm.taobao.org/js-message/download/js-message-1.0.7.tgz?cache=0&sync_timestamp=1605132733712&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjs-message%2Fdownload%2Fjs-message-1.0.7.tgz", + "integrity": "sha1-+93QU8ekcCGHG7iyyVOXzBfCDkc=", "dev": true }, "js-queue": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/js-queue/download/js-queue-2.0.0.tgz", - "integrity": "sha1-NiITz4YPRo8BJfxslqvBdCUx+Ug=", + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/js-queue/download/js-queue-2.0.2.tgz", + "integrity": "sha1-C+WQM4+QOzbHPTPDGIOoIUEs1II=", "dev": true, "requires": { - "easy-stack": "^1.0.0" + "easy-stack": "^1.0.1" } }, "js-tokens": { @@ -10217,9 +7079,9 @@ "dev": true }, "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npm.taobao.org/js-yaml/download/js-yaml-3.13.1.tgz", - "integrity": "sha1-r/FRswv9+o5J4F2iLnQV6d+jeEc=", + "version": "3.14.1", + "resolved": "https://registry.npm.taobao.org/js-yaml/download/js-yaml-3.14.1.tgz?cache=0&sync_timestamp=1607370811335&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjs-yaml%2Fdownload%2Fjs-yaml-3.14.1.tgz", + "integrity": "sha1-2ugS/bOCX6MGYJqHFzg8UMNqBTc=", "dev": true, "requires": { "argparse": "^1.0.7", @@ -10232,43 +7094,9 @@ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "dev": true }, - "jsdom": { - "version": "11.12.0", - "resolved": "https://registry.npm.taobao.org/jsdom/download/jsdom-11.12.0.tgz", - "integrity": "sha1-GoDUDd03ih3lllbp5txaO6hle8g=", - "dev": true, - "requires": { - "abab": "^2.0.0", - "acorn": "^5.5.3", - "acorn-globals": "^4.1.0", - "array-equal": "^1.0.0", - "cssom": ">= 0.3.2 < 0.4.0", - "cssstyle": "^1.0.0", - "data-urls": "^1.0.0", - "domexception": "^1.0.1", - "escodegen": "^1.9.1", - "html-encoding-sniffer": "^1.0.2", - "left-pad": "^1.3.0", - "nwsapi": "^2.0.7", - "parse5": "4.0.0", - "pn": "^1.1.0", - "request": "^2.87.0", - "request-promise-native": "^1.0.5", - "sax": "^1.2.4", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.3.4", - "w3c-hr-time": "^1.0.1", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.3", - "whatwg-mimetype": "^2.1.0", - "whatwg-url": "^6.4.1", - "ws": "^5.2.0", - "xml-name-validator": "^3.0.0" - } - }, "jsesc": { "version": "2.5.2", - "resolved": "https://registry.npm.taobao.org/jsesc/download/jsesc-2.5.2.tgz", + "resolved": "https://registry.npm.taobao.org/jsesc/download/jsesc-2.5.2.tgz?cache=0&sync_timestamp=1603891198638&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjsesc%2Fdownload%2Fjsesc-2.5.2.tgz", "integrity": "sha1-gFZNLkg9rPbo7yCWUKZ98/DCg6Q=", "dev": true }, @@ -10278,6 +7106,12 @@ "integrity": "sha1-u4Z8+zRQ5pEHwTHRxRS6s9yLyqk=", "dev": true }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npm.taobao.org/json-parse-even-better-errors/download/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha1-fEeAWpQxmSjgV3dAXcEuH3pO4C0=", + "dev": true + }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npm.taobao.org/json-schema/download/json-schema-0.2.3.tgz?cache=0&sync_timestamp=1567740732347&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson-schema%2Fdownload%2Fjson-schema-0.2.3.tgz", @@ -10286,8 +7120,9 @@ }, "json-schema-traverse": { "version": "0.4.1", - "resolved": "https://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz", - "integrity": "sha1-afaofZUTq4u4/mO9sJecRI5oRmA=" + "resolved": "https://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz?cache=0&sync_timestamp=1608000211395&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson-schema-traverse%2Fdownload%2Fjson-schema-traverse-0.4.1.tgz", + "integrity": "sha1-afaofZUTq4u4/mO9sJecRI5oRmA=", + "dev": true }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -10306,431 +7141,92 @@ "resolved": "https://registry.npm.taobao.org/json3/download/json3-3.3.3.tgz", "integrity": "sha1-f8EON1/FrkLEcFpcwKpvYr4wW4E=", "dev": true - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npm.taobao.org/json5/download/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npm.taobao.org/jsonfile/download/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "jsonlint": { - "version": "1.6.3", - "resolved": "https://registry.npm.taobao.org/jsonlint/download/jsonlint-1.6.3.tgz", - "integrity": "sha1-y14x78C3gpHQ2GL77wWQCt8hKYg=", - "requires": { - "JSV": "^4.0.x", - "nomnom": "^1.5.x" - } - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npm.taobao.org/jsprim/download/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "jszip": { - "version": "3.2.1", - "resolved": "https://registry.npm.taobao.org/jszip/download/jszip-3.2.1.tgz", - "integrity": "sha1-xdMt9ydAQigrFX77FuUitDQ14Bo=", - "requires": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "set-immediate-shim": "~1.0.1" - } - }, - "killable": { - "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/killable/download/killable-1.0.1.tgz", - "integrity": "sha1-TIzkQRh6Bhx0dPuHygjipjgZSJI=", - "dev": true - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-6.0.3.tgz", - "integrity": "sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0=", - "dev": true - }, - "kleur": { - "version": "2.0.2", - "resolved": "https://registry.npm.taobao.org/kleur/download/kleur-2.0.2.tgz", - "integrity": "sha1-twT0lE2V4lXQOPDLBfuKYCxVowA=", - "dev": true - }, - "launch-editor": { - "version": "2.2.1", - "resolved": "https://registry.npm.taobao.org/launch-editor/download/launch-editor-2.2.1.tgz", - "integrity": "sha1-hxtaPuOdZoD8wm03kwtu7aidsMo=", - "dev": true, - "requires": { - "chalk": "^2.3.0", - "shell-quote": "^1.6.1" - } - }, - "launch-editor-middleware": { - "version": "2.2.1", - "resolved": "https://registry.npm.taobao.org/launch-editor-middleware/download/launch-editor-middleware-2.2.1.tgz", - "integrity": "sha1-4UsH5scVSwpLhqD9NFeE5FgEwVc=", - "dev": true, - "requires": { - "launch-editor": "^2.2.1" - } - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/lcid/download/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "requires": { - "invert-kv": "^1.0.0" - } - }, - "left-pad": { - "version": "1.3.0", - "resolved": "https://registry.npm.taobao.org/left-pad/download/left-pad-1.3.0.tgz", - "integrity": "sha1-W4o6d2Xf4AEmHd6RVYnngvjJTR4=", - "dev": true - }, - "leven": { - "version": "2.1.0", - "resolved": "https://registry.npm.taobao.org/leven/download/leven-2.1.0.tgz", - "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", - "dev": true - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "lie": { - "version": "3.3.0", - "resolved": "https://registry.npm.taobao.org/lie/download/lie-3.3.0.tgz", - "integrity": "sha1-3Pgt7lRfRgdNryAMfBxaCOD0D2o=", - "requires": { - "immediate": "~3.0.5" - } - }, - "liftoff": { - "version": "2.5.0", - "resolved": "https://registry.npm.taobao.org/liftoff/download/liftoff-2.5.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fliftoff%2Fdownload%2Fliftoff-2.5.0.tgz", - "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=", - "dev": true, - "requires": { - "extend": "^3.0.0", - "findup-sync": "^2.0.0", - "fined": "^1.0.1", - "flagged-respawn": "^1.0.0", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.0", - "rechoir": "^0.6.2", - "resolve": "^1.1.7" - } - }, - "linkify-it": { - "version": "2.2.0", - "resolved": "https://registry.npm.taobao.org/linkify-it/download/linkify-it-2.2.0.tgz", - "integrity": "sha1-47VGl+eL+RXHCjis14/QngBYsc8=", - "requires": { - "uc.micro": "^1.0.1" - } - }, - "lint-staged": { - "version": "8.1.5", - "resolved": "https://registry.npm.taobao.org/lint-staged/download/lint-staged-8.1.5.tgz", - "integrity": "sha1-NyR2/hpYuINOtWLtTJkSa9YL3Xk=", - "dev": true, - "requires": { - "chalk": "^2.3.1", - "commander": "^2.14.1", - "cosmiconfig": "^5.0.2", - "debug": "^3.1.0", - "dedent": "^0.7.0", - "del": "^3.0.0", - "execa": "^1.0.0", - "find-parent-dir": "^0.3.0", - "g-status": "^2.0.2", - "is-glob": "^4.0.0", - "is-windows": "^1.0.2", - "listr": "^0.14.2", - "listr-update-renderer": "^0.5.0", - "lodash": "^4.17.11", - "log-symbols": "^2.2.0", - "micromatch": "^3.1.8", - "npm-which": "^3.0.1", - "p-map": "^1.1.1", - "path-is-inside": "^1.0.2", - "pify": "^3.0.0", - "please-upgrade-node": "^3.0.2", - "staged-git-files": "1.1.2", - "string-argv": "^0.0.2", - "stringify-object": "^3.2.2", - "yup": "^0.26.10" - }, - "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-6.0.5.tgz?cache=0&sync_timestamp=1570439926300&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcross-spawn%2Fdownload%2Fcross-spawn-6.0.5.tgz", - "integrity": "sha1-Sl7Hxk364iw6FBJNus3uhG2Ay8Q=", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "del": { - "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/del/download/del-3.0.0.tgz", - "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", - "dev": true, - "requires": { - "globby": "^6.1.0", - "is-path-cwd": "^1.0.0", - "is-path-in-cwd": "^1.0.0", - "p-map": "^1.1.1", - "pify": "^3.0.0", - "rimraf": "^2.2.8" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/execa/download/execa-1.0.0.tgz?cache=0&sync_timestamp=1576749101742&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexeca%2Fdownload%2Fexeca-1.0.0.tgz", - "integrity": "sha1-xiNqW7TfbW8V6I5/AXeYIWdJ3dg=", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-4.1.0.tgz", - "integrity": "sha1-wbJVV189wh1Zv8ec09K0axw6VLU=", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npm.taobao.org/globby/download/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/is-path-cwd/download/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", - "dev": true - }, - "is-path-in-cwd": { - "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/is-path-in-cwd/download/is-path-in-cwd-1.0.1.tgz?cache=0&sync_timestamp=1562347183080&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-path-in-cwd%2Fdownload%2Fis-path-in-cwd-1.0.1.tgz", - "integrity": "sha1-WsSLNF72dTOb1sekipEhELJBz1I=", - "dev": true, - "requires": { - "is-path-inside": "^1.0.0" - } - }, - "is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/is-path-inside/download/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", - "dev": true, - "requires": { - "path-is-inside": "^1.0.1" - } - }, - "p-map": { - "version": "1.2.0", - "resolved": "https://registry.npm.taobao.org/p-map/download/p-map-1.2.0.tgz", - "integrity": "sha1-5OlPMR6rvIYzoeeZCBZfyiYkG2s=", - "dev": true - } - } - }, - "listr": { - "version": "0.14.3", - "resolved": "https://registry.npm.taobao.org/listr/download/listr-0.14.3.tgz", - "integrity": "sha1-L+qQlgTkNL5GTFC926DUlpKPpYY=", - "dev": true, - "requires": { - "@samverschueren/stream-to-observable": "^0.3.0", - "is-observable": "^1.1.0", - "is-promise": "^2.1.0", - "is-stream": "^1.1.0", - "listr-silent-renderer": "^1.1.1", - "listr-update-renderer": "^0.5.0", - "listr-verbose-renderer": "^0.5.0", - "p-map": "^2.0.0", - "rxjs": "^6.3.3" - } - }, - "listr-silent-renderer": { - "version": "1.1.1", - "resolved": "https://registry.npm.taobao.org/listr-silent-renderer/download/listr-silent-renderer-1.1.1.tgz", - "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=", - "dev": true - }, - "listr-update-renderer": { - "version": "0.5.0", - "resolved": "https://registry.npm.taobao.org/listr-update-renderer/download/listr-update-renderer-0.5.0.tgz", - "integrity": "sha1-Tqg2hUinuK7LfgbYyVy0WuLt5qI=", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "cli-truncate": "^0.2.1", - "elegant-spinner": "^1.0.1", - "figures": "^1.7.0", - "indent-string": "^3.0.0", - "log-symbols": "^1.0.2", - "log-update": "^2.3.0", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz?cache=0&sync_timestamp=1573282949696&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npm.taobao.org/figures/download/figures-1.7.0.tgz?cache=0&sync_timestamp=1581865437156&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffigures%2Fdownload%2Ffigures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" - } - }, - "log-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npm.taobao.org/log-symbols/download/log-symbols-1.0.2.tgz", - "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", - "dev": true, - "requires": { - "chalk": "^1.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz?cache=0&sync_timestamp=1573280518303&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } + }, + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npm.taobao.org/json5/download/json5-2.1.3.tgz?cache=0&sync_timestamp=1586045693798&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson5%2Fdownload%2Fjson5-2.1.3.tgz", + "integrity": "sha1-ybD3+pIzv+WAf+ZvzzpWF+1ZfUM=", + "dev": true, + "requires": { + "minimist": "^1.2.5" } }, - "listr-verbose-renderer": { - "version": "0.5.0", - "resolved": "https://registry.npm.taobao.org/listr-verbose-renderer/download/listr-verbose-renderer-0.5.0.tgz", - "integrity": "sha1-8RMhZ1NepMEmEQK58o2sfLoeA9s=", + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/jsonfile/download/jsonfile-4.0.0.tgz?cache=0&sync_timestamp=1604161917513&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjsonfile%2Fdownload%2Fjsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "dev": true, "requires": { - "chalk": "^2.4.1", - "cli-cursor": "^2.1.0", - "date-fns": "^1.27.2", - "figures": "^2.0.0" + "graceful-fs": "^4.1.6" } }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npm.taobao.org/load-json-file/download/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npm.taobao.org/jsprim/download/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/killable/download/killable-1.0.1.tgz", + "integrity": "sha1-TIzkQRh6Bhx0dPuHygjipjgZSJI=", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-6.0.3.tgz", + "integrity": "sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0=", + "dev": true + }, + "launch-editor": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/launch-editor/download/launch-editor-2.2.1.tgz", + "integrity": "sha1-hxtaPuOdZoD8wm03kwtu7aidsMo=", + "dev": true, + "requires": { + "chalk": "^2.3.0", + "shell-quote": "^1.6.1" + } + }, + "launch-editor-middleware": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/launch-editor-middleware/download/launch-editor-middleware-2.2.1.tgz", + "integrity": "sha1-4UsH5scVSwpLhqD9NFeE5FgEwVc=", + "dev": true, + "requires": { + "launch-editor": "^2.2.1" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" } }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npm.taobao.org/lines-and-columns/download/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, "loader-fs-cache": { - "version": "1.0.2", - "resolved": "https://registry.npm.taobao.org/loader-fs-cache/download/loader-fs-cache-1.0.2.tgz", - "integrity": "sha1-VM7fa3J+F3n9jwEgXwX26IcG8IY=", + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/loader-fs-cache/download/loader-fs-cache-1.0.3.tgz?cache=0&sync_timestamp=1584820647539&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Floader-fs-cache%2Fdownload%2Floader-fs-cache-1.0.3.tgz", + "integrity": "sha1-8IZXZG1gcHi+LwoDL4vWndbyd9k=", "dev": true, "requires": { "find-cache-dir": "^0.1.1", - "mkdirp": "0.5.1" + "mkdirp": "^0.5.1" }, "dependencies": { "find-cache-dir": { @@ -10746,7 +7242,7 @@ }, "find-up": { "version": "1.1.2", - "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-1.1.2.tgz", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-1.1.2.tgz?cache=0&sync_timestamp=1597169795121&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-up%2Fdownload%2Ffind-up-1.1.2.tgz", "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { @@ -10776,7 +7272,7 @@ }, "loader-runner": { "version": "2.4.0", - "resolved": "https://registry.npm.taobao.org/loader-runner/download/loader-runner-2.4.0.tgz?cache=0&sync_timestamp=1574712098491&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Floader-runner%2Fdownload%2Floader-runner-2.4.0.tgz", + "resolved": "https://registry.npm.taobao.org/loader-runner/download/loader-runner-2.4.0.tgz?cache=0&sync_timestamp=1601450780890&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Floader-runner%2Fdownload%2Floader-runner-2.4.0.tgz", "integrity": "sha1-7UcGa/5TTX6ExMe5mYwqdWB9k1c=", "dev": true }, @@ -10784,6 +7280,7 @@ "version": "1.4.0", "resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-1.4.0.tgz", "integrity": "sha1-xXm140yzSxp07cbB+za/o3HVphM=", + "dev": true, "requires": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -10792,32 +7289,33 @@ "dependencies": { "json5": { "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/json5/download/json5-1.0.1.tgz", + "resolved": "https://registry.npm.taobao.org/json5/download/json5-1.0.1.tgz?cache=0&sync_timestamp=1586045693798&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson5%2Fdownload%2Fjson5-1.0.1.tgz", "integrity": "sha1-d5+wAYYE+oVOrL9iUhgNg1Q+Pb4=", + "dev": true, "requires": { "minimist": "^1.2.0" } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npm.taobao.org/minimist/download/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" } } }, "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-5.0.0.tgz", + "integrity": "sha1-Gvujlq/WdqbUJQTQpno6frn2KqA=", + "dev": true, "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" } }, "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.15.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flodash%2Fdownload%2Flodash-4.17.15.tgz", - "integrity": "sha1-tEf2ZwoEVbv+7dETku/zMOoJdUg=", + "version": "4.17.20", + "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.20.tgz?cache=0&sync_timestamp=1597336053864&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flodash%2Fdownload%2Flodash-4.17.20.tgz", + "integrity": "sha1-tEqbYpe8tpjxxRo1RaKzs2jVnFI=" + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npm.taobao.org/lodash.camelcase/download/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", "dev": true }, "lodash.defaultsdeep": { @@ -10826,12 +7324,6 @@ "integrity": "sha1-US6b1yHSctlOPTpjZT+hdRZ0HKY=", "dev": true }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npm.taobao.org/lodash.get/download/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", - "dev": true - }, "lodash.kebabcase": { "version": "4.1.1", "resolved": "https://registry.npm.taobao.org/lodash.kebabcase/download/lodash.kebabcase-4.1.1.tgz", @@ -10850,18 +7342,6 @@ "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", "dev": true }, - "lodash.padend": { - "version": "4.6.1", - "resolved": "https://registry.npm.taobao.org/lodash.padend/download/lodash.padend-4.6.1.tgz", - "integrity": "sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4=", - "dev": true - }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npm.taobao.org/lodash.sortby/download/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true - }, "lodash.transform": { "version": "4.6.0", "resolved": "https://registry.npm.taobao.org/lodash.transform/download/lodash.transform-4.6.0.tgz", @@ -10883,121 +7363,45 @@ "chalk": "^2.0.1" } }, - "log-update": { - "version": "2.3.0", - "resolved": "https://registry.npm.taobao.org/log-update/download/log-update-2.3.0.tgz", - "integrity": "sha1-iDKP19HOeTiykoN0bwsbwSayRwg=", - "dev": true, - "requires": { - "ansi-escapes": "^3.0.0", - "cli-cursor": "^2.0.0", - "wrap-ansi": "^3.0.1" - }, - "dependencies": { - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz?cache=0&sync_timestamp=1573280518303&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "wrap-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-3.0.1.tgz", - "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=", - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0" - } - } - } - }, "loglevel": { - "version": "1.6.7", - "resolved": "https://registry.npm.taobao.org/loglevel/download/loglevel-1.6.7.tgz", - "integrity": "sha1-s+A0IzGIxouIn1uGJBUwb1ZeLFY=", - "dev": true - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npm.taobao.org/loose-envify/download/loose-envify-1.4.0.tgz", - "integrity": "sha1-ce5R+nvkyuwaY4OffmgtgTLTDK8=", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npm.taobao.org/loud-rejection/download/loud-rejection-1.6.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Floud-rejection%2Fdownload%2Floud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true, - "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - } - }, - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npm.taobao.org/lower-case/download/lower-case-1.1.4.tgz", - "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "version": "1.7.1", + "resolved": "https://registry.npm.taobao.org/loglevel/download/loglevel-1.7.1.tgz?cache=0&sync_timestamp=1606312255832&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Floglevel%2Fdownload%2Floglevel-1.7.1.tgz", + "integrity": "sha1-AF/eL15uRwaPk1/yhXPhJe9y8Zc=", "dev": true }, - "lower-case-first": { - "version": "1.0.2", - "resolved": "https://registry.npm.taobao.org/lower-case-first/download/lower-case-first-1.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flower-case-first%2Fdownload%2Flower-case-first-1.0.2.tgz", - "integrity": "sha1-5dp8JvKacHO+AtUrrJmA5ZIq36E=", - "dev": true, - "requires": { - "lower-case": "^1.1.2" - } - }, "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.5.tgz", - "integrity": "sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80=", - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npm.taobao.org/make-dir/download/make-dir-1.3.0.tgz?cache=0&sync_timestamp=1581538411621&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmake-dir%2Fdownload%2Fmake-dir-1.3.0.tgz", - "integrity": "sha1-ecEDO4BRW9bSTsmTPoYMp17ifww=", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "make-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/make-iterator/download/make-iterator-1.0.1.tgz", - "integrity": "sha1-KbM/MSqo9UfEpeSQ9Wr87JkTOtY=", + "version": "5.1.1", + "resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-5.1.1.tgz?cache=0&sync_timestamp=1594427573763&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flru-cache%2Fdownload%2Flru-cache-5.1.1.tgz", + "integrity": "sha1-HaJ+ZxAnGUdpXa9oSOhH8B2EuSA=", "dev": true, "requires": { - "kind-of": "^6.0.2" + "yallist": "^3.0.2" } }, - "makeerror": { - "version": "1.0.11", - "resolved": "https://registry.npm.taobao.org/makeerror/download/makeerror-1.0.11.tgz", - "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npm.taobao.org/magic-string/download/magic-string-0.25.7.tgz", + "integrity": "sha1-P0l9b9NMZpxnmNy4IfLvMfVEUFE=", "dev": true, "requires": { - "tmpl": "1.0.x" + "sourcemap-codec": "^1.4.4" } }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npm.taobao.org/map-age-cleaner/download/map-age-cleaner-0.1.3.tgz", - "integrity": "sha1-fVg6cwZDTAVf5HSw9FB45uG0uSo=", + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/make-dir/download/make-dir-3.1.0.tgz", + "integrity": "sha1-QV6WcEazp/HRhSd9hKpYIDcmoT8=", "dev": true, "requires": { - "p-defer": "^1.0.0" + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz?cache=0&sync_timestamp=1606853731020&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-6.3.0.tgz", + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=", + "dev": true + } } }, "map-cache": { @@ -11006,12 +7410,6 @@ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "dev": true }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/map-obj/download/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - }, "map-visit": { "version": "1.0.0", "resolved": "https://registry.npm.taobao.org/map-visit/download/map-visit-1.0.0.tgz", @@ -11021,33 +7419,6 @@ "object-visit": "^1.0.0" } }, - "markdown-it": { - "version": "8.4.2", - "resolved": "https://registry.npm.taobao.org/markdown-it/download/markdown-it-8.4.2.tgz", - "integrity": "sha1-OG+YmY3BWjdyKqdyIIT0Agvdm1Q=", - "requires": { - "argparse": "^1.0.7", - "entities": "~1.1.1", - "linkify-it": "^2.0.0", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - } - }, - "matcher": { - "version": "1.1.1", - "resolved": "https://registry.npm.taobao.org/matcher/download/matcher-1.1.1.tgz?cache=0&sync_timestamp=1574143092340&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmatcher%2Fdownload%2Fmatcher-1.1.1.tgz", - "integrity": "sha1-UdgwHhOPhAmCszixFrsMCa9iwcI=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.4" - } - }, - "math-random": { - "version": "1.0.4", - "resolved": "https://registry.npm.taobao.org/math-random/download/math-random-1.0.4.tgz", - "integrity": "sha1-XdaUPJOFSCZwFtTjTwV1gwgMUUw=", - "dev": true - }, "md5.js": { "version": "1.3.5", "resolved": "https://registry.npm.taobao.org/md5.js/download/md5.js-1.3.5.tgz", @@ -11060,30 +7431,17 @@ } }, "mdn-data": { - "version": "1.1.4", - "resolved": "https://registry.npm.taobao.org/mdn-data/download/mdn-data-1.1.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmdn-data%2Fdownload%2Fmdn-data-1.1.4.tgz", - "integrity": "sha1-ULXU/8RXUnZXPE7tuHgIEqhBnwE=", + "version": "2.0.4", + "resolved": "https://registry.npm.taobao.org/mdn-data/download/mdn-data-2.0.4.tgz", + "integrity": "sha1-aZs8OKxvHXKAkaZGULZdOIUC/Vs=", "dev": true }, - "mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/mdurl/download/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" - }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz", "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npm.taobao.org/mem/download/mem-1.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmem%2Fdownload%2Fmem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "requires": { - "mimic-fn": "^1.0.0" - } - }, "memory-fs": { "version": "0.4.1", "resolved": "https://registry.npm.taobao.org/memory-fs/download/memory-fs-0.4.1.tgz", @@ -11094,38 +7452,6 @@ "readable-stream": "^2.0.1" } }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npm.taobao.org/meow/download/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "dev": true, - "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npm.taobao.org/minimist/download/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, - "merge": { - "version": "1.2.1", - "resolved": "https://registry.npm.taobao.org/merge/download/merge-1.2.1.tgz", - "integrity": "sha1-OL6/gMMiCopIe2/Ps5QbsRcgwUU=", - "dev": true - }, "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npm.taobao.org/merge-descriptors/download/merge-descriptors-1.0.1.tgz", @@ -11134,7 +7460,7 @@ }, "merge-options": { "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/merge-options/download/merge-options-1.0.1.tgz", + "resolved": "https://registry.npm.taobao.org/merge-options/download/merge-options-1.0.1.tgz?cache=0&sync_timestamp=1606146913544&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmerge-options%2Fdownload%2Fmerge-options-1.0.1.tgz", "integrity": "sha1-KmSyRFe+zU5NxggoMkfpTOWJqjI=", "dev": true, "requires": { @@ -11159,18 +7485,15 @@ } }, "merge-stream": { - "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/merge-stream/download/merge-stream-1.0.1.tgz", - "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", - "dev": true, - "requires": { - "readable-stream": "^2.0.1" - } + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/merge-stream/download/merge-stream-2.0.0.tgz", + "integrity": "sha1-UoI2KaFN0AyXcPtq1H3GMQ8sH2A=", + "dev": true }, "merge2": { - "version": "1.3.0", - "resolved": "https://registry.npm.taobao.org/merge2/download/merge2-1.3.0.tgz", - "integrity": "sha1-WzZu6DsvFYLEj4fkfPGpNSEDyoE=", + "version": "1.4.1", + "resolved": "https://registry.npm.taobao.org/merge2/download/merge2-1.4.1.tgz", + "integrity": "sha1-Q2iJL4hekHRVpv19xVwMnUBJkK4=", "dev": true }, "methods": { @@ -11179,30 +7502,6 @@ "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", "dev": true }, - "microargs": { - "version": "1.1.2", - "resolved": "https://registry.npm.taobao.org/microargs/download/microargs-1.1.2.tgz", - "integrity": "sha1-cl++3PEg2xIxfT7aU00/Ga+GdzM=", - "dev": true - }, - "microcli": { - "version": "1.3.3", - "resolved": "https://registry.npm.taobao.org/microcli/download/microcli-1.3.3.tgz", - "integrity": "sha1-J/GzMLD5Nb5jFPKYlyEFoyX3Mec=", - "dev": true, - "requires": { - "lodash": "4.17.11", - "microargs": "1.1.2" - }, - "dependencies": { - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.11.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flodash%2Fdownload%2Flodash-4.17.11.tgz", - "integrity": "sha1-s56mIp72B+zYniyN8SU2iRysm40=", - "dev": true - } - } - }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npm.taobao.org/micromatch/download/micromatch-3.1.10.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmicromatch%2Fdownload%2Fmicromatch-3.1.10.tgz", @@ -11232,48 +7531,70 @@ "requires": { "bn.js": "^4.0.0", "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-4.11.9.tgz", + "integrity": "sha1-JtVWgpRY+dHoH8SJUkk9C6NQeCg=", + "dev": true + } } }, "mime": { - "version": "2.4.4", - "resolved": "https://registry.npm.taobao.org/mime/download/mime-2.4.4.tgz?cache=0&sync_timestamp=1560034758817&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime%2Fdownload%2Fmime-2.4.4.tgz", - "integrity": "sha1-vXuRE1/GsBzePpuuM9ZZtj2IV+U=", + "version": "2.4.7", + "resolved": "https://registry.npm.taobao.org/mime/download/mime-2.4.7.tgz?cache=0&sync_timestamp=1608084083331&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime%2Fdownload%2Fmime-2.4.7.tgz", + "integrity": "sha1-lirtm+DtGckf19wuzl1/TompDXQ=", "dev": true }, "mime-db": { - "version": "1.43.0", - "resolved": "https://registry.npm.taobao.org/mime-db/download/mime-db-1.43.0.tgz?cache=0&sync_timestamp=1578281193492&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime-db%2Fdownload%2Fmime-db-1.43.0.tgz", - "integrity": "sha1-ChLgUCZQ5HPXNVNQUOfI9OtPrlg=", + "version": "1.44.0", + "resolved": "https://registry.npm.taobao.org/mime-db/download/mime-db-1.44.0.tgz?cache=0&sync_timestamp=1600831175828&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime-db%2Fdownload%2Fmime-db-1.44.0.tgz", + "integrity": "sha1-+hHF6wrKEzS0Izy01S8QxaYnL5I=", "dev": true }, "mime-types": { - "version": "2.1.26", - "resolved": "https://registry.npm.taobao.org/mime-types/download/mime-types-2.1.26.tgz?cache=0&sync_timestamp=1578282566609&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime-types%2Fdownload%2Fmime-types-2.1.26.tgz", - "integrity": "sha1-nJIfwJt+FJpl39wNpNIJlyALCgY=", + "version": "2.1.27", + "resolved": "https://registry.npm.taobao.org/mime-types/download/mime-types-2.1.27.tgz", + "integrity": "sha1-R5SfmOJ56lMRn1ci4PNOUpvsAJ8=", "dev": true, "requires": { - "mime-db": "1.43.0" + "mime-db": "1.44.0" } }, "mimic-fn": { "version": "1.2.0", "resolved": "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-1.2.0.tgz", - "integrity": "sha1-ggyGo5M0ZA6ZUWkovQP8qIBX0CI=" + "integrity": "sha1-ggyGo5M0ZA6ZUWkovQP8qIBX0CI=", + "dev": true }, "mini-css-extract-plugin": { - "version": "0.5.0", - "resolved": "https://registry.npm.taobao.org/mini-css-extract-plugin/download/mini-css-extract-plugin-0.5.0.tgz?cache=0&sync_timestamp=1576856580721&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmini-css-extract-plugin%2Fdownload%2Fmini-css-extract-plugin-0.5.0.tgz", - "integrity": "sha1-rABZsCuWklFaY3EVsMyf7To1x7A=", + "version": "0.9.0", + "resolved": "https://registry.npm.taobao.org/mini-css-extract-plugin/download/mini-css-extract-plugin-0.9.0.tgz?cache=0&sync_timestamp=1607647582104&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmini-css-extract-plugin%2Fdownload%2Fmini-css-extract-plugin-0.9.0.tgz", + "integrity": "sha1-R/LPB6oWWrNXM7H8l9TEbAVkM54=", "dev": true, "requires": { "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", "schema-utils": "^1.0.0", "webpack-sources": "^1.1.0" }, "dependencies": { + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npm.taobao.org/normalize-url/download/normalize-url-1.9.1.tgz?cache=0&sync_timestamp=1602432435724&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnormalize-url%2Fdownload%2Fnormalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + }, "schema-utils": { "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fschema-utils%2Fdownload%2Fschema-utils-1.0.0.tgz", + "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz", "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=", "dev": true, "requires": { @@ -11306,11 +7627,55 @@ } }, "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npm.taobao.org/minimist/download/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "version": "1.2.5", + "resolved": "https://registry.npm.taobao.org/minimist/download/minimist-1.2.5.tgz", + "integrity": "sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI=", "dev": true }, + "minipass": { + "version": "3.1.3", + "resolved": "https://registry.npm.taobao.org/minipass/download/minipass-3.1.3.tgz", + "integrity": "sha1-fUL/HzljVILhX5zbUxhN7r1YFf0=", + "dev": true, + "requires": { + "yallist": "^4.0.0" + }, + "dependencies": { + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-4.0.0.tgz", + "integrity": "sha1-m7knkNnA7/7GO+c1GeEaNQGaOnI=", + "dev": true + } + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/minipass-collect/download/minipass-collect-1.0.2.tgz", + "integrity": "sha1-IrgTv3Rdxu26JXa5QAIq1u3Ixhc=", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npm.taobao.org/minipass-flush/download/minipass-flush-1.0.5.tgz", + "integrity": "sha1-gucTXX6JpQ/+ZGEKeHlTxMTLs3M=", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npm.taobao.org/minipass-pipeline/download/minipass-pipeline-1.2.4.tgz?cache=0&sync_timestamp=1595998531778&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fminipass-pipeline%2Fdownload%2Fminipass-pipeline-1.2.4.tgz", + "integrity": "sha1-aEcveXEcCEZXwGfFxq2Tzd6oIUw=", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, "mississippi": { "version": "3.0.0", "resolved": "https://registry.npm.taobao.org/mississippi/download/mississippi-3.0.0.tgz", @@ -11330,10 +7695,9 @@ } }, "mitt": { - "version": "1.1.2", - "resolved": "https://registry.npm.taobao.org/mitt/download/mitt-1.1.2.tgz", - "integrity": "sha1-OA5hSA1qYVtmDwertg1R4KTkvtY=", - "dev": true + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/mitt/download/mitt-2.1.0.tgz", + "integrity": "sha1-90BXfCMXbGIFsSGylzUU6t4bIjA=" }, "mixin-deep": { "version": "1.3.2", @@ -11357,12 +7721,12 @@ } }, "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npm.taobao.org/mkdirp/download/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "version": "0.5.5", + "resolved": "https://registry.npm.taobao.org/mkdirp/download/mkdirp-0.5.5.tgz", + "integrity": "sha1-2Rzv1i0UNsoPQWIOJRKI1CAJne8=", "dev": true, "requires": { - "minimist": "0.0.8" + "minimist": "^1.2.5" } }, "mockjs": { @@ -11375,9 +7739,9 @@ } }, "moment": { - "version": "2.24.0", - "resolved": "https://registry.npm.taobao.org/moment/download/moment-2.24.0.tgz", - "integrity": "sha1-DQVdU/UFKqZTyfbraLtdEr9cK1s=" + "version": "2.29.1", + "resolved": "http://git.seaskysh.com.cn:8881/nexus/repository/npm-group/moment/-/moment-2.29.1.tgz", + "integrity": "sha1-sr52n6MZQL6e7qZGnAdeNQBvo9M=" }, "move-concurrently": { "version": "1.0.1", @@ -11394,13 +7758,14 @@ } }, "ms": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz?cache=0&sync_timestamp=1607433905701&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.1.2.tgz", + "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", + "dev": true }, "multicast-dns": { "version": "6.2.3", - "resolved": "https://registry.npm.taobao.org/multicast-dns/download/multicast-dns-6.2.3.tgz", + "resolved": "https://registry.npm.taobao.org/multicast-dns/download/multicast-dns-6.2.3.tgz?cache=0&sync_timestamp=1585239065356&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmulticast-dns%2Fdownload%2Fmulticast-dns-6.2.3.tgz", "integrity": "sha1-oOx72QVcQoL3kMPIL04o2zsxsik=", "dev": true, "requires": { @@ -11415,16 +7780,28 @@ "dev": true }, "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npm.taobao.org/mute-stream/download/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "version": "0.0.8", + "resolved": "https://registry.npm.taobao.org/mute-stream/download/mute-stream-0.0.8.tgz", + "integrity": "sha1-FjDEKyJR/4HiooPelqVJfqkuXg0=", "dev": true }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npm.taobao.org/mz/download/mz-2.7.0.tgz", + "integrity": "sha1-lQCAV6Vsr63CvGPd5/n/aVWUjjI=", + "dev": true, + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, "nan": { - "version": "2.14.0", - "resolved": "https://registry.npm.taobao.org/nan/download/nan-2.14.0.tgz", - "integrity": "sha1-eBj3IgJ7JFmobwKV1DTR/CM2xSw=", - "dev": true + "version": "2.14.2", + "resolved": "https://registry.npm.taobao.org/nan/download/nan-2.14.2.tgz?cache=0&sync_timestamp=1602591931869&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnan%2Fdownload%2Fnan-2.14.2.tgz", + "integrity": "sha1-9TdkAGlRaPTMaUrJOT0MlYXu6hk=", + "dev": true, + "optional": true }, "nanomatch": { "version": "1.2.13", @@ -11458,9 +7835,9 @@ "dev": true }, "neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npm.taobao.org/neo-async/download/neo-async-2.6.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fneo-async%2Fdownload%2Fneo-async-2.6.1.tgz", - "integrity": "sha1-rCetpmFn+ohJpq3dg39rGJrSCBw=", + "version": "2.6.2", + "resolved": "https://registry.npm.taobao.org/neo-async/download/neo-async-2.6.2.tgz", + "integrity": "sha1-tKr7k+OustgXTKU88WOrfXMIMF8=", "dev": true }, "nice-try": { @@ -11469,478 +7846,71 @@ "integrity": "sha1-ozeKdpbOfSI+iPybdkvX7xCJ42Y=", "dev": true }, - "no-case": { - "version": "2.3.2", - "resolved": "https://registry.npm.taobao.org/no-case/download/no-case-2.3.2.tgz?cache=0&sync_timestamp=1576721505371&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fno-case%2Fdownload%2Fno-case-2.3.2.tgz", - "integrity": "sha1-YLgTOWvjmz8SiKTB7V0efSi0ZKw=", - "dev": true, - "requires": { - "lower-case": "^1.1.1" - } - }, - "node-cache": { - "version": "4.2.1", - "resolved": "https://registry.npm.taobao.org/node-cache/download/node-cache-4.2.1.tgz?cache=0&sync_timestamp=1575815899867&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-cache%2Fdownload%2Fnode-cache-4.2.1.tgz", - "integrity": "sha1-79hHTe5O3sQTjN3tWA9VFlAPczQ=", - "dev": true, - "requires": { - "clone": "2.x", - "lodash": "^4.17.15" - }, - "dependencies": { - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npm.taobao.org/clone/download/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", - "dev": true - } - } - }, "node-forge": { - "version": "0.9.0", - "resolved": "https://registry.npm.taobao.org/node-forge/download/node-forge-0.9.0.tgz?cache=0&sync_timestamp=1569524669712&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-forge%2Fdownload%2Fnode-forge-0.9.0.tgz", - "integrity": "sha1-1iQFDtu0SHStyhK7mlLsY8t4JXk=", - "dev": true - }, - "node-gyp": { - "version": "3.8.0", - "resolved": "https://registry.npm.taobao.org/node-gyp/download/node-gyp-3.8.0.tgz", - "integrity": "sha1-VAMEJhwzDoDQ1e3OJTpoyzlkIYw=", - "dev": true, - "requires": { - "fstream": "^1.0.0", - "glob": "^7.0.3", - "graceful-fs": "^4.1.2", - "mkdirp": "^0.5.0", - "nopt": "2 || 3", - "npmlog": "0 || 1 || 2 || 3 || 4", - "osenv": "0", - "request": "^2.87.0", - "rimraf": "2", - "semver": "~5.3.0", - "tar": "^2.0.0", - "which": "1" - }, - "dependencies": { - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npm.taobao.org/nopt/download/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "dev": true - } - } - }, - "node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npm.taobao.org/node-int64/download/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "version": "0.10.0", + "resolved": "https://registry.npm.taobao.org/node-forge/download/node-forge-0.10.0.tgz", + "integrity": "sha1-Mt6ir7Ppkm8C7lzoeUkCaRpna/M=", "dev": true }, "node-ipc": { - "version": "9.1.1", - "resolved": "https://registry.npm.taobao.org/node-ipc/download/node-ipc-9.1.1.tgz", - "integrity": "sha1-TiRe1pOOZRAOWV68XcNLFujdXWk=", + "version": "9.1.3", + "resolved": "https://registry.npm.taobao.org/node-ipc/download/node-ipc-9.1.3.tgz", + "integrity": "sha1-HfPwadEDGErpEn+ohdva6lakQ28=", "dev": true, "requires": { "event-pubsub": "4.3.0", - "js-message": "1.0.5", - "js-queue": "2.0.0" + "js-message": "1.0.7", + "js-queue": "2.0.2" } }, "node-libs-browser": { "version": "2.2.1", - "resolved": "https://registry.npm.taobao.org/node-libs-browser/download/node-libs-browser-2.2.1.tgz", - "integrity": "sha1-tk9RPRgzhiX5A0bSew0jXmMfZCU=", - "dev": true, - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npm.taobao.org/punycode/download/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - } - } - }, - "node-modules-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/node-modules-regexp/download/node-modules-regexp-1.0.0.tgz", - "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", - "dev": true - }, - "node-notifier": { - "version": "5.4.3", - "resolved": "https://registry.npm.taobao.org/node-notifier/download/node-notifier-5.4.3.tgz", - "integrity": "sha1-y3La+UyTkECY4oucWQ/YZuRkvVA=", - "dev": true, - "requires": { - "growly": "^1.3.0", - "is-wsl": "^1.1.0", - "semver": "^5.5.0", - "shellwords": "^0.1.1", - "which": "^1.3.0" - } - }, - "node-plop": { - "version": "0.18.0", - "resolved": "https://registry.npm.taobao.org/node-plop/download/node-plop-0.18.0.tgz", - "integrity": "sha1-tEZHiY7p44fUbmkfE6AfrFO/Sf4=", - "dev": true, - "requires": { - "change-case": "^3.0.1", - "co": "^4.6.0", - "core-js": "^2.4.1", - "del": "^3.0.0", - "globby": "^8.0.0", - "handlebars": "^4.1.0", - "inquirer": "^6.0.0", - "isbinaryfile": "^3.0.2", - "lodash.get": "^4.4.2", - "mkdirp": "^0.5.1", - "pify": "^4.0.0", - "resolve": "^1.2.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz", - "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=", - "dev": true - }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npm.taobao.org/chardet/download/chardet-0.7.0.tgz?cache=0&sync_timestamp=1562888139305&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchardet%2Fdownload%2Fchardet-0.7.0.tgz", - "integrity": "sha1-kAlISfCTfy7twkJdDSip5fDLrZ4=", - "dev": true - }, - "del": { - "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/del/download/del-3.0.0.tgz", - "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", - "dev": true, - "requires": { - "globby": "^6.1.0", - "is-path-cwd": "^1.0.0", - "is-path-in-cwd": "^1.0.0", - "p-map": "^1.1.1", - "pify": "^3.0.0", - "rimraf": "^2.2.8" - }, - "dependencies": { - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npm.taobao.org/globby/download/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "dir-glob": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/dir-glob/download/dir-glob-2.0.0.tgz", - "integrity": "sha1-CyBdK2rvmCOMooZZioIE0p0KADQ=", - "dev": true, - "requires": { - "arrify": "^1.0.1", - "path-type": "^3.0.0" - } - }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npm.taobao.org/external-editor/download/external-editor-3.1.0.tgz?cache=0&sync_timestamp=1562602052556&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexternal-editor%2Fdownload%2Fexternal-editor-3.1.0.tgz", - "integrity": "sha1-ywP3QL764D6k0oPK7SdBqD8zVJU=", - "dev": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, - "globby": { - "version": "8.0.2", - "resolved": "https://registry.npm.taobao.org/globby/download/globby-8.0.2.tgz", - "integrity": "sha1-VpdhnM2VxSdduy1vqkIIfBqUHY0=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "dir-glob": "2.0.0", - "fast-glob": "^2.0.2", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "inquirer": { - "version": "6.5.2", - "resolved": "https://registry.npm.taobao.org/inquirer/download/inquirer-6.5.2.tgz?cache=0&sync_timestamp=1583819607980&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finquirer%2Fdownload%2Finquirer-6.5.2.tgz", - "integrity": "sha1-rVCUI3XQNtMn/1KMCL1fqwiZKMo=", - "dev": true, - "requires": { - "ansi-escapes": "^3.2.0", - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.12", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^2.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" - } - }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/is-path-cwd/download/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", - "dev": true - }, - "is-path-in-cwd": { - "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/is-path-in-cwd/download/is-path-in-cwd-1.0.1.tgz?cache=0&sync_timestamp=1562347183080&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-path-in-cwd%2Fdownload%2Fis-path-in-cwd-1.0.1.tgz", - "integrity": "sha1-WsSLNF72dTOb1sekipEhELJBz1I=", - "dev": true, - "requires": { - "is-path-inside": "^1.0.0" - } - }, - "is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/is-path-inside/download/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", - "dev": true, - "requires": { - "path-is-inside": "^1.0.1" - } - }, - "p-map": { - "version": "1.2.0", - "resolved": "https://registry.npm.taobao.org/p-map/download/p-map-1.2.0.tgz", - "integrity": "sha1-5OlPMR6rvIYzoeeZCBZfyiYkG2s=", - "dev": true - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npm.taobao.org/pify/download/pify-4.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-4.0.1.tgz", - "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=", - "dev": true - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/slash/download/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz?cache=0&sync_timestamp=1573280518303&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-5.2.0.tgz", - "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "node-releases": { - "version": "1.1.51", - "resolved": "https://registry.npm.taobao.org/node-releases/download/node-releases-1.1.51.tgz?cache=0&sync_timestamp=1583684592405&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-releases%2Fdownload%2Fnode-releases-1.1.51.tgz", - "integrity": "sha1-cNDgVCITQ9KWYAa/vU2YYizAC9A=", - "dev": true, - "requires": { - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz", - "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=", - "dev": true - } - } - }, - "node-sass": { - "version": "4.13.1", - "resolved": "https://registry.npm.taobao.org/node-sass/download/node-sass-4.13.1.tgz", - "integrity": "sha1-nbVolpa7LuwsMrmL/qTHoumS0KM=", - "dev": true, - "requires": { - "async-foreach": "^0.1.3", - "chalk": "^1.1.1", - "cross-spawn": "^3.0.0", - "gaze": "^1.0.0", - "get-stdin": "^4.0.1", - "glob": "^7.0.3", - "in-publish": "^2.0.0", - "lodash": "^4.17.15", - "meow": "^3.7.0", - "mkdirp": "^0.5.1", - "nan": "^2.13.2", - "node-gyp": "^3.8.0", - "npmlog": "^4.0.0", - "request": "^2.88.0", - "sass-graph": "^2.2.4", - "stdout-stream": "^1.4.0", - "true-case-path": "^1.0.2" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz?cache=0&sync_timestamp=1573282949696&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "cross-spawn": { - "version": "3.0.1", - "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-3.0.1.tgz?cache=0&sync_timestamp=1570439926300&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcross-spawn%2Fdownload%2Fcross-spawn-3.0.1.tgz", - "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npm.taobao.org/get-stdin/download/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz?cache=0&sync_timestamp=1573280518303&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "nomnom": { - "version": "1.8.1", - "resolved": "https://registry.npm.taobao.org/nomnom/download/nomnom-1.8.1.tgz", - "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=", + "resolved": "https://registry.npm.taobao.org/node-libs-browser/download/node-libs-browser-2.2.1.tgz", + "integrity": "sha1-tk9RPRgzhiX5A0bSew0jXmMfZCU=", + "dev": true, "requires": { - "chalk": "~0.4.0", - "underscore": "~1.6.0" + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" }, "dependencies": { - "chalk": { - "version": "0.4.0", - "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-0.4.0.tgz?cache=0&sync_timestamp=1573282949696&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-0.4.0.tgz", - "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", - "requires": { - "ansi-styles": "~1.0.0", - "has-color": "~0.1.0", - "strip-ansi": "~0.1.0" - } + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npm.taobao.org/punycode/download/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true } } }, - "nopt": { - "version": "4.0.3", - "resolved": "https://registry.npm.taobao.org/nopt/download/nopt-4.0.3.tgz", - "integrity": "sha1-o3XK2dAv2SEnjZVMIlTVqlfhXkg=", - "dev": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } + "node-releases": { + "version": "1.1.67", + "resolved": "https://registry.npm.taobao.org/node-releases/download/node-releases-1.1.67.tgz?cache=0&sync_timestamp=1605581282886&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-releases%2Fdownload%2Fnode-releases-1.1.67.tgz", + "integrity": "sha1-KOv8zNC6pqrY6NTY/ky8Sa4jnBI=", + "dev": true }, "normalize-package-data": { "version": "2.5.0", - "resolved": "https://registry.npm.taobao.org/normalize-package-data/download/normalize-package-data-2.5.0.tgz", + "resolved": "https://registry.npm.taobao.org/normalize-package-data/download/normalize-package-data-2.5.0.tgz?cache=0&sync_timestamp=1602547447569&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnormalize-package-data%2Fdownload%2Fnormalize-package-data-2.5.0.tgz", "integrity": "sha1-5m2xg4sgDB38IzIl0SyzZSDiNKg=", "dev": true, "requires": { @@ -11953,7 +7923,8 @@ "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-3.0.0.tgz", - "integrity": "sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU=" + "integrity": "sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU=", + "dev": true }, "normalize-range": { "version": "0.1.2", @@ -11963,7 +7934,7 @@ }, "normalize-url": { "version": "3.3.0", - "resolved": "https://registry.npm.taobao.org/normalize-url/download/normalize-url-3.3.0.tgz?cache=0&sync_timestamp=1580491266117&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnormalize-url%2Fdownload%2Fnormalize-url-3.3.0.tgz", + "resolved": "https://registry.npm.taobao.org/normalize-url/download/normalize-url-3.3.0.tgz?cache=0&sync_timestamp=1602432435724&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnormalize-url%2Fdownload%2Fnormalize-url-3.3.0.tgz", "integrity": "sha1-suHE3E98bVd0PfczpPWXjRhlBVk=", "dev": true }, @@ -11977,44 +7948,13 @@ "resolved": "https://registry.npm.taobao.org/normalize.css/download/normalize.css-7.0.0.tgz", "integrity": "sha1-q/sd2CRwZ04DIrU86xqvQSk45L8=" }, - "npm-path": { - "version": "2.0.4", - "resolved": "https://registry.npm.taobao.org/npm-path/download/npm-path-2.0.4.tgz", - "integrity": "sha1-xkE0el/51qCeTZvOVYDE9QUnjmQ=", - "dev": true, - "requires": { - "which": "^1.2.10" - } - }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npm.taobao.org/npm-run-path/download/npm-run-path-2.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnpm-run-path%2Fdownload%2Fnpm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "requires": { - "path-key": "^2.0.0" - } - }, - "npm-which": { - "version": "3.0.1", - "resolved": "https://registry.npm.taobao.org/npm-which/download/npm-which-3.0.1.tgz", - "integrity": "sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo=", - "dev": true, - "requires": { - "commander": "^2.9.0", - "npm-path": "^2.0.2", - "which": "^1.2.10" - } - }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npm.taobao.org/npmlog/download/npmlog-4.1.2.tgz", - "integrity": "sha1-CKfyqL9zRgR3mp76StXMcXq7lUs=", "dev": true, "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" + "path-key": "^2.0.0" } }, "nprogress": { @@ -12024,7 +7964,7 @@ }, "nth-check": { "version": "1.0.2", - "resolved": "https://registry.npm.taobao.org/nth-check/download/nth-check-1.0.2.tgz", + "resolved": "https://registry.npm.taobao.org/nth-check/download/nth-check-1.0.2.tgz?cache=0&sync_timestamp=1606860944410&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnth-check%2Fdownload%2Fnth-check-1.0.2.tgz", "integrity": "sha1-sr0pXDfj3VijvwcAN2Zjuk2c8Fw=", "dev": true, "requires": { @@ -12037,17 +7977,6 @@ "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", "dev": true }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/number-is-nan/download/number-is-nan-1.0.1.tgz?cache=0&sync_timestamp=1581061562193&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnumber-is-nan%2Fdownload%2Fnumber-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" - }, - "nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npm.taobao.org/nwsapi/download/nwsapi-2.2.0.tgz", - "integrity": "sha1-IEh5qePQaP8qVROcLHcngGgaOLc=", - "dev": true - }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npm.taobao.org/oauth-sign/download/oauth-sign-0.9.0.tgz", @@ -12080,12 +8009,6 @@ "is-descriptor": "^0.1.0" } }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz", - "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", - "dev": true - }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", @@ -12104,16 +8027,20 @@ "dev": true }, "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npm.taobao.org/object-inspect/download/object-inspect-1.7.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject-inspect%2Fdownload%2Fobject-inspect-1.7.0.tgz", - "integrity": "sha1-9Pa9GBrXfwBrXs5gvQtvOY/3Smc=", + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/object-inspect/download/object-inspect-1.9.0.tgz?cache=0&sync_timestamp=1606804265193&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject-inspect%2Fdownload%2Fobject-inspect-1.9.0.tgz", + "integrity": "sha1-yQUh104RJ7ZyZt7TOUrWEWmGUzo=", "dev": true }, "object-is": { - "version": "1.0.2", - "resolved": "https://registry.npm.taobao.org/object-is/download/object-is-1.0.2.tgz?cache=0&sync_timestamp=1576479714417&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject-is%2Fdownload%2Fobject-is-1.0.2.tgz", - "integrity": "sha1-a4DrhP5FFJj2UAeYLwNaW0Re3sQ=", - "dev": true + "version": "1.1.4", + "resolved": "https://registry.npm.taobao.org/object-is/download/object-is-1.1.4.tgz", + "integrity": "sha1-Y9bIPACkP0y8lDTrl1fIpbhWUGg=", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } }, "object-keys": { "version": "1.1.1", @@ -12131,79 +8058,26 @@ } }, "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npm.taobao.org/object.assign/download/object.assign-4.1.0.tgz", - "integrity": "sha1-lovxEA15Vrs8oIbwBvhGs7xACNo=", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npm.taobao.org/object.defaults/download/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "version": "4.1.2", + "resolved": "https://registry.npm.taobao.org/object.assign/download/object.assign-4.1.2.tgz?cache=0&sync_timestamp=1604115104654&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject.assign%2Fdownload%2Fobject.assign-4.1.2.tgz", + "integrity": "sha1-DtVKNC7Os3s4/3brgxoOeIy2OUA=", "dev": true, "requires": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" - }, - "dependencies": { - "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/for-own/download/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - } + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" } }, "object.getownpropertydescriptors": { - "version": "2.1.0", - "resolved": "https://registry.npm.taobao.org/object.getownpropertydescriptors/download/object.getownpropertydescriptors-2.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject.getownpropertydescriptors%2Fdownload%2Fobject.getownpropertydescriptors-2.1.0.tgz", - "integrity": "sha1-Npvx+VktiridcS3O1cuBx8U1Jkk=", + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/object.getownpropertydescriptors/download/object.getownpropertydescriptors-2.1.1.tgz", + "integrity": "sha1-Df2o0QgHTZxWPoBJDIg7ZmEJFUQ=", "dev": true, "requires": { + "call-bind": "^1.0.0", "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - } - }, - "object.map": { - "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/object.map/download/object.map-1.0.1.tgz", - "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", - "dev": true, - "requires": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - }, - "dependencies": { - "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/for-own/download/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - } - } - }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npm.taobao.org/object.omit/download/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true, - "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" + "es-abstract": "^1.18.0-next.1" } }, "object.pick": { @@ -12216,14 +8090,14 @@ } }, "object.values": { - "version": "1.1.1", - "resolved": "https://registry.npm.taobao.org/object.values/download/object.values-1.1.1.tgz", - "integrity": "sha1-aKmezeNWt+kpWjxeDOMdyMlT3l4=", + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/object.values/download/object.values-1.1.2.tgz?cache=0&sync_timestamp=1606429851964&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject.values%2Fdownload%2Fobject.values-1.1.2.tgz", + "integrity": "sha1-eiAV4G/LD1Rr1lJIbOhYOkcxxzE=", "dev": true, "requires": { + "call-bind": "^1.0.0", "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", + "es-abstract": "^1.18.0-next.1", "has": "^1.0.3" } }, @@ -12233,12 +8107,6 @@ "integrity": "sha1-Cb6jND1BhZ69RGKS0RydTbYZCE4=", "dev": true }, - "omelette": { - "version": "0.4.5", - "resolved": "https://registry.npm.taobao.org/omelette/download/omelette-0.4.5.tgz", - "integrity": "sha1-8WvEd7fiY7WXlqZWYZZOR2LprnQ=", - "dev": true - }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz", @@ -12274,7 +8142,7 @@ }, "open": { "version": "6.4.0", - "resolved": "https://registry.npm.taobao.org/open/download/open-6.4.0.tgz?cache=0&sync_timestamp=1583734682914&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fopen%2Fdownload%2Fopen-6.4.0.tgz", + "resolved": "https://registry.npm.taobao.org/open/download/open-6.4.0.tgz?cache=0&sync_timestamp=1601376181109&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fopen%2Fdownload%2Fopen-6.4.0.tgz", "integrity": "sha1-XBPpbQ3IlGhhZPGJZez+iJ7PyKk=", "dev": true, "requires": { @@ -12282,9 +8150,9 @@ } }, "opener": { - "version": "1.5.1", - "resolved": "https://registry.npm.taobao.org/opener/download/opener-1.5.1.tgz", - "integrity": "sha1-bS8Od/GgrwAyrKcWwsH7uOfoq+0=", + "version": "1.5.2", + "resolved": "https://registry.npm.taobao.org/opener/download/opener-1.5.2.tgz", + "integrity": "sha1-XTfh81B3udysQwE3InGv3rKhNZg=", "dev": true }, "opn": { @@ -12296,19 +8164,9 @@ "is-wsl": "^1.1.0" } }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npm.taobao.org/optimist/download/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true, - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - } - }, "optionator": { "version": "0.8.3", - "resolved": "https://registry.npm.taobao.org/optionator/download/optionator-0.8.3.tgz", + "resolved": "https://registry.npm.taobao.org/optionator/download/optionator-0.8.3.tgz?cache=0&sync_timestamp=1585966238288&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Foptionator%2Fdownload%2Foptionator-0.8.3.tgz", "integrity": "sha1-hPodA2/p08fiHZmIS2ARZ+yPtJU=", "dev": true, "requires": { @@ -12334,12 +8192,6 @@ "wcwidth": "^1.0.1" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz", - "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=", - "dev": true - }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz?cache=0&sync_timestamp=1573280518303&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-5.2.0.tgz", @@ -12366,76 +8218,44 @@ "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", "dev": true }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npm.taobao.org/os-homedir/download/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npm.taobao.org/os-locale/download/os-locale-2.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fos-locale%2Fdownload%2Fos-locale-2.1.0.tgz", - "integrity": "sha1-QrwpAKa1uL0XN2yOiCtlr8zyS/I=", - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npm.taobao.org/os-tmpdir/download/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npm.taobao.org/osenv/download/osenv-0.1.5.tgz", - "integrity": "sha1-hc36+uso6Gd/QW4odZK18/SepBA=", - "dev": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/p-defer/download/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true - }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npm.taobao.org/p-finally/download/p-finally-1.0.0.tgz?cache=0&sync_timestamp=1560955759606&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-finally%2Fdownload%2Fp-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" - }, - "p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npm.taobao.org/p-is-promise/download/p-is-promise-2.1.0.tgz", - "integrity": "sha1-kYzrrqJIpiz3/6uOO8qMX4gvxC4=", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-1.3.0.tgz?cache=0&sync_timestamp=1577904218145&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-limit%2Fdownload%2Fp-limit-1.3.0.tgz", - "integrity": "sha1-uGvV8MJWkJEcdZD8v8IBDVSzzLg=", + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-2.3.0.tgz", + "integrity": "sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE=", + "dev": true, "requires": { - "p-try": "^1.0.0" + "p-try": "^2.0.0" } }, "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-4.1.0.tgz?cache=0&sync_timestamp=1597081369770&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-locate%2Fdownload%2Fp-locate-4.1.0.tgz", + "integrity": "sha1-o0KLtwiLOmApL2aRkni3wpetTwc=", + "dev": true, "requires": { - "p-limit": "^1.1.0" + "p-limit": "^2.2.0" } }, "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npm.taobao.org/p-map/download/p-map-2.1.0.tgz", - "integrity": "sha1-MQko/u+cnsxltosXaTAYpmXOoXU=", - "dev": true + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/p-map/download/p-map-3.0.0.tgz", + "integrity": "sha1-1wTZr4orpoTiYA2aIVmD1BQal50=", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } }, "p-retry": { "version": "3.0.1", @@ -12447,14 +8267,16 @@ } }, "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/p-try/download/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/p-try/download/p-try-2.2.0.tgz", + "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=", + "dev": true }, "pako": { "version": "1.0.11", - "resolved": "https://registry.npm.taobao.org/pako/download/pako-1.0.11.tgz?cache=0&sync_timestamp=1580283988434&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpako%2Fdownload%2Fpako-1.0.11.tgz", - "integrity": "sha1-bJWZ00DVTf05RjgCUqNXBaa5kr8=" + "resolved": "https://registry.npm.taobao.org/pako/download/pako-1.0.11.tgz", + "integrity": "sha1-bJWZ00DVTf05RjgCUqNXBaa5kr8=", + "dev": true }, "parallel-transform": { "version": "1.2.0", @@ -12467,15 +8289,6 @@ "readable-stream": "^2.1.5" } }, - "param-case": { - "version": "2.1.1", - "resolved": "https://registry.npm.taobao.org/param-case/download/param-case-2.1.1.tgz", - "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", - "dev": true, - "requires": { - "no-case": "^2.2.0" - } - }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npm.taobao.org/parent-module/download/parent-module-1.0.1.tgz", @@ -12494,95 +8307,64 @@ } }, "parse-asn1": { - "version": "5.1.5", - "resolved": "https://registry.npm.taobao.org/parse-asn1/download/parse-asn1-5.1.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse-asn1%2Fdownload%2Fparse-asn1-5.1.5.tgz", - "integrity": "sha1-ADJxND2ljclMrOSU+u89IUfs6g4=", + "version": "5.1.6", + "resolved": "https://registry.npm.taobao.org/parse-asn1/download/parse-asn1-5.1.6.tgz", + "integrity": "sha1-OFCAo+wTy2KmLTlAnLPoiETNrtQ=", "dev": true, "requires": { - "asn1.js": "^4.0.0", + "asn1.js": "^5.2.0", "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", "evp_bytestokey": "^1.0.0", "pbkdf2": "^3.0.3", "safe-buffer": "^5.1.1" } }, - "parse-filepath": { - "version": "1.0.2", - "resolved": "https://registry.npm.taobao.org/parse-filepath/download/parse-filepath-1.0.2.tgz", - "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "parse-json": { + "version": "5.1.0", + "resolved": "https://registry.npm.taobao.org/parse-json/download/parse-json-5.1.0.tgz", + "integrity": "sha1-+WCIzfJKj6qa6poAny2dlCyZlkY=", "dev": true, "requires": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" } }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npm.taobao.org/parse-glob/download/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "parse5": { + "version": "5.1.1", + "resolved": "https://registry.npm.taobao.org/parse5/download/parse5-5.1.1.tgz", + "integrity": "sha1-9o5OW6GFKsLK3AD0VV//bCq7YXg=", + "dev": true + }, + "parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npm.taobao.org/parse5-htmlparser2-tree-adapter/download/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha1-LN+a2CMyEUA3DU2/XT6Sx8jdxuY=", "dev": true, "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" + "parse5": "^6.0.1" }, "dependencies": { - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/is-extglob/download/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npm.taobao.org/parse5/download/parse5-6.0.1.tgz", + "integrity": "sha1-4aHAhcVps9wIMhGE8Zo5zCf3wws=", "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } } } }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npm.taobao.org/parse-json/download/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/parse-passwd/download/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "dev": true - }, - "parse5": { - "version": "4.0.0", - "resolved": "https://registry.npm.taobao.org/parse5/download/parse5-4.0.0.tgz?cache=0&sync_timestamp=1573036762880&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse5%2Fdownload%2Fparse5-4.0.0.tgz", - "integrity": "sha1-bXhlbj2o14tOwLkG98CO8d/j9gg=", - "dev": true - }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npm.taobao.org/parseurl/download/parseurl-1.3.3.tgz", "integrity": "sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ=", "dev": true }, - "pascal-case": { - "version": "2.0.1", - "resolved": "https://registry.npm.taobao.org/pascal-case/download/pascal-case-2.0.1.tgz", - "integrity": "sha1-LVeNNFX2YNpl7KGO+VtODekSdh4=", - "dev": true, - "requires": { - "camel-case": "^3.0.0", - "upper-case-first": "^1.1.0" - } + "particles.js": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/particles.js/download/particles.js-2.0.0.tgz", + "integrity": "sha1-IThsQyjWx/lngKIB6W7t/AnHNvY=", + "dev": true }, "pascalcase": { "version": "0.1.1", @@ -12596,15 +8378,6 @@ "integrity": "sha1-5sTd1+06onxoogzE5Q4aTug7vEo=", "dev": true }, - "path-case": { - "version": "2.1.1", - "resolved": "https://registry.npm.taobao.org/path-case/download/path-case-2.1.1.tgz", - "integrity": "sha1-lLgDfDctP+KQbkZbtF4l0ibo7qU=", - "dev": true, - "requires": { - "no-case": "^2.2.0" - } - }, "path-dirname": { "version": "1.0.2", "resolved": "https://registry.npm.taobao.org/path-dirname/download/path-dirname-1.0.2.tgz", @@ -12612,9 +8385,10 @@ "dev": true }, "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-4.0.0.tgz", + "integrity": "sha1-UTvb4tO5XXdi6METfvoZXGxhtbM=", + "dev": true }, "path-is-absolute": { "version": "1.0.1", @@ -12631,7 +8405,8 @@ "path-key": { "version": "2.0.1", "resolved": "https://registry.npm.taobao.org/path-key/download/path-key-2.0.1.tgz?cache=0&sync_timestamp=1574441322626&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpath-key%2Fdownload%2Fpath-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true }, "path-parse": { "version": "1.0.6", @@ -12639,25 +8414,11 @@ "integrity": "sha1-1i27VnlAXXLEc37FhgDp3c8G0kw=", "dev": true }, - "path-root": { - "version": "0.1.1", - "resolved": "https://registry.npm.taobao.org/path-root/download/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", - "dev": true, - "requires": { - "path-root-regex": "^0.1.0" - } - }, - "path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npm.taobao.org/path-root-regex/download/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", - "dev": true - }, "path-to-regexp": { - "version": "2.4.0", - "resolved": "https://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-2.4.0.tgz", - "integrity": "sha1-Nc5/Mz1WFvHB4b/iZsOrouWy5wQ=" + "version": "0.1.7", + "resolved": "https://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true }, "path-type": { "version": "3.0.0", @@ -12666,12 +8427,20 @@ "dev": true, "requires": { "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } } }, "pbkdf2": { - "version": "3.0.17", - "resolved": "https://registry.npm.taobao.org/pbkdf2/download/pbkdf2-3.0.17.tgz", - "integrity": "sha1-l2wgZTBhexTrsyEUI597CTNuk6Y=", + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/pbkdf2/download/pbkdf2-3.1.1.tgz", + "integrity": "sha1-y4cksPramEWWhW0abrr9NYRlS5Q=", "dev": true, "requires": { "create-hash": "^1.1.2", @@ -12687,169 +8456,70 @@ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "dev": true }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npm.taobao.org/picomatch/download/picomatch-2.2.2.tgz", + "integrity": "sha1-IfMz6ba46v8CRo9RRupAbTRfTa0=", + "dev": true + }, "pify": { - "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/pify/download/pify-4.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-4.0.1.tgz", + "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=", "dev": true }, "pinkie": { "version": "2.0.4", - "resolved": "https://registry.npm.taobao.org/pinkie/download/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npm.taobao.org/pinkie-promise/download/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pirates": { - "version": "4.0.1", - "resolved": "https://registry.npm.taobao.org/pirates/download/pirates-4.0.1.tgz", - "integrity": "sha1-ZDqSyviUVm+RsrmG0sZpUKji+4c=", - "dev": true, - "requires": { - "node-modules-regexp": "^1.0.0" - } - }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "requires": { - "find-up": "^2.1.0" - } + "resolved": "https://registry.npm.taobao.org/pinkie/download/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true }, - "pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/pkg-up/download/pkg-up-2.0.0.tgz", - "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/pinkie-promise/download/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { - "find-up": "^2.1.0" + "pinkie": "^2.0.0" } }, - "plantuml-encoder": { - "version": "1.4.0", - "resolved": "https://registry.npm.taobao.org/plantuml-encoder/download/plantuml-encoder-1.4.0.tgz", - "integrity": "sha1-eJkwLPeF3pVr8aFn4VQg/u5Zdfc=" - }, - "please-upgrade-node": { - "version": "3.2.0", - "resolved": "https://registry.npm.taobao.org/please-upgrade-node/download/please-upgrade-node-3.2.0.tgz?cache=0&sync_timestamp=1565266069139&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fplease-upgrade-node%2Fdownload%2Fplease-upgrade-node-3.2.0.tgz", - "integrity": "sha1-rt3T+ZTJM+StmLmdmlVu+g4v6UI=", + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-4.2.0.tgz", + "integrity": "sha1-8JkTPfft5CLoHR2ESCcO6z5CYfM=", "dev": true, "requires": { - "semver-compare": "^1.0.0" + "find-up": "^4.0.0" } }, - "plop": { - "version": "2.3.0", - "resolved": "https://registry.npm.taobao.org/plop/download/plop-2.3.0.tgz", - "integrity": "sha1-6bPM+dj9vOB37nN3t1/MX1Ed9WI=", + "pnp-webpack-plugin": { + "version": "1.6.4", + "resolved": "https://registry.npm.taobao.org/pnp-webpack-plugin/download/pnp-webpack-plugin-1.6.4.tgz", + "integrity": "sha1-yXEaxNxIpoXauvyG+Lbdn434QUk=", "dev": true, "requires": { - "chalk": "^1.1.3", - "interpret": "^1.2.0", - "liftoff": "^2.5.0", - "minimist": "^1.2.0", - "node-plop": "~0.18.0", - "ora": "^3.0.0", - "v8flags": "^2.0.10" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz?cache=0&sync_timestamp=1573282949696&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npm.taobao.org/minimist/download/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz?cache=0&sync_timestamp=1573280518303&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } + "ts-pnp": "^1.1.6" } }, - "pluralize": { - "version": "7.0.0", - "resolved": "https://registry.npm.taobao.org/pluralize/download/pluralize-7.0.0.tgz", - "integrity": "sha1-KYuJ34uTsCIdv0Ia0rGx6iP8Z3c=", - "dev": true, - "optional": true - }, - "pn": { - "version": "1.1.0", - "resolved": "https://registry.npm.taobao.org/pn/download/pn-1.1.0.tgz", - "integrity": "sha1-4vTO8OIZ9GPBeas3Rj5OHs3Muvs=", - "dev": true - }, "portfinder": { - "version": "1.0.25", - "resolved": "https://registry.npm.taobao.org/portfinder/download/portfinder-1.0.25.tgz", - "integrity": "sha1-JU/TN/+6hp9LnTftwpgFnLTTXso=", + "version": "1.0.28", + "resolved": "https://registry.npm.taobao.org/portfinder/download/portfinder-1.0.28.tgz", + "integrity": "sha1-Z8RiKFK9U3TdHdkA93n1NGL6x3g=", "dev": true, "requires": { "async": "^2.6.2", "debug": "^3.1.1", - "mkdirp": "^0.5.1" + "mkdirp": "^0.5.5" }, "dependencies": { "debug": { - "version": "3.2.6", - "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.2.6.tgz", - "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=", + "version": "3.2.7", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.2.7.tgz?cache=0&sync_timestamp=1607566580543&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-3.2.7.tgz", + "integrity": "sha1-clgLfpFF+zm2Z2+cXl+xALk0F5o=", "dev": true, "requires": { "ms": "^2.1.1" } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz", - "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", - "dev": true } } }, @@ -12860,9 +8530,10 @@ "dev": true }, "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npm.taobao.org/postcss/download/postcss-7.0.27.tgz?cache=0&sync_timestamp=1581994853208&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss%2Fdownload%2Fpostcss-7.0.27.tgz", - "integrity": "sha1-zGfNxrDao3UQW3xCSoVWc0X8VNk=", + "version": "7.0.35", + "resolved": "https://registry.npm.taobao.org/postcss/download/postcss-7.0.35.tgz?cache=0&sync_timestamp=1607512891622&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss%2Fdownload%2Fpostcss-7.0.35.tgz", + "integrity": "sha1-0r4AuZj38hHYonaXQHny6SuXDiQ=", + "dev": true, "requires": { "chalk": "^2.4.2", "source-map": "^0.6.1", @@ -12872,12 +8543,14 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", - "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=" + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true }, "supports-color": { "version": "6.1.0", - "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-6.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-6.1.0.tgz", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-6.1.0.tgz?cache=0&sync_timestamp=1608033349725&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-6.1.0.tgz", "integrity": "sha1-B2Srxpxj1ayELdSGfo0CXogN+PM=", + "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -12885,9 +8558,9 @@ } }, "postcss-calc": { - "version": "7.0.2", - "resolved": "https://registry.npm.taobao.org/postcss-calc/download/postcss-calc-7.0.2.tgz?cache=0&sync_timestamp=1582014198134&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-calc%2Fdownload%2Fpostcss-calc-7.0.2.tgz", - "integrity": "sha1-UE780AjKAnMSBWiweSsWzc3oqsE=", + "version": "7.0.5", + "resolved": "https://registry.npm.taobao.org/postcss-calc/download/postcss-calc-7.0.5.tgz?cache=0&sync_timestamp=1601732582224&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-calc%2Fdownload%2Fpostcss-calc-7.0.5.tgz", + "integrity": "sha1-+KbpnxLmGcLrwjz2xIb9wVhgkz4=", "dev": true, "requires": { "postcss": "^7.0.27", @@ -12897,7 +8570,7 @@ }, "postcss-colormin": { "version": "4.0.3", - "resolved": "https://registry.npm.taobao.org/postcss-colormin/download/postcss-colormin-4.0.3.tgz", + "resolved": "https://registry.npm.taobao.org/postcss-colormin/download/postcss-colormin-4.0.3.tgz?cache=0&sync_timestamp=1603212787349&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-colormin%2Fdownload%2Fpostcss-colormin-4.0.3.tgz", "integrity": "sha1-rgYLzpPteUrHEmTwgTLVUJVr04E=", "dev": true, "requires": { @@ -12910,7 +8583,7 @@ "dependencies": { "postcss-value-parser": { "version": "3.3.1", - "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1582038102813&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", "dev": true } @@ -12918,7 +8591,7 @@ }, "postcss-convert-values": { "version": "4.0.1", - "resolved": "https://registry.npm.taobao.org/postcss-convert-values/download/postcss-convert-values-4.0.1.tgz", + "resolved": "https://registry.npm.taobao.org/postcss-convert-values/download/postcss-convert-values-4.0.1.tgz?cache=0&sync_timestamp=1603212787465&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-convert-values%2Fdownload%2Fpostcss-convert-values-4.0.1.tgz", "integrity": "sha1-yjgT7U2g+BL51DcDWE5Enr4Ymn8=", "dev": true, "requires": { @@ -12928,7 +8601,7 @@ "dependencies": { "postcss-value-parser": { "version": "3.3.1", - "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1582038102813&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", "dev": true } @@ -12945,7 +8618,7 @@ }, "postcss-discard-duplicates": { "version": "4.0.2", - "resolved": "https://registry.npm.taobao.org/postcss-discard-duplicates/download/postcss-discard-duplicates-4.0.2.tgz", + "resolved": "https://registry.npm.taobao.org/postcss-discard-duplicates/download/postcss-discard-duplicates-4.0.2.tgz?cache=0&sync_timestamp=1603212787804&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-discard-duplicates%2Fdownload%2Fpostcss-discard-duplicates-4.0.2.tgz", "integrity": "sha1-P+EzzTyCKC5VD8myORdqkge3hOs=", "dev": true, "requires": { @@ -12971,9 +8644,9 @@ } }, "postcss-load-config": { - "version": "2.1.0", - "resolved": "https://registry.npm.taobao.org/postcss-load-config/download/postcss-load-config-2.1.0.tgz", - "integrity": "sha1-yE1pK3u3tB3c7ZTuYuirMbQXsAM=", + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/postcss-load-config/download/postcss-load-config-2.1.2.tgz?cache=0&sync_timestamp=1601607668112&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-load-config%2Fdownload%2Fpostcss-load-config-2.1.2.tgz", + "integrity": "sha1-xepQTyxK7zPHNZo03jVzdyrXUCo=", "dev": true, "requires": { "cosmiconfig": "^5.0.0", @@ -12982,7 +8655,7 @@ }, "postcss-loader": { "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/postcss-loader/download/postcss-loader-3.0.0.tgz", + "resolved": "https://registry.npm.taobao.org/postcss-loader/download/postcss-loader-3.0.0.tgz?cache=0&sync_timestamp=1605790892391&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-loader%2Fdownload%2Fpostcss-loader-3.0.0.tgz", "integrity": "sha1-a5eUPkfHLYRfqeA/Jzdz1OjdbC0=", "dev": true, "requires": { @@ -12994,7 +8667,7 @@ "dependencies": { "schema-utils": { "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fschema-utils%2Fdownload%2Fschema-utils-1.0.0.tgz", + "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz", "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=", "dev": true, "requires": { @@ -13007,7 +8680,7 @@ }, "postcss-merge-longhand": { "version": "4.0.11", - "resolved": "https://registry.npm.taobao.org/postcss-merge-longhand/download/postcss-merge-longhand-4.0.11.tgz", + "resolved": "https://registry.npm.taobao.org/postcss-merge-longhand/download/postcss-merge-longhand-4.0.11.tgz?cache=0&sync_timestamp=1603212783596&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-merge-longhand%2Fdownload%2Fpostcss-merge-longhand-4.0.11.tgz", "integrity": "sha1-YvSaE+Sg7gTnuY9CuxYGLKJUniQ=", "dev": true, "requires": { @@ -13019,7 +8692,7 @@ "dependencies": { "postcss-value-parser": { "version": "3.3.1", - "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1582038102813&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", "dev": true } @@ -13027,7 +8700,7 @@ }, "postcss-merge-rules": { "version": "4.0.3", - "resolved": "https://registry.npm.taobao.org/postcss-merge-rules/download/postcss-merge-rules-4.0.3.tgz", + "resolved": "https://registry.npm.taobao.org/postcss-merge-rules/download/postcss-merge-rules-4.0.3.tgz?cache=0&sync_timestamp=1603212783716&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-merge-rules%2Fdownload%2Fpostcss-merge-rules-4.0.3.tgz", "integrity": "sha1-NivqT/Wh+Y5AdacTxsslrv75plA=", "dev": true, "requires": { @@ -13041,7 +8714,7 @@ "dependencies": { "postcss-selector-parser": { "version": "3.1.2", - "resolved": "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-3.1.2.tgz", + "resolved": "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-3.1.2.tgz?cache=0&sync_timestamp=1601045448419&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-selector-parser%2Fdownload%2Fpostcss-selector-parser-3.1.2.tgz", "integrity": "sha1-sxD1xMD9r3b5SQK7qjDbaqhPUnA=", "dev": true, "requires": { @@ -13054,7 +8727,7 @@ }, "postcss-minify-font-values": { "version": "4.0.2", - "resolved": "https://registry.npm.taobao.org/postcss-minify-font-values/download/postcss-minify-font-values-4.0.2.tgz", + "resolved": "https://registry.npm.taobao.org/postcss-minify-font-values/download/postcss-minify-font-values-4.0.2.tgz?cache=0&sync_timestamp=1603212783911&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-minify-font-values%2Fdownload%2Fpostcss-minify-font-values-4.0.2.tgz", "integrity": "sha1-zUw0TM5HQ0P6xdgiBqssvLiv1aY=", "dev": true, "requires": { @@ -13064,7 +8737,7 @@ "dependencies": { "postcss-value-parser": { "version": "3.3.1", - "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1582038102813&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", "dev": true } @@ -13072,7 +8745,7 @@ }, "postcss-minify-gradients": { "version": "4.0.2", - "resolved": "https://registry.npm.taobao.org/postcss-minify-gradients/download/postcss-minify-gradients-4.0.2.tgz", + "resolved": "https://registry.npm.taobao.org/postcss-minify-gradients/download/postcss-minify-gradients-4.0.2.tgz?cache=0&sync_timestamp=1603212784003&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-minify-gradients%2Fdownload%2Fpostcss-minify-gradients-4.0.2.tgz", "integrity": "sha1-k7KcL/UJnFNe7NpWxKpuZlpmNHE=", "dev": true, "requires": { @@ -13084,7 +8757,7 @@ "dependencies": { "postcss-value-parser": { "version": "3.3.1", - "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1582038102813&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", "dev": true } @@ -13106,7 +8779,7 @@ "dependencies": { "postcss-value-parser": { "version": "3.3.1", - "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1582038102813&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", "dev": true } @@ -13114,7 +8787,7 @@ }, "postcss-minify-selectors": { "version": "4.0.2", - "resolved": "https://registry.npm.taobao.org/postcss-minify-selectors/download/postcss-minify-selectors-4.0.2.tgz", + "resolved": "https://registry.npm.taobao.org/postcss-minify-selectors/download/postcss-minify-selectors-4.0.2.tgz?cache=0&sync_timestamp=1603212784204&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-minify-selectors%2Fdownload%2Fpostcss-minify-selectors-4.0.2.tgz", "integrity": "sha1-4uXrQL/uUA0M2SQ1APX46kJi+9g=", "dev": true, "requires": { @@ -13126,7 +8799,7 @@ "dependencies": { "postcss-selector-parser": { "version": "3.1.2", - "resolved": "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-3.1.2.tgz", + "resolved": "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-3.1.2.tgz?cache=0&sync_timestamp=1601045448419&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-selector-parser%2Fdownload%2Fpostcss-selector-parser-3.1.2.tgz", "integrity": "sha1-sxD1xMD9r3b5SQK7qjDbaqhPUnA=", "dev": true, "requires": { @@ -13137,29 +8810,49 @@ } } }, + "postcss-modules": { + "version": "3.2.2", + "resolved": "https://registry.npm.taobao.org/postcss-modules/download/postcss-modules-3.2.2.tgz?cache=0&sync_timestamp=1606641106141&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-modules%2Fdownload%2Fpostcss-modules-3.2.2.tgz", + "integrity": "sha1-7jkN4PnxjnYeF3jfub4maFwCxR8=", + "dev": true, + "requires": { + "generic-names": "^2.0.1", + "icss-replace-symbols": "^1.1.0", + "lodash.camelcase": "^4.3.0", + "postcss": "^7.0.32", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.2", + "postcss-modules-scope": "^2.2.0", + "postcss-modules-values": "^3.0.0", + "string-hash": "^1.1.1" + } + }, "postcss-modules-extract-imports": { "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/postcss-modules-extract-imports/download/postcss-modules-extract-imports-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-modules-extract-imports%2Fdownload%2Fpostcss-modules-extract-imports-2.0.0.tgz", + "resolved": "https://registry.npm.taobao.org/postcss-modules-extract-imports/download/postcss-modules-extract-imports-2.0.0.tgz?cache=0&sync_timestamp=1602588238811&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-modules-extract-imports%2Fdownload%2Fpostcss-modules-extract-imports-2.0.0.tgz", "integrity": "sha1-gYcZoa4doyX5gyRGsBE27rSTzX4=", + "dev": true, "requires": { "postcss": "^7.0.5" } }, "postcss-modules-local-by-default": { - "version": "3.0.2", - "resolved": "https://registry.npm.taobao.org/postcss-modules-local-by-default/download/postcss-modules-local-by-default-3.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-modules-local-by-default%2Fdownload%2Fpostcss-modules-local-by-default-3.0.2.tgz", - "integrity": "sha1-6KZWG+kUqvPAUodjd1JMqQ27eRU=", + "version": "3.0.3", + "resolved": "https://registry.npm.taobao.org/postcss-modules-local-by-default/download/postcss-modules-local-by-default-3.0.3.tgz?cache=0&sync_timestamp=1602587661752&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-modules-local-by-default%2Fdownload%2Fpostcss-modules-local-by-default-3.0.3.tgz", + "integrity": "sha1-uxTgzHgnnVBNvcv9fgyiiZP/u7A=", + "dev": true, "requires": { "icss-utils": "^4.1.1", - "postcss": "^7.0.16", + "postcss": "^7.0.32", "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.0" + "postcss-value-parser": "^4.1.0" } }, "postcss-modules-scope": { "version": "2.2.0", - "resolved": "https://registry.npm.taobao.org/postcss-modules-scope/download/postcss-modules-scope-2.2.0.tgz", + "resolved": "https://registry.npm.taobao.org/postcss-modules-scope/download/postcss-modules-scope-2.2.0.tgz?cache=0&sync_timestamp=1602593225142&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-modules-scope%2Fdownload%2Fpostcss-modules-scope-2.2.0.tgz", "integrity": "sha1-OFyuATzHdD9afXYC0Qc6iequYu4=", + "dev": true, "requires": { "postcss": "^7.0.6", "postcss-selector-parser": "^6.0.0" @@ -13169,6 +8862,7 @@ "version": "3.0.0", "resolved": "https://registry.npm.taobao.org/postcss-modules-values/download/postcss-modules-values-3.0.0.tgz", "integrity": "sha1-W1AA1uuuKbQlUwG0o6VFdEI+fxA=", + "dev": true, "requires": { "icss-utils": "^4.0.0", "postcss": "^7.0.6" @@ -13196,7 +8890,7 @@ "dependencies": { "postcss-value-parser": { "version": "3.3.1", - "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1582038102813&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", "dev": true } @@ -13204,7 +8898,7 @@ }, "postcss-normalize-positions": { "version": "4.0.2", - "resolved": "https://registry.npm.taobao.org/postcss-normalize-positions/download/postcss-normalize-positions-4.0.2.tgz", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-positions/download/postcss-normalize-positions-4.0.2.tgz?cache=0&sync_timestamp=1603212712085&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-normalize-positions%2Fdownload%2Fpostcss-normalize-positions-4.0.2.tgz", "integrity": "sha1-BfdX+E8mBDc3g2ipH4ky1LECkX8=", "dev": true, "requires": { @@ -13216,7 +8910,7 @@ "dependencies": { "postcss-value-parser": { "version": "3.3.1", - "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1582038102813&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", "dev": true } @@ -13236,7 +8930,7 @@ "dependencies": { "postcss-value-parser": { "version": "3.3.1", - "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1582038102813&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", "dev": true } @@ -13255,7 +8949,7 @@ "dependencies": { "postcss-value-parser": { "version": "3.3.1", - "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1582038102813&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", "dev": true } @@ -13274,7 +8968,7 @@ "dependencies": { "postcss-value-parser": { "version": "3.3.1", - "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1582038102813&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", "dev": true } @@ -13293,7 +8987,7 @@ "dependencies": { "postcss-value-parser": { "version": "3.3.1", - "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1582038102813&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", "dev": true } @@ -13313,7 +9007,7 @@ "dependencies": { "postcss-value-parser": { "version": "3.3.1", - "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1582038102813&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", "dev": true } @@ -13331,7 +9025,7 @@ "dependencies": { "postcss-value-parser": { "version": "3.3.1", - "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1582038102813&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", "dev": true } @@ -13339,7 +9033,7 @@ }, "postcss-ordered-values": { "version": "4.1.2", - "resolved": "https://registry.npm.taobao.org/postcss-ordered-values/download/postcss-ordered-values-4.1.2.tgz", + "resolved": "https://registry.npm.taobao.org/postcss-ordered-values/download/postcss-ordered-values-4.1.2.tgz?cache=0&sync_timestamp=1603212785171&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-ordered-values%2Fdownload%2Fpostcss-ordered-values-4.1.2.tgz", "integrity": "sha1-DPdcgg7H1cTSgBiVWeC1ceusDu4=", "dev": true, "requires": { @@ -13350,7 +9044,7 @@ "dependencies": { "postcss-value-parser": { "version": "3.3.1", - "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1582038102813&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", "dev": true } @@ -13367,7 +9061,7 @@ }, "postcss-reduce-initial": { "version": "4.0.3", - "resolved": "https://registry.npm.taobao.org/postcss-reduce-initial/download/postcss-reduce-initial-4.0.3.tgz", + "resolved": "https://registry.npm.taobao.org/postcss-reduce-initial/download/postcss-reduce-initial-4.0.3.tgz?cache=0&sync_timestamp=1603212785269&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-reduce-initial%2Fdownload%2Fpostcss-reduce-initial-4.0.3.tgz", "integrity": "sha1-f9QuvqXpyBRgljniwuhK4nC6SN8=", "dev": true, "requires": { @@ -13379,7 +9073,7 @@ }, "postcss-reduce-transforms": { "version": "4.0.2", - "resolved": "https://registry.npm.taobao.org/postcss-reduce-transforms/download/postcss-reduce-transforms-4.0.2.tgz", + "resolved": "https://registry.npm.taobao.org/postcss-reduce-transforms/download/postcss-reduce-transforms-4.0.2.tgz?cache=0&sync_timestamp=1603212785466&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-reduce-transforms%2Fdownload%2Fpostcss-reduce-transforms-4.0.2.tgz", "integrity": "sha1-F++kBerMbge+NBSlyi0QdGgdTik=", "dev": true, "requires": { @@ -13391,20 +9085,22 @@ "dependencies": { "postcss-value-parser": { "version": "3.3.1", - "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1582038102813&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", "dev": true } } }, "postcss-selector-parser": { - "version": "6.0.2", - "resolved": "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-6.0.2.tgz", - "integrity": "sha1-k0z3mdAWyDQRhZ4J3Oyt4BKG7Fw=", + "version": "6.0.4", + "resolved": "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-6.0.4.tgz?cache=0&sync_timestamp=1601045448419&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-selector-parser%2Fdownload%2Fpostcss-selector-parser-6.0.4.tgz", + "integrity": "sha1-VgdaE4CgRgTDiwY+p3Z6Epr1wrM=", + "dev": true, "requires": { "cssesc": "^3.0.0", "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "uniq": "^1.0.1", + "util-deprecate": "^1.0.2" } }, "postcss-svgo": { @@ -13421,7 +9117,7 @@ "dependencies": { "postcss-value-parser": { "version": "3.3.1", - "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1582038102813&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", "dev": true } @@ -13439,13 +9135,14 @@ } }, "postcss-value-parser": { - "version": "4.0.3", - "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-4.0.3.tgz?cache=0&sync_timestamp=1582038102813&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-4.0.3.tgz", - "integrity": "sha1-ZR/0WTqp7ajV0NZlk6JBeurrMl0=" + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-4.1.0.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-4.1.0.tgz", + "integrity": "sha1-RD9qIM7WSBor2k+oUypuVdeJoss=", + "dev": true }, "posthtml": { "version": "0.9.2", - "resolved": "https://registry.npm.taobao.org/posthtml/download/posthtml-0.9.2.tgz", + "resolved": "https://registry.npm.taobao.org/posthtml/download/posthtml-0.9.2.tgz?cache=0&sync_timestamp=1606388295556&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fposthtml%2Fdownload%2Fposthtml-0.9.2.tgz", "integrity": "sha1-9MBtufZ7Yf0XxOJW5+PZUVv3Jv0=", "dev": true, "requires": { @@ -13455,7 +9152,7 @@ }, "posthtml-parser": { "version": "0.2.1", - "resolved": "https://registry.npm.taobao.org/posthtml-parser/download/posthtml-parser-0.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fposthtml-parser%2Fdownload%2Fposthtml-parser-0.2.1.tgz", + "resolved": "https://registry.npm.taobao.org/posthtml-parser/download/posthtml-parser-0.2.1.tgz", "integrity": "sha1-NdUw3jhnQMK6JP8usvrznM3ycd0=", "dev": true, "requires": { @@ -13475,18 +9172,18 @@ } }, "posthtml-rename-id": { - "version": "1.0.11", - "resolved": "https://registry.npm.taobao.org/posthtml-rename-id/download/posthtml-rename-id-1.0.11.tgz", - "integrity": "sha1-AigaHkSCqjyMMPeYz5qIjjLZJ1w=", + "version": "1.0.12", + "resolved": "https://registry.npm.taobao.org/posthtml-rename-id/download/posthtml-rename-id-1.0.12.tgz", + "integrity": "sha1-z39us3FGvxr6wx5o8YxswZrmFDM=", "dev": true, "requires": { "escape-string-regexp": "1.0.5" } }, "posthtml-render": { - "version": "1.2.0", - "resolved": "https://registry.npm.taobao.org/posthtml-render/download/posthtml-render-1.2.0.tgz?cache=0&sync_timestamp=1582613308689&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fposthtml-render%2Fdownload%2Fposthtml-render-1.2.0.tgz", - "integrity": "sha1-PfDIAKi7uVr1g6lHSFIEaUd63fQ=", + "version": "1.4.0", + "resolved": "https://registry.npm.taobao.org/posthtml-render/download/posthtml-render-1.4.0.tgz?cache=0&sync_timestamp=1605682819222&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fposthtml-render%2Fdownload%2Fposthtml-render-1.4.0.tgz", + "integrity": "sha1-QBFAcMRYgcrLkzR9rj7/U6+8/xM=", "dev": true }, "posthtml-svg-mode": { @@ -13503,95 +9200,41 @@ }, "prelude-ls": { "version": "1.1.2", - "resolved": "https://registry.npm.taobao.org/prelude-ls/download/prelude-ls-1.1.2.tgz", + "resolved": "https://registry.npm.taobao.org/prelude-ls/download/prelude-ls-1.1.2.tgz?cache=0&sync_timestamp=1585868608597&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fprelude-ls%2Fdownload%2Fprelude-ls-1.1.2.tgz", "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", "dev": true }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npm.taobao.org/preserve/download/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/prepend-http/download/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", "dev": true }, "prettier": { "version": "1.19.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", - "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", + "resolved": "https://registry.npm.taobao.org/prettier/download/prettier-1.19.1.tgz?cache=0&sync_timestamp=1606523097359&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fprettier%2Fdownload%2Fprettier-1.19.1.tgz", + "integrity": "sha1-99f1/4qc2HKnvkyhQglZVqYHl8s=", "dev": true }, "prettier-linter-helpers": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "resolved": "https://registry.npm.taobao.org/prettier-linter-helpers/download/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha1-0j1B/hN1ZG3i0BBNNFSjAIgCz3s=", "dev": true, "requires": { "fast-diff": "^1.1.2" } }, - "pretty": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/pretty/download/pretty-2.0.0.tgz", - "integrity": "sha1-rbx5YLe7/iiaVX3F9zdhmiINBqU=", - "dev": true, - "requires": { - "condense-newlines": "^0.2.1", - "extend-shallow": "^2.0.1", - "js-beautify": "^1.6.12" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, "pretty-error": { - "version": "2.1.1", - "resolved": "https://registry.npm.taobao.org/pretty-error/download/pretty-error-2.1.1.tgz", - "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", - "dev": true, - "requires": { - "renderkid": "^2.0.1", - "utila": "~0.4" - } - }, - "pretty-format": { - "version": "23.6.0", - "resolved": "https://registry.npm.taobao.org/pretty-format/download/pretty-format-23.6.0.tgz?cache=0&sync_timestamp=1579655022191&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpretty-format%2Fdownload%2Fpretty-format-23.6.0.tgz", - "integrity": "sha1-XqrI7razO5h7f+YJfqaooUarV2A=", + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/pretty-error/download/pretty-error-2.1.2.tgz", + "integrity": "sha1-von4LYGxyG7I/fvDhQRYgnJ/k7Y=", "dev": true, "requires": { - "ansi-regex": "^3.0.0", - "ansi-styles": "^3.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-3.2.1.tgz", - "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - } + "lodash": "^4.17.20", + "renderkid": "^2.0.4" } }, - "printj": { - "version": "1.1.2", - "resolved": "https://registry.npm.taobao.org/printj/download/printj-1.1.2.tgz", - "integrity": "sha1-2Q3rKXWoufYA+zoclOP0xTx4oiI=" - }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npm.taobao.org/private/download/private-0.1.8.tgz", - "integrity": "sha1-I4Hts2ifelPWUxkAYPz4ItLzaP8=", - "dev": true - }, "process": { "version": "0.11.10", "resolved": "https://registry.npm.taobao.org/process/download/process-0.11.10.tgz", @@ -13601,7 +9244,8 @@ "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-2.0.1.tgz", - "integrity": "sha1-eCDZsWEgzFXKmud5JoCufbptf+I=" + "integrity": "sha1-eCDZsWEgzFXKmud5JoCufbptf+I=", + "dev": true }, "progress": { "version": "2.0.3", @@ -13615,28 +9259,6 @@ "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", "dev": true }, - "prompts": { - "version": "0.1.14", - "resolved": "https://registry.npm.taobao.org/prompts/download/prompts-0.1.14.tgz", - "integrity": "sha1-qOFcYSxcnsj4ERhH3zM3ycvUQ7I=", - "dev": true, - "requires": { - "kleur": "^2.0.1", - "sisteransi": "^0.1.1" - } - }, - "property-expr": { - "version": "1.5.1", - "resolved": "https://registry.npm.taobao.org/property-expr/download/property-expr-1.5.1.tgz?cache=0&sync_timestamp=1583512528282&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fproperty-expr%2Fdownload%2Fproperty-expr-1.5.1.tgz", - "integrity": "sha1-IuhwaJSgyOKNWHNYBPa6OjZzMU8=", - "dev": true - }, - "proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npm.taobao.org/proto-list/download/proto-list-1.2.4.tgz", - "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", - "dev": true - }, "proxy-addr": { "version": "2.0.6", "resolved": "https://registry.npm.taobao.org/proxy-addr/download/proxy-addr-2.0.6.tgz?cache=0&sync_timestamp=1582556112011&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fproxy-addr%2Fdownload%2Fproxy-addr-2.0.6.tgz", @@ -13656,12 +9278,13 @@ "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npm.taobao.org/pseudomap/download/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true }, "psl": { - "version": "1.7.0", - "resolved": "https://registry.npm.taobao.org/psl/download/psl-1.7.0.tgz?cache=0&sync_timestamp=1577538558975&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpsl%2Fdownload%2Fpsl-1.7.0.tgz", - "integrity": "sha1-8cTEeo75cWfepda79IFtc26ISjw=", + "version": "1.8.0", + "resolved": "https://registry.npm.taobao.org/psl/download/psl-1.8.0.tgz", + "integrity": "sha1-kyb4vPsBOtzABf3/BWrM4CDlHCQ=", "dev": true }, "public-encrypt": { @@ -13676,6 +9299,14 @@ "parse-asn1": "^5.0.0", "randombytes": "^2.0.1", "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-4.11.9.tgz", + "integrity": "sha1-JtVWgpRY+dHoH8SJUkk9C6NQeCg=", + "dev": true + } } }, "pump": { @@ -13714,7 +9345,8 @@ "punycode": { "version": "2.1.1", "resolved": "https://registry.npm.taobao.org/punycode/download/punycode-2.1.1.tgz", - "integrity": "sha1-tYsBCsQMIsVldhbI0sLALHv0eew=" + "integrity": "sha1-tYsBCsQMIsVldhbI0sLALHv0eew=", + "dev": true }, "q": { "version": "1.5.1", @@ -13730,7 +9362,7 @@ }, "query-string": { "version": "4.3.4", - "resolved": "https://registry.npm.taobao.org/query-string/download/query-string-4.3.4.tgz", + "resolved": "https://registry.npm.taobao.org/query-string/download/query-string-4.3.4.tgz?cache=0&sync_timestamp=1604609999412&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fquery-string%2Fdownload%2Fquery-string-4.3.4.tgz", "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", "dev": true, "requires": { @@ -13751,30 +9383,11 @@ "dev": true }, "querystringify": { - "version": "2.1.1", - "resolved": "https://registry.npm.taobao.org/querystringify/download/querystringify-2.1.1.tgz", - "integrity": "sha1-YOWl/WSn+L+k0qsu1v30yFutFU4=", + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/querystringify/download/querystringify-2.2.0.tgz", + "integrity": "sha1-M0WUG0FTy50ILY7uTNogFqmu9/Y=", "dev": true }, - "randomatic": { - "version": "3.1.1", - "resolved": "https://registry.npm.taobao.org/randomatic/download/randomatic-3.1.1.tgz", - "integrity": "sha1-t3bvxZN1mE42xTey9RofCv8Noe0=", - "dev": true, - "requires": { - "is-number": "^4.0.0", - "kind-of": "^6.0.0", - "math-random": "^1.0.1" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npm.taobao.org/is-number/download/is-number-4.0.0.tgz", - "integrity": "sha1-ACbjf1RU1z41bf5lZGmYZ8an8P8=", - "dev": true - } - } - }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npm.taobao.org/randombytes/download/randombytes-2.1.0.tgz", @@ -13800,13 +9413,6 @@ "integrity": "sha1-PPNwI9GZ4cJNGlW4SADC8+ZGgDE=", "dev": true }, - "raphael": { - "version": "git+https://github.com/nhn/raphael.git#78a6ed3ec269f33b6457b0ec66f8c3d1f2ed70e0", - "from": "git+https://github.com/nhn/raphael.git#2.2.0-c", - "requires": { - "eve": "git://github.com/adobe-webplatform/eve.git#eef80ed" - } - }, "raw-body": { "version": "2.4.0", "resolved": "https://registry.npm.taobao.org/raw-body/download/raw-body-2.4.0.tgz", @@ -13819,188 +9425,70 @@ "unpipe": "1.0.0" } }, - "raw-loader": { - "version": "0.5.1", - "resolved": "https://registry.npm.taobao.org/raw-loader/download/raw-loader-0.5.1.tgz?cache=0&sync_timestamp=1574695040943&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fraw-loader%2Fdownload%2Fraw-loader-0.5.1.tgz", - "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=" - }, "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npm.taobao.org/read-pkg/download/read-pkg-1.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fread-pkg%2Fdownload%2Fread-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - }, - "dependencies": { - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npm.taobao.org/path-type/download/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/read-pkg-up/download/read-pkg-up-1.0.1.tgz?cache=0&sync_timestamp=1575620436254&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fread-pkg-up%2Fdownload%2Fread-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/read-pkg/download/read-pkg-5.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fread-pkg%2Fdownload%2Fread-pkg-5.2.0.tgz", + "integrity": "sha1-e/KVQ4yloz5WzTDgU7NO5yUMk8w=", "dev": true, "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - } + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" } }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.7.tgz?cache=0&sync_timestamp=1581622984924&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freadable-stream%2Fdownload%2Freadable-stream-2.3.7.tgz", "integrity": "sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c=", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npm.taobao.org/readdirp/download/readdirp-2.2.1.tgz", - "integrity": "sha1-DodiKjMlqjPokihcr4tOhGUppSU=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "realpath-native": { - "version": "1.1.0", - "resolved": "https://registry.npm.taobao.org/realpath-native/download/realpath-native-1.1.0.tgz", - "integrity": "sha1-IAMpT+oj+wZy8kduviL89Jii1lw=", - "dev": true, - "requires": { - "util.promisify": "^1.0.0" - } - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npm.taobao.org/rechoir/download/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "requires": { - "resolve": "^1.1.6" - } - }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/redent/download/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", "dev": true, "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" - }, - "dependencies": { - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npm.taobao.org/get-stdin/download/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npm.taobao.org/indent-string/download/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/strip-indent/download/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true, - "requires": { - "get-stdin": "^4.0.1" - } - } + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npm.taobao.org/readdirp/download/readdirp-3.5.0.tgz", + "integrity": "sha1-m6dMAZsV02UnjS6Ru4xI17TULJ4=", + "dev": true, + "requires": { + "picomatch": "^2.2.1" } }, "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npm.taobao.org/regenerate/download/regenerate-1.4.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregenerate%2Fdownload%2Fregenerate-1.4.0.tgz", - "integrity": "sha1-SoVuxLVuQHfFV1icroXnpMiGmhE=", + "version": "1.4.2", + "resolved": "https://registry.npm.taobao.org/regenerate/download/regenerate-1.4.2.tgz?cache=0&sync_timestamp=1604218439731&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregenerate%2Fdownload%2Fregenerate-1.4.2.tgz", + "integrity": "sha1-uTRtiCfo9aMve6KWN9OYtpAUhIo=", "dev": true }, "regenerate-unicode-properties": { - "version": "8.1.0", - "resolved": "https://registry.npm.taobao.org/regenerate-unicode-properties/download/regenerate-unicode-properties-8.1.0.tgz", - "integrity": "sha1-71Hg8OpK1CS3e/fLQfPgFccKPw4=", + "version": "8.2.0", + "resolved": "https://registry.npm.taobao.org/regenerate-unicode-properties/download/regenerate-unicode-properties-8.2.0.tgz?cache=0&sync_timestamp=1583975113523&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregenerate-unicode-properties%2Fdownload%2Fregenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha1-5d5xEdZV57pgwFfb6f83yH5lzew=", "dev": true, "requires": { "regenerate": "^1.4.0" } }, "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.11.1.tgz?cache=0&sync_timestamp=1582505712016&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregenerator-runtime%2Fdownload%2Fregenerator-runtime-0.11.1.tgz", - "integrity": "sha1-vgWtf5v30i4Fb5cmzuUBf78Z4uk=" + "version": "0.13.7", + "resolved": "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.13.7.tgz", + "integrity": "sha1-ysLazIoepnX+qrrriugziYrkb1U=", + "dev": true }, "regenerator-transform": { - "version": "0.14.2", - "resolved": "https://registry.npm.taobao.org/regenerator-transform/download/regenerator-transform-0.14.2.tgz?cache=0&sync_timestamp=1582478716594&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregenerator-transform%2Fdownload%2Fregenerator-transform-0.14.2.tgz", - "integrity": "sha1-lJ2dh0aP+I1afkc067mUqJLeH/I=", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4", - "private": "^0.1.8" - } - }, - "regex-cache": { - "version": "0.4.4", - "resolved": "https://registry.npm.taobao.org/regex-cache/download/regex-cache-0.4.4.tgz", - "integrity": "sha1-db3FiioUls7EihKDW8VMjVYjNt0=", + "version": "0.14.5", + "resolved": "https://registry.npm.taobao.org/regenerator-transform/download/regenerator-transform-0.14.5.tgz", + "integrity": "sha1-yY2hVGg2ccnE3LFuznNlF+G3/rQ=", "dev": true, "requires": { - "is-equal-shallow": "^0.1.3" + "@babel/runtime": "^7.8.4" } }, "regex-not": { @@ -14021,39 +9509,59 @@ "requires": { "define-properties": "^1.1.3", "es-abstract": "^1.17.0-next.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npm.taobao.org/es-abstract/download/es-abstract-1.17.7.tgz", + "integrity": "sha1-pN5hsvZpifx0IWdsHLl4dXOs5Uw=", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } } }, "regexpp": { - "version": "1.1.0", - "resolved": "https://registry.npm.taobao.org/regexpp/download/regexpp-1.1.0.tgz?cache=0&sync_timestamp=1567160849322&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregexpp%2Fdownload%2Fregexpp-1.1.0.tgz", - "integrity": "sha1-DjUW3Qt5BPQT0tQZPc5GGMOmias=", - "dev": true, - "optional": true + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/regexpp/download/regexpp-2.0.1.tgz", + "integrity": "sha1-jRnTHPYySCtYkEn4KB+T28uk0H8=", + "dev": true }, "regexpu-core": { - "version": "4.6.0", - "resolved": "https://registry.npm.taobao.org/regexpu-core/download/regexpu-core-4.6.0.tgz?cache=0&sync_timestamp=1568375270709&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregexpu-core%2Fdownload%2Fregexpu-core-4.6.0.tgz", - "integrity": "sha1-IDfBizJ8/Oim/qKk7EQfJDKvuLY=", + "version": "4.7.1", + "resolved": "https://registry.npm.taobao.org/regexpu-core/download/regexpu-core-4.7.1.tgz?cache=0&sync_timestamp=1600413905865&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregexpu-core%2Fdownload%2Fregexpu-core-4.7.1.tgz", + "integrity": "sha1-LepamgcjMpj78NuR+pq8TG4PitY=", "dev": true, "requires": { "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.1.0", - "regjsgen": "^0.5.0", - "regjsparser": "^0.6.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.1.0" + "unicode-match-property-value-ecmascript": "^1.2.0" } }, "regjsgen": { - "version": "0.5.1", - "resolved": "https://registry.npm.taobao.org/regjsgen/download/regjsgen-0.5.1.tgz", - "integrity": "sha1-SPC/Gl6iBRlpKcDZeYtC0e2YRDw=", + "version": "0.5.2", + "resolved": "https://registry.npm.taobao.org/regjsgen/download/regjsgen-0.5.2.tgz", + "integrity": "sha1-kv8pX7He7L9uzaslQ9IH6RqjNzM=", "dev": true }, "regjsparser": { - "version": "0.6.3", - "resolved": "https://registry.npm.taobao.org/regjsparser/download/regjsparser-0.6.3.tgz", - "integrity": "sha1-dBksWAXTXp9evjwftbQNQKijhGA=", + "version": "0.6.4", + "resolved": "https://registry.npm.taobao.org/regjsparser/download/regjsparser-0.6.4.tgz?cache=0&sync_timestamp=1583896806843&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregjsparser%2Fdownload%2Fregjsparser-0.6.4.tgz", + "integrity": "sha1-p2n4aEMIQBpm6bUp0kNv9NBmYnI=", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -14061,7 +9569,7 @@ "dependencies": { "jsesc": { "version": "0.5.0", - "resolved": "https://registry.npm.taobao.org/jsesc/download/jsesc-0.5.0.tgz", + "resolved": "https://registry.npm.taobao.org/jsesc/download/jsesc-0.5.0.tgz?cache=0&sync_timestamp=1603891198638&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjsesc%2Fdownload%2Fjsesc-0.5.0.tgz", "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", "dev": true } @@ -14080,16 +9588,16 @@ "dev": true }, "renderkid": { - "version": "2.0.3", - "resolved": "https://registry.npm.taobao.org/renderkid/download/renderkid-2.0.3.tgz", - "integrity": "sha1-OAF5wv9a4TZcUivy/Pz/AcW3QUk=", + "version": "2.0.5", + "resolved": "https://registry.npm.taobao.org/renderkid/download/renderkid-2.0.5.tgz?cache=0&sync_timestamp=1609588610014&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frenderkid%2Fdownload%2Frenderkid-2.0.5.tgz", + "integrity": "sha1-SDsaxZxmAaswp6WWpZZcq8z90KU=", "dev": true, "requires": { - "css-select": "^1.1.0", + "css-select": "^2.0.2", "dom-converter": "^0.2", - "htmlparser2": "^3.3.0", - "strip-ansi": "^3.0.0", - "utila": "^0.4.0" + "htmlparser2": "^3.10.1", + "lodash": "^4.17.20", + "strip-ansi": "^3.0.0" }, "dependencies": { "ansi-regex": { @@ -14098,34 +9606,6 @@ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, - "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npm.taobao.org/css-select/download/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", - "dev": true, - "requires": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" - } - }, - "css-what": { - "version": "2.1.3", - "resolved": "https://registry.npm.taobao.org/css-what/download/css-what-2.1.3.tgz", - "integrity": "sha1-ptdgRXM2X+dGhsPzEcVlE9iChfI=", - "dev": true - }, - "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npm.taobao.org/domutils/download/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", - "dev": true, - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz?cache=0&sync_timestamp=1573280518303&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-3.0.1.tgz", @@ -14149,15 +9629,6 @@ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npm.taobao.org/repeating/download/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "requires": { - "is-finite": "^1.0.0" - } - }, "request": { "version": "2.88.2", "resolved": "https://registry.npm.taobao.org/request/download/request-2.88.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frequest%2Fdownload%2Frequest-2.88.2.tgz", @@ -14186,46 +9657,17 @@ "uuid": "^3.3.2" } }, - "request-promise-core": { - "version": "1.1.3", - "resolved": "https://registry.npm.taobao.org/request-promise-core/download/request-promise-core-1.1.3.tgz", - "integrity": "sha1-6aPAgbUTgN/qZ3M2Bh/qh5qCnuk=", - "dev": true, - "requires": { - "lodash": "^4.17.15" - } - }, - "request-promise-native": { - "version": "1.0.8", - "resolved": "https://registry.npm.taobao.org/request-promise-native/download/request-promise-native-1.0.8.tgz?cache=0&sync_timestamp=1572829762814&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frequest-promise-native%2Fdownload%2Frequest-promise-native-1.0.8.tgz", - "integrity": "sha1-pFW5YLgm5E4r+Jma9k3/K/5YyzY=", - "dev": true, - "requires": { - "request-promise-core": "1.1.3", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - } - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npm.taobao.org/require-directory/download/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true }, "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/require-main-filename/download/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" - }, - "require-uncached": { - "version": "1.0.3", - "resolved": "https://registry.npm.taobao.org/require-uncached/download/require-uncached-1.0.3.tgz", - "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", - "dev": true, - "optional": true, - "requires": { - "caller-path": "^0.1.0", - "resolve-from": "^1.0.0" - } + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/require-main-filename/download/require-main-filename-2.0.0.tgz", + "integrity": "sha1-0LMp7MfMD2Fkn2IhW+aa9UqomJs=", + "dev": true }, "requires-port": { "version": "1.0.0", @@ -14233,23 +9675,18 @@ "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", "dev": true }, - "reselect": { - "version": "3.0.1", - "resolved": "https://registry.npm.taobao.org/reselect/download/reselect-3.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freselect%2Fdownload%2Freselect-3.0.1.tgz", - "integrity": "sha1-79qpjqdFEyTQkrKyFjpqHXqaIUc=", - "dev": true - }, "resize-observer-polyfill": { "version": "1.5.1", "resolved": "https://registry.npm.taobao.org/resize-observer-polyfill/download/resize-observer-polyfill-1.5.1.tgz", "integrity": "sha1-DpAg3T0hAkRY1OvSfiPkAmmBBGQ=" }, "resolve": { - "version": "1.15.1", - "resolved": "https://registry.npm.taobao.org/resolve/download/resolve-1.15.1.tgz?cache=0&sync_timestamp=1580943346382&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fresolve%2Fdownload%2Fresolve-1.15.1.tgz", - "integrity": "sha1-J73N7/6vLWJEuVuw+fS0ZTRR8+g=", + "version": "1.19.0", + "resolved": "https://registry.npm.taobao.org/resolve/download/resolve-1.19.0.tgz", + "integrity": "sha1-GvW/YwQJc0oGfK4pMYqsf6KaJnw=", "dev": true, "requires": { + "is-core-module": "^2.1.0", "path-parse": "^1.0.6" } }, @@ -14260,32 +9697,13 @@ "dev": true, "requires": { "resolve-from": "^3.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/resolve-from/download/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - } - } - }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/resolve-dir/download/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" } }, "resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/resolve-from/download/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", - "dev": true, - "optional": true + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/resolve-from/download/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true }, "resolve-url": { "version": "0.2.1", @@ -14346,25 +9764,10 @@ "inherits": "^2.0.1" } }, - "rsvp": { - "version": "3.6.2", - "resolved": "https://registry.npm.taobao.org/rsvp/download/rsvp-3.6.2.tgz", - "integrity": "sha1-LpZJFZmpbN4bUV1WdKj3qRRSkmo=", - "dev": true - }, "run-async": { - "version": "2.4.0", - "resolved": "https://registry.npm.taobao.org/run-async/download/run-async-2.4.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frun-async%2Fdownload%2Frun-async-2.4.0.tgz", - "integrity": "sha1-5ZBUpbhods+uB/Qx0Yy63cWU8eg=", - "dev": true, - "requires": { - "is-promise": "^2.1.0" - } - }, - "run-node": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/run-node/download/run-node-1.0.0.tgz", - "integrity": "sha1-RrULlGoqotSUeuHYhumFb9nKvl4=", + "version": "2.4.1", + "resolved": "https://registry.npm.taobao.org/run-async/download/run-async-2.4.1.tgz", + "integrity": "sha1-hEDsz5nqPnC9QJ1JqriOEMGJpFU=", "dev": true }, "run-queue": { @@ -14376,76 +9779,10 @@ "aproba": "^1.1.1" } }, - "runjs": { - "version": "4.4.2", - "resolved": "https://registry.npm.taobao.org/runjs/download/runjs-4.4.2.tgz", - "integrity": "sha1-Ot9bU60bEZuEazyuEzTpq3/zSSA=", - "dev": true, - "requires": { - "chalk": "2.3.0", - "lodash.padend": "4.6.1", - "microcli": "1.3.3", - "omelette": "0.4.5" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-3.2.1.tgz", - "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-2.3.0.tgz?cache=0&sync_timestamp=1573282949696&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-2.3.0.tgz", - "integrity": "sha1-tepI78nBeT3MybR2fJORTT8tUro=", - "dev": true, - "requires": { - "ansi-styles": "^3.1.0", - "escape-string-regexp": "^1.0.5", - "supports-color": "^4.0.0" - } - }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-4.5.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", - "dev": true, - "requires": { - "has-flag": "^2.0.0" - } - } - } - }, - "rx-lite": { - "version": "4.0.8", - "resolved": "https://registry.npm.taobao.org/rx-lite/download/rx-lite-4.0.8.tgz", - "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", - "dev": true, - "optional": true - }, - "rx-lite-aggregates": { - "version": "4.0.8", - "resolved": "https://registry.npm.taobao.org/rx-lite-aggregates/download/rx-lite-aggregates-4.0.8.tgz", - "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", - "dev": true, - "optional": true, - "requires": { - "rx-lite": "*" - } - }, "rxjs": { - "version": "6.5.4", - "resolved": "https://registry.npm.taobao.org/rxjs/download/rxjs-6.5.4.tgz", - "integrity": "sha1-4Hd/4NGEzseHLfFH8wNXLUFOIRw=", + "version": "6.6.3", + "resolved": "https://registry.npm.taobao.org/rxjs/download/rxjs-6.6.3.tgz?cache=0&sync_timestamp=1607305563098&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frxjs%2Fdownload%2Frxjs-6.6.3.tgz", + "integrity": "sha1-jKhGNcTaqQDA05Z6buesYCce5VI=", "dev": true, "requires": { "tslib": "^1.9.0" @@ -14453,8 +9790,9 @@ }, "safe-buffer": { "version": "5.1.2", - "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz?cache=0&sync_timestamp=1562377642757&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsafe-buffer%2Fdownload%2Fsafe-buffer-5.1.2.tgz", - "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=" + "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz?cache=0&sync_timestamp=1589129103371&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsafe-buffer%2Fdownload%2Fsafe-buffer-5.1.2.tgz", + "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=", + "dev": true }, "safe-regex": { "version": "1.1.0", @@ -14471,164 +9809,31 @@ "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=", "dev": true }, - "sane": { - "version": "2.5.2", - "resolved": "https://registry.npm.taobao.org/sane/download/sane-2.5.2.tgz", - "integrity": "sha1-tNwYYcIbQn6SlQej51HiosuKs/o=", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "capture-exit": "^1.2.0", - "exec-sh": "^0.2.0", - "fb-watchman": "^2.0.0", - "fsevents": "^1.2.3", - "micromatch": "^3.1.4", - "minimist": "^1.1.1", - "walker": "~1.0.5", - "watch": "~0.18.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npm.taobao.org/minimist/download/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, - "sass-graph": { - "version": "2.2.4", - "resolved": "https://registry.npm.taobao.org/sass-graph/download/sass-graph-2.2.4.tgz", - "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "sass": { + "version": "1.30.0", + "resolved": "https://registry.npm.taobao.org/sass/download/sass-1.30.0.tgz", + "integrity": "sha1-YLu7r3a6EBF+YcbCTwAWHD1gYQ4=", "dev": true, "requires": { - "glob": "^7.0.0", - "lodash": "^4.0.0", - "scss-tokenizer": "^0.2.3", - "yargs": "^7.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npm.taobao.org/cliui/download/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npm.taobao.org/os-locale/download/os-locale-1.4.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fos-locale%2Fdownload%2Fos-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true, - "requires": { - "lcid": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz?cache=0&sync_timestamp=1573280518303&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/which-module/download/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", - "dev": true - }, - "yargs": { - "version": "7.1.0", - "resolved": "https://registry.npm.taobao.org/yargs/download/yargs-7.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs%2Fdownload%2Fyargs-7.1.0.tgz", - "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", - "dev": true, - "requires": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^5.0.0" - } - }, - "yargs-parser": { - "version": "5.0.0", - "resolved": "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-5.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs-parser%2Fdownload%2Fyargs-parser-5.0.0.tgz", - "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", - "dev": true, - "requires": { - "camelcase": "^3.0.0" - } - } + "chokidar": ">=2.0.0 <4.0.0" } }, "sass-loader": { - "version": "7.3.1", - "resolved": "https://registry.npm.taobao.org/sass-loader/download/sass-loader-7.3.1.tgz", - "integrity": "sha1-pb9ooEvOocE/+ELXRxUPerfQ0j8=", + "version": "8.0.2", + "resolved": "https://registry.npm.taobao.org/sass-loader/download/sass-loader-8.0.2.tgz?cache=0&sync_timestamp=1605100670008&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsass-loader%2Fdownload%2Fsass-loader-8.0.2.tgz", + "integrity": "sha1-3r7NjDziQ8dkVPLoKQSCFQOACQ0=", "dev": true, "requires": { "clone-deep": "^4.0.1", - "loader-utils": "^1.0.1", - "neo-async": "^2.5.0", - "pify": "^4.0.1", + "loader-utils": "^1.2.3", + "neo-async": "^2.6.1", + "schema-utils": "^2.6.1", "semver": "^6.3.0" }, "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npm.taobao.org/pify/download/pify-4.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-4.0.1.tgz", - "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=", - "dev": true - }, "semver": { "version": "6.3.0", - "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz?cache=0&sync_timestamp=1606853731020&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-6.3.0.tgz", "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=", "dev": true } @@ -14641,20 +9846,16 @@ "dev": true }, "schema-utils": { - "version": "0.4.7", - "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-0.4.7.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fschema-utils%2Fdownload%2Fschema-utils-0.4.7.tgz", - "integrity": "sha1-unT1l9K+LqiAExdG7hfQoJPGgYc=", + "version": "2.7.1", + "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-2.7.1.tgz", + "integrity": "sha1-HKTzLRskxZDCA7jnpQvw6kzTlNc=", "dev": true, "requires": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" } }, - "screenfull": { - "version": "4.2.0", - "resolved": "https://registry.npm.taobao.org/screenfull/download/screenfull-4.2.0.tgz", - "integrity": "sha1-1SUqWg9WUEcZq77Z67zZIIEV2gM=" - }, "script-ext-html-webpack-plugin": { "version": "2.1.3", "resolved": "https://registry.npm.taobao.org/script-ext-html-webpack-plugin/download/script-ext-html-webpack-plugin-2.1.3.tgz", @@ -14662,52 +9863,6 @@ "dev": true, "requires": { "debug": "^4.1.0" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npm.taobao.org/debug/download/debug-4.1.1.tgz", - "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz", - "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", - "dev": true - } - } - }, - "script-loader": { - "version": "0.7.2", - "resolved": "https://registry.npm.taobao.org/script-loader/download/script-loader-0.7.2.tgz", - "integrity": "sha1-IBbbb4byX1z1baOJFdgzeLsWa6c=", - "requires": { - "raw-loader": "~0.5.1" - } - }, - "scss-tokenizer": { - "version": "0.2.3", - "resolved": "https://registry.npm.taobao.org/scss-tokenizer/download/scss-tokenizer-0.2.3.tgz", - "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", - "dev": true, - "requires": { - "js-base64": "^2.1.8", - "source-map": "^0.4.2" - }, - "dependencies": { - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true, - "requires": { - "amdefine": ">=0.0.4" - } - } } }, "select": { @@ -14722,26 +9877,20 @@ "dev": true }, "selfsigned": { - "version": "1.10.7", - "resolved": "https://registry.npm.taobao.org/selfsigned/download/selfsigned-1.10.7.tgz?cache=0&sync_timestamp=1569952074772&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fselfsigned%2Fdownload%2Fselfsigned-1.10.7.tgz", - "integrity": "sha1-2lgZ/QSdVXTyjoipvMbbxubzkGs=", + "version": "1.10.8", + "resolved": "https://registry.npm.taobao.org/selfsigned/download/selfsigned-1.10.8.tgz", + "integrity": "sha1-DRcgi30Swz+OrIXEGDXyf8PYGjA=", "dev": true, "requires": { - "node-forge": "0.9.0" + "node-forge": "^0.10.0" } }, "semver": { "version": "5.7.1", - "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz?cache=0&sync_timestamp=1606853731020&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-5.7.1.tgz", "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=", "dev": true }, - "semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/semver-compare/download/semver-compare-1.0.0.tgz", - "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", - "dev": true - }, "send": { "version": "0.17.1", "resolved": "https://registry.npm.taobao.org/send/download/send-0.17.1.tgz", @@ -14765,7 +9914,7 @@ "dependencies": { "debug": { "version": "2.6.9", - "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1607566580543&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz", "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "dev": true, "requires": { @@ -14774,7 +9923,7 @@ "dependencies": { "ms": { "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1607433905701&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true } @@ -14782,34 +9931,27 @@ }, "mime": { "version": "1.6.0", - "resolved": "https://registry.npm.taobao.org/mime/download/mime-1.6.0.tgz?cache=0&sync_timestamp=1560034758817&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime%2Fdownload%2Fmime-1.6.0.tgz", + "resolved": "https://registry.npm.taobao.org/mime/download/mime-1.6.0.tgz?cache=0&sync_timestamp=1608084083331&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime%2Fdownload%2Fmime-1.6.0.tgz", "integrity": "sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=", "dev": true }, "ms": { "version": "2.1.1", - "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.1.tgz", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.1.tgz?cache=0&sync_timestamp=1607433905701&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.1.1.tgz", "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo=", "dev": true } } }, - "sentence-case": { - "version": "2.1.1", - "resolved": "https://registry.npm.taobao.org/sentence-case/download/sentence-case-2.1.1.tgz", - "integrity": "sha1-H24t2jnBaL+S0T+G1KkYkz9mftQ=", + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/serialize-javascript/download/serialize-javascript-4.0.0.tgz", + "integrity": "sha1-tSXhI4SJpez8Qq+sw/6Z5mb0sao=", "dev": true, "requires": { - "no-case": "^2.2.0", - "upper-case-first": "^1.1.2" + "randombytes": "^2.1.0" } }, - "serialize-javascript": { - "version": "2.1.2", - "resolved": "https://registry.npm.taobao.org/serialize-javascript/download/serialize-javascript-2.1.2.tgz?cache=0&sync_timestamp=1581887711256&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fserialize-javascript%2Fdownload%2Fserialize-javascript-2.1.2.tgz", - "integrity": "sha1-7OxTsOAxe9yV73arcHS3OEeF+mE=", - "dev": true - }, "serve-index": { "version": "1.9.1", "resolved": "https://registry.npm.taobao.org/serve-index/download/serve-index-1.9.1.tgz", @@ -14827,7 +9969,7 @@ "dependencies": { "debug": { "version": "2.6.9", - "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1607566580543&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz", "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "dev": true, "requires": { @@ -14836,7 +9978,7 @@ }, "http-errors": { "version": "1.6.3", - "resolved": "https://registry.npm.taobao.org/http-errors/download/http-errors-1.6.3.tgz?cache=0&sync_timestamp=1561418493658&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-errors%2Fdownload%2Fhttp-errors-1.6.3.tgz", + "resolved": "https://registry.npm.taobao.org/http-errors/download/http-errors-1.6.3.tgz", "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", "dev": true, "requires": { @@ -14852,6 +9994,12 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1607433905701&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, "setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.0.tgz", @@ -14875,12 +10023,8 @@ "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npm.taobao.org/set-blocking/download/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "set-immediate-shim": { - "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/set-immediate-shim/download/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true }, "set-value": { "version": "2.0.1", @@ -14940,6 +10084,7 @@ "version": "1.2.0", "resolved": "https://registry.npm.taobao.org/shebang-command/download/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, "requires": { "shebang-regex": "^1.0.0" } @@ -14947,7 +10092,8 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npm.taobao.org/shebang-regex/download/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true }, "shell-quote": { "version": "1.7.2", @@ -14955,56 +10101,11 @@ "integrity": "sha1-Z6fQLHbJ2iT5nSCAj8re0ODgS+I=", "dev": true }, - "shellwords": { - "version": "0.1.1", - "resolved": "https://registry.npm.taobao.org/shellwords/download/shellwords-0.1.1.tgz", - "integrity": "sha1-1rkYHBpI05cyTISHHvvPxz/AZUs=", - "dev": true - }, - "showdown": { - "version": "1.9.0", - "resolved": "https://registry.npm.taobao.org/showdown/download/showdown-1.9.0.tgz", - "integrity": "sha1-1J0qC22yG3wulu+FX3s7KijvRvQ=", - "requires": { - "yargs": "^10.0.3" - } - }, - "sigmund": { - "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/sigmund/download/sigmund-1.0.1.tgz", - "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", - "dev": true - }, "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npm.taobao.org/signal-exit/download/signal-exit-3.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsignal-exit%2Fdownload%2Fsignal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" - }, - "simple-git": { - "version": "1.131.0", - "resolved": "https://registry.npm.taobao.org/simple-git/download/simple-git-1.131.0.tgz", - "integrity": "sha1-aNhb9qcG5Bi4qSyudl0q01h4HiE=", - "dev": true, - "requires": { - "debug": "^4.0.1" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npm.taobao.org/debug/download/debug-4.1.1.tgz", - "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz", - "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", - "dev": true - } - } + "version": "3.0.3", + "resolved": "https://registry.npm.taobao.org/signal-exit/download/signal-exit-3.0.3.tgz", + "integrity": "sha1-oUEMLt2PB3sItOJTyOrPyvBXRhw=", + "dev": true }, "simple-swizzle": { "version": "0.2.2", @@ -15023,12 +10124,6 @@ } } }, - "sisteransi": { - "version": "0.1.1", - "resolved": "https://registry.npm.taobao.org/sisteransi/download/sisteransi-0.1.1.tgz", - "integrity": "sha1-VDFEfV99FnWqxmfM0LhlpJlMs84=", - "dev": true - }, "slash": { "version": "2.0.0", "resolved": "https://registry.npm.taobao.org/slash/download/slash-2.0.0.tgz", @@ -15036,22 +10131,22 @@ "dev": true }, "slice-ansi": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/slice-ansi/download/slice-ansi-1.0.0.tgz?cache=0&sync_timestamp=1581872792458&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fslice-ansi%2Fdownload%2Fslice-ansi-1.0.0.tgz", - "integrity": "sha1-BE8aSdiEL/MHqta1Be0Xi9lQE00=", - "dev": true, - "optional": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0" - } - }, - "snake-case": { "version": "2.1.0", - "resolved": "https://registry.npm.taobao.org/snake-case/download/snake-case-2.1.0.tgz", - "integrity": "sha1-Qb2xtz8w7GagTU4srRt2OH1NbZ8=", + "resolved": "https://registry.npm.taobao.org/slice-ansi/download/slice-ansi-2.1.0.tgz?cache=0&sync_timestamp=1581872792458&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fslice-ansi%2Fdownload%2Fslice-ansi-2.1.0.tgz", + "integrity": "sha1-ys12k0YaY3pXiNkqfdT7oGjoFjY=", "dev": true, "requires": { - "no-case": "^2.2.0" + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + } } }, "snapdragon": { @@ -15072,7 +10167,7 @@ "dependencies": { "debug": { "version": "2.6.9", - "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1607566580543&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz", "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "dev": true, "requires": { @@ -15096,6 +10191,12 @@ "requires": { "is-extendable": "^0.1.0" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1607433905701&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true } } }, @@ -15159,12 +10260,6 @@ "kind-of": "^3.2.0" }, "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz", - "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", - "dev": true - }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", @@ -15177,18 +10272,19 @@ } }, "sockjs": { - "version": "0.3.19", - "resolved": "https://registry.npm.taobao.org/sockjs/download/sockjs-0.3.19.tgz", - "integrity": "sha1-2Xa76ACve9IK4IWY1YI5NQiZPA0=", + "version": "0.3.20", + "resolved": "https://registry.npm.taobao.org/sockjs/download/sockjs-0.3.20.tgz", + "integrity": "sha1-smooPsVi74smh7RAM6Tuzqx12FU=", "dev": true, "requires": { "faye-websocket": "^0.10.0", - "uuid": "^3.0.1" + "uuid": "^3.4.0", + "websocket-driver": "0.6.5" } }, "sockjs-client": { "version": "1.4.0", - "resolved": "https://registry.npm.taobao.org/sockjs-client/download/sockjs-client-1.4.0.tgz?cache=0&sync_timestamp=1566505930428&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsockjs-client%2Fdownload%2Fsockjs-client-1.4.0.tgz", + "resolved": "https://registry.npm.taobao.org/sockjs-client/download/sockjs-client-1.4.0.tgz", "integrity": "sha1-yfJWjhnI/YFztJl+o0IOC7MGx9U=", "dev": true, "requires": { @@ -15201,9 +10297,9 @@ }, "dependencies": { "debug": { - "version": "3.2.6", - "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.2.6.tgz", - "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=", + "version": "3.2.7", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.2.7.tgz?cache=0&sync_timestamp=1607566580543&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-3.2.7.tgz", + "integrity": "sha1-clgLfpFF+zm2Z2+cXl+xALk0F5o=", "dev": true, "requires": { "ms": "^2.1.1" @@ -15217,19 +10313,17 @@ "requires": { "websocket-driver": ">=0.5.1" } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz", - "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", - "dev": true } } }, - "sortablejs": { - "version": "1.8.4", - "resolved": "https://registry.npm.taobao.org/sortablejs/download/sortablejs-1.8.4.tgz", - "integrity": "sha1-G7/q+pbTmbg/KOJdjknU+/2GfzA=" + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/sort-keys/download/sort-keys-1.1.2.tgz?cache=0&sync_timestamp=1602621924510&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsort-keys%2Fdownload%2Fsort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } }, "source-list-map": { "version": "2.0.1", @@ -15245,7 +10339,7 @@ }, "source-map-resolve": { "version": "0.5.3", - "resolved": "https://registry.npm.taobao.org/source-map-resolve/download/source-map-resolve-0.5.3.tgz", + "resolved": "https://registry.npm.taobao.org/source-map-resolve/download/source-map-resolve-0.5.3.tgz?cache=0&sync_timestamp=1584829475930&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map-resolve%2Fdownload%2Fsource-map-resolve-0.5.3.tgz", "integrity": "sha1-GQhmvs51U+H48mei7oLGBrVQmho=", "dev": true, "requires": { @@ -15257,9 +10351,9 @@ } }, "source-map-support": { - "version": "0.5.16", - "resolved": "https://registry.npm.taobao.org/source-map-support/download/source-map-support-0.5.16.tgz?cache=0&sync_timestamp=1572389965235&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map-support%2Fdownload%2Fsource-map-support-0.5.16.tgz", - "integrity": "sha1-CuBp5/47p1OMZMmFFeNTOerFoEI=", + "version": "0.5.19", + "resolved": "https://registry.npm.taobao.org/source-map-support/download/source-map-support-0.5.19.tgz", + "integrity": "sha1-qYti+G3K9PZzmWSMCFKRq56P7WE=", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -15280,10 +10374,16 @@ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", "dev": true }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npm.taobao.org/sourcemap-codec/download/sourcemap-codec-1.4.8.tgz", + "integrity": "sha1-6oBL2UhXQC5pktBaOO8a41qatMQ=", + "dev": true + }, "spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npm.taobao.org/spdx-correct/download/spdx-correct-3.1.0.tgz", - "integrity": "sha1-+4PlBERSaPFUsHTiGMh8ADzTHfQ=", + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/spdx-correct/download/spdx-correct-3.1.1.tgz", + "integrity": "sha1-3s6BrJweZxPl99G28X1Gj6U9iak=", "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", @@ -15291,15 +10391,15 @@ } }, "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npm.taobao.org/spdx-exceptions/download/spdx-exceptions-2.2.0.tgz", - "integrity": "sha1-LqRQrudPKom/uUUZwH/Nb0EyKXc=", + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/spdx-exceptions/download/spdx-exceptions-2.3.0.tgz?cache=0&sync_timestamp=1587422410312&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fspdx-exceptions%2Fdownload%2Fspdx-exceptions-2.3.0.tgz", + "integrity": "sha1-PyjOGnegA3JoPq3kpDMYNSeiFj0=", "dev": true }, "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/spdx-expression-parse/download/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha1-meEZt6XaAOBUkcn6M4t5BII7QdA=", + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/spdx-expression-parse/download/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha1-z3D1BILu/cmOPOCmgz5KU87rpnk=", "dev": true, "requires": { "spdx-exceptions": "^2.1.0", @@ -15307,15 +10407,15 @@ } }, "spdx-license-ids": { - "version": "3.0.5", - "resolved": "https://registry.npm.taobao.org/spdx-license-ids/download/spdx-license-ids-3.0.5.tgz", - "integrity": "sha1-NpS1gEVnpFjTyARYQqY1hjL2JlQ=", + "version": "3.0.7", + "resolved": "https://registry.npm.taobao.org/spdx-license-ids/download/spdx-license-ids-3.0.7.tgz?cache=0&sync_timestamp=1606610843748&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fspdx-license-ids%2Fdownload%2Fspdx-license-ids-3.0.7.tgz", + "integrity": "sha1-6cGKQQ5e1+EkQqVJ+9ivp2cDjWU=", "dev": true }, "spdy": { - "version": "4.0.1", - "resolved": "https://registry.npm.taobao.org/spdy/download/spdy-4.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fspdy%2Fdownload%2Fspdy-4.0.1.tgz", - "integrity": "sha1-bxLtHF236k8k67i4m6WMh8CCV/I=", + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/spdy/download/spdy-4.0.2.tgz?cache=0&sync_timestamp=1585970558936&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fspdy%2Fdownload%2Fspdy-4.0.2.tgz", + "integrity": "sha1-t09GYgOj7aRSwCSSuR+56EonZ3s=", "dev": true, "requires": { "debug": "^4.1.0", @@ -15323,23 +10423,6 @@ "http-deceiver": "^1.2.7", "select-hose": "^2.0.0", "spdy-transport": "^3.0.0" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npm.taobao.org/debug/download/debug-4.1.1.tgz", - "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz", - "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", - "dev": true - } } }, "spdy-transport": { @@ -15356,21 +10439,6 @@ "wbuf": "^1.7.3" }, "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npm.taobao.org/debug/download/debug-4.1.1.tgz", - "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz", - "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", - "dev": true - }, "readable-stream": { "version": "3.6.0", "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-3.6.0.tgz?cache=0&sync_timestamp=1581622984924&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freadable-stream%2Fdownload%2Freadable-stream-3.6.0.tgz", @@ -15396,19 +10464,8 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsprintf-js%2Fdownload%2Fsprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, - "squire-rte": { - "version": "github:sohee-lee7/Squire#b1e0e1031fa18912d233c204cbe7c7fae4a42621", - "from": "github:sohee-lee7/Squire#b1e0e1031fa18912d233c204cbe7c7fae4a42621" - }, - "ssf": { - "version": "0.10.3", - "resolved": "https://registry.npm.taobao.org/ssf/download/ssf-0.10.3.tgz", - "integrity": "sha1-jq4fwpyQpVLnkhII+BiS1vd6yys=", - "requires": { - "frac": "~1.1.2" - } + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true }, "sshpk": { "version": "1.16.1", @@ -15442,22 +10499,10 @@ "integrity": "sha1-g26zyDgv4pNv6vVEYxAXzn1Ho88=", "dev": true }, - "stack-utils": { - "version": "1.0.2", - "resolved": "https://registry.npm.taobao.org/stack-utils/download/stack-utils-1.0.2.tgz", - "integrity": "sha1-M+ujiXeIVYvr/C2wWdwVjsNs67g=", - "dev": true - }, "stackframe": { - "version": "1.1.1", - "resolved": "https://registry.npm.taobao.org/stackframe/download/stackframe-1.1.1.tgz?cache=0&sync_timestamp=1578260012451&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstackframe%2Fdownload%2Fstackframe-1.1.1.tgz", - "integrity": "sha1-/+8KMxixtgw7WFZJiaylZgcp7HE=", - "dev": true - }, - "staged-git-files": { - "version": "1.1.2", - "resolved": "https://registry.npm.taobao.org/staged-git-files/download/staged-git-files-1.1.2.tgz", - "integrity": "sha1-QybTOIbcns+immGTv1EbqQpGRUs=", + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/stackframe/download/stackframe-1.2.0.tgz", + "integrity": "sha1-UkKUktY8YuuYmATBFVLj0i53kwM=", "dev": true }, "static-extend": { @@ -15483,28 +10528,13 @@ }, "statuses": { "version": "1.5.0", - "resolved": "https://registry.npm.taobao.org/statuses/download/statuses-1.5.0.tgz", + "resolved": "https://registry.npm.taobao.org/statuses/download/statuses-1.5.0.tgz?cache=0&sync_timestamp=1587327902535&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstatuses%2Fdownload%2Fstatuses-1.5.0.tgz", "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", "dev": true }, - "stdout-stream": { - "version": "1.4.1", - "resolved": "https://registry.npm.taobao.org/stdout-stream/download/stdout-stream-1.4.1.tgz", - "integrity": "sha1-WsF0zdXNcmEEqgwLK9g4FdjVNd4=", - "dev": true, - "requires": { - "readable-stream": "^2.0.1" - } - }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npm.taobao.org/stealthy-require/download/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", - "dev": true - }, "stream-browserify": { "version": "2.0.2", - "resolved": "https://registry.npm.taobao.org/stream-browserify/download/stream-browserify-2.0.2.tgz", + "resolved": "https://registry.npm.taobao.org/stream-browserify/download/stream-browserify-2.0.2.tgz?cache=0&sync_timestamp=1587041545531&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstream-browserify%2Fdownload%2Fstream-browserify-2.0.2.tgz", "integrity": "sha1-h1IdOKRKp+6RzhzSpH3wy0ndZgs=", "dev": true, "requires": { @@ -15547,137 +10577,80 @@ "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", "dev": true }, - "string-argv": { - "version": "0.0.2", - "resolved": "https://registry.npm.taobao.org/string-argv/download/string-argv-0.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-argv%2Fdownload%2Fstring-argv-0.0.2.tgz", - "integrity": "sha1-2sMECGkMIfPDYwo/86BYd73L1zY=", + "string-hash": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/string-hash/download/string-hash-1.1.3.tgz", + "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=", "dev": true }, - "string-length": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/string-length/download/string-length-2.0.0.tgz", - "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", - "dev": true, - "requires": { - "astral-regex": "^1.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz?cache=0&sync_timestamp=1573280518303&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-2.1.1.tgz", - "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz?cache=0&sync_timestamp=1573280518303&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "string.prototype.padend": { - "version": "3.1.0", - "resolved": "https://registry.npm.taobao.org/string.prototype.padend/download/string.prototype.padend-3.1.0.tgz?cache=0&sync_timestamp=1576312179430&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring.prototype.padend%2Fdownload%2Fstring.prototype.padend-3.1.0.tgz", - "integrity": "sha1-3Aj1eoAQ3FwVNVAxj2fhOtu3KsM=", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - } - }, - "string.prototype.padstart": { - "version": "3.1.0", - "resolved": "https://registry.npm.taobao.org/string.prototype.padstart/download/string.prototype.padstart-3.1.0.tgz?cache=0&sync_timestamp=1576312396721&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring.prototype.padstart%2Fdownload%2Fstring.prototype.padstart-3.1.0.tgz", - "integrity": "sha1-tHwIdUDQcQvlpJN1dRoKYnvU/5A=", + "version": "4.2.0", + "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-4.2.0.tgz", + "integrity": "sha1-lSGCxGzHssMT0VluYjmSvRY7crU=", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" } }, - "string.prototype.trimleft": { - "version": "2.1.1", - "resolved": "https://registry.npm.taobao.org/string.prototype.trimleft/download/string.prototype.trimleft-2.1.1.tgz", - "integrity": "sha1-m9uKxqvW1gKxek7TIYcNL43O/HQ=", + "string.prototype.trimend": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/string.prototype.trimend/download/string.prototype.trimend-1.0.3.tgz?cache=0&sync_timestamp=1606007972119&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring.prototype.trimend%2Fdownload%2Fstring.prototype.trimend-1.0.3.tgz", + "integrity": "sha1-oivVPMpcfPRNfJ1ccyEYhz1s0Ys=", "dev": true, "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" } }, - "string.prototype.trimright": { - "version": "2.1.1", - "resolved": "https://registry.npm.taobao.org/string.prototype.trimright/download/string.prototype.trimright-2.1.1.tgz", - "integrity": "sha1-RAMUsVmWyGbOigNBiU1FGGIAxdk=", + "string.prototype.trimstart": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/string.prototype.trimstart/download/string.prototype.trimstart-1.0.3.tgz?cache=0&sync_timestamp=1606007972027&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring.prototype.trimstart%2Fdownload%2Fstring.prototype.trimstart-1.0.3.tgz", + "integrity": "sha1-m0y1kOEjuzZWRAHVmCQpjeUP1ao=", "dev": true, "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" } }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz", "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", + "dev": true, "requires": { "safe-buffer": "~5.1.0" } }, - "stringify-object": { - "version": "3.3.0", - "resolved": "https://registry.npm.taobao.org/stringify-object/download/stringify-object-3.3.0.tgz", - "integrity": "sha1-cDBlrvyhkwDTzoivT1s5VtdVZik=", + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-6.0.0.tgz?cache=0&sync_timestamp=1573280518303&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-6.0.0.tgz", + "integrity": "sha1-CxVx3XZpzNTz4G4U7x7tJiJa5TI=", "dev": true, "requires": { - "get-own-enumerable-property-symbols": "^3.0.0", - "is-obj": "^1.0.1", - "is-regexp": "^1.0.0" + "ansi-regex": "^5.0.0" }, "dependencies": { - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/is-obj/download/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-5.0.0.tgz", + "integrity": "sha1-OIU59VF5vzkznIGvMKZU1p+Hy3U=", "dev": true } } }, - "strip-ansi": { - "version": "0.1.1", - "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-0.1.1.tgz?cache=0&sync_timestamp=1573280518303&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-0.1.1.tgz", - "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=" - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/strip-bom/download/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npm.taobao.org/strip-eof/download/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/strip-final-newline/download/strip-final-newline-2.0.0.tgz", + "integrity": "sha1-ibhS+y/L6Tb29LMYevsKEsGrWK0=", + "dev": true }, "strip-indent": { "version": "2.0.0", @@ -15686,9 +10659,9 @@ "dev": true }, "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npm.taobao.org/strip-json-comments/download/strip-json-comments-2.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-json-comments%2Fdownload%2Fstrip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/strip-json-comments/download/strip-json-comments-3.1.1.tgz", + "integrity": "sha1-MfEoGzgyYwQ0gxwxDAHMzajL4AY=", "dev": true }, "stylehacks": { @@ -15704,7 +10677,7 @@ "dependencies": { "postcss-selector-parser": { "version": "3.1.2", - "resolved": "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-3.1.2.tgz", + "resolved": "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-3.1.2.tgz?cache=0&sync_timestamp=1601045448419&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-selector-parser%2Fdownload%2Fpostcss-selector-parser-3.1.2.tgz", "integrity": "sha1-sxD1xMD9r3b5SQK7qjDbaqhPUnA=", "dev": true, "requires": { @@ -15717,16 +10690,17 @@ }, "supports-color": { "version": "5.5.0", - "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-5.5.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-5.5.0.tgz", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-5.5.0.tgz?cache=0&sync_timestamp=1608033349725&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-5.5.0.tgz", "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=", + "dev": true, "requires": { "has-flag": "^3.0.0" } }, "svg-baker": { - "version": "1.5.0", - "resolved": "https://registry.npm.taobao.org/svg-baker/download/svg-baker-1.5.0.tgz", - "integrity": "sha1-6U51Uj2TA+mis0SJhwgNlmy5CvQ=", + "version": "1.7.0", + "resolved": "https://registry.npm.taobao.org/svg-baker/download/svg-baker-1.7.0.tgz?cache=0&sync_timestamp=1586349310975&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsvg-baker%2Fdownload%2Fsvg-baker-1.7.0.tgz", + "integrity": "sha1-g2f3jYdVUMUv5HVvcwPVxdfC6ac=", "dev": true, "requires": { "bluebird": "^3.5.0", @@ -15752,13 +10726,13 @@ }, "ansi-styles": { "version": "2.2.1", - "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-2.2.1.tgz", + "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz?cache=0&sync_timestamp=1606792371412&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-2.2.1.tgz", "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz?cache=0&sync_timestamp=1573282949696&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-1.1.3.tgz", + "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz?cache=0&sync_timestamp=1591687076871&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -15771,7 +10745,7 @@ "dependencies": { "supports-color": { "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-2.0.0.tgz", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz?cache=0&sync_timestamp=1608033349725&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-2.0.0.tgz", "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true } @@ -15889,7 +10863,7 @@ }, "postcss": { "version": "5.2.18", - "resolved": "https://registry.npm.taobao.org/postcss/download/postcss-5.2.18.tgz?cache=0&sync_timestamp=1581994853208&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss%2Fdownload%2Fpostcss-5.2.18.tgz", + "resolved": "https://registry.npm.taobao.org/postcss/download/postcss-5.2.18.tgz?cache=0&sync_timestamp=1607512891622&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss%2Fdownload%2Fpostcss-5.2.18.tgz", "integrity": "sha1-ut+hSX1GJE9jkPWLMZgw2RB4U8U=", "dev": true, "requires": { @@ -15910,7 +10884,7 @@ }, "supports-color": { "version": "3.2.3", - "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-3.2.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-3.2.3.tgz", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-3.2.3.tgz?cache=0&sync_timestamp=1608033349725&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-3.2.3.tgz", "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { @@ -15920,14 +10894,14 @@ } }, "svg-baker-runtime": { - "version": "1.4.3", - "resolved": "https://registry.npm.taobao.org/svg-baker-runtime/download/svg-baker-runtime-1.4.3.tgz", - "integrity": "sha1-jsA12vOvSr5+eIEgho67+Eo0Ro8=", + "version": "1.4.7", + "resolved": "https://registry.npm.taobao.org/svg-baker-runtime/download/svg-baker-runtime-1.4.7.tgz", + "integrity": "sha1-9HIGN/W2IC7vY3jYHx/q0IFfik4=", "dev": true, "requires": { "deepmerge": "1.3.2", "mitt": "1.1.2", - "svg-baker": "^1.5.0" + "svg-baker": "^1.7.0" }, "dependencies": { "deepmerge": { @@ -15935,12 +10909,18 @@ "resolved": "https://registry.npm.taobao.org/deepmerge/download/deepmerge-1.3.2.tgz", "integrity": "sha1-FmNpFinU2/42T6EqKk8KqGqjoFA=", "dev": true + }, + "mitt": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/mitt/download/mitt-1.1.2.tgz", + "integrity": "sha1-OA5hSA1qYVtmDwertg1R4KTkvtY=", + "dev": true } } }, "svg-sprite-loader": { "version": "4.1.3", - "resolved": "https://registry.npm.taobao.org/svg-sprite-loader/download/svg-sprite-loader-4.1.3.tgz?cache=0&sync_timestamp=1580480714186&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsvg-sprite-loader%2Fdownload%2Fsvg-sprite-loader-4.1.3.tgz", + "resolved": "https://registry.npm.taobao.org/svg-sprite-loader/download/svg-sprite-loader-4.1.3.tgz?cache=0&sync_timestamp=1608021801840&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsvg-sprite-loader%2Fdownload%2Fsvg-sprite-loader-4.1.3.tgz", "integrity": "sha1-0lz6daXE5Jn3tSgigdtus72hP+A=", "dev": true, "requires": { @@ -15955,11 +10935,68 @@ "url-slug": "2.0.0" }, "dependencies": { + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npm.taobao.org/big.js/download/big.js-3.2.0.tgz", + "integrity": "sha1-pfwpi4G54Nyi5FiCR4S2XFK6WI4=", + "dev": true + }, "deepmerge": { "version": "1.3.2", "resolved": "https://registry.npm.taobao.org/deepmerge/download/deepmerge-1.3.2.tgz", "integrity": "sha1-FmNpFinU2/42T6EqKk8KqGqjoFA=", "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/emojis-list/download/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "html-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npm.taobao.org/html-webpack-plugin/download/html-webpack-plugin-3.2.0.tgz?cache=0&sync_timestamp=1613744691795&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhtml-webpack-plugin%2Fdownload%2Fhtml-webpack-plugin-3.2.0.tgz", + "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", + "dev": true, + "requires": { + "html-minifier": "^3.2.3", + "loader-utils": "^0.2.16", + "lodash": "^4.17.3", + "pretty-error": "^2.0.2", + "tapable": "^1.0.0", + "toposort": "^1.0.0", + "util.promisify": "1.0.0" + }, + "dependencies": { + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" + } + } + } + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npm.taobao.org/json5/download/json5-0.5.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson5%2Fdownload%2Fjson5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/util.promisify/download/util.promisify-1.0.0.tgz?cache=0&sync_timestamp=1610159858516&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Futil.promisify%2Fdownload%2Futil.promisify-1.0.0.tgz", + "integrity": "sha1-RA9xZaRZyaFtwUXrjnLzVocJcDA=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } } } }, @@ -15970,19 +11007,18 @@ "dev": true }, "svgo": { - "version": "1.2.0", - "resolved": "https://registry.npm.taobao.org/svgo/download/svgo-1.2.0.tgz?cache=0&sync_timestamp=1572433264480&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsvgo%2Fdownload%2Fsvgo-1.2.0.tgz", - "integrity": "sha1-MFqPwPT5cQgoxlA5u5PVeTIl/8M=", + "version": "1.3.2", + "resolved": "https://registry.npm.taobao.org/svgo/download/svgo-1.3.2.tgz?cache=0&sync_timestamp=1572433264480&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsvgo%2Fdownload%2Fsvgo-1.3.2.tgz", + "integrity": "sha1-ttxRHAYzRsnkFbgeQ0ARRbltQWc=", "dev": true, "requires": { "chalk": "^2.4.1", "coa": "^2.0.2", "css-select": "^2.0.0", "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.28", - "css-url-regex": "^1.1.0", - "csso": "^3.5.1", - "js-yaml": "^3.12.0", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", "mkdirp": "~0.5.1", "object.values": "^1.1.0", "sax": "~1.2.4", @@ -15991,106 +11027,62 @@ "util.promisify": "~1.0.0" } }, - "swap-case": { - "version": "1.1.2", - "resolved": "https://registry.npm.taobao.org/swap-case/download/swap-case-1.1.2.tgz?cache=0&sync_timestamp=1575601560703&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fswap-case%2Fdownload%2Fswap-case-1.1.2.tgz", - "integrity": "sha1-w5IDpFhzhfrTyFCgvRvK+ggZdOM=", - "dev": true, - "requires": { - "lower-case": "^1.1.1", - "upper-case": "^1.1.1" - } - }, - "symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npm.taobao.org/symbol-observable/download/symbol-observable-1.2.0.tgz", - "integrity": "sha1-wiaIrtTqs83C3+rLtWFmBWCgCAQ=", - "dev": true - }, - "symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npm.taobao.org/symbol-tree/download/symbol-tree-3.2.4.tgz", - "integrity": "sha1-QwY30ki6d+B4iDlR+5qg7tfGP6I=", - "dev": true - }, - "synchronous-promise": { - "version": "2.0.10", - "resolved": "https://registry.npm.taobao.org/synchronous-promise/download/synchronous-promise-2.0.10.tgz", - "integrity": "sha1-5kxv06/SX0I5YzUwQ/Smjr05f9g=", - "dev": true - }, "table": { - "version": "4.0.2", - "resolved": "https://registry.npm.taobao.org/table/download/table-4.0.2.tgz", - "integrity": "sha1-ozRHN1OR52atNNNIbm4q7chNLjY=", + "version": "5.4.6", + "resolved": "https://registry.npm.taobao.org/table/download/table-5.4.6.tgz?cache=0&sync_timestamp=1605825584818&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftable%2Fdownload%2Ftable-5.4.6.tgz", + "integrity": "sha1-EpLRlQDOP4YFOwXw6Ofko7shB54=", "dev": true, - "optional": true, "requires": { - "ajv": "^5.2.3", - "ajv-keywords": "^2.1.0", - "chalk": "^2.1.0", - "lodash": "^4.17.4", - "slice-ansi": "1.0.0", - "string-width": "^2.1.1" + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" }, "dependencies": { - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npm.taobao.org/ajv/download/ajv-5.5.2.tgz?cache=0&sync_timestamp=1582379612319&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv%2Fdownload%2Fajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-7.0.3.tgz", + "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-3.1.0.tgz", + "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=", "dev": true, - "optional": true, "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" } }, - "ajv-keywords": { - "version": "2.1.1", - "resolved": "https://registry.npm.taobao.org/ajv-keywords/download/ajv-keywords-2.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv-keywords%2Fdownload%2Fajv-keywords-2.1.1.tgz", - "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", - "dev": true, - "optional": true - }, - "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-1.1.0.tgz?cache=0&sync_timestamp=1575383928809&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-deep-equal%2Fdownload%2Ffast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", - "dev": true, - "optional": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz?cache=0&sync_timestamp=1573280518303&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-5.2.0.tgz", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", "dev": true, - "optional": true + "requires": { + "ansi-regex": "^4.1.0" + } } } }, "tapable": { "version": "1.1.3", - "resolved": "https://registry.npm.taobao.org/tapable/download/tapable-1.1.3.tgz", + "resolved": "https://registry.npm.taobao.org/tapable/download/tapable-1.1.3.tgz?cache=0&sync_timestamp=1607088855476&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftapable%2Fdownload%2Ftapable-1.1.3.tgz", "integrity": "sha1-ofzMBrWNth/XpF2i2kT186Pme6I=", "dev": true }, - "tar": { - "version": "2.2.2", - "resolved": "https://registry.npm.taobao.org/tar/download/tar-2.2.2.tgz", - "integrity": "sha1-DKiEhWLHKZuLRG/2pNYM27I+3EA=", - "dev": true, - "requires": { - "block-stream": "*", - "fstream": "^1.0.12", - "inherits": "2" - } - }, "terser": { - "version": "4.6.6", - "resolved": "https://registry.npm.taobao.org/terser/download/terser-4.6.6.tgz?cache=0&sync_timestamp=1583252322857&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fterser%2Fdownload%2Fterser-4.6.6.tgz", - "integrity": "sha1-2iOC5sr734YgXoL7mhFb1mTVSGM=", + "version": "4.8.0", + "resolved": "https://registry.npm.taobao.org/terser/download/terser-4.8.0.tgz?cache=0&sync_timestamp=1606494026148&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fterser%2Fdownload%2Fterser-4.8.0.tgz", + "integrity": "sha1-YwVjQ9fHC7KfOvZlhlpG/gOg3xc=", "dev": true, "requires": { "commander": "^2.20.0", @@ -16098,12 +11090,6 @@ "source-map-support": "~0.5.12" }, "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npm.taobao.org/commander/download/commander-2.20.3.tgz", - "integrity": "sha1-/UhehMA+tIgcIHIrpIA16FMa6zM=", - "dev": true - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", @@ -16113,16 +11099,16 @@ } }, "terser-webpack-plugin": { - "version": "1.4.3", - "resolved": "https://registry.npm.taobao.org/terser-webpack-plugin/download/terser-webpack-plugin-1.4.3.tgz", - "integrity": "sha1-Xsry29xfuZdF/QZ5H0b8ndscmnw=", + "version": "1.4.5", + "resolved": "https://registry.npm.taobao.org/terser-webpack-plugin/download/terser-webpack-plugin-1.4.5.tgz?cache=0&sync_timestamp=1603881839307&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fterser-webpack-plugin%2Fdownload%2Fterser-webpack-plugin-1.4.5.tgz", + "integrity": "sha1-oheu+uozDnNP+sthIOwfoxLWBAs=", "dev": true, "requires": { "cacache": "^12.0.2", "find-cache-dir": "^2.1.0", "is-wsl": "^1.1.0", "schema-utils": "^1.0.0", - "serialize-javascript": "^2.1.2", + "serialize-javascript": "^4.0.0", "source-map": "^0.6.1", "terser": "^4.1.2", "webpack-sources": "^1.4.0", @@ -16142,7 +11128,7 @@ }, "find-up": { "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz?cache=0&sync_timestamp=1597169795121&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-up%2Fdownload%2Ffind-up-3.0.0.tgz", "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=", "dev": true, "requires": { @@ -16161,7 +11147,7 @@ }, "make-dir": { "version": "2.1.0", - "resolved": "https://registry.npm.taobao.org/make-dir/download/make-dir-2.1.0.tgz?cache=0&sync_timestamp=1581538411621&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmake-dir%2Fdownload%2Fmake-dir-2.1.0.tgz", + "resolved": "https://registry.npm.taobao.org/make-dir/download/make-dir-2.1.0.tgz", "integrity": "sha1-XwMQ4YuL6JjMBwCSlaMK5B6R5vU=", "dev": true, "requires": { @@ -16169,34 +11155,19 @@ "semver": "^5.6.0" } }, - "p-limit": { - "version": "2.2.2", - "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-2.2.2.tgz?cache=0&sync_timestamp=1577904218145&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-limit%2Fdownload%2Fp-limit-2.2.2.tgz", - "integrity": "sha1-YSebZ3IfUoeqHBOpp/u8SMkpGx4=", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, "p-locate": { "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-3.0.0.tgz", + "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-3.0.0.tgz?cache=0&sync_timestamp=1597081369770&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-locate%2Fdownload%2Fp-locate-3.0.0.tgz", "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=", "dev": true, "requires": { "p-limit": "^2.0.0" } }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npm.taobao.org/p-try/download/p-try-2.2.0.tgz", - "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=", - "dev": true - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npm.taobao.org/pify/download/pify-4.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-4.0.1.tgz", - "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=", + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true }, "pkg-dir": { @@ -16210,7 +11181,7 @@ }, "schema-utils": { "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fschema-utils%2Fdownload%2Fschema-utils-1.0.0.tgz", + "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz", "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=", "dev": true, "requires": { @@ -16227,134 +11198,33 @@ } } }, - "test-exclude": { - "version": "4.2.3", - "resolved": "https://registry.npm.taobao.org/test-exclude/download/test-exclude-4.2.3.tgz", - "integrity": "sha1-qaXmRHTkOYM5JFoKdprXwvSpfCA=", - "dev": true, - "requires": { - "arrify": "^1.0.1", - "micromatch": "^2.3.11", - "object-assign": "^4.1.0", - "read-pkg-up": "^1.0.1", - "require-main-filename": "^1.0.1" - }, - "dependencies": { - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/arr-diff/download/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npm.taobao.org/array-unique/download/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npm.taobao.org/braces/download/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npm.taobao.org/expand-brackets/download/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npm.taobao.org/extglob/download/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz", - "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", - "dev": true - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/is-extglob/download/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npm.taobao.org/micromatch/download/micromatch-2.3.11.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmicromatch%2Fdownload%2Fmicromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npm.taobao.org/text-table/download/text-table-0.2.0.tgz", "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, + "thenify": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/thenify/download/thenify-3.3.1.tgz", + "integrity": "sha1-iTLmhqQGYDigFt2eLKRq3Zg4qV8=", + "dev": true, + "requires": { + "any-promise": "^1.0.0" + } + }, + "thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npm.taobao.org/thenify-all/download/thenify-all-1.6.0.tgz", + "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", + "dev": true, + "requires": { + "thenify": ">= 3.1.0 < 4" + } + }, "thread-loader": { "version": "2.1.3", - "resolved": "https://registry.npm.taobao.org/thread-loader/download/thread-loader-2.1.3.tgz?cache=0&sync_timestamp=1565261083321&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fthread-loader%2Fdownload%2Fthread-loader-2.1.3.tgz", + "resolved": "https://registry.npm.taobao.org/thread-loader/download/thread-loader-2.1.3.tgz?cache=0&sync_timestamp=1603809423332&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fthread-loader%2Fdownload%2Fthread-loader-2.1.3.tgz", "integrity": "sha1-y9LBOfwrLebp0o9iKGq3cMGsvdo=", "dev": true, "requires": { @@ -16363,17 +11233,6 @@ "neo-async": "^2.6.0" } }, - "throat": { - "version": "4.1.0", - "resolved": "https://registry.npm.taobao.org/throat/download/throat-4.1.0.tgz", - "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", - "dev": true - }, - "throttle-debounce": { - "version": "1.1.0", - "resolved": "https://registry.npm.taobao.org/throttle-debounce/download/throttle-debounce-1.1.0.tgz", - "integrity": "sha1-UYU9o3vmihVctugns1FKPEIuic0=" - }, "through": { "version": "2.3.8", "resolved": "https://registry.npm.taobao.org/through/download/through-2.3.8.tgz", @@ -16397,9 +11256,9 @@ "dev": true }, "timers-browserify": { - "version": "2.0.11", - "resolved": "https://registry.npm.taobao.org/timers-browserify/download/timers-browserify-2.0.11.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftimers-browserify%2Fdownload%2Ftimers-browserify-2.0.11.tgz", - "integrity": "sha1-gAsfPu4nLlvFPuRloE0OgEwxIR8=", + "version": "2.0.12", + "resolved": "https://registry.npm.taobao.org/timers-browserify/download/timers-browserify-2.0.12.tgz?cache=0&sync_timestamp=1603793688024&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftimers-browserify%2Fdownload%2Ftimers-browserify-2.0.12.tgz", + "integrity": "sha1-RKRcEfv0B/NPl7zNFXfGUjYbAO4=", "dev": true, "requires": { "setimmediate": "^1.0.4" @@ -16416,31 +11275,15 @@ "resolved": "https://registry.npm.taobao.org/tiny-emitter/download/tiny-emitter-2.1.0.tgz", "integrity": "sha1-HRpW7fxRxD6GPLtTgqcjMONVVCM=" }, - "title-case": { - "version": "2.1.1", - "resolved": "https://registry.npm.taobao.org/title-case/download/title-case-2.1.1.tgz?cache=0&sync_timestamp=1575601563515&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftitle-case%2Fdownload%2Ftitle-case-2.1.1.tgz", - "integrity": "sha1-PhJyFtpY0rxb7PE3q5Ha46fNj6o=", - "dev": true, - "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.0.3" - } - }, "tmp": { "version": "0.0.33", - "resolved": "https://registry.npm.taobao.org/tmp/download/tmp-0.0.33.tgz", + "resolved": "https://registry.npm.taobao.org/tmp/download/tmp-0.0.33.tgz?cache=0&sync_timestamp=1588178571895&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftmp%2Fdownload%2Ftmp-0.0.33.tgz", "integrity": "sha1-bTQzWIl2jSGyvNoKonfO07G/rfk=", "dev": true, "requires": { "os-tmpdir": "~1.0.2" } }, - "tmpl": { - "version": "1.0.4", - "resolved": "https://registry.npm.taobao.org/tmpl/download/tmpl-1.0.4.tgz", - "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", - "dev": true - }, "to-arraybuffer": { "version": "1.0.1", "resolved": "https://registry.npm.taobao.org/to-arraybuffer/download/to-arraybuffer-1.0.1.tgz", @@ -16450,13 +11293,7 @@ "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npm.taobao.org/to-fast-properties/download/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - }, - "to-mark": { - "version": "1.1.9", - "resolved": "https://registry.npm.taobao.org/to-mark/download/to-mark-1.1.9.tgz", - "integrity": "sha1-LPvI52XEMN3LRqIYvgebTKJ3PVs=" + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" }, "to-object-path": { "version": "0.3.0", @@ -16467,12 +11304,6 @@ "kind-of": "^3.0.2" }, "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz", - "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", - "dev": true - }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", @@ -16528,72 +11359,28 @@ "punycode": "^2.1.1" } }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/tr46/download/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, "traverse": { "version": "0.6.6", "resolved": "https://registry.npm.taobao.org/traverse/download/traverse-0.6.6.tgz", "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=", "dev": true }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/trim-newlines/download/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", - "dev": true - }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npm.taobao.org/trim-right/download/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true - }, - "true-case-path": { - "version": "1.0.3", - "resolved": "https://registry.npm.taobao.org/true-case-path/download/true-case-path-1.0.3.tgz", - "integrity": "sha1-+BO1qMhrQNpZYGcisUTjIleZ9H0=", - "dev": true, - "requires": { - "glob": "^7.1.2" - } - }, "tryer": { "version": "1.0.1", "resolved": "https://registry.npm.taobao.org/tryer/download/tryer-1.0.1.tgz", "integrity": "sha1-8shUBoALmw90yfdGW4HqrSQSUvg=", "dev": true }, - "tsconfig": { - "version": "7.0.0", - "resolved": "https://registry.npm.taobao.org/tsconfig/download/tsconfig-7.0.0.tgz", - "integrity": "sha1-hFOIdaTcIW5cSlQys6Tew9VOkbc=", - "dev": true, - "requires": { - "@types/strip-bom": "^3.0.0", - "@types/strip-json-comments": "0.0.30", - "strip-bom": "^3.0.0", - "strip-json-comments": "^2.0.0" - }, - "dependencies": { - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/strip-bom/download/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - } - } + "ts-pnp": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/ts-pnp/download/ts-pnp-1.2.0.tgz", + "integrity": "sha1-pQCtCEsHmPHDBxrzkeZZEshrypI=", + "dev": true }, "tslib": { - "version": "1.11.1", - "resolved": "https://registry.npm.taobao.org/tslib/download/tslib-1.11.1.tgz", - "integrity": "sha1-6xXRKIJ/vuKEFUnhcfRe0zisfjU=", + "version": "1.14.1", + "resolved": "https://registry.npm.taobao.org/tslib/download/tslib-1.14.1.tgz", + "integrity": "sha1-zy04vcNKE0vK8QkcQfZhni9nLQA=", "dev": true }, "tty-browserify": { @@ -16602,69 +11389,6 @@ "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", "dev": true }, - "tui-chart": { - "version": "3.10.1", - "resolved": "https://registry.npm.taobao.org/tui-chart/download/tui-chart-3.10.1.tgz?cache=0&sync_timestamp=1583286496287&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftui-chart%2Fdownload%2Ftui-chart-3.10.1.tgz", - "integrity": "sha1-jwq/rPhmLtTRsdNYRB6LcC7ndIA=", - "requires": { - "core-js": "^3.6.4", - "raphael": "git+https://github.com/nhn/raphael.git#2.2.0-c", - "tui-code-snippet": "^2.3.1" - }, - "dependencies": { - "core-js": { - "version": "3.6.4", - "resolved": "https://registry.npm.taobao.org/core-js/download/core-js-3.6.4.tgz", - "integrity": "sha1-RAqDU2tFgRS5yyrBWAujd9xHBkc=" - }, - "tui-code-snippet": { - "version": "2.3.1", - "resolved": "https://registry.npm.taobao.org/tui-code-snippet/download/tui-code-snippet-2.3.1.tgz", - "integrity": "sha1-0R2YOMkKLhTeyxDeullXWHMcZt4=" - } - } - }, - "tui-code-snippet": { - "version": "1.5.2", - "resolved": "https://registry.npm.taobao.org/tui-code-snippet/download/tui-code-snippet-1.5.2.tgz", - "integrity": "sha1-9Ljw8ayZawtbYh93yVB68ZoN4jg=" - }, - "tui-color-picker": { - "version": "2.2.6", - "resolved": "https://registry.npm.taobao.org/tui-color-picker/download/tui-color-picker-2.2.6.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftui-color-picker%2Fdownload%2Ftui-color-picker-2.2.6.tgz", - "integrity": "sha1-urVORzgOVQuzrIrpdAIbPMJRiqk=", - "requires": { - "tui-code-snippet": "^2.2.0" - }, - "dependencies": { - "tui-code-snippet": { - "version": "2.3.1", - "resolved": "https://registry.npm.taobao.org/tui-code-snippet/download/tui-code-snippet-2.3.1.tgz", - "integrity": "sha1-0R2YOMkKLhTeyxDeullXWHMcZt4=" - } - } - }, - "tui-editor": { - "version": "1.3.3", - "resolved": "https://registry.npm.taobao.org/tui-editor/download/tui-editor-1.3.3.tgz", - "integrity": "sha1-l3KVk7mg97dCyVTjzhIww41m/y8=", - "requires": { - "@types/codemirror": "0.0.71", - "@types/jquery": "^3.3.29", - "@types/markdown-it": "0.0.7", - "codemirror": "^5.33.0", - "highlight.js": "^9.12.0", - "jquery": "^3.3.1", - "markdown-it": "^8.4.0", - "plantuml-encoder": "^1.2.5", - "resize-observer-polyfill": "^1.5.0", - "squire-rte": "github:sohee-lee7/Squire#b1e0e1031fa18912d233c204cbe7c7fae4a42621", - "to-mark": "^1.1.4", - "tui-chart": "^3.0.1", - "tui-code-snippet": "^1.5.0", - "tui-color-picker": "^2.2.1" - } - }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.6.0.tgz", @@ -16689,6 +11413,12 @@ "prelude-ls": "~1.1.2" } }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npm.taobao.org/type-fest/download/type-fest-0.6.0.tgz?cache=0&sync_timestamp=1606468796224&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftype-fest%2Fdownload%2Ftype-fest-0.6.0.tgz", + "integrity": "sha1-jSojcNPfiG61yQraHFv2GIrPg4s=", + "dev": true + }, "type-is": { "version": "1.6.18", "resolved": "https://registry.npm.taobao.org/type-is/download/type-is-1.6.18.tgz", @@ -16705,49 +11435,30 @@ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, - "uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npm.taobao.org/uc.micro/download/uc.micro-1.0.6.tgz", - "integrity": "sha1-nEEagCpAmpH8bPdAgbq6NLJEmaw=" - }, "uglify-js": { - "version": "3.8.0", - "resolved": "https://registry.npm.taobao.org/uglify-js/download/uglify-js-3.8.0.tgz?cache=0&sync_timestamp=1582036112063&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fuglify-js%2Fdownload%2Fuglify-js-3.8.0.tgz", - "integrity": "sha1-81Qa6XsvBI1+fjqk85/YofXXqAU=", + "version": "3.4.10", + "resolved": "https://registry.npm.taobao.org/uglify-js/download/uglify-js-3.4.10.tgz", + "integrity": "sha1-mtlWPY6zrN+404WX0q8dgV9qdV8=", "dev": true, - "optional": true, "requires": { - "commander": "~2.20.3", + "commander": "~2.19.0", "source-map": "~0.6.1" }, "dependencies": { "commander": { - "version": "2.20.3", - "resolved": "https://registry.npm.taobao.org/commander/download/commander-2.20.3.tgz", - "integrity": "sha1-/UhehMA+tIgcIHIrpIA16FMa6zM=", - "dev": true, - "optional": true + "version": "2.19.0", + "resolved": "https://registry.npm.taobao.org/commander/download/commander-2.19.0.tgz?cache=0&sync_timestamp=1607933281807&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcommander%2Fdownload%2Fcommander-2.19.0.tgz", + "integrity": "sha1-9hmKqE5bg8RgVLlN3tv+1e6f8So=", + "dev": true }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", - "dev": true, - "optional": true + "dev": true } } }, - "unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npm.taobao.org/unc-path-regex/download/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", - "dev": true - }, - "underscore": { - "version": "1.6.0", - "resolved": "https://registry.npm.taobao.org/underscore/download/underscore-1.6.0.tgz", - "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=" - }, "unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npm.taobao.org/unicode-canonical-property-names-ecmascript/download/unicode-canonical-property-names-ecmascript-1.0.4.tgz", @@ -16765,15 +11476,15 @@ } }, "unicode-match-property-value-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npm.taobao.org/unicode-match-property-value-ecmascript/download/unicode-match-property-value-ecmascript-1.1.0.tgz", - "integrity": "sha1-W0tCbgjROoA2Xg1lesemwexGonc=", + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/unicode-match-property-value-ecmascript/download/unicode-match-property-value-ecmascript-1.2.0.tgz?cache=0&sync_timestamp=1583948924460&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Funicode-match-property-value-ecmascript%2Fdownload%2Funicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha1-DZH2AO7rMJaqlisdb8iIduZOpTE=", "dev": true }, "unicode-property-aliases-ecmascript": { - "version": "1.0.5", - "resolved": "https://registry.npm.taobao.org/unicode-property-aliases-ecmascript/download/unicode-property-aliases-ecmascript-1.0.5.tgz", - "integrity": "sha1-qcxsx85joKMCP8meNBuUQx1AWlc=", + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/unicode-property-aliases-ecmascript/download/unicode-property-aliases-ecmascript-1.1.0.tgz?cache=0&sync_timestamp=1583946096584&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Funicode-property-aliases-ecmascript%2Fdownload%2Funicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha1-3Vepn2IHvt/0Yoq++5TFDblByPQ=", "dev": true }, "unidecode": { @@ -16797,7 +11508,8 @@ "uniq": { "version": "1.0.1", "resolved": "https://registry.npm.taobao.org/uniq/download/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true }, "uniqs": { "version": "2.0.0", @@ -16825,7 +11537,7 @@ }, "universalify": { "version": "0.1.2", - "resolved": "https://registry.npm.taobao.org/universalify/download/universalify-0.1.2.tgz?cache=0&sync_timestamp=1583531099652&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Funiversalify%2Fdownload%2Funiversalify-0.1.2.tgz", + "resolved": "https://registry.npm.taobao.org/universalify/download/universalify-0.1.2.tgz", "integrity": "sha1-tkb2m+OULavOzJ1mOcgNwQXvqmY=", "dev": true }, @@ -16883,36 +11595,28 @@ }, "upath": { "version": "1.2.0", - "resolved": "https://registry.npm.taobao.org/upath/download/upath-1.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fupath%2Fdownload%2Fupath-1.2.0.tgz", + "resolved": "https://registry.npm.taobao.org/upath/download/upath-1.2.0.tgz?cache=0&sync_timestamp=1604768637331&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fupath%2Fdownload%2Fupath-1.2.0.tgz", "integrity": "sha1-j2bbzVWog6za5ECK+LA1pQRMGJQ=", "dev": true }, "upper-case": { "version": "1.1.3", - "resolved": "https://registry.npm.taobao.org/upper-case/download/upper-case-1.1.3.tgz", + "resolved": "https://registry.npm.taobao.org/upper-case/download/upper-case-1.1.3.tgz?cache=0&sync_timestamp=1606859943902&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fupper-case%2Fdownload%2Fupper-case-1.1.3.tgz", "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", "dev": true }, - "upper-case-first": { - "version": "1.1.2", - "resolved": "https://registry.npm.taobao.org/upper-case-first/download/upper-case-first-1.1.2.tgz?cache=0&sync_timestamp=1575601561477&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fupper-case-first%2Fdownload%2Fupper-case-first-1.1.2.tgz", - "integrity": "sha1-XXm+3P8UQZUY/S7bCgUHybaFkRU=", - "dev": true, - "requires": { - "upper-case": "^1.1.1" - } - }, "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npm.taobao.org/uri-js/download/uri-js-4.2.2.tgz", - "integrity": "sha1-lMVA4f93KVbiKZUHwBCupsiDjrA=", + "version": "4.4.0", + "resolved": "https://registry.npm.taobao.org/uri-js/download/uri-js-4.4.0.tgz", + "integrity": "sha1-qnFCYd55PoqCNHp7zJznTobyhgI=", + "dev": true, "requires": { "punycode": "^2.1.0" } }, "urix": { "version": "0.1.0", - "resolved": "https://registry.npm.taobao.org/urix/download/urix-0.1.0.tgz", + "resolved": "https://registry.npm.taobao.org/urix/download/urix-0.1.0.tgz?cache=0&sync_timestamp=1585438689517&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Furix%2Fdownload%2Furix-0.1.0.tgz", "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", "dev": true }, @@ -16935,27 +11639,14 @@ } }, "url-loader": { - "version": "1.1.2", - "resolved": "https://registry.npm.taobao.org/url-loader/download/url-loader-1.1.2.tgz", - "integrity": "sha1-uXHRkbg69pPF4/6kBkvp4fLX+Ng=", + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/url-loader/download/url-loader-2.3.0.tgz?cache=0&sync_timestamp=1602252594253&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Furl-loader%2Fdownload%2Furl-loader-2.3.0.tgz", + "integrity": "sha1-4OLvZY8APvuMpBsPP/v3a6uIZYs=", "dev": true, "requires": { - "loader-utils": "^1.1.0", - "mime": "^2.0.3", - "schema-utils": "^1.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fschema-utils%2Fdownload%2Fschema-utils-1.0.0.tgz", - "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } + "loader-utils": "^1.2.3", + "mime": "^2.4.4", + "schema-utils": "^2.5.0" } }, "url-parse": { @@ -16983,15 +11674,9 @@ "integrity": "sha1-1QyMrHmhn7wg8pEfVuuXP04QBw8=", "dev": true }, - "user-home": { - "version": "1.1.1", - "resolved": "https://registry.npm.taobao.org/user-home/download/user-home-1.1.1.tgz", - "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", - "dev": true - }, "util": { "version": "0.11.1", - "resolved": "https://registry.npm.taobao.org/util/download/util-0.11.1.tgz", + "resolved": "https://registry.npm.taobao.org/util/download/util-0.11.1.tgz?cache=0&sync_timestamp=1588238435623&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Futil%2Fdownload%2Futil-0.11.1.tgz", "integrity": "sha1-MjZzNyDsZLsn9uJvQhqqLhtYjWE=", "dev": true, "requires": { @@ -17009,7 +11694,8 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npm.taobao.org/util-deprecate/download/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true }, "util.promisify": { "version": "1.0.1", @@ -17021,6 +11707,27 @@ "es-abstract": "^1.17.2", "has-symbols": "^1.0.1", "object.getownpropertydescriptors": "^2.1.0" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npm.taobao.org/es-abstract/download/es-abstract-1.17.7.tgz", + "integrity": "sha1-pN5hsvZpifx0IWdsHLl4dXOs5Uw=", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } } }, "utila": { @@ -17037,18 +11744,15 @@ }, "uuid": { "version": "3.4.0", - "resolved": "https://registry.npm.taobao.org/uuid/download/uuid-3.4.0.tgz?cache=0&sync_timestamp=1583326207173&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fuuid%2Fdownload%2Fuuid-3.4.0.tgz", + "resolved": "https://registry.npm.taobao.org/uuid/download/uuid-3.4.0.tgz?cache=0&sync_timestamp=1607460052228&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fuuid%2Fdownload%2Fuuid-3.4.0.tgz", "integrity": "sha1-sj5DWK+oogL+ehAK8fX4g/AgB+4=", "dev": true }, - "v8flags": { - "version": "2.1.1", - "resolved": "https://registry.npm.taobao.org/v8flags/download/v8flags-2.1.1.tgz", - "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", - "dev": true, - "requires": { - "user-home": "^1.1.1" - } + "v8-compile-cache": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/v8-compile-cache/download/v8-compile-cache-2.2.0.tgz?cache=0&sync_timestamp=1603909372873&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fv8-compile-cache%2Fdownload%2Fv8-compile-cache-2.2.0.tgz", + "integrity": "sha1-lHHvo++RKNL3xqfKOcTda1BVsTI=", + "dev": true }, "validate-npm-package-license": { "version": "3.0.4", @@ -17083,45 +11787,76 @@ "extsprintf": "^1.2.0" } }, - "vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npm.taobao.org/vm-browserify/download/vm-browserify-1.1.2.tgz?cache=0&sync_timestamp=1572870776965&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvm-browserify%2Fdownload%2Fvm-browserify-1.1.2.tgz", - "integrity": "sha1-eGQcSIuObKkadfUR56OzKobl3aA=", - "dev": true - }, - "vue": { - "version": "2.6.10", - "resolved": "https://registry.npm.taobao.org/vue/download/vue-2.6.10.tgz?cache=0&sync_timestamp=1583556397972&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue%2Fdownload%2Fvue-2.6.10.tgz", - "integrity": "sha1-pysaQqTYKnIepDjRtr9V5mGVxjc=" - }, - "vue-count-to": { - "version": "1.0.13", - "resolved": "https://registry.npm.taobao.org/vue-count-to/download/vue-count-to-1.0.13.tgz", - "integrity": "sha1-PnVz6m5kwrKXL2TgoqsuI8dZD/M=" - }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/vm-browserify/download/vm-browserify-1.1.2.tgz?cache=0&sync_timestamp=1572870776965&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvm-browserify%2Fdownload%2Fvm-browserify-1.1.2.tgz", + "integrity": "sha1-eGQcSIuObKkadfUR56OzKobl3aA=", + "dev": true + }, + "vue": { + "version": "3.0.5", + "resolved": "https://registry.npm.taobao.org/vue/download/vue-3.0.5.tgz", + "integrity": "sha1-3huC66JKv+ceCXD8m41LK6vcP+E=", + "requires": { + "@vue/compiler-dom": "3.0.5", + "@vue/runtime-dom": "3.0.5", + "@vue/shared": "3.0.5" + }, + "dependencies": { + "@vue/compiler-core": { + "version": "3.0.5", + "resolved": "https://registry.npm.taobao.org/@vue/compiler-core/download/@vue/compiler-core-3.0.5.tgz", + "integrity": "sha1-puVMq+lTbnTGUTrNJknzEa8dQ6w=", + "requires": { + "@babel/parser": "^7.12.0", + "@babel/types": "^7.12.0", + "@vue/shared": "3.0.5", + "estree-walker": "^2.0.1", + "source-map": "^0.6.1" + } + }, + "@vue/compiler-dom": { + "version": "3.0.5", + "resolved": "https://registry.npm.taobao.org/@vue/compiler-dom/download/@vue/compiler-dom-3.0.5.tgz", + "integrity": "sha1-eIWhPm0Y9k3ejrzuwFLtLBAmlsI=", + "requires": { + "@vue/compiler-core": "3.0.5", + "@vue/shared": "3.0.5" + } + }, + "@vue/shared": { + "version": "3.0.5", + "resolved": "https://registry.npm.taobao.org/@vue/shared/download/@vue/shared-3.0.5.tgz", + "integrity": "sha1-wTHYi9ZxPMTZOzuxNy7bGYMiX/A=" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=" + } + } + }, "vue-eslint-parser": { - "version": "2.0.3", - "resolved": "https://registry.npm.taobao.org/vue-eslint-parser/download/vue-eslint-parser-2.0.3.tgz", - "integrity": "sha1-wmjJbG2Uz+PZOKX3WTlZsMozYNE=", + "version": "7.3.0", + "resolved": "https://registry.npm.taobao.org/vue-eslint-parser/download/vue-eslint-parser-7.3.0.tgz?cache=0&sync_timestamp=1608030996396&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-eslint-parser%2Fdownload%2Fvue-eslint-parser-7.3.0.tgz", + "integrity": "sha1-iUCFg52Z2BKW+ggdGWQ3M/I9dVk=", "dev": true, - "optional": true, "requires": { - "debug": "^3.1.0", - "eslint-scope": "^3.7.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^3.5.2", - "esquery": "^1.0.0", - "lodash": "^4.17.4" + "debug": "^4.1.1", + "eslint-scope": "^5.0.0", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.2.1", + "esquery": "^1.0.1", + "lodash": "^4.17.15" }, "dependencies": { "eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-3.7.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-scope%2Fdownload%2Feslint-scope-3.7.3.tgz", - "integrity": "sha1-u1ByANPRf2AkdjYWC0gmKEsQhTU=", + "version": "5.1.1", + "resolved": "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-5.1.1.tgz?cache=0&sync_timestamp=1600070417656&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-scope%2Fdownload%2Feslint-scope-5.1.1.tgz", + "integrity": "sha1-54blmmbLkrP2wfsNUIqrF0hI9Iw=", "dev": true, - "optional": true, "requires": { - "esrecurse": "^4.1.0", + "esrecurse": "^4.3.0", "estraverse": "^4.1.1" } } @@ -17133,33 +11868,10 @@ "integrity": "sha1-UylVzB6yCKPZkLOp+acFdGV+CPI=", "dev": true }, - "vue-jest": { - "version": "3.0.5", - "resolved": "https://registry.npm.taobao.org/vue-jest/download/vue-jest-3.0.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-jest%2Fdownload%2Fvue-jest-3.0.5.tgz", - "integrity": "sha1-1vEktULcv/IHv5KWwZQT9MQLcMk=", - "dev": true, - "requires": { - "babel-plugin-transform-es2015-modules-commonjs": "^6.26.0", - "chalk": "^2.1.0", - "extract-from-css": "^0.4.4", - "find-babel-config": "^1.1.0", - "js-beautify": "^1.6.14", - "node-cache": "^4.1.1", - "object-assign": "^4.1.1", - "source-map": "^0.5.6", - "tsconfig": "^7.0.0", - "vue-template-es2015-compiler": "^1.6.0" - } - }, - "vue-jsonp": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/vue-jsonp/-/vue-jsonp-0.1.8.tgz", - "integrity": "sha512-ebxvjHl5D7bv5Z7SeRzZUAPOSRMx+RiAeej7h6dPpbtk8MVz/b3n9fOZ8AAVmakb1pe36e+qG0J+K49a3LfpKA==" - }, "vue-loader": { - "version": "15.9.0", - "resolved": "https://registry.npm.taobao.org/vue-loader/download/vue-loader-15.9.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-loader%2Fdownload%2Fvue-loader-15.9.0.tgz", - "integrity": "sha1-XUsDeKRgYYj8g+WH7SPJS8OhCZg=", + "version": "15.9.5", + "resolved": "https://registry.npm.taobao.org/vue-loader/download/vue-loader-15.9.5.tgz?cache=0&sync_timestamp=1607093678805&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-loader%2Fdownload%2Fvue-loader-15.9.5.tgz", + "integrity": "sha1-epYNxCCjQ53qrN2gOP3Nv3xDJwY=", "dev": true, "requires": { "@vue/component-compiler-utils": "^3.1.0", @@ -17169,46 +11881,117 @@ "vue-style-loader": "^4.1.0" }, "dependencies": { - "@vue/component-compiler-utils": { - "version": "3.1.1", - "resolved": "https://registry.npm.taobao.org/@vue/component-compiler-utils/download/@vue/component-compiler-utils-3.1.1.tgz", - "integrity": "sha1-1O+PgCkmdARK1iEeM2owLk0qZXU=", + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/hash-sum/download/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + } + } + }, + "vue-loader-v16": { + "version": "npm:vue-loader@16.2.0", + "resolved": "http://git.seaskysh.com.cn:8881/nexus/repository/npm-group/vue-loader/-/vue-loader-16.2.0.tgz", + "integrity": "sha1-BGpTMI3Ufljv4g3ewe3sAnzjtG4=", + "dev": true, + "optional": true, + "requires": { + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "loader-utils": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "http://git.seaskysh.com.cn:8881/nexus/repository/npm-group/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=", "dev": true, + "optional": true, "requires": { - "consolidate": "^0.15.1", - "hash-sum": "^1.0.2", - "lru-cache": "^4.1.2", - "merge-source-map": "^1.1.0", - "postcss": "^7.0.14", - "postcss-selector-parser": "^6.0.2", - "prettier": "^1.18.2", - "source-map": "~0.6.1", - "vue-template-es2015-compiler": "^1.9.0" + "color-convert": "^2.0.1" } }, - "prettier": { - "version": "1.19.1", - "resolved": "https://registry.npm.taobao.org/prettier/download/prettier-1.19.1.tgz?cache=0&sync_timestamp=1573302169507&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fprettier%2Fdownload%2Fprettier-1.19.1.tgz", - "integrity": "sha1-99f1/4qc2HKnvkyhQglZVqYHl8s=", - "dev": true + "chalk": { + "version": "4.1.1", + "resolved": "http://git.seaskysh.com.cn:8881/nexus/repository/npm-group/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha1-yAs/qyi/Y3HmhjMl7uZ+YYt35q0=", + "dev": true, + "optional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", - "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "color-convert": { + "version": "2.0.1", + "resolved": "http://git.seaskysh.com.cn:8881/nexus/repository/npm-group/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=", + "dev": true, + "optional": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "http://git.seaskysh.com.cn:8881/nexus/repository/npm-group/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=", + "dev": true, + "optional": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "http://git.seaskysh.com.cn:8881/nexus/repository/npm-group/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=", + "dev": true, + "optional": true + }, + "loader-utils": { + "version": "2.0.0", + "resolved": "http://git.seaskysh.com.cn:8881/nexus/repository/npm-group/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha1-5MrOW4FtQloWa18JfhDNErNgZLA=", + "dev": true, + "optional": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "http://git.seaskysh.com.cn:8881/nexus/repository/npm-group/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=", + "dev": true, + "optional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "vue-particles": { + "version": "1.0.9", + "resolved": "https://registry.npm.taobao.org/vue-particles/download/vue-particles-1.0.9.tgz", + "integrity": "sha1-KdnMK+AVffHAqH7DuWyW8zJ5Um4=", + "dev": true, + "requires": { + "particles.js": "^2.0.0", + "vue": "^2.2.6" + }, + "dependencies": { + "vue": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.12.tgz", + "integrity": "sha512-uhmLFETqPPNyuLLbsKz6ioJ4q7AZHzD8ZVFNATNyICSZouqP2Sz0rotWQC8UNBF6VGSCs5abnKJoStA6JbCbfg==", "dev": true } } }, "vue-router": { - "version": "3.0.2", - "resolved": "https://registry.npm.taobao.org/vue-router/download/vue-router-3.0.2.tgz", - "integrity": "sha1-3txnr+bE4rwlaCyLHCqMDXx+Vr4=" - }, - "vue-splitpane": { - "version": "1.0.4", - "resolved": "https://registry.npm.taobao.org/vue-splitpane/download/vue-splitpane-1.0.4.tgz", - "integrity": "sha1-zfdEqPMb7csIbpVFqUU1ZdNgvQI=" + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/vue-router/download/vue-router-4.0.1.tgz?cache=0&sync_timestamp=1607347184356&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-router%2Fdownload%2Fvue-router-4.0.1.tgz", + "integrity": "sha1-MJJA5QUksefU6C4n8KD6Jf49HXE=" }, "vue-style-loader": { "version": "4.1.2", @@ -17218,16 +12001,14 @@ "requires": { "hash-sum": "^1.0.2", "loader-utils": "^1.0.2" - } - }, - "vue-template-compiler": { - "version": "2.6.10", - "resolved": "https://registry.npm.taobao.org/vue-template-compiler/download/vue-template-compiler-2.6.10.tgz?cache=0&sync_timestamp=1576267127911&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-template-compiler%2Fdownload%2Fvue-template-compiler-2.6.10.tgz", - "integrity": "sha1-MjtPNJXwT6o1AzN6gvXWUHeZycw=", - "dev": true, - "requires": { - "de-indent": "^1.0.2", - "he": "^1.1.0" + }, + "dependencies": { + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/hash-sum/download/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + } } }, "vue-template-es2015-compiler": { @@ -17236,64 +12017,196 @@ "integrity": "sha1-HuO8mhbsv1EYvjNLsV+cRvgvWCU=", "dev": true }, - "vuedraggable": { - "version": "2.20.0", - "resolved": "https://registry.npm.taobao.org/vuedraggable/download/vuedraggable-2.20.0.tgz", - "integrity": "sha1-gurB+aMsEW70z1IV/hjfsVKvqd0=", - "requires": { - "sortablejs": "^1.8.4" - } - }, "vuex": { - "version": "3.1.0", - "resolved": "https://registry.npm.taobao.org/vuex/download/vuex-3.1.0.tgz", - "integrity": "sha1-Y0uBUVzwz+l2vR/+lgF1XlH4Q7k=" - }, - "w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npm.taobao.org/w3c-hr-time/download/w3c-hr-time-1.0.2.tgz?cache=0&sync_timestamp=1583455604765&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fw3c-hr-time%2Fdownload%2Fw3c-hr-time-1.0.2.tgz", - "integrity": "sha1-ConN9cwVgi35w2BUNnaWPgzDCM0=", - "dev": true, - "requires": { - "browser-process-hrtime": "^1.0.0" - } + "version": "4.0.0-rc.2", + "resolved": "https://registry.npm.taobao.org/vuex/download/vuex-4.0.0-rc.2.tgz?cache=0&sync_timestamp=1606318256705&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvuex%2Fdownload%2Fvuex-4.0.0-rc.2.tgz", + "integrity": "sha1-NoHITrb1FxsDntqhfMeBBeIHJPM=" }, - "walker": { - "version": "1.0.7", - "resolved": "https://registry.npm.taobao.org/walker/download/walker-1.0.7.tgz", - "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", - "dev": true, - "requires": { - "makeerror": "1.0.x" - } - }, - "watch": { - "version": "0.18.0", - "resolved": "https://registry.npm.taobao.org/watch/download/watch-0.18.0.tgz", - "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=", + "watchpack": { + "version": "1.7.5", + "resolved": "https://registry.npm.taobao.org/watchpack/download/watchpack-1.7.5.tgz?cache=0&sync_timestamp=1607687490176&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwatchpack%2Fdownload%2Fwatchpack-1.7.5.tgz", + "integrity": "sha1-EmfmxV4Lm1vkTCAjrtVDeiwmxFM=", "dev": true, "requires": { - "exec-sh": "^0.2.0", - "minimist": "^1.2.0" + "chokidar": "^3.4.1", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.1" }, "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npm.taobao.org/minimist/download/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npm.taobao.org/braces/download/braces-3.0.2.tgz", + "integrity": "sha1-NFThpGLujVmeI23zNs2epPiv4Qc=", + "dev": true, + "optional": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npm.taobao.org/chokidar/download/chokidar-3.5.1.tgz?cache=0&sync_timestamp=1610719440699&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchokidar%2Fdownload%2Fchokidar-3.5.1.tgz", + "integrity": "sha1-7pznu+vSt59J8wR5nVRo4x4U5oo=", + "dev": true, + "optional": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.3.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npm.taobao.org/fill-range/download/fill-range-7.0.1.tgz", + "integrity": "sha1-GRmmp8df44ssfHflGYU12prN2kA=", + "dev": true, + "optional": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npm.taobao.org/is-number/download/is-number-7.0.0.tgz", + "integrity": "sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss=", + "dev": true, + "optional": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npm.taobao.org/to-regex-range/download/to-regex-range-5.0.1.tgz", + "integrity": "sha1-FkjESq58jZiKMmAY7XL1tN0DkuQ=", + "dev": true, + "optional": true, + "requires": { + "is-number": "^7.0.0" + } } } }, - "watchpack": { - "version": "1.6.0", - "resolved": "https://registry.npm.taobao.org/watchpack/download/watchpack-1.6.0.tgz", - "integrity": "sha1-S8EsLr6KonenHx0/FNaFx7RGzQA=", + "watchpack-chokidar2": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/watchpack-chokidar2/download/watchpack-chokidar2-2.0.1.tgz?cache=0&sync_timestamp=1604989085906&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwatchpack-chokidar2%2Fdownload%2Fwatchpack-chokidar2-2.0.1.tgz", + "integrity": "sha1-OFAAcu5uzmbzdpk2lQ6hdxvhyVc=", "dev": true, + "optional": true, "requires": { - "chokidar": "^2.0.2", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" + "chokidar": "^2.1.8" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/anymatch/download/anymatch-2.0.0.tgz", + "integrity": "sha1-vLJLTzeTTZqnrBe0ra+J58du8us=", + "dev": true, + "optional": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "optional": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-1.13.1.tgz", + "integrity": "sha1-WYr+VHVbKGilMw0q/51Ou1Mgm2U=", + "dev": true, + "optional": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npm.taobao.org/chokidar/download/chokidar-2.1.8.tgz?cache=0&sync_timestamp=1602588845974&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchokidar%2Fdownload%2Fchokidar-2.1.8.tgz", + "integrity": "sha1-gEs6e2qZNYw8XGHnHYco8EHP+Rc=", + "dev": true, + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npm.taobao.org/fsevents/download/fsevents-1.2.13.tgz?cache=0&sync_timestamp=1608033993741&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffsevents%2Fdownload%2Ffsevents-1.2.13.tgz", + "integrity": "sha1-8yXLBFVZJCi88Rs4M3DvcOO/zDg=", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/glob-parent/download/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "optional": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "optional": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/is-binary-path/download/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/readdirp/download/readdirp-2.2.1.tgz", + "integrity": "sha1-DodiKjMlqjPokihcr4tOhGUppSU=", + "dev": true, + "optional": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + } } }, "wbuf": { @@ -17314,52 +12227,58 @@ "defaults": "^1.0.3" } }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npm.taobao.org/webidl-conversions/download/webidl-conversions-4.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebidl-conversions%2Fdownload%2Fwebidl-conversions-4.0.2.tgz", - "integrity": "sha1-qFWYCx8LazWbodXZ+zmulB+qY60=", - "dev": true - }, "webpack": { - "version": "4.28.4", - "resolved": "https://registry.npm.taobao.org/webpack/download/webpack-4.28.4.tgz", - "integrity": "sha1-HdrmyJiH1++3Uq3ww80yubB+rNA=", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-module-context": "1.7.11", - "@webassemblyjs/wasm-edit": "1.7.11", - "@webassemblyjs/wasm-parser": "1.7.11", - "acorn": "^5.6.2", - "acorn-dynamic-import": "^3.0.0", - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0", - "chrome-trace-event": "^1.0.0", - "enhanced-resolve": "^4.1.0", - "eslint-scope": "^4.0.0", + "version": "4.44.2", + "resolved": "https://registry.npm.taobao.org/webpack/download/webpack-4.44.2.tgz?cache=0&sync_timestamp=1608060653278&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack%2Fdownload%2Fwebpack-4.44.2.tgz", + "integrity": "sha1-a/4rCvBVyLLR6Q7SzZNj+EEma3I=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.3.0", + "eslint-scope": "^4.0.3", "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.3.0", - "loader-utils": "^1.1.0", - "memory-fs": "~0.4.1", - "micromatch": "^3.1.8", - "mkdirp": "~0.5.0", - "neo-async": "^2.5.0", - "node-libs-browser": "^2.0.0", - "schema-utils": "^0.4.4", - "tapable": "^1.1.0", - "terser-webpack-plugin": "^1.1.0", - "watchpack": "^1.5.0", - "webpack-sources": "^1.3.0" + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz", + "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } } }, "webpack-bundle-analyzer": { - "version": "3.6.0", - "resolved": "https://registry.npm.taobao.org/webpack-bundle-analyzer/download/webpack-bundle-analyzer-3.6.0.tgz", - "integrity": "sha1-ObOo+CnKBEaCvG+eARyV3rVUrv0=", + "version": "3.9.0", + "resolved": "https://registry.npm.taobao.org/webpack-bundle-analyzer/download/webpack-bundle-analyzer-3.9.0.tgz?cache=0&sync_timestamp=1608133719952&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-bundle-analyzer%2Fdownload%2Fwebpack-bundle-analyzer-3.9.0.tgz", + "integrity": "sha1-9vlNsQj7V05BWtMT3kGicH0z7zw=", "dev": true, "requires": { - "acorn": "^6.0.7", - "acorn-walk": "^6.1.1", + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1", "bfj": "^6.1.1", "chalk": "^2.4.1", "commander": "^2.18.0", @@ -17367,49 +12286,34 @@ "express": "^4.16.3", "filesize": "^3.6.1", "gzip-size": "^5.0.0", - "lodash": "^4.17.15", + "lodash": "^4.17.19", "mkdirp": "^0.5.1", "opener": "^1.5.1", "ws": "^6.0.0" }, "dependencies": { "acorn": { - "version": "6.4.1", - "resolved": "https://registry.npm.taobao.org/acorn/download/acorn-6.4.1.tgz?cache=0&sync_timestamp=1583823913618&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-6.4.1.tgz", - "integrity": "sha1-Ux5Yuj9RudrLmmZGyk3r9bFMpHQ=", - "dev": true - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npm.taobao.org/commander/download/commander-2.20.3.tgz", - "integrity": "sha1-/UhehMA+tIgcIHIrpIA16FMa6zM=", + "version": "7.4.1", + "resolved": "https://registry.npm.taobao.org/acorn/download/acorn-7.4.1.tgz?cache=0&sync_timestamp=1602534280466&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-7.4.1.tgz", + "integrity": "sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=", "dev": true - }, - "ws": { - "version": "6.2.1", - "resolved": "https://registry.npm.taobao.org/ws/download/ws-6.2.1.tgz", - "integrity": "sha1-RC/fCkftZPWbal2P8TD0dI7VJPs=", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } } } }, "webpack-chain": { - "version": "4.12.1", - "resolved": "https://registry.npm.taobao.org/webpack-chain/download/webpack-chain-4.12.1.tgz?cache=0&sync_timestamp=1580740851884&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-chain%2Fdownload%2Fwebpack-chain-4.12.1.tgz", - "integrity": "sha1-bIQ5u7KrVQlS1g4eqTGRQZBsAqY=", + "version": "6.5.1", + "resolved": "https://registry.npm.taobao.org/webpack-chain/download/webpack-chain-6.5.1.tgz", + "integrity": "sha1-TycoTLu2N+PI+970Pu9YjU2GEgY=", "dev": true, "requires": { "deepmerge": "^1.5.2", - "javascript-stringify": "^1.6.0" + "javascript-stringify": "^2.0.1" } }, "webpack-dev-middleware": { - "version": "3.7.2", - "resolved": "https://registry.npm.taobao.org/webpack-dev-middleware/download/webpack-dev-middleware-3.7.2.tgz?cache=0&sync_timestamp=1582191388714&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-dev-middleware%2Fdownload%2Fwebpack-dev-middleware-3.7.2.tgz", - "integrity": "sha1-ABnD23FuP6XOy/ZPKriKdLqzMfM=", + "version": "3.7.3", + "resolved": "https://registry.npm.taobao.org/webpack-dev-middleware/download/webpack-dev-middleware-3.7.3.tgz?cache=0&sync_timestamp=1608052639209&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-dev-middleware%2Fdownload%2Fwebpack-dev-middleware-3.7.3.tgz", + "integrity": "sha1-Bjk3KxQyYuK4SrldO5GnWXBhwsU=", "dev": true, "requires": { "memory-fs": "^0.4.1", @@ -17420,9 +12324,9 @@ } }, "webpack-dev-server": { - "version": "3.10.3", - "resolved": "https://registry.npm.taobao.org/webpack-dev-server/download/webpack-dev-server-3.10.3.tgz", - "integrity": "sha1-81lFA2gT5X71gsJCDve0cOFNOvA=", + "version": "3.11.0", + "resolved": "https://registry.npm.taobao.org/webpack-dev-server/download/webpack-dev-server-3.11.0.tgz?cache=0&sync_timestamp=1606496402755&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-dev-server%2Fdownload%2Fwebpack-dev-server-3.11.0.tgz", + "integrity": "sha1-jxVKO84bz9HMYY705wMniFXn/4w=", "dev": true, "requires": { "ansi-html": "0.0.7", @@ -17433,31 +12337,31 @@ "debug": "^4.1.1", "del": "^4.1.1", "express": "^4.17.1", - "html-entities": "^1.2.1", + "html-entities": "^1.3.1", "http-proxy-middleware": "0.19.1", "import-local": "^2.0.0", "internal-ip": "^4.3.0", "ip": "^1.1.5", "is-absolute-url": "^3.0.3", "killable": "^1.0.1", - "loglevel": "^1.6.6", + "loglevel": "^1.6.8", "opn": "^5.5.0", "p-retry": "^3.0.1", - "portfinder": "^1.0.25", + "portfinder": "^1.0.26", "schema-utils": "^1.0.0", "selfsigned": "^1.10.7", "semver": "^6.3.0", "serve-index": "^1.9.1", - "sockjs": "0.3.19", + "sockjs": "0.3.20", "sockjs-client": "1.4.0", - "spdy": "^4.0.1", + "spdy": "^4.0.2", "strip-ansi": "^3.0.1", "supports-color": "^6.1.0", "url": "^0.11.0", "webpack-dev-middleware": "^3.7.2", "webpack-log": "^2.0.0", "ws": "^6.2.1", - "yargs": "12.0.5" + "yargs": "^13.3.2" }, "dependencies": { "ansi-regex": { @@ -17466,6 +12370,33 @@ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/anymatch/download/anymatch-2.0.0.tgz", + "integrity": "sha1-vLJLTzeTTZqnrBe0ra+J58du8us=", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-1.13.1.tgz", + "integrity": "sha1-WYr+VHVbKGilMw0q/51Ou1Mgm2U=", + "dev": true + }, "camelcase": { "version": "5.3.1", "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-5.3.1.tgz", @@ -17474,7 +12405,7 @@ }, "chokidar": { "version": "2.1.8", - "resolved": "https://registry.npm.taobao.org/chokidar/download/chokidar-2.1.8.tgz", + "resolved": "https://registry.npm.taobao.org/chokidar/download/chokidar-2.1.8.tgz?cache=0&sync_timestamp=1602588845974&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchokidar%2Fdownload%2Fchokidar-2.1.8.tgz", "integrity": "sha1-gEs6e2qZNYw8XGHnHYco8EHP+Rc=", "dev": true, "requires": { @@ -17492,100 +12423,102 @@ "upath": "^1.1.1" } }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-6.0.5.tgz?cache=0&sync_timestamp=1570439926300&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcross-spawn%2Fdownload%2Fcross-spawn-6.0.5.tgz", - "integrity": "sha1-Sl7Hxk364iw6FBJNus3uhG2Ay8Q=", + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/cliui/download/cliui-5.0.0.tgz", + "integrity": "sha1-3u/P2y6AB4SqNPRvoI4GhRx7u8U=", "dev": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" }, "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz", - "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=", + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz", + "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=", "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz?cache=0&sync_timestamp=1573280518303&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-5.2.0.tgz", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } } } }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npm.taobao.org/debug/download/debug-4.1.1.tgz", - "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/execa/download/execa-1.0.0.tgz?cache=0&sync_timestamp=1576749101742&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexeca%2Fdownload%2Fexeca-1.0.0.tgz", - "integrity": "sha1-xiNqW7TfbW8V6I5/AXeYIWdJ3dg=", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-7.0.3.tgz", + "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=", + "dev": true }, "find-up": { "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz?cache=0&sync_timestamp=1597169795121&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-up%2Fdownload%2Ffind-up-3.0.0.tgz", "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=", "dev": true, "requires": { "locate-path": "^3.0.0" } }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-4.1.0.tgz", - "integrity": "sha1-wbJVV189wh1Zv8ec09K0axw6VLU=", + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npm.taobao.org/fsevents/download/fsevents-1.2.13.tgz?cache=0&sync_timestamp=1608033993741&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffsevents%2Fdownload%2Ffsevents-1.2.13.tgz", + "integrity": "sha1-8yXLBFVZJCi88Rs4M3DvcOO/zDg=", "dev": true, + "optional": true, "requires": { - "pump": "^3.0.0" + "bindings": "^1.5.0", + "nan": "^2.12.1" } }, - "import-local": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/import-local/download/import-local-2.0.0.tgz", - "integrity": "sha1-VQcL44pZk88Y72236WH1vuXFoJ0=", + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/glob-parent/download/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "dev": true, "requires": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } } }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/invert-kv/download/invert-kv-2.0.0.tgz", - "integrity": "sha1-c5P1r6Weyf9fZ6J2INEcIm4+7AI=", - "dev": true - }, "is-absolute-url": { "version": "3.0.3", "resolved": "https://registry.npm.taobao.org/is-absolute-url/download/is-absolute-url-3.0.3.tgz?cache=0&sync_timestamp=1569736493122&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-absolute-url%2Fdownload%2Fis-absolute-url-3.0.3.tgz", "integrity": "sha1-lsaiK2ojkpsR6gr7GDbDatSl1pg=", "dev": true }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npm.taobao.org/lcid/download/lcid-2.0.0.tgz", - "integrity": "sha1-bvXS32DlL4LrIopMNz6NHzlyU88=", + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/is-binary-path/download/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "dev": true, "requires": { - "invert-kv": "^2.0.0" + "binary-extensions": "^1.0.0" } }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, "locate-path": { "version": "3.0.0", "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-3.0.0.tgz", @@ -17596,76 +12529,35 @@ "path-exists": "^3.0.0" } }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npm.taobao.org/mem/download/mem-4.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmem%2Fdownload%2Fmem-4.3.0.tgz", - "integrity": "sha1-Rhr0l7xK4JYIzbLmDu+2m/90QXg=", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-2.1.0.tgz", - "integrity": "sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz", - "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", - "dev": true - }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npm.taobao.org/os-locale/download/os-locale-3.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fos-locale%2Fdownload%2Fos-locale-3.1.0.tgz", - "integrity": "sha1-qAKm7hfyTBBIOrmTVxnO9O0Wvxo=", - "dev": true, - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, - "p-limit": { - "version": "2.2.2", - "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-2.2.2.tgz?cache=0&sync_timestamp=1577904218145&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-limit%2Fdownload%2Fp-limit-2.2.2.tgz", - "integrity": "sha1-YSebZ3IfUoeqHBOpp/u8SMkpGx4=", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, "p-locate": { "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-3.0.0.tgz", + "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-3.0.0.tgz?cache=0&sync_timestamp=1597081369770&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-locate%2Fdownload%2Fp-locate-3.0.0.tgz", "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=", "dev": true, "requires": { "p-limit": "^2.0.0" } }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npm.taobao.org/p-try/download/p-try-2.2.0.tgz", - "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=", + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-3.0.0.tgz", - "integrity": "sha1-J0kCDyOe2ZCIGx9xIQ1R62UjvqM=", + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/readdirp/download/readdirp-2.2.1.tgz", + "integrity": "sha1-DodiKjMlqjPokihcr4tOhGUppSU=", "dev": true, "requires": { - "find-up": "^3.0.0" + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" } }, "schema-utils": { "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fschema-utils%2Fdownload%2Fschema-utils-1.0.0.tgz", + "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz", "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=", "dev": true, "requires": { @@ -17676,10 +12568,38 @@ }, "semver": { "version": "6.3.0", - "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz?cache=0&sync_timestamp=1606853731020&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-6.3.0.tgz", "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=", "dev": true }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-3.1.0.tgz", + "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz", + "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz?cache=0&sync_timestamp=1573280518303&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-5.2.0.tgz", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz?cache=0&sync_timestamp=1573280518303&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-3.0.1.tgz", @@ -17691,46 +12611,63 @@ }, "supports-color": { "version": "6.1.0", - "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-6.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-6.1.0.tgz", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-6.1.0.tgz?cache=0&sync_timestamp=1608033349725&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-6.1.0.tgz", "integrity": "sha1-B2Srxpxj1ayELdSGfo0CXogN+PM=", "dev": true, "requires": { "has-flag": "^3.0.0" } }, - "ws": { - "version": "6.2.1", - "resolved": "https://registry.npm.taobao.org/ws/download/ws-6.2.1.tgz", - "integrity": "sha1-RC/fCkftZPWbal2P8TD0dI7VJPs=", + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-5.1.0.tgz", + "integrity": "sha1-H9H2cjXVttD+54EFYAG/tpTAOwk=", "dev": true, "requires": { - "async-limiter": "~1.0.0" + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz", + "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz?cache=0&sync_timestamp=1573280518303&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-5.2.0.tgz", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } } }, "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npm.taobao.org/yargs/download/yargs-12.0.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs%2Fdownload%2Fyargs-12.0.5.tgz", - "integrity": "sha1-BfWZe2CWR7ZPZrgeO0sQo2jnrRM=", + "version": "13.3.2", + "resolved": "https://registry.npm.taobao.org/yargs/download/yargs-13.3.2.tgz?cache=0&sync_timestamp=1607207963779&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs%2Fdownload%2Fyargs-13.3.2.tgz", + "integrity": "sha1-rX/+/sGqWVZayRX4Lcyzipwxot0=", "dev": true, "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", + "cliui": "^5.0.0", "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", + "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", + "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^2.0.0", + "string-width": "^3.0.0", "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" } }, "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-11.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs-parser%2Fdownload%2Fyargs-parser-11.1.1.tgz", - "integrity": "sha1-h5oIZZc7yp9rq1y987HGfsfTvPQ=", + "version": "13.1.2", + "resolved": "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-13.1.2.tgz?cache=0&sync_timestamp=1604886709178&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs-parser%2Fdownload%2Fyargs-parser-13.1.2.tgz", + "integrity": "sha1-Ew8JcC667vJlDVTObj5XBvek+zg=", "dev": true, "requires": { "camelcase": "^5.0.0", @@ -17751,7 +12688,7 @@ }, "webpack-merge": { "version": "4.2.2", - "resolved": "https://registry.npm.taobao.org/webpack-merge/download/webpack-merge-4.2.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-merge%2Fdownload%2Fwebpack-merge-4.2.2.tgz", + "resolved": "https://registry.npm.taobao.org/webpack-merge/download/webpack-merge-4.2.2.tgz", "integrity": "sha1-onxS6ng9E5iv0gh/VH17nS9DY00=", "dev": true, "requires": { @@ -17760,7 +12697,7 @@ }, "webpack-sources": { "version": "1.4.3", - "resolved": "https://registry.npm.taobao.org/webpack-sources/download/webpack-sources-1.4.3.tgz", + "resolved": "https://registry.npm.taobao.org/webpack-sources/download/webpack-sources-1.4.3.tgz?cache=0&sync_timestamp=1603965333971&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-sources%2Fdownload%2Fwebpack-sources-1.4.3.tgz", "integrity": "sha1-7t2OwLko+/HL/plOItLYkPMwqTM=", "dev": true, "requires": { @@ -17777,52 +12714,25 @@ } }, "websocket-driver": { - "version": "0.7.3", - "resolved": "https://registry.npm.taobao.org/websocket-driver/download/websocket-driver-0.7.3.tgz", - "integrity": "sha1-otTg1PTxFvHmKX66WLBdQwEA6fk=", + "version": "0.6.5", + "resolved": "https://registry.npm.taobao.org/websocket-driver/download/websocket-driver-0.6.5.tgz", + "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", "dev": true, "requires": { - "http-parser-js": ">=0.4.0 <0.4.11", - "safe-buffer": ">=5.1.0", "websocket-extensions": ">=0.1.1" } }, "websocket-extensions": { - "version": "0.1.3", - "resolved": "https://registry.npm.taobao.org/websocket-extensions/download/websocket-extensions-0.1.3.tgz", - "integrity": "sha1-XS/yKXcAPsaHpLhwc9+7rBRszyk=", - "dev": true - }, - "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npm.taobao.org/whatwg-encoding/download/whatwg-encoding-1.0.5.tgz", - "integrity": "sha1-WrrPd3wyFmpR0IXWtPPn0nET3bA=", - "dev": true, - "requires": { - "iconv-lite": "0.4.24" - } - }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npm.taobao.org/whatwg-mimetype/download/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha1-PUseAxLSB5h5+Cav8Y2+7KWWD78=", + "version": "0.1.4", + "resolved": "https://registry.npm.taobao.org/websocket-extensions/download/websocket-extensions-0.1.4.tgz", + "integrity": "sha1-f4RzvIOd/YdgituV1+sHUhFXikI=", "dev": true }, - "whatwg-url": { - "version": "6.5.0", - "resolved": "https://registry.npm.taobao.org/whatwg-url/download/whatwg-url-6.5.0.tgz?cache=0&sync_timestamp=1578023109671&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwhatwg-url%2Fdownload%2Fwhatwg-url-6.5.0.tgz", - "integrity": "sha1-8t8Cv/F2/WUHDfdK1cy7WhmZZag=", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, "which": { "version": "1.3.1", "resolved": "https://registry.npm.taobao.org/which/download/which-1.3.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwhich%2Fdownload%2Fwhich-1.3.1.tgz", "integrity": "sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=", + "dev": true, "requires": { "isexe": "^2.0.0" } @@ -17830,16 +12740,8 @@ "which-module": { "version": "2.0.0", "resolved": "https://registry.npm.taobao.org/which-module/download/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" - }, - "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npm.taobao.org/wide-align/download/wide-align-1.1.3.tgz", - "integrity": "sha1-rgdOa9wMFKQx6ATmJFScYzsABFc=", - "dev": true, - "requires": { - "string-width": "^1.0.2 || 2" - } + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true }, "word-wrap": { "version": "1.2.3", @@ -17847,12 +12749,6 @@ "integrity": "sha1-YQY29rH3A4kb00dxzLF/uTtHB5w=", "dev": true }, - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npm.taobao.org/wordwrap/download/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true - }, "worker-farm": { "version": "1.7.0", "resolved": "https://registry.npm.taobao.org/worker-farm/download/worker-farm-1.7.0.tgz", @@ -17863,44 +12759,39 @@ } }, "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "version": "6.2.0", + "resolved": "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-6.2.0.tgz", + "integrity": "sha1-6Tk7oHEC5skaOyIUePAlfNKFblM=", + "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-4.3.0.tgz?cache=0&sync_timestamp=1606792371412&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-4.3.0.tgz", + "integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=", + "dev": true, "requires": { - "number-is-nan": "^1.0.0" + "color-convert": "^2.0.1" } }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz", + "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=", + "dev": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "color-name": "~1.1.4" } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz?cache=0&sync_timestamp=1573280518303&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz", + "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=", + "dev": true } } }, @@ -17911,55 +12802,23 @@ "dev": true }, "write": { - "version": "0.2.1", - "resolved": "https://registry.npm.taobao.org/write/download/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/write/download/write-1.0.3.tgz", + "integrity": "sha1-CADhRSO5I6OH5BUSPIZWFqrg9cM=", "dev": true, - "optional": true, "requires": { "mkdirp": "^0.5.1" } }, - "write-file-atomic": { - "version": "2.4.3", - "resolved": "https://registry.npm.taobao.org/write-file-atomic/download/write-file-atomic-2.4.3.tgz", - "integrity": "sha1-H9Lprh3z51uNjDZ0Q8aS1MqB9IE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" - } - }, "ws": { - "version": "5.2.2", - "resolved": "https://registry.npm.taobao.org/ws/download/ws-5.2.2.tgz", - "integrity": "sha1-3/7xSGa46NyRM1glFNG++vlumA8=", + "version": "6.2.1", + "resolved": "https://registry.npm.taobao.org/ws/download/ws-6.2.1.tgz?cache=0&sync_timestamp=1607113213006&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fws%2Fdownload%2Fws-6.2.1.tgz", + "integrity": "sha1-RC/fCkftZPWbal2P8TD0dI7VJPs=", "dev": true, "requires": { "async-limiter": "~1.0.0" } }, - "xlsx": { - "version": "0.14.1", - "resolved": "https://registry.npm.taobao.org/xlsx/download/xlsx-0.14.1.tgz", - "integrity": "sha1-7O31Nr0elAVUhv9IT1iI3KqJvT0=", - "requires": { - "adler-32": "~1.2.0", - "cfb": "^1.1.0", - "codepage": "~1.14.0", - "commander": "~2.17.1", - "crc-32": "~1.2.0", - "exit-on-epipe": "~1.0.1", - "ssf": "~0.10.2" - } - }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npm.taobao.org/xml-name-validator/download/xml-name-validator-3.0.0.tgz", - "integrity": "sha1-auc+Bt5NjG5H+fsYH3jWSK1FfGo=", - "dev": true - }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npm.taobao.org/xtend/download/xtend-4.0.2.tgz", @@ -17967,40 +12826,52 @@ "dev": true }, "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npm.taobao.org/y18n/download/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/y18n/download/y18n-4.0.1.tgz?cache=0&sync_timestamp=1606778028917&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fy18n%2Fdownload%2Fy18n-4.0.1.tgz", + "integrity": "sha1-jbK4PDHF11CZu4kLI/MJSJHiR9Q=", + "dev": true }, "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-3.1.1.tgz", + "integrity": "sha1-27fa+b/YusmrRev2ArjLrQ1dCP0=", + "dev": true }, "yargs": { - "version": "10.1.2", - "resolved": "https://registry.npm.taobao.org/yargs/download/yargs-10.1.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs%2Fdownload%2Fyargs-10.1.2.tgz", - "integrity": "sha1-RU0HTCsWpRpD4vt4B+T53mnMtcU=", - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", + "version": "15.4.1", + "resolved": "https://registry.npm.taobao.org/yargs/download/yargs-15.4.1.tgz?cache=0&sync_timestamp=1607207963779&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs%2Fdownload%2Fyargs-15.4.1.tgz", + "integrity": "sha1-DYehbeAa7p2L7Cv7909nhRcw9Pg=", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", + "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^2.0.0", + "string-width": "^4.2.0", "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^8.1.0" + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" } }, "yargs-parser": { - "version": "8.1.0", - "resolved": "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-8.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs-parser%2Fdownload%2Fyargs-parser-8.1.0.tgz", - "integrity": "sha1-8TdqM7Ziml0GN4KUTacyYx6WaVA=", + "version": "18.1.3", + "resolved": "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-18.1.3.tgz?cache=0&sync_timestamp=1604886709178&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs-parser%2Fdownload%2Fyargs-parser-18.1.3.tgz", + "integrity": "sha1-vmjEl1xrKr9GkjawyHA2L6sJp7A=", + "dev": true, "requires": { - "camelcase": "^4.1.0" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-5.3.1.tgz", + "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=", + "dev": true + } } }, "yorkie": { @@ -18015,9 +12886,20 @@ "strip-indent": "^2.0.0" }, "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, "execa": { "version": "0.8.0", - "resolved": "https://registry.npm.taobao.org/execa/download/execa-0.8.0.tgz?cache=0&sync_timestamp=1576749101742&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexeca%2Fdownload%2Fexeca-0.8.0.tgz", + "resolved": "https://registry.npm.taobao.org/execa/download/execa-0.8.0.tgz?cache=0&sync_timestamp=1606970975645&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexeca%2Fdownload%2Fexeca-0.8.0.tgz", "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", "dev": true, "requires": { @@ -18030,55 +12912,35 @@ "strip-eof": "^1.0.0" } }, - "normalize-path": { - "version": "1.0.0", - "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-1.0.0.tgz", - "integrity": "sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=", + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true - } - } - }, - "yup": { - "version": "0.26.10", - "resolved": "https://registry.npm.taobao.org/yup/download/yup-0.26.10.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyup%2Fdownload%2Fyup-0.26.10.tgz", - "integrity": "sha1-NUWDlmMokDj68l+s/AfhH9Z8DLE=", - "dev": true, - "requires": { - "@babel/runtime": "7.0.0", - "fn-name": "~2.0.1", - "lodash": "^4.17.10", - "property-expr": "^1.5.0", - "synchronous-promise": "^2.0.5", - "toposort": "^2.0.2" - }, - "dependencies": { - "@babel/runtime": { - "version": "7.0.0", - "resolved": "https://registry.npm.taobao.org/@babel/runtime/download/@babel/runtime-7.0.0.tgz?cache=0&sync_timestamp=1583373757080&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fruntime%2Fdownload%2F%40babel%2Fruntime-7.0.0.tgz", - "integrity": "sha1-ret4/t/IVaoFvAQWQPP2+Y6FQkw=", + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.5.tgz?cache=0&sync_timestamp=1594427573763&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flru-cache%2Fdownload%2Flru-cache-4.1.5.tgz", + "integrity": "sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80=", "dev": true, "requires": { - "regenerator-runtime": "^0.12.0" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, - "regenerator-runtime": { - "version": "0.12.1", - "resolved": "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.12.1.tgz?cache=0&sync_timestamp=1582505712016&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregenerator-runtime%2Fdownload%2Fregenerator-runtime-0.12.1.tgz", - "integrity": "sha1-+hpxVEdkwDb4xJsToIsllMn4oN4=", + "normalize-path": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-1.0.0.tgz", + "integrity": "sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=", "dev": true }, - "toposort": { - "version": "2.0.2", - "resolved": "https://registry.npm.taobao.org/toposort/download/toposort-2.0.2.tgz", - "integrity": "sha1-riF2gXXRVZ1IvvNUILL0li8JwzA=", + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true } } - }, - "zrender": { - "version": "4.0.7", - "resolved": "https://registry.npm.taobao.org/zrender/download/zrender-4.0.7.tgz?cache=0&sync_timestamp=1583136509110&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fzrender%2Fdownload%2Fzrender-4.0.7.tgz", - "integrity": "sha1-Fa6WCCL17+1BCZXTflEH/j3hDm0=" } } } diff --git a/WebSite/package.json b/WebSite/package.json index 939263ad3a39f8e6c8c74add0920202fe8fe1eb0..afaafb53366297f35866422981688487973e04d4 100644 --- a/WebSite/package.json +++ b/WebSite/package.json @@ -1,122 +1,50 @@ { - "name": "vue-element-admin", - "version": "1.1.0", - "description": "A magical vue admin. An out-of-box UI solution for enterprise applications. Newest development stack of vue. Lots of awesome features", - "author": "Pan <panfree23@gmail.com>", - "license": "MIT", + "name": "vue-element-next", + "version": "0.8.1", + "private": true, "scripts": { - "serve": "vue-cli-service serve --open", + "serve": "vue-cli-service serve", + "serve:mock": "vue-cli-service serve --mode mock", "build": "vue-cli-service build", - "build:prod": "vue-cli-service build", - "build:stage": "vue-cli-service build --mode staging", - "build:test": "vue-cli-service build --mode test", - "preview": "node build/index.js --preview", - "lint": "eslint --ext .js,.vue src", - "lint-fix": "eslint --fix --ext .js --ext .jsx --ext .vue src", - "test:unit": "jest --clearCache && vue-cli-service test:unit", - "test:ci": "npm run lint && npm run test:unit", - "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml", - "new": "plop" - }, - "husky": { - "hooks": { - "pre-commit": "lint-staged" - } - }, - "lint-staged": { - "src/**/*.{js,vue}": [ - "eslint --fix", - "git add" - ] - }, - "keywords": [ - "vue", - "admin", - "dashboard", - "element-ui", - "boilerplate", - "admin-template", - "management-system" - ], - "repository": { - "type": "git", - "url": "git+https://github.com/PanJiaChen/vue-element-admin.git" - }, - "bugs": { - "url": "https://github.com/PanJiaChen/vue-element-admin/issues" + "lint": "vue-cli-service lint", + "config:dev": "vue-cli-service inspect --mode development >> webpack.config.development.js", + "config:prod": "vue-cli-service inspect --mode production >> webpack.config.production.js" }, "dependencies": { - "axios": "0.18.1", + "axios": "0.21.1", "clipboard": "2.0.4", - "codemirror": "5.45.0", - "css-loader": "^3.5.3", - "driver.js": "0.9.5", - "dropzone": "5.5.1", - "echarts": "4.2.1", - "element-ui": "2.13.0", - "file-saver": "2.0.1", - "fuse.js": "3.4.4", - "js-cookie": "2.2.0", - "jsonlint": "1.6.3", - "jszip": "3.2.1", - "moment": "^2.24.0", + "core-js": "3.8.1", + "crypto-js": "4.0.0", + "element-plus": "1.0.2-beta.32", + "moment": "^2.29.1", "normalize.css": "7.0.0", "nprogress": "0.2.0", - "path-to-regexp": "2.4.0", - "screenfull": "4.2.0", - "script-loader": "0.7.2", - "showdown": "1.9.0", - "sortablejs": "1.8.4", - "tui-editor": "1.3.3", - "vue": "2.6.10", - "vue-count-to": "1.0.13", - "vue-jsonp": "^0.1.8", - "vue-router": "3.0.2", - "vue-splitpane": "1.0.4", - "vuedraggable": "2.20.0", - "vuex": "3.1.0", - "xlsx": "0.14.1" + "vue": "3.0.5", + "vue-router": "4.0.1", + "vuex": "4.0.0-rc.2" }, "devDependencies": { - "@babel/core": "7.0.0", - "@babel/register": "7.0.0", - "@vue/cli-plugin-babel": "3.5.3", - "@vue/cli-plugin-eslint": "^3.9.1", - "@vue/cli-plugin-unit-jest": "3.5.3", - "@vue/cli-service": "3.5.3", + "@fortawesome/fontawesome-free": "^5.15.1", + "@vue/cli-plugin-babel": "~4.5.0", + "@vue/cli-plugin-eslint": "~4.5.0", + "@vue/cli-plugin-router": "~4.5.0", + "@vue/cli-plugin-vuex": "~4.5.0", + "@vue/cli-service": "~4.5.0", + "@vue/compiler-sfc": "3.0.5", "@vue/eslint-config-prettier": "^6.0.0", - "@vue/test-utils": "1.0.0-beta.29", - "autoprefixer": "^9.5.1", - "babel-core": "7.0.0-bridge.0", - "babel-eslint": "10.0.1", - "babel-jest": "23.6.0", + "babel-eslint": "^10.1.0", "chalk": "2.4.2", - "chokidar": "2.1.5", - "connect": "3.6.6", - "eslint": "5.15.3", - "eslint-plugin-prettier": "^3.1.2", - "eslint-plugin-vue": "5.2.2", + "chokidar": "3.5.1", + "eslint": "^6.7.2", + "eslint-plugin-prettier": "^3.1.3", + "eslint-plugin-vue": "^7.0.0-0", "html-webpack-plugin": "3.2.0", - "husky": "1.3.1", - "lint-staged": "8.1.5", "mockjs": "1.0.1-beta3", - "node-sass": "^4.9.0", - "plop": "2.3.0", "prettier": "^1.19.1", - "runjs": "^4.3.2", - "sass-loader": "^7.1.0", + "sass": "^1.26.5", + "sass-loader": "^8.0.2", "script-ext-html-webpack-plugin": "2.1.3", - "serve-static": "^1.13.2", "svg-sprite-loader": "4.1.3", - "svgo": "1.2.0", - "vue-template-compiler": "2.6.10" - }, - "engines": { - "node": ">=8.9", - "npm": ">= 3.0.0" - }, - "browserslist": [ - "> 1%", - "last 2 versions" - ] + "vue-particles": "^1.0.9" + } } diff --git a/WebSite/plop-templates/component/index.hbs b/WebSite/plop-templates/component/index.hbs deleted file mode 100644 index 76610552d74a630957f9510f81223590c887f856..0000000000000000000000000000000000000000 --- a/WebSite/plop-templates/component/index.hbs +++ /dev/null @@ -1,26 +0,0 @@ -{{#if template}} -<template> - <div /> -</template> -{{/if}} - -{{#if script}} -<script> -export default { - name: '{{ properCase name }}', - props: {}, - data() { - return {} - }, - created() {}, - mounted() {}, - methods: {} -} -</script> -{{/if}} - -{{#if style}} -<style lang="scss" scoped> - -</style> -{{/if}} diff --git a/WebSite/plop-templates/component/prompt.js b/WebSite/plop-templates/component/prompt.js deleted file mode 100644 index 3723e8e1357a94cb211921a6c6f51dffa42e5d4b..0000000000000000000000000000000000000000 --- a/WebSite/plop-templates/component/prompt.js +++ /dev/null @@ -1,55 +0,0 @@ -const { notEmpty } = require('../utils.js') - -module.exports = { - description: 'generate vue component', - prompts: [{ - type: 'input', - name: 'name', - message: 'component name please', - validate: notEmpty('name') - }, - { - type: 'checkbox', - name: 'blocks', - message: 'Blocks:', - choices: [{ - name: '<template>', - value: 'template', - checked: true - }, - { - name: '<script>', - value: 'script', - checked: true - }, - { - name: 'style', - value: 'style', - checked: true - } - ], - validate(value) { - if (value.indexOf('script') === -1 && value.indexOf('template') === -1) { - return 'Components require at least a <script> or <template> tag.' - } - return true - } - } - ], - actions: data => { - const name = '{{properCase name}}' - const actions = [{ - type: 'add', - path: `src/components/${name}/index.vue`, - templateFile: 'plop-templates/component/index.hbs', - data: { - name: name, - template: data.blocks.includes('template'), - script: data.blocks.includes('script'), - style: data.blocks.includes('style') - } - }] - - return actions - } -} diff --git a/WebSite/plop-templates/store/index.hbs b/WebSite/plop-templates/store/index.hbs deleted file mode 100644 index 4f8e2dc0b44ccdb18abfba87156b5611f2e3dd90..0000000000000000000000000000000000000000 --- a/WebSite/plop-templates/store/index.hbs +++ /dev/null @@ -1,16 +0,0 @@ -{{#if state}} -const state = {} -{{/if}} - -{{#if mutations}} -const mutations = {} -{{/if}} - -{{#if actions}} -const actions = {} -{{/if}} - -export default { - namespaced: true, - {{options}} -} diff --git a/WebSite/plop-templates/store/prompt.js b/WebSite/plop-templates/store/prompt.js deleted file mode 100644 index bcbc11d1f5b983062499c5d2f9c4071d8bc15d0d..0000000000000000000000000000000000000000 --- a/WebSite/plop-templates/store/prompt.js +++ /dev/null @@ -1,62 +0,0 @@ -const { notEmpty } = require('../utils.js') - -module.exports = { - description: 'generate store', - prompts: [{ - type: 'input', - name: 'name', - message: 'store name please', - validate: notEmpty('name') - }, - { - type: 'checkbox', - name: 'blocks', - message: 'Blocks:', - choices: [{ - name: 'state', - value: 'state', - checked: true - }, - { - name: 'mutations', - value: 'mutations', - checked: true - }, - { - name: 'actions', - value: 'actions', - checked: true - } - ], - validate(value) { - if (!value.includes('state') || !value.includes('mutations')) { - return 'store require at least state and mutations' - } - return true - } - } - ], - actions(data) { - const name = '{{name}}' - const { blocks } = data - const options = ['state', 'mutations'] - const joinFlag = `, - ` - if (blocks.length === 3) { - options.push('actions') - } - - const actions = [{ - type: 'add', - path: `src/store/modules/${name}.js`, - templateFile: 'plop-templates/store/index.hbs', - data: { - options: options.join(joinFlag), - state: blocks.includes('state'), - mutations: blocks.includes('mutations'), - actions: blocks.includes('actions') - } - }] - return actions - } -} diff --git a/WebSite/plop-templates/utils.js b/WebSite/plop-templates/utils.js deleted file mode 100644 index 0310ca02b30ce7c02cbc9b238c4fd00c2a36815a..0000000000000000000000000000000000000000 --- a/WebSite/plop-templates/utils.js +++ /dev/null @@ -1,9 +0,0 @@ -exports.notEmpty = name => { - return v => { - if (!v || v.trim === '') { - return `${name} is required` - } else { - return true - } - } -} diff --git a/WebSite/plop-templates/view/index.hbs b/WebSite/plop-templates/view/index.hbs deleted file mode 100644 index 76610552d74a630957f9510f81223590c887f856..0000000000000000000000000000000000000000 --- a/WebSite/plop-templates/view/index.hbs +++ /dev/null @@ -1,26 +0,0 @@ -{{#if template}} -<template> - <div /> -</template> -{{/if}} - -{{#if script}} -<script> -export default { - name: '{{ properCase name }}', - props: {}, - data() { - return {} - }, - created() {}, - mounted() {}, - methods: {} -} -</script> -{{/if}} - -{{#if style}} -<style lang="scss" scoped> - -</style> -{{/if}} diff --git a/WebSite/plop-templates/view/prompt.js b/WebSite/plop-templates/view/prompt.js deleted file mode 100644 index 1d490ee82421f4a67a41a8ed8dae01e50b5982bf..0000000000000000000000000000000000000000 --- a/WebSite/plop-templates/view/prompt.js +++ /dev/null @@ -1,55 +0,0 @@ -const { notEmpty } = require('../utils.js') - -module.exports = { - description: 'generate a view', - prompts: [{ - type: 'input', - name: 'name', - message: 'view name please', - validate: notEmpty('name') - }, - { - type: 'checkbox', - name: 'blocks', - message: 'Blocks:', - choices: [{ - name: '<template>', - value: 'template', - checked: true - }, - { - name: '<script>', - value: 'script', - checked: true - }, - { - name: 'style', - value: 'style', - checked: true - } - ], - validate(value) { - if (value.indexOf('script') === -1 && value.indexOf('template') === -1) { - return 'View require at least a <script> or <template> tag.' - } - return true - } - } - ], - actions: data => { - const name = '{{name}}' - const actions = [{ - type: 'add', - path: `src/views/${name}/index.vue`, - templateFile: 'plop-templates/view/index.hbs', - data: { - name: name, - template: data.blocks.includes('template'), - script: data.blocks.includes('script'), - style: data.blocks.includes('style') - } - }] - - return actions - } -} diff --git a/WebSite/plopfile.js b/WebSite/plopfile.js deleted file mode 100644 index 57387bf17ab64d915db5ff2ca9f0369d8e55b9bc..0000000000000000000000000000000000000000 --- a/WebSite/plopfile.js +++ /dev/null @@ -1,9 +0,0 @@ -const viewGenerator = require('./plop-templates/view/prompt') -const componentGenerator = require('./plop-templates/component/prompt') -const storeGenerator = require('./plop-templates/store/prompt.js') - -module.exports = function(plop) { - plop.setGenerator('view', viewGenerator) - plop.setGenerator('component', componentGenerator) - plop.setGenerator('store', storeGenerator) -} diff --git a/WebSite/postcss.config.js b/WebSite/postcss.config.js deleted file mode 100644 index 961986e2b11eeebe1d4ddabdf2e6c85e2a2562e0..0000000000000000000000000000000000000000 --- a/WebSite/postcss.config.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - plugins: { - autoprefixer: {} - } -} diff --git a/WebSite/public/favicon.ico b/WebSite/public/favicon.ico index 34b63ac63a87ee3ea8e7a0f3f5b5406c437e2112..f59ac780025ac465c389393f1a16cf832c39ce95 100644 Binary files a/WebSite/public/favicon.ico and b/WebSite/public/favicon.ico differ diff --git a/WebSite/public/index.html b/WebSite/public/index.html index e6b877d5bd46c031437f0eee320dcce28a432c88..06c2b092f04469a8622d0bf8d35899f1d3bbf8b7 100644 --- a/WebSite/public/index.html +++ b/WebSite/public/index.html @@ -1,16 +1,25 @@ +<!-- + * @Description: + * @Autor: dongjunhua + * @Date: 2020-12-17 10:20:47 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-02-02 15:20:19 +--> <!DOCTYPE html> -<html> +<html lang="en"> <head> <meta charset="utf-8"> - <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> - <meta name="renderer" content="webkit"> - <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width,initial-scale=1.0"> <link rel="icon" href="<%= BASE_URL %>favicon.ico"> + <!-- <title><%= htmlWebpackPlugin.options.title %></title> --> <title><%= webpackConfig.name %></title> - <link rel="stylesheet" href="http://at.alicdn.com/t/font_1876535_e9h4x5vyl4.css"/> </head> <body> - <div id="app"></div> + <noscript> + <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong> + </noscript> + <div id="app" class="light"></div> <!-- built files will be auto injected --> </body> </html> diff --git a/WebSite/src/App.vue b/WebSite/src/App.vue index 00fceee4b899f87f927e75e125d42d47c077f7be..ebfe97c7c00471ddf0931ea2b046eb79b55dea2b 100644 --- a/WebSite/src/App.vue +++ b/WebSite/src/App.vue @@ -1,14 +1,37 @@ +<!-- + * @Description: + * @Autor: dongjunhua + * @Date: 2020-12-17 10:20:47 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-02-14 22:24:02 +--> <template> - <div id="app"> - <router-view /> + <div id="app-inner"> + <router-view v-slot="{ Component }"> + <transition name="fade-transform-top" mode="out-in"> + <component :is="Component" /> + </transition> + </router-view> </div> </template> <script> +import { watch } from 'vue'; +import { useStore } from 'vuex'; export default { - name: "App" + name: 'App', + setup() { + const store = useStore(); + + watch( + () => store.state.app.themes, + val => { + document.querySelector('#app').className = val.find( + t => t.active + ).className; + }, + { immediate: true, deep: true } + ); + } }; </script> -<style lang="scss"> -@import "./styles/reset"; -</style> diff --git a/WebSite/src/api/Account.js b/WebSite/src/api/Account.js new file mode 100644 index 0000000000000000000000000000000000000000..45ed9f485c67103fe3ae0a45733fe6b6e7c914d6 --- /dev/null +++ b/WebSite/src/api/Account.js @@ -0,0 +1,17 @@ +/* + * @Description: + * @Autor: dongjunhua + * @Date: 2021-01-28 15:54:35 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-01-28 16:00:16 + */ + +import request from '@/core/base/request'; + +class Account { + static login(data) { + return request.post('/account/pc/v1/login', data); + } +} + +export default Account; diff --git a/WebSite/src/api/article.js b/WebSite/src/api/article.js deleted file mode 100644 index 1d9fa291b6032765533ba231428daa4985dbe9fb..0000000000000000000000000000000000000000 --- a/WebSite/src/api/article.js +++ /dev/null @@ -1,41 +0,0 @@ -import request from "@/utils/request"; - -export function fetchList(query) { - return request({ - url: "/vue-element-admin/article/list", - method: "get", - params: query - }); -} - -export function fetchArticle(id) { - return request({ - url: "/vue-element-admin/article/detail", - method: "get", - params: { id } - }); -} - -export function fetchPv(pv) { - return request({ - url: "/vue-element-admin/article/pv", - method: "get", - params: { pv } - }); -} - -export function createArticle(data) { - return request({ - url: "/vue-element-admin/article/create", - method: "post", - data - }); -} - -export function updateArticle(data) { - return request({ - url: "/vue-element-admin/article/update", - method: "post", - data - }); -} diff --git a/WebSite/src/service/base/base.js b/WebSite/src/api/base/base.js similarity index 88% rename from WebSite/src/service/base/base.js rename to WebSite/src/api/base/base.js index 675890d8eb085e2a1a20326cd0e4aebff546c373..eb6301821f38fa494e6561bd71735043a49e817c 100644 --- a/WebSite/src/service/base/base.js +++ b/WebSite/src/api/base/base.js @@ -14,10 +14,10 @@ class Base { if (window.navigator && window.navigator.msSaveOrOpenBlob) { window.navigator.msSaveOrOpenBlob(blob, res.fileName); } else { - var downloadElement = document.createElement("a"); + var downloadElement = document.createElement('a'); var href = window.URL.createObjectURL(blob); // 鍒涘缓涓嬭浇鐨勯摼鎺� downloadElement.href = href; - downloadElement.download = res.fileName; // 涓嬭浇鍚庢枃浠跺悕 + downloadElement.download = res.filename; // 涓嬭浇鍚庢枃浠跺悕 document.body.appendChild(downloadElement); downloadElement.click(); // 鐐瑰嚮涓嬭浇 document.body.removeChild(downloadElement); // 涓嬭浇瀹屾垚绉婚櫎鍏冪礌 diff --git a/WebSite/src/api/common.js b/WebSite/src/api/common.js new file mode 100644 index 0000000000000000000000000000000000000000..726316c4767719c2e52c7e7add48f39601593c78 --- /dev/null +++ b/WebSite/src/api/common.js @@ -0,0 +1,16 @@ +import request from '@/core/base/request' + +export default { + //鑾峰彇绯荤粺骞翠唤 + getConfigYearByType(type) { + return request.post(`baseConfig/queryConfigYearByType?type=${type}`) + }, + //淇濆瓨椤圭洰鐢虫姤涔� + saveProjectFundApply(model) { + return request.post('projectPlan/saveProjectInfoPlan', model) + }, + //淇濆瓨鏃ュ父/鍏敤鐢虫姤涔� + savePublicFundApply(model) { + return request.post('projectPlan/saveProjectDailyPlan', model) + } +} \ No newline at end of file diff --git a/WebSite/src/api/deptSP.js b/WebSite/src/api/deptSP.js new file mode 100644 index 0000000000000000000000000000000000000000..d1073a900a648dd9991412389d17643980313a8e --- /dev/null +++ b/WebSite/src/api/deptSP.js @@ -0,0 +1,34 @@ +import request from '@/core/base/request' + +export default { + //鎵归噺鎻愪氦 + batchSubmit(model) { + return request.post('projectPlan/submitProjectPlanList', model); + }, + batchRevoke(model) { + return request.post('projectPlan/rollBackProjectPlanList', model); + }, + //椤圭洰 + projectGetPageList(model) { + return request.post('projectPlan/queryProjectInfoPlanPageByCurrentUserDept', model); + }, + projectGetById(id) { + return request.post(`projectPlan/queryProjectInfoPlanById?id=${id}`); + }, + //鍏敤 + publicGetPageList(model) { + return request.post('projectPlan/queryProjectDailyPlanByCurrentUserDept', model); + }, + + //浜哄憳 + peopleGetPageList(model) { + return request.post('projectPlan/queryProjectPersonPlanByCurrentUserDept', model); + }, + //鏀跺叆 + incomeGetPageList(model) { + return request.post('InComePlan/queryInComePlanPageByCurrentUserDept', model); + }, + incomeGetById(model) { + return request.post(`InComePlan/queryInComeById?`, model); + } +} \ No newline at end of file diff --git a/WebSite/src/api/first.js b/WebSite/src/api/first.js new file mode 100644 index 0000000000000000000000000000000000000000..e79761253bcb4f62dfb21c490d96b6efcd18d5a2 --- /dev/null +++ b/WebSite/src/api/first.js @@ -0,0 +1,107 @@ +import request from '@/core/base/request'; + +export default { + //閮ㄩ棬椤圭洰缁忚垂鐢虫姤鍒楄〃 + getDataList(data) { + return request.post( + '/projectPlan/queryProjectInfoPlanPageByCurrentUserDept', + data + ); + }, + // 鍒犻櫎閮ㄩ棬椤圭洰缁忚垂 + deleteDataList(data) { + return request.post('/projectPlan/removeProjectInfoPlan', data); + }, + //閮ㄩ棬椤圭洰缁忚垂璇︽儏 + getDataDetail(id) { + return request.post('/projectPlan/queryProjectInfoPlanById?id=' + id); + }, + + // 鎻愪氦椤圭洰鐢宠涔� + submitData(data) { + return request.post('/projectPlan/submitProjectPlan', data); + }, + // 淇濆瓨椤圭洰缁忚垂鐢宠涔� + saveData(data) { + return request.post('/projectPlan/saveProjectInfoPlan', data); + }, + //鍥為€€椤圭洰鐢宠涔� + backData(data) { + return request.post('/projectPlan/reCallProjectPlan', data); + }, + + //閮ㄩ棬鍏敤缁忚垂鍒楄〃 + getPublicList(data) { + return request.post( + '/projectPlan/queryProjectDailyPlanByCurrentUserDept', + data + ); + }, + // 鍒犻櫎閮ㄩ棬鍏敤缁忚垂 + deletePublicList(data) { + return request.post('/projectPlan/removeProjectDailyPlan', data); + }, + //閮ㄩ棬鍏敤缁忚垂璇︽儏 + getPublicDetail(id) { + return request.post('/projectPlan/queryProjectDailyPlanById?id=' + id); + }, + //淇濆瓨閮ㄩ棬鍏敤缁忚垂鐢虫姤涔� + savePublic(data) { + return request.post('/projectPlan/saveProjectDailyPlan', data); + }, + //浜哄憳缁忚垂鐢虫姤鍒楄〃 + getPersonList(data) { + return request.post( + '/projectPlan/queryProjectPersonPlanByCurrentUserDept', + data + ); + }, + // 鍒犻櫎浜哄憳缁忚垂鐢虫姤 + deletePersonList(data) { + return request.post('/projectPlan/removeProjectPersonPlan', data); + }, + //浜哄憳缁忚垂鐢虫姤璇︽儏 + getPersonDetail(id) { + return request.post('/projectPlan/queryProjectPersonPlanById?id=' + id); + }, + //淇濆瓨浜哄憳缁忚垂鐢虫姤涔� + savePerson(data) { + return request.post('/projectPlan/saveProjectPersonPlan', data); + }, + //璇︽儏椤佃〃鏍兼暟鎹� + getDetailList() { + return request.post('/baseConfig/queryPersonFundList'); + }, + //鏌ヨ褰撳墠鐢ㄦ埛鎵€鍦ㄩ儴闂� + getDept() { + return request.post('/baseinfo/queryCurrentUserDeptList'); + }, + // 鑾峰彇鏀跺叆鐢虫姤鍒楄〃 + getInComeList(data) { + return request.post('/InComePlan/queryInComePlanPage', data); + }, + //鑾峰彇鏀跺叆鐢虫姤璇︾粏淇℃伅 + getInComeDetail(data) { + return request.post('/InComePlan/queryInComeById', data); + }, + //鑾峰彇鏀跺叆绫诲瀷 + getInCometype() { + return request.post('/InComePlan/queryInComeTypeEnumList'); + }, + //淇濆瓨鏀跺叆鐢宠(鍏朵粬) + saveInCome(data) { + return request.post('/InComePlan/saveInComeSubPlan', data); + }, + //淇濆瓨鏀跺叆鐢宠(鍏」) + saveInComeE(data) { + return request.post('/InComePlan/saveInComePlan', data); + }, + //淇濆瓨鏀跺叆鐢宠(鍏」) + getStuedents() { + return request.post('/InComePlan/queryStudentTypeEnumList'); + }, + //鍒犻櫎鏀跺叆鐢宠 + deleteInCome(data) { + return request.post('/InComePlan/removeInComePlan', data); + } +}; diff --git a/WebSite/src/api/index.js b/WebSite/src/api/index.js new file mode 100644 index 0000000000000000000000000000000000000000..034956c193d2d70fd01571e8b41795dde80be9bc --- /dev/null +++ b/WebSite/src/api/index.js @@ -0,0 +1,12 @@ +import deptSP from './deptSP' +import projectFundApply from './projectFundApply' +import first from './first' +import publicFundApply from './publicFundApply' +import common from './common' +export default { + ...deptSP, + ...projectFundApply, + ...first, + ...publicFundApply, + ...common +} \ No newline at end of file diff --git a/WebSite/src/api/projectFundApply.js b/WebSite/src/api/projectFundApply.js new file mode 100644 index 0000000000000000000000000000000000000000..f53298c01413a6d6930bbfa6bce11d7075b0b598 --- /dev/null +++ b/WebSite/src/api/projectFundApply.js @@ -0,0 +1,28 @@ +import request from '@/core/base/request' + +export default { + //鑾峰彇鐢虫姤閮ㄩ棬 + pfApplyDept() { + return request.post('baseinfo/queryCurrentUserDeptList'); + }, + //鑾峰彇褰撳墠鐢ㄦ埛鎵€鍦ㄩ儴闂ㄥ彲鐢ㄧ殑椤圭洰绫诲瀷 + projectFundProjectType(model) { + return request.post('budgetInfo/queryBudgetInfoListByCurrentUserDept', model); + }, + projectFundQueryUserList(model) { + return request.post('baseinfo/queryUserPage', model); + }, + //鑾峰彇缁╂晥鎸囨爣鏍� + projectFundTargetTree(model) { + return request.post('projectTarget/queryProjectTargetTree', model); + }, + //閫氳繃椤圭洰绫诲瀷ID鏌ユ壘缁忔祹绉戠洰 + projectFundqueryFundList(id) { + return request.post(`fund/queryFundListByBudgetId?budgetInfoId=${id}`); + }, + //鑾峰彇鍔ㄦ€佽〃鏍兼暟鎹� + projectFundGetTableConfig(extendName) { + return request.post(`baseConfig/queryExtendFormByTable?extendName=${extendName}`); + }, + +} \ No newline at end of file diff --git a/WebSite/src/api/projectLibrary.js b/WebSite/src/api/projectLibrary.js new file mode 100644 index 0000000000000000000000000000000000000000..13ff408761624fbd558f048b3b1041d2b530a5f7 --- /dev/null +++ b/WebSite/src/api/projectLibrary.js @@ -0,0 +1,252 @@ +import request from '@/core/base/request'; +import { Base } from '@/api/base/base'; +class ProjectLibrary extends Base { + //鏈儴闂ㄩ」鐩簱鍒楄〃 + static queryProjectLibraryPageByCurrentUserDept(data) { + return request.post( + '/projectLibrary/queryProjectLibraryPageByCurrentUserDept', + data + ); + } + // 鐢虫姤鎺у埗鍒楄〃 + static queryBudgetDeptSwitchDetail(data) { + return request.post('/baseConfig/queryBudgetDeptSwitchDetail', data); + } + // 鍒濆鍖栫敵鎶ユ帶鍒� + static initBudgetDeptSwitch(data) { + return request.post('/baseConfig/initBudgetDeptSwitch', data); + } + // 鐢虫姤鎺у埗鎵归噺寮€ + static openDeptSwitch(data) { + return request.post('/baseConfig/openDeptSwitch', data); + } + // 鐢虫姤鎺у埗鎵归噺鍏� + static closeDeptSwitch(data) { + return request.post('/baseConfig/closeDeptSwitch', data); + } + // 椤圭洰搴撴爲 + static queryBudgetInfoTree(data) { + return request.post('/budgetInfo/queryBudgetInfoTree', data); + } + // 鑾峰彇鐖惰妭鐐逛笅瀛愰」鐩俊鎭� + static queryBudgetInfoPageByPId(data) { + return request.post('/budgetInfo/queryBudgetInfoPageByPId', data); + } + + // 绉戠洰鎵╁睍琛ㄨ缃� + static queryExtendFormPage(data) { + return request.post('/baseConfig/queryExtendFormPage', data); + } + // 鑾峰彇鎵€鏈夌敤鎴蜂俊鎭甫鍒嗛〉 + static queryUserPage(data) { + return request.post('/baseinfo/queryUserPage', data); + } + // 鑾峰彇鎵€鏈夐儴闂ㄤ俊鎭甫鍒嗛〉 + static queryDeptPage(data) { + return request.post('/baseinfo/queryDeptPage', data); + } + // 鏂板鎴栦慨鏀归」鐩簱椤圭洰淇℃伅 + static createBudgetInfo(data) { + return request.post('/budgetInfo/createBudgetInfo', data); + } + // 鏂板鎴栦慨鏀规寚鏍囦俊鎭� + static saveProjectTarget(data) { + return request.post('/projectTarget/saveProjectTarget', data); + } + // 鎵归噺鍒犻櫎椤圭洰搴撻」鐩俊鎭� + static removeBudgetInfo(data) { + return request.post('/budgetInfo/removeBudgetInfo', data); + } + // 淇濆瓨鎵╁睍琛ㄤ俊鎭紙鏂板鎴栦慨鏀癸級 + static saveExtendFormManage(data) { + return request.post('/baseConfig/saveExtendFormManage', data); + } + // 鏌ヨ鍗曚釜鎵╁睍琛ㄤ俊鎭� + static queryExtendFormById(id) { + return request.post(`/baseConfig/queryExtendFormById?id=${id}`); + } + // 鎵归噺鍒犻櫎鎵╁睍琛� + static deleteExtendFormManage(data) { + return request.post('/baseConfig/deleteExtendFormManage', data); + } + // 鑾峰彇缁忔祹绉戠洰鏍� + static queryFundTree(data) { + return request.post('/fund/queryFundTree', data); + } + // 缁╂晥绠$悊鏍� + static queryProjectTargetTree(data) { + return request.post('/projectTarget/queryProjectTargetTree', data); + } + static queryProjectTargetPageByPId(data) { + return request.post('/projectTarget/queryProjectTargetPageByPId', data); + } + static removeProjectTarget(data) { + return request.post('/projectTarget/removeProjectTarget', data); + } + // 鎸囨爣鍒犻櫎 + // 淇敼鐢虫姤鎺у埗鏃ユ湡涓庡勾浠� + static saveBudgetSwitch(data) { + return request.post('/baseConfig/saveBudgetSwitch', data); + } + + // 鍒嗛〉鏌ヨ璁惧绫诲瀷 + static queryDevicePage(data) { + return request.post('/baseConfig/queryDevicePage', data); + } + // 璁惧绫诲瀷鍒犻櫎 + static deleteDeviceType(data) { + return request.post('/baseConfig/deleteDeviceType', data); + } + // 鏌ヨ鍗曚釜璁惧绫诲瀷 + static queryDeviceTypeById(id) { + return request.post(`/baseConfig/queryDeviceTypeById?id=${id}`); + } + // 鏂板璁惧绫诲瀷 + static saveDeviceType(data) { + return request.post(`/baseConfig/saveDeviceType`, data); + } + // 淇℃伅鍖栫被鍨嬪垪琛� + static queryInformation(data) { + return request.post('/baseConfig/queryInformation', data); + } + // 鍒犻櫎淇℃伅鍖栫被鍨� + static deleteInformationType(data) { + return request.post('/baseConfig/deleteInformationType', data); + } + // 鑾峰彇鍗曟潯淇℃伅绫诲瀷 + static queryInformationById(id) { + return request.post(`/baseConfig/queryInformationById?id=${id}`); + } + // 鏂板淇℃伅绫诲瀷 + static saveInformationType(data) { + return request.post('/baseConfig/saveInformationType', data); + } + + // 浜哄憳缁忚垂鍒楄〃 + static queryPersonFundPage(data) { + return request.post('/baseConfig/queryPersonFundPage', data); + } + // 浜哄憳缁忚垂鍒犻櫎 + static deletePersonFund(data) { + return request.post('baseConfig/deletePersonFund', data); + } + // 鑾峰彇鍗曟潯浜哄憳缁忚垂淇℃伅 + static queryPersonFundById(id) { + return request.post(`/baseConfig/queryPersonFundById?id=${id}`); + } + // 鏂板浜哄憳缁忚垂 + static savePersonFund(data) { + return request.post(`/baseConfig/savePersonFund`, data); + } + + // 鐖惰妭鐐筰d 鍒嗛〉 鏌ヨ缁忔祹绉戠洰 + static queryFundPageByPId(data) { + return request.post(`/fund/queryFundPageByPId`, data); + } + // 鏂板淇敼绉戠洰 + static createFund(data) { + return request.post(`/fund/createFund`, data); + } + // 缁忔祹绉戠洰鍒犻櫎 + static removeFund(data) { + return request.post(`/fund/removeFund`, data); + } + // 缁忔祹绉戠洰鏄庣粏 + static queryFund(id) { + return request.post(`/fund/queryFund?id=${id}`); + } + // 椤圭洰绫诲瀷鏄庣粏 + static queryBudgetInfo(id) { + return request.post(`/budgetInfo/queryBudgetInfo?id=${id}`); + } + // 缁╂晥鎸囨爣鏄庣粏 + static queryProjectTarget(id) { + return request.post(`/projectTarget/queryProjectTarget?id=${id}`); + } + // 缁╂晥绠$悊鍚屾涓婂勾鏁版嵁 + static initProjectTargetList(data) { + return request.post(`/projectTarget/initProjectTargetList`, data); + } + // 涓囧巻椤圭洰 + static queryHistoryProjectLibraryPageByCurrentUserDept(data) { + return request.post( + `/projectLibrary/queryHistoryProjectLibraryPageByCurrentUserDept`, + data + ); + } + // 鍒犻櫎椤圭洰搴撲俊鎭� + static removeProjectLibrary(data) { + return request.post(`/projectLibrary/removeProjectLibrary`, data); + } + // 鎷疯礉鍘嗗彶椤圭洰浣滀负鏈勾椤圭洰搴撲俊鎭� + static copyHistoryProjectLibrary(data) { + return request.post(`/projectLibrary/copyHistoryProjectLibrary`, data); + } + // 鏍规嵁ID 鑾峰彇椤圭洰缁忚垂鐢虫姤涔︿俊鎭�(鍚祦绋嬬浉鍏充俊鎭�) + static queryProjectInfoPlanById(id) { + return request.post(`/projectPlan/queryProjectInfoPlanById?id=${id}`); + } + // 淇濆瓨椤圭洰缁忚垂鐢虫姤涔� + static saveProjectInfoPlan(data) { + return request.post(`/projectPlan/saveProjectInfoPlan`, data); + } + // 杩涘叆涓€涓� + static enterProjectPlanType1(id) { + return request.post(`/projectLibrary/enterProjectPlanType1?id=${id}`); + } + // 鍙栨秷涓€涓� + static cancelEnterProjectPlanType1(id) { + return request.post(`/projectLibrary/cancelEnterProjectPlanType1?id=${id}`); + } + + // 鍙栨秷浜屼笂 + static cancelEnterProjectPlanType2(id) { + return request.post(`/projectLibrary/cancelEnterProjectPlanType2?id=${id}`); + } + // 杩涘叆浜屼笂 + static enterProjectPlanType2(id) { + return request.post(`/projectLibrary/enterProjectPlanType2?id=${id}`); + } + // 鍒嗛〉鏄剧ず椤圭洰搴撲俊鎭� + static queryProjectLibraryPage(data) { + return request.post(`/projectLibrary/queryProjectLibraryPage`, data); + } + + // 椤圭洰涓嬫媺妗� + static getPlanTypeEnum(data) { + return request.post(`/projectLibrary/getPlanTypeEnum`, data); + } + // 瀹氶閮ㄩ棬鍒楄〃 + static queryDeptQuotaProjectPage(data) { + return request.post(`/quotaManage/queryDeptQuotaProjectPage`, data); + } + // 鍒濆鍖栧畾棰濋儴闂� + static initProjectDeptProject(data) { + return request.post(`/quotaManage/initProjectDeptProject`, data); + } + // 淇敼瀹氶閮ㄩ棬閲戦 + static saveProjectDeptMoney(data) { + return request.post(`/quotaManage/saveProjectDeptMoney`, data); + } + // 瀹氶椤圭洰鍒楄〃 + static queryProjectQuotaPage(data) { + return request.post(`/quotaManage/queryProjectQuotaPage`, data); + } + // 鍒濆鍖栧畾棰濋」鐩� + static initProject(data) { + return request.post(`/quotaManage/initProject`, data); + } + //淇敼瀹氶椤圭洰閲戦 + static saveProjectMoney(data) { + return request.post(`/quotaManage/saveProjectMoney`, data); + } + // 鏃ュ父缁忚垂鍒楄〃 + static queryDeptQuotaDailyPage(data) { + return request.post(`/quotaManage/queryDeptQuotaDailyPage`, data); + } + // 鍒濆鍖栨棩甯哥粡璐� + static initProjectDeptDaily(data) { + return request.post(`/quotaManage/initProjectDeptDaily`, data); + } +} +export default ProjectLibrary; diff --git a/WebSite/src/api/publicFundApply.js b/WebSite/src/api/publicFundApply.js new file mode 100644 index 0000000000000000000000000000000000000000..3be058ba884a8da0744fad270b2d8f7dd63a05e8 --- /dev/null +++ b/WebSite/src/api/publicFundApply.js @@ -0,0 +1,7 @@ +import request from '@/core/base/request' + +export default { + publicQueryDailyFund() { + return request.post('fund/queryDailyFund'); + }, +} \ No newline at end of file diff --git a/WebSite/src/api/qiniu.js b/WebSite/src/api/qiniu.js deleted file mode 100644 index c843100931b7bd8b0179c9c89ebf88a0ee556e2d..0000000000000000000000000000000000000000 --- a/WebSite/src/api/qiniu.js +++ /dev/null @@ -1,8 +0,0 @@ -import request from "@/utils/request"; - -export function getToken() { - return request({ - url: "/qiniu/upload/token", // 鍋囧湴鍧€ 鑷鏇挎崲 - method: "get" - }); -} diff --git a/WebSite/src/api/remote-search.js b/WebSite/src/api/remote-search.js deleted file mode 100644 index 2cccb113ee99ee59c8ae0b85ffa2d15e84c89979..0000000000000000000000000000000000000000 --- a/WebSite/src/api/remote-search.js +++ /dev/null @@ -1,17 +0,0 @@ -import request from "@/utils/request"; - -export function searchUser(name) { - return request({ - url: "/vue-element-admin/search/user", - method: "get", - params: { name } - }); -} - -export function transactionList(query) { - return request({ - url: "/vue-element-admin/transaction/list", - method: "get", - params: query - }); -} diff --git a/WebSite/src/api/role.js b/WebSite/src/api/role.js deleted file mode 100644 index e861bb522a21711f7a6f0620e97843d48e18a714..0000000000000000000000000000000000000000 --- a/WebSite/src/api/role.js +++ /dev/null @@ -1,38 +0,0 @@ -import request from "@/utils/request"; - -export function getRoutes() { - return request({ - url: "/vue-element-admin/routes", - method: "get" - }); -} - -export function getRoles() { - return request({ - url: "/vue-element-admin/roles", - method: "get" - }); -} - -export function addRole(data) { - return request({ - url: "/vue-element-admin/role", - method: "post", - data - }); -} - -export function updateRole(id, data) { - return request({ - url: `/vue-element-admin/role/${id}`, - method: "put", - data - }); -} - -export function deleteRole(id) { - return request({ - url: `/vue-element-admin/role/${id}`, - method: "delete" - }); -} diff --git a/WebSite/src/api/user.js b/WebSite/src/api/user.js index d55d770f6dd9b4d2599506aafed70c553cd73ce4..ee1b4984d4a24162fd5e0f52071d2da1a9958603 100644 --- a/WebSite/src/api/user.js +++ b/WebSite/src/api/user.js @@ -1,31 +1,21 @@ /* * @Description: - * @Autor: dong jun hua - * @Date: 2020-03-13 10:03:56 - * @LastEditors: dong jun hua - * @LastEditTime: 2020-04-21 10:21:42 + * @Autor: dongjunhua + * @Date: 2021-01-29 10:15:50 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-01-29 10:16:25 */ -import request from "@/utils/request"; -export function login(data) { - return request({ - url: "/vue-element-admin/user/login", - method: "post", - data - }); -} +import request from '@/core/base/request'; -export function getInfo(token) { - return request({ - url: "/vue-element-admin/user/info", - method: "get", - params: { token } - }); -} +class User { + static setCurrent(data) { + return request.post('/user/pc/v1/setCurrent', data); + } -export function logout() { - return request({ - url: "/vue-element-admin/user/logout", - method: "post" - }); + static getCurrent() { + return request.post('/user/pc/v1/getCurrent'); + } } + +export default User; diff --git a/WebSite/src/assets/configs/default.json b/WebSite/src/assets/configs/default.json deleted file mode 100644 index c89256b7fb13912933cb0324adae5b9e0638b89f..0000000000000000000000000000000000000000 --- a/WebSite/src/assets/configs/default.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "title": "default", - "recognizeId": "seasky_base_data" -} diff --git a/WebSite/src/assets/configs/staging.json b/WebSite/src/assets/configs/staging.json deleted file mode 100644 index d5649cb9a060935504960790075da6d9328354b6..0000000000000000000000000000000000000000 --- a/WebSite/src/assets/configs/staging.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "title": "staging", - "recognizeId": "seasky_base_data" -} diff --git a/WebSite/src/assets/configs/test.json b/WebSite/src/assets/configs/test.json deleted file mode 100644 index 95de420113256711a7c3bc5ef6a6515540c3a7c4..0000000000000000000000000000000000000000 --- a/WebSite/src/assets/configs/test.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "title": "test", - "recognizeId": "seasky_base_data" -} diff --git a/WebSite/src/assets/logo.png b/WebSite/src/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f3d2503fc2a44b5053b0837ebea6e87a2d339a43 Binary files /dev/null and b/WebSite/src/assets/logo.png differ diff --git a/WebSite/src/components/AmountInputBox/index.vue b/WebSite/src/components/AmountInputBox/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..ddaba1f0164dd71dcf0f3a28a0907111a99b61d6 --- /dev/null +++ b/WebSite/src/components/AmountInputBox/index.vue @@ -0,0 +1,192 @@ +<!-- + @Descripttion: + @Author: gong qun + @Date: 2020-07-27 10:25:12 + @LastEditors: gong qun + @LastEditTime: 2021-06-09 09:52:01 +--> +<template> + <el-input + v-model="moneyShow" + :clearable="clearabled" + :placeholder="placeholder" + :disabled="disabled" + :readonly="readonly" + @change="setMoney()" + @input="onInput" + > + </el-input> +</template> +<script> +export default { + props: { + modelValue: {}, + // 榛樿杈撳嚭鍊� + default: { + default() { + return '0'; + } + }, + // 榛樿灞曠ず鍊� + defaultShow: { + default() { + return '0.00'; + } + }, + placeholder: { + default() { + return '璇疯緭鍏ラ噾棰�'; + } + }, + // 鏄惁鍙竻绌� + clearable: { + default() { + return false; + } + }, + // 鏄惁鍚敤 + disabled: { + default() { + return false; + } + }, + // 鏄惁鍙 + readonly: { + default() { + return false; + } + }, + // 鏄惁鍏佽杈撳叆璐熸暟 + isNegativeAllow: { + default() { + return false; + } + }, + // 鏍¢獙涓嶆弧瓒虫潯浠跺洖婊氫笂娆¤緭鍏ユ纭噾棰濆洖璋� + onValid: { + default() { + return () => true; + } + }, + // 闄勫姞鍊� + scope: { + default() { + return null; + } + }, + // 闄愬埗鏁存暟浣嶆暟 + maxLength: { + default() { + return 9; + } + } + }, + data() { + return { + moneyShow: '', + clearabled: false, + oldVal: '', + maxShowVal: '' + }; + }, + watch: { + modelValue(val) { + this.init(val); + } + }, + created() { + this.init(this.modelValue); + }, + methods: { + init(val) { + this.oldVal = val; + if (val && this.formart(val) - 0 != this.default - 0) { + this.moneyShow = this.toThousands(val); + this.clearabled = this.clearable; + } else { + this.clearabled = false; + this.moneyShow = this.defaultShow; + } + this.maxShowVal = this.moneyShow; + }, + setMoney() { + let changeVal = this.moneyShow; + if (changeVal) { + this.moneyShow = this.toThousands(changeVal); + changeVal = this.formart(changeVal); + } + if (!changeVal || changeVal == '0.00') { + this.moneyShow = this.defaultShow; + changeVal = this.default; + } + this.$emit('update:modelValue', changeVal, this.scope); + this.maxShowVal = this.toThousands(this.moneyShow); + if (!this.onValid(changeVal, this.scope)) { + // 鏍¢獙鏈€氳繃鍥炲埌涓婃鏍¢獙閫氳繃鏁板瓧 + this.init(this.oldVal); + this.maxShowVal = this.toThousands(this.oldVal); + this.$emit('update:modelValue', this.oldVal, this.scope); + } + }, + // 浠绘剰瀛楃涓茶浆鏁板瓧锛堜袱浣嶅皬鏁帮級 + formart(num) { + return this.moneyToNumValue(this.toThousands(num)); + }, + // 浠绘剰瀛楃杞崈鍒嗕綅鍒嗛殧閲戦锛堜袱浣嶅皬鏁帮級 + toThousands(num) { + num += ''; + // eslint-disable-next-line no-useless-escape + let isNegative = this.isNegativeAllow && /^\-/.test(num); + // 娓呴櫎瀛楃涓蹭腑鐨勯潪鏁板瓧闈炩€�.鈥濆瓧绗� + // eslint-disable-next-line no-useless-escape + num = num.replace(/[^0-9|\.]/g, ''); + // eslint-disable-next-line no-constant-condition + if (/^0+/) { + // 娓呴櫎瀛楃涓插紑澶寸殑0 + num = num.replace(/^0+/, ''); + } + if (!/\./.test(num)) { + // 涓烘暣鏁板瓧绗︿覆鍦ㄦ湯灏炬坊鍔�.00 + num += '.00'; + } + if (/^\./.test(num)) { + // 瀛楃浠�.寮€澶存椂,鍦ㄥ紑澶存坊鍔�0 + num = '0' + num; + } + num += '00'; + let numMatch = num.match(/\d+\.\d{2}/); + num = numMatch ? numMatch[0] : '0.00'; + num = (num || 0).toString().replace(/^\./g, ''); + // eslint-disable-next-line no-useless-escape + num = num.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3'); + let arr = num.split('.'); + let num1 = (arr[0] || 0) + .toString() + .replace(/(\d)(?=(?:\d{3})+$)/g, '$1,'); + var resultNumStr = arr[1] == undefined ? num1 + '' : num1 + '.' + arr[1]; + if (isNegative && resultNumStr != '0.00') { + resultNumStr = '-' + resultNumStr; + } + return resultNumStr; + }, + // 鍗冨垎浣嶅垎闅旈噾棰濊浆鏁板瓧锛堜袱浣嶅皬鏁帮級 + moneyToNumValue(val) { + val += ''; + let num = val.trim(); + let numStr = num.toString(); + if (numStr.length == 0) { + return parseFloat('0.00'); + } + return parseFloat(numStr.replace(/,/g, '')); + }, + onInput() { + let value = this.formart(this.moneyShow); + if (value.length > this.maxLength + 3) { + this.moneyShow = this.maxShowVal; + } else { + this.maxShowVal = this.moneyShow; + } + } + } +}; +</script> diff --git a/WebSite/src/components/BackToTop/index.vue b/WebSite/src/components/BackToTop/index.vue deleted file mode 100644 index eb313d5d63f86b7c8f38de4a6fd3b4b01ecf2c6a..0000000000000000000000000000000000000000 --- a/WebSite/src/components/BackToTop/index.vue +++ /dev/null @@ -1,128 +0,0 @@ -<template> - <transition :name="transitionName"> - <div - v-show="visible" - :style="customStyle" - class="back-to-ceiling" - @click="backToTop" - > - <svg - width="16" - height="16" - viewBox="0 0 17 17" - xmlns="http://www.w3.org/2000/svg" - class="Icon Icon--backToTopArrow" - aria-hidden="true" - style="height:16px;width:16px" - > - <path - d="M12.036 15.59a1 1 0 0 1-.997.995H5.032a.996.996 0 0 1-.997-.996V8.584H1.03c-1.1 0-1.36-.633-.578-1.416L7.33.29a1.003 1.003 0 0 1 1.412 0l6.878 6.88c.782.78.523 1.415-.58 1.415h-3.004v7.004z" - /> - </svg> - </div> - </transition> -</template> - -<script> -export default { - name: "BackToTop", - props: { - visibilityHeight: { - type: Number, - default: 400 - }, - backPosition: { - type: Number, - default: 0 - }, - customStyle: { - type: Object, - default: function() { - return { - right: "50px", - bottom: "50px", - width: "40px", - height: "40px", - "border-radius": "4px", - "line-height": "45px", - background: "#e7eaf1" - }; - } - }, - transitionName: { - type: String, - default: "fade" - } - }, - data() { - return { - visible: false, - interval: null, - isMoving: false - }; - }, - mounted() { - window.addEventListener("scroll", this.handleScroll); - }, - beforeDestroy() { - window.removeEventListener("scroll", this.handleScroll); - if (this.interval) { - clearInterval(this.interval); - } - }, - methods: { - handleScroll() { - this.visible = window.pageYOffset > this.visibilityHeight; - }, - backToTop() { - if (this.isMoving) return; - const start = window.pageYOffset; - let i = 0; - this.isMoving = true; - this.interval = setInterval(() => { - const next = Math.floor(this.easeInOutQuad(10 * i, start, -start, 500)); - if (next <= this.backPosition) { - window.scrollTo(0, this.backPosition); - clearInterval(this.interval); - this.isMoving = false; - } else { - window.scrollTo(0, next); - } - i++; - }, 16.7); - }, - easeInOutQuad(t, b, c, d) { - if ((t /= d / 2) < 1) return (c / 2) * t * t + b; - return (-c / 2) * (--t * (t - 2) - 1) + b; - } - } -}; -</script> - -<style scoped> -.back-to-ceiling { - position: fixed; - display: inline-block; - text-align: center; - cursor: pointer; -} - -.back-to-ceiling:hover { - background: #d5dbe7; -} - -.fade-enter-active, -.fade-leave-active { - transition: opacity 0.5s; -} - -.fade-enter, -.fade-leave-to { - opacity: 0; -} - -.back-to-ceiling .Icon { - fill: #9aaabf; - background: none; -} -</style> diff --git a/WebSite/src/components/Breadcrumb/index.vue b/WebSite/src/components/Breadcrumb/index.vue deleted file mode 100644 index 4a73c702cf1354bc23f52605f805a459d6870e81..0000000000000000000000000000000000000000 --- a/WebSite/src/components/Breadcrumb/index.vue +++ /dev/null @@ -1,142 +0,0 @@ -<!-- - * @Description: - * @Autor: dong jun hua - * @Date: 2020-06-08 12:38:19 - * @LastEditors: dongjunhua - * @LastEditTime: 2020-08-15 11:27:38 ---> -<template> - <el-breadcrumb class="app-breadcrumb" separator="/"> - <transition-group name="breadcrumb"> - <el-breadcrumb-item v-for="(item, index) in levelList" :key="item.id"> - <span - v-if="item.redirect === 'noRedirect' || index == levelList.length - 1" - class="no-redirect" - >{{ item.meta.title }}</span - > - <a v-else @click.prevent="handleLink(item)">{{ item.meta.title }}</a> - </el-breadcrumb-item> - </transition-group> - </el-breadcrumb> -</template> - -<script> -import { deepClone } from "@/utils/index.js"; -import pathToRegexp from "path-to-regexp"; -import { mapGetters } from "vuex"; -export default { - data() { - return { - levelList: null - }; - }, - computed: { - ...mapGetters(["menuTree"]) - }, - watch: { - $route(route) { - // if you go to the redirect page, do not update the breadcrumbs - if (route.path.startsWith("/redirect/")) { - return; - } - // this.getBreadcrumb(); - this.getBreadcrumbFromMenu(); - } - }, - created() { - // this.getBreadcrumb(); - this.getBreadcrumbFromMenu(); - }, - methods: { - getBreadcrumbFromMenu() { - this.levelList = []; - const matched = this.$route.matched.filter( - item => item.meta && item.meta.title - ); - if (matched && matched.length === 1 && matched[0].name === "Home") { - this.levelList.unshift({ - id: "0", - redirect: "noRedirect", - path: `/i/`, - meta: { title: "棣栭〉" } - }); - } else { - const menu = deepClone(this.menuTree); - menu.forEach(m => this.filterMenuNode(m, this.$route.path)); - } - }, - filterMenuNode(node, path) { - if (node.children && node.children.length > 0) { - node.children.forEach(c => this.filterMenuNode(c, path)); - node.children = node.children.filter( - c => - `/i/${c.routingUrl}` === path || - (c.children && c.children.length > 0) - ); - } - if ( - `/i/${node.routingUrl}` === path || - (node.children && node.children.length > 0) - ) { - this.levelList.unshift({ - id: node.id, - redirect: "noRedirect", - path: `/i/${node.routingUrl}`, - meta: { title: node.name } - }); - } - }, - // getBreadcrumb() { - // // only show routes with meta.title - // let matched = this.$route.matched.filter( - // item => item.meta && item.meta.title - // ); - // const first = matched[0]; - // if (!this.isDashboard(first)) { - // matched = [{ path: "/", meta: { title: "棣栭〉" } }].concat(matched); - // } - - // this.levelList = matched.filter( - // item => item.meta && item.meta.title && item.meta.breadcrumb !== false - // ); - // }, - // isDashboard(route) { - // const name = route && route.name; - // if (!name) { - // return false; - // } - // return ( - // name.trim().toLocaleLowerCase() === "Dashboard".toLocaleLowerCase() - // ); - // }, - pathCompile(path) { - // To solve this problem https://github.com/PanJiaChen/vue-element-admin/issues/561 - const { params } = this.$route; - var toPath = pathToRegexp.compile(path); - return toPath(params); - }, - handleLink(item) { - const { redirect, path } = item; - if (redirect) { - this.$router.push(redirect); - return; - } - this.$router.push(this.pathCompile(path)); - } - } -}; -</script> - -<style lang="scss" scoped> -.app-breadcrumb.el-breadcrumb { - display: inline-block; - font-size: 14px; - line-height: 50px; - margin-left: 8px; - - .no-redirect { - color: #97a8be; - cursor: text; - } -} -</style> diff --git a/WebSite/src/components/ButtonList/index.vue b/WebSite/src/components/ButtonList/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/WebSite/src/components/Charts/Keyboard.vue b/WebSite/src/components/Charts/Keyboard.vue deleted file mode 100644 index 05af3110a74a97f3b83813609f5ed4e76fee69f0..0000000000000000000000000000000000000000 --- a/WebSite/src/components/Charts/Keyboard.vue +++ /dev/null @@ -1,169 +0,0 @@ -<template> - <div :id="id" :class="className" :style="{ height: height, width: width }" /> -</template> - -<script> -import echarts from "echarts"; -import resize from "./mixins/resize"; - -export default { - mixins: [resize], - props: { - className: { - type: String, - default: "chart" - }, - id: { - type: String, - default: "chart" - }, - width: { - type: String, - default: "200px" - }, - height: { - type: String, - default: "200px" - } - }, - data() { - return { - chart: null - }; - }, - mounted() { - this.initChart(); - }, - beforeDestroy() { - if (!this.chart) { - return; - } - this.chart.dispose(); - this.chart = null; - }, - methods: { - initChart() { - this.chart = echarts.init(document.getElementById(this.id)); - - const xAxisData = []; - const data = []; - const data2 = []; - for (let i = 0; i < 50; i++) { - xAxisData.push(i); - data.push((Math.sin(i / 5) * (i / 5 - 10) + i / 6) * 5); - data2.push((Math.sin(i / 5) * (i / 5 + 10) + i / 6) * 3); - } - this.chart.setOption({ - backgroundColor: "#08263a", - grid: { - left: "5%", - right: "5%" - }, - xAxis: [ - { - show: false, - data: xAxisData - }, - { - show: false, - data: xAxisData - } - ], - visualMap: { - show: false, - min: 0, - max: 50, - dimension: 0, - inRange: { - color: [ - "#4a657a", - "#308e92", - "#b1cfa5", - "#f5d69f", - "#f5898b", - "#ef5055" - ] - } - }, - yAxis: { - axisLine: { - show: false - }, - axisLabel: { - textStyle: { - color: "#4a657a" - } - }, - splitLine: { - show: true, - lineStyle: { - color: "#08263f" - } - }, - axisTick: { - show: false - } - }, - series: [ - { - name: "back", - type: "bar", - data: data2, - z: 1, - itemStyle: { - normal: { - opacity: 0.4, - barBorderRadius: 5, - shadowBlur: 3, - shadowColor: "#111" - } - } - }, - { - name: "Simulate Shadow", - type: "line", - data, - z: 2, - showSymbol: false, - animationDelay: 0, - animationEasing: "linear", - animationDuration: 1200, - lineStyle: { - normal: { - color: "transparent" - } - }, - areaStyle: { - normal: { - color: "#08263a", - shadowBlur: 50, - shadowColor: "#000" - } - } - }, - { - name: "front", - type: "bar", - data, - xAxisIndex: 1, - z: 3, - itemStyle: { - normal: { - barBorderRadius: 5 - } - } - } - ], - animationEasing: "elasticOut", - animationEasingUpdate: "elasticOut", - animationDelay(idx) { - return idx * 20; - }, - animationDelayUpdate(idx) { - return idx * 20; - } - }); - } - } -}; -</script> diff --git a/WebSite/src/components/Charts/LineMarker.vue b/WebSite/src/components/Charts/LineMarker.vue deleted file mode 100644 index a4e86f876afc8cebd6f40123f9f21512d0193668..0000000000000000000000000000000000000000 --- a/WebSite/src/components/Charts/LineMarker.vue +++ /dev/null @@ -1,276 +0,0 @@ -<template> - <div :id="id" :class="className" :style="{ height: height, width: width }" /> -</template> - -<script> -import echarts from "echarts"; -import resize from "./mixins/resize"; - -export default { - mixins: [resize], - props: { - className: { - type: String, - default: "chart" - }, - id: { - type: String, - default: "chart" - }, - width: { - type: String, - default: "200px" - }, - height: { - type: String, - default: "200px" - } - }, - data() { - return { - chart: null - }; - }, - mounted() { - this.initChart(); - }, - beforeDestroy() { - if (!this.chart) { - return; - } - this.chart.dispose(); - this.chart = null; - }, - methods: { - initChart() { - this.chart = echarts.init(document.getElementById(this.id)); - - this.chart.setOption({ - backgroundColor: "#394056", - title: { - top: 20, - text: "Requests", - textStyle: { - fontWeight: "normal", - fontSize: 16, - color: "#F1F1F3" - }, - left: "1%" - }, - tooltip: { - trigger: "axis", - axisPointer: { - lineStyle: { - color: "#57617B" - } - } - }, - legend: { - top: 20, - icon: "rect", - itemWidth: 14, - itemHeight: 5, - itemGap: 13, - data: ["CMCC", "CTCC", "CUCC"], - right: "4%", - textStyle: { - fontSize: 12, - color: "#F1F1F3" - } - }, - grid: { - top: 100, - left: "2%", - right: "2%", - bottom: "2%", - containLabel: true - }, - xAxis: [ - { - type: "category", - boundaryGap: false, - axisLine: { - lineStyle: { - color: "#57617B" - } - }, - data: [ - "13:00", - "13:05", - "13:10", - "13:15", - "13:20", - "13:25", - "13:30", - "13:35", - "13:40", - "13:45", - "13:50", - "13:55" - ] - } - ], - yAxis: [ - { - type: "value", - name: "(%)", - axisTick: { - show: false - }, - axisLine: { - lineStyle: { - color: "#57617B" - } - }, - axisLabel: { - margin: 10, - textStyle: { - fontSize: 14 - } - }, - splitLine: { - lineStyle: { - color: "#57617B" - } - } - } - ], - series: [ - { - name: "CMCC", - type: "line", - smooth: true, - symbol: "circle", - symbolSize: 5, - showSymbol: false, - lineStyle: { - normal: { - width: 1 - } - }, - areaStyle: { - normal: { - color: new echarts.graphic.LinearGradient( - 0, - 0, - 0, - 1, - [ - { - offset: 0, - color: "rgba(137, 189, 27, 0.3)" - }, - { - offset: 0.8, - color: "rgba(137, 189, 27, 0)" - } - ], - false - ), - shadowColor: "rgba(0, 0, 0, 0.1)", - shadowBlur: 10 - } - }, - itemStyle: { - normal: { - color: "rgb(137,189,27)", - borderColor: "rgba(137,189,2,0.27)", - borderWidth: 12 - } - }, - data: [220, 182, 191, 134, 150, 120, 110, 125, 145, 122, 165, 122] - }, - { - name: "CTCC", - type: "line", - smooth: true, - symbol: "circle", - symbolSize: 5, - showSymbol: false, - lineStyle: { - normal: { - width: 1 - } - }, - areaStyle: { - normal: { - color: new echarts.graphic.LinearGradient( - 0, - 0, - 0, - 1, - [ - { - offset: 0, - color: "rgba(0, 136, 212, 0.3)" - }, - { - offset: 0.8, - color: "rgba(0, 136, 212, 0)" - } - ], - false - ), - shadowColor: "rgba(0, 0, 0, 0.1)", - shadowBlur: 10 - } - }, - itemStyle: { - normal: { - color: "rgb(0,136,212)", - borderColor: "rgba(0,136,212,0.2)", - borderWidth: 12 - } - }, - data: [120, 110, 125, 145, 122, 165, 122, 220, 182, 191, 134, 150] - }, - { - name: "CUCC", - type: "line", - smooth: true, - symbol: "circle", - symbolSize: 5, - showSymbol: false, - lineStyle: { - normal: { - width: 1 - } - }, - areaStyle: { - normal: { - color: new echarts.graphic.LinearGradient( - 0, - 0, - 0, - 1, - [ - { - offset: 0, - color: "rgba(219, 50, 51, 0.3)" - }, - { - offset: 0.8, - color: "rgba(219, 50, 51, 0)" - } - ], - false - ), - shadowColor: "rgba(0, 0, 0, 0.1)", - shadowBlur: 10 - } - }, - itemStyle: { - normal: { - color: "rgb(219,50,51)", - borderColor: "rgba(219,50,51,0.2)", - borderWidth: 12 - } - }, - data: [220, 182, 125, 145, 122, 191, 134, 150, 120, 110, 165, 122] - } - ] - }); - } - } -}; -</script> diff --git a/WebSite/src/components/Charts/MixChart.vue b/WebSite/src/components/Charts/MixChart.vue deleted file mode 100644 index 865755f845ee5d6b49231689bed7a2076c0dd8b6..0000000000000000000000000000000000000000 --- a/WebSite/src/components/Charts/MixChart.vue +++ /dev/null @@ -1,277 +0,0 @@ -<template> - <div :id="id" :class="className" :style="{ height: height, width: width }" /> -</template> - -<script> -import echarts from "echarts"; -import resize from "./mixins/resize"; - -export default { - mixins: [resize], - props: { - className: { - type: String, - default: "chart" - }, - id: { - type: String, - default: "chart" - }, - width: { - type: String, - default: "200px" - }, - height: { - type: String, - default: "200px" - } - }, - data() { - return { - chart: null - }; - }, - mounted() { - this.initChart(); - }, - beforeDestroy() { - if (!this.chart) { - return; - } - this.chart.dispose(); - this.chart = null; - }, - methods: { - initChart() { - this.chart = echarts.init(document.getElementById(this.id)); - const xData = (function() { - const data = []; - for (let i = 1; i < 13; i++) { - data.push(i + "month"); - } - return data; - })(); - this.chart.setOption({ - backgroundColor: "#344b58", - title: { - text: "statistics", - x: "20", - top: "20", - textStyle: { - color: "#fff", - fontSize: "22" - }, - subtextStyle: { - color: "#90979c", - fontSize: "16" - } - }, - tooltip: { - trigger: "axis", - axisPointer: { - textStyle: { - color: "#fff" - } - } - }, - grid: { - left: "5%", - right: "5%", - borderWidth: 0, - top: 150, - bottom: 95, - textStyle: { - color: "#fff" - } - }, - legend: { - x: "5%", - top: "10%", - textStyle: { - color: "#90979c" - }, - data: ["female", "male", "average"] - }, - calculable: true, - xAxis: [ - { - type: "category", - axisLine: { - lineStyle: { - color: "#90979c" - } - }, - splitLine: { - show: false - }, - axisTick: { - show: false - }, - splitArea: { - show: false - }, - axisLabel: { - interval: 0 - }, - data: xData - } - ], - yAxis: [ - { - type: "value", - splitLine: { - show: false - }, - axisLine: { - lineStyle: { - color: "#90979c" - } - }, - axisTick: { - show: false - }, - axisLabel: { - interval: 0 - }, - splitArea: { - show: false - } - } - ], - dataZoom: [ - { - show: true, - height: 30, - xAxisIndex: [0], - bottom: 30, - start: 10, - end: 80, - handleIcon: - "path://M306.1,413c0,2.2-1.8,4-4,4h-59.8c-2.2,0-4-1.8-4-4V200.8c0-2.2,1.8-4,4-4h59.8c2.2,0,4,1.8,4,4V413z", - handleSize: "110%", - handleStyle: { - color: "#d3dee5" - }, - textStyle: { - color: "#fff" - }, - borderColor: "#90979c" - }, - { - type: "inside", - show: true, - height: 15, - start: 1, - end: 35 - } - ], - series: [ - { - name: "female", - type: "bar", - stack: "total", - barMaxWidth: 35, - barGap: "10%", - itemStyle: { - normal: { - color: "rgba(255,144,128,1)", - label: { - show: true, - textStyle: { - color: "#fff" - }, - position: "insideTop", - formatter(p) { - return p.value > 0 ? p.value : ""; - } - } - } - }, - data: [ - 709, - 1917, - 2455, - 2610, - 1719, - 1433, - 1544, - 3285, - 5208, - 3372, - 2484, - 4078 - ] - }, - - { - name: "male", - type: "bar", - stack: "total", - itemStyle: { - normal: { - color: "rgba(0,191,183,1)", - barBorderRadius: 0, - label: { - show: true, - position: "top", - formatter(p) { - return p.value > 0 ? p.value : ""; - } - } - } - }, - data: [ - 327, - 1776, - 507, - 1200, - 800, - 482, - 204, - 1390, - 1001, - 951, - 381, - 220 - ] - }, - { - name: "average", - type: "line", - stack: "total", - symbolSize: 10, - symbol: "circle", - itemStyle: { - normal: { - color: "rgba(252,230,48,1)", - barBorderRadius: 0, - label: { - show: true, - position: "top", - formatter(p) { - return p.value > 0 ? p.value : ""; - } - } - } - }, - data: [ - 1036, - 3693, - 2962, - 3810, - 2519, - 1915, - 1748, - 4675, - 6209, - 4323, - 2865, - 4298 - ] - } - ] - }); - } - } -}; -</script> diff --git a/WebSite/src/components/Charts/mixins/resize.js b/WebSite/src/components/Charts/mixins/resize.js deleted file mode 100644 index 77d662d74e3857ad5b33dbf49070db4fb5f57294..0000000000000000000000000000000000000000 --- a/WebSite/src/components/Charts/mixins/resize.js +++ /dev/null @@ -1,66 +0,0 @@ -import { debounce } from "@/utils"; - -export default { - data() { - return { - $_sidebarElm: null, - $_resizeHandler: null - }; - }, - mounted() { - this.initListener(); - }, - activated() { - if (!this.$_resizeHandler) { - // avoid duplication init - this.initListener(); - } - - // when keep-alive chart activated, auto resize - this.resize(); - }, - beforeDestroy() { - this.destroyListener(); - }, - deactivated() { - this.destroyListener(); - }, - methods: { - // use $_ for mixins properties - // https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential - $_sidebarResizeHandler(e) { - if (e.propertyName === "width") { - this.$_resizeHandler(); - } - }, - initListener() { - this.$_resizeHandler = debounce(() => { - this.resize(); - }, 100); - window.addEventListener("resize", this.$_resizeHandler); - - this.$_sidebarElm = document.getElementsByClassName( - "sidebar-container" - )[0]; - this.$_sidebarElm && - this.$_sidebarElm.addEventListener( - "transitionend", - this.$_sidebarResizeHandler - ); - }, - destroyListener() { - window.removeEventListener("resize", this.$_resizeHandler); - this.$_resizeHandler = null; - - this.$_sidebarElm && - this.$_sidebarElm.removeEventListener( - "transitionend", - this.$_sidebarResizeHandler - ); - }, - resize() { - const { chart } = this; - chart && chart.resize(); - } - } -}; diff --git a/WebSite/src/components/DeptGroup/index.vue b/WebSite/src/components/DeptGroup/index.vue deleted file mode 100644 index 4220bc63e2f554fa3989505ba34d113837efedf3..0000000000000000000000000000000000000000 --- a/WebSite/src/components/DeptGroup/index.vue +++ /dev/null @@ -1,105 +0,0 @@ -<template> - <div class="deptGroup" style="position:relative"> - <el-input - :placeholder="holder" - name="treeInfo" - @click.native="showDeptInfo" - v-model="deptName" - :suffix-icon="treeVisble ? 'el-icon-caret-top' : 'el-icon-caret-bottom'" - ></el-input> - <div class="deptInfo" v-if="treeVisble"> - <el-input - placeholder="杈撳叆鍏抽敭瀛楄繘琛岃繃婊�" - name="treeInfo" - v-model="filterText" - @click.native="showDeptInfo" - > - </el-input> - <el-tree - class="filter-tree" - :data="deptList" - :props="defaultProps" - highlight-current - :default-expand-all="true" - :filter-node-method="filterNode" - ref="tree" - @node-click="handleNodeClick" - > - </el-tree> - </div> - </div> -</template> - -<script> -export default { - props: { - holder: { - type: String - }, - deptList: { - type: Array - } - }, - data() { - return { - treeVisble: false, - deptName: "", //閮ㄩ棬鍚嶇О - filterText: "", - defaultProps: { - children: "children", - label: "fullName" - }, - event: null - }; - }, - mounted() { - document.body.addEventListener("click", e => { - if (this.event) { - if (e.target.name !== "treeInfo" || e.target !== this.event.target) { - this.treeVisble = false; - } - } - }); - }, - watch: { - filterText(val) { - this.$refs.tree.filter(val); - }, - deptName(val) { - if (val == "") { - this.$emit("clearGroupId"); - } - } - }, - methods: { - showDeptInfo(e) { - this.event = e; - this.treeVisble = true; - }, - // 鏍戣妭鐐圭偣鍑� - handleNodeClick(data) { - this.deptName = data.fullName; - this.$emit("handleSetVal", data); - this.treeVisble = false; - }, - filterNode(value, data) { - if (!value) return true; - return data.fullName.indexOf(value) !== -1; - } - } -}; -</script> - -<style lang="scss" scoped> -.deptInfo { - // position: absolute; - position: fixed; - width: 209px; - height: 200px; - z-index: 10; - .el-tree { - height: 200px; - overflow: scroll; - } -} -</style> diff --git a/WebSite/src/components/DndList/index.vue b/WebSite/src/components/DndList/index.vue deleted file mode 100644 index c30eb14f21d5fa2575efd2ab35f0c941cd4d2dbb..0000000000000000000000000000000000000000 --- a/WebSite/src/components/DndList/index.vue +++ /dev/null @@ -1,182 +0,0 @@ -<template> - <div class="dndList"> - <div :style="{ width: width1 }" class="dndList-list"> - <h3>{{ list1Title }}</h3> - <draggable - :set-data="setData" - :list="list1" - group="article" - class="dragArea" - > - <div - v-for="element in list1" - :key="element.id" - class="list-complete-item" - > - <div class="list-complete-item-handle"> - {{ element.id }}[{{ element.author }}] {{ element.title }} - </div> - <div style="position:absolute;right:0px;"> - <span - style="float: right ;margin-top: -20px;margin-right:5px;" - @click="deleteEle(element)" - > - <i style="color:#ff4949" class="el-icon-delete" /> - </span> - </div> - </div> - </draggable> - </div> - <div :style="{ width: width2 }" class="dndList-list"> - <h3>{{ list2Title }}</h3> - <draggable :list="list2" group="article" class="dragArea"> - <div - v-for="element in list2" - :key="element.id" - class="list-complete-item" - > - <div class="list-complete-item-handle2" @click="pushEle(element)"> - {{ element.id }} [{{ element.author }}] {{ element.title }} - </div> - </div> - </draggable> - </div> - </div> -</template> - -<script> -import draggable from "vuedraggable"; - -export default { - name: "DndList", - components: { draggable }, - props: { - list1: { - type: Array, - default() { - return []; - } - }, - list2: { - type: Array, - default() { - return []; - } - }, - list1Title: { - type: String, - default: "list1" - }, - list2Title: { - type: String, - default: "list2" - }, - width1: { - type: String, - default: "48%" - }, - width2: { - type: String, - default: "48%" - } - }, - methods: { - isNotInList1(v) { - return this.list1.every(k => v.id !== k.id); - }, - isNotInList2(v) { - return this.list2.every(k => v.id !== k.id); - }, - deleteEle(ele) { - for (const item of this.list1) { - if (item.id === ele.id) { - const index = this.list1.indexOf(item); - this.list1.splice(index, 1); - break; - } - } - if (this.isNotInList2(ele)) { - this.list2.unshift(ele); - } - }, - pushEle(ele) { - for (const item of this.list2) { - if (item.id === ele.id) { - const index = this.list2.indexOf(item); - this.list2.splice(index, 1); - break; - } - } - if (this.isNotInList1(ele)) { - this.list1.push(ele); - } - }, - setData(dataTransfer) { - // to avoid Firefox bug - // Detail see : https://github.com/RubaXa/Sortable/issues/1012 - dataTransfer.setData("Text", ""); - } - } -}; -</script> - -<style lang="scss" scoped> -.dndList { - background: #fff; - padding-bottom: 40px; - &:after { - content: ""; - display: table; - clear: both; - } - .dndList-list { - float: left; - padding-bottom: 30px; - &:first-of-type { - margin-right: 2%; - } - .dragArea { - margin-top: 15px; - min-height: 50px; - padding-bottom: 30px; - } - } -} - -.list-complete-item { - cursor: pointer; - position: relative; - font-size: 14px; - padding: 5px 12px; - margin-top: 4px; - border: 1px solid #bfcbd9; - transition: all 1s; -} - -.list-complete-item-handle { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - margin-right: 50px; -} - -.list-complete-item-handle2 { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - margin-right: 20px; -} - -.list-complete-item.sortable-chosen { - background: #4ab7bd; -} - -.list-complete-item.sortable-ghost { - background: #30b08f; -} - -.list-complete-enter, -.list-complete-leave-active { - opacity: 0; -} -</style> diff --git a/WebSite/src/components/DragSelect/index.vue b/WebSite/src/components/DragSelect/index.vue deleted file mode 100644 index b255f2fcb62fec0cb894c0496dc1d8ff782d698a..0000000000000000000000000000000000000000 --- a/WebSite/src/components/DragSelect/index.vue +++ /dev/null @@ -1,70 +0,0 @@ -<template> - <el-select - ref="dragSelect" - v-model="selectVal" - v-bind="$attrs" - class="drag-select" - multiple - v-on="$listeners" - > - <slot /> - </el-select> -</template> - -<script> -import Sortable from "sortablejs"; - -export default { - name: "DragSelect", - props: { - value: { - type: Array, - required: true - } - }, - computed: { - selectVal: { - get() { - return [...this.value]; - }, - set(val) { - this.$emit("input", [...val]); - } - } - }, - mounted() { - this.setSort(); - }, - methods: { - setSort() { - const el = this.$refs.dragSelect.$el.querySelectorAll( - ".el-select__tags > span" - )[0]; - this.sortable = Sortable.create(el, { - ghostClass: "sortable-ghost", // Class name for the drop placeholder, - setData: function(dataTransfer) { - dataTransfer.setData("Text", ""); - // to avoid Firefox bug - // Detail see : https://github.com/RubaXa/Sortable/issues/1012 - }, - onEnd: evt => { - const targetRow = this.value.splice(evt.oldIndex, 1)[0]; - this.value.splice(evt.newIndex, 0, targetRow); - } - }); - } - } -}; -</script> - -<style scoped> -.drag-select >>> .sortable-ghost { - opacity: 0.8; - color: #fff !important; - background: #42b983 !important; -} - -.drag-select >>> .el-tag { - cursor: pointer; -} -</style> diff --git a/WebSite/src/components/Dropzone/index.vue b/WebSite/src/components/Dropzone/index.vue deleted file mode 100644 index 2fadc741d8040b999deb5860ed1b007aca6e9eab..0000000000000000000000000000000000000000 --- a/WebSite/src/components/Dropzone/index.vue +++ /dev/null @@ -1,312 +0,0 @@ -<template> - <div :id="id" :ref="id" :action="url" class="dropzone"> - <input type="file" name="file" /> - </div> -</template> - -<script> -import Dropzone from "dropzone"; -import "dropzone/dist/dropzone.css"; -// import { getToken } from 'api/qiniu'; - -Dropzone.autoDiscover = false; - -export default { - props: { - id: { - type: String, - required: true - }, - url: { - type: String, - required: true - }, - clickable: { - type: Boolean, - default: true - }, - defaultMsg: { - type: String, - default: "涓婁紶鍥剧墖" - }, - acceptedFiles: { - type: String, - default: "" - }, - thumbnailHeight: { - type: Number, - default: 200 - }, - thumbnailWidth: { - type: Number, - default: 200 - }, - showRemoveLink: { - type: Boolean, - default: true - }, - maxFilesize: { - type: Number, - default: 2 - }, - maxFiles: { - type: Number, - default: 3 - }, - autoProcessQueue: { - type: Boolean, - default: true - }, - useCustomDropzoneOptions: { - type: Boolean, - default: false - }, - defaultImg: { - default: "", - type: [String, Array] - }, - couldPaste: { - type: Boolean, - default: false - } - }, - data() { - return { - dropzone: "", - initOnce: true - }; - }, - watch: { - defaultImg(val) { - if (val.length === 0) { - this.initOnce = false; - return; - } - if (!this.initOnce) return; - this.initImages(val); - this.initOnce = false; - } - }, - mounted() { - const element = document.getElementById(this.id); - const vm = this; - this.dropzone = new Dropzone(element, { - clickable: this.clickable, - thumbnailWidth: this.thumbnailWidth, - thumbnailHeight: this.thumbnailHeight, - maxFiles: this.maxFiles, - maxFilesize: this.maxFilesize, - dictRemoveFile: "Remove", - addRemoveLinks: this.showRemoveLink, - acceptedFiles: this.acceptedFiles, - autoProcessQueue: this.autoProcessQueue, - dictDefaultMessage: - '<i style="margin-top: 3em;display: inline-block" class="material-icons">' + - this.defaultMsg + - "</i><br>Drop files here to upload", - dictMaxFilesExceeded: "鍙兘涓€涓浘", - previewTemplate: - '<div class="dz-preview dz-file-preview"> <div class="dz-image" style="width:' + - this.thumbnailWidth + - "px;height:" + - this.thumbnailHeight + - 'px" ><img style="width:' + - this.thumbnailWidth + - "px;height:" + - this.thumbnailHeight + - 'px" data-dz-thumbnail /></div> <div class="dz-details"><div class="dz-size"><span data-dz-size></span></div> <div class="dz-progress"><span class="dz-upload" data-dz-uploadprogress></span></div> <div class="dz-error-message"><span data-dz-errormessage></span></div> <div class="dz-success-mark"> <i class="material-icons">done</i> </div> <div class="dz-error-mark"><i class="material-icons">error</i></div></div>', - init() { - const val = vm.defaultImg; - if (!val) return; - if (Array.isArray(val)) { - if (val.length === 0) return; - val.map((v, i) => { - const mockFile = { name: "name" + i, size: 12345, url: v }; - this.options.addedfile.call(this, mockFile); - this.options.thumbnail.call(this, mockFile, v); - mockFile.previewElement.classList.add("dz-success"); - mockFile.previewElement.classList.add("dz-complete"); - vm.initOnce = false; - return true; - }); - } else { - const mockFile = { name: "name", size: 12345, url: val }; - this.options.addedfile.call(this, mockFile); - this.options.thumbnail.call(this, mockFile, val); - mockFile.previewElement.classList.add("dz-success"); - mockFile.previewElement.classList.add("dz-complete"); - vm.initOnce = false; - } - }, - accept: (file, done) => { - /* 涓冪墰*/ - // const token = this.$store.getters.token; - // getToken(token).then(response => { - // file.token = response.data.qiniu_token; - // file.key = response.data.qiniu_key; - // file.url = response.data.qiniu_url; - // done(); - // }) - done(); - }, - sending: (file, xhr, formData) => { - // formData.append('token', file.token); - // formData.append('key', file.key); - vm.initOnce = false; - } - }); - - if (this.couldPaste) { - document.addEventListener("paste", this.pasteImg); - } - - this.dropzone.on("success", file => { - vm.$emit("dropzone-success", file, vm.dropzone.element); - }); - this.dropzone.on("addedfile", file => { - vm.$emit("dropzone-fileAdded", file); - }); - this.dropzone.on("removedfile", file => { - vm.$emit("dropzone-removedFile", file); - }); - this.dropzone.on("error", (file, error, xhr) => { - vm.$emit("dropzone-error", file, error, xhr); - }); - this.dropzone.on("successmultiple", (file, error, xhr) => { - vm.$emit("dropzone-successmultiple", file, error, xhr); - }); - }, - destroyed() { - document.removeEventListener("paste", this.pasteImg); - this.dropzone.destroy(); - }, - methods: { - removeAllFiles() { - this.dropzone.removeAllFiles(true); - }, - processQueue() { - this.dropzone.processQueue(); - }, - pasteImg(event) { - const items = (event.clipboardData || event.originalEvent.clipboardData) - .items; - if (items[0].kind === "file") { - this.dropzone.addFile(items[0].getAsFile()); - } - }, - initImages(val) { - if (!val) return; - if (Array.isArray(val)) { - val.map((v, i) => { - const mockFile = { name: "name" + i, size: 12345, url: v }; - this.dropzone.options.addedfile.call(this.dropzone, mockFile); - this.dropzone.options.thumbnail.call(this.dropzone, mockFile, v); - mockFile.previewElement.classList.add("dz-success"); - mockFile.previewElement.classList.add("dz-complete"); - return true; - }); - } else { - const mockFile = { name: "name", size: 12345, url: val }; - this.dropzone.options.addedfile.call(this.dropzone, mockFile); - this.dropzone.options.thumbnail.call(this.dropzone, mockFile, val); - mockFile.previewElement.classList.add("dz-success"); - mockFile.previewElement.classList.add("dz-complete"); - } - } - } -}; -</script> - -<style scoped> -.dropzone { - border: 2px solid #e5e5e5; - font-family: "Roboto", sans-serif; - color: #777; - transition: background-color 0.2s linear; - padding: 5px; -} - -.dropzone:hover { - background-color: #f6f6f6; -} - -i { - color: #ccc; -} - -.dropzone .dz-image img { - width: 100%; - height: 100%; -} - -.dropzone input[name="file"] { - display: none; -} - -.dropzone .dz-preview .dz-image { - border-radius: 0px; -} - -.dropzone .dz-preview:hover .dz-image img { - transform: none; - filter: none; - width: 100%; - height: 100%; -} - -.dropzone .dz-preview .dz-details { - bottom: 0px; - top: 0px; - color: white; - background-color: rgba(33, 150, 243, 0.8); - transition: opacity 0.2s linear; - text-align: left; -} - -.dropzone .dz-preview .dz-details .dz-filename span, -.dropzone .dz-preview .dz-details .dz-size span { - background-color: transparent; -} - -.dropzone .dz-preview .dz-details .dz-filename:not(:hover) span { - border: none; -} - -.dropzone .dz-preview .dz-details .dz-filename:hover span { - background-color: transparent; - border: none; -} - -.dropzone .dz-preview .dz-remove { - position: absolute; - z-index: 30; - color: white; - margin-left: 15px; - padding: 10px; - top: inherit; - bottom: 15px; - border: 2px white solid; - text-decoration: none; - text-transform: uppercase; - font-size: 0.8rem; - font-weight: 800; - letter-spacing: 1.1px; - opacity: 0; -} - -.dropzone .dz-preview:hover .dz-remove { - opacity: 1; -} - -.dropzone .dz-preview .dz-success-mark, -.dropzone .dz-preview .dz-error-mark { - margin-left: -40px; - margin-top: -50px; -} - -.dropzone .dz-preview .dz-success-mark i, -.dropzone .dz-preview .dz-error-mark i { - color: white; - font-size: 5rem; -} -</style> diff --git a/WebSite/src/components/ErrorLog/index.vue b/WebSite/src/components/ErrorLog/index.vue deleted file mode 100644 index 5cf626b954c7ff5acee8ef5ca99a5a79a32ec557..0000000000000000000000000000000000000000 --- a/WebSite/src/components/ErrorLog/index.vue +++ /dev/null @@ -1,92 +0,0 @@ -<template> - <div v-if="errorLogs.length > 0"> - <el-badge - :is-dot="true" - style="line-height: 25px;margin-top: -5px;" - @click.native="dialogTableVisible = true" - > - <el-button style="padding: 8px 10px;" size="small" type="danger"> - <svg-icon icon-class="bug" /> - </el-button> - </el-badge> - - <el-dialog :visible.sync="dialogTableVisible" width="80%" append-to-body> - <div slot="title"> - <span style="padding-right: 10px;">Error Log</span> - <el-button - size="mini" - type="primary" - icon="el-icon-delete" - @click="clearAll" - >Clear All</el-button - > - </div> - <el-table :data="errorLogs" border> - <el-table-column label="Message"> - <template slot-scope="{ row }"> - <div> - <span class="message-title">Msg:</span> - <el-tag type="danger"> - {{ row.err.message }} - </el-tag> - </div> - <br /> - <div> - <span class="message-title" style="padding-right: 10px;" - >Info: - </span> - <el-tag type="warning"> - {{ row.vm.$vnode.tag }} error in {{ row.info }} - </el-tag> - </div> - <br /> - <div> - <span class="message-title" style="padding-right: 16px;" - >Url: - </span> - <el-tag type="success"> - {{ row.url }} - </el-tag> - </div> - </template> - </el-table-column> - <el-table-column label="Stack"> - <template slot-scope="scope"> - {{ scope.row.err.stack }} - </template> - </el-table-column> - </el-table> - </el-dialog> - </div> -</template> - -<script> -export default { - name: "ErrorLog", - data() { - return { - dialogTableVisible: false - }; - }, - computed: { - errorLogs() { - return this.$store.getters.errorLogs; - } - }, - methods: { - clearAll() { - this.dialogTableVisible = false; - this.$store.dispatch("errorLog/clearErrorLog"); - } - } -}; -</script> - -<style scoped> -.message-title { - font-size: 16px; - color: #333; - font-weight: bold; - padding-right: 8px; -} -</style> diff --git a/WebSite/src/components/ExtendFormTable/index.vue b/WebSite/src/components/ExtendFormTable/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..97bab1adf57ed54a7158d3846ed041c954e29785 --- /dev/null +++ b/WebSite/src/components/ExtendFormTable/index.vue @@ -0,0 +1,191 @@ +<template> + <div> + <el-dialog + title="濉啓鏌ョ湅鏄庣粏" + width="80%" + v-model="show" + @close="onCloseHandler" + destroy-on-close + > + <el-row> + <el-button type="primary" plain @click="addSubBudget">鏂板</el-button> + </el-row> + <el-table class="mt-20" border stripe :data="pageList"> + <el-table-column + v-for="item in tableConfig" + :key="item.id" + :label="item.extendName" + :prop="item.extendCode" + > + <template #default="scope"> + <el-input + v-if="item.extendType == 'WENBEN'" + v-model="scope.row.otherJson[`${item.fileName}`]" + placeholder="璇疯緭鍏�..." + ></el-input> + <InputNumber + @change="numberAmountChange(scope.row, item)" + v-if="item.extendType == 'SHUZI' && item.isSum != '1'" + v-model="scope.row.otherJson[`${item.fileName}`]" + placeholder="璇疯緭鍏�..." + ></InputNumber> + <el-date-picker + v-if="item.extendType == 'RIQI'" + v-model="scope.row.otherJson[`${item.fileName}`]" + type="date" + placeholder="閫夋嫨鏃ユ湡..." + > + </el-date-picker> + <el-select + v-if="item.extendType == 'XIALAKUANG'" + v-model="scope.row.otherJson[`${item.fileName}`]" + placeholder="璇烽€夋嫨..." + > + <el-option + v-for="op in item.source" + :key="op" + :label="op" + :value="op" + ></el-option> + </el-select> + <div v-if="item.isSum == '1'">{{ scope.row.subtotal }}</div> + </template> + </el-table-column> + <el-table-column label="鎿嶄綔"> + <template #default="scope"> + <el-button type="danger" plain @click="removeSubBudget(scope)" + >鍒犻櫎</el-button + > + </template> + </el-table-column> + </el-table> + <template #footer> + <span class="dialog-footer"> + <el-button @click="show = false">鍙� 娑�</el-button> + <el-button type="primary" @click="onConfirmHandler">纭� 瀹�</el-button> + </span> + </template> + </el-dialog> + </div> +</template> + +<script> +import { computed, nextTick, reactive, toRefs, watch } from 'vue'; +import InputNumber from '@/components/AmountInputBox'; +import { isNotEmpty, moneyFormat } from '@/utils'; +export default { + components: { InputNumber }, + props: { + modelValue: { + required: true, + type: Boolean + }, + tableConfig: { + required: true, + type: Array + }, + tableData: { + type: Array, + default: () => [] + }, + caculte: { + type: String + }, + fields: { + type: Array + } + }, + emits: ['update:modelValue', 'on-confirm'], + setup(props, { emit }) { + const data = reactive({ + pageList: [] + }); + watch( + () => props.tableData, + val => { + let pageList = JSON.parse(JSON.stringify(val)); + console.error('鍔ㄦ€佽〃鏍煎€兼洿鏂颁簡', pageList); + pageList.forEach(item => { + if (isNotEmpty(item.otherJson)) { + if (typeof item.otherJson === 'string') { + item.otherJson = JSON.parse(item.otherJson); + } + } else { + item.otherJson = {}; + } + }); + nextTick(() => { + data.pageList = pageList; + }); + }, + { + immediate: true + } + ); + const show = computed({ + get() { + return props.modelValue; + }, + set(val) { + emit('update:modelValue', val); + } + }); + + const addSubBudget = () => { + data.pageList.push({ otherJson: {} }); + }; + const removeSubBudget = scope => { + data.pageList.splice(scope.$index, 1); + }; + const caculteHandler = otherJson => { + console.log(otherJson); + return eval(props.caculte); + }; + const numberAmountChange = (row, item) => { + console.error(row, item); + const otherJson = row.otherJson; + if (props.fields.includes(item.fileName)) { + console.error(props.caculte, props.fields); + const result = caculteHandler(otherJson); + console.log(result); + if (!Number.isNaN(result)) { + row.subtotal = moneyFormat(result, 2, ','); + row.subtotalSource = result; + } else { + row.subtotal = moneyFormat(0, 2, ','); + row.subtotalSource = 0; + } + } + }; + const onCloseHandler = () => { + let pageList = JSON.parse(JSON.stringify(props.tableData)); + pageList.forEach(item => { + if (isNotEmpty(item.otherJson)) { + if (typeof item.otherJson === 'string') { + item.otherJson = JSON.parse(item.otherJson); + } + } else { + item.otherJson = {}; + } + }); + nextTick(() => { + data.pageList = pageList; + }); + }; + const onConfirmHandler = () => { + emit('on-confirm', data.pageList); + }; + return { + ...toRefs(data), + show, + addSubBudget, + removeSubBudget, + onCloseHandler, + onConfirmHandler, + numberAmountChange + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/components/Flow/conpoments/History.vue b/WebSite/src/components/Flow/conpoments/History.vue new file mode 100644 index 0000000000000000000000000000000000000000..ef29c52877b2cb58685ad5d8a1a597bab241639b --- /dev/null +++ b/WebSite/src/components/Flow/conpoments/History.vue @@ -0,0 +1,147 @@ +<template> + <el-dialog + :before-close="handleCloseDialog" + :close-on-click-modal="false" + width="50%" + title="娴佺▼鍘嗗彶" + v-model="dialogVisible" + append-to-body + > + <el-timeline> + <el-timeline-item + v-for="(flowList, index) in flowModel" + :key="index" + icon="el-icon-time" + type="primary" + :timestamp="flowList.actionTime" + placement="top" + > + <el-card> + <p style="padding-bottom:10px"> + <i class="el-icon-time"></i> {{ flowList.time }} + </p> + <el-steps + finish-status="success" + :align-center="true" + class="flow-state" + > + <el-step + :status="flowList.flowState == '閫€鍥�' ? 'error' : 'success'" + :title="flowList.startNodeName" + ></el-step> + <span + class="state" + :style=" + flowList.flowState == '閫€鍥�' ? 'color:red' : 'color:#1890ff' + " + > + {{ flowList.flowState }} + </span> + <span + class="state-bottom" + :style=" + flowList.flowState == '閫€鍥�' ? 'color:red' : 'color:#1890ff' + " + > + <i class="el-icon-caret-right"></i> + <i class="el-icon-caret-right"></i> + <i class="el-icon-caret-right"></i> + </span> + <el-step + v-if="index < flowModel.length - 1" + status="finish" + icon="el-icon-time" + :title="flowList.endNodeName" + ></el-step> + <el-step + v-if=" + index == flowModel.length - 1 && flowList.endNodeName != '瀹屾垚' + " + status="finish" + icon="el-icon-loading" + :title="flowList.endNodeName" + ></el-step> + <el-step + v-if=" + index == flowModel.length - 1 && flowList.endNodeName == '瀹屾垚' + " + status="success" + :title="flowList.endNodeName" + ></el-step> + </el-steps> + <p v-if="flowList.attitude != ''"> + <i + class="el-icon-edit-outline" + style="color:orange;font-size:16px" + ></i> + {{ flowList.attitude }} + </p> + <h4 class="timeline-footer" style="text-align: right"> + 鎻愪氦浜�: {{ flowList.auditor }} + </h4> + </el-card> + </el-timeline-item> + </el-timeline> + <template #footer> + <span class="dialog-footer"> + <el-button @click="handleCloseDialog()"> + 鍏抽棴 + </el-button> + </span> + </template> + </el-dialog> +</template> + +<script> +import { reactive, toRefs, ref } from 'vue'; +export default { + name: 'History', + props: { + visible: Boolean, + flowModel: Array + }, + emits: ['update:visible'], + setup(props, cxt) { + const dialogVisible = ref(props.visible); + const state = reactive({}); + const handleCloseDialog = () => { + cxt.emit('update:visible', false); + }; + return { + ...toRefs(state), + dialogVisible, + handleCloseDialog + }; + } +}; +</script> + +<style lang="scss" scoped> +.active { + color: red !important; +} +.el-input, +.el-select { + width: 100% !important; +} +.flow-state { + position: relative; + span { + color: #1890ff; + } + .state { + position: absolute; + left: 50%; + transform: translate(-50%, -50%); + } + .state-bottom { + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + } +} +.el-timeline { + padding: 0; +} +</style> diff --git a/WebSite/src/components/Flow/conpoments/Return.vue b/WebSite/src/components/Flow/conpoments/Return.vue new file mode 100644 index 0000000000000000000000000000000000000000..e37ba726149c772f47950a01ca2fb6f77a49ab58 --- /dev/null +++ b/WebSite/src/components/Flow/conpoments/Return.vue @@ -0,0 +1,121 @@ +<template> + <el-dialog + :before-close="handleCloseDialog" + :close-on-click-modal="false" + width="30%" + title="鍥為€€" + v-model="dialogVisible" + append-to-body + :close-on-press-escape="false" + > + <el-form + ref="dataForm" + :model="flowOutput" + label-position="top" + size="large" + > + <el-form-item + label="鍥為€€鑷�" + style="width: 100%;" + prop="nodeIds" + :rules="[{ required: true, message: '閫夋嫨', trigger: 'change' }]" + > + <el-select v-model="flowOutput.nodeIds" placeholder="璇烽€夋嫨"> + <el-option + v-for="item in flowModel" + :key="item.key" + :label="item.value" + :value="item.key" + ></el-option> + </el-select> + </el-form-item> + <el-form-item + label="鍥為€€澶囨敞" + style="width: 100%;" + prop="remake" + :rules="[ + { required: true, message: '璇峰~鍐欏洖閫€澶囨敞', trigger: 'blur' } + ]" + > + <el-input + type="textarea" + :rows="2" + placeholder="璇疯緭鍏ュ唴瀹�" + v-model="flowOutput.remake" + > + </el-input> + </el-form-item> + </el-form> + + <template #footer> + <span class="dialog-footer"> + <el-button @click="handleCloseDialog()"> + 鍙栨秷 + </el-button> + <el-button type="primary" @click="handleConfirm('dataForm')"> + 纭 + </el-button> + </span> + </template> + </el-dialog> +</template> + +<script> +import { reactive, toRefs, watch, ref } from 'vue'; +export default { + name: 'Return', + props: { + visible: { + type: Boolean, + required: true + }, + flowModel: { + type: Array + } + }, + emits: ['update:visible', 'handle-confirm'], + setup(props, cxt) { + const dialogVisible = ref(props.visible); + const state = reactive({ + flowOutput: { + remake: '', + nodeIds: '' + } + }); + watch( + () => props.flowModel, + val => { + if (val && props.flowModel.length > 0) { + state.flowOutput.nodeIds = props.flowModel[0].key; + } + }, + { immediate: true, deep: true } + ); + const clearSubmit = () => { + state.flowOutput.remake = ''; + state.flowOutput.nodeIds = ''; + }; + const handleCloseDialog = () => { + cxt.emit('update:visible', false); + }; + const handleConfirm = () => { + cxt.emit('handle-confirm', state.flowOutput); + cxt.emit('update:visible', false); + }; + return { + ...toRefs(state), + clearSubmit, + dialogVisible, + handleCloseDialog, + handleConfirm + }; + } +}; +</script> + +<style scoped> +.el-input, +.el-select { + width: 100% !important; +} +</style> diff --git a/WebSite/src/components/Flow/conpoments/Submit.vue b/WebSite/src/components/Flow/conpoments/Submit.vue new file mode 100644 index 0000000000000000000000000000000000000000..3ada62d96994389f70b92e2198662fa100ee092c --- /dev/null +++ b/WebSite/src/components/Flow/conpoments/Submit.vue @@ -0,0 +1,113 @@ +<template> + <el-dialog + :before-close="handleCloseDialog" + :close-on-click-modal="false" + width="30%" + title="鎻愪氦" + v-model="dialogVisible" + append-to-body + :close-on-press-escape="false" + > + <el-form + ref="dataForm" + :model="flowOutput" + label-position="top" + size="large" + > + <el-form-item + label="鎻愪氦鑷�" + style="width: 100%;" + prop="target" + :rules="[{ required: true, message: '閫夋嫨', trigger: 'blur' }]" + > + <el-select v-model="flowOutput.nodeIds" placeholder="璇烽€夋嫨"> + <el-option + v-for="item in flowModel" + :key="item.key" + :label="item.value" + :value="item.key" + ></el-option> + </el-select> + </el-form-item> + <el-form-item label="鎻愪氦澶囨敞" style="width: 100%;" prop="note"> + <el-input + type="textarea" + :rows="2" + placeholder="璇疯緭鍏ュ唴瀹�" + v-model="flowOutput.remake" + > + </el-input> + </el-form-item> + </el-form> + <template #footer> + <span class="dialog-footer"> + <el-button @click="handleCloseDialog"> + 鍙栨秷 + </el-button> + <el-button type="primary" @click="handleConfirm"> + 纭 + </el-button> + </span> + </template> + </el-dialog> +</template> + +<script> +import { reactive, toRefs, watch, ref } from 'vue'; +export default { + name: 'Submit', + props: { + visible: { + type: Boolean, + required: true + }, + flowModel: { + type: Array + } + }, + emits: ['handle-confirm', 'update:visible'], + setup(props, cxt) { + const dialogVisible = ref(props.visible); + const state = reactive({ + flowOutput: { + remake: '', + nodeIds: '' + } + }); + watch( + () => props.flowModel, + val => { + if (val && props.flowModel.length > 0) { + state.flowOutput.nodeIds = props.flowModel[0].key; + } + }, + { immediate: true, deep: true } + ); + const clearSubmit = () => { + state.flowOutput.remake = ''; + state.flowOutput.nodeIds = ''; + }; + const handleCloseDialog = () => { + cxt.emit('update:visible', false); + }; + const handleConfirm = () => { + cxt.emit('handle-confirm', state.flowOutput); + cxt.emit('update:visible', false); + }; + return { + ...toRefs(state), + clearSubmit, + dialogVisible, + handleCloseDialog, + handleConfirm + }; + } +}; +</script> + +<style scoped> +.el-input, +.el-select { + width: 100% !important; +} +</style> diff --git a/WebSite/src/components/Flow/index.vue b/WebSite/src/components/Flow/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..64593cd8f65618b1a4a51cb41d017926a7c60c22 --- /dev/null +++ b/WebSite/src/components/Flow/index.vue @@ -0,0 +1,166 @@ +<template> + <!-- <el-card> --> + <div class="flex-group"> + <div class="flex-group-left"> + <el-button plain @click="handleBack">杩斿洖</el-button> + <el-button + type="primary" + plain + @click="handleSave" + v-if="flowInfo.btnStates.isShowSave" + >淇濆瓨</el-button + > + <el-button + type="success" + plain + @click="handleOpenSubmitDialog" + v-if="flowInfo.btnStates.isShowSubmit" + >鎻愪氦</el-button + > + <el-button + type="danger" + plain + @click="handleOpenReturnDialog" + v-if="flowInfo.btnStates.isShowReject" + >鍥為€€</el-button + > + <el-button type="danger" plain v-if="flowInfo.btnStates.isShowCancel" + >浣滃簾</el-button + > + </div> + <div class="flex-group-middle" v-if="flowInfo.user || flowInfo.state"> + <div class="user"> + <span>褰撳墠澶勭悊浜猴細{{ flowInfo.user }}</span> + </div> + <div class="state"> + <span>娴佺▼鐘舵€侊細{{ flowInfo.state }}</span> + </div> + </div> + <div class="flex-group-right"> + <el-button + type="success" + @click="handleChart" + v-if="flowInfo.btnStates.isShowChart" + >鍥捐〃</el-button + > + <el-button + type="warning" + @click="handleOpenHistoryDialog" + v-if=" + flowInfo.flow && + flowInfo.flow.length > 0 && + flowInfo.btnStates.isShowHistory + " + >鍘嗗彶</el-button + > + </div> + <Submit + v-if="dialogSubmit.visible" + v-model:visible="dialogSubmit.visible" + :flowModel="flowInfo.nextSubmitNodes" + @handle-confirm="handleSubmit" + /> + <Return + v-if="dialogReturn.visible" + v-model:visible="dialogReturn.visible" + :flowModel="flowInfo.canRejectNodes" + @handle-confirm="handleReturn" + /> + <History + v-if="dialogHistory.visible" + v-model:visible="dialogHistory.visible" + :flowModel="flowInfo.flow" + /> + </div> + <!-- </el-card> --> +</template> + +<script> +import { reactive, toRefs } from 'vue'; +import Submit from './conpoments/Submit'; +import Return from './conpoments/Return'; +import History from './conpoments/History'; +export default { + props: { + flowInfo: { + type: Object, + default() { + return { + btnStates: { + isShowSave: true, + isShowSubmit: true, + isShowReject: false, + isShowCancel: false, + isShowChart: false, + isShowHistory: false + } + }; + } + } + }, + components: { History, Submit, Return }, + setup(props, cxt) { + const state = reactive({ + dialogSubmit: { + visible: false + }, + dialogReturn: { + visible: false + }, + dialogHistory: { + visible: false + } + }); + const handleBack = () => { + cxt.emit('handleBack'); + }; + const handleSave = () => { + cxt.emit('handleSave'); + }; + const handleOpenSubmitDialog = () => { + state.dialogSubmit.visible = true; + }; + const handleSubmit = flowOutput => { + cxt.emit('handleSubmit', flowOutput); + }; + const handleOpenReturnDialog = () => { + state.dialogReturn.visible = true; + }; + const handleReturn = flowOutput => { + cxt.emit('handleReturn', flowOutput); + }; + const handleChart = () => {}; + const handleOpenHistoryDialog = () => { + console.log('鐐瑰嚮浜�'); + state.dialogHistory.visible = true; + }; + const handleHistory = () => {}; + return { + ...toRefs(state), + handleBack, + handleSave, + props, + handleChart, + handleHistory, + handleReturn, + handleSubmit, + handleOpenSubmitDialog, + handleOpenReturnDialog, + handleOpenHistoryDialog + }; + } +}; +</script> + +<style lang="scss" scoped> +.flex-group { + display: flex; + justify-content: space-between; + .flex-group-middle { + display: flex; + flex: 2; + justify-content: space-around; + align-items: center; + } +} +</style> diff --git a/WebSite/src/components/GithubCorner/index.vue b/WebSite/src/components/GithubCorner/index.vue deleted file mode 100644 index 22662b8029dc25658e92f132063e39d18d1d7f1e..0000000000000000000000000000000000000000 --- a/WebSite/src/components/GithubCorner/index.vue +++ /dev/null @@ -1,59 +0,0 @@ -<template> - <a - href="https://github.com/PanJiaChen/vue-element-admin" - target="_blank" - class="github-corner" - aria-label="View source on Github" - > - <svg - width="80" - height="80" - viewBox="0 0 250 250" - style="fill:#40c9c6; color:#fff;" - aria-hidden="true" - > - <path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z" /> - <path - d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" - fill="currentColor" - style="transform-origin: 130px 106px;" - class="octo-arm" - /> - <path - d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" - fill="currentColor" - class="octo-body" - /> - </svg> - </a> -</template> - -<style scoped> -.github-corner:hover .octo-arm { - animation: octocat-wave 560ms ease-in-out; -} - -@keyframes octocat-wave { - 0%, - 100% { - transform: rotate(0); - } - 20%, - 60% { - transform: rotate(-25deg); - } - 40%, - 80% { - transform: rotate(10deg); - } -} - -@media (max-width: 500px) { - .github-corner:hover .octo-arm { - animation: none; - } - .github-corner .octo-arm { - animation: octocat-wave 560ms ease-in-out; - } -} -</style> diff --git a/WebSite/src/components/HeaderSearch/index.vue b/WebSite/src/components/HeaderSearch/index.vue deleted file mode 100644 index 336e1789a9d1286942939c04afb3d29b1d4046fe..0000000000000000000000000000000000000000 --- a/WebSite/src/components/HeaderSearch/index.vue +++ /dev/null @@ -1,198 +0,0 @@ -<template> - <div :class="{ show: show }" class="header-search"> - <svg-icon - class-name="search-icon" - icon-class="search" - @click.stop="click" - /> - <el-select - ref="headerSearchSelect" - v-model="search" - :remote-method="querySearch" - filterable - default-first-option - remote - placeholder="Search" - class="header-search-select" - @change="change" - > - <el-option - v-for="item in options" - :key="item.path" - :value="item" - :label="item.title.join(' > ')" - /> - </el-select> - </div> -</template> - -<script> -// fuse is a lightweight fuzzy-search module -// make search results more in line with expectations -import Fuse from "fuse.js"; -import path from "path"; - -export default { - name: "HeaderSearch", - data() { - return { - search: "", - options: [], - searchPool: [], - show: false, - fuse: undefined - }; - }, - computed: { - routes() { - return this.$store.getters.permissionRoutes; - } - }, - watch: { - routes() { - this.searchPool = this.generateRoutes(this.routes); - }, - searchPool(list) { - this.initFuse(list); - }, - show(value) { - if (value) { - document.body.addEventListener("click", this.close); - } else { - document.body.removeEventListener("click", this.close); - } - } - }, - mounted() { - this.searchPool = this.generateRoutes(this.routes); - }, - methods: { - click() { - this.show = !this.show; - if (this.show) { - this.$refs.headerSearchSelect && this.$refs.headerSearchSelect.focus(); - } - }, - close() { - this.$refs.headerSearchSelect && this.$refs.headerSearchSelect.blur(); - this.options = []; - this.show = false; - }, - change(val) { - this.$router.push(val.path); - this.search = ""; - this.options = []; - this.$nextTick(() => { - this.show = false; - }); - }, - initFuse(list) { - this.fuse = new Fuse(list, { - shouldSort: true, - threshold: 0.4, - location: 0, - distance: 100, - maxPatternLength: 32, - minMatchCharLength: 1, - keys: [ - { - name: "title", - weight: 0.7 - }, - { - name: "path", - weight: 0.3 - } - ] - }); - }, - // Filter out the routes that can be displayed in the sidebar - // And generate the internationalized title - generateRoutes(routes, basePath = "/", prefixTitle = []) { - let res = []; - - for (const router of routes) { - // skip hidden router - if (router.hidden) { - continue; - } - - const data = { - path: path.resolve(basePath, router.path), - title: [...prefixTitle] - }; - - if (router.meta && router.meta.title) { - data.title = [...data.title, router.meta.title]; - - if (router.redirect !== "noRedirect") { - // only push the routes with title - // special case: need to exclude parent router without redirect - res.push(data); - } - } - - // recursive child routes - if (router.children) { - const tempRoutes = this.generateRoutes( - router.children, - data.path, - data.title - ); - if (tempRoutes.length >= 1) { - res = [...res, ...tempRoutes]; - } - } - } - return res; - }, - querySearch(query) { - if (query !== "") { - this.options = this.fuse.search(query); - } else { - this.options = []; - } - } - } -}; -</script> - -<style lang="scss" scoped> -.header-search { - font-size: 0 !important; - - .search-icon { - cursor: pointer; - font-size: 18px; - vertical-align: middle; - } - - .header-search-select { - font-size: 18px; - transition: width 0.2s; - width: 0; - overflow: hidden; - background: transparent; - border-radius: 0; - display: inline-block; - vertical-align: middle; - - /deep/ .el-input__inner { - border-radius: 0; - border: 0; - padding-left: 0; - padding-right: 0; - box-shadow: none !important; - border-bottom: 1px solid #d9d9d9; - vertical-align: middle; - } - } - - &.show { - .header-search-select { - width: 210px; - margin-left: 10px; - } - } -} -</style> diff --git a/WebSite/src/components/ImageCropper/index.vue b/WebSite/src/components/ImageCropper/index.vue deleted file mode 100644 index 06a60aaf45b25effe2dec864c984210f284f3a6f..0000000000000000000000000000000000000000 --- a/WebSite/src/components/ImageCropper/index.vue +++ /dev/null @@ -1,1816 +0,0 @@ -<template> - <div v-show="value" class="vue-image-crop-upload"> - <div class="vicp-wrap"> - <div class="vicp-close" @click="off"> - <i class="vicp-icon4" /> - </div> - - <div v-show="step == 1" class="vicp-step1"> - <div - class="vicp-drop-area" - @dragleave="preventDefault" - @dragover="preventDefault" - @dragenter="preventDefault" - @click="handleClick" - @drop="handleChange" - > - <i v-show="loading != 1" class="vicp-icon1"> - <i class="vicp-icon1-arrow" /> - <i class="vicp-icon1-body" /> - <i class="vicp-icon1-bottom" /> - </i> - <span v-show="loading !== 1" class="vicp-hint">{{ lang.hint }}</span> - <span v-show="!isSupported" class="vicp-no-supported-hint">{{ - lang.noSupported - }}</span> - <input - v-show="false" - v-if="step == 1" - ref="fileinput" - type="file" - @change="handleChange" - /> - </div> - <div v-show="hasError" class="vicp-error"> - <i class="vicp-icon2" /> - {{ errorMsg }} - </div> - <div class="vicp-operate"> - <a @click="off" @mousedown="ripple">{{ lang.btn.off }}</a> - </div> - </div> - - <div v-if="step == 2" class="vicp-step2"> - <div class="vicp-crop"> - <div v-show="true" class="vicp-crop-left"> - <div class="vicp-img-container"> - <img - ref="img" - :src="sourceImgUrl" - :style="sourceImgStyle" - class="vicp-img" - draggable="false" - @drag="preventDefault" - @dragstart="preventDefault" - @dragend="preventDefault" - @dragleave="preventDefault" - @dragover="preventDefault" - @dragenter="preventDefault" - @drop="preventDefault" - @touchstart="imgStartMove" - @touchmove="imgMove" - @touchend="createImg" - @touchcancel="createImg" - @mousedown="imgStartMove" - @mousemove="imgMove" - @mouseup="createImg" - @mouseout="createImg" - /> - <div - :style="sourceImgShadeStyle" - class="vicp-img-shade vicp-img-shade-1" - /> - <div - :style="sourceImgShadeStyle" - class="vicp-img-shade vicp-img-shade-2" - /> - </div> - - <div class="vicp-range"> - <input - :value="scale.range" - type="range" - step="1" - min="0" - max="100" - @input="zoomChange" - /> - <i - class="vicp-icon5" - @mousedown="startZoomSub" - @mouseout="endZoomSub" - @mouseup="endZoomSub" - /> - <i - class="vicp-icon6" - @mousedown="startZoomAdd" - @mouseout="endZoomAdd" - @mouseup="endZoomAdd" - /> - </div> - - <div v-if="!noRotate" class="vicp-rotate"> - <i - @mousedown="startRotateLeft" - @mouseout="endRotate" - @mouseup="endRotate" - >鈫�</i - > - <i - @mousedown="startRotateRight" - @mouseout="endRotate" - @mouseup="endRotate" - >鈫�</i - > - </div> - </div> - <div v-show="true" class="vicp-crop-right"> - <div class="vicp-preview"> - <div v-if="!noSquare" class="vicp-preview-item"> - <img :src="createImgUrl" :style="previewStyle" /> - <span>{{ lang.preview }}</span> - </div> - <div - v-if="!noCircle" - class="vicp-preview-item vicp-preview-item-circle" - > - <img :src="createImgUrl" :style="previewStyle" /> - <span>{{ lang.preview }}</span> - </div> - </div> - </div> - </div> - <div class="vicp-operate"> - <a @click="setStep(1)" @mousedown="ripple">{{ lang.btn.back }}</a> - <a - class="vicp-operate-btn" - @click="prepareUpload" - @mousedown="ripple" - >{{ lang.btn.save }}</a - > - </div> - </div> - - <div v-if="step == 3" class="vicp-step3"> - <div class="vicp-upload"> - <span v-show="loading === 1" class="vicp-loading">{{ - lang.loading - }}</span> - <div class="vicp-progress-wrap"> - <span - v-show="loading === 1" - :style="progressStyle" - class="vicp-progress" - /> - </div> - <div v-show="hasError" class="vicp-error"> - <i class="vicp-icon2" /> - {{ errorMsg }} - </div> - <div v-show="loading === 2" class="vicp-success"> - <i class="vicp-icon3" /> - {{ lang.success }} - </div> - </div> - <div class="vicp-operate"> - <a @click="setStep(2)" @mousedown="ripple">{{ lang.btn.back }}</a> - <a @click="off" @mousedown="ripple">{{ lang.btn.close }}</a> - </div> - </div> - <canvas v-show="false" ref="canvas" :width="width" :height="height" /> - </div> - </div> -</template> - -<script> -"use strict"; -import request from "@/utils/request"; -import language from "./utils/language.js"; -import mimes from "./utils/mimes.js"; -import data2blob from "./utils/data2blob.js"; -import effectRipple from "./utils/effectRipple.js"; -export default { - props: { - // 鍩燂紝涓婁紶鏂囦欢name锛岃Е鍙戜簨浠朵細甯︿笂锛堝鏋滀竴涓〉闈㈠涓浘鐗囦笂浼犳帶浠讹紝鍙互鍋氬尯鍒� - field: { - type: String, - default: "avatar" - }, - // 鍘熷悕key锛岀被浼间簬id锛岃Е鍙戜簨浠朵細甯︿笂锛堝鏋滀竴涓〉闈㈠涓浘鐗囦笂浼犳帶浠讹紝鍙互鍋氬尯鍒� - ki: { - type: Number, - default: 0 - }, - // 鏄剧ず璇ユ帶浠朵笌鍚� - value: { - type: Boolean, - default: true - }, - // 涓婁紶鍦板潃 - url: { - type: String, - default: "" - }, - // 鍏朵粬瑕佷笂浼犳枃浠堕檮甯︾殑鏁版嵁锛屽璞℃牸寮� - params: { - type: Object, - default: null - }, - // Add custom headers - headers: { - type: Object, - default: null - }, - // 鍓鍥剧墖鐨勫 - width: { - type: Number, - default: 200 - }, - // 鍓鍥剧墖鐨勯珮 - height: { - type: Number, - default: 200 - }, - // 涓嶆樉绀烘棆杞姛鑳� - noRotate: { - type: Boolean, - default: true - }, - // 涓嶉瑙堝渾褰㈠浘鐗� - noCircle: { - type: Boolean, - default: false - }, - // 涓嶉瑙堟柟褰㈠浘鐗� - noSquare: { - type: Boolean, - default: false - }, - // 鍗曟枃浠跺ぇ灏忛檺鍒� - maxSize: { - type: Number, - default: 10240 - }, - // 璇█绫诲瀷 - langType: { - type: String, - default: "zh" - }, - // 璇█鍖� - langExt: { - type: Object, - default: null - }, - // 鍥剧墖涓婁紶鏍煎紡 - imgFormat: { - type: String, - default: "png" - }, - // 鏄惁鏀寔璺ㄥ煙 - withCredentials: { - type: Boolean, - default: false - } - }, - data() { - const { imgFormat, langType, langExt, width, height } = this; - let isSupported = true; - const allowImgFormat = ["jpg", "png"]; - const tempImgFormat = - allowImgFormat.indexOf(imgFormat) === -1 ? "jpg" : imgFormat; - const lang = language[langType] ? language[langType] : language["en"]; - const mime = mimes[tempImgFormat]; - // 瑙勮寖鍥剧墖鏍煎紡 - this.imgFormat = tempImgFormat; - if (langExt) { - Object.assign(lang, langExt); - } - if (typeof FormData !== "function") { - isSupported = false; - } - return { - // 鍥剧墖鐨刴ime - mime, - // 璇█鍖� - lang, - // 娴忚鍣ㄦ槸鍚︽敮鎸佽鎺т欢 - isSupported, - // 娴忚鍣ㄦ槸鍚︽敮鎸佽Е灞忎簨浠� - isSupportTouch: document.hasOwnProperty("ontouchstart"), - // 姝ラ - step: 1, // 1閫夋嫨鏂囦欢 2鍓 3涓婁紶 - // 涓婁紶鐘舵€佸強杩涘害 - loading: 0, // 0鏈紑濮� 1姝e湪 2鎴愬姛 3閿欒 - progress: 0, - // 鏄惁鏈夐敊璇強閿欒淇℃伅 - hasError: false, - errorMsg: "", - // 闇€姹傚浘瀹介珮姣� - ratio: width / height, - // 鍘熷浘鍦板潃銆佺敓鎴愬浘鐗囧湴鍧€ - sourceImg: null, - sourceImgUrl: "", - createImgUrl: "", - // 鍘熷浘鐗囨嫋鍔ㄤ簨浠跺垵濮嬪€� - sourceImgMouseDown: { - on: false, - mX: 0, // 榧犳爣鎸変笅鐨勫潗鏍� - mY: 0, - x: 0, // scale鍘熷浘鍧愭爣 - y: 0 - }, - // 鐢熸垚鍥剧墖棰勮鐨勫鍣ㄥぇ灏� - previewContainer: { - width: 100, - height: 100 - }, - // 鍘熷浘瀹瑰櫒瀹介珮 - sourceImgContainer: { - // sic - width: 240, - height: 184 // 濡傛灉鐢熸垚鍥炬瘮渚嬩笌姝や竴鑷翠細鍑虹幇bug锛屽厛鏀规垚鐗规畩鐨勬牸寮忓惂锛屽搱鍝堝搱 - }, - // 鍘熷浘灞曠ず灞炴€� - scale: { - zoomAddOn: false, // 鎸夐挳缂╂斁浜嬩欢寮€鍚� - zoomSubOn: false, // 鎸夐挳缂╂斁浜嬩欢寮€鍚� - range: 1, // 鏈€澶�100 - rotateLeft: false, // 鎸夐挳鍚戝乏鏃嬭浆浜嬩欢寮€鍚� - rotateRight: false, // 鎸夐挳鍚戝彸鏃嬭浆浜嬩欢寮€鍚� - degree: 0, // 鏃嬭浆搴︽暟 - x: 0, - y: 0, - width: 0, - height: 0, - maxWidth: 0, - maxHeight: 0, - minWidth: 0, // 鏈€瀹� - minHeight: 0, - naturalWidth: 0, // 鍘熷 - naturalHeight: 0 - } - }; - }, - computed: { - // 杩涘害鏉℃牱寮� - progressStyle() { - const { progress } = this; - return { - width: progress + "%" - }; - }, - // 鍘熷浘鏍峰紡 - sourceImgStyle() { - const { scale, sourceImgMasking } = this; - const top = scale.y + sourceImgMasking.y + "px"; - const left = scale.x + sourceImgMasking.x + "px"; - return { - top, - left, - width: scale.width + "px", - height: scale.height + "px", - transform: "rotate(" + scale.degree + "deg)", // 鏃嬭浆鏃� 宸︿晶鍘熷鍥炬棆杞牱寮� - "-ms-transform": "rotate(" + scale.degree + "deg)", // 鍏煎IE9 - "-moz-transform": "rotate(" + scale.degree + "deg)", // 鍏煎FireFox - "-webkit-transform": "rotate(" + scale.degree + "deg)", // 鍏煎Safari 鍜� chrome - "-o-transform": "rotate(" + scale.degree + "deg)" // 鍏煎 Opera - }; - }, - // 鍘熷浘钂欑増灞炴€� - sourceImgMasking() { - const { width, height, ratio, sourceImgContainer } = this; - const sic = sourceImgContainer; - const sicRatio = sic.width / sic.height; // 鍘熷浘瀹瑰櫒瀹介珮姣� - let x = 0; - let y = 0; - let w = sic.width; - let h = sic.height; - let scale = 1; - if (ratio < sicRatio) { - scale = sic.height / height; - w = sic.height * ratio; - x = (sic.width - w) / 2; - } - if (ratio > sicRatio) { - scale = sic.width / width; - h = sic.width / ratio; - y = (sic.height - h) / 2; - } - return { - scale, // 钂欑増鐩稿闇€姹傚楂樼殑缂╂斁 - x, - y, - width: w, - height: h - }; - }, - // 鍘熷浘閬僵鏍峰紡 - sourceImgShadeStyle() { - const { sourceImgMasking, sourceImgContainer } = this; - const sic = sourceImgContainer; - const sim = sourceImgMasking; - const w = - sim.width === sic.width ? sim.width : (sic.width - sim.width) / 2; - const h = - sim.height === sic.height ? sim.height : (sic.height - sim.height) / 2; - return { - width: w + "px", - height: h + "px" - }; - }, - previewStyle() { - const { ratio, previewContainer } = this; - const pc = previewContainer; - let w = pc.width; - let h = pc.height; - const pcRatio = w / h; - if (ratio < pcRatio) { - w = pc.height * ratio; - } - if (ratio > pcRatio) { - h = pc.width / ratio; - } - return { - width: w + "px", - height: h + "px" - }; - } - }, - watch: { - value(newValue) { - if (newValue && this.loading !== 1) { - this.reset(); - } - } - }, - created() { - // 缁戝畾鎸夐敭esc闅愯棌姝ゆ彃浠朵簨浠� - document.addEventListener("keyup", this.closeHandler); - }, - destroyed() { - document.removeEventListener("keyup", this.closeHandler); - }, - methods: { - // 鐐瑰嚮娉㈢汗鏁堟灉 - ripple(e) { - effectRipple(e); - }, - // 鍏抽棴鎺т欢 - off() { - setTimeout(() => { - this.$emit("input", false); - this.$emit("close"); - if (this.step === 3 && this.loading === 2) { - this.setStep(1); - } - }, 200); - }, - // 璁剧疆姝ラ - setStep(no) { - // 寤舵椂鏄负浜嗘樉绀哄姩鐢绘晥鏋滃憿锛屽搱鍝堝搱 - setTimeout(() => { - this.step = no; - }, 200); - }, - /* 鍥剧墖閫夋嫨鍖哄煙鍑芥暟缁戝畾 - ---------------------------------------------------------------*/ - preventDefault(e) { - e.preventDefault(); - return false; - }, - handleClick(e) { - if (this.loading !== 1) { - if (e.target !== this.$refs.fileinput) { - e.preventDefault(); - if (document.activeElement !== this.$refs) { - this.$refs.fileinput.click(); - } - } - } - }, - handleChange(e) { - e.preventDefault(); - if (this.loading !== 1) { - const files = e.target.files || e.dataTransfer.files; - this.reset(); - if (this.checkFile(files[0])) { - this.setSourceImg(files[0]); - } - } - }, - /* ---------------------------------------------------------------*/ - // 妫€娴嬮€夋嫨鐨勬枃浠舵槸鍚﹀悎閫� - checkFile(file) { - const { lang, maxSize } = this; - // 浠呴檺鍥剧墖 - if (file.type.indexOf("image") === -1) { - this.hasError = true; - this.errorMsg = lang.error.onlyImg; - return false; - } - // 瓒呭嚭澶у皬 - if (file.size / 1024 > maxSize) { - this.hasError = true; - this.errorMsg = lang.error.outOfSize + maxSize + "kb"; - return false; - } - return true; - }, - // 閲嶇疆鎺т欢 - reset() { - this.loading = 0; - this.hasError = false; - this.errorMsg = ""; - this.progress = 0; - }, - // 璁剧疆鍥剧墖婧� - setSourceImg(file) { - const fr = new FileReader(); - fr.onload = e => { - this.sourceImgUrl = fr.result; - this.startCrop(); - }; - fr.readAsDataURL(file); - }, - // 鍓鍓嶅噯澶囧伐浣� - startCrop() { - const { - width, - height, - ratio, - scale, - sourceImgUrl, - sourceImgMasking, - lang - } = this; - const sim = sourceImgMasking; - const img = new Image(); - img.src = sourceImgUrl; - img.onload = () => { - const nWidth = img.naturalWidth; - const nHeight = img.naturalHeight; - const nRatio = nWidth / nHeight; - let w = sim.width; - let h = sim.height; - let x = 0; - let y = 0; - // 鍥剧墖鍍忕礌涓嶈揪鏍� - if (nWidth < width || nHeight < height) { - this.hasError = true; - this.errorMsg = lang.error.lowestPx + width + "*" + height; - return false; - } - if (ratio > nRatio) { - h = w / nRatio; - y = (sim.height - h) / 2; - } - if (ratio < nRatio) { - w = h * nRatio; - x = (sim.width - w) / 2; - } - scale.range = 0; - scale.x = x; - scale.y = y; - scale.width = w; - scale.height = h; - scale.degree = 0; - scale.minWidth = w; - scale.minHeight = h; - scale.maxWidth = nWidth * sim.scale; - scale.maxHeight = nHeight * sim.scale; - scale.naturalWidth = nWidth; - scale.naturalHeight = nHeight; - this.sourceImg = img; - this.createImg(); - this.setStep(2); - }; - }, - // 榧犳爣鎸変笅鍥剧墖鍑嗗绉诲姩 - imgStartMove(e) { - e.preventDefault(); - // 鏀寔瑙︽懜浜嬩欢锛屽垯榧犳爣浜嬩欢鏃犳晥 - if (this.isSupportTouch && !e.targetTouches) { - return false; - } - const et = e.targetTouches ? e.targetTouches[0] : e; - const { sourceImgMouseDown, scale } = this; - const simd = sourceImgMouseDown; - simd.mX = et.screenX; - simd.mY = et.screenY; - simd.x = scale.x; - simd.y = scale.y; - simd.on = true; - }, - // 榧犳爣鎸変笅鐘舵€佷笅绉诲姩锛屽浘鐗囩Щ鍔� - imgMove(e) { - e.preventDefault(); - // 鏀寔瑙︽懜浜嬩欢锛屽垯榧犳爣浜嬩欢鏃犳晥 - if (this.isSupportTouch && !e.targetTouches) { - return false; - } - const et = e.targetTouches ? e.targetTouches[0] : e; - const { - sourceImgMouseDown: { on, mX, mY, x, y }, - scale, - sourceImgMasking - } = this; - const sim = sourceImgMasking; - const nX = et.screenX; - const nY = et.screenY; - const dX = nX - mX; - const dY = nY - mY; - let rX = x + dX; - let rY = y + dY; - if (!on) return; - if (rX > 0) { - rX = 0; - } - if (rY > 0) { - rY = 0; - } - if (rX < sim.width - scale.width) { - rX = sim.width - scale.width; - } - if (rY < sim.height - scale.height) { - rY = sim.height - scale.height; - } - scale.x = rX; - scale.y = rY; - }, - // 鎸夐挳鎸変笅寮€濮嬪悜鍙虫棆杞� - startRotateRight(e) { - const { scale } = this; - scale.rotateRight = true; - const rotate = () => { - if (scale.rotateRight) { - const degree = ++scale.degree; - this.createImg(degree); - setTimeout(function() { - rotate(); - }, 60); - } - }; - rotate(); - }, - // 鎸夐挳鎸変笅寮€濮嬪悜宸︽棆杞� - startRotateLeft(e) { - const { scale } = this; - scale.rotateLeft = true; - const rotate = () => { - if (scale.rotateLeft) { - const degree = --scale.degree; - this.createImg(degree); - setTimeout(function() { - rotate(); - }, 60); - } - }; - rotate(); - }, - // 鍋滄鏃嬭浆 - endRotate() { - const { scale } = this; - scale.rotateLeft = false; - scale.rotateRight = false; - }, - // 鎸夐挳鎸変笅寮€濮嬫斁澶� - startZoomAdd(e) { - const { scale } = this; - scale.zoomAddOn = true; - const zoom = () => { - if (scale.zoomAddOn) { - const range = scale.range >= 100 ? 100 : ++scale.range; - this.zoomImg(range); - setTimeout(function() { - zoom(); - }, 60); - } - }; - zoom(); - }, - // 鎸夐挳鏉惧紑鎴栫Щ寮€鍙栨秷鏀惧ぇ - endZoomAdd(e) { - this.scale.zoomAddOn = false; - }, - // 鎸夐挳鎸変笅寮€濮嬬缉灏� - startZoomSub(e) { - const { scale } = this; - scale.zoomSubOn = true; - const zoom = () => { - if (scale.zoomSubOn) { - const range = scale.range <= 0 ? 0 : --scale.range; - this.zoomImg(range); - setTimeout(function() { - zoom(); - }, 60); - } - }; - zoom(); - }, - // 鎸夐挳鏉惧紑鎴栫Щ寮€鍙栨秷缂╁皬 - endZoomSub(e) { - const { scale } = this; - scale.zoomSubOn = false; - }, - zoomChange(e) { - this.zoomImg(e.target.value); - }, - // 缂╂斁鍘熷浘 - zoomImg(newRange) { - const { sourceImgMasking, scale } = this; - const { - maxWidth, - maxHeight, - minWidth, - minHeight, - width, - height, - x, - y - } = scale; - const sim = sourceImgMasking; - // 钂欑増瀹介珮 - const sWidth = sim.width; - const sHeight = sim.height; - // 鏂板楂� - const nWidth = minWidth + ((maxWidth - minWidth) * newRange) / 100; - const nHeight = minHeight + ((maxHeight - minHeight) * newRange) / 100; - // 鏂板潗鏍囷紙鏍规嵁钂欑増涓績鐐圭缉鏀撅級 - let nX = sWidth / 2 - (nWidth / width) * (sWidth / 2 - x); - let nY = sHeight / 2 - (nHeight / height) * (sHeight / 2 - y); - // 鍒ゆ柇鏂板潗鏍囨槸鍚﹁秴杩囪挋鐗堥檺鍒� - if (nX > 0) { - nX = 0; - } - if (nY > 0) { - nY = 0; - } - if (nX < sWidth - nWidth) { - nX = sWidth - nWidth; - } - if (nY < sHeight - nHeight) { - nY = sHeight - nHeight; - } - // 璧嬪€煎鐞� - scale.x = nX; - scale.y = nY; - scale.width = nWidth; - scale.height = nHeight; - scale.range = newRange; - setTimeout(() => { - if (scale.range === newRange) { - this.createImg(); - } - }, 300); - }, - // 鐢熸垚闇€姹傚浘鐗� - createImg(e) { - const { - mime, - sourceImg, - scale: { x, y, width, height, degree }, - sourceImgMasking: { scale } - } = this; - const canvas = this.$refs.canvas; - const ctx = canvas.getContext("2d"); - if (e) { - // 鍙栨秷榧犳爣鎸変笅绉诲姩鐘舵€� - this.sourceImgMouseDown.on = false; - } - canvas.width = this.width; - canvas.height = this.height; - ctx.clearRect(0, 0, this.width, this.height); - // 灏嗛€忔槑鍖哄煙璁剧疆涓虹櫧鑹插簳杈� - ctx.fillStyle = "#fff"; - ctx.fillRect(0, 0, this.width, this.height); - ctx.translate(this.width * 0.5, this.height * 0.5); - ctx.rotate((Math.PI * degree) / 180); - ctx.translate(-this.width * 0.5, -this.height * 0.5); - ctx.drawImage( - sourceImg, - x / scale, - y / scale, - width / scale, - height / scale - ); - this.createImgUrl = canvas.toDataURL(mime); - }, - prepareUpload() { - const { url, createImgUrl, field, ki } = this; - this.$emit("crop-success", createImgUrl, field, ki); - if (typeof url === "string" && url) { - this.upload(); - } else { - this.off(); - } - }, - // 涓婁紶鍥剧墖 - upload() { - const { - lang, - imgFormat, - mime, - url, - params, - field, - ki, - createImgUrl - } = this; - const fmData = new FormData(); - fmData.append( - field, - data2blob(createImgUrl, mime), - field + "." + imgFormat - ); - // 娣诲姞鍏朵粬鍙傛暟 - if (typeof params === "object" && params) { - Object.keys(params).forEach(k => { - fmData.append(k, params[k]); - }); - } - // 鐩戝惉杩涘害鍥炶皟 - // const uploadProgress = (event) => { - // if (event.lengthComputable) { - // this.progress = 100 * Math.round(event.loaded) / event.total - // } - // } - // 涓婁紶鏂囦欢 - this.reset(); - this.loading = 1; - this.setStep(3); - request({ - url, - method: "post", - data: fmData - }) - .then(resData => { - this.loading = 2; - this.$emit("crop-upload-success", resData.data); - }) - .catch(err => { - if (this.value) { - this.loading = 3; - this.hasError = true; - this.errorMsg = lang.fail; - this.$emit("crop-upload-fail", err, field, ki); - } - }); - }, - closeHandler(e) { - if (this.value && (e.key === "Escape" || e.keyCode === 27)) { - this.off(); - } - } - } -}; -</script> - -<style lang="scss"> -@charset "UTF-8"; -@-webkit-keyframes vicp_progress { - 0% { - background-position-y: 0; - } - 100% { - background-position-y: 40px; - } -} -@keyframes vicp_progress { - 0% { - background-position-y: 0; - } - 100% { - background-position-y: 40px; - } -} -@-webkit-keyframes vicp { - 0% { - opacity: 0; - -webkit-transform: scale(0) translatey(-60px); - transform: scale(0) translatey(-60px); - } - 100% { - opacity: 1; - -webkit-transform: scale(1) translatey(0); - transform: scale(1) translatey(0); - } -} -@keyframes vicp { - 0% { - opacity: 0; - -webkit-transform: scale(0) translatey(-60px); - transform: scale(0) translatey(-60px); - } - 100% { - opacity: 1; - -webkit-transform: scale(1) translatey(0); - transform: scale(1) translatey(0); - } -} -.vue-image-crop-upload { - position: fixed; - display: block; - -webkit-box-sizing: border-box; - box-sizing: border-box; - z-index: 10000; - top: 0; - bottom: 0; - left: 0; - right: 0; - width: 100%; - height: 100%; - background-color: rgba(0, 0, 0, 0.65); - -webkit-tap-highlight-color: transparent; - -moz-tap-highlight-color: transparent; -} -.vue-image-crop-upload .vicp-wrap { - -webkit-box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.23); - box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.23); - position: fixed; - display: block; - -webkit-box-sizing: border-box; - box-sizing: border-box; - z-index: 10000; - top: 0; - bottom: 0; - left: 0; - right: 0; - margin: auto; - width: 600px; - height: 330px; - padding: 25px; - background-color: #fff; - border-radius: 2px; - -webkit-animation: vicp 0.12s ease-in; - animation: vicp 0.12s ease-in; -} -.vue-image-crop-upload .vicp-wrap .vicp-close { - position: absolute; - right: -30px; - top: -30px; -} -.vue-image-crop-upload .vicp-wrap .vicp-close .vicp-icon4 { - position: relative; - display: block; - width: 30px; - height: 30px; - cursor: pointer; - -webkit-transition: -webkit-transform 0.18s; - transition: -webkit-transform 0.18s; - transition: transform 0.18s; - transition: transform 0.18s, -webkit-transform 0.18s; - -webkit-transform: rotate(0); - -ms-transform: rotate(0); - transform: rotate(0); -} -.vue-image-crop-upload .vicp-wrap .vicp-close .vicp-icon4::after, -.vue-image-crop-upload .vicp-wrap .vicp-close .vicp-icon4::before { - -webkit-box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.23); - box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.23); - content: ""; - position: absolute; - top: 12px; - left: 4px; - width: 20px; - height: 3px; - -webkit-transform: rotate(45deg); - -ms-transform: rotate(45deg); - transform: rotate(45deg); - background-color: #fff; -} -.vue-image-crop-upload .vicp-wrap .vicp-close .vicp-icon4::after { - -webkit-transform: rotate(-45deg); - -ms-transform: rotate(-45deg); - transform: rotate(-45deg); -} -.vue-image-crop-upload .vicp-wrap .vicp-close .vicp-icon4:hover { - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg); -} -.vue-image-crop-upload .vicp-wrap .vicp-step1 .vicp-drop-area { - position: relative; - -webkit-box-sizing: border-box; - box-sizing: border-box; - padding: 35px; - height: 170px; - background-color: rgba(0, 0, 0, 0.03); - text-align: center; - border: 1px dashed rgba(0, 0, 0, 0.08); - overflow: hidden; -} -.vue-image-crop-upload .vicp-wrap .vicp-step1 .vicp-drop-area .vicp-icon1 { - display: block; - margin: 0 auto 6px; - width: 42px; - height: 42px; - overflow: hidden; -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step1 - .vicp-drop-area - .vicp-icon1 - .vicp-icon1-arrow { - display: block; - margin: 0 auto; - width: 0; - height: 0; - border-bottom: 14.7px solid rgba(0, 0, 0, 0.3); - border-left: 14.7px solid transparent; - border-right: 14.7px solid transparent; -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step1 - .vicp-drop-area - .vicp-icon1 - .vicp-icon1-body { - display: block; - width: 12.6px; - height: 14.7px; - margin: 0 auto; - background-color: rgba(0, 0, 0, 0.3); -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step1 - .vicp-drop-area - .vicp-icon1 - .vicp-icon1-bottom { - -webkit-box-sizing: border-box; - box-sizing: border-box; - display: block; - height: 12.6px; - border: 6px solid rgba(0, 0, 0, 0.3); - border-top: none; -} -.vue-image-crop-upload .vicp-wrap .vicp-step1 .vicp-drop-area .vicp-hint { - display: block; - padding: 15px; - font-size: 14px; - color: #666; - line-height: 30px; -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step1 - .vicp-drop-area - .vicp-no-supported-hint { - display: block; - position: absolute; - top: 0; - left: 0; - padding: 30px; - width: 100%; - height: 60px; - line-height: 30px; - background-color: #eee; - text-align: center; - color: #666; - font-size: 14px; -} -.vue-image-crop-upload .vicp-wrap .vicp-step1 .vicp-drop-area:hover { - cursor: pointer; - border-color: rgba(0, 0, 0, 0.1); - background-color: rgba(0, 0, 0, 0.05); -} -.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop { - overflow: hidden; -} -.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-left { - float: left; -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-left - .vicp-img-container { - position: relative; - display: block; - width: 240px; - height: 180px; - background-color: #e5e5e0; - overflow: hidden; -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-left - .vicp-img-container - .vicp-img { - position: absolute; - display: block; - cursor: move; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-left - .vicp-img-container - .vicp-img-shade { - -webkit-box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.18); - box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.18); - position: absolute; - background-color: rgba(241, 242, 243, 0.8); -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-left - .vicp-img-container - .vicp-img-shade.vicp-img-shade-1 { - top: 0; - left: 0; -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-left - .vicp-img-container - .vicp-img-shade.vicp-img-shade-2 { - bottom: 0; - right: 0; -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-left - .vicp-rotate { - position: relative; - width: 240px; - height: 18px; -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-left - .vicp-rotate - i { - display: block; - width: 18px; - height: 18px; - border-radius: 100%; - line-height: 18px; - text-align: center; - font-size: 12px; - font-weight: bold; - background-color: rgba(0, 0, 0, 0.08); - color: #fff; - overflow: hidden; -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-left - .vicp-rotate - i:hover { - -webkit-box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.12); - box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.12); - cursor: pointer; - background-color: rgba(0, 0, 0, 0.14); -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-left - .vicp-rotate - i:first-child { - float: left; -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-left - .vicp-rotate - i:last-child { - float: right; -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-left - .vicp-range { - position: relative; - margin: 30px 0 10px 0; - width: 240px; - height: 18px; -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-left - .vicp-range - .vicp-icon5, -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-left - .vicp-range - .vicp-icon6 { - position: absolute; - top: 0; - width: 18px; - height: 18px; - border-radius: 100%; - background-color: rgba(0, 0, 0, 0.08); -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-left - .vicp-range - .vicp-icon5:hover, -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-left - .vicp-range - .vicp-icon6:hover { - -webkit-box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.12); - box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.12); - cursor: pointer; - background-color: rgba(0, 0, 0, 0.14); -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-left - .vicp-range - .vicp-icon5 { - left: 0; -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-left - .vicp-range - .vicp-icon5::before { - position: absolute; - content: ""; - display: block; - left: 3px; - top: 8px; - width: 12px; - height: 2px; - background-color: #fff; -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-left - .vicp-range - .vicp-icon6 { - right: 0; -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-left - .vicp-range - .vicp-icon6::before { - position: absolute; - content: ""; - display: block; - left: 3px; - top: 8px; - width: 12px; - height: 2px; - background-color: #fff; -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-left - .vicp-range - .vicp-icon6::after { - position: absolute; - content: ""; - display: block; - top: 3px; - left: 8px; - width: 2px; - height: 12px; - background-color: #fff; -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-left - .vicp-range - input[type="range"] { - display: block; - padding-top: 5px; - margin: 0 auto; - width: 180px; - height: 8px; - vertical-align: top; - background: transparent; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - cursor: pointer; - /* 婊戝潡 - ---------------------------------------------------------------*/ - /* 杞ㄩ亾 - ---------------------------------------------------------------*/ -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-left - .vicp-range - input[type="range"]:focus { - outline: none; -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-left - .vicp-range - input[type="range"]::-webkit-slider-thumb { - -webkit-box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.18); - box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.18); - -webkit-appearance: none; - appearance: none; - margin-top: -3px; - width: 12px; - height: 12px; - background-color: #61c091; - border-radius: 100%; - border: none; - -webkit-transition: 0.2s; - transition: 0.2s; -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-left - .vicp-range - input[type="range"]::-moz-range-thumb { - box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.18); - -moz-appearance: none; - appearance: none; - width: 12px; - height: 12px; - background-color: #61c091; - border-radius: 100%; - border: none; - -webkit-transition: 0.2s; - transition: 0.2s; -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-left - .vicp-range - input[type="range"]::-ms-thumb { - box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.18); - appearance: none; - width: 12px; - height: 12px; - background-color: #61c091; - border: none; - border-radius: 100%; - -webkit-transition: 0.2s; - transition: 0.2s; -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-left - .vicp-range - input[type="range"]:active::-moz-range-thumb { - box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.23); - width: 14px; - height: 14px; -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-left - .vicp-range - input[type="range"]:active::-ms-thumb { - box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.23); - width: 14px; - height: 14px; -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-left - .vicp-range - input[type="range"]:active::-webkit-slider-thumb { - -webkit-box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.23); - box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.23); - margin-top: -4px; - width: 14px; - height: 14px; -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-left - .vicp-range - input[type="range"]::-webkit-slider-runnable-track { - -webkit-box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.12); - box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.12); - width: 100%; - height: 6px; - cursor: pointer; - border-radius: 2px; - border: none; - background-color: rgba(68, 170, 119, 0.3); -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-left - .vicp-range - input[type="range"]::-moz-range-track { - box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.12); - width: 100%; - height: 6px; - cursor: pointer; - border-radius: 2px; - border: none; - background-color: rgba(68, 170, 119, 0.3); -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-left - .vicp-range - input[type="range"]::-ms-track { - box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.12); - width: 100%; - cursor: pointer; - background: transparent; - border-color: transparent; - color: transparent; - height: 6px; - border-radius: 2px; - border: none; -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-left - .vicp-range - input[type="range"]::-ms-fill-lower { - background-color: rgba(68, 170, 119, 0.3); -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-left - .vicp-range - input[type="range"]::-ms-fill-upper { - background-color: rgba(68, 170, 119, 0.15); -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-left - .vicp-range - input[type="range"]:focus::-webkit-slider-runnable-track { - background-color: rgba(68, 170, 119, 0.5); -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-left - .vicp-range - input[type="range"]:focus::-moz-range-track { - background-color: rgba(68, 170, 119, 0.5); -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-left - .vicp-range - input[type="range"]:focus::-ms-fill-lower { - background-color: rgba(68, 170, 119, 0.45); -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-left - .vicp-range - input[type="range"]:focus::-ms-fill-upper { - background-color: rgba(68, 170, 119, 0.25); -} -.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-right { - float: right; -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-right - .vicp-preview { - height: 150px; - overflow: hidden; -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-right - .vicp-preview - .vicp-preview-item { - position: relative; - padding: 5px; - width: 100px; - height: 100px; - float: left; - margin-right: 16px; -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-right - .vicp-preview - .vicp-preview-item - span { - position: absolute; - bottom: -30px; - width: 100%; - font-size: 14px; - color: #bbb; - display: block; - text-align: center; -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-right - .vicp-preview - .vicp-preview-item - img { - position: absolute; - display: block; - top: 0; - bottom: 0; - left: 0; - right: 0; - margin: auto; - padding: 3px; - background-color: #fff; - border: 1px solid rgba(0, 0, 0, 0.15); - overflow: hidden; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-right - .vicp-preview - .vicp-preview-item.vicp-preview-item-circle { - margin-right: 0; -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step2 - .vicp-crop - .vicp-crop-right - .vicp-preview - .vicp-preview-item.vicp-preview-item-circle - img { - border-radius: 100%; -} -.vue-image-crop-upload .vicp-wrap .vicp-step3 .vicp-upload { - position: relative; - -webkit-box-sizing: border-box; - box-sizing: border-box; - padding: 35px; - height: 170px; - background-color: rgba(0, 0, 0, 0.03); - text-align: center; - border: 1px dashed #ddd; -} -.vue-image-crop-upload .vicp-wrap .vicp-step3 .vicp-upload .vicp-loading { - display: block; - padding: 15px; - font-size: 16px; - color: #999; - line-height: 30px; -} -.vue-image-crop-upload .vicp-wrap .vicp-step3 .vicp-upload .vicp-progress-wrap { - margin-top: 12px; - background-color: rgba(0, 0, 0, 0.08); - border-radius: 3px; -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step3 - .vicp-upload - .vicp-progress-wrap - .vicp-progress { - position: relative; - display: block; - height: 5px; - border-radius: 3px; - background-color: #4a7; - -webkit-box-shadow: 0 2px 6px 0 rgba(68, 170, 119, 0.3); - box-shadow: 0 2px 6px 0 rgba(68, 170, 119, 0.3); - -webkit-transition: width 0.15s linear; - transition: width 0.15s linear; - background-image: -webkit-linear-gradient( - 135deg, - rgba(255, 255, 255, 0.2) 25%, - transparent 25%, - transparent 50%, - rgba(255, 255, 255, 0.2) 50%, - rgba(255, 255, 255, 0.2) 75%, - transparent 75%, - transparent - ); - background-image: linear-gradient( - -45deg, - rgba(255, 255, 255, 0.2) 25%, - transparent 25%, - transparent 50%, - rgba(255, 255, 255, 0.2) 50%, - rgba(255, 255, 255, 0.2) 75%, - transparent 75%, - transparent - ); - background-size: 40px 40px; - -webkit-animation: vicp_progress 0.5s linear infinite; - animation: vicp_progress 0.5s linear infinite; -} -.vue-image-crop-upload - .vicp-wrap - .vicp-step3 - .vicp-upload - .vicp-progress-wrap - .vicp-progress::after { - content: ""; - position: absolute; - display: block; - top: -3px; - right: -3px; - width: 9px; - height: 9px; - border: 1px solid rgba(245, 246, 247, 0.7); - -webkit-box-shadow: 0 1px 4px 0 rgba(68, 170, 119, 0.7); - box-shadow: 0 1px 4px 0 rgba(68, 170, 119, 0.7); - border-radius: 100%; - background-color: #4a7; -} -.vue-image-crop-upload .vicp-wrap .vicp-step3 .vicp-upload .vicp-error, -.vue-image-crop-upload .vicp-wrap .vicp-step3 .vicp-upload .vicp-success { - height: 100px; - line-height: 100px; -} -.vue-image-crop-upload .vicp-wrap .vicp-operate { - position: absolute; - right: 20px; - bottom: 20px; -} -.vue-image-crop-upload .vicp-wrap .vicp-operate a { - position: relative; - float: left; - display: block; - margin-left: 10px; - width: 100px; - height: 36px; - line-height: 36px; - text-align: center; - cursor: pointer; - font-size: 14px; - color: #4a7; - border-radius: 2px; - overflow: hidden; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.vue-image-crop-upload .vicp-wrap .vicp-operate a:hover { - background-color: rgba(0, 0, 0, 0.03); -} -.vue-image-crop-upload .vicp-wrap .vicp-error, -.vue-image-crop-upload .vicp-wrap .vicp-success { - display: block; - font-size: 14px; - line-height: 24px; - height: 24px; - color: #d10; - text-align: center; - vertical-align: top; -} -.vue-image-crop-upload .vicp-wrap .vicp-success { - color: #4a7; -} -.vue-image-crop-upload .vicp-wrap .vicp-icon3 { - position: relative; - display: inline-block; - width: 20px; - height: 20px; - top: 4px; -} -.vue-image-crop-upload .vicp-wrap .vicp-icon3::after { - position: absolute; - top: 3px; - left: 6px; - width: 6px; - height: 10px; - border-width: 0 2px 2px 0; - border-color: #4a7; - border-style: solid; - -webkit-transform: rotate(45deg); - -ms-transform: rotate(45deg); - transform: rotate(45deg); - content: ""; -} -.vue-image-crop-upload .vicp-wrap .vicp-icon2 { - position: relative; - display: inline-block; - width: 20px; - height: 20px; - top: 4px; -} -.vue-image-crop-upload .vicp-wrap .vicp-icon2::after, -.vue-image-crop-upload .vicp-wrap .vicp-icon2::before { - content: ""; - position: absolute; - top: 9px; - left: 4px; - width: 13px; - height: 2px; - background-color: #d10; - -webkit-transform: rotate(45deg); - -ms-transform: rotate(45deg); - transform: rotate(45deg); -} -.vue-image-crop-upload .vicp-wrap .vicp-icon2::after { - -webkit-transform: rotate(-45deg); - -ms-transform: rotate(-45deg); - transform: rotate(-45deg); -} -.e-ripple { - position: absolute; - border-radius: 100%; - background-color: rgba(0, 0, 0, 0.15); - background-clip: padding-box; - pointer-events: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - -webkit-transform: scale(0); - -ms-transform: scale(0); - transform: scale(0); - opacity: 1; -} -.e-ripple.z-active { - opacity: 0; - -webkit-transform: scale(2); - -ms-transform: scale(2); - transform: scale(2); - -webkit-transition: opacity 1.2s ease-out, -webkit-transform 0.6s ease-out; - transition: opacity 1.2s ease-out, -webkit-transform 0.6s ease-out; - transition: opacity 1.2s ease-out, transform 0.6s ease-out; - transition: opacity 1.2s ease-out, transform 0.6s ease-out, - -webkit-transform 0.6s ease-out; -} -</style> diff --git a/WebSite/src/components/ImageCropper/utils/data2blob.js b/WebSite/src/components/ImageCropper/utils/data2blob.js deleted file mode 100644 index 59092dca285a61fb48c096260c4f06f2ccb8f59d..0000000000000000000000000000000000000000 --- a/WebSite/src/components/ImageCropper/utils/data2blob.js +++ /dev/null @@ -1,19 +0,0 @@ -/** - * database64鏂囦欢鏍煎紡杞崲涓�2杩涘埗 - * - * @param {[String]} data dataURL 鐨勬牸寮忎负 鈥渄ata:image/png;base64,****鈥�,閫楀彿涔嬪墠閮芥槸涓€浜涜鏄庢€х殑鏂囧瓧锛屾垜浠彧闇€瑕侀€楀彿涔嬪悗鐨勫氨琛屼簡 - * @param {[String]} mime [description] - * @return {[blob]} [description] - */ -export default function(data, mime) { - data = data.split(",")[1]; - data = window.atob(data); - var ia = new Uint8Array(data.length); - for (var i = 0; i < data.length; i++) { - ia[i] = data.charCodeAt(i); - } - // canvas.toDataURL 杩斿洖鐨勯粯璁ゆ牸寮忓氨鏄� image/png - return new Blob([ia], { - type: mime - }); -} diff --git a/WebSite/src/components/ImageCropper/utils/effectRipple.js b/WebSite/src/components/ImageCropper/utils/effectRipple.js deleted file mode 100644 index 3d42d00375797d68f476e89af105b254620953e2..0000000000000000000000000000000000000000 --- a/WebSite/src/components/ImageCropper/utils/effectRipple.js +++ /dev/null @@ -1,53 +0,0 @@ -/** - * 鐐瑰嚮娉㈢汗鏁堟灉 - * - * @param {[event]} e [description] - * @param {[Object]} arg_opts [description] - * @return {[bollean]} [description] - */ -export default function(e, arg_opts) { - var opts = Object.assign( - { - ele: e.target, // 娉㈢汗浣滅敤鍏冪礌 - type: "hit", // hit鐐瑰嚮浣嶇疆鎵╂暎center涓績鐐规墿灞� - bgc: "rgba(0, 0, 0, 0.15)" // 娉㈢汗棰滆壊 - }, - arg_opts - ); - var target = opts.ele; - if (target) { - var rect = target.getBoundingClientRect(); - var ripple = target.querySelector(".e-ripple"); - if (!ripple) { - ripple = document.createElement("span"); - ripple.className = "e-ripple"; - ripple.style.height = ripple.style.width = - Math.max(rect.width, rect.height) + "px"; - target.appendChild(ripple); - } else { - ripple.className = "e-ripple"; - } - switch (opts.type) { - case "center": - ripple.style.top = rect.height / 2 - ripple.offsetHeight / 2 + "px"; - ripple.style.left = rect.width / 2 - ripple.offsetWidth / 2 + "px"; - break; - default: - ripple.style.top = - e.pageY - - rect.top - - ripple.offsetHeight / 2 - - document.body.scrollTop + - "px"; - ripple.style.left = - e.pageX - - rect.left - - ripple.offsetWidth / 2 - - document.body.scrollLeft + - "px"; - } - ripple.style.backgroundColor = opts.bgc; - ripple.className = "e-ripple z-active"; - return false; - } -} diff --git a/WebSite/src/components/ImageCropper/utils/language.js b/WebSite/src/components/ImageCropper/utils/language.js deleted file mode 100644 index 36cb30012e2b45b8bbbc774be40adc2803d4ee6f..0000000000000000000000000000000000000000 --- a/WebSite/src/components/ImageCropper/utils/language.js +++ /dev/null @@ -1,240 +0,0 @@ -export default { - zh: { - hint: "鐐瑰嚮锛屾垨鎷栧姩鍥剧墖鑷虫澶�", - loading: "姝e湪涓婁紶鈥︹€�", - noSupported: "娴忚鍣ㄤ笉鏀寔璇ュ姛鑳斤紝璇蜂娇鐢↖E10浠ヤ笂鎴栧叾浠栫幇鍦ㄦ祻瑙堝櫒锛�", - success: "涓婁紶鎴愬姛", - fail: "鍥剧墖涓婁紶澶辫触", - preview: "澶村儚棰勮", - btn: { - off: "鍙栨秷", - close: "鍏抽棴", - back: "涓婁竴姝�", - save: "淇濆瓨" - }, - error: { - onlyImg: "浠呴檺鍥剧墖鏍煎紡", - outOfSize: "鍗曟枃浠跺ぇ灏忎笉鑳借秴杩� ", - lowestPx: "鍥剧墖鏈€浣庡儚绱犱负锛堝*楂橈級锛�" - } - }, - "zh-tw": { - hint: "榛炴搳锛屾垨鎷栧嫊鍦栫墖鑷虫铏�", - loading: "姝e湪涓婂偝鈥︹€�", - noSupported: "鐎忚鍣ㄤ笉鏀寔瑭插姛鑳斤紝璜嬩娇鐢↖E10浠ヤ笂鎴栧叾浠栫従浠g€忚鍣紒", - success: "涓婂偝鎴愬姛", - fail: "鍦栫墖涓婂偝澶辨晽", - preview: "闋儚闋愯", - btn: { - off: "鍙栨秷", - close: "闂滈枆", - back: "涓婁竴姝�", - save: "淇濆瓨" - }, - error: { - onlyImg: "鍍呴檺鍦栫墖鏍煎紡", - outOfSize: "鍠枃浠跺ぇ灏忎笉鑳借秴閬� ", - lowestPx: "鍦栫墖鏈€浣庡儚绱犵偤锛堝*楂橈級锛�" - } - }, - en: { - hint: "Click or drag the file here to upload", - loading: "Uploading鈥�", - noSupported: "Browser is not supported, please use IE10+ or other browsers", - success: "Upload success", - fail: "Upload failed", - preview: "Preview", - btn: { - off: "Cancel", - close: "Close", - back: "Back", - save: "Save" - }, - error: { - onlyImg: "Image only", - outOfSize: "Image exceeds size limit: ", - lowestPx: "Image's size is too low. Expected at least: " - } - }, - ro: { - hint: "Atinge sau trage fi葯ierul aici", - loading: "Se 卯ncarc膬", - noSupported: - "Browser-ul t膬u nu suport膬 acest feature. Te rug膬m 卯ncearc膬 cu alt browser.", - success: "S-a 卯nc膬rcat cu succes", - fail: "A ap膬rut o problem膬 la 卯nc膬rcare", - preview: "Previzualizeaz膬", - - btn: { - off: "Anuleaz膬", - close: "脦nchide", - back: "脦napoi", - save: "Salveaz膬" - }, - - error: { - onlyImg: "Doar imagini", - outOfSize: "Imaginea dep膬葯e葯te limita de: ", - loewstPx: "Imaginea este prea mic膬; Minim: " - } - }, - ru: { - hint: "袧邪卸屑懈褌械, 懈谢懈 锌械褉械褌邪褖懈褌械 褎邪泄谢 胁 褝褌芯 芯泻薪芯", - loading: "袟邪谐褉褍卸邪褞鈥︹€�", - noSupported: - "袙邪褕 斜褉邪褍蟹械褉 薪械 锌芯写写械褉卸懈胁邪械褌褋褟, 锌芯卸邪谢褍泄褋褌邪, 懈褋锌芯谢褜蟹褍泄褌械 IE10 + 懈谢懈 写褉褍谐懈械 斜褉邪褍蟹械褉褘", - success: "袟邪谐褉褍蟹泻邪 胁褘锌芯谢薪械薪邪 褍褋锌械褕薪芯", - fail: "袨褕懈斜泻邪 蟹邪谐褉褍蟹泻懈", - preview: "袩褉械写锌褉芯褋屑芯褌褉", - btn: { - off: "袨褌屑械薪懈褌褜", - close: "袟邪泻褉褘褌褜", - back: "袧邪蟹邪写", - save: "小芯褏褉邪薪懈褌褜" - }, - error: { - onlyImg: "孝芯谢褜泻芯 懈蟹芯斜褉邪卸械薪懈褟", - outOfSize: "袠蟹芯斜褉邪卸械薪懈械 锌褉械胁褘褕邪械褌 锌褉械写械谢褜薪褘泄 褉邪蟹屑械褉: ", - lowestPx: "袦懈薪懈屑邪谢褜薪褘泄 褉邪蟹屑械褉 懈蟹芯斜褉邪卸械薪懈褟: " - } - }, - "pt-br": { - hint: "Clique ou arraste o arquivo aqui para carregar", - loading: "Carregando鈥�", - noSupported: "Browser n茫o suportado, use o IE10+ ou outro browser", - success: "Sucesso ao carregar imagem", - fail: "Falha ao carregar imagem", - preview: "Pr茅-visualizar", - btn: { - off: "Cancelar", - close: "Fechar", - back: "Voltar", - save: "Salvar" - }, - error: { - onlyImg: "Apenas imagens", - outOfSize: "A imagem excede o limite de tamanho: ", - lowestPx: "O tamanho da imagem 茅 muito pequeno. Tamanho m铆nimo: " - } - }, - fr: { - hint: "Cliquez ou glissez le fichier ici.", - loading: "T茅l茅chargement鈥�", - noSupported: - "Votre navigateur n'est pas support茅. Utilisez IE10 + ou un autre navigateur s'il vous pla卯t.", - success: "T茅l茅chargement r茅ussit", - fail: "T茅l茅chargement echou茅", - preview: "Aper莽u", - btn: { - off: "Annuler", - close: "Fermer", - back: "Retour", - save: "Enregistrer" - }, - error: { - onlyImg: "Image uniquement", - outOfSize: "L'image s茅lectionn茅e d茅passe la taille maximum: ", - lowestPx: "L'image s茅lectionn茅e est trop petite. Dimensions attendues: " - } - }, - nl: { - hint: "Klik hier of sleep een afbeelding in dit vlak", - loading: "Uploaden鈥�", - noSupported: - "Je browser wordt helaas niet ondersteund. Gebruik IE10+ of een andere browser.", - success: "Upload succesvol", - fail: "Upload mislukt", - preview: "Voorbeeld", - btn: { - off: "Annuleren", - close: "Sluiten", - back: "Terug", - save: "Opslaan" - }, - error: { - onlyImg: "Alleen afbeeldingen", - outOfSize: "De afbeelding is groter dan: ", - lowestPx: "De afbeelding is te klein! Minimale afmetingen: " - } - }, - tr: { - hint: "T谋kla veya y眉klemek istedi臒ini buraya s眉r眉kle", - loading: "Y眉kleniyor鈥�", - noSupported: - "Taray谋c谋 desteklenmiyor, l眉tfen IE10+ veya farkl谋 taray谋c谋 kullan谋n", - success: "Y眉kleme ba艧ar谋l谋", - fail: "Y眉klemede hata olu艧tu", - preview: "脰nizle", - btn: { - off: "陌ptal", - close: "Kapat", - back: "Geri", - save: "Kaydet" - }, - error: { - onlyImg: "Sadece resim", - outOfSize: "Resim y眉kleme limitini a艧谋yor: ", - lowestPx: "Resmin boyutu 莽ok k眉莽眉k. En az olmas谋 gereken: " - } - }, - "es-MX": { - hint: "Selecciona o arrastra una imagen", - loading: "Subiendo...", - noSupported: - "Tu navegador no es soportado, porfavor usa IE10+ u otros navegadores mas recientes", - success: "Subido exitosamente", - fail: "Sucedi贸 un error", - preview: "Vista previa", - btn: { - off: "Cancelar", - close: "Cerrar", - back: "Atras", - save: "Guardar" - }, - error: { - onlyImg: "Unicamente imagenes", - outOfSize: "La imagen excede el tama帽o maximo:", - lowestPx: "La imagen es demasiado peque帽o. Se espera por lo menos:" - } - }, - de: { - hint: "Klick hier oder zieh eine Datei hier rein zum Hochladen", - loading: "Hochladen鈥�", - noSupported: - "Browser wird nicht unterst眉tzt, bitte verwende IE10+ oder andere Browser", - success: "Upload erfolgreich", - fail: "Upload fehlgeschlagen", - preview: "Vorschau", - btn: { - off: "Abbrechen", - close: "Schlie脽en", - back: "Zur眉ck", - save: "Speichern" - }, - error: { - onlyImg: "Nur Bilder", - outOfSize: "Das Bild ist zu gro脽: ", - lowestPx: "Das Bild ist zu klein. Mindestens: " - } - }, - ja: { - hint: "銈儶銉冦偗銉汇儔銉┿儍銈般仐銇︺儠銈°偆銉倰銈€儍銉椼儹銉笺儔", - loading: "銈€儍銉椼儹銉笺儔涓�...", - noSupported: - "銇撱伄銉栥儵銈︺偠銇蹇溿仌銈屻仸銇勩伨銇涖倱銆侷E10+銇嬨仢銇粬銇富瑕併儢銉┿偊銈躲倰銇婁娇銇勩亸銇犮仌銇勩€�", - success: "銈€儍銉椼儹銉笺儔鎴愬姛", - fail: "銈€儍銉椼儹銉笺儔澶辨晽", - preview: "銉椼儸銉撱儱銉�", - btn: { - off: "銈儯銉炽偦銉�", - close: "闁夈仒銈�", - back: "鎴汇倠", - save: "淇濆瓨" - }, - error: { - onlyImg: "鐢诲儚銇伩", - outOfSize: "鐢诲儚銈点偆銈恒亴涓婇檺銈掕秴銇堛仸銇勩伨銇欍€備笂闄�: ", - lowestPx: "鐢诲儚銇屽皬銇曘仚銇庛伨銇欍€傛渶灏忋偟銈ゃ偤: " - } - } -}; diff --git a/WebSite/src/components/ImageCropper/utils/mimes.js b/WebSite/src/components/ImageCropper/utils/mimes.js deleted file mode 100644 index 049d6bc5c47e18491853735f2f1ad5837dc3c023..0000000000000000000000000000000000000000 --- a/WebSite/src/components/ImageCropper/utils/mimes.js +++ /dev/null @@ -1,7 +0,0 @@ -export default { - jpg: "image/jpeg", - png: "image/png", - gif: "image/gif", - svg: "image/svg+xml", - psd: "image/photoshop" -}; diff --git a/WebSite/src/components/JcRange/index.vue b/WebSite/src/components/JcRange/index.vue deleted file mode 100644 index c75301b089f8ec005dd08445a618d608aedb0268..0000000000000000000000000000000000000000 --- a/WebSite/src/components/JcRange/index.vue +++ /dev/null @@ -1,170 +0,0 @@ -<!-- - * @Description: - * @Autor: dong jun hua - * @Date: 2020-06-18 16:39:04 - * @LastEditors: dong jun hua - * @LastEditTime: 2020-06-19 16:21:56 ---> -<template> - <div class="jc-component__range"> - <div class="jc-range" :class="rangeStatus ? 'success' : ''"> - <div - :class="{ 'jc-range-block': true, login: rangeStatus }" - @mousedown="rangeMove" - @click="handleConfirm" - > - <i :class="rangeStatus ? successIcon : startIcon"></i> - <span> 鐧� 褰�</span> - </div> - {{ rangeStatus ? successText : startText }} - </div> - </div> -</template> - -<script> -export default { - name: "JcRange", - props: { - // 鎴愬姛涔嬪悗鐨勫嚱鏁� - successFun: { - type: Function - }, - //鎴愬姛鍥炬爣 - successIcon: { - type: String, - default: "el-icon-mouse" - }, - //鎴愬姛鏂囧瓧 - successText: { - type: String, - default: "楠岃瘉鎴愬姛" - }, - //寮€濮嬬殑鍥炬爣 - startIcon: { - type: String, - default: "el-icon-right" - }, - //寮€濮嬬殑鏂囧瓧 - startText: { - type: String, - default: "鎷栧姩婊戝潡鑷虫渶鍙充互鐧诲綍" - }, - //澶辫触涔嬪悗鐨勫嚱鏁� - errorFun: { - type: Function - }, - //鎴栬€呯敤鍊兼潵杩涜鐩戝惉 - status: { - type: Boolean, - default: false - } - }, - data() { - return { - disX: 0, - rangeStatus: false - }; - }, - methods: { - handleConfirm() { - this.$emit("handle-confirm"); - }, - //婊戝潡绉诲姩 - rangeMove(e) { - let ele = document.querySelector(".jc-range-block"); - let startX = e.clientX; - let eleWidth = ele.offsetWidth; - let parentWidth = ele.parentElement.offsetWidth; - let MaxX = parentWidth - eleWidth; - if (this.rangeStatus) { - //涓嶈繍琛� - return false; - } - document.onmousemove = e => { - let endX = e.clientX; - this.disX = endX - startX; - if (this.disX <= 0) { - this.disX = 0; - } - if (this.disX >= MaxX - eleWidth) { - //鍑忓幓婊戝潡鐨勫搴�,浣撻獙鏁堟灉鏇村ソ - this.disX = MaxX; - } - ele.style.transition = ".1s all"; - ele.style.transform = "translateX(" + this.disX + "px)"; - e.preventDefault(); - }; - document.onmouseup = () => { - if (this.disX !== MaxX) { - ele.style.transition = ".5s all"; - ele.style.transform = "translateX(0)"; - //鎵ц鎴愬姛鐨勫嚱鏁� - this.errorFun && this.errorFun(); - } else { - this.rangeStatus = true; - if (!this.status) { - this.$emit("update:status", true); - } - //鎵ц鎴愬姛鐨勫嚱鏁� - this.successFun && this.successFun(); - } - document.onmousemove = null; - document.onmouseup = null; - }; - } - } -}; -</script> - -<style lang="scss" scoped> -@mixin jc-flex { - display: flex; - justify-content: center; - align-items: center; -} -.jc-component__range { - .jc-range { - background-color: #e9e9e9; - position: relative; - transition: 1s all; - user-select: none; - color: #585858; - border-radius: 3px; - @include jc-flex; - height: 40px; /*no*/ - &.success { - background-color: rgb(24, 144, 255); - color: #fff; - i { - color: rgb(24, 144, 255); - } - } - .jc-range-block { - position: absolute; - left: 0; - width: 50px; /*no*/ - height: 100%; - color: #409eff; - border-radius: 3px; - background-color: #fff; - border: 1px solid #d8d8d8; - cursor: pointer; - font-size: 20px; - @include jc-flex; - - span { - position: absolute; - left: 50px; - font-size: 14px; - margin-left: 5px; - opacity: 0; - } - } - - .login { - left: -50px; - width: 100px; - } - } -} -</style> diff --git a/WebSite/src/components/JsonEditor/index.vue b/WebSite/src/components/JsonEditor/index.vue deleted file mode 100644 index 851e32c1e8d1d7ea479ac25c8d476ef821added1..0000000000000000000000000000000000000000 --- a/WebSite/src/components/JsonEditor/index.vue +++ /dev/null @@ -1,72 +0,0 @@ -<template> - <div class="json-editor"> - <textarea ref="textarea" /> - </div> -</template> - -<script> -import CodeMirror from "codemirror"; -import "codemirror/addon/lint/lint.css"; -import "codemirror/lib/codemirror.css"; -import "codemirror/theme/rubyblue.css"; -require("script-loader!jsonlint"); -import "codemirror/mode/javascript/javascript"; -import "codemirror/addon/lint/lint"; -import "codemirror/addon/lint/json-lint"; - -export default { - name: "JsonEditor", - /* eslint-disable vue/require-prop-types */ - props: ["value"], - data() { - return { - jsonEditor: false - }; - }, - watch: { - value(value) { - const editorValue = this.jsonEditor.getValue(); - if (value !== editorValue) { - this.jsonEditor.setValue(JSON.stringify(this.value, null, 2)); - } - } - }, - mounted() { - this.jsonEditor = CodeMirror.fromTextArea(this.$refs.textarea, { - lineNumbers: true, - mode: "application/json", - gutters: ["CodeMirror-lint-markers"], - theme: "rubyblue", - lint: true - }); - - this.jsonEditor.setValue(JSON.stringify(this.value, null, 2)); - this.jsonEditor.on("change", cm => { - this.$emit("changed", cm.getValue()); - this.$emit("input", cm.getValue()); - }); - }, - methods: { - getValue() { - return this.jsonEditor.getValue(); - } - } -}; -</script> - -<style scoped> -.json-editor { - height: 100%; - position: relative; -} -.json-editor >>> .CodeMirror { - height: auto; - min-height: 300px; -} -.json-editor >>> .CodeMirror-scroll { - min-height: 300px; -} -.json-editor >>> .cm-s-rubyblue span.cm-string { - color: #f08047; -} -</style> diff --git a/WebSite/src/components/JumpDialog/components/JumpDialogItem.vue b/WebSite/src/components/JumpDialog/components/JumpDialogItem.vue deleted file mode 100644 index 8335599be0a3f953a0dadce165457af07b8d2019..0000000000000000000000000000000000000000 --- a/WebSite/src/components/JumpDialog/components/JumpDialogItem.vue +++ /dev/null @@ -1,39 +0,0 @@ -<!-- - * @Descripttion: - * @Author: dongjunhua - * @Date: 2020-08-20 08:32:52 - * @LastEditors: dongjunhua - * @LastEditTime: 2020-08-20 12:55:38 ---> -<template> - <div v-if="visible"> - <slot></slot> - </div> -</template> - -<script> -import { eventBus } from "../event-bus"; -export default { - name: "JumpDialogItem", - data() { - return { - visible: false - }; - }, - props: { - name: { - type: String - }, - label: { - type: String - } - }, - created() { - eventBus.$on("activeChange", activeName => { - this.visible = this.name === activeName; - this.visible && eventBus.$emit("setTitle", this.label); - }); - }, - mounted() {} -}; -</script> diff --git a/WebSite/src/components/JumpDialog/event-bus.js b/WebSite/src/components/JumpDialog/event-bus.js deleted file mode 100644 index 03c63fd56c028937ed8ed7b0e8bbbd13c82b3bce..0000000000000000000000000000000000000000 --- a/WebSite/src/components/JumpDialog/event-bus.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - * @Descripttion: - * @Author: dongjunhua - * @Date: 2020-08-20 08:42:33 - * @LastEditors: dongjunhua - * @LastEditTime: 2020-08-20 08:44:20 - */ -import Vue from "vue"; -export const eventBus = new Vue(); diff --git a/WebSite/src/components/JumpDialog/index.vue b/WebSite/src/components/JumpDialog/index.vue deleted file mode 100644 index 2ddcd1633c03b319c1b42bcb3a318b0c696ac33e..0000000000000000000000000000000000000000 --- a/WebSite/src/components/JumpDialog/index.vue +++ /dev/null @@ -1,103 +0,0 @@ -<!-- - * @Descripttion: - * @Author: dongjunhua - * @Date: 2020-08-16 15:43:55 - * @LastEditors: dongjunhua - * @LastEditTime: 2020-08-20 12:32:54 ---> -<template> - <div class="jump-dialog-outer-container" :style="{ width }"> - <transition name="jump-dialog" mode="out-in"> - <div class="jump-dialog-inner-container" v-show="!visible"> - <slot name="layout"></slot> - </div> - </transition> - <transition name="jump-dialog" mode="out-in"> - <div class="jump-dialog-inner-container" v-show="visible"> - <el-card shadow="hover"> - <el-page-header @back="goBack" :content="title"></el-page-header> - <div class="content-container"> - <slot></slot> - </div> - </el-card> - </div> - </transition> - </div> -</template> - -<script> -import { eventBus } from "./event-bus"; -export default { - name: "JumpDialog", - props: { - visible: { - type: Boolean, - default: false - }, - width: { - type: String, - default: "100%" - }, - activeName: { - type: String - } - }, - data() { - return { - title: "" - }; - }, - watch: { - activeName(val) { - eventBus.$emit("activeChange", val); - } - }, - created() { - eventBus.$on("setTitle", title => { - this.title = title; - }); - }, - mounted() {}, - beforeDestroy() { - eventBus.$off(); - }, - methods: { - goBack() { - this.$emit("update:visible", false); - } - } -}; -</script> - -<style scoped> -.jump-dialog-outer-container { - position: relative; - width: 100%; -} -.jump-dialog-inner-container { - position: absolute; - width: 100%; -} -.content-container { - width: 100%; - margin-top: 20px; -} - -.jump-dialog-leave-active { - transition: all 0.6s ease; -} - -.jump-dialog-enter-active { - transition: all 0.6s ease; -} - -.jump-dialog-enter { - opacity: 0; - transform: translateX(-30px); -} - -.jump-dialog-leave-to { - opacity: 0; - transform: translateX(30px); -} -</style> diff --git a/WebSite/src/components/Kanban/index.vue b/WebSite/src/components/Kanban/index.vue deleted file mode 100644 index a858ac9b8ce3db80d134520d80253200b104f8d8..0000000000000000000000000000000000000000 --- a/WebSite/src/components/Kanban/index.vue +++ /dev/null @@ -1,98 +0,0 @@ -<template> - <div class="board-column"> - <div class="board-column-header"> - {{ headerText }} - </div> - <draggable - :list="list" - v-bind="$attrs" - class="board-column-content" - :set-data="setData" - > - <div v-for="element in list" :key="element.id" class="board-item"> - {{ element.name }} {{ element.id }} - </div> - </draggable> - </div> -</template> - -<script> -import draggable from "vuedraggable"; - -export default { - name: "DragKanbanDemo", - components: { - draggable - }, - props: { - headerText: { - type: String, - default: "Header" - }, - options: { - type: Object, - default() { - return {}; - } - }, - list: { - type: Array, - default() { - return []; - } - } - }, - methods: { - setData(dataTransfer) { - // to avoid Firefox bug - // Detail see : https://github.com/RubaXa/Sortable/issues/1012 - dataTransfer.setData("Text", ""); - } - } -}; -</script> -<style lang="scss" scoped> -.board-column { - min-width: 300px; - min-height: 100px; - height: auto; - overflow: hidden; - background: #f0f0f0; - border-radius: 3px; - - .board-column-header { - height: 50px; - line-height: 50px; - overflow: hidden; - padding: 0 20px; - text-align: center; - background: #333; - color: #fff; - border-radius: 3px 3px 0 0; - } - - .board-column-content { - height: auto; - overflow: hidden; - border: 10px solid transparent; - min-height: 60px; - display: flex; - justify-content: flex-start; - flex-direction: column; - align-items: center; - - .board-item { - cursor: pointer; - width: 100%; - height: 64px; - margin: 5px 0; - background-color: #fff; - text-align: left; - line-height: 54px; - padding: 5px 10px; - box-sizing: border-box; - box-shadow: 0px 1px 3px 0 rgba(0, 0, 0, 0.2); - } - } -} -</style> diff --git a/WebSite/src/components/LayoutCard/index.vue b/WebSite/src/components/LayoutCard/index.vue deleted file mode 100644 index 58617761d9466d12a83c2ceac704c9397eedf625..0000000000000000000000000000000000000000 --- a/WebSite/src/components/LayoutCard/index.vue +++ /dev/null @@ -1,103 +0,0 @@ -<!-- - * @Description: - * @Autor: dong jun hua - * @Date: 2020-06-19 09:00:48 - * @LastEditors: dong jun hua - * @LastEditTime: 2020-06-19 11:01:53 ---> -<template> - <div :class="['container', type]"> - <header> - <div class="title-container" v-if="showTitle"> - <slot name="title"></slot> - </div> - </header> - <main> - <div class="filter-container" v-if="showFilter"> - <slot name="filter"></slot> - </div> - <div class="button-container" v-if="showButton"> - <slot name="button"></slot> - </div> - <div class="content-container"> - <slot name="content"></slot> - </div> - </main> - </div> -</template> - -<script> -export default { - name: "LayoutCard", - props: { - type: { - type: String - }, - showTitle: { - type: Boolean, - default: true - }, - showFilter: { - type: Boolean, - default: true - }, - showButton: { - type: Boolean, - default: true - } - } -}; -</script> - -<style scoped> -.container { - width: 100%; - border-radius: 4px; - border: 1px solid #e6ebf5; - background-color: #fff; - overflow: hidden; - color: #303133; - transition: 0.3s; - box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1); - padding: 20px; -} -.clearfix:before, -.clearfix:after { - display: table; - content: ""; -} -.clearfix:after { - clear: both; -} -.primary { - border-top: 3px solid #409eff; -} -.success { - border-top: 3px solid #67c23a; -} -.warning { - border-top: 3px solid #e6a23c; -} -.danger { - border-top: 3px solid #f56c6c; -} -.info { - border-top: 3px solid #909399; -} -.title-container { - padding-bottom: 20px; - margin-bottom: 20px; - border-bottom: 1px solid #dcdfe6; -} -.filter-container { - padding-bottom: 20px; - margin-bottom: 20px; - border-bottom: 1px solid #dcdfe6; -} -.button-container { - padding-bottom: 20px; -} -.content-container { - padding-bottom: 10px; -} -</style> diff --git a/WebSite/src/components/MDinput/index.vue b/WebSite/src/components/MDinput/index.vue deleted file mode 100644 index 822d19af8568e25e30924e918fe6bdfee54baae3..0000000000000000000000000000000000000000 --- a/WebSite/src/components/MDinput/index.vue +++ /dev/null @@ -1,364 +0,0 @@ -<template> - <div :class="computedClasses" class="material-input__component"> - <div :class="{ iconClass: icon }"> - <i - v-if="icon" - :class="['el-icon-' + icon]" - class="el-input__icon material-input__icon" - /> - <input - v-if="type === 'email'" - v-model="currentValue" - :name="name" - :placeholder="fillPlaceHolder" - :readonly="readonly" - :disabled="disabled" - :autocomplete="autoComplete" - :required="required" - type="email" - class="material-input" - @focus="handleMdFocus" - @blur="handleMdBlur" - @input="handleModelInput" - /> - <input - v-if="type === 'url'" - v-model="currentValue" - :name="name" - :placeholder="fillPlaceHolder" - :readonly="readonly" - :disabled="disabled" - :autocomplete="autoComplete" - :required="required" - type="url" - class="material-input" - @focus="handleMdFocus" - @blur="handleMdBlur" - @input="handleModelInput" - /> - <input - v-if="type === 'number'" - v-model="currentValue" - :name="name" - :placeholder="fillPlaceHolder" - :step="step" - :readonly="readonly" - :disabled="disabled" - :autocomplete="autoComplete" - :max="max" - :min="min" - :minlength="minlength" - :maxlength="maxlength" - :required="required" - type="number" - class="material-input" - @focus="handleMdFocus" - @blur="handleMdBlur" - @input="handleModelInput" - /> - <input - v-if="type === 'password'" - v-model="currentValue" - :name="name" - :placeholder="fillPlaceHolder" - :readonly="readonly" - :disabled="disabled" - :autocomplete="autoComplete" - :max="max" - :min="min" - :required="required" - type="password" - class="material-input" - @focus="handleMdFocus" - @blur="handleMdBlur" - @input="handleModelInput" - /> - <input - v-if="type === 'tel'" - v-model="currentValue" - :name="name" - :placeholder="fillPlaceHolder" - :readonly="readonly" - :disabled="disabled" - :autocomplete="autoComplete" - :required="required" - type="tel" - class="material-input" - @focus="handleMdFocus" - @blur="handleMdBlur" - @input="handleModelInput" - /> - <input - v-if="type === 'text'" - v-model="currentValue" - :name="name" - :placeholder="fillPlaceHolder" - :readonly="readonly" - :disabled="disabled" - :autocomplete="autoComplete" - :minlength="minlength" - :maxlength="maxlength" - :required="required" - type="text" - class="material-input" - @focus="handleMdFocus" - @blur="handleMdBlur" - @input="handleModelInput" - /> - <span class="material-input-bar" /> - <label class="material-label"> - <slot /> - </label> - </div> - </div> -</template> - -<script> -// source:https://github.com/wemake-services/vue-material-input/blob/master/src/components/MaterialInput.vue - -export default { - name: "MdInput", - props: { - /* eslint-disable */ - icon: String, - name: String, - type: { - type: String, - default: 'text' - }, - value: [String, Number], - placeholder: String, - readonly: Boolean, - disabled: Boolean, - min: String, - max: String, - step: String, - minlength: Number, - maxlength: Number, - required: { - type: Boolean, - default: true - }, - autoComplete: { - type: String, - default: 'off' - }, - validateEvent: { - type: Boolean, - default: true - } - }, - data() { - return { - currentValue: this.value, - focus: false, - fillPlaceHolder: null - } - }, - computed: { - computedClasses() { - return { - 'material--active': this.focus, - 'material--disabled': this.disabled, - 'material--raised': Boolean(this.focus || this.currentValue) // has value - } - } - }, - watch: { - value(newValue) { - this.currentValue = newValue - } - }, - methods: { - handleModelInput(event) { - const value = event.target.value - this.$emit('input', value) - if (this.$parent.$options.componentName === 'ElFormItem') { - if (this.validateEvent) { - this.$parent.$emit('el.form.change', [value]) - } - } - this.$emit('change', value) - }, - handleMdFocus(event) { - this.focus = true - this.$emit('focus', event) - if (this.placeholder && this.placeholder !== '') { - this.fillPlaceHolder = this.placeholder - } - }, - handleMdBlur(event) { - this.focus = false - this.$emit('blur', event) - this.fillPlaceHolder = null - if (this.$parent.$options.componentName === 'ElFormItem') { - if (this.validateEvent) { - this.$parent.$emit('el.form.blur', [this.currentValue]) - } - } - } - } -} -</script> - -<style lang="scss" scoped> - // Fonts: - $font-size-base: 16px; - $font-size-small: 18px; - $font-size-smallest: 12px; - $font-weight-normal: normal; - $font-weight-bold: bold; - $apixel: 1px; - // Utils - $spacer: 12px; - $transition: 0.2s ease all; - $index: 0px; - $index-has-icon: 30px; - // Theme: - $color-white: white; - $color-grey: #9E9E9E; - $color-grey-light: #E0E0E0; - $color-blue: #2196F3; - $color-red: #F44336; - $color-black: black; - // Base clases: - %base-bar-pseudo { - content: ''; - height: 1px; - width: 0; - bottom: 0; - position: absolute; - transition: $transition; - } - - // Mixins: - @mixin slided-top() { - top: - ($font-size-base + $spacer); - left: 0; - font-size: $font-size-base; - font-weight: $font-weight-bold; - } - - // Component: - .material-input__component { - margin-top: 36px; - position: relative; - * { - box-sizing: border-box; - } - .iconClass { - .material-input__icon { - position: absolute; - left: 0; - line-height: $font-size-base; - color: $color-blue; - top: $spacer; - width: $index-has-icon; - height: $font-size-base; - font-size: $font-size-base; - font-weight: $font-weight-normal; - pointer-events: none; - } - .material-label { - left: $index-has-icon; - } - .material-input { - text-indent: $index-has-icon; - } - } - .material-input { - font-size: $font-size-base; - padding: $spacer $spacer $spacer - $apixel * 10 $spacer / 2; - display: block; - width: 100%; - border: none; - line-height: 1; - border-radius: 0; - &:focus { - outline: none; - border: none; - border-bottom: 1px solid transparent; // fixes the height issue - } - } - .material-label { - font-weight: $font-weight-normal; - position: absolute; - pointer-events: none; - left: $index; - top: 0; - transition: $transition; - font-size: $font-size-small; - } - .material-input-bar { - position: relative; - display: block; - width: 100%; - &:before { - @extend %base-bar-pseudo; - left: 50%; - } - &:after { - @extend %base-bar-pseudo; - right: 50%; - } - } - // Disabled state: - &.material--disabled { - .material-input { - border-bottom-style: dashed; - } - } - // Raised state: - &.material--raised { - .material-label { - @include slided-top(); - } - } - // Active state: - &.material--active { - .material-input-bar { - &:before, - &:after { - width: 50%; - } - } - } - } - - .material-input__component { - background: $color-white; - .material-input { - background: none; - color: $color-black; - text-indent: $index; - border-bottom: 1px solid $color-grey-light; - } - .material-label { - color: $color-grey; - } - .material-input-bar { - &:before, - &:after { - background: $color-blue; - } - } - // Active state: - &.material--active { - .material-label { - color: $color-blue; - } - } - // Errors: - &.material--has-errors { - &.material--active .material-label { - color: $color-red; - } - .material-input-bar { - &:before, - &:after { - background: transparent; - } - } - } - } -</style> diff --git a/WebSite/src/components/MarkdownEditor/default-options.js b/WebSite/src/components/MarkdownEditor/default-options.js deleted file mode 100644 index e1da02d5826b6d17d9606b62eb577b81162a312d..0000000000000000000000000000000000000000 --- a/WebSite/src/components/MarkdownEditor/default-options.js +++ /dev/null @@ -1,31 +0,0 @@ -// doc: https://nhnent.github.io/tui.editor/api/latest/ToastUIEditor.html#ToastUIEditor -export default { - minHeight: "200px", - previewStyle: "vertical", - useCommandShortcut: true, - useDefaultHTMLSanitizer: true, - usageStatistics: false, - hideModeSwitch: false, - toolbarItems: [ - "heading", - "bold", - "italic", - "strike", - "divider", - "hr", - "quote", - "divider", - "ul", - "ol", - "task", - "indent", - "outdent", - "divider", - "table", - "image", - "link", - "divider", - "code", - "codeblock" - ] -}; diff --git a/WebSite/src/components/MarkdownEditor/index.vue b/WebSite/src/components/MarkdownEditor/index.vue deleted file mode 100644 index 7343da70934119e37306ca3072267f9a07c8eca0..0000000000000000000000000000000000000000 --- a/WebSite/src/components/MarkdownEditor/index.vue +++ /dev/null @@ -1,122 +0,0 @@ -<template> - <div :id="id" /> -</template> - -<script> -// deps for editor -import "codemirror/lib/codemirror.css"; // codemirror -import "tui-editor/dist/tui-editor.css"; // editor ui -import "tui-editor/dist/tui-editor-contents.css"; // editor content - -import Editor from "tui-editor"; -import defaultOptions from "./default-options"; - -export default { - name: "MarkdownEditor", - props: { - value: { - type: String, - default: "" - }, - id: { - type: String, - required: false, - default() { - return ( - "markdown-editor-" + - +new Date() + - ((Math.random() * 1000).toFixed(0) + "") - ); - } - }, - options: { - type: Object, - default() { - return defaultOptions; - } - }, - mode: { - type: String, - default: "markdown" - }, - height: { - type: String, - required: false, - default: "300px" - }, - language: { - type: String, - required: false, - default: "en_US" // https://github.com/nhnent/tui.editor/tree/master/src/js/langs - } - }, - data() { - return { - editor: null - }; - }, - computed: { - editorOptions() { - const options = Object.assign({}, defaultOptions, this.options); - options.initialEditType = this.mode; - options.height = this.height; - options.language = this.language; - return options; - } - }, - watch: { - value(newValue, preValue) { - if (newValue !== preValue && newValue !== this.editor.getValue()) { - this.editor.setValue(newValue); - } - }, - language(val) { - this.destroyEditor(); - this.initEditor(); - }, - height(newValue) { - this.editor.height(newValue); - }, - mode(newValue) { - this.editor.changeMode(newValue); - } - }, - mounted() { - this.initEditor(); - }, - destroyed() { - this.destroyEditor(); - }, - methods: { - initEditor() { - this.editor = new Editor({ - el: document.getElementById(this.id), - ...this.editorOptions - }); - if (this.value) { - this.editor.setValue(this.value); - } - this.editor.on("change", () => { - this.$emit("input", this.editor.getValue()); - }); - }, - destroyEditor() { - if (!this.editor) return; - this.editor.off("change"); - this.editor.remove(); - }, - setValue(value) { - this.editor.setValue(value); - }, - getValue() { - return this.editor.getValue(); - }, - setHtml(value) { - this.editor.setHtml(value); - }, - getHtml() { - return this.editor.getHtml(); - } - } -}; -</script> diff --git a/WebSite/src/components/ModifyPassword/index.vue b/WebSite/src/components/ModifyPassword/index.vue deleted file mode 100644 index 9357e155ea5ac65d6e511644df8f1e15b7a84b35..0000000000000000000000000000000000000000 --- a/WebSite/src/components/ModifyPassword/index.vue +++ /dev/null @@ -1,132 +0,0 @@ -<!-- - * @Description: - * @Autor: dong jun hua - * @Date: 2020-07-07 13:04:03 - * @LastEditors: dong jun hua - * @LastEditTime: 2020-07-08 10:28:36 ---> - -<template> - <el-dialog - :loading="loading" - :before-close="handleCloseDialog" - :close-on-click-modal="false" - width="30%" - :title="`${isInitial ? '棣栨鐧诲綍璇峰厛' : ''}淇敼瀵嗙爜`" - :visible.sync="visible" - > - <el-form - ref="dataForm" - :model="data" - label-position="top" - size="large" - :rules="rules" - > - <el-form-item label="鏃у瘑鐮�" style="width: 100%;" prop="oldPassword"> - <el-input - show-password - placeholder="璇疯緭鍏ユ棫瀵嗙爜" - v-model="data.oldPassword" - autocomplete="new-password" - ></el-input> - </el-form-item> - <el-form-item label="鏂板瘑鐮�" style="width: 100%;" prop="password"> - <el-input - show-password - placeholder="璇疯緭鍏ユ柊瀵嗙爜" - v-model="data.password" - autocomplete="new-password" - ></el-input> - </el-form-item> - <el-form-item label="纭瀵嗙爜" style="width: 100%;" prop="passwordAgain"> - <el-input - show-password - placeholder="璇疯緭鍐嶆鍏ユ柊瀵嗙爜" - v-model="data.passwordAgain" - autocomplete="new-password" - ></el-input> - </el-form-item> - </el-form> - <div slot="footer" class="dialog-footer"> - <el-button @click="handleCloseDialog()"> - 鍙栨秷 - </el-button> - <el-button type="primary" @click="handleComfirm"> - 纭 - </el-button> - </div> - </el-dialog> -</template> - -<script> -export default { - name: "ModifyPassword", - props: { - visible: { - type: Boolean, - default: false - }, - isInitial: { - type: Boolean, - default: false - } - }, - watch: { - visible(val) { - if (val) { - this.$refs["dataForm"] && this.$refs["dataForm"].resetFields(); - this.data.id = this.$store.getters.accountId; - } - } - }, - data() { - const validPasswordAgain = (rule, value, callback) => { - if (!value) { - callback(new Error("璇峰啀娆¤緭鍏ユ柊瀵嗙爜")); - } else { - if (this.data.password !== this.data.passwordAgain) { - callback(new Error("鏂板瘑鐮佷袱娆¤緭鍏ュ繀椤讳竴鑷�")); - } - callback(); - } - }; - return { - loading: false, - data: { - id: "", - oldPassword: "", - password: "", - passwordAgain: "" - }, - rules: { - oldPassword: [ - { required: true, message: "璇疯緭鍏ユ棫瀵嗙爜", trigger: "blur" } - ], - password: [ - { required: true, message: "璇疯緭鍏ユ柊瀵嗙爜", trigger: "blur" } - ], - passwordAgain: [ - { required: true, validator: validPasswordAgain, trigger: "blur" } - ] - } - }; - }, - methods: { - handleComfirm() { - this.$refs["dataForm"].validate(async valid => { - if (valid) { - try { - await this.$service.Account.modifyPassword(this.data); - this.$message.success("淇敼瀵嗙爜鎴愬姛"); - this.$emit("update:visible", false); - this.$emit("handle-confirm"); - } catch (_) {} - } - }); - }, - handleCloseDialog() { - this.$emit("update:visible", false); - } - } -}; -</script> diff --git a/WebSite/src/components/OrganizationSelectTree/index.vue b/WebSite/src/components/OrganizationSelectTree/index.vue deleted file mode 100644 index 947daf8fb724afe4d9d4a8ab823068ca9f1c970e..0000000000000000000000000000000000000000 --- a/WebSite/src/components/OrganizationSelectTree/index.vue +++ /dev/null @@ -1,55 +0,0 @@ -<!-- - @Descripttion: - @Author: gong qun - @Date: 2020-06-18 10:25:12 - @LastEditors: gong qun - @LastEditTime: 2020-06-18 10:25:12 ---> -<template> - <SelectTree - ref="selectTree" - :options="options" - placeholder="璇烽€夋嫨閮ㄩ棬" - @change="change" - :props="props" - ></SelectTree> -</template> - -<script> -import SelectTree from "@/components/SelectTree"; -export default { - components: { - SelectTree - }, - name: "organization-select-tree", - data() { - return { - options: [], - props: { - value: "id", - label: "fullName", - children: "children" - } - }; - }, - mounted() { - let deptTree = sessionStorage.getItem("deptTree"); - if (deptTree) { - this.options = JSON.parse(deptTree); - return; - } - this.$service.Organization.getTreeList().then(res => { - this.options = res.data; - sessionStorage.setItem("deptTree", JSON.stringify(this.options)); - }); - }, - methods: { - change(value) { - this.$emit("change", value); - }, - clearSelect() { - this.$refs.selectTree.clearSelect(); - } - } -}; -</script> diff --git a/WebSite/src/components/PageQuery/index.vue b/WebSite/src/components/PageQuery/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..9ee7288a27db82faf56af1a9b543a529c2b1eca4 --- /dev/null +++ b/WebSite/src/components/PageQuery/index.vue @@ -0,0 +1,219 @@ +<template> + <div> + <el-table + ref="pageQueryTable" + :data="tableData" + stripe + border + @select="selectHandler" + @select-all="selectAllHandler" + > + <el-table-column type="selection" v-if="showSelection"></el-table-column> + <el-table-column + v-for="(item, index) in tableConfig" + :key="index" + :prop="item.prop" + :label="item.label" + ></el-table-column> + <el-table-column v-if="showOperate" label="鎿嶄綔" width="100"> + <template #default="scope"> + <slot name="tableColumn" :scope="scope" /> + </template> + </el-table-column> + </el-table> + <div style="text-align: right;"> + <Pagination + v-model:page="page" + v-model:limit="limit" + :total="total" + layout="total, sizes, prev, pager, next" + :pageSizes="[10, 30, 50, 100]" + @pagination="pageInfoChange" + /> + </div> + </div> +</template> + +<script> +import { computed, nextTick, reactive, toRefs, watch } from 'vue'; +export default { + name: 'DaoList', + props: { + // 琛ㄦ牸鏁版嵁 + tableData: { + required: true, + type: Array + }, + //琛ㄥごlabel鍜屾瘡涓€鍒楃殑瀛楁鍚� + tableConfig: { + required: true, + type: Array + }, + //鍒嗛〉淇℃伅 + pageNO: { + required: true, + type: Number + }, + pageSize: { + required: true, + type: Number + }, + total: { + required: true, + type: Number + }, + primaryKey: { + required: true, + type: String + }, + showOperate: { + type: Boolean, + default: true + }, + showSelection: { + type: Boolean, + default: true + }, + selectedList: { + type: Array, + default: () => { + return []; + } + } + }, + emits: [ + 'update:pageNO', + 'update:pageSize', + 'pageinfo-change', + 'seleclted-change', + 'update:selectedList' + ], + setup(props, context) { + const data = reactive({ + pageQueryTable: null, + // joinedList: JSON.parse(JSON.stringify(props.selectedList)), + joinedList: computed({ + get() { + return props.selectedList; + }, + set(val) { + context.emit('update:selectedList', val); + } + }), + primaryKey: props.primaryKey + }); + const page = computed({ + get() { + return props.pageNO; + }, + set(val) { + context.emit('update:pageNO', val); + } + }); + const limit = computed({ + get() { + return props.pageSize; + }, + set(val) { + context.emit('update:pageSize', val); + } + }); + watch( + () => data.joinedList, + () => { + // context.emit('seleclted-change', val); + // console.error(val); + }, + { + deep: true + } + ); + watch( + () => props.tableData, + val => { + nextTick(() => { + val.forEach(item => { + data.joinedList.findIndex( + joined => joined[data.primaryKey] == item[data.primaryKey] + ) > -1 && data.pageQueryTable.toggleRowSelection(item, true); + }); + }); + }, + { + deep: true, + immediate: true + } + ); + const selectHandler = (selection, row) => { + const index = data.joinedList.findIndex( + //浠巎oinedList鏌ユ壘褰撳墠鎿嶄綔鐨勮繖涓€琛� 濡傛灉瀛樺湪锛屽垯鍒犻櫎锛屽鏋滀笉瀛樺湪锛屽垯娣诲姞 + item => item[data.primaryKey] === row[data.primaryKey] + ); + if (index > -1) { + data.joinedList.splice(index, 1); + } else { + data.joinedList.push(row); + } + }; + const selectAllHandler = selection => { + if (selection.length > 0) { + //鍏ㄩ€� 杩囨护鎺夊凡缁忓嬀閫夎繃鐨勶紝灏嗘柊鍕鹃€夌殑娣诲姞鍒癹oinedList涓� + const newSelected = selection.filter(item => { + return ( + data.joinedList.findIndex( + joined => joined[data.primaryKey] === item[data.primaryKey] + ) === -1 + ); + }); + data.joinedList = data.joinedList.concat(newSelected); + } else { + //鍏ㄤ笉閫� 鎶妀oinedList涓笉鏄綋鍓嶉〉鐨勬壘鍑烘潵 + data.joinedList = data.joinedList.filter(item => { + return ( + props.tableData.findIndex( + td => item[data.primaryKey] === td[data.primaryKey] + ) === -1 + ); + }); + } + }; + const pageInfoChange = val => { + // Promise.resolve().then(() => { + context.emit('pageinfo-change', val); + // }); + }; + return { + ...toRefs(data), + page, + limit, + selectHandler, + selectAllHandler, + pageInfoChange + }; + } +}; +</script> + +<style lang="scss" scoped> +.el-collapse { + border: none; +} +</style> + +<style lang="scss"> +.donate { + .el-collapse-item__header { + border-bottom: none; + height: 15px; + line-height: 15px; + margin: 10px 0; + font-size: 16px; + } + .el-collapse-item__wrap { + border: none; + .el-collapse-item__content { + padding-bottom: 0; + } + } +} +</style> diff --git a/WebSite/src/components/Pagination/index.vue b/WebSite/src/components/Pagination/index.vue index 99c6f1f7653b8d67cd93c441489e3b957cf10c53..aee811817e93b6425eebb088d3562b215823b539 100644 --- a/WebSite/src/components/Pagination/index.vue +++ b/WebSite/src/components/Pagination/index.vue @@ -2,8 +2,8 @@ <div :class="{ hidden: hidden }" class="pagination-container"> <el-pagination :background="background" - :current-page.sync="currentPage" - :page-size.sync="pageSize" + v-model:current-page="currentPage" + v-model:page-size="pageSize" :layout="layout" :page-sizes="pageSizes" :total="total" @@ -15,10 +15,10 @@ </template> <script> -import { scrollTo } from "@/utils/scroll-to"; +import { scrollTo } from '@/utils/scroll-to'; export default { - name: "Pagination", + name: 'Pagination', props: { total: { required: true, @@ -40,7 +40,7 @@ export default { }, layout: { type: String, - default: "total, sizes, prev, pager, next, jumper" + default: 'total, sizes, prev, pager, next, jumper' }, background: { type: Boolean, @@ -61,7 +61,7 @@ export default { return this.page; }, set(val) { - this.$emit("update:page", val); + this.$emit('update:page', val); } }, pageSize: { @@ -69,19 +69,19 @@ export default { return this.limit; }, set(val) { - this.$emit("update:limit", val); + this.$emit('update:limit', val); } } }, methods: { handleSizeChange(val) { - this.$emit("pagination", { page: this.currentPage, limit: val }); + this.$emit('pagination', { page: this.currentPage, limit: val }); if (this.autoScroll) { scrollTo(0, 800); } }, handleCurrentChange(val) { - this.$emit("pagination", { page: val, limit: this.pageSize }); + this.$emit('pagination', { page: val, limit: this.pageSize }); if (this.autoScroll) { scrollTo(0, 800); } diff --git a/WebSite/src/components/PanThumb/index.vue b/WebSite/src/components/PanThumb/index.vue deleted file mode 100644 index fc945ba118a7406ae4267856c6be7109ce51f82d..0000000000000000000000000000000000000000 --- a/WebSite/src/components/PanThumb/index.vue +++ /dev/null @@ -1,146 +0,0 @@ -<template> - <div - :style="{ zIndex: zIndex, height: height, width: width }" - class="pan-item" - > - <div class="pan-info"> - <div class="pan-info-roles-container"> - <slot /> - </div> - </div> - <!-- eslint-disable-next-line --> - <div :style="{backgroundImage: `url(${image})`}" class="pan-thumb"></div> - </div> -</template> - -<script> -export default { - name: "PanThumb", - props: { - image: { - type: String, - required: true - }, - zIndex: { - type: Number, - default: 1 - }, - width: { - type: String, - default: "150px" - }, - height: { - type: String, - default: "150px" - } - } -}; -</script> - -<style scoped> -.pan-item { - width: 200px; - height: 200px; - border-radius: 50%; - display: inline-block; - position: relative; - cursor: default; - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); -} - -.pan-info-roles-container { - padding: 20px; - text-align: center; -} - -.pan-thumb { - width: 100%; - height: 100%; - background-position: center center; - background-size: cover; - border-radius: 50%; - overflow: hidden; - position: absolute; - transform-origin: 95% 40%; - transition: all 0.3s ease-in-out; -} - -/* .pan-thumb:after { - content: ''; - width: 8px; - height: 8px; - position: absolute; - border-radius: 50%; - top: 40%; - left: 95%; - margin: -4px 0 0 -4px; - background: radial-gradient(ellipse at center, rgba(14, 14, 14, 1) 0%, rgba(125, 126, 125, 1) 100%); - box-shadow: 0 0 1px rgba(255, 255, 255, 0.9); -} */ - -.pan-info { - position: absolute; - width: inherit; - height: inherit; - border-radius: 50%; - overflow: hidden; - box-shadow: inset 0 0 0 5px rgba(0, 0, 0, 0.05); -} - -.pan-info h3 { - color: #fff; - text-transform: uppercase; - position: relative; - letter-spacing: 2px; - font-size: 18px; - margin: 0 60px; - padding: 22px 0 0 0; - height: 85px; - font-family: "Open Sans", Arial, sans-serif; - text-shadow: 0 0 1px #fff, 0 1px 2px rgba(0, 0, 0, 0.3); -} - -.pan-info p { - color: #fff; - padding: 10px 5px; - font-style: italic; - margin: 0 30px; - font-size: 12px; - border-top: 1px solid rgba(255, 255, 255, 0.5); -} - -.pan-info p a { - display: block; - color: #333; - width: 80px; - height: 80px; - background: rgba(255, 255, 255, 0.3); - border-radius: 50%; - color: #fff; - font-style: normal; - font-weight: 700; - text-transform: uppercase; - font-size: 9px; - letter-spacing: 1px; - padding-top: 24px; - margin: 7px auto 0; - font-family: "Open Sans", Arial, sans-serif; - opacity: 0; - transition: transform 0.3s ease-in-out 0.2s, opacity 0.3s ease-in-out 0.2s, - background 0.2s linear 0s; - transform: translateX(60px) rotate(90deg); -} - -.pan-info p a:hover { - background: rgba(255, 255, 255, 0.5); -} - -.pan-item:hover .pan-thumb { - transform: rotate(-110deg); -} - -.pan-item:hover .pan-info p a { - opacity: 1; - transform: translateX(0px) rotate(0deg); -} -</style> diff --git a/WebSite/src/components/RightPanel/index.vue b/WebSite/src/components/RightPanel/index.vue deleted file mode 100644 index 3e9fb032f4501c656501bbc4a86b2d73029f6356..0000000000000000000000000000000000000000 --- a/WebSite/src/components/RightPanel/index.vue +++ /dev/null @@ -1,149 +0,0 @@ -<template> - <div ref="rightPanel" :class="{ show: show }" class="rightPanel-container"> - <div class="rightPanel-background" /> - <div class="rightPanel"> - <div - class="handle-button" - :style="{ top: buttonTop + 'px', 'background-color': theme }" - @click="show = !show" - > - <i :class="show ? 'el-icon-close' : 'el-icon-setting'" /> - </div> - <div class="rightPanel-items"> - <slot /> - </div> - </div> - </div> -</template> - -<script> -import { addClass, removeClass } from "@/utils"; - -export default { - name: "RightPanel", - props: { - clickNotClose: { - default: false, - type: Boolean - }, - buttonTop: { - default: 250, - type: Number - } - }, - data() { - return { - show: false - }; - }, - computed: { - theme() { - return this.$store.state.settings.theme; - } - }, - watch: { - show(value) { - if (value && !this.clickNotClose) { - this.addEventClick(); - } - if (value) { - addClass(document.body, "showRightPanel"); - } else { - removeClass(document.body, "showRightPanel"); - } - } - }, - mounted() { - this.insertToBody(); - }, - beforeDestroy() { - const elx = this.$refs.rightPanel; - elx.remove(); - }, - methods: { - addEventClick() { - window.addEventListener("click", this.closeSidebar); - }, - closeSidebar(evt) { - const parent = evt.target.closest(".rightPanel"); - if (!parent) { - this.show = false; - window.removeEventListener("click", this.closeSidebar); - } - }, - insertToBody() { - const elx = this.$refs.rightPanel; - const body = document.querySelector("body"); - body.insertBefore(elx, body.firstChild); - } - } -}; -</script> - -<style> -.showRightPanel { - overflow: hidden; - position: relative; - width: calc(100% - 15px); -} -</style> - -<style lang="scss" scoped> -.rightPanel-background { - position: fixed; - top: 0; - left: 0; - opacity: 0; - transition: opacity 0.3s cubic-bezier(0.7, 0.3, 0.1, 1); - background: rgba(0, 0, 0, 0.2); - z-index: -1; -} - -.rightPanel { - width: 100%; - max-width: 260px; - height: 100vh; - position: fixed; - top: 0; - right: 0; - box-shadow: 0px 0px 15px 0px rgba(0, 0, 0, 0.05); - transition: all 0.25s cubic-bezier(0.7, 0.3, 0.1, 1); - transform: translate(100%); - background: #fff; - z-index: 40000; -} - -.show { - transition: all 0.3s cubic-bezier(0.7, 0.3, 0.1, 1); - - .rightPanel-background { - z-index: 20000; - opacity: 1; - width: 100%; - height: 100%; - } - - .rightPanel { - transform: translate(0); - } -} - -.handle-button { - width: 48px; - height: 48px; - position: absolute; - left: -48px; - text-align: center; - font-size: 24px; - border-radius: 6px 0 0 6px !important; - z-index: 0; - pointer-events: auto; - cursor: pointer; - color: #fff; - line-height: 48px; - i { - font-size: 24px; - line-height: 48px; - } -} -</style> diff --git a/WebSite/src/components/Screenfull/index.vue b/WebSite/src/components/Screenfull/index.vue deleted file mode 100644 index 69e328be61a7061cc68112a660995e1834089384..0000000000000000000000000000000000000000 --- a/WebSite/src/components/Screenfull/index.vue +++ /dev/null @@ -1,63 +0,0 @@ -<template> - <div> - <svg-icon - :icon-class="isFullscreen ? 'exit-fullscreen' : 'fullscreen'" - @click="click" - /> - </div> -</template> - -<script> -import screenfull from "screenfull"; - -export default { - name: "Screenfull", - data() { - return { - isFullscreen: false - }; - }, - mounted() { - this.init(); - }, - beforeDestroy() { - this.destroy(); - }, - methods: { - click() { - if (!screenfull.enabled) { - this.$message({ - message: "you browser can not work", - type: "warning" - }); - return false; - } - screenfull.toggle(); - }, - change() { - this.isFullscreen = screenfull.isFullscreen; - }, - init() { - if (screenfull.enabled) { - screenfull.on("change", this.change); - } - }, - destroy() { - if (screenfull.enabled) { - screenfull.off("change", this.change); - } - } - } -}; -</script> - -<style scoped> -.screenfull-svg { - display: inline-block; - cursor: pointer; - fill: #5a5e66; - width: 20px; - height: 20px; - vertical-align: 10px; -} -</style> diff --git a/WebSite/src/components/SelectTree/index.vue b/WebSite/src/components/SelectTree/index.vue deleted file mode 100644 index 28637e02b8619a64ba034c8132c90994cb4877ca..0000000000000000000000000000000000000000 --- a/WebSite/src/components/SelectTree/index.vue +++ /dev/null @@ -1,201 +0,0 @@ -<!-- - @Descripttion: - @Author: gong qun - @Date: 2020-06-18 10:25:12 - @LastEditors: gong qun - @LastEditTime: 2020-06-18 10:25:12 ---> -<template> - <el-select - :value="valueTitle" - :clearable="clearable" - @clear="clearSelect" - :placeholder="placeholder" - ref="select" - :filterable="filterable" - :filter-method="filterMethod" - style="width:100%" - > - <el-option :value="valueTitle" :label="valueTitle"> - <el-tree - id="tree-option" - ref="selectTree" - :data="options" - :props="props" - :node-key="props.value" - :default-expanded-keys="defaultExpandedKey" - :default-expand-all="true" - @node-click="handleNodeClick" - :filter-node-method="filterNode" - :expand-on-click-node="false" - > - </el-tree> - </el-option> - </el-select> -</template> - -<script> -export default { - name: "select-tree", - props: { - /* 閰嶇疆椤� */ - props: { - type: Object, - default: () => { - return { - value: "id", // ID瀛楁鍚� - label: "name", // 鏄剧ず鍚嶇О - children: "children" // 瀛愮骇瀛楁鍚� - }; - } - }, - /* 閫夐」鍒楄〃锛堟爲锛� */ - options: { - type: Array, - default: () => { - return []; - } - }, - /* 鍒濆鍊� */ - value: { - type: String, - default: () => { - return null; - } - }, - /* 鍙竻绌洪€夐」 */ - clearable: { - type: Boolean, - default: () => { - return true; - } - }, - /* 閫変腑鍚庨殣钘忎笅鎷夋 */ - autoHide: { - type: Boolean, - default: () => { - return true; - } - }, - /* 鏄惁鍙悳绱� */ - filterable: { - type: Boolean, - default: () => { - return true; - } - }, - /* 鎻愮ず鏂囧瓧 */ - placeholder: { - type: String, - default: () => { - return "璇烽€夋嫨"; - } - } - }, - data() { - return { - valueId: this.value, // 鍒濆鍊� - valueTitle: "", - defaultExpandedKey: [] - }; - }, - mounted() { - this.initHandle(); - }, - methods: { - // 鍒濆鍖栧€� - initHandle() { - if (this.valueId) { - this.valueTitle = this.$refs.selectTree.getNode(this.valueId).data[ - this.props.label - ]; // 鍒濆鍖栨樉绀� - this.$refs.selectTree.setCurrentKey(this.valueId); // 璁剧疆榛樿閫変腑 - this.defaultExpandedKey = [this.valueId]; // 璁剧疆榛樿灞曞紑 - } - this.$nextTick(() => { - let scrollWrap = document.querySelectorAll( - ".el-scrollbar .el-select-dropdown__wrap" - )[0]; - let scrollBar = document.querySelectorAll( - ".el-scrollbar .el-scrollbar__bar" - ); - scrollWrap.style.cssText = - "margin: 0px; max-height: none; overflow: hidden;"; - scrollBar.forEach(ele => (ele.style.width = 0)); - }); - }, - // 鍒囨崲閫夐」 - handleNodeClick(node) { - this.valueTitle = node[this.props.label]; - this.valueId = node[this.props.value]; - this.$emit("change", this.valueId); - this.defaultExpandedKey = []; - if (this.autoHide) { - this.$refs.select.blur(); - } - this.filterMethod(null); - }, - // 娓呴櫎閫変腑 - clearSelect() { - this.valueTitle = ""; - this.valueId = null; - this.defaultExpandedKey = []; - this.clearSelected(); - this.$emit("change", null); - this.filterMethod(null); - }, - /* 娓呯┖閫変腑鏍峰紡 */ - clearSelected() { - let allNode = document.querySelectorAll("#tree-option .el-tree-node"); - allNode.forEach(element => element.classList.remove("is-current")); - }, - /* 绛涢€夎妭鐐� */ - filterMethod(val) { - this.$refs.selectTree.filter(val); - }, - filterNode(value, data) { - if (!value) return true; - return ( - data[this.props.label].toLowerCase().indexOf(value.toLowerCase()) !== -1 - ); - } - }, - watch: { - value() { - this.valueId = this.value; - this.initHandle(); - } - } -}; -</script> - -<style scoped> -.el-scrollbar .el-scrollbar__view .el-select-dropdown__item { - height: auto; - max-height: 274px; - padding: 0; - overflow: hidden; - overflow-y: auto; -} -.el-select-dropdown__item.selected { - font-weight: normal; -} -ul li >>> .el-tree .el-tree-node__content { - height: auto; - padding: 0 20px; -} -.el-tree-node__label { - font-weight: normal; -} -.el-tree >>> .is-current .el-tree-node__label { - color: #409eff; - font-weight: 700; -} -.el-tree >>> .is-current .el-tree-node__children .el-tree-node__label { - color: #606266; - font-weight: normal; -} -.el-select-dropdown__list { - padding: 0px; -} -</style> diff --git a/WebSite/src/components/SelectUser/index.vue b/WebSite/src/components/SelectUser/index.vue deleted file mode 100644 index b909e8de141ac70379a2e8cb205c003b749615d6..0000000000000000000000000000000000000000 --- a/WebSite/src/components/SelectUser/index.vue +++ /dev/null @@ -1,97 +0,0 @@ -<!-- - * @Description: - * @Autor: dong jun hua - * @Date: 2020-06-11 13:21:28 - * @LastEditors: dong jun hua - * @LastEditTime: 2020-07-15 17:33:39 ---> -<template> - <el-dialog - :visible.sync="visible" - width="30%" - :show-close="false" - :close-on-click-modal="false" - > - <span slot="title"> - <i class="el-icon-user"> 閫夋嫨鐢ㄦ埛</i> - </span> - <el-row :gutter="20"> - <el-col - v-for="item in userList" - :key="item.id" - :item="item" - :sm="24" - :md="12" - :lg="8" - > - <div @click="handleSelectUser(item.id)"> - <el-card - :class="{ - 'box-card': true, - 'box-card-selected': selectedUserId === item.id - }" - :shadow="selectedUserId === item.id ? 'always' : 'hover'" - > - <el-radio v-model="selectedUserId" :label="item.id"> - {{ `${item.name}` }} - </el-radio> - </el-card> - </div> - </el-col> - </el-row> - <span slot="footer" class="dialog-footer tright"> - <el-button type="primary" @click="handleConfirm">纭畾</el-button> - </span> - </el-dialog> -</template> - -<script> -export default { - name: "SelectUser", - props: { - visible: { - type: Boolean, - default: false - }, - userList: { - type: Array, - default: () => [] - } - }, - data() { - return { - selectedUserId: "" - }; - }, - watch: { - visible(val) { - if (val) { - this.selectedUserId = this.userList[0].id; - } - } - }, - methods: { - handleSelectUser(id) { - this.selectedUserId = id; - }, - handleConfirm() { - this.$emit("handle-confirm", this.selectedUserId); - this.$emit("update:visible", false); - } - } -}; -</script> - -<style scoped> -.el-col { - margin-bottom: 10px; -} -.box-card { - cursor: pointer; - border-color: #dcdfe6; -} -.box-card-selected { - background: rgb(236, 245, 255); - border-color: rgb(102, 177, 255); -} -</style> diff --git a/WebSite/src/components/SelectUserCheck/index.vue b/WebSite/src/components/SelectUserCheck/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..5e9f62341221f04c72c34064a5d4f2012d31a044 --- /dev/null +++ b/WebSite/src/components/SelectUserCheck/index.vue @@ -0,0 +1,268 @@ +<!-- + @Descripttion: + @Author: wangchao + @Date: 2020-08-27 13:46:45 + @LastEditors: wangchao + @LastEditTime: 2020-06-18 13:46:45 +--> +<template> + <el-dialog + title="娣诲姞閮ㄩ棬" + v-model="dialogSelectDept" + width="80%" + :show-close="false" + :close-on-click-modal="false" + > + <el-row :gutter="20"> + <el-col :span="6"> + <el-input + placeholder="璇疯緭鍏ラ儴闂ㄧ紪鍙�" + clearable + v-model="checkInfo.code" + ></el-input> + </el-col> + <el-col :span="6"> + <el-input + placeholder="璇疯緭鍏ラ儴闂ㄥ悕绉�" + clearable + v-model="checkInfo.name" + ></el-input> + </el-col> + <el-col :span="6"> + <el-button + size="mini" + type="primary" + plain + icon="el-icon-search" + @click="checkList" + >鏌ヨ</el-button + > + </el-col> + </el-row> + <el-table + v-loading="loading" + class="mtop20" + ref="multipleTable" + :data="userList" + fit + tooltip-effect="dark" + style="width: 100%" + :row-key="getRowKey" + @selection-change="handleSelectionChange" + > + <el-table-column type="selection" width="55" :reserve-selection="true"> + </el-table-column> + <el-table-column prop="code" label="閮ㄩ棬缂栧彿"> </el-table-column> + <el-table-column prop="name" label="閮ㄩ棬鍚嶇О"> </el-table-column> + </el-table> + <div + class="checkRow mtop20" + style="display: flex" + v-show="total && total > 0" + > + <el-checkbox + v-model="checkedAll" + :disabled="isHave" + style="margin-top: 6px" + :indeterminate="isIndeterminate" + @change="onSelectAllChange" + >鍏ㄩ€�</el-checkbox + > + <el-pagination + background + @size-change="handleSizeChange" + @current-change="handleCurrentChange" + :current-page="checkInfo.pageNO" + :page-sizes="[5, 10, 20, 30]" + :page-size="checkInfo.pageSize" + layout="total, sizes, prev, pager, next, jumper" + :total="total" + > + </el-pagination> + </div> + <el-card class="mtop20"> + 寰呭姞鍏ョ敤鎴�:<el-tag + class="ml-10" + :key="index" + closable + v-for="(tag, index) in deptSelectChild" + @close="handleDelete(tag)" + > + {{ tag.name }} + </el-tag> + </el-card> + <template #footer> + <el-button @click="handleClose">鍙� 娑�</el-button> + <el-button type="primary" @click="handleOk">纭� 瀹�</el-button> + </template> + </el-dialog> +</template> +<script> +import { reactive, toRefs, ref, computed, onMounted, nextTick } from 'vue'; +import ProjectLibrary from '@/api/projectLibrary'; +export default { + props: { + deptDialog: { + type: Boolean + }, + deptSelect: { + type: Array + } + }, + setup(props, cxt) { + onMounted(() => { + console.log('鎴戣繘鏉ヤ簡'); + getListDept(); + }); + const multipleTable = ref(null); + const state = reactive({ + checkedAll: false, + userList: [], + checkInfo: { + code: '', + name: '', + pageIndex: 1, + pageSize: 10 + }, + total: null, + loading: false, + isIndeterminate: false + // multipleSelection: [] + }); + const isHave = computed(() => { + let flag = null; + if (state.userList.length > 0) { + flag = false; + } else { + flag = true; + } + return flag; + }); + + const deptSelectChild = computed({ + get() { + console.log('get', props.deptSelect); + return props.deptSelect; + }, + set(val) { + console.log('set', val); + cxt.emit('update:deptSelect', val); + } + }); + const dialogSelectDept = computed({ + get() { + return props.modelValue; + }, + set(val) { + cxt.emit('update:modelValue', val); + // handleSelectAll(); + } + }); + const getListDept = () => { + console.log('杩涙潵浜�'); + let userList = sessionStorage.getItem('userList'); + if (userList) { + state.userList = JSON.parse(userList); + nextTick(() => { + console.log('111', props.deptSelect); + console.log('222', state.userList); + props.deptSelect.forEach(row => { + state.userList.forEach(item => { + if (row.id === item.id) { + multipleTable.value.toggleRowSelection(item, true); + } + }); + }); + }); + return; + } + state.loading = true; + ProjectLibrary.queryDeptPage(state.checkInfo).then(res => { + state.loading = false; + state.userList = res.data; + sessionStorage.setItem('userList', JSON.stringify(res.data)); + state.total = res.data.total; + }); + }; + // 鏌ヨ + const checkList = () => { + state.checkInfo.pageNO = 1; + state.checkInfo.pageSize = 10; + getListDept(); + }; + // 璺ㄩ〉璁板繂閫変腑蹇呭~ + const getRowKey = row => { + return row.id; + }; + // 鑷畾涔夊叏閫� + const onSelectAllChange = () => { + multipleTable.value.toggleAllSelection(); + handleSelectAll(); + }; + //姣忛〉x鏉� + const handleSizeChange = val => { + state.checkInfo.pageSize = val; + getListDept(); + }; + //褰撳墠x椤� + const handleCurrentChange = val => { + state.checkInfo.pageNO = val; + getListDept(); + }; + // 鍒犻櫎宸插姞鍏ョ殑鐢ㄦ埛淇℃伅 + const handleDelete = tag => { + let selectd = deptSelectChild.value.filter(t => t.id === tag.id)[0]; + multipleTable.value.toggleRowSelection(selectd, false); + }; + // 鍒楄〃閫夐」鍙戠敓鍙樺姩瑙﹀彂 + const handleSelectionChange = val => { + deptSelectChild.value = val; + nextTick(() => { + handleSelectAll(); + }); + }; + // 鐩戝惉鏄惁鍏ㄩ€� + const handleSelectAll = () => { + state.checkedAll = state.userList.every(p => + deptSelectChild.value.map(q => q.id).includes(p.id) + ); + state.isIndeterminate = deptSelectChild.value.length > 0; + if (state.checkedAll) { + state.isIndeterminate = false; + } + }; + const clearSelcetUser = () => { + deptSelectChild.value = []; + multipleTable.value.clearSelection(); + }; + const handleClose = () => { + dialogSelectDept.value = false; + // clearSelcetUser(); + }; + const handleOk = () => { + dialogSelectDept.value = false; + // clearSelcetUser(); + }; + return { + ...toRefs(state), + isHave, + dialogSelectDept, + getRowKey, + checkList, + onSelectAllChange, + handleSizeChange, + handleCurrentChange, + deptSelectChild, + handleDelete, + multipleTable, + handleSelectionChange, + handleSelectAll, + clearSelcetUser, + handleClose, + handleOk + }; + } +}; +</script> + +<style lang="scss" scoped></style> diff --git a/WebSite/src/components/SelectUserCheckG/index.vue b/WebSite/src/components/SelectUserCheckG/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..a6c3ff42f5c9b7777710e7a52b5cbeee140e842f --- /dev/null +++ b/WebSite/src/components/SelectUserCheckG/index.vue @@ -0,0 +1,266 @@ +<!-- + @Descripttion: + @Author: wangchao + @Date: 2020-08-27 13:46:45 + @LastEditors: wangchao + @LastEditTime: 2020-06-18 13:46:45 +--> +<template> + <el-dialog + title="娣诲姞閮ㄩ棬" + v-model="dialogSelectDept" + width="80%" + :show-close="false" + :close-on-click-modal="false" + > + <el-row :gutter="20"> + <el-col :span="6"> + <el-input + placeholder="璇疯緭鍏ラ儴闂ㄧ紪鍙�" + clearable + v-model="checkInfo.code" + ></el-input> + </el-col> + <el-col :span="6"> + <el-input + placeholder="璇疯緭鍏ラ儴闂ㄥ悕绉�" + clearable + v-model="checkInfo.name" + ></el-input> + </el-col> + <el-col :span="6"> + <el-button + size="mini" + type="primary" + plain + icon="el-icon-search" + @click="checkList" + >鏌ヨ</el-button + > + </el-col> + </el-row> + <el-table + v-loading="loading" + class="mtop20" + ref="multipleTable" + :data="userList" + fit + tooltip-effect="dark" + style="width: 100%" + :row-key="getRowKey" + @selection-change="handleSelectionChange" + > + <el-table-column type="selection" width="55" :reserve-selection="true"> + </el-table-column> + <el-table-column prop="code" label="閮ㄩ棬缂栧彿"> </el-table-column> + <el-table-column prop="name" label="閮ㄩ棬鍚嶇О"> </el-table-column> + </el-table> + <div + class="checkRow mtop20" + style="display: flex" + v-show="total && total > 0" + > + <el-checkbox + v-model="checkedAll" + :disabled="isHave" + style="margin-top: 6px" + :indeterminate="isIndeterminate" + @change="onSelectAllChange" + >鍏ㄩ€�</el-checkbox + > + <el-pagination + background + @size-change="handleSizeChange" + @current-change="handleCurrentChange" + :current-page="checkInfo.pageNO" + :page-sizes="[5, 10, 20, 30]" + :page-size="checkInfo.pageSize" + layout="total, sizes, prev, pager, next, jumper" + :total="total" + > + </el-pagination> + </div> + <el-card class="mtop20"> + 寰呭姞鍏ョ敤鎴�:<el-tag + class="ml-10" + :key="index" + closable + v-for="(tag, index) in deptSelectChild" + @close="handleDelete(tag)" + > + {{ tag.name }} + </el-tag> + </el-card> + <template #footer> + <el-button @click="handleClose">鍙� 娑�</el-button> + <el-button type="primary" @click="handleOk">纭� 瀹�</el-button> + </template> + </el-dialog> +</template> +<script> +import { reactive, toRefs, ref, computed, onMounted, nextTick } from 'vue'; +import ProjectLibrary from '@/api/projectLibrary'; +export default { + props: { + deptDialog: { + type: Boolean + }, + deptSelectG: { + type: Array + } + }, + setup(props, cxt) { + onMounted(() => { + console.log('鎴戣繘鏉ヤ簡'); + getListDept(); + }); + const multipleTable = ref(null); + const state = reactive({ + checkedAll: false, + userList: [], + checkInfo: { + code: '', + name: '', + pageIndex: 1, + pageSize: 10 + }, + total: null, + loading: false, + isIndeterminate: false + // multipleSelection: [] + }); + const isHave = computed(() => { + let flag = null; + if (state.userList.length > 0) { + flag = false; + } else { + flag = true; + } + return flag; + }); + + const deptSelectChild = computed({ + get() { + console.log('get', props.deptSelect); + return props.deptSelectG; + }, + set(val) { + console.log('set', val); + cxt.emit('update:deptSelectG', val); + } + }); + const dialogSelectDept = computed({ + get() { + return props.modelValue; + }, + set(val) { + cxt.emit('update:modelValue', val); + // handleSelectAll(); + } + }); + const getListDept = () => { + console.log('杩涙潵浜�'); + let userList = sessionStorage.getItem('userList'); + if (userList) { + state.userList = JSON.parse(userList); + nextTick(() => { + props.deptSelectG.forEach(row => { + state.userList.forEach(item => { + if (row.id === item.id) { + multipleTable.value.toggleRowSelection(item, true); + } + }); + }); + }); + return; + } + state.loading = true; + ProjectLibrary.queryDeptPage(state.checkInfo).then(res => { + state.loading = false; + state.userList = res.data; + sessionStorage.setItem('userList', JSON.stringify(res.data)); + state.total = res.data.total; + }); + }; + // 鏌ヨ + const checkList = () => { + state.checkInfo.pageNO = 1; + state.checkInfo.pageSize = 10; + getListDept(); + }; + // 璺ㄩ〉璁板繂閫変腑蹇呭~ + const getRowKey = row => { + return row.id; + }; + // 鑷畾涔夊叏閫� + const onSelectAllChange = () => { + multipleTable.value.toggleAllSelection(); + handleSelectAll(); + }; + //姣忛〉x鏉� + const handleSizeChange = val => { + state.checkInfo.pageSize = val; + getListDept(); + }; + //褰撳墠x椤� + const handleCurrentChange = val => { + state.checkInfo.pageNO = val; + getListDept(); + }; + // 鍒犻櫎宸插姞鍏ョ殑鐢ㄦ埛淇℃伅 + const handleDelete = tag => { + let selectd = deptSelectChild.value.filter(t => t.id === tag.id)[0]; + multipleTable.value.toggleRowSelection(selectd, false); + }; + // 鍒楄〃閫夐」鍙戠敓鍙樺姩瑙﹀彂 + const handleSelectionChange = val => { + deptSelectChild.value = val; + nextTick(() => { + handleSelectAll(); + }); + }; + // 鐩戝惉鏄惁鍏ㄩ€� + const handleSelectAll = () => { + state.checkedAll = state.userList.every(p => + deptSelectChild.value.map(q => q.id).includes(p.id) + ); + state.isIndeterminate = deptSelectChild.value.length > 0; + if (state.checkedAll) { + state.isIndeterminate = false; + } + }; + const clearSelcetUser = () => { + deptSelectChild.value = []; + multipleTable.value.clearSelection(); + }; + const handleClose = () => { + dialogSelectDept.value = false; + // clearSelcetUser(); + }; + const handleOk = () => { + dialogSelectDept.value = false; + // clearSelcetUser(); + }; + return { + ...toRefs(state), + isHave, + dialogSelectDept, + getRowKey, + checkList, + onSelectAllChange, + handleSizeChange, + handleCurrentChange, + deptSelectChild, + handleDelete, + multipleTable, + handleSelectionChange, + handleSelectAll, + clearSelcetUser, + handleClose, + handleOk + }; + } +}; +</script> + +<style lang="scss" scoped></style> diff --git a/WebSite/src/components/Share/DropdownMenu.vue b/WebSite/src/components/Share/DropdownMenu.vue deleted file mode 100644 index 20214e66e91a64e79ad2a810918fce25b3163c8e..0000000000000000000000000000000000000000 --- a/WebSite/src/components/Share/DropdownMenu.vue +++ /dev/null @@ -1,111 +0,0 @@ -<template> - <div :class="{ active: isActive }" class="share-dropdown-menu"> - <div class="share-dropdown-menu-wrapper"> - <span class="share-dropdown-menu-title" @click.self="clickTitle">{{ - title - }}</span> - <div - v-for="(item, index) of items" - :key="index" - class="share-dropdown-menu-item" - > - <a v-if="item.href" :href="item.href" target="_blank">{{ - item.title - }}</a> - <span v-else>{{ item.title }}</span> - </div> - </div> - </div> -</template> - -<script> -export default { - props: { - items: { - type: Array, - default: function() { - return []; - } - }, - title: { - type: String, - default: "vue" - } - }, - data() { - return { - isActive: false - }; - }, - methods: { - clickTitle() { - this.isActive = !this.isActive; - } - } -}; -</script> - -<style lang="scss"> -$n: 9; //鍜宨tems.length 鐩稿悓 -$t: 0.1s; -.share-dropdown-menu { - width: 250px; - position: relative; - z-index: 1; - height: auto !important; - &-title { - width: 100%; - display: block; - cursor: pointer; - background: black; - color: white; - height: 60px; - line-height: 60px; - font-size: 20px; - text-align: center; - z-index: 2; - transform: translate3d(0, 0, 0); - } - &-wrapper { - position: relative; - } - &-item { - text-align: center; - position: absolute; - width: 100%; - background: #e0e0e0; - color: #000; - line-height: 60px; - height: 60px; - cursor: pointer; - font-size: 18px; - overflow: hidden; - opacity: 1; - transition: transform 0.28s ease; - &:hover { - background: black; - color: white; - } - @for $i from 1 through $n { - &:nth-of-type(#{$i}) { - z-index: -1; - transition-delay: $i * $t; - transform: translate3d(0, -60px, 0); - } - } - } - &.active { - .share-dropdown-menu-wrapper { - z-index: 1; - } - .share-dropdown-menu-item { - @for $i from 1 through $n { - &:nth-of-type(#{$i}) { - transition-delay: ($n - $i) * $t; - transform: translate3d(0, ($i - 1) * 60px, 0); - } - } - } - } -} -</style> diff --git a/WebSite/src/components/SizeSelect/index.vue b/WebSite/src/components/SizeSelect/index.vue deleted file mode 100644 index d4aa5ba913060adb736d7fdd488ad92286c44544..0000000000000000000000000000000000000000 --- a/WebSite/src/components/SizeSelect/index.vue +++ /dev/null @@ -1,60 +0,0 @@ -<template> - <el-dropdown trigger="click" @command="handleSetSize"> - <div> - <svg-icon class-name="size-icon" icon-class="size" /> - </div> - <el-dropdown-menu slot="dropdown"> - <el-dropdown-item - v-for="item of sizeOptions" - :key="item.value" - :disabled="size === item.value" - :command="item.value" - > - {{ item.label }} - </el-dropdown-item> - </el-dropdown-menu> - </el-dropdown> -</template> - -<script> -export default { - data() { - return { - sizeOptions: [ - { label: "Default", value: "default" }, - { label: "Medium", value: "medium" }, - { label: "Small", value: "small" }, - { label: "Mini", value: "mini" } - ] - }; - }, - computed: { - size() { - return this.$store.getters.size; - } - }, - methods: { - handleSetSize(size) { - this.$ELEMENT.size = size; - this.$store.dispatch("app/setSize", size); - this.refreshView(); - this.$message({ - message: "Switch Size Success", - type: "success" - }); - }, - refreshView() { - // In order to make the cached page re-rendered - this.$store.dispatch("tagsView/delAllCachedViews", this.$route); - - const { fullPath } = this.$route; - - this.$nextTick(() => { - this.$router.replace({ - path: "/redirect" + fullPath - }); - }); - } - } -}; -</script> diff --git a/WebSite/src/components/Sticky/index.vue b/WebSite/src/components/Sticky/index.vue deleted file mode 100644 index 332c613db775626ed72a6c50c738e47fb28f275c..0000000000000000000000000000000000000000 --- a/WebSite/src/components/Sticky/index.vue +++ /dev/null @@ -1,97 +0,0 @@ -<template> - <div :style="{ height: height + 'px', zIndex: zIndex }"> - <div - :class="className" - :style="{ - top: isSticky ? stickyTop + 'px' : '', - zIndex: zIndex, - position: position, - width: width, - height: height + 'px' - }" - > - <slot> - <div>sticky</div> - </slot> - </div> - </div> -</template> - -<script> -export default { - name: "Sticky", - props: { - stickyTop: { - type: Number, - default: 0 - }, - zIndex: { - type: Number, - default: 1 - }, - className: { - type: String, - default: "" - } - }, - data() { - return { - active: false, - position: "", - width: undefined, - height: undefined, - isSticky: false - }; - }, - mounted() { - this.height = this.$el.getBoundingClientRect().height; - window.addEventListener("scroll", this.handleScroll); - window.addEventListener("resize", this.handleResize); - }, - activated() { - this.handleScroll(); - }, - destroyed() { - window.removeEventListener("scroll", this.handleScroll); - window.removeEventListener("resize", this.handleResize); - }, - methods: { - sticky() { - if (this.active) { - return; - } - this.position = "fixed"; - this.active = true; - this.width = this.width + "px"; - this.isSticky = true; - }, - handleReset() { - if (!this.active) { - return; - } - this.reset(); - }, - reset() { - this.position = ""; - this.width = "auto"; - this.active = false; - this.isSticky = false; - }, - handleScroll() { - const width = this.$el.getBoundingClientRect().width; - this.width = width || "auto"; - const offsetTop = this.$el.getBoundingClientRect().top; - if (offsetTop < this.stickyTop) { - this.sticky(); - return; - } - this.handleReset(); - }, - handleResize() { - if (this.isSticky) { - this.width = this.$el.getBoundingClientRect().width + "px"; - } - } - } -}; -</script> diff --git a/WebSite/src/components/SvgIcon/index.vue b/WebSite/src/components/SvgIcon/index.vue index 1f16cb80f9e74cf743fc6875ffa2587b24167020..909549eb6bfc41791ab3afbec62de8e0e0786a87 100644 --- a/WebSite/src/components/SvgIcon/index.vue +++ b/WebSite/src/components/SvgIcon/index.vue @@ -1,21 +1,28 @@ +<!-- + * @Description: + * @Autor: dongjunhua + * @Date: 2020-12-18 10:56:19 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-01-05 16:51:44 +--> <template> <div v-if="isExternal" :style="styleExternalIcon" class="svg-external-icon svg-icon" - v-on="$listeners" + v-bind="$attrs" /> - <svg v-else :class="svgClass" aria-hidden="true" v-on="$listeners"> - <use :href="iconName" /> + <svg v-else :class="svgClass" aria-hidden="true" v-bind="$attrs"> + <use :xlink:href="iconName" /> </svg> </template> <script> // doc: https://panjiachen.github.io/vue-element-admin-site/feature/component/svg-icon.html#usage -import { isExternal } from "@/utils/validate"; +import { isExternal } from '@/utils/validate'; export default { - name: "SvgIcon", + name: 'SvgIcon', props: { iconClass: { type: String, @@ -23,7 +30,7 @@ export default { }, className: { type: String, - default: "" + default: '' } }, computed: { @@ -35,15 +42,15 @@ export default { }, svgClass() { if (this.className) { - return "svg-icon " + this.className; + return 'svg-icon ' + this.className; } else { - return "svg-icon"; + return 'svg-icon'; } }, styleExternalIcon() { return { mask: `url(${this.iconClass}) no-repeat 50% 50%`, - "-webkit-mask": `url(${this.iconClass}) no-repeat 50% 50%` + '-webkit-mask': `url(${this.iconClass}) no-repeat 50% 50%` }; } } diff --git a/WebSite/src/components/TextField/index.vue b/WebSite/src/components/TextField/index.vue deleted file mode 100644 index 4f1995a50d011c6892d8515ed9c7a99fce7a68d9..0000000000000000000000000000000000000000 --- a/WebSite/src/components/TextField/index.vue +++ /dev/null @@ -1,31 +0,0 @@ -<!-- - * @Descripttion: - * @Author: dongjunhua - * @Date: 2020-08-16 13:43:13 - * @LastEditors: dongjunhua - * @LastEditTime: 2020-09-13 15:18:40 ---> -<template> - <div class="text-field"> - <slot></slot> - </div> -</template> -<script> -export default { - name: "TextField" -}; -</script> -<style scoped> -.text-field { - width: 100%; - border: 1px solid #ebeef5; - border-radius: 4px; - background-color: #fafafa; - padding: 20px; - font-size: 12px; -} - -.text-field span { - line-height: 24px; -} -</style> diff --git a/WebSite/src/components/TextHoverEffect/Mallki.vue b/WebSite/src/components/TextHoverEffect/Mallki.vue deleted file mode 100644 index 7a7efab2713a3d7f9f3e6d5b7851b56a7b308a58..0000000000000000000000000000000000000000 --- a/WebSite/src/components/TextHoverEffect/Mallki.vue +++ /dev/null @@ -1,113 +0,0 @@ -<template> - <a :class="className" class="link--mallki" href="#"> - {{ text }} - <span :data-letters="text" /> - <span :data-letters="text" /> - </a> -</template> - -<script> -export default { - props: { - className: { - type: String, - default: "" - }, - text: { - type: String, - default: "vue-element-admin" - } - } -}; -</script> - -<style> -/* Mallki */ - -.link--mallki { - font-weight: 800; - color: #4dd9d5; - font-family: "Dosis", sans-serif; - -webkit-transition: color 0.5s 0.25s; - transition: color 0.5s 0.25s; - overflow: hidden; - position: relative; - display: inline-block; - line-height: 1; - outline: none; - text-decoration: none; -} - -.link--mallki:hover { - -webkit-transition: none; - transition: none; - color: transparent; -} - -.link--mallki::before { - content: ""; - width: 100%; - height: 6px; - margin: -3px 0 0 0; - background: #3888fa; - position: absolute; - left: 0; - top: 50%; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - -webkit-transition: -webkit-transform 0.4s; - transition: transform 0.4s; - -webkit-transition-timing-function: cubic-bezier(0.7, 0, 0.3, 1); - transition-timing-function: cubic-bezier(0.7, 0, 0.3, 1); -} - -.link--mallki:hover::before { - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); -} - -.link--mallki span { - position: absolute; - height: 50%; - width: 100%; - left: 0; - top: 0; - overflow: hidden; -} - -.link--mallki span::before { - content: attr(data-letters); - color: red; - position: absolute; - left: 0; - width: 100%; - color: #3888fa; - -webkit-transition: -webkit-transform 0.5s; - transition: transform 0.5s; -} - -.link--mallki span:nth-child(2) { - top: 50%; -} - -.link--mallki span:first-child::before { - top: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); -} - -.link--mallki span:nth-child(2)::before { - bottom: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); -} - -.link--mallki:hover span::before { - -webkit-transition-delay: 0.3s; - transition-delay: 0.3s; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - -webkit-transition-timing-function: cubic-bezier(0.2, 1, 0.3, 1); - transition-timing-function: cubic-bezier(0.2, 1, 0.3, 1); -} -</style> diff --git a/WebSite/src/components/ThemePicker/index.vue b/WebSite/src/components/ThemePicker/index.vue deleted file mode 100644 index 3fc0c26e5bd700ba5dac14718d37deb11a06010c..0000000000000000000000000000000000000000 --- a/WebSite/src/components/ThemePicker/index.vue +++ /dev/null @@ -1,198 +0,0 @@ -<template> - <el-color-picker - v-model="theme" - :predefine="[ - '#409EFF', - '#1890ff', - '#304156', - '#212121', - '#11a983', - '#13c2c2', - '#6959CD', - '#f5222d' - ]" - class="theme-picker" - popper-class="theme-picker-dropdown" - /> -</template> - -<script> -const version = require("element-ui/package.json").version; // element-ui version from node_modules -const ORIGINAL_THEME = "#409EFF"; // default color - -export default { - data() { - return { - chalk: "", // content of theme-chalk css - theme: "" - }; - }, - computed: { - defaultTheme() { - return this.$store.state.settings.theme; - } - }, - watch: { - defaultTheme: { - handler: function(val, oldVal) { - this.theme = val; - }, - immediate: true - }, - async theme(val) { - const oldVal = this.chalk ? this.theme : ORIGINAL_THEME; - if (typeof val !== "string") return; - const themeCluster = this.getThemeCluster(val.replace("#", "")); - const originalCluster = this.getThemeCluster(oldVal.replace("#", "")); - console.log(themeCluster, originalCluster); - - const $message = this.$message({ - message: " Compiling the theme", - customClass: "theme-message", - type: "success", - duration: 0, - iconClass: "el-icon-loading" - }); - - const getHandler = (variable, id) => { - return () => { - const originalCluster = this.getThemeCluster( - ORIGINAL_THEME.replace("#", "") - ); - const newStyle = this.updateStyle( - this[variable], - originalCluster, - themeCluster - ); - - let styleTag = document.getElementById(id); - if (!styleTag) { - styleTag = document.createElement("style"); - styleTag.setAttribute("id", id); - document.head.appendChild(styleTag); - } - styleTag.innerText = newStyle; - }; - }; - - if (!this.chalk) { - const url = `https://unpkg.com/element-ui@${version}/lib/theme-chalk/index.css`; - await this.getCSSString(url, "chalk"); - } - - const chalkHandler = getHandler("chalk", "chalk-style"); - - chalkHandler(); - - const styles = [].slice - .call(document.querySelectorAll("style")) - .filter(style => { - const text = style.innerText; - return ( - new RegExp(oldVal, "i").test(text) && !/Chalk Variables/.test(text) - ); - }); - styles.forEach(style => { - const { innerText } = style; - if (typeof innerText !== "string") return; - style.innerText = this.updateStyle( - innerText, - originalCluster, - themeCluster - ); - }); - - this.$emit("change", val); - - $message.close(); - } - }, - - methods: { - updateStyle(style, oldCluster, newCluster) { - let newStyle = style; - oldCluster.forEach((color, index) => { - newStyle = newStyle.replace(new RegExp(color, "ig"), newCluster[index]); - }); - return newStyle; - }, - - getCSSString(url, variable) { - return new Promise(resolve => { - const xhr = new XMLHttpRequest(); - xhr.onreadystatechange = () => { - if (xhr.readyState === 4 && xhr.status === 200) { - this[variable] = xhr.responseText.replace(/@font-face{[^}]+}/, ""); - resolve(); - } - }; - xhr.open("GET", url); - xhr.send(); - }); - }, - - getThemeCluster(theme) { - const tintColor = (color, tint) => { - let red = parseInt(color.slice(0, 2), 16); - let green = parseInt(color.slice(2, 4), 16); - let blue = parseInt(color.slice(4, 6), 16); - - if (tint === 0) { - // when primary color is in its rgb space - return [red, green, blue].join(","); - } else { - red += Math.round(tint * (255 - red)); - green += Math.round(tint * (255 - green)); - blue += Math.round(tint * (255 - blue)); - - red = red.toString(16); - green = green.toString(16); - blue = blue.toString(16); - - return `#${red}${green}${blue}`; - } - }; - - const shadeColor = (color, shade) => { - let red = parseInt(color.slice(0, 2), 16); - let green = parseInt(color.slice(2, 4), 16); - let blue = parseInt(color.slice(4, 6), 16); - - red = Math.round((1 - shade) * red); - green = Math.round((1 - shade) * green); - blue = Math.round((1 - shade) * blue); - - red = red.toString(16); - green = green.toString(16); - blue = blue.toString(16); - - return `#${red}${green}${blue}`; - }; - - const clusters = [theme]; - for (let i = 0; i <= 9; i++) { - clusters.push(tintColor(theme, Number((i / 10).toFixed(2)))); - } - clusters.push(shadeColor(theme, 0.1)); - return clusters; - } - } -}; -</script> - -<style> -.theme-message, -.theme-picker-dropdown { - z-index: 99999 !important; -} - -.theme-picker .el-color-picker__trigger { - height: 26px !important; - width: 26px !important; - padding: 2px; -} - -.theme-picker-dropdown .el-color-dropdown__link-btn { - display: none; -} -</style> diff --git a/WebSite/src/components/Tinymce/components/EditorImage.vue b/WebSite/src/components/Tinymce/components/EditorImage.vue deleted file mode 100644 index 6cb6389d366e00c9e52f462ce97159d35cdfa5d7..0000000000000000000000000000000000000000 --- a/WebSite/src/components/Tinymce/components/EditorImage.vue +++ /dev/null @@ -1,126 +0,0 @@ -<template> - <div class="upload-container"> - <el-button - :style="{ background: color, borderColor: color }" - icon="el-icon-upload" - size="mini" - type="primary" - @click="dialogVisible = true" - > - upload - </el-button> - <el-dialog :visible.sync="dialogVisible"> - <el-upload - :multiple="true" - :file-list="fileList" - :show-file-list="true" - :on-remove="handleRemove" - :on-success="handleSuccess" - :before-upload="beforeUpload" - class="editor-slide-upload" - action="https://httpbin.org/post" - list-type="picture-card" - > - <el-button size="small" type="primary"> - Click upload - </el-button> - </el-upload> - <el-button @click="dialogVisible = false"> - Cancel - </el-button> - <el-button type="primary" @click="handleSubmit"> - Confirm - </el-button> - </el-dialog> - </div> -</template> - -<script> -// import { getToken } from 'api/qiniu' - -export default { - name: "EditorSlideUpload", - props: { - color: { - type: String, - default: "#1890ff" - } - }, - data() { - return { - dialogVisible: false, - listObj: {}, - fileList: [] - }; - }, - methods: { - checkAllSuccess() { - return Object.keys(this.listObj).every( - item => this.listObj[item].hasSuccess - ); - }, - handleSubmit() { - const arr = Object.keys(this.listObj).map(v => this.listObj[v]); - if (!this.checkAllSuccess()) { - this.$message( - "Please wait for all images to be uploaded successfully. If there is a network problem, please refresh the page and upload again!" - ); - return; - } - this.$emit("successCBK", arr); - this.listObj = {}; - this.fileList = []; - this.dialogVisible = false; - }, - handleSuccess(response, file) { - const uid = file.uid; - const objKeyArr = Object.keys(this.listObj); - for (let i = 0, len = objKeyArr.length; i < len; i++) { - if (this.listObj[objKeyArr[i]].uid === uid) { - this.listObj[objKeyArr[i]].url = response.files.file; - this.listObj[objKeyArr[i]].hasSuccess = true; - return; - } - } - }, - handleRemove(file) { - const uid = file.uid; - const objKeyArr = Object.keys(this.listObj); - for (let i = 0, len = objKeyArr.length; i < len; i++) { - if (this.listObj[objKeyArr[i]].uid === uid) { - delete this.listObj[objKeyArr[i]]; - return; - } - } - }, - beforeUpload(file) { - const _self = this; - const _URL = window.URL || window.webkitURL; - const fileName = file.uid; - this.listObj[fileName] = {}; - return new Promise((resolve, reject) => { - const img = new Image(); - img.src = _URL.createObjectURL(file); - img.onload = function() { - _self.listObj[fileName] = { - hasSuccess: false, - uid: file.uid, - width: this.width, - height: this.height - }; - }; - resolve(true); - }); - } - } -}; -</script> - -<style lang="scss" scoped> -.editor-slide-upload { - margin-bottom: 20px; - /deep/ .el-upload--picture-card { - width: 100%; - } -} -</style> diff --git a/WebSite/src/components/Tinymce/dynamicLoadScript.js b/WebSite/src/components/Tinymce/dynamicLoadScript.js deleted file mode 100644 index 667657dbad73bee4ca0ad275f824b5433822a37a..0000000000000000000000000000000000000000 --- a/WebSite/src/components/Tinymce/dynamicLoadScript.js +++ /dev/null @@ -1,61 +0,0 @@ -let callbacks = []; - -function loadedTinymce() { - // to fixed https://github.com/PanJiaChen/vue-element-admin/issues/2144 - // check is successfully downloaded script - return window.tinymce; -} - -const dynamicLoadScript = (src, callback) => { - const existingScript = document.getElementById(src); - const cb = callback || function() {}; - - if (!existingScript) { - const script = document.createElement("script"); - script.src = src; // src url for the third-party library being loaded. - script.id = src; - document.body.appendChild(script); - callbacks.push(cb); - const onEnd = "onload" in script ? stdOnEnd : ieOnEnd; - onEnd(script); - } - - if (existingScript && cb) { - if (loadedTinymce()) { - cb(null, existingScript); - } else { - callbacks.push(cb); - } - } - - function stdOnEnd(script) { - script.onload = function() { - // this.onload = null here is necessary - // because even IE9 works not like others - this.onerror = this.onload = null; - for (const cb of callbacks) { - cb(null, script); - } - callbacks = null; - }; - script.onerror = function() { - this.onerror = this.onload = null; - cb(new Error("Failed to load " + src), script); - }; - } - - function ieOnEnd(script) { - script.onreadystatechange = function() { - if (this.readyState !== "complete" && this.readyState !== "loaded") { - return; - } - this.onreadystatechange = null; - for (const cb of callbacks) { - cb(null, script); // there is no way to catch loading errors in IE8 - } - callbacks = null; - }; - } -}; - -export default dynamicLoadScript; diff --git a/WebSite/src/components/Tinymce/index.vue b/WebSite/src/components/Tinymce/index.vue deleted file mode 100644 index 628e057cf7add130d35a8f9c7449050922820d93..0000000000000000000000000000000000000000 --- a/WebSite/src/components/Tinymce/index.vue +++ /dev/null @@ -1,254 +0,0 @@ -<template> - <div - :class="{ fullscreen: fullscreen }" - class="tinymce-container" - :style="{ width: containerWidth }" - > - <textarea :id="tinymceId" class="tinymce-textarea" /> - <div class="editor-custom-btn-container"> - <editorImage - color="#1890ff" - class="editor-upload-btn" - @successCBK="imageSuccessCBK" - /> - </div> - </div> -</template> - -<script> -/** - * docs: - * https://panjiachen.github.io/vue-element-admin-site/feature/component/rich-editor.html#tinymce - */ -import editorImage from "./components/EditorImage"; -import plugins from "./plugins"; -import toolbar from "./toolbar"; -import load from "./dynamicLoadScript"; - -// why use this cdn, detail see https://github.com/PanJiaChen/tinymce-all-in-one -const tinymceCDN = - "https://cdn.jsdelivr.net/npm/tinymce-all-in-one@4.9.3/tinymce.min.js"; - -export default { - name: "Tinymce", - components: { editorImage }, - props: { - id: { - type: String, - default: function() { - return ( - "vue-tinymce-" + - +new Date() + - ((Math.random() * 1000).toFixed(0) + "") - ); - } - }, - value: { - type: String, - default: "" - }, - toolbar: { - type: Array, - required: false, - default() { - return []; - } - }, - menubar: { - type: String, - default: "file edit insert view format table" - }, - height: { - type: [Number, String], - required: false, - default: 360 - }, - width: { - type: [Number, String], - required: false, - default: "auto" - } - }, - data() { - return { - hasChange: false, - hasInit: false, - tinymceId: this.id, - fullscreen: false, - languageTypeList: { - en: "en", - zh: "zh_CN", - es: "es_MX", - ja: "ja" - } - }; - }, - computed: { - containerWidth() { - const width = this.width; - if (/^[\d]+(\.[\d]+)?$/.test(width)) { - // matches `100`, `'100'` - return `${width}px`; - } - return width; - } - }, - watch: { - value(val) { - if (!this.hasChange && this.hasInit) { - this.$nextTick(() => - window.tinymce.get(this.tinymceId).setContent(val || "") - ); - } - } - }, - mounted() { - this.init(); - }, - activated() { - if (window.tinymce) { - this.initTinymce(); - } - }, - deactivated() { - this.destroyTinymce(); - }, - destroyed() { - this.destroyTinymce(); - }, - methods: { - init() { - // dynamic load tinymce from cdn - load(tinymceCDN, err => { - if (err) { - this.$message.error(err.message); - return; - } - this.initTinymce(); - }); - }, - initTinymce() { - const _this = this; - window.tinymce.init({ - selector: `#${this.tinymceId}`, - language: this.languageTypeList["en"], - height: this.height, - body_class: "panel-body ", - object_resizing: false, - toolbar: this.toolbar.length > 0 ? this.toolbar : toolbar, - menubar: this.menubar, - plugins: plugins, - end_container_on_empty_block: true, - powerpaste_word_import: "clean", - code_dialog_height: 450, - code_dialog_width: 1000, - advlist_bullet_styles: "square", - advlist_number_styles: "default", - imagetools_cors_hosts: ["www.tinymce.com", "codepen.io"], - default_link_target: "_blank", - link_title: false, - nonbreaking_force_tab: true, // inserting nonbreaking space need Nonbreaking Space Plugin - init_instance_callback: editor => { - if (_this.value) { - editor.setContent(_this.value); - } - _this.hasInit = true; - editor.on("NodeChange Change KeyUp SetContent", () => { - this.hasChange = true; - this.$emit("input", editor.getContent()); - }); - }, - setup(editor) { - editor.on("FullscreenStateChanged", e => { - _this.fullscreen = e.state; - }); - } - // 鏁村悎涓冪墰涓婁紶 - // images_dataimg_filter(img) { - // setTimeout(() => { - // const $image = $(img); - // $image.removeAttr('width'); - // $image.removeAttr('height'); - // if ($image[0].height && $image[0].width) { - // $image.attr('data-wscntype', 'image'); - // $image.attr('data-wscnh', $image[0].height); - // $image.attr('data-wscnw', $image[0].width); - // $image.addClass('wscnph'); - // } - // }, 0); - // return img - // }, - // images_upload_handler(blobInfo, success, failure, progress) { - // progress(0); - // const token = _this.$store.getters.token; - // getToken(token).then(response => { - // const url = response.data.qiniu_url; - // const formData = new FormData(); - // formData.append('token', response.data.qiniu_token); - // formData.append('key', response.data.qiniu_key); - // formData.append('file', blobInfo.blob(), url); - // upload(formData).then(() => { - // success(url); - // progress(100); - // }) - // }).catch(err => { - // failure('鍑虹幇鏈煡闂锛屽埛鏂伴〉闈紝鎴栬€呰仈绯荤▼搴忓憳') - // console.log(err); - // }); - // }, - }); - }, - destroyTinymce() { - const tinymce = window.tinymce.get(this.tinymceId); - if (this.fullscreen) { - tinymce.execCommand("mceFullScreen"); - } - - if (tinymce) { - tinymce.destroy(); - } - }, - setContent(value) { - window.tinymce.get(this.tinymceId).setContent(value); - }, - getContent() { - window.tinymce.get(this.tinymceId).getContent(); - }, - imageSuccessCBK(arr) { - const _this = this; - arr.forEach(v => { - window.tinymce - .get(_this.tinymceId) - .insertContent(`<img class="wscnph" src="${v.url}" >`); - }); - } - } -}; -</script> - -<style scoped> -.tinymce-container { - position: relative; - line-height: normal; -} -.tinymce-container >>> .mce-fullscreen { - z-index: 10000; -} -.tinymce-textarea { - visibility: hidden; - z-index: -1; -} -.editor-custom-btn-container { - position: absolute; - right: 4px; - top: 4px; - /*z-index: 2005;*/ -} -.fullscreen .editor-custom-btn-container { - z-index: 10000; - position: fixed; -} -.editor-upload-btn { - display: inline-block; -} -</style> diff --git a/WebSite/src/components/Tinymce/plugins.js b/WebSite/src/components/Tinymce/plugins.js deleted file mode 100644 index 2ad5e17c2ab29abc9e4e965dc5b20114a9b7cd82..0000000000000000000000000000000000000000 --- a/WebSite/src/components/Tinymce/plugins.js +++ /dev/null @@ -1,9 +0,0 @@ -// Any plugins you want to use has to be imported -// Detail plugins list see https://www.tinymce.com/docs/plugins/ -// Custom builds see https://www.tinymce.com/download/custom-builds/ - -const plugins = [ - "advlist anchor autolink autosave code codesample colorpicker colorpicker contextmenu directionality emoticons fullscreen hr image imagetools insertdatetime link lists media nonbreaking noneditable pagebreak paste preview print save searchreplace spellchecker tabfocus table template textcolor textpattern visualblocks visualchars wordcount" -]; - -export default plugins; diff --git a/WebSite/src/components/Tinymce/toolbar.js b/WebSite/src/components/Tinymce/toolbar.js deleted file mode 100644 index 46196ed7ebb30669e8b035b7fa78659d64e037d7..0000000000000000000000000000000000000000 --- a/WebSite/src/components/Tinymce/toolbar.js +++ /dev/null @@ -1,9 +0,0 @@ -// Here is a list of the toolbar -// Detail list see https://www.tinymce.com/docs/advanced/editor-control-identifiers/#toolbarcontrols - -const toolbar = [ - "searchreplace bold italic underline strikethrough alignleft aligncenter alignright outdent indent blockquote undo redo removeformat subscript superscript code codesample", - "hr bullist numlist link image charmap preview anchor pagebreak insertdatetime media table emoticons forecolor backcolor fullscreen" -]; - -export default toolbar; diff --git a/WebSite/src/components/UnionUser/index.vue b/WebSite/src/components/UnionUser/index.vue deleted file mode 100644 index a42cfd8e1654a72c71c203e71987ca2853a09bc3..0000000000000000000000000000000000000000 --- a/WebSite/src/components/UnionUser/index.vue +++ /dev/null @@ -1,285 +0,0 @@ -<!-- - @Descripttion: - @Author: gong qun - @Date: 2020-06-16 14:11:45 - @LastEditors: gong qun - @LastEditTime: 2020-06-18 10:25:12 ---> -<template> - <div v-if="isShow"> - <layout-card :show-title="true" type="primary"> - <div slot="title">{{ tableTitle }} 涓嬬敤鎴�</div> - <el-row slot="filter" :gutter="5"> - <el-col :xs="24" :sm="12" :lg="8" :xl="6"> - <el-input - v-model="searchUserModel.code" - placeholder="璇疯緭鍏ュ伐鍙�" - :clearable="true" - ></el-input> - </el-col> - <el-col :xs="24" :sm="12" :lg="8" :xl="6"> - <el-input - v-model="searchUserModel.name" - placeholder="璇疯緭鍏ュ鍚�" - :clearable="true" - ></el-input> - </el-col> - <el-col :xs="24" :sm="12" :lg="8" :xl="6"> - <el-select - v-model="searchUserModel.userType" - placeholder="璇烽€夋嫨鐢ㄦ埛绫诲瀷" - :clearable="true" - style="width:100%" - > - <el-option - v-for="item in userTypeOptions" - :key="item.value" - :label="item.label" - :value="item.value" - ></el-option> - </el-select> - </el-col> - <el-col :xs="24" :sm="12" :lg="8" :xl="6"> - <OrganizationSelectTree - ref="organizationTree" - @change="onOrganizationTreeChange" - > - </OrganizationSelectTree> - </el-col> - <el-col :xs="24" :sm="12" :lg="8" :xl="6"> - <el-button - type="default" - plain - icon="el-icon-search" - @click="onSearchUnion" - > - 鏌ヨ - </el-button> - </el-col> - </el-row> - <div slot="button" style="text-align: right;"> - <el-button - type="primary" - plain - icon="el-icon-plus" - @click="onSelectUser" - > - 娣诲姞 - </el-button> - <el-button - type="danger" - plain - icon="el-icon-delete" - @click="onDeleteUnion" - > - 鍒犻櫎 - </el-button> - </div> - <div slot="content"> - <el-table - stripe - :data="userPageInfo.data" - style="width: 100%" - class="mtop" - ref="userTable" - fit - @selection-change="onSelectionChange" - > - <el-table-column type="selection" width="55"> </el-table-column> - <el-table-column label="宸ュ彿" prop="code"></el-table-column> - <el-table-column label="濮撳悕" prop="name"></el-table-column> - <el-table-column label="绫诲瀷" prop="userType"> - <template slot-scope="scope"> - <span>{{ userTypeFilters(scope.row.userType) }}</span> - </template> - </el-table-column> - </el-table> - <Pagination - v-show="userPageInfo.total > 0" - :total="userPageInfo.total" - :page.sync="searchUserModel.pageIndex" - :limit.sync="searchUserModel.pageSize" - @pagination="getUserPageInfo" - /> - </div> - </layout-card> - - <SelectUser - ref="selectUser" - :dialogSelectUser="dialogSelectUser" - @onCloseSelectUser="onCloseSelectUser" - @onSelectUserChange="onSelectUserChange" - ></SelectUser> - </div> -</template> -<script> -import SelectUser from "@/components/SelectUser"; -import OrganizationSelectTree from "@/components/OrganizationSelectTree"; -import Pagination from "@/components/Pagination"; -export default { - components: { - SelectUser, - OrganizationSelectTree, - Pagination - }, - props: { - tableTitle: { - type: String, - default: "鍏宠仈鍏崇郴" - } - }, - data() { - return { - activeNames: ["1"], - searchUserModel: { - pageIndex: 1, - pageSize: 10 - }, - userTypeOptions: [ - { value: "ADMIN", label: "绠$悊鍛�" }, - { value: "TEACHER", label: "鏁欏伐" }, - { value: "STUDENT", label: "瀛︾敓" }, - { value: "EXTERNAL", label: "澶栬仒" }, - { value: "OTHER", label: "鍏朵粬" } - ], - userPageInfo: { - total: 0 - }, - multipleSelectionUser: [], - dialogSelectUser: false, - isShow: false - }; - }, - methods: { - searchUser(val) { - if (this.$refs.organizationTree) { - this.$refs.organizationTree.clearSelect(); - } - this.searchUserModel = { - pageIndex: 1, - pageSize: 10, - enabled: "YES" - }; - if (val) { - if (val.roleId) { - this.searchUserModel.roleIds = [val.roleId]; - } else { - this.searchUserModel.roleIds = []; - } - if (val.accountId) { - this.searchUserModel.accountIds = [val.accountId]; - } else { - this.searchUserModel.accountIds = []; - } - } - this.getUserPageInfo(); - }, - getUserPageInfo() { - if (!this.getIsSelect()) { - this.userPageInfo = {}; - this.$message.warning("璇烽€夋嫨" + this.tableTitle); - return; - } - this.$service.User.getPageByRelation(this.searchUserModel).then(res => { - this.userPageInfo = res; - }); - }, - onUserSizeChange(val) { - this.searchUserModel.pageIndex = 1; - this.searchUserModel.pageSize = val; - this.getUserPageInfo(); - }, - onUserCurrentChange(val) { - this.searchUserModel.pageIndex = val; - this.getUserPageInfo(); - }, - onSelectionChange(val) { - this.multipleSelectionUser = val; - }, - onDeleteUnion() { - if (this.multipleSelectionUser.length === 0) { - this.$message.warning("璇峰嬀閫夌敤鎴凤紒"); - return; - } - this.$emit("onRemoveUnion", this.multipleSelectionUser); - }, - clearSelection() { - this.$refs.userTable.clearSelection(); - this.onSearchUnion(); - }, - userTypeFilters(value) { - if (!value) return ""; - let userType = this.userTypeOptions.filter(t => t.value === value); - if (userType.length === 0) { - return ""; - } - return userType[0].label; - }, - onSearchUnion() { - this.searchUserModel.pageIndex = 1; - this.getUserPageInfo(); - }, - onSelectUser() { - if (!this.getIsSelect()) { - this.$message.warning("璇烽€夋嫨" + this.tableTitle); - return; - } - this.$refs.selectUser.onShowSelectUser(); - }, - onCloseSelectUser() { - this.onSearchUnion(); - this.$refs.selectUser.onCloseSelectUser(); - }, - onSelectUserChange(val) { - this.$emit("onAddUnion", val); - }, - getIsSelect() { - let isNotRole = - this.searchUserModel.roleIds == null || - this.searchUserModel.roleIds.length === 0; - let isNotAccount = - this.searchUserModel.accountIds == null || - this.searchUserModel.accountIds.length === 0; - this.isShow = !(isNotRole && isNotAccount); - return this.isShow; - }, - onOrganizationTreeChange(val) { - this.searchUserModel.organizationIds = !val ? null : [val]; - } - } -}; -</script> - -<style lang="scss" scoped> -.account { - width: 100%; - // min-height: calc(100vh - 90px); - display: flex; - .mtop { - margin-top: 20px; - } - .fl { - width: 50%; - margin-right: 20px; - } - .fr { - width: 50%; - } - .header { - padding-bottom: 10px; - border-bottom: 1px solid #f2f2f2; - } - .el-collapse { - border-top: none; - } -} -.el-button + .el-button { - margin-left: 0px; -} -.el-col { - margin-bottom: 5px; - // &:last-child { - // margin-bottom: 0; - // } -} -</style> diff --git a/WebSite/src/components/Upload/SingleImage.vue b/WebSite/src/components/Upload/SingleImage.vue deleted file mode 100644 index f81d71c5c4ebc66a9998de33c2eade5ad8b6059e..0000000000000000000000000000000000000000 --- a/WebSite/src/components/Upload/SingleImage.vue +++ /dev/null @@ -1,133 +0,0 @@ -<template> - <div class="upload-container"> - <el-upload - :data="dataObj" - :multiple="false" - :show-file-list="false" - :on-success="handleImageSuccess" - class="image-uploader" - drag - action="https://httpbin.org/post" - > - <i class="el-icon-upload" /> - <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div> - </el-upload> - <div class="image-preview"> - <div v-show="imageUrl.length > 1" class="image-preview-wrapper"> - <img :src="imageUrl + '?imageView2/1/w/200/h/200'" /> - <div class="image-preview-action"> - <i class="el-icon-delete" @click="rmImage" /> - </div> - </div> - </div> - </div> -</template> - -<script> -import { getToken } from "@/api/qiniu"; - -export default { - name: "SingleImageUpload", - props: { - value: { - type: String, - default: "" - } - }, - data() { - return { - tempUrl: "", - dataObj: { token: "", key: "" } - }; - }, - computed: { - imageUrl() { - return this.value; - } - }, - methods: { - rmImage() { - this.emitInput(""); - }, - emitInput(val) { - this.$emit("input", val); - }, - handleImageSuccess() { - this.emitInput(this.tempUrl); - }, - beforeUpload() { - const _self = this; - return new Promise((resolve, reject) => { - getToken() - .then(response => { - const key = response.data.qiniu_key; - const token = response.data.qiniu_token; - _self._data.dataObj.token = token; - _self._data.dataObj.key = key; - this.tempUrl = response.data.qiniu_url; - resolve(true); - }) - .catch(err => { - console.log(err); - reject(false); - }); - }); - } - } -}; -</script> - -<style lang="scss" scoped> -@import "~@/styles/mixin.scss"; -.upload-container { - width: 100%; - position: relative; - @include clearfix; - .image-uploader { - width: 60%; - float: left; - } - .image-preview { - width: 200px; - height: 200px; - position: relative; - border: 1px dashed #d9d9d9; - float: left; - margin-left: 50px; - .image-preview-wrapper { - position: relative; - width: 100%; - height: 100%; - img { - width: 100%; - height: 100%; - } - } - .image-preview-action { - position: absolute; - width: 100%; - height: 100%; - left: 0; - top: 0; - cursor: default; - text-align: center; - color: #fff; - opacity: 0; - font-size: 20px; - background-color: rgba(0, 0, 0, 0.5); - transition: opacity 0.3s; - cursor: pointer; - text-align: center; - line-height: 200px; - .el-icon-delete { - font-size: 36px; - } - } - &:hover { - .image-preview-action { - opacity: 1; - } - } - } -} -</style> diff --git a/WebSite/src/components/Upload/SingleImage2.vue b/WebSite/src/components/Upload/SingleImage2.vue deleted file mode 100644 index e9456ed72472521d6dfe60d9bfadb5f41f40bcf1..0000000000000000000000000000000000000000 --- a/WebSite/src/components/Upload/SingleImage2.vue +++ /dev/null @@ -1,130 +0,0 @@ -<template> - <div class="singleImageUpload2 upload-container"> - <el-upload - :data="dataObj" - :multiple="false" - :show-file-list="false" - :on-success="handleImageSuccess" - class="image-uploader" - drag - action="https://httpbin.org/post" - > - <i class="el-icon-upload" /> - <div class="el-upload__text">Drag鎴�<em>鐐瑰嚮涓婁紶</em></div> - </el-upload> - <div v-show="imageUrl.length > 0" class="image-preview"> - <div v-show="imageUrl.length > 1" class="image-preview-wrapper"> - <img :src="imageUrl" /> - <div class="image-preview-action"> - <i class="el-icon-delete" @click="rmImage" /> - </div> - </div> - </div> - </div> -</template> - -<script> -import { getToken } from "@/api/qiniu"; - -export default { - name: "SingleImageUpload2", - props: { - value: { - type: String, - default: "" - } - }, - data() { - return { - tempUrl: "", - dataObj: { token: "", key: "" } - }; - }, - computed: { - imageUrl() { - return this.value; - } - }, - methods: { - rmImage() { - this.emitInput(""); - }, - emitInput(val) { - this.$emit("input", val); - }, - handleImageSuccess() { - this.emitInput(this.tempUrl); - }, - beforeUpload() { - const _self = this; - return new Promise((resolve, reject) => { - getToken() - .then(response => { - const key = response.data.qiniu_key; - const token = response.data.qiniu_token; - _self._data.dataObj.token = token; - _self._data.dataObj.key = key; - this.tempUrl = response.data.qiniu_url; - resolve(true); - }) - .catch(() => { - reject(false); - }); - }); - } - } -}; -</script> - -<style lang="scss" scoped> -.upload-container { - width: 100%; - height: 100%; - position: relative; - .image-uploader { - height: 100%; - } - .image-preview { - width: 100%; - height: 100%; - position: absolute; - left: 0px; - top: 0px; - border: 1px dashed #d9d9d9; - .image-preview-wrapper { - position: relative; - width: 100%; - height: 100%; - img { - width: 100%; - height: 100%; - } - } - .image-preview-action { - position: absolute; - width: 100%; - height: 100%; - left: 0; - top: 0; - cursor: default; - text-align: center; - color: #fff; - opacity: 0; - font-size: 20px; - background-color: rgba(0, 0, 0, 0.5); - transition: opacity 0.3s; - cursor: pointer; - text-align: center; - line-height: 200px; - .el-icon-delete { - font-size: 36px; - } - } - &:hover { - .image-preview-action { - opacity: 1; - } - } - } -} -</style> diff --git a/WebSite/src/components/Upload/SingleImage3.vue b/WebSite/src/components/Upload/SingleImage3.vue deleted file mode 100644 index 7a9757daf6783761da3fae4694645231e44c86bb..0000000000000000000000000000000000000000 --- a/WebSite/src/components/Upload/SingleImage3.vue +++ /dev/null @@ -1,157 +0,0 @@ -<template> - <div class="upload-container"> - <el-upload - :data="dataObj" - :multiple="false" - :show-file-list="false" - :on-success="handleImageSuccess" - class="image-uploader" - drag - action="https://httpbin.org/post" - > - <i class="el-icon-upload" /> - <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div> - </el-upload> - <div class="image-preview image-app-preview"> - <div v-show="imageUrl.length > 1" class="image-preview-wrapper"> - <img :src="imageUrl" /> - <div class="image-preview-action"> - <i class="el-icon-delete" @click="rmImage" /> - </div> - </div> - </div> - <div class="image-preview"> - <div v-show="imageUrl.length > 1" class="image-preview-wrapper"> - <img :src="imageUrl" /> - <div class="image-preview-action"> - <i class="el-icon-delete" @click="rmImage" /> - </div> - </div> - </div> - </div> -</template> - -<script> -import { getToken } from "@/api/qiniu"; - -export default { - name: "SingleImageUpload3", - props: { - value: { - type: String, - default: "" - } - }, - data() { - return { - tempUrl: "", - dataObj: { token: "", key: "" } - }; - }, - computed: { - imageUrl() { - return this.value; - } - }, - methods: { - rmImage() { - this.emitInput(""); - }, - emitInput(val) { - this.$emit("input", val); - }, - handleImageSuccess(file) { - this.emitInput(file.files.file); - }, - beforeUpload() { - const _self = this; - return new Promise((resolve, reject) => { - getToken() - .then(response => { - const key = response.data.qiniu_key; - const token = response.data.qiniu_token; - _self._data.dataObj.token = token; - _self._data.dataObj.key = key; - this.tempUrl = response.data.qiniu_url; - resolve(true); - }) - .catch(err => { - console.log(err); - reject(false); - }); - }); - } - } -}; -</script> - -<style lang="scss" scoped> -@import "~@/styles/mixin.scss"; -.upload-container { - width: 100%; - position: relative; - @include clearfix; - .image-uploader { - width: 35%; - float: left; - } - .image-preview { - width: 200px; - height: 200px; - position: relative; - border: 1px dashed #d9d9d9; - float: left; - margin-left: 50px; - .image-preview-wrapper { - position: relative; - width: 100%; - height: 100%; - img { - width: 100%; - height: 100%; - } - } - .image-preview-action { - position: absolute; - width: 100%; - height: 100%; - left: 0; - top: 0; - cursor: default; - text-align: center; - color: #fff; - opacity: 0; - font-size: 20px; - background-color: rgba(0, 0, 0, 0.5); - transition: opacity 0.3s; - cursor: pointer; - text-align: center; - line-height: 200px; - .el-icon-delete { - font-size: 36px; - } - } - &:hover { - .image-preview-action { - opacity: 1; - } - } - } - .image-app-preview { - width: 320px; - height: 180px; - position: relative; - border: 1px dashed #d9d9d9; - float: left; - margin-left: 50px; - .app-fake-conver { - height: 44px; - position: absolute; - width: 100%; // background: rgba(0, 0, 0, .1); - text-align: center; - line-height: 64px; - color: #fff; - } - } -} -</style> diff --git a/WebSite/src/components/UploadExcel/index.vue b/WebSite/src/components/UploadExcel/index.vue deleted file mode 100644 index 94d45fd2ced5221a1211e2a85a7a4a41bb6657dc..0000000000000000000000000000000000000000 --- a/WebSite/src/components/UploadExcel/index.vue +++ /dev/null @@ -1,158 +0,0 @@ -<template> - <div> - <input - ref="excel-upload-input" - class="excel-upload-input" - type="file" - accept=".xlsx, .xls" - @change="handleClick" - /> - <div - class="drop" - @drop="handleDrop" - @dragover="handleDragover" - @dragenter="handleDragover" - > - Drop excel file here or - <el-button - :loading="loading" - style="margin-left:16px;" - size="mini" - type="primary" - @click="handleUpload" - > - Browse - </el-button> - </div> - </div> -</template> - -<script> -import XLSX from "xlsx"; - -export default { - props: { - beforeUpload: Function, // eslint-disable-line - onSuccess: Function// eslint-disable-line - }, - data() { - return { - loading: false, - excelData: { - header: null, - results: null - } - }; - }, - methods: { - generateData({ header, results }) { - this.excelData.header = header; - this.excelData.results = results; - this.onSuccess && this.onSuccess(this.excelData); - }, - handleDrop(e) { - e.stopPropagation(); - e.preventDefault(); - if (this.loading) return; - const files = e.dataTransfer.files; - if (files.length !== 1) { - this.$message.error("Only support uploading one file!"); - return; - } - const rawFile = files[0]; // only use files[0] - - if (!this.isExcel(rawFile)) { - this.$message.error( - "Only supports upload .xlsx, .xls, .csv suffix files" - ); - return false; - } - this.upload(rawFile); - e.stopPropagation(); - e.preventDefault(); - }, - handleDragover(e) { - e.stopPropagation(); - e.preventDefault(); - e.dataTransfer.dropEffect = "copy"; - }, - handleUpload() { - this.$refs["excel-upload-input"].click(); - }, - handleClick(e) { - const files = e.target.files; - const rawFile = files[0]; // only use files[0] - if (!rawFile) return; - this.upload(rawFile); - }, - upload(rawFile) { - this.$refs["excel-upload-input"].value = null; // fix can't select the same excel - - if (!this.beforeUpload) { - this.readerData(rawFile); - return; - } - const before = this.beforeUpload(rawFile); - if (before) { - this.readerData(rawFile); - } - }, - readerData(rawFile) { - this.loading = true; - return new Promise((resolve, reject) => { - const reader = new FileReader(); - reader.onload = e => { - const data = e.target.result; - const workbook = XLSX.read(data, { type: "array" }); - const firstSheetName = workbook.SheetNames[0]; - const worksheet = workbook.Sheets[firstSheetName]; - const header = this.getHeaderRow(worksheet); - const results = XLSX.utils.sheet_to_json(worksheet); - this.generateData({ header, results }); - this.loading = false; - resolve(); - }; - reader.readAsArrayBuffer(rawFile); - }); - }, - getHeaderRow(sheet) { - const headers = []; - const range = XLSX.utils.decode_range(sheet["!ref"]); - let C; - const R = range.s.r; - /* start in the first row */ - for (C = range.s.c; C <= range.e.c; ++C) { - /* walk every column in the range */ - const cell = sheet[XLSX.utils.encode_cell({ c: C, r: R })]; - /* find the cell in the first row */ - let hdr = "UNKNOWN " + C; // <-- replace with your desired default - if (cell && cell.t) hdr = XLSX.utils.format_cell(cell); - headers.push(hdr); - } - return headers; - }, - isExcel(file) { - return /\.(xlsx|xls|csv)$/.test(file.name); - } - } -}; -</script> - -<style scoped> -.excel-upload-input { - display: none; - z-index: -9999; -} -.drop { - border: 2px dashed #bbb; - width: 600px; - height: 160px; - line-height: 160px; - margin: 0 auto; - font-size: 24px; - border-radius: 5px; - text-align: center; - color: #bbb; - position: relative; -} -</style> diff --git a/WebSite/src/components/UploadFile/index.vue b/WebSite/src/components/UploadFile/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..0b3ce64d573c4f19e15c6b3de2584ba20a6623be --- /dev/null +++ b/WebSite/src/components/UploadFile/index.vue @@ -0,0 +1,171 @@ +<template> + <div> + <el-dialog + :title="'闄勪欢' + title" + v-model="uploadFileDialog" + width="60%" + @close="closeHandler" + destroy-on-close + > + <div class="upload"> + <el-upload + action="#" + multiple + :accept="acceptStr" + :on-change="fileChange" + :on-remove="removeFile" + :http-request="uploadFile" + :file-list="list" + > + <el-button size="small" type="primary">閫夋嫨鏂囦欢</el-button> + <template #tip> + <div class="el-upload__tip"> + <slot name="uploadTip" /> + </div> + </template> + </el-upload> + <div class="upload-slot"> + <slot /> + </div> + </div> + <template #footer> + <span class="dialog-footer"> + <el-button @click="uploadFileDialog = false">鍙� 娑�</el-button> + <el-button type="primary" @click="uploadClick">涓� 浼�</el-button> + </span> + </template> + </el-dialog> + </div> +</template> + +<script> +import { computed, ref } from 'vue'; +import { ElMessage } from 'element-plus'; +export default { + name: 'UploadFile', + props: { + modelValue: { + required: true, + type: Boolean + }, + sigleFile: { + type: Boolean, + default: false + }, + title: { + type: String, + default: '涓婁紶' + }, + acceptType: { + type: Array, + default: () => { + return [ + '.jpg', + '.jpeg', + '.png', + '.JPG', + '.JPEG', + '.PNG', + '.doc', + '.DOC', + '.docx', + '.DOCX', + '.xls', + '.XLS', + '.xlsx', + '.XLSX', + '.pdf', + '.PDF', + '.zip', + '.ZIP', + '.rar', + '.RAR' + ]; + } + } + }, + emits: ['update:modelValue', 'upload-handler'], + setup(props, context) { + const acceptStr = computed(() => props.acceptType.join(',')); + const uploadFileDialog = computed({ + get() { + return props.modelValue; + }, + set(val) { + context.emit('update:modelValue', val); + } + }); + let list = ref([]); + const fileChange = (file, fileList) => { + const startIndex = file.name.lastIndexOf('.'); + const surfixName = file.name.substring(startIndex); + if (!props.acceptType.includes(surfixName)) { + const index = fileList.findIndex(item => file.uid == item.uid); + fileList.splice(index, 1); + return ElMessage.warning('璇蜂笂浼犳纭牸寮忕殑鏂囦欢'); + } + const size = file.size; + if (size > 10485760) { + const index = fileList.findIndex(item => file.uid === item.uid); + fileList.splice(index, 1); + return ElMessage.warning('涓婁紶鐨勬枃浠朵笉鑳借秴杩�10M'); + } + list.value = fileList; + }; + const removeFile = (file, fileList) => { + list.value = fileList; + }; + const uploadFile = () => { + //瑕嗙洊el-upload鐨勪笂浼� + }; + const closeHandler = () => { + list.value = []; + }; + const uploadClick = () => { + // let arr = []; + // list.value.forEach(file => { + // const existIndex = arr.findIndex( + // item => + // item.name == file.name && + // item.raw.lastModified == file.raw.lastModified + // ); + // if (existIndex == -1) { + // arr.push(file); + // } + // }); + // arr.length < list.value.length && + // ElMessage.warning( + // `妫€娴嬪埌${list.value.length - arr.length}涓噸澶嶆枃浠讹紝宸茶繃婊 + // ); + if (list.value.length <= 0) { + return ElMessage.warning('璇烽€夋嫨闇€瑕佷笂浼犵殑鏂囦欢'); + } + if (props.sigleFile && list.value.length > 1) { + return ElMessage.warning('鏈€澶氫笂浼犱竴涓枃浠�'); + } + context.emit('upload-handler', list.value); + }; + return { + acceptStr, + uploadFileDialog, + list, + fileChange, + removeFile, + uploadFile, + uploadClick, + closeHandler + }; + } +}; +</script> + +<style scoped> +.upload { + position: relative; +} +.upload-slot { + position: absolute; + top: 0; + left: 100px; +} +</style> diff --git a/WebSite/src/components/index.js b/WebSite/src/components/index.js new file mode 100644 index 0000000000000000000000000000000000000000..c0cefa92f496c8abea21355fe8c6360afa72445f --- /dev/null +++ b/WebSite/src/components/index.js @@ -0,0 +1,22 @@ +import Pagination from './Pagination'; +import Flow from './Flow'; +import SelectDept from './SelectUserCheck'; +import SelectDeptG from './SelectUserCheckG'; +import TableFlow from '../views/yo-common/ProjectFundApply'; +import PublicFundApply from '@/views/yo-common/PublicFundApply'; +import PeopleFundApply from '@/views/yo-common/PeopleFundApply'; +import IncomeApply from '@/views/yo-common/IncomeApply'; +import UploadFile from '@/components/UploadFile'; +export default { + install: Vue => { + Vue.component('Pagination', Pagination); + Vue.component('TableFlow', TableFlow); + Vue.component('Flow', Flow); + Vue.component('PublicFundApply', PublicFundApply); + Vue.component('PeopleFundApply', PeopleFundApply); + Vue.component('IncomeApply', IncomeApply); + Vue.component('UploadFile', UploadFile); + Vue.component('SelectDept', SelectDept); + Vue.component('SelectDeptG', SelectDeptG); + } +}; diff --git a/WebSite/src/core/base/Realm.js b/WebSite/src/core/base/Realm.js new file mode 100644 index 0000000000000000000000000000000000000000..7822ed35beb3c2a3a84aade3da91c7a0a3cf30c5 --- /dev/null +++ b/WebSite/src/core/base/Realm.js @@ -0,0 +1,117 @@ +/* + * @Description: + * @Autor: dongjunhua + * @Date: 2020-12-21 17:18:58 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-02-11 14:14:39 + */ + +import AuthenticationInfo from '../model/AuthenticationInfo'; +import AuthorizationInfo from '../model/AuthorizationInfo'; +// import Account from '@/api/Account'; +import User from '@/api/User'; +/** + * safety data source + * @class Realm + */ +class Realm { + /** + * @method doGetAuthenticationInfo + * @for Realm + * @param {*} authenticationToken + * @return {Promise} + */ + static async doGetAuthenticationInfo(authenticationToken) { + const { principals, credentials } = authenticationToken; + if (principals && credentials) { + // do somethings here + // const res = await Account.login({ principals, credentials }); + // return new AuthenticationInfo(res.data[0]); + return new AuthenticationInfo({ + id: '1', + available: 'YES', + versionDate: '2020-07-08 02:30:50.390', + updator: '1', + username: 'admin', + enabled: 'YES', + isInitial: 'NO', + users: [ + { + id: 'ProjectRegistry', + name: '椤圭洰搴�' + }, + { + id: 'deptBZ', + name: '閮ㄩ棬棰勭畻缂栧埗' + }, + { + id: 'deptSP', + name: '閮ㄩ棬棰勭畻瀹℃壒' + }, + // { + // id: 'search', + // name: '鏌ヨ' + // }, + { + id: 'base', + name: '鍩虹璁剧疆' + }, + { + id: 'merits', + name: '缁╂晥绠$悊' + } + ], + role: 'admin', + token: authenticationToken + }); + } + // you must return an AuthenticationInfo instance + return null; + } + + /** + * @method doGetAuthorizationInfo + * @for Realm + * @param {*} authorizationToken + * @return {Promise} + */ + static async doGetAuthorizationInfo(authorizationToken) { + if (authorizationToken) { + // do somethings here + await User.setCurrent({ id: authorizationToken }); + const res = await User.getCurrent(); + return new AuthorizationInfo(res.data[0], 'token'); + // return new AuthorizationInfo({ + // id: '1', + // available: 'YES', + // versionDate: '2020-07-01 01:34:33.767', + // updator: '1', + // creator: '1', + // remark: '', + // name: state.account.username, + // code: state.account.username, + // userType: 'ADMIN', + // mobilePhone: '15911111111', + // email: 'test@seasky.com', + // enabled: 'YES', + // menuList + // }, 'token') + } + // you must return an AuthorizationInfo instance + return null; + } + + /** + * @method beforeLogout + * @for Realm + * @return {String} ssoAddress + */ + static async beforeLogout() { + // do somethings here if need + // e.g., http request such as logout api + // you may return a ssoAddress when login type using sso + return; + } +} + +export default Realm; diff --git a/WebSite/src/core/base/request.js b/WebSite/src/core/base/request.js new file mode 100644 index 0000000000000000000000000000000000000000..a4b5336f6a3b9f7d0f2dc1068d869e9f5acdcd5f --- /dev/null +++ b/WebSite/src/core/base/request.js @@ -0,0 +1,153 @@ +import axios from 'axios'; +import store from '@/store'; +import { ElNotification } from 'element-plus'; +import { debounce, isEmpty } from '@/utils'; +import qs from 'qs'; +let currentRequestArray = []; +const closeLoading = debounce(() => { + currentRequestArray.length <= 0 && store.dispatch('app/endLoading'); +}, 100); + +const axiosInstance = axios.create({ + baseURL: process.env.VUE_APP_BASE_API, + timeout: 60000 +}); + +axiosInstance.interceptors.request.use( + config => { + store.dispatch('app/startLoading'); + beforeRequest(config); + console.log(`銆怳RL锛�${config.url}銆戞鍦ㄨ姹�...`, config); + return config; + }, + error => { + store.dispatch('app/endLoading'); + return Promise.reject(error); + } +); + +axiosInstance.interceptors.response.use( + response => { + afterRequest(response); + closeLoading(); + console.log(`銆怳RL锛�${response.config.url}銆戝搷搴旂粨鏋�...`, response); + if (response.data.code === '10000') { + ElNotification({ + message: '鏈櫥褰�', + type: 'error', + duration: 5 * 1000 + }); + return store.dispatch('subject/logout'); + } + if (response.data.code !== '00000') { + //濡傛灉responseType鏄痓lob绫诲瀷 + if (response.request.responseType == 'blob') { + //鍙兘涓簀son + if (response.data.type === 'application/json') { + var reader = new FileReader(); + return new Promise(function(resolve, reject) { + reader.readAsText(response.data, 'utf-8'); + reader.onload = function() { + const res = JSON.parse(reader.result); + //杞垚json涔嬪悗鍒ゆ柇code鏄惁鎴愬姛鐨勭姸鎬佺爜 + if (res.code !== '00000') { + ElNotification({ + message: res.description, + type: 'error', + duration: 5 * 1000 + }); + return reject(res); + } + return resolve(res); + }; + }); + } else { + //鏂囦欢娴� + const contentDisposition = response.headers['content-disposition']; + const filename = decodeURI( + contentDisposition.match(/(filename=(.*))/)[2] + ); + return { + data: response.data, + filename + }; + } + } + ElNotification({ + message: response.data.description, + type: 'error', + duration: 5 * 1000 + }); + return Promise.reject(response.data); + } + return response.data; + }, + error => { + closeLoading(); + if (axios.isCancel(error)) { + console.warn(error.message.errorMessage); + return Promise.reject(error.message); + } else { + afterRequest(error); + ElNotification({ + message: error.response.statusText, + type: 'error', + duration: 5 * 1000 + }); + if (error.response.status === 401) { + // set beforeLogout option as empty function so Relam.beforeLogout will not execute + store.dispatch('subject/logout', { beforeLogout: () => {} }); + } + } + } +); + +function beforeRequest(config) { + let cancel; + config.cancelToken = new axios.CancelToken(function(c) { + cancel = c; + }); + const url = [ + config.method, + config.url, + isEmpty(config.params) ? '' : qs.stringify(config.params), + isEmpty(config.data) ? '' : qs.stringify(config.data) + ].join('&'); + if (currentRequestArray.findIndex(item => item.url == url) > -1) { + cancel({ + data: null, + errorCode: null, + errorMessage: `銆怳RL锛�${config.url}銆戦噸澶嶈姹俙, + isSuccess: true + }); + return; + } + currentRequestArray.push({ url, cancel }); +} + +function afterRequest(response) { + const url = [ + response.config.method, + response.config.url, + isEmpty(response.config.params) ? '' : qs.stringify(response.config.params), + isEmpty(response.config.data) + ? '' + : qs.stringify(JSON.parse(response.config.data)) + ].join('&'); + const index = currentRequestArray.findIndex(item => item.url == url); + index > -1 && currentRequestArray.splice(index, 1); +} + +export function clearRequest() { + currentRequestArray.forEach(item => { + item.cancel({ + data: null, + errorCode: null, + errorMessage: '椤甸潰璺宠浆锛屽彇娑堣姹�', + isSuccess: true + }); + }); + currentRequestArray = []; +} + +export default axiosInstance; diff --git a/WebSite/src/core/model/Account.js b/WebSite/src/core/model/Account.js new file mode 100644 index 0000000000000000000000000000000000000000..2d842ca215227161f31943887bec623b0556f09c --- /dev/null +++ b/WebSite/src/core/model/Account.js @@ -0,0 +1,18 @@ +/* + * @Description: + * @Author: dongjunhua + * @Date: 2021-02-09 16:35:07 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-02-09 16:37:27 + */ + +class Account { + constructor(id, username, isInitial, users = []) { + this.id = id; + this.username = username; + this.isInitial = isInitial; + this.users = users; + } +} + +export default Account; diff --git a/WebSite/src/core/model/App.js b/WebSite/src/core/model/App.js new file mode 100644 index 0000000000000000000000000000000000000000..163d82935c3587e3060148b1546a68dc0daaca51 --- /dev/null +++ b/WebSite/src/core/model/App.js @@ -0,0 +1,48 @@ +/* + * @Description: + * @Autor: dongjunhua + * @Date: 2021-02-01 10:38:02 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-02-26 10:25:23 + */ + +class App { + constructor( + version, + coreVersion, + device = 'desktop', + dynamicLoginBg = false, + fixedHeader = true, + themes = [{ name: 'default', className: 'default', active: true }], + navbar = { + enabled: true + }, + navigation = { + enabled: false + }, + sidebar = { + enabled: true, + showLogo: false, + opened: true, + withoutAnimation: true + }, + tagsView = { + enabled: true, + cachedViews: [] + } + ) { + this.version = version; + this.coreVersion = coreVersion; + this.device = device; + this.dynamicLoginBg = dynamicLoginBg; + this.fixedHeader = fixedHeader; + this.themes = themes; + this.navbar = navbar; + this.navigation = navigation; + this.sidebar = sidebar; + this.tagsView = tagsView; + this.loading = false; + } +} + +export default App; diff --git a/WebSite/src/core/model/AuthenticationInfo.js b/WebSite/src/core/model/AuthenticationInfo.js new file mode 100644 index 0000000000000000000000000000000000000000..831d3eaf9c98a0950b074db130da2d84ca0457b2 --- /dev/null +++ b/WebSite/src/core/model/AuthenticationInfo.js @@ -0,0 +1,16 @@ +/* + * @Description: + * @Autor: dongjunhua + * @Date: 2020-12-22 09:41:37 + * @LastEditors: dongjunhua + * @LastEditTime: 2020-12-22 13:40:09 + */ + +class AuthenticationInfo { + constructor(account, expired = null) { + this.account = account; + this.expired = expired; + } +} + +export default AuthenticationInfo; diff --git a/WebSite/src/core/model/AuthenticationToken.js b/WebSite/src/core/model/AuthenticationToken.js new file mode 100644 index 0000000000000000000000000000000000000000..4844cbf1f7ea63971cf8835de58a0d0f1ce3316a --- /dev/null +++ b/WebSite/src/core/model/AuthenticationToken.js @@ -0,0 +1,16 @@ +/* + * @Description: + * @Autor: dongjunhua + * @Date: 2020-12-22 09:14:52 + * @LastEditors: dongjunhua + * @LastEditTime: 2020-12-22 09:47:03 + */ + +class AuthenticationToken { + constructor(principals, credentials) { + this.principals = principals; + this.credentials = credentials; + } +} + +export default AuthenticationToken; diff --git a/WebSite/src/core/model/AuthorizationInfo.js b/WebSite/src/core/model/AuthorizationInfo.js new file mode 100644 index 0000000000000000000000000000000000000000..99b4acb3ece35e7446fab043c9f27c0f8c2eb472 --- /dev/null +++ b/WebSite/src/core/model/AuthorizationInfo.js @@ -0,0 +1,16 @@ +/* + * @Description: + * @Autor: dongjunhua + * @Date: 2020-12-24 13:01:26 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-02-10 23:02:38 + */ + +class AuthorizationInfo { + constructor(user, token) { + this.user = user; + this.token = token; + } +} + +export default AuthorizationInfo; diff --git a/WebSite/src/core/model/Menu.js b/WebSite/src/core/model/Menu.js new file mode 100644 index 0000000000000000000000000000000000000000..1a42e06c8cd504518a00e2d82e715f25baa1f925 --- /dev/null +++ b/WebSite/src/core/model/Menu.js @@ -0,0 +1,31 @@ +/* + * @Description: + * @Author: dongjunhua + * @Date: 2021-02-09 16:29:33 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-02-09 16:34:03 + */ + +class Menu { + constructor( + id, + applicationId, + parentId, + menuNo, + name, + icon, + routingUrl, + children = [] + ) { + this.id = id; + this.applicationId = applicationId; + this.parentId = parentId; + this.menuNo = menuNo; + this.name = name; + this.icon = icon; + this.routingUrl = routingUrl; + this.children = children; + } +} + +export default Menu; diff --git a/WebSite/src/core/model/Subject.js b/WebSite/src/core/model/Subject.js new file mode 100644 index 0000000000000000000000000000000000000000..14fa0f0239bdc47319efe0eb2c7605e755aeff83 --- /dev/null +++ b/WebSite/src/core/model/Subject.js @@ -0,0 +1,34 @@ +/* + * @Description: + * @Author: dongjunhua + * @Date: 2021-01-23 11:15:40 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-02-11 10:38:20 + */ + +class Subject { + constructor( + loginType = 'default', + ssoAddress = '', + account = {}, + user = {}, + isAuthenticated = false, + isPermitted = false, + permittedRoutes = [], + token = '', + year = new Date().getFullYear() + ) { + this.initialized = true; + this.loginType = loginType; + this.ssoAddress = ssoAddress; + this.account = account; + this.user = user; + this.isAuthenticated = isAuthenticated; + this.isPermitted = isPermitted; + this.permittedRoutes = permittedRoutes; + this.token = token; + this.year = year; + } +} + +export default Subject; diff --git a/WebSite/src/core/model/TagView.js b/WebSite/src/core/model/TagView.js new file mode 100644 index 0000000000000000000000000000000000000000..85795187dfe46cd0cf2a6cbad6561916dd7a9776 --- /dev/null +++ b/WebSite/src/core/model/TagView.js @@ -0,0 +1,20 @@ +/* + * @Description: + * @Autor: dongjunhua + * @Date: 2020-12-30 10:53:42 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-01-20 15:25:45 + */ + +class TagView { + constructor(id, name, path, icon, active = true, allowClose = true) { + this.id = id; + this.name = name; + this.path = path; + this.icon = icon; + this.active = active; + this.allowClose = allowClose; + } +} + +export default TagView; diff --git a/WebSite/src/core/model/User.js b/WebSite/src/core/model/User.js new file mode 100644 index 0000000000000000000000000000000000000000..0cfa84549feb0f3da33d03f982456c64b9e5497c --- /dev/null +++ b/WebSite/src/core/model/User.js @@ -0,0 +1,18 @@ +/* + * @Description: + * @Author: dongjunhua + * @Date: 2021-02-09 16:24:16 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-02-09 16:28:27 + */ + +class User { + constructor(id, code, name, userType) { + this.id = id; + this.code = code; + this.name = name; + this.userType = userType; + } +} + +export default User; diff --git a/WebSite/src/directive/clipboard/clipboard.js b/WebSite/src/directive/clipboard/clipboard.js deleted file mode 100644 index 80bdc546d841a2eab1789f31fb98a50821881eb8..0000000000000000000000000000000000000000 --- a/WebSite/src/directive/clipboard/clipboard.js +++ /dev/null @@ -1,57 +0,0 @@ -// Inspired by https://github.com/Inndy/vue-clipboard2 -const Clipboard = require("clipboard"); -if (!Clipboard) { - throw new Error("you should npm install `clipboard` --save at first "); -} - -export default { - bind(el, binding) { - if (binding.arg === "success") { - el._v_clipboard_success = binding.value; - } else if (binding.arg === "error") { - el._v_clipboard_error = binding.value; - } else { - const clipboard = new Clipboard(el, { - text() { - return binding.value; - }, - action() { - return binding.arg === "cut" ? "cut" : "copy"; - } - }); - clipboard.on("success", e => { - const callback = el._v_clipboard_success; - callback && callback(e) // eslint-disable-line - }); - clipboard.on("error", e => { - const callback = el._v_clipboard_error; - callback && callback(e) // eslint-disable-line - }); - el._v_clipboard = clipboard; - } - }, - update(el, binding) { - if (binding.arg === "success") { - el._v_clipboard_success = binding.value; - } else if (binding.arg === "error") { - el._v_clipboard_error = binding.value; - } else { - el._v_clipboard.text = function() { - return binding.value; - }; - el._v_clipboard.action = function() { - return binding.arg === "cut" ? "cut" : "copy"; - }; - } - }, - unbind(el, binding) { - if (binding.arg === "success") { - delete el._v_clipboard_success; - } else if (binding.arg === "error") { - delete el._v_clipboard_error; - } else { - el._v_clipboard.destroy(); - delete el._v_clipboard; - } - } -}; diff --git a/WebSite/src/directive/clipboard/index.js b/WebSite/src/directive/clipboard/index.js deleted file mode 100644 index d44c7d2bf0888a22276df6fb0a835e624b715380..0000000000000000000000000000000000000000 --- a/WebSite/src/directive/clipboard/index.js +++ /dev/null @@ -1,13 +0,0 @@ -import Clipboard from "./clipboard"; - -const install = function(Vue) { - Vue.directive("Clipboard", Clipboard); -}; - -if (window.Vue) { - window.clipboard = Clipboard; - Vue.use(install); // eslint-disable-line -} - -Clipboard.install = install; -export default Clipboard; diff --git a/WebSite/src/directive/el-drag-dialog/drag.js b/WebSite/src/directive/el-drag-dialog/drag.js deleted file mode 100644 index 7eb2742bb6ba3921363141c169e6bf5a43b24320..0000000000000000000000000000000000000000 --- a/WebSite/src/directive/el-drag-dialog/drag.js +++ /dev/null @@ -1,77 +0,0 @@ -export default { - bind(el, binding, vnode) { - const dialogHeaderEl = el.querySelector(".el-dialog__header"); - const dragDom = el.querySelector(".el-dialog"); - dialogHeaderEl.style.cssText += ";cursor:move;"; - dragDom.style.cssText += ";top:0px;"; - - // 鑾峰彇鍘熸湁灞炴€� ie dom鍏冪礌.currentStyle 鐏嫄璋锋瓕 window.getComputedStyle(dom鍏冪礌, null); - const getStyle = (function() { - if (window.document.currentStyle) { - return (dom, attr) => dom.currentStyle[attr]; - } else { - return (dom, attr) => getComputedStyle(dom, false)[attr]; - } - })(); - - dialogHeaderEl.onmousedown = e => { - // 榧犳爣鎸変笅锛岃绠楀綋鍓嶅厓绱犺窛绂诲彲瑙嗗尯鐨勮窛绂� - const disX = e.clientX - dialogHeaderEl.offsetLeft; - const disY = e.clientY - dialogHeaderEl.offsetTop; - - const dragDomWidth = dragDom.offsetWidth; - const dragDomHeight = dragDom.offsetHeight; - - const screenWidth = document.body.clientWidth; - const screenHeight = document.body.clientHeight; - - const minDragDomLeft = dragDom.offsetLeft; - const maxDragDomLeft = screenWidth - dragDom.offsetLeft - dragDomWidth; - - const minDragDomTop = dragDom.offsetTop; - const maxDragDomTop = screenHeight - dragDom.offsetTop - dragDomHeight; - - // 鑾峰彇鍒扮殑鍊煎甫px 姝e垯鍖归厤鏇挎崲 - let styL = getStyle(dragDom, "left"); - let styT = getStyle(dragDom, "top"); - - if (styL.includes("%")) { - styL = +document.body.clientWidth * (+styL.replace(/\%/g, "") / 100); - styT = +document.body.clientHeight * (+styT.replace(/\%/g, "") / 100); - } else { - styL = +styL.replace(/\px/g, ""); - styT = +styT.replace(/\px/g, ""); - } - - document.onmousemove = function(e) { - // 閫氳繃浜嬩欢濮旀墭锛岃绠楃Щ鍔ㄧ殑璺濈 - let left = e.clientX - disX; - let top = e.clientY - disY; - - // 杈圭晫澶勭悊 - if (-left > minDragDomLeft) { - left = -minDragDomLeft; - } else if (left > maxDragDomLeft) { - left = maxDragDomLeft; - } - - if (-top > minDragDomTop) { - top = -minDragDomTop; - } else if (top > maxDragDomTop) { - top = maxDragDomTop; - } - - // 绉诲姩褰撳墠鍏冪礌 - dragDom.style.cssText += `;left:${left + styL}px;top:${top + styT}px;`; - - // emit onDrag event - vnode.child.$emit("dragDialog"); - }; - - document.onmouseup = function(e) { - document.onmousemove = null; - document.onmouseup = null; - }; - }; - } -}; diff --git a/WebSite/src/directive/el-drag-dialog/index.js b/WebSite/src/directive/el-drag-dialog/index.js deleted file mode 100644 index 9ccbea6d07b21eae205052f54bdd3cb4152d4bce..0000000000000000000000000000000000000000 --- a/WebSite/src/directive/el-drag-dialog/index.js +++ /dev/null @@ -1,13 +0,0 @@ -import drag from "./drag"; - -const install = function(Vue) { - Vue.directive("el-drag-dialog", drag); -}; - -if (window.Vue) { - window["el-drag-dialog"] = drag; - Vue.use(install); // eslint-disable-line -} - -drag.install = install; -export default drag; diff --git a/WebSite/src/directive/el-table/adaptive.js b/WebSite/src/directive/el-table/adaptive.js deleted file mode 100644 index 38e30f8ac5e3be12a2838fcfd072bac3896e6e0b..0000000000000000000000000000000000000000 --- a/WebSite/src/directive/el-table/adaptive.js +++ /dev/null @@ -1,45 +0,0 @@ -import { - addResizeListener, - removeResizeListener -} from "element-ui/src/utils/resize-event"; - -/** - * How to use - * <el-table height="100px" v-el-height-adaptive-table="{bottomOffset: 30}">...</el-table> - * el-table height is must be set - * bottomOffset: 30(default) // The height of the table from the bottom of the page. - */ - -const doResize = (el, binding, vnode) => { - const { componentInstance: $table } = vnode; - - const { value } = binding; - - if (!$table.height) { - throw new Error(`el-$table must set the height. Such as height='100px'`); - } - const bottomOffset = (value && value.bottomOffset) || 30; - - if (!$table) return; - - const height = - window.innerHeight - el.getBoundingClientRect().top - bottomOffset; - $table.layout.setHeight(height); - $table.doLayout(); -}; - -export default { - bind(el, binding, vnode) { - el.resizeListener = () => { - doResize(el, binding, vnode); - }; - // parameter 1 is must be "Element" type - addResizeListener(window.document.body, el.resizeListener); - }, - inserted(el, binding, vnode) { - doResize(el, binding, vnode); - }, - unbind(el) { - removeResizeListener(window.document.body, el.resizeListener); - } -}; diff --git a/WebSite/src/directive/el-table/index.js b/WebSite/src/directive/el-table/index.js deleted file mode 100644 index ad0577f7c6117caf5f0a455826c879866c76c255..0000000000000000000000000000000000000000 --- a/WebSite/src/directive/el-table/index.js +++ /dev/null @@ -1,13 +0,0 @@ -import adaptive from "./adaptive"; - -const install = function(Vue) { - Vue.directive("el-height-adaptive-table", adaptive); -}; - -if (window.Vue) { - window["el-height-adaptive-table"] = adaptive; - Vue.use(install); // eslint-disable-line -} - -adaptive.install = install; -export default adaptive; diff --git a/WebSite/src/directive/permission/index.js b/WebSite/src/directive/permission/index.js deleted file mode 100644 index 7565e68bc221db6bf33f4c3db877d707f12ed69a..0000000000000000000000000000000000000000 --- a/WebSite/src/directive/permission/index.js +++ /dev/null @@ -1,13 +0,0 @@ -import permission from "./permission"; - -const install = function(Vue) { - Vue.directive("permission", permission); -}; - -if (window.Vue) { - window["permission"] = permission; - Vue.use(install); // eslint-disable-line -} - -permission.install = install; -export default permission; diff --git a/WebSite/src/directive/permission/permission.js b/WebSite/src/directive/permission/permission.js deleted file mode 100644 index 41ec77e3a5a72ace388dc5d17bb834f73d077bb2..0000000000000000000000000000000000000000 --- a/WebSite/src/directive/permission/permission.js +++ /dev/null @@ -1,22 +0,0 @@ -import store from "@/store"; - -export default { - inserted(el, binding, vnode) { - const { value } = binding; - const roles = store.getters && store.getters.roles; - - if (value && value instanceof Array && value.length > 0) { - const permissionRoles = value; - - const hasPermission = roles.some(role => { - return permissionRoles.includes(role); - }); - - if (!hasPermission) { - el.parentNode && el.parentNode.removeChild(el); - } - } else { - throw new Error(`need roles! Like v-permission="['admin','editor']"`); - } - } -}; diff --git a/WebSite/src/directive/sticky.js b/WebSite/src/directive/sticky.js deleted file mode 100644 index 6be81aef6bb753b053d145548276ae59278f928e..0000000000000000000000000000000000000000 --- a/WebSite/src/directive/sticky.js +++ /dev/null @@ -1,90 +0,0 @@ -const vueSticky = {}; -let listenAction; -vueSticky.install = Vue => { - Vue.directive("sticky", { - inserted(el, binding) { - const params = binding.value || {}; - const stickyTop = params.stickyTop || 0; - const zIndex = params.zIndex || 1000; - const elStyle = el.style; - - elStyle.position = "-webkit-sticky"; - elStyle.position = "sticky"; - // if the browser support css sticky锛圕urrently Safari, Firefox and Chrome Canary锛� - // if (~elStyle.position.indexOf('sticky')) { - // elStyle.top = `${stickyTop}px`; - // elStyle.zIndex = zIndex; - // return - // } - const elHeight = el.getBoundingClientRect().height; - const elWidth = el.getBoundingClientRect().width; - elStyle.cssText = `top: ${stickyTop}px; z-index: ${zIndex}`; - - const parentElm = el.parentNode || document.documentElement; - const placeholder = document.createElement("div"); - placeholder.style.display = "none"; - placeholder.style.width = `${elWidth}px`; - placeholder.style.height = `${elHeight}px`; - parentElm.insertBefore(placeholder, el); - - let active = false; - - const getScroll = (target, top) => { - const prop = top ? "pageYOffset" : "pageXOffset"; - const method = top ? "scrollTop" : "scrollLeft"; - let ret = target[prop]; - if (typeof ret !== "number") { - ret = window.document.documentElement[method]; - } - return ret; - }; - - const sticky = () => { - if (active) { - return; - } - if (!elStyle.height) { - elStyle.height = `${el.offsetHeight}px`; - } - - elStyle.position = "fixed"; - elStyle.width = `${elWidth}px`; - placeholder.style.display = "inline-block"; - active = true; - }; - - const reset = () => { - if (!active) { - return; - } - - elStyle.position = ""; - placeholder.style.display = "none"; - active = false; - }; - - const check = () => { - const scrollTop = getScroll(window, true); - const offsetTop = el.getBoundingClientRect().top; - if (offsetTop < stickyTop) { - sticky(); - } else { - if (scrollTop < elHeight + stickyTop) { - reset(); - } - } - }; - listenAction = () => { - check(); - }; - - window.addEventListener("scroll", listenAction); - }, - - unbind() { - window.removeEventListener("scroll", listenAction); - } - }); -}; - -export default vueSticky; diff --git a/WebSite/src/directive/waves/index.js b/WebSite/src/directive/waves/index.js deleted file mode 100644 index bafd2cbf232c8d0371ac691787d55fe76e6677e9..0000000000000000000000000000000000000000 --- a/WebSite/src/directive/waves/index.js +++ /dev/null @@ -1,13 +0,0 @@ -import waves from "./waves"; - -const install = function(Vue) { - Vue.directive("waves", waves); -}; - -if (window.Vue) { - window.waves = waves; - Vue.use(install); // eslint-disable-line -} - -waves.install = install; -export default waves; diff --git a/WebSite/src/directive/waves/waves.css b/WebSite/src/directive/waves/waves.css deleted file mode 100644 index af7a7efd9f1a0d239a34906c4a49eb2200df55c2..0000000000000000000000000000000000000000 --- a/WebSite/src/directive/waves/waves.css +++ /dev/null @@ -1,26 +0,0 @@ -.waves-ripple { - position: absolute; - border-radius: 100%; - background-color: rgba(0, 0, 0, 0.15); - background-clip: padding-box; - pointer-events: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - -webkit-transform: scale(0); - -ms-transform: scale(0); - transform: scale(0); - opacity: 1; -} - -.waves-ripple.z-active { - opacity: 0; - -webkit-transform: scale(2); - -ms-transform: scale(2); - transform: scale(2); - -webkit-transition: opacity 1.2s ease-out, -webkit-transform 0.6s ease-out; - transition: opacity 1.2s ease-out, -webkit-transform 0.6s ease-out; - transition: opacity 1.2s ease-out, transform 0.6s ease-out; - transition: opacity 1.2s ease-out, transform 0.6s ease-out, -webkit-transform 0.6s ease-out; -} \ No newline at end of file diff --git a/WebSite/src/directive/waves/waves.js b/WebSite/src/directive/waves/waves.js deleted file mode 100644 index ca1ca265a9b17f9888ce205de0e5017c0b2292dd..0000000000000000000000000000000000000000 --- a/WebSite/src/directive/waves/waves.js +++ /dev/null @@ -1,80 +0,0 @@ -import "./waves.css"; - -const context = "@@wavesContext"; - -function handleClick(el, binding) { - function handle(e) { - const customOpts = Object.assign({}, binding.value); - const opts = Object.assign( - { - ele: el, // 娉㈢汗浣滅敤鍏冪礌 - type: "hit", // hit 鐐瑰嚮浣嶇疆鎵╂暎 center涓績鐐规墿灞� - color: "rgba(0, 0, 0, 0.15)" // 娉㈢汗棰滆壊 - }, - customOpts - ); - const target = opts.ele; - if (target) { - target.style.position = "relative"; - target.style.overflow = "hidden"; - const rect = target.getBoundingClientRect(); - let ripple = target.querySelector(".waves-ripple"); - if (!ripple) { - ripple = document.createElement("span"); - ripple.className = "waves-ripple"; - ripple.style.height = ripple.style.width = - Math.max(rect.width, rect.height) + "px"; - target.appendChild(ripple); - } else { - ripple.className = "waves-ripple"; - } - switch (opts.type) { - case "center": - ripple.style.top = rect.height / 2 - ripple.offsetHeight / 2 + "px"; - ripple.style.left = rect.width / 2 - ripple.offsetWidth / 2 + "px"; - break; - default: - ripple.style.top = - (e.pageY - - rect.top - - ripple.offsetHeight / 2 - - document.documentElement.scrollTop || document.body.scrollTop) + - "px"; - ripple.style.left = - (e.pageX - - rect.left - - ripple.offsetWidth / 2 - - document.documentElement.scrollLeft || document.body.scrollLeft) + - "px"; - } - ripple.style.backgroundColor = opts.color; - ripple.className = "waves-ripple z-active"; - return false; - } - } - - if (!el[context]) { - el[context] = { - removeHandle: handle - }; - } else { - el[context].removeHandle = handle; - } - - return handle; -} - -export default { - bind(el, binding) { - el.addEventListener("click", handleClick(el, binding), false); - }, - update(el, binding) { - el.removeEventListener("click", el[context].removeHandle, false); - el.addEventListener("click", handleClick(el, binding), false); - }, - unbind(el) { - el.removeEventListener("click", el[context].removeHandle, false); - el[context] = null; - delete el[context]; - } -}; diff --git a/WebSite/src/filters/index.js b/WebSite/src/filters/index.js deleted file mode 100644 index 8d40f2b26c58f068aa3c0ad978e519ba1f7408fc..0000000000000000000000000000000000000000 --- a/WebSite/src/filters/index.js +++ /dev/null @@ -1,124 +0,0 @@ -/* - * @Description: - * @Autor: dong - * @Date: 2020-03-13 10:03:57 - * @LastEditors: dong - * @LastEditTime: 2020-04-13 09:00:20 - */ - -// import parseTime, formatTime and set to filter -export { parseTime, formatTime } from "@/utils"; -import moment from "moment"; // moment - -/** - * Show plural label if time is plural number - * @param {number} time - * @param {string} label - * @return {string} - */ -function pluralize(time, label) { - if (time === 1) { - return time + label; - } - return time + label + "s"; -} - -/** - * @param {number} time - */ -export function timeAgo(time) { - const between = Date.now() / 1000 - Number(time); - if (between < 3600) { - return pluralize(~~(between / 60), " minute"); - } else if (between < 86400) { - return pluralize(~~(between / 3600), " hour"); - } else { - return pluralize(~~(between / 86400), " day"); - } -} - -/** - * date formatting - * @method: dateFormatter - * @param {String} date 鏃ユ湡 - * @param {String} pattern 鏍煎紡鍖栧瓧绗︿覆 - * @return {String} - */ -export function dateFormatter(date, pattern = "YYYY-MM-DD HH:mm:ss") { - return moment(date).format(pattern); -} - -/** - * money formatting - * @method: moneyFormatter - * @param {Number} number 瑕佹牸寮忓寲鐨勬暟瀛� - * @param {Number} decimals 淇濈暀鍑犱綅灏忔暟 - * @param {String} thousandsSep 鍗冨垎浣嶇鍙� - * @return {String} - */ -export function moneyFormatter(number, decimals, thousandsSep = "") { - number = (number + "").replace(/[^0-9+-Ee.]/g, ""); - const n = !isFinite(+number) ? 0 : +number, - prec = !isFinite(+decimals) ? 0 : Math.abs(decimals), - toFixedFix = function(n, prec) { - const k = Math.pow(10, prec); - return "" + Math.ceil(n * k) / k; - }; - - const s = (prec ? toFixedFix(n, prec) : "" + Math.round(n)).split("."); - const re = /(-?\d+)(\d{3})/; - while (re.test(s[0]) && thousandsSep) { - s[0] = s[0].replace(re, `$1${thousandsSep}$2`); - } - - if ((s[1] || "").length < prec) { - s[1] = s[1] || ""; - s[1] += new Array(prec - s[1].length + 1).join("0"); - } - return s.join("."); -} - -/** - * Number formatting - * like 10000 => 10k - * @param {number} num - * @param {number} digits - */ -export function numberFormatter(num, digits) { - const si = [ - { value: 1e18, symbol: "E" }, - { value: 1e15, symbol: "P" }, - { value: 1e12, symbol: "T" }, - { value: 1e9, symbol: "G" }, - { value: 1e6, symbol: "M" }, - { value: 1e3, symbol: "k" } - ]; - for (let i = 0; i < si.length; i++) { - if (num >= si[i].value) { - return ( - (num / si[i].value) - .toFixed(digits) - .replace(/\.0+$|(\.[0-9]*[1-9])0+$/, "$1") + si[i].symbol - ); - } - } - return num.toString(); -} - -/** - * 10000 => "10,000" - * @param {number} num - */ -export function toThousandFilter(num) { - return (+num || 0) - .toString() - .replace(/^-?\d+/g, m => m.replace(/(?=(?!\b)(\d{3})+$)/g, ",")); -} - -/** - * Upper case first char - * @param {String} string - */ -export function uppercaseFirst(string) { - return string.charAt(0).toUpperCase() + string.slice(1); -} diff --git a/WebSite/src/icons/index.js b/WebSite/src/icons/index.js index d702940451ab47b00811aabd6a2e0709fff22133..1a6401bdf43072f6a9fbff314855dd23e5025b6d 100644 --- a/WebSite/src/icons/index.js +++ b/WebSite/src/icons/index.js @@ -1,9 +1,11 @@ -import Vue from "vue"; -import SvgIcon from "@/components/SvgIcon"; // svg component +/* + * @Description: + * @Autor: dongjunhua + * @Date: 2020-12-18 10:16:38 + * @LastEditors: dongjunhua + * @LastEditTime: 2020-12-18 11:33:17 + */ -// register globally -Vue.component("svg-icon", SvgIcon); - -const req = require.context("./svg", false, /\.svg$/); +const req = require.context('./svg', false, /\.svg$/); const requireAll = requireContext => requireContext.keys().map(requireContext); requireAll(req); diff --git a/WebSite/src/icons/svg/001-adwords.svg b/WebSite/src/icons/svg/001-adwords.svg new file mode 100644 index 0000000000000000000000000000000000000000..7d9765ca5d2fa1fda690b343d4f47391dbe2ce45 --- /dev/null +++ b/WebSite/src/icons/svg/001-adwords.svg @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve"> +<path style="fill:#28B446;" d="M512,503.496H381.656c-20.394,0-38.558-12.871-45.302-32.096l-71.392-203.336L256,242.552 + l2.687-124.567l79.494-109.48l23.565,67.12L512,503.496z"/> +<polygon style="fill:#219B38;" points="361.745,75.624 264.961,268.064 256,242.552 258.687,117.984 338.181,8.504 "/> +<path style="fill:#518EF8;" d="M338.181,8.504L256,242.552l-80.367,228.835c-6.744,19.239-24.908,32.109-45.302,32.109H0 + L173.806,8.504H338.181z"/> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +</svg> diff --git a/WebSite/src/icons/svg/002-rgb-1.svg b/WebSite/src/icons/svg/002-rgb-1.svg new file mode 100644 index 0000000000000000000000000000000000000000..4929fc104203d70e0961c9ef35d875a30bacabc6 --- /dev/null +++ b/WebSite/src/icons/svg/002-rgb-1.svg @@ -0,0 +1 @@ +<svg id="Capa_1" enable-background="new 0 0 512 512" height="512" viewBox="0 0 512 512" width="512" xmlns="http://www.w3.org/2000/svg"><g><path d="m256 0c-89.365 0-162.193 72.459-164.758 161.212l164.758-5.318 164.758 5.317c-2.565-88.752-75.393-161.211-164.758-161.211z" fill="#ff641a"/><path d="m256 0v155.894l164.758 5.317c-2.565-88.752-75.393-161.211-164.758-161.211z" fill="#f03800"/><g><path d="m15 91c-8.291 0-15-6.709-15-15v-61c0-8.291 6.709-15 15-15h61c8.291 0 15 6.709 15 15s-6.709 15-15 15h-46v46c0 8.291-6.709 15-15 15z" fill="#3b4a51"/></g><g><path d="m76 512h-61c-8.291 0-15-6.709-15-15v-61c0-8.291 6.709-15 15-15s15 6.709 15 15v46h46c8.291 0 15 6.709 15 15s-6.709 15-15 15z" fill="#3b4a51"/></g><g><path d="m497 91c-8.291 0-15-6.709-15-15v-46h-46c-8.291 0-15-6.709-15-15s6.709-15 15-15h61c8.291 0 15 6.709 15 15v61c0 8.291-6.709 15-15 15z" fill="#293939"/></g><g><path d="m497 512h-61c-8.291 0-15-6.709-15-15s6.709-15 15-15h46v-46c0-8.291 6.709-15 15-15s15 6.709 15 15v61c0 8.291-6.709 15-15 15z" fill="#293939"/></g><g><path d="m420.758 161.212-78.312 145.063-86.446 139.801c77.882 41.647 177.116 14.874 221.84-62.576 44.579-77.225 18.118-175.558-57.082-222.288z" fill="#80bfff"/><path d="m169.554 306.275-78.312-145.063c-75.2 46.73-101.66 145.063-57.082 222.288 44.398 76.91 143.202 104.998 221.84 62.576z" fill="#fed843"/></g><path d="m420.758 161.212c-53.625-33.307-115.135-32.032-164.758-5.318l86.446 150.381c48.214-29.823 80.073-83.311 78.312-145.063z" fill="#6aa9ff"/><path d="m91.242 161.212c-1.754 61.529 29.901 115.118 78.312 145.063l86.446-150.381c-49.284-26.307-111.138-27.986-164.758 5.318z" fill="#ff9100"/><path d="m256 306.275h-86.446c1.893 56.074 31.599 110.477 86.446 139.801 55.007-29.68 84.549-83.644 86.446-139.801z" fill="#97de3d"/><path d="m342.446 306.275h-86.446v139.801c55.007-29.679 84.549-83.644 86.446-139.801z" fill="#59c36a"/><path d="m320.951 218.5c-16.011-27.74-38.712-48.6-64.951-62.606-26.065 14.031-49.067 35.081-64.951 62.606-15.956 27.642-22.5 58.006-21.495 87.775 25.177 15.573 54.728 24.725 86.446 24.725s61.269-9.152 86.446-24.725c1.005-29.769-5.539-60.133-21.495-87.775z" fill="#f0f7ff"/><path d="m320.951 218.5c-16.011-27.74-38.712-48.6-64.951-62.606v175.106c31.718 0 61.269-9.152 86.446-24.725 1.005-29.769-5.539-60.133-21.495-87.775z" fill="#dfe7f4"/></g></svg> \ No newline at end of file diff --git a/WebSite/src/icons/svg/002-rgb.svg b/WebSite/src/icons/svg/002-rgb.svg new file mode 100644 index 0000000000000000000000000000000000000000..54527584f0e527129859f76afa17991ef996db81 --- /dev/null +++ b/WebSite/src/icons/svg/002-rgb.svg @@ -0,0 +1,11 @@ +<svg xmlns="http://www.w3.org/2000/svg" height="511pt" version="1.1" viewBox="1 -10 511.99999 511" width="511pt"> +<g id="surface1"> +<path d="M 405.5 150 C 405.5 232.566406 338.566406 299.5 256 299.5 C 173.433594 299.5 106.5 232.566406 106.5 150 C 106.5 67.433594 173.433594 0.5 256 0.5 C 338.566406 0.5 405.5 67.433594 405.5 150 Z M 405.5 150 " style=" stroke:none;fill-rule:nonzero;fill:rgb(25.882353%,75.294118%,88.627451%);fill-opacity:1;" /> +<path d="M 512 342.921875 C 512 425.488281 445.066406 492.421875 362.5 492.421875 C 279.933594 492.421875 213 425.488281 213 342.921875 C 213 260.355469 279.933594 193.421875 362.5 193.421875 C 445.066406 193.421875 512 260.355469 512 342.921875 Z M 512 342.921875 " style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,81.568627%,38.039216%);fill-opacity:1;" /> +<path d="M 220.746094 295.308594 C 232.050781 298.039062 243.855469 299.5 256 299.5 C 321.917969 299.5 377.871094 256.835938 397.753906 197.613281 C 386.449219 194.878906 374.644531 193.421875 362.5 193.421875 C 296.582031 193.421875 240.628906 236.085938 220.746094 295.308594 Z M 220.746094 295.308594 " style=" stroke:none;fill-rule:nonzero;fill:rgb(28.627451%,74.117647%,56.470588%);fill-opacity:1;" /> +<path d="M 299 342.921875 C 299 425.488281 232.066406 492.421875 149.5 492.421875 C 66.933594 492.421875 0 425.488281 0 342.921875 C 0 260.355469 66.933594 193.421875 149.5 193.421875 C 232.066406 193.421875 299 260.355469 299 342.921875 Z M 299 342.921875 " style=" stroke:none;fill-rule:nonzero;fill:rgb(98.039216%,43.921569%,69.803922%);fill-opacity:1;" /> +<path d="M 114.246094 197.613281 C 134.128906 256.835938 190.082031 299.5 256 299.5 C 268.144531 299.5 279.949219 298.039062 291.253906 295.308594 C 271.371094 236.085938 215.417969 193.421875 149.5 193.421875 C 137.355469 193.421875 125.550781 194.878906 114.246094 197.613281 Z M 114.246094 197.613281 " style=" stroke:none;fill-rule:nonzero;fill:rgb(68.627451%,48.235294%,77.647059%);fill-opacity:1;" /> +<path d="M 213 342.921875 C 213 383.800781 229.414062 420.839844 256 447.828125 C 282.585938 420.839844 299 383.800781 299 342.921875 C 299 302.042969 282.585938 265.003906 256 238.015625 C 229.414062 265.003906 213 302.042969 213 342.921875 Z M 213 342.921875 " style=" stroke:none;fill-rule:nonzero;fill:rgb(93.72549%,38.039216%,13.333333%);fill-opacity:1;" /> +<path d="M 291.253906 295.320312 C 279.949219 298.046875 268.140625 299.5 256 299.5 C 243.859375 299.5 232.050781 298.046875 220.746094 295.320312 C 228.058594 273.542969 240.242188 254.015625 256 238.015625 C 271.757812 254.015625 283.941406 273.542969 291.253906 295.320312 Z M 291.253906 295.320312 " style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" /> +</g> +</svg> \ No newline at end of file diff --git a/WebSite/src/icons/svg/003-color-1.svg b/WebSite/src/icons/svg/003-color-1.svg new file mode 100644 index 0000000000000000000000000000000000000000..7735055137fab6907a11c880af3ca4fd7343aa12 --- /dev/null +++ b/WebSite/src/icons/svg/003-color-1.svg @@ -0,0 +1,73 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve"> +<path style="fill:#D9D9D9;" d="M270.757,240.229c5.936,5.936,5.725,15.48,0,21.204l-21.204,21.204 + c-5.938,5.938-15.268,5.936-21.204,0c-5.726-5.726-5.938-15.267,0-21.204l21.204-21.204 + C255.276,234.505,265.031,234.503,270.757,240.229z"/> +<path style="fill:#C8C6CD;" d="M270.757,240.229c5.936,5.936,5.725,15.48,0,21.204l-21.204,21.204 + c-5.938,5.938-15.268,5.936-21.204,0L270.757,240.229z"/> +<path style="fill:#54E360;" d="M119.949,255.021l-61.225-18.742L0,255.021c0,70.275,28.585,135.998,74.739,182.152l71.449,1.02 + l13.328-85.797C135.082,327.962,119.949,292.227,119.949,255.021z"/> +<path style="fill:#FDBF00;" d="M418.074,371.971l-65.806-19.575c-24.435,24.435-59.17,39.567-96.375,39.567l-39.358,78.717 + l39.358,41.232c70.275,0,134.998-28.585,181.153-74.739L418.074,371.971z"/> +<path style="fill:#E61E14;" d="M461.405,102.985c0,0,0-0.3-0.3-0.3c-7.497-9.897-15.294-19.192-23.99-27.587l-50.905,6.871 + l-34.261,77.992c25.49,24.59,39.884,58.776,39.884,95.061l81.841,36.234l38.108-36.235 + C511.784,190.263,483.346,124.925,461.405,102.985z"/> +<path style="fill:#3AAAFF;" d="M255.892,0.128c-70.275,0-134.998,28.585-181.153,74.739c0,0,4.601,65.201,0.229,69.575 + c-4.372,4.372,84.548,15.203,84.548,15.203c24.435-24.435,59.17-39.567,96.375-39.567l41.856-51.229L255.892,0.128z"/> +<path style="fill:#00CC71;" d="M159.517,159.645L74.739,74.868C28.585,121.022,0,184.745,0,255.021h119.949 + C119.949,217.814,135.082,184.079,159.517,159.645z"/> +<path style="fill:#FD4E26;" d="M391.835,255.021c0,37.206-15.133,72.941-39.567,97.375l84.777,84.777 + c46.155-46.155,74.739-111.877,74.739-182.152H391.835z"/> +<path style="fill:#FFD400;" d="M159.517,352.396l-84.777,84.777c46.155,46.155,110.877,74.739,181.153,74.739V391.963 + C218.686,391.963,183.95,376.83,159.517,352.396z"/> +<path style="fill:#0095FF;" d="M437.116,75.097l-85.165,84.863c-6.296-6.896-13.194-12.294-20.691-17.392l-0.3-0.3 + c-22.191-14.694-48.678-22.191-75.067-22.191V0.128C324.863,0.128,389.736,27.116,437.116,75.097z"/> +<path style="fill:#D9D9D9;" d="M356.361,92.011l-86.029,85.029l-20.567,20.992c-16.965,16.115-18.66,44.528-0.212,63.4l0.212,0.212 + c17.811,17.81,47.012,17.176,64.4-0.212l105.809-105.808l-31.594-32.018l-31.595-31.595H356.361z"/> +<path style="fill:#5A5A5A;" d="M494.401,17.585C505.852,29.035,512,44.091,512,60.206c-0.212,23.536-13.57,43.681-33.291,53.646 + c-21.84,10.392-41.559,24.598-58.31,41.349c-0.212,0.212-0.212,0.212-0.425,0.425l-31.594-32.018l-31.807-31.807 + c16.751-16.751,31.382-36.895,41.771-58.311C416.58-3.407,465.564-11.253,494.401,17.585z"/> +<path style="fill:#C8C6CD;" d="M388.38,123.606l31.594,32.018L314.164,261.434c-17.388,17.388-46.589,18.023-64.4,0.212 + l-0.212-0.212L388.38,123.606z"/> +<g> + <path style="fill:#444444;" d="M494.401,17.585C505.852,29.035,512,44.091,512,60.206c-0.212,23.536-13.57,43.681-33.291,53.646 + c-21.84,10.392-41.559,24.598-58.31,41.349c-0.212,0.212-0.212,0.212-0.425,0.425l-31.594-32.018L494.401,17.585z"/> + <path style="fill:#444444;" d="M356.574,70.595l84.817,84.817c5.936,5.936,5.725,15.48,0,21.204 + c-5.938,5.938-15.268,5.936-21.204,0L335.37,91.8c-5.726-5.726-5.938-15.267,0-21.204C341.093,64.871,350.848,64.87,356.574,70.595 + z"/> +</g> +<path style="fill:#2B292C;" d="M398.982,113.004l42.408,42.408c5.936,5.936,5.725,15.48,0,21.204 + c-5.938,5.938-15.268,5.936-21.204,0l-42.408-42.408L398.982,113.004z"/> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +</svg> diff --git a/WebSite/src/icons/svg/003-color-2.svg b/WebSite/src/icons/svg/003-color-2.svg new file mode 100644 index 0000000000000000000000000000000000000000..a224460908220d71d951c332a432c1f8da88af7e --- /dev/null +++ b/WebSite/src/icons/svg/003-color-2.svg @@ -0,0 +1,69 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve"> +<path style="fill:#FC3E81;" d="M512,325.723c0,61.955-50.221,112.187-112.176,112.187c-22.829,0-44.071-6.82-61.79-18.554 + c-30.359-20.068-50.386-54.507-50.386-93.633c0-27.66,22.355-82.054,47.1-133.79c23.346-48.791,48.819-95.229,59.682-114.677 + c2.358-4.222,8.431-4.22,10.789,0.002C427.602,117.333,512,271.993,512,325.723z"/> +<path style="fill:#F01054;" d="M380.539,325.723c0,37.282-16.462,70.784-42.505,93.633c-30.359-20.068-50.386-54.507-50.386-93.633 + c0-27.66,22.355-82.054,47.1-133.79c3.472,7.325,6.882,14.68,10.168,21.974C368.887,267.147,380.539,303.719,380.539,325.723z"/> +<path style="fill:#FDB659;" d="M368.176,325.723c0,61.955-50.221,112.187-112.176,112.187c-17.626,0-34.305-4.069-49.15-11.322 + c-4.389-2.143-8.612-4.564-12.651-7.232c-30.359-20.078-50.376-54.517-50.376-93.633c0-27.66,22.355-82.054,47.11-133.79 + c23.338-48.791,48.808-95.229,59.672-114.676c2.359-4.222,8.429-4.224,10.787-0.001c12.863,23.03,46.212,83.913,72.252,141.73 + C352.909,261.77,368.176,302.874,368.176,325.723z"/> +<path style="fill:#FD9E28;" d="M368.176,325.723c0,61.955-50.221,112.187-112.176,112.187c-17.626,0-34.305-4.069-49.15-11.322 + c0.041,0,0.072-0.01,0.113-0.01c127.598-13.876,139.435-120.263,126.681-207.592C352.909,261.77,368.176,302.874,368.176,325.723z" + /> +<path style="fill:#F01054;" d="M512,325.723c0,61.955-50.221,112.187-112.176,112.187c-17.626,0-34.305-4.069-49.15-11.322 + c0.041,0,0.072-0.01,0.113-0.01c127.598-13.876,139.435-120.263,126.681-207.592C496.733,261.77,512,302.874,512,325.723z"/> +<path style="fill:#FD8724;" d="M368.176,325.723c0,34.583-15.648,65.52-40.259,86.102c-9.972-8.334-18.471-18.368-25.054-29.659 + c-9.673-16.576-15.216-35.861-15.216-56.444c0-25.075,18.378-72.144,40.259-119.274c1.947,4.193,3.874,8.396,5.748,12.578 + C352.93,261.79,368.176,302.884,368.176,325.723z"/> +<path style="fill:#FC5820;" d="M368.176,325.723c0,34.583-15.648,65.52-40.259,86.102c-9.972-8.334-18.471-18.368-25.054-29.659 + c36.984-42.227,39.034-106.665,30.792-163.14C352.93,261.79,368.176,302.884,368.176,325.723z"/> +<path style="fill:#FD9E28;" d="M236.715,325.723c0,37.282-16.462,70.794-42.516,93.633c-30.359-20.078-50.376-54.517-50.376-93.633 + c0-27.66,22.355-82.054,47.11-133.79c3.4,7.17,6.727,14.371,9.952,21.51C224.992,266.91,236.715,303.636,236.715,325.723z"/> +<path style="fill:#43A3F9;" d="M224.353,325.723c0,61.955-50.221,112.187-112.176,112.187c-17.647,0-34.336-4.069-49.181-11.332 + C25.693,408.354,0,370.031,0,325.723c0-53.73,84.397-208.39,106.781-248.464c2.358-4.221,8.431-4.224,10.789-0.003 + c12.829,22.968,46.036,83.588,72.045,141.266C208.983,261.471,224.353,302.792,224.353,325.723z"/> +<path style="fill:#1685FB;" d="M224.502,325.723c0,61.955-50.221,112.187-112.176,112.187c-17.647,0-34.336-4.069-49.181-11.332 + c127.825-13.897,139.476-120.634,126.62-208.055C209.132,261.471,224.502,302.792,224.502,325.723z"/> +<path style="fill:#5BE167;" d="M224.353,325.723c0,34.583-15.648,65.52-40.26,86.102c-9.993-8.355-18.512-18.42-25.116-29.752 + c-9.632-16.555-15.154-35.809-15.154-56.351c0-25.075,18.378-72.144,40.27-119.274c1.875,4.028,3.719,8.056,5.522,12.074 + C208.983,261.471,224.353,302.792,224.353,325.723z"/> +<path style="fill:#1FC974;" d="M224.353,325.723c0,34.583-15.648,65.52-40.26,86.102c-9.993-8.355-18.512-18.42-25.116-29.752 + c37.014-42.351,38.951-106.995,30.638-163.552C208.983,261.471,224.353,302.792,224.353,325.723z"/> +<path style="fill:#64BDFF;" d="M68.852,396.558c-1.489,0-2.994-0.43-4.321-1.327c-23.161-15.66-36.989-41.643-36.989-69.504 + c0-4.267,3.459-7.726,7.726-7.726s7.726,3.459,7.726,7.726c0,22.722,11.287,43.92,30.192,56.703 + c3.535,2.39,4.463,7.193,2.072,10.728C73.767,395.367,71.331,396.558,68.852,396.558z"/> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +</svg> diff --git a/WebSite/src/icons/svg/003-color-palette.svg b/WebSite/src/icons/svg/003-color-palette.svg new file mode 100644 index 0000000000000000000000000000000000000000..106356a0644f73ec8c4c5ae7b68be57dcf06aa44 --- /dev/null +++ b/WebSite/src/icons/svg/003-color-palette.svg @@ -0,0 +1,60 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0 512.001 512.001" style="enable-background:new 0 0 512.001 512.001;" xml:space="preserve"> +<path style="fill:#FFE470;" d="M105.115,421.105c-4.653,0-9.341-0.38-14.038-1.152c-26.396-4.339-48.741-20.391-61.303-44.041 + C9.765,338.247-0.523,295.635,0.021,252.685C0.893,183.887,28.443,119.75,77.597,72.089C126.799,24.38,191.838-1.209,260.732,0.044 + c67.385,1.223,130.542,28.391,177.835,76.5C485.921,124.713,512,188.445,512,256.001c0,41.739-10.277,83.168-29.719,119.809 + c-12.574,23.697-34.943,39.784-61.37,44.134c-26.423,4.35-52.765-3.716-72.268-22.129c-25.144-23.739-58.045-36.813-92.643-36.813 + s-67.499,13.074-92.643,36.813C147.318,412.956,126.649,421.104,105.115,421.105z"/> +<path style="fill:#FFB64C;" d="M438.568,76.528c-47.293-48.108-110.45-75.276-177.835-76.5C259.152,0,257.576,0,256,0v360.986 + c34.597,0,67.498,13.074,92.642,36.813c19.503,18.413,45.845,26.479,72.268,22.129c26.427-4.35,48.796-20.437,61.37-44.134 + c19.443-36.64,29.72-78.069,29.72-119.808C512,188.43,485.921,124.698,438.568,76.528z"/> +<path style="fill:#B35F49;" d="M407.433,512.001c-22.453,0-40.506-17.582-41.1-40.027L362,308.001v-31h90l-0.003,31.317 + l-3.459,163.438C448.068,493.948,429.628,512.001,407.433,512.001z"/> +<path style="fill:#D97F4A;" d="M447.395,247.001h-80.79l-38.392-102.377l12.079-6.039c41.771-20.885,91.646-20.885,133.416,0 + l12.079,6.039L447.395,247.001z"/> +<path style="fill:#FF3980;" d="M256,150.001c-24.813,0-45-20.187-45-45s20.187-45,45-45s45,20.187,45,45 + S280.813,150.001,256,150.001z"/> +<path style="fill:#00E7F0;" d="M139,205.001c-24.813,0-45-20.187-45-45s20.187-45,45-45s45,20.187,45,45 + S163.813,205.001,139,205.001z"/> +<path style="fill:#0091BF;" d="M107,325.001c-24.813,0-45-20.187-45-45s20.187-45,45-45s45,20.187,45,45 + S131.813,325.001,107,325.001z"/> +<path style="fill:#FF0059;" d="M256,60.001v90c24.813,0,45-20.187,45-45S280.813,60.001,256,60.001z"/> +<path style="fill:#AD5E2E;" d="M485.787,144.623l-12.079-6.039C452.823,128.142,429.911,122.92,407,122.92V247h40.395 + L485.787,144.623z"/> +<path style="fill:#99503D;" d="M407,511.99c0.145,0.001,0.287,0.01,0.433,0.01c22.195,0,40.635-18.053,41.105-40.244l3.459-163.438 + L452,277.001h-45V511.99z"/> +<path style="fill:#DEDEE0;" d="M452,307.001h-90v-70h90V307.001z"/> +<path style="fill:#C5C3CB;" d="M452,307.001h-45v-70h45V307.001z"/> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +</svg> diff --git a/WebSite/src/icons/svg/003-color-wheel.svg b/WebSite/src/icons/svg/003-color-wheel.svg new file mode 100644 index 0000000000000000000000000000000000000000..defe103f048082f81ce46c64168d87cf012317c1 --- /dev/null +++ b/WebSite/src/icons/svg/003-color-wheel.svg @@ -0,0 +1 @@ +<svg id="Capa_1" enable-background="new 0 0 500.238 500.238" height="512" viewBox="0 0 500.238 500.238" width="512" xmlns="http://www.w3.org/2000/svg"><path d="m462.702 179.884-25.827-23.063-52.623 20.224-7.16 29.548-27.519 124.838 89.36 38.929 11.089-14.317c15.3-31.38 23.88-66.64 23.88-103.91 0-25.189-3.94-49.459-11.2-72.249z" fill="#fe7d43"/><g><g id="XMLID_855_"><g><path d="m370.7 316.284-31.362 15.148-80.628 56.792 35.935 80.173 25.655 6.357v.01c57.33-21.32 103.462-64.83 130.042-119.38z" fill="#ee6161"/><path d="m289.59 390.514-17.107-11.991-102.233-15.526-49.118 78.911 22.609 28.476v.01c28.76 12.37 60.45 19.22 93.74 19.22 29.13 0 57.03-5.24 82.82-14.85v-.01z" fill="#c2a1d5"/><path d="m174.961 360.978-56.824-89.264-99.147 30.675v42.954c23.93 56.03 68.79 100.99 124.75 125.05v-.01l35.93-82.16z" fill="#8ac9fe"/><path d="m41.982 138.94-26.922 29.834h-.01c-9.73 25.94-15.05 54.03-15.05 83.36 0 33.09 6.77 64.59 18.99 93.21h.01l82.71-34.64 10.814-24.84 6.493-122.186z" fill="#75cdd5"/><path d="m181.916 38.284h-47.836c-54.62 26.46-97.57 73.22-119.03 130.49h.01l83.75 32.02 54.76-27.722 72.418-65.143z" fill="#6cf5c2"/><path d="m378.15 206.594-4.387-19.506-54.061 13.706-2.912 24.95c2.77 8.29 4.26 17.17 4.26 26.39 0 12.76-2.86 24.84-7.97 35.65l1.17 19.907 35.323 18.797 21.126-10.204c9.36-19.4 14.61-41.16 14.61-64.15.001-15.89-2.519-31.19-7.159-45.54z" fill="#fd6930"/><path d="m313.08 287.784c-9.13 19.33-25.45 34.59-45.51 42.33l-7.711 14.505 16.073 41.16 13.658 4.735c35.63-13.42 64.7-40.19 81.11-74.23z" fill="#e94444"/><path d="m267.57 330.114c-9.33 3.61-19.48 5.59-30.09 5.59-11.36 0-22.18-2.26-32.05-6.38l-16.865 1.828-20.06 40.896 11.165 16.176c17.76 7.56 37.3 11.74 57.81 11.74 18.34 0 35.9-3.34 52.11-9.45z" fill="#a274bf"/><path d="m161 285.864-13.195-9.541-43.061 14.922-3.034 19.459c15.03 34.81 43.05 62.68 77.96 77.52l25.76-58.9c-19.81-8.22-35.78-23.87-44.43-43.46z" fill="#26a6fe"/><path d="m351.33 43.684c-33.8-18.5-72.6-29.03-113.85-29.03-37.07 0-72.15 8.49-103.4 23.63l38.51 81 38.259 17.158 120.38 20.38 35.027-74.33z" fill="#fee97d"/></g></g></g><path d="m499.882 161.534c1.19 3.43-.71 7.16-4.17 8.24l-32.4 10.11-61.37 19.15c-13.72-42.64-43.5-78.07-82.24-99.15l31.18-56.2 16.5-29.74c1.74-3.15 5.74-4.26 8.85-2.45 57.36 33.25 101.73 86.42 123.65 150.04z" fill="#fec165"/><path d="m153.91 252.134c0-9.97 1.74-19.53 4.95-28.39l-.738-34.835h-35.835l-23.477 11.885c-5.92 15.99-9.16 33.29-9.16 51.34 0 20.81 4.3 40.61 12.06 58.57l59.29-24.84c-4.56-10.31-7.09-21.72-7.09-33.73z" fill="#2abcc8"/><path d="m202.588 128.977-29.999-9.694c-33.93 16.58-60.56 45.79-73.78 81.51l60.05 22.95c7.32-20.26 22.24-36.88 41.33-46.41v-.01l13.756-15.489z" fill="#00f2a6"/><path d="m307.84 122.084-.013-.002c-20.919-11.339-44.878-17.778-70.347-17.778-23.28 0-45.3 5.38-64.89 14.98l27.6 58.05c11.22-5.6 23.89-8.77 37.29-8.77 14.16 0 27.49 3.52 39.17 9.74l21.032 1.035 20.579-27.438z" fill="#fedf30"/><path d="m401.942 199.034-24.24 7.56-60.912 19.15c-6.81-20.49-21.686-37.633-40.486-47.623l31.088-56.037 12.31-22.2c38.74 21.08 68.52 56.51 82.24 99.15z" fill="#fdb441"/></svg> \ No newline at end of file diff --git a/WebSite/src/icons/svg/003-color.svg b/WebSite/src/icons/svg/003-color.svg new file mode 100644 index 0000000000000000000000000000000000000000..70ecbaa3244e8c438048d109281d22b81d80d85d --- /dev/null +++ b/WebSite/src/icons/svg/003-color.svg @@ -0,0 +1 @@ +<svg height="512pt" viewBox="0 0 512 512" width="512pt" xmlns="http://www.w3.org/2000/svg"><path d="m512 256c0 68.378906-26.628906 132.671875-74.980469 181.019531-48.347656 48.351563-112.640625 74.980469-181.019531 74.980469s-132.671875-26.628906-181.019531-74.980469c-48.351563-48.347656-74.980469-112.640625-74.980469-181.019531s26.628906-132.671875 74.980469-181.019531c48.347656-48.351563 112.640625-74.980469 181.019531-74.980469s132.671875 26.628906 181.019531 74.980469c48.351563 48.347656 74.980469 112.640625 74.980469 181.019531zm0 0" fill="#84caff"/><path d="m127.375 377.4375 134.488281 134.492188c66.1875-1.480469 128.191407-27.945313 175.15625-74.910157 34.269531-34.269531 57.613281-76.554687 68.3125-122.621093l-178.835937-178.835938zm0 0" fill="#00a6ff"/><path d="m256 227.75c16.519531-12.367188 37.015625-19.703125 59.191406-19.703125 13.917969 0 27.167969 2.894531 39.195313 8.101563.410156-3.664063.628906-7.382813.628906-11.152344 0-54.5625-44.390625-98.957032-98.953125-98.957032-54.566406 0-98.957031 44.394532-98.957031 98.957032 0 3.753906.214843 7.453125.625 11.101562 11.996093-5.175781 25.207031-8.050781 39.078125-8.050781 22.175781 0 42.671875 7.335937 59.191406 19.703125zm0 0" fill="#ffc473"/><path d="m216.238281 307.003906c0-3.769531.21875-7.488281.628907-11.152344-31.878907-13.804687-55.117188-43.914062-59.136719-79.753906-35.183594 15.183594-59.878907 50.210938-59.878907 90.90625 0 54.5625 44.390626 98.957032 98.957032 98.957032 22.175781 0 42.671875-7.335938 59.191406-19.703126-24.125-18.0625-39.761719-46.867187-39.761719-79.253906zm0 0" fill="#00989e"/><path d="m216.867188 295.851562c3.132812-27.792968 17.816406-52.140624 39.132812-68.101562-16.519531-12.367188-37.015625-19.703125-59.191406-19.703125-13.871094 0-27.082032 2.875-39.078125 8.050781 4.019531 35.839844 27.257812 65.949219 59.136719 79.753906zm0 0" fill="#006569"/><path d="m354.386719 216.148438c-4.042969 35.859374-27.324219 65.976562-59.25 79.753906.410156 3.644531.625 7.347656.625 11.101562 0 32.386719-15.640625 61.191406-39.761719 79.253906 16.519531 12.371094 37.015625 19.703126 59.191406 19.703126 54.566406 0 98.957032-44.390626 98.957032-98.957032 0-40.648437-24.636719-75.644531-59.761719-90.855468zm0 0" fill="#ff738e"/><path d="m256 227.75c21.328125 15.96875 36.019531 40.339844 39.136719 68.152344 31.925781-13.777344 55.207031-43.894532 59.25-79.753906-12.027344-5.207032-25.277344-8.101563-39.195313-8.101563-22.175781 0-42.671875 7.335937-59.191406 19.703125zm0 0" fill="#ffaa20"/><path d="m295.761719 307.003906c0-3.753906-.214844-7.453125-.625-11.101562-11.992188 5.175781-25.203125 8.050781-39.074219 8.050781-13.917969 0-27.167969-2.894531-39.195312-8.101563-.410157 3.664063-.628907 7.382813-.628907 11.152344 0 32.386719 15.640625 61.191406 39.761719 79.253906 24.125-18.0625 39.761719-46.867187 39.761719-79.253906zm0 0" fill="#ff0435"/><path d="m256 227.75c-21.316406 15.960938-36 40.308594-39.132812 68.101562 12.027343 5.207032 25.277343 8.101563 39.195312 8.101563 13.871094 0 27.082031-2.875 39.074219-8.050781-3.121094-27.8125-17.808594-52.179688-39.136719-68.152344zm0 0" fill="#00459f"/></svg> \ No newline at end of file diff --git a/WebSite/src/icons/svg/004-venn-diagram.svg b/WebSite/src/icons/svg/004-venn-diagram.svg new file mode 100644 index 0000000000000000000000000000000000000000..90b3f4fb152b414f7fb5c267fd58579f828d76aa --- /dev/null +++ b/WebSite/src/icons/svg/004-venn-diagram.svg @@ -0,0 +1,54 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve"> +<path style="fill:#FEDB41;" d="M421,181c0,1.199,0,2.1-0.3,2.999L376,226H136l-44.7-42.001C91,183.1,91,182.199,91,181 + c0-90.901,74.099-165,165-165h0.901C347.5,16.599,421,90.399,421,181z"/> +<path style="fill:#FFCC33;" d="M421,181c0,1.199,0,2.1-0.3,2.999L376,226H256.901V16C347.5,16.599,421,90.399,421,181z"/> +<path style="fill:#EF2E2E;" d="M262.639,420.659L155.997,220.838l-64.838-36.7C37.731,211.48,0,266.974,0,331 + c0,90.981,75.019,165,166,165c33.203,0,64.089-9.944,90-26.887L262.639,420.659z"/> +<path style="fill:#136EF1;" d="M420.841,184.138l-63.572,31.219L246.792,423.042L256,469.113C281.911,486.056,312.797,496,346,496 + c90.981,0,166-74.019,166-165C512,266.974,474.269,211.48,420.841,184.138z"/> +<path style="fill:#B758CE;" d="M331,331c0,57.599-29.7,107.999-74.099,137.399c-0.3,0.3-0.601,0.3-0.901,0.601 + c-45-29.4-75-80.1-75-138c0-1.201,0-2.1,0.3-3.001l15.601-23.099h117.9l15.899,23.099C331,328.9,331,329.799,331,331z"/> +<path style="fill:#FEA832;" d="M166,166c-26.955,0-52.346,6.627-74.841,18.138c1.188,62.69,37.456,116.834,90,143.723l32.097-23.348 + l29.788-72.233L256,192.887C230.089,175.944,199.203,166,166,166z"/> +<path style="fill:#10BB67;" d="M346,166c-33.203,0-64.089,9.944-90,26.887l-11.212,44.291l54.655,72.089l31.397,18.594 + c52.544-26.889,88.812-81.033,90-143.723C398.346,172.627,372.955,166,346,166z"/> +<path style="fill:#AA3DC8;" d="M331,331c0,57.599-29.7,107.999-74.099,137.399V304.9h57.9l15.899,23.099 + C331,328.9,331,329.799,331,331z"/> +<path style="fill:#495A79;" d="M330.7,327.999c-22.2,11.4-47.1,17.701-73.799,18.001H256c-27.001,0-52.2-6.601-74.7-18.001 + c0.899-56.699,30.3-106.199,74.7-135c0.3,0.3,0.601,0.3,0.901,0.601C300.7,222.4,329.801,271.599,330.7,327.999z"/> +<path style="fill:#42516D;" d="M330.7,327.999c-22.2,11.4-47.1,17.701-73.799,18.001V193.599 + C300.7,222.4,329.801,271.599,330.7,327.999z"/> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +</svg> diff --git a/WebSite/src/icons/svg/005-photos-1.svg b/WebSite/src/icons/svg/005-photos-1.svg new file mode 100644 index 0000000000000000000000000000000000000000..d2fbadc31b1df2567023d654e58b91219bde33c2 --- /dev/null +++ b/WebSite/src/icons/svg/005-photos-1.svg @@ -0,0 +1,135 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve"> +<circle style="fill:#F2F2F2;" cx="256" cy="256" r="256"/> +<path style="fill:#FCAB1A;" d="M255.997,0.001L255.997,0.001c-46.657,0-84.48,37.823-84.48,84.48v78.222 + c0,46.657,37.823,84.48,84.48,84.48l0,0c46.657,0,84.48-37.823,84.48-84.48V84.481C340.477,37.824,302.654,0.001,255.997,0.001z"/> +<path style="fill:#74AEE0;" d="M340.48,375.474v78.221c0,5.402-0.502,10.679-1.473,15.788c-2.299,12.173-7.21,23.427-14.137,33.144 + C302.958,508.74,279.865,512,256,512s-46.958-3.26-68.869-9.373c-6.928-9.718-11.839-20.971-14.137-33.155 + c-0.972-5.11-1.473-10.386-1.473-15.778v-78.221c0-9.07,1.432-17.795,4.075-25.987c8.307-25.767,28.662-46.122,54.429-54.429 + c5.35-1.735,10.93-2.936,16.687-3.563c3.051-0.345,6.154-0.512,9.289-0.512c3.145,0,6.238,0.167,9.289,0.512 + c5.757,0.627,11.337,1.829,16.687,3.563c25.767,8.317,46.111,28.662,54.429,54.429C339.048,357.679,340.48,366.404,340.48,375.474z" + /> +<path style="fill:#F0E400;" d="M446.269,78.815L446.269,78.815c-32.992-32.992-86.481-32.992-119.473,0l-55.312,55.312 + c-32.992,32.992-32.992,86.481,0,119.473l0,0c32.992,32.992,86.481,32.992,119.473,0l55.312-55.312 + C479.26,165.296,479.26,111.806,446.269,78.815z"/> +<path style="fill:#A78DC4;" d="M256,382.788c-3.918,7.659-9.08,14.838-15.485,21.253l-55.317,55.317 + c-3.814,3.814-7.899,7.189-12.204,10.115c-10.71,7.314-22.737,11.88-35.088,13.709c-0.01,0-0.01,0-0.01,0 + c-39.372-20.501-72.746-50.949-96.799-88.012c0.794-15.12,5.632-30.062,14.514-43.081c2.926-4.294,6.301-8.391,10.115-12.204 + l55.317-55.306c30.772-30.783,79.381-32.852,112.546-6.196c2.393,1.912,4.702,3.981,6.917,6.196h0.01 + c2.215,2.215,4.284,4.524,6.196,6.917c3.636,4.514,6.729,9.32,9.289,14.336C268.34,329.916,268.34,358.703,256,382.788z"/> +<path style="fill:#B6D949;" d="M512,256c0,24.68-3.49,48.536-10.01,71.116c0,0.01,0,0.01,0,0.01 + c-11.975,12.654-27.805,21.598-45.61,24.963c-5.11,0.972-10.386,1.473-15.778,1.473h-78.221c-9.059,0-17.795-1.432-25.976-4.075 + c-12.884-4.148-24.409-11.316-33.761-20.668s-16.52-20.877-20.668-33.761c-1.735-5.35-2.936-10.93-3.563-16.687 + c-0.345-3.051-0.512-6.154-0.512-9.289c0-46.655,37.825-84.48,84.48-84.48h78.221c28.442,0,53.593,14.054,68.911,35.6 + c0,0,0,0,0,0.01C511.154,231.905,512,243.858,512,256z"/> +<path style="fill:#D884A9;" d="M234.099,269.082c0,3.145-0.167,6.249-0.512,9.3c-0.627,5.757-1.829,11.327-3.563,16.677 + c-8.307,25.767-28.662,46.122-54.429,54.429c-8.182,2.644-16.917,4.075-25.976,4.075H71.387c-5.392,0-10.668-0.502-15.778-1.473 + c-17-3.208-32.204-11.515-43.959-23.27c-0.554-0.554-1.097-1.108-1.63-1.682C3.49,304.556,0,280.68,0,256 + c0-12.152,0.846-24.106,2.487-35.798c-0.01-0.01,0-0.01,0-0.01c15.308-21.535,40.469-35.589,68.901-35.589h78.232 + C196.274,184.602,234.099,222.427,234.099,269.082z"/> +<path style="fill:#68C29A;" d="M470.904,395.17c-24.054,37.063-57.417,67.5-96.789,88.022c0,0,0,0-0.01,0 + c-12.351-1.829-24.377-6.395-35.098-13.709c-4.305-2.926-8.401-6.311-12.215-10.125l-55.306-55.317 + c-6.416-6.416-11.577-13.594-15.485-21.253c-6.175-12.048-9.258-25.255-9.258-38.484c0-13.208,3.082-26.436,9.258-38.473 + c2.55-5.016,5.653-9.822,9.289-14.336c1.912-2.393,3.981-4.702,6.196-6.917s4.535-4.294,6.928-6.207 + c33.165-26.645,81.763-24.576,112.546,6.207l55.306,55.306c3.814,3.814,7.189,7.91,10.115,12.204 + C465.272,365.108,470.11,380.05,470.904,395.17z"/> +<path style="fill:#F57858;" d="M240.509,253.599L240.509,253.599c32.992-32.992,32.992-86.481,0-119.473l-55.312-55.312 + c-32.992-32.992-86.481-32.992-119.473,0l0,0c-32.992,32.992-32.992,86.481,0,119.473l55.312,55.312 + C154.028,286.59,207.518,286.59,240.509,253.599z"/> +<path style="fill:#7DB400;" d="M456.34,186.108c-2.91,4.286-6.258,8.354-10.075,12.171l-55.319,55.319 + c-6.415,6.415-13.579,11.576-21.245,15.489c-24.092-12.328-52.878-12.328-76.97,0c-5.006-2.535-9.794-5.632-14.299-9.262 + c0.595-5.757,1.815-11.358,3.536-16.708c12.891-4.162,24.406-11.327,33.761-20.682c9.355-9.324,16.521-20.87,20.682-33.761 + c8.167-2.628,16.896-4.068,25.97-4.068h78.222C445.983,184.606,451.24,185.107,456.34,186.108z"/> +<path style="fill:#399752;" d="M446.264,339.893c3.817,3.817,7.165,7.885,10.075,12.171c-5.1,1.001-10.357,1.502-15.738,1.502 + h-78.222c-9.074,0-17.803-1.439-25.97-4.068c-8.323-25.782-28.661-46.12-54.442-54.442c-1.721-5.351-2.941-10.92-3.536-16.677 + c4.506-3.63,9.293-6.727,14.299-9.293c12.047,6.195,25.281,9.262,38.486,9.262c13.204,0,26.439-3.067,38.486-9.262 + c7.665,3.911,14.831,9.074,21.245,15.488L446.264,339.893z"/> +<path style="fill:#37769C;" d="M340.477,375.468v78.222c0,5.381-0.501,10.638-1.502,15.738c-4.286-2.91-8.354-6.258-12.171-10.075 + l-55.319-55.319c-6.415-6.415-11.576-13.579-15.489-21.245c12.328-24.092,12.328-52.878,0-76.97 + c2.565-5.006,5.632-9.794,9.293-14.299c5.757,0.595,11.327,1.815,16.677,3.536c4.162,12.891,11.327,24.437,20.682,33.761 + c9.355,9.355,20.87,16.521,33.761,20.682C339.038,357.697,340.477,366.426,340.477,375.468z"/> +<path style="fill:#E0B100;" d="M340.477,84.481v78.222c0,9.043-1.439,17.772-4.068,25.97c-25.782,8.323-46.12,28.661-54.442,54.442 + c-5.35,1.721-10.92,2.941-16.677,3.536c-3.661-4.506-6.727-9.293-9.293-14.299c12.328-24.092,12.328-52.878,0-76.97 + c3.911-7.665,9.074-14.831,15.489-21.245l55.319-55.319c3.817-3.817,7.885-7.165,12.171-10.075 + C339.976,73.843,340.477,79.1,340.477,84.481z"/> +<path style="fill:#055302;" d="M292.73,269.086c24.092-12.328,52.878-12.328,76.97,0c-12.047,6.195-25.281,9.262-38.486,9.262 + C318.012,278.348,304.776,275.281,292.73,269.086z"/> +<path style="fill:#548100;" d="M336.409,188.674c-4.162,12.891-11.327,24.437-20.682,33.761 + c-9.355,9.355-20.87,16.521-33.761,20.682C290.289,217.335,310.627,196.997,336.409,188.674z"/> +<path style="fill:#0C4422;" d="M281.967,295.056c25.782,8.323,46.12,28.661,54.442,54.442 + c-12.891-4.162-24.406-11.327-33.761-20.682C293.293,319.493,286.128,307.947,281.967,295.056z"/> +<path style="fill:#90FC9F;" d="M278.431,259.824c4.506,3.63,9.293,6.727,14.299,9.262c-5.006,2.565-9.794,5.663-14.299,9.293 + c-0.375-3.067-0.532-6.164-0.532-9.293S278.056,262.86,278.431,259.824z"/> +<path style="fill:#FFDC8D;" d="M281.967,243.116c-1.721,5.35-2.941,10.952-3.536,16.708c-2.41-1.909-4.725-4.005-6.946-6.227 + c-2.221-2.221-4.286-4.537-6.195-6.946C271.047,246.058,276.616,244.837,281.967,243.116z"/> +<path style="fill:#5BD3A2;" d="M278.431,278.38c0.595,5.757,1.815,11.327,3.536,16.677c-5.35-1.721-10.92-2.941-16.677-3.536 + c1.909-2.41,3.974-4.725,6.195-6.947C273.707,282.352,276.021,280.288,278.431,278.38z"/> +<path style="fill:#F9AF6B;" d="M265.289,246.652c-3.035,0.375-6.133,0.532-9.293,0.532c-3.161,0-6.258-0.157-9.293-0.532 + c3.66-4.506,6.727-9.293,9.293-14.299C258.562,237.359,261.629,242.147,265.289,246.652z"/> +<path style="fill:#75ADDF;" d="M255.997,290.988c3.16,0,6.258,0.157,9.293,0.532c-3.661,4.506-6.727,9.293-9.293,14.299 + c-2.565-5.006-5.632-9.794-9.293-14.299C249.739,291.145,252.837,290.988,255.997,290.988z"/> +<path style="fill:#A75000;" d="M255.997,155.383c12.328,24.092,12.328,52.878,0,76.97 + C243.669,208.261,243.669,179.475,255.997,155.383z"/> +<path style="fill:#231F63;" d="M255.997,305.82c12.328,24.092,12.328,52.878,0,76.97c-6.164-12.047-9.262-25.281-9.262-38.486 + C246.735,331.101,249.833,317.865,255.997,305.82z"/> +<path style="fill:#F95500;" d="M255.997,232.353c-2.565,5.006-5.632,9.794-9.293,14.299c-5.757-0.595-11.327-1.815-16.677-3.536 + c-8.323-25.782-28.661-46.12-54.442-54.442c-2.628-8.197-4.068-16.927-4.068-25.97V84.481c0-5.381,0.501-10.638,1.502-15.738 + c4.286,2.91,8.354,6.258,12.171,10.075l55.319,55.319c6.415,6.415,11.576,13.579,15.489,21.245 + C243.669,179.475,243.669,208.261,255.997,232.353z"/> +<path style="fill:#68549D;" d="M246.704,291.52c3.66,4.506,6.727,9.293,9.293,14.299c-6.164,12.047-9.262,25.281-9.262,38.486 + c0,13.204,3.098,26.439,9.262,38.486c-3.911,7.665-9.074,14.831-15.489,21.245l-55.319,55.319 + c-3.817,3.817-7.885,7.165-12.171,10.075c-1.001-5.1-1.502-10.357-1.502-15.738V375.47c0-9.043,1.439-17.772,4.068-25.97 + c25.782-8.323,46.12-28.661,54.442-54.442C235.378,293.335,240.947,292.115,246.704,291.52z"/> +<path style="fill:#FF6E7C;" d="M233.563,259.824c-0.595-5.757-1.815-11.358-3.536-16.708c5.351,1.721,10.92,2.941,16.677,3.536 + c-1.909,2.41-3.974,4.725-6.195,6.946S235.971,257.916,233.563,259.824z"/> +<path style="fill:#A18DC5;" d="M246.704,291.52c-5.757,0.595-11.327,1.815-16.677,3.536c1.721-5.351,2.941-10.92,3.536-16.677 + c2.41,1.909,4.725,3.974,6.946,6.195C242.73,286.796,244.796,289.111,246.704,291.52z"/> +<path style="fill:#D884A9;" d="M233.563,259.824c0.375,3.035,0.532,6.133,0.532,9.262s-0.157,6.227-0.532,9.293 + c-4.506-3.63-9.293-6.727-14.299-9.293C224.27,266.551,229.057,263.454,233.563,259.824z"/> +<path style="fill:#CE1501;" d="M230.027,243.116c1.721,5.35,2.941,10.952,3.536,16.708c-4.506,3.63-9.293,6.727-14.299,9.262 + c-24.092-12.328-52.878-12.328-76.97,0c-7.665-3.911-14.831-9.074-21.245-15.489l-55.32-55.318 + c-3.817-3.817-7.165-7.885-10.075-12.171c5.1-1.001,10.357-1.502,15.738-1.502h78.222c9.074,0,17.803,1.439,25.97,4.068 + C183.907,214.456,204.245,234.794,230.027,243.116z"/> +<path style="fill:#A93D64;" d="M233.563,278.38c-0.595,5.757-1.815,11.327-3.536,16.677c-25.782,8.323-46.12,28.661-54.442,54.442 + c-8.167,2.628-16.896,4.068-25.97,4.068H71.392c-5.381,0-10.638-0.501-15.738-1.502c2.91-4.286,6.258-8.354,10.075-12.171 + l55.319-55.319c6.415-6.415,13.579-11.576,21.245-15.489c24.092,12.359,52.878,12.359,76.97,0 + C224.27,271.652,229.057,274.75,233.563,278.38z"/> +<path style="fill:#AC0000;" d="M175.585,188.674c25.782,8.323,46.12,28.661,54.442,54.442 + C204.245,234.794,183.907,214.456,175.585,188.674z"/> +<path style="fill:#511031;" d="M230.027,295.056c-8.323,25.782-28.661,46.12-54.442,54.442 + C183.907,323.717,204.245,303.379,230.027,295.056z"/> +<path style="fill:#860700;" d="M142.293,269.086c24.092-12.328,52.878-12.328,76.97,0 + C195.171,281.445,166.385,281.445,142.293,269.086z"/> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +</svg> diff --git a/WebSite/src/icons/svg/005-photos.svg b/WebSite/src/icons/svg/005-photos.svg new file mode 100644 index 0000000000000000000000000000000000000000..876e2e977d4c0c016865398f474f0f833c27c435 --- /dev/null +++ b/WebSite/src/icons/svg/005-photos.svg @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve"> +<polygon style="fill:#D32E2A;" points="385.829,128 385.829,256 347.429,291.072 307.2,256 272.457,241.371 306.59,165.51 "/> +<polygon style="fill:#3A5BBC;" points="384,385.219 256,385.219 255.39,383.391 226.133,356.291 255.39,308.041 270.629,271.848 + 355.962,302.043 "/> +<polygon style="fill:#FBBB00;" points="256.61,128.61 288.305,164.901 256.61,203.959 241.371,240.152 161.524,200.253 128,126.781 + 256,126.781 "/> +<polygon style="fill:#28B446;" points="239.543,270.629 204.495,346.843 126.171,384 126.171,256 163.962,232.558 204.8,256 "/> +<polygon style="fill:#518EF8;" points="512,256 384,385.219 270.629,271.848 307.2,256 385.829,256 "/> +<polygon style="fill:#91C646;" points="255.39,383.391 255.39,512 126.171,384 239.543,270.629 255.39,307.2 255.39,308.041 "/> +<polygon style="fill:#FFD837;" points="241.371,240.152 204.8,256 126.171,256 0,256 128,126.781 "/> +<polygon style="fill:#F14336;" points="385.829,128 272.457,241.371 256.61,204.8 256.61,203.959 256.61,128.61 256.61,0 "/> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +</svg> diff --git a/WebSite/src/icons/svg/006-google-chrome.svg b/WebSite/src/icons/svg/006-google-chrome.svg new file mode 100644 index 0000000000000000000000000000000000000000..c24594c7fd0be62048dbd51055000950995619b8 --- /dev/null +++ b/WebSite/src/icons/svg/006-google-chrome.svg @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0 512.023 512.023" style="enable-background:new 0 0 512.023 512.023;" xml:space="preserve"> +<path style="fill:#F44336;" d="M493.248,160.021H256.021c-53.019-0.052-96.042,42.886-96.095,95.905 + c-0.016,16.468,4.204,32.663,12.255,47.028L53.568,99.434c86.393-111.815,247.073-132.423,358.888-46.03 + C448.365,81.149,476.249,117.946,493.248,160.021z"/> +<path style="fill:#FFC107;" d="M512.021,256.021c-0.118,141.336-114.664,255.882-256,256c-10.704,0.04-21.397-0.673-32-2.133 + l115.2-205.867c26.403-45.964,10.664-104.625-35.2-131.2c-14.521-8.407-31.008-12.824-47.787-12.8h237.013 + C505.705,190.491,512.083,223.103,512.021,256.021z"/> +<path style="fill:#4CAF50;" d="M339.221,304.021l-115.2,205.867h-0.213C83.62,492.176-15.666,364.172,2.046,223.984 + C7.779,178.609,25.57,135.6,53.568,99.434l118.613,203.52l0.64,1.067c26.451,45.95,85.143,61.757,131.093,35.307 + C318.592,330.879,330.773,318.698,339.221,304.021z"/> +<path style="fill:#F44336;" d="M339.221,304.021c-26.451,45.95-85.143,61.757-131.093,35.307 + c-14.677-8.449-26.858-20.63-35.307-35.307l-0.64-1.067c-25.921-46.251-9.439-104.758,36.812-130.679 + c14.366-8.051,30.561-12.271,47.028-12.255h0.213c16.779-0.024,33.266,4.393,47.787,12.8 + C349.886,199.396,365.624,258.057,339.221,304.021z"/> +<path style="fill:#2196F3;" d="M339.221,304.021c-26.451,45.95-85.143,61.757-131.093,35.307 + c-14.677-8.449-26.858-20.63-35.307-35.307l-0.64-1.067c-25.921-46.251-9.439-104.758,36.812-130.679 + c14.366-8.051,30.561-12.271,47.028-12.255h0.213c16.779-0.024,33.266,4.393,47.787,12.8 + C349.886,199.396,365.624,258.057,339.221,304.021z"/> +<path style="fill:#FAFAFA;" d="M255.659,362.688c-18.598-0.002-36.868-4.903-52.971-14.208 + c-16.237-9.391-29.722-22.883-39.104-39.125c-29.455-51.018-11.975-116.254,39.043-145.709c16.233-9.372,34.65-14.301,53.395-14.291 + c58.91-0.046,106.704,47.674,106.749,106.584c0.015,18.752-4.915,37.176-14.291,53.416l0,0 + C329.256,342.405,293.893,362.724,255.659,362.688z M256.213,170.688c-30.613-0.163-58.955,16.13-74.219,42.667 + c-23.564,40.86-9.543,93.087,31.317,116.651s93.087,9.543,116.651-31.317l0,0c23.564-40.814,9.58-93.003-31.234-116.568 + c-12.922-7.46-27.574-11.402-42.494-11.432H256.213z"/> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +</svg> diff --git a/WebSite/src/icons/svg/006-google-drive.svg b/WebSite/src/icons/svg/006-google-drive.svg new file mode 100644 index 0000000000000000000000000000000000000000..6ce237dd054dc1a623039ab15dff66d4c7ea8ac0 --- /dev/null +++ b/WebSite/src/icons/svg/006-google-drive.svg @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve"> +<polygon style="fill:#FFC107;" points="341.344,352 512,352 341.344,32 170.656,32 "/> +<polygon style="fill:#2196F3;" points="158.464,352 85.344,480 432,480 512,352 "/> +<polygon style="fill:#4CAF50;" points="170.656,32 0,330.656 85.344,480 253.056,186.496 "/> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +</svg> diff --git a/WebSite/src/icons/svg/006-google-maps.svg b/WebSite/src/icons/svg/006-google-maps.svg new file mode 100644 index 0000000000000000000000000000000000000000..4490d6ed8d8630a61e19c67ad6139ccafc0cbe34 --- /dev/null +++ b/WebSite/src/icons/svg/006-google-maps.svg @@ -0,0 +1 @@ +<svg id="Capa_1" enable-background="new 0 0 512 512" height="512" viewBox="0 0 512 512" width="512" xmlns="http://www.w3.org/2000/svg"><g><path d="m421.181 93.611-225.181 60 60 358.389 153.718-203.621c24.341-32.239 38.782-72.37 38.782-115.879 0-36.16-9.979-69.985-27.319-98.889z" fill="#0f9d58"/><path d="m181.016 412.674 74.984 99.326v-198.943z" fill="#31aa52"/><path d="m256 313.057 57.926-76.955-57.926-43.602-60 60.278z" fill="#f69411"/><path d="m256 0-60 65.969 60 65.969 49.338-125.545c-15.748-4.164-32.282-6.393-49.338-6.393z" fill="#4175df"/><path d="m102.198 76.73v115.77h153.802v-192.5c-62.856 0-118.669 30.13-153.802 76.73z" fill="#4086f4"/><path d="m102.198 76.73c-24.291 32.22-38.698 72.311-38.698 115.77 0 36.158 9.981 69.979 27.322 98.88l137.25-119.902z" fill="#eb4132"/><path d="m305.338 6.393-49.338 65.546-72.5 164.163h130.426l107.255-142.49c-25.465-42.444-66.82-74.257-115.843-87.219z" fill="#4086f4"/><path d="m256 71.939-57.928 76.958 57.928 43.603z" fill="#609af6"/><path d="m196 192.5 60 120.557 57.926-76.955z" fill="#f8a808"/><path d="m198.072 148.897-107.25 142.483c3.525 5.875 7.347 11.552 11.46 16.998l78.734 104.295 74.984-99.616v-120.557z" fill="#fbbd00"/><path d="m256 120-36.25 72.5 36.25 72.5c40.041 0 72.5-32.459 72.5-72.5s-32.459-72.5-72.5-72.5z" fill="#e3e7ea"/><path d="m183.5 192.5c0 40.041 32.459 72.5 72.5 72.5v-145c-40.041 0-72.5 32.459-72.5 72.5z" fill="#fff"/></g></svg> \ No newline at end of file diff --git a/WebSite/src/icons/svg/007-paint-brush.svg b/WebSite/src/icons/svg/007-paint-brush.svg new file mode 100644 index 0000000000000000000000000000000000000000..1495aa4ec6dd38212ea7ef80443169255d115ea1 --- /dev/null +++ b/WebSite/src/icons/svg/007-paint-brush.svg @@ -0,0 +1 @@ +<svg id="Capa_1" enable-background="new 0 0 512 512" height="512" viewBox="0 0 512 512" width="512" xmlns="http://www.w3.org/2000/svg"><path d="m171.193 130.226c-2.209 0-3.448 0-5.657 0l-12.743 12.743c-29.242 29.252-29.242 76.836 0 106.089l7.831 7.831c6.56 6.55 5.67 17.361-1.84 22.772-53.114 38.273-119.969 87.447-136.86 104.338-29.232 29.242-29.232 76.826.01 106.079 29.242 29.232 76.826 29.232 106.078-.01 17.821-17.832 73.016-93.398 104.328-136.851 5.44-7.551 16.251-8.361 22.772-1.84l7.831 7.831c29.252 29.242 76.836 29.242 106.088 0l12.743-12.743c0-2.209 0-3.448 0-5.657zm-95.226 320.808c-8.285 0-15.001-6.716-15.001-15.001s6.716-15.001 15.001-15.001 15.001 6.716 15.001 15.001-6.716 15.001-15.001 15.001z" fill="#1c6c94"/><path d="m276.482 235.516-189.914 189.916c2.72 2.71 4.4 6.46 4.4 10.601 0 8.281-6.72 15.001-15.001 15.001-4.14 0-7.891-1.68-10.601-4.4l-43.433 43.434v.01c29.242 29.232 76.826 29.232 106.078-.01 17.821-17.832 73.016-93.398 104.328-136.851 5.44-7.551 16.251-8.361 22.772-1.84l7.831 7.831c29.252 29.242 76.836 29.242 106.088 0l12.571-12.571.17-.17v-5.66z" fill="#165771"/><path d="m507.61 220.625-126.01 126.01-216.236-216.237 126.01-126.01c5.86-5.851 15.361-5.851 21.222 0l30.002 30.002c4.24 4.25 5.55 10.611 3.32 16.181l-17.001 42.503 42.503-17.001c5.57-2.22 11.931-.92 16.181 3.32l120.009 120.01c5.85 5.861 5.85 15.362 0 21.222z" fill="#fed941"/><path d="m507.61 220.625-125.84 125.84-.17.17-108.118-108.118 136.62-136.621 97.507 97.508c5.851 5.86 5.851 15.361.001 21.221z" fill="#fcbe29"/><path d="m512 210.014v165.013c0 25.382-20.986 45.691-46.063 44.994-24.232-.57-43.943-21.022-43.943-45.604v-98.187l-27.432-27.422c-29.274-29.295-29.364-76.703 0-106.089l28.182-28.182 84.866 84.867c2.81 2.82 4.39 6.63 4.39 10.61z" fill="#ee3616"/></svg> \ No newline at end of file diff --git a/WebSite/src/icons/svg/element.svg b/WebSite/src/icons/svg/element.svg new file mode 100644 index 0000000000000000000000000000000000000000..b63bffad9a73532996012a107c73135e2c452398 --- /dev/null +++ b/WebSite/src/icons/svg/element.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 153.71 38"><defs><style>.cls-1,.cls-2{fill:#409eff;}.cls-1{fill-rule:evenodd;}</style></defs><g id="鍥惧眰_2" data-name="鍥惧眰 2"><g id="鍥惧眰_1-2" data-name="鍥惧眰 1"><path id="Shape-Copy" class="cls-1" d="M142,26.16s.28,0,.82,0a.72.72,0,0,1,.69.41s1.08,2,1.37,2.48,0,.42-.12.41h0s-.31,0-3.45,0a4.93,4.93,0,0,1-4.54-4.54v-7H134.3V15.28c0-.36.41-.41.41-.41h2.07V12.25a.6.6,0,0,1,.41-.55l2.3-.66c.34-.1.59,0,.59.35V15h3.58c.34,0,.41.41.41.41V18h-4v6.06c0,1.76,1.93,2.07,1.93,2.07Zm-10.6,3h-2.2c-.43,0-.41-.55-.41-.55V18.45c0-.62-.83-.83-.83-.83h-4.54c-.68,0-.69.83-.69.83V28.77a.41.41,0,0,1-.41.42h-2.2c-.48,0-.41-.55-.41-.55V15.83c0-1,1.24-1.24,1.24-1.24h9.63c1,0,1.23,1.24,1.23,1.24V28.5c0,.72-.41.69-.41.69ZM115.73,23.4H107.2v2.07c0,.74,1,1,1,1H115a1.16,1.16,0,0,1,.82.42s.61,1.25.83,1.79-.41.55-.41.55H106c-1.24,0-1.51-1.52-1.51-1.52V16c0-.67,1-1,1-1h10.32c1,0,1.24,1.23,1.24,1.23v5.93c0,1-1.24,1.23-1.24,1.23Zm-1.52-4.95s-.08-.69-.68-.69h-5.65s-.68.18-.68.69V20a.69.69,0,0,0,.68.69h5.65a.9.9,0,0,0,.68-.83V18.45ZM101.28,29.19h-2.2c-.29,0-.41-.42-.41-.42V18.45c0-.64-.83-.83-.83-.83H95.78c-.58,0-.69.83-.69.83V28.77c0,.35-.41.42-.41.42h-2.2c-.31,0-.42-.42-.42-.42V18.45c0-.66-.82-.83-.82-.83H89.17c-.63,0-.68.83-.68.83V28.77a.39.39,0,0,1-.42.42h-2.2a.41.41,0,0,1-.41-.42V15.69c0-.75,1.1-1.1,1.1-1.1h13.76c1.1,0,1.37,1.38,1.37,1.38v12.8c0,.48-.41.42-.41.42Zm-20-5.79H72.8v2.07c0,.74,1,1,1,1h6.88a1.19,1.19,0,0,1,.83.42s.6,1.25.82,1.79-.41.55-.41.55H71.56c-1.24,0-1.51-1.52-1.51-1.52V16c0-.67,1-1,1-1H81.33c1,0,1.24,1.23,1.24,1.23v5.93c0,1-1.24,1.23-1.24,1.23Zm-1.51-4.95s-.09-.69-.69-.69H73.49s-.69.18-.69.69V20a.69.69,0,0,0,.69.69h5.64a.91.91,0,0,0,.69-.83V18.45ZM68,29.19H62.76a4.35,4.35,0,0,1-4.13-4c0-3.91,0-16.1,0-16.1h2.48a.79.79,0,0,1,.82.82V24.37A2.58,2.58,0,0,0,63.86,26h2.2s.72-.23,1.24.69l1.1,1.93s.08.55-.41.55Zm-26.56-.83V10.19a1,1,0,0,1,.69-1H55.05c.73,0,.42.83.42.83s-.41,1.12-.69,1.65a1,1,0,0,1-.83.55H45.56a.77.77,0,0,0-.83.69v4.54h9.5c.55,0,.27.69.27.69s-.71,1.52-1,1.93a1.05,1.05,0,0,1-.83.41h-8v4.82a.91.91,0,0,0,.69.83h8.81a.85.85,0,0,1,.82.41l1.24,1.93c.37.56-.14.69-.14.69H42.26C41.68,29.19,41.43,28.36,41.43,28.36Zm-8.14-1.14c0,1.57-.83,1.93-.83,1.93S18.32,37.31,17.4,37.83a1.68,1.68,0,0,1-1.52,0S1.09,29.25.55,28.87a1.29,1.29,0,0,1-.55-1s0-17,0-17.78S1,8.76,1,8.76L15.75.21a2,2,0,0,1,1.79,0S30.6,7.8,32,8.62a2.08,2.08,0,0,1,1.25,2.06s0,15.07,0,16.54Zm-5.9-17c-3-1.74-10.16-5.87-10.16-5.87a1.58,1.58,0,0,0-1.41,0L4.22,11s-.77.46-.76,1.08S3.46,26,3.46,26a1,1,0,0,0,.43.75c.43.3,12,7,12,7a1.3,1.3,0,0,0,1.19,0c.72-.4,11.82-6.79,11.82-6.79s.65-.28.65-1.51c0-.36,0-1.74,0-3.47L16.53,29.88v-3a3,3,0,0,1,1-2.07l11.56-7a2.49,2.49,0,0,0,.55-1.46c0-1.27,0-2.37,0-3.07L16.53,21.2V18a2.17,2.17,0,0,1,.83-1.79Z"/><path class="cls-1" d="M150.32,11.21h-2.24v-5c0-.11.12-.21.29-.24l1.44-.26c.26,0,.51.07.51.24Z"/><path class="cls-1" d="M148.08,9h2.24v5.11c0,.11-.11.21-.28.25l-1.45.26c-.26.05-.51-.07-.51-.24Z"/><path class="cls-2" d="M145.09,9h8.22a.4.4,0,0,1,.4.4v1.85a0,0,0,0,1,0,0h-9a0,0,0,0,1,0,0V9.36A.4.4,0,0,1,145.09,9Z"/></g></g></svg> \ No newline at end of file diff --git a/WebSite/src/icons/svg/gitlab.svg b/WebSite/src/icons/svg/gitlab.svg new file mode 100644 index 0000000000000000000000000000000000000000..bf1bffe417dbf6b1745ba13a18b1ddf3bf9a9a0f --- /dev/null +++ b/WebSite/src/icons/svg/gitlab.svg @@ -0,0 +1,15 @@ +<svg height="36" viewBox="0 0 1231 342" + xmlns="http://www.w3.org/2000/svg" class="nav-logo"> + <g fill="none" fill-rule="evenodd"> + <g fill="#8C929D" class="wordmark"> + <path d="M764.367 94.13h-20.803l.066 154.74h84.155v-19.136h-63.352l-.066-135.603zM907.917 221.7c-5.2 5.434-13.946 10.87-25.766 10.87-15.838 0-22.22-7.797-22.22-17.957 0-15.354 10.637-22.678 33.332-22.678 4.255 0 11.11.472 14.655 1.18v28.586zm-21.51-93.787c-16.8 0-32.208 5.952-44.23 15.858l7.352 12.73c8.51-4.962 18.91-9.924 33.802-9.924 17.02 0 24.585 8.742 24.585 23.39v7.56c-3.31-.71-10.164-1.184-14.42-1.184-36.404 0-54.842 12.757-54.842 39.454 0 23.86 14.656 35.908 36.876 35.908 14.97 0 29.314-6.852 34.278-17.954l3.782 15.118h14.657v-79.14c0-25.04-10.874-41.815-41.84-41.815zM995.368 233.277c-7.802 0-14.657-.945-19.858-3.308v-71.58c7.093-5.908 15.84-10.16 26.95-10.16 20.092 0 27.893 14.174 27.893 37.09 0 32.6-12.53 47.957-34.985 47.957m8.742-105.364c-18.592 0-28.6 12.64-28.6 12.64V120.59l-.066-26.458H955.116l.066 150.957c10.164 4.25 24.11 6.613 39.24 6.613 38.768 0 57.442-24.804 57.442-67.564 0-33.783-17.26-56.227-47.754-56.227M538.238 110.904c18.438 0 30.258 6.142 38.06 12.285l8.938-15.477c-12.184-10.678-28.573-16.417-46.053-16.417-44.204 0-75.17 26.932-75.17 81.267 0 56.935 33.407 79.14 71.624 79.14 19.148 0 35.46-4.488 46.096-8.976l-.435-60.832V162.76h-56.734v19.135h36.167l.437 46.184c-4.727 2.362-13 4.252-24.11 4.252-30.73 0-51.297-19.32-51.297-60.006 0-41.34 21.275-61.422 52.478-61.422M684.534 94.13h-20.33l.066 25.988v89.771c0 25.04 10.874 41.814 41.84 41.814 4.28 0 8.465-.39 12.53-1.126v-18.245c-2.943.45-6.083.707-9.455.707-17.02 0-24.585-8.74-24.585-23.387v-61.895h34.04v-17.01H684.6l-.066-36.617zM612.62 248.87h20.33V130.747h-20.33v118.12zM612.62 114.448h20.33V94.13h-20.33v20.318z"></path> + </g> + <path d="M185.398 341.13l68.013-209.322H117.39L185.4 341.13z" fill="#E24329" class="logo-svg-shape logo-dark-orange-shape"></path> + <path d="M185.398 341.13l-68.013-209.322h-95.32L185.4 341.128z" fill="#FC6D26" class="logo-svg-shape logo-orange-shape"></path> + <path d="M22.066 131.808l-20.67 63.61c-1.884 5.803.18 12.16 5.117 15.744L185.398 341.13 22.066 131.807z" fill="#FCA326" class="logo-svg-shape logo-light-orange-shape"></path> + <path d="M22.066 131.808h95.32L76.42 5.735c-2.107-6.487-11.284-6.487-13.39 0L22.065 131.808z" fill="#E24329" class="logo-svg-shape logo-dark-orange-shape"></path> + <path d="M185.398 341.13l68.013-209.322h95.32L185.4 341.128z" fill="#FC6D26" class="logo-svg-shape logo-orange-shape"></path> + <path d="M348.73 131.808l20.67 63.61c1.884 5.803-.18 12.16-5.117 15.744L185.398 341.13 348.73 131.807z" fill="#FCA326" class="logo-svg-shape logo-light-orange-shape"></path> + <path d="M348.73 131.808h-95.32L294.376 5.735c2.108-6.487 11.285-6.487 13.392 0l40.963 126.073z" fill="#E24329" class="logo-svg-shape logo-dark-orange-shape"></path> + </g> +</svg> \ No newline at end of file diff --git a/WebSite/src/icons/svg/vue.svg b/WebSite/src/icons/svg/vue.svg new file mode 100644 index 0000000000000000000000000000000000000000..a6f74dba43eba808f25d3b7da0d7e2691650fa9b --- /dev/null +++ b/WebSite/src/icons/svg/vue.svg @@ -0,0 +1,87 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="400px" height="400px" viewBox="0 0 400 400" enable-background="new 0 0 400 400" xml:space="preserve"> <image id="image0" width="400" height="400" x="0" y="0" + href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZAAAAGQCAMAAAC3Ycb+AAAABGdBTUEAALGPC/xhBQAAACBjSFJN +AAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAACMVBMVEVMaXFBuIM8dnBBuINB +uIM4XGZBuIM7cW5BuINBuIM3VGM8enJBuIM6a2xBuINBuIM1TWA8eHBBuIM5Y2lBuIM8dG9BuINB +uIM4WmU8enJBuIM6b21BuINBuIM2UmI7eXFBuIM6aGpBuINBuIM8d3BBuIM5YGdBuIM7cm5BuINB +uIM3V2Q8enJBuIM6bGxBuINBuIM8eXFBuIM5ZGlBuIM7dXBBuINBuINBuIM8enJBuIM6amw8eHBB +uINBuIM5YWhBuINBuIM8dG9BuIM3WGRBuIM7bm1BuIM2UGFBuINBuINBuINBuIM8dnBBuIM4XmdB +uIM7cW5BuINBuINBuIM8eHFBuINBuINBuINBuINBuIM7b21BuINBuIM6aWs8d3A/nnxBuINBuIM8 +c29BuINBuIM7bW1BuINBuINBuIM6ZmpBuINBuIM7cW9BuINBuINBuIM6a2xBuIM8eXFBuINBuIM8 +dG9BuINBuINBuINBuIM8enJBuINBuINBuINBuINBuINBuINBuINBuINBuIM5YGc1SV41Sl5Ct4I/ +nnw7cG5Aqn82T2A9g3Q8gXNBtoI3WGQ+lHo6Zmo5ZGk/o301S147dnBBr4A2U2I2UWE9iXY4W2U1 +TF8/mXs6a2xBqH41TWA8fHJBs4E3VWNCsYA+j3g5YWg/oH1BrH86Z2pApn47eHA4Xmc+m3s7bW09 +fnM+kXk8c29BroA/l3o6aGo8enI+i3c7bm09hnU+jHf///8JM+bGAAAAhHRSTlMAwk0v/u+ZiRXv ++w1wuQTW/jFI3LRiJfr0AoqbDur9GmLHAsw/Oueldxr2+Ah8rgjeIlPWv1b8lhISbbw000XiRLBn +IfaHn+b9C14Bx0Y36qF883gHKlC7uiuSk+1pwDgDQKxv94Smg+Ra0DOdgRfydbXaLEu3XSj7jxAW +Zs8+qB6A4lcH2z2lAAAAAWJLR0S6o7FH2gAAAAd0SU1FB+QMEwExEvJ7+okAAA6VSURBVHja7d2H +fxZFGsDxlUQUS2xRRBEQK1gCGhFUFMWCYkFFz94Pu6LGXpAWLFGwABZURMTeY/vv7iAEkry77+7O +/mbmmZnn+wdkZ2f2Pp87nnvnl2VKKaWUUkoppZRSSimllFJKKaWUUkoppZRSKlX7rGGt7YesG2fv +pceto1a59g12+/bJOjrZv/gm9q772juQfbGv5k129zo7smw8+yfXvEW9bP9+ts5jP2yJb8GbN/7/ +q9t/Avs33x6g3vaAA+2cx4EHUCsceJvduwn771zfQfApv4N9fwfbOZCDsQW+C2/dQbvW13UI+1fX +b6De99DDbJzHYYdS69uwnt25Q7qGVng4fM7vYV/gETYO5Ahsee/BG3f48BK74T/8PvbKR/LncSS2 +uA/gbeves8ajJrJ/+cON1DsfPYk+j0lHU2vb+CG7axOP2rvKY+Cz3oR9hcfSB3IstrRN8KYdM2KV +k49j//bmj6i3njKVPY+pU6iVfbyZ3bPjJo9c5zT4tD/BvsPj2QM5HlvYJ/CWTRu1zuknsH99/afU +e285kTyPE7dQ6/oU/q+8J0wfvdKT4PP+DPsSTyYP5GRsWZ/BG3bS2KWeAj/gc+zVT+XO41RsUZ/D +23VKy1pnzGSf8MVW6t1PO506j9NPo9a09Qt2t2bOaF3tGfCZf4l9jWdSB3ImtqQv4c06I2e1PbPY +Z2z7inr7gdnMeczG/h36q+3sXs3qyVvvWfCpf419j2czB3I2tqCv4a06K3/BvfBjdlDvv+4c4jzO +wWaZO+CN6i1Ycccc9jnfyJrmip3bzukoWvK58MmLmubKndueW7jmufA091tumjuv6XnM4+a237K7 +NGFu8arPg8+em+ae3/RAzseW8g68See1WbXcae7WC5qdxwXY/06l57bzu9qt+0L49Llp7kXNDuQi +bCH03HZB+4VfDD/uO2wjLmlyHpdgy/gO3qCLS1a+EJ7mfo/9e/elXZW2PlfXpdQqtnzP7s/EhWVr +vwz+An7Avs3LzQ/kcmwRP8Dbc1np2idfwT5x88fUXiwynuZOXUStgZ7bXnFl+eqvgr8BAdNcuXPb +qyqsfvHV7DPf+JHajY3XmJ3HNdj/K+lH+McHVy+usv5r4a/gJ+z7vM7sQK7DFvATvDXXVnuBJfBj +f8Y25HqT87gee/zP8MYsqfgGM25gn8v9QMFkmsvNbQfgue0NM6q+w43wl/AL9o0aTHO5ue0v8Lbc +WPkdlsqd5t5U9zxu4ua229hdmbW0+lvcDH8Lv2Jfae1prty57c11XuM/8MM/oHal7jSXm9vSPz64 +pdZ73Cp3mlvrBwqTuLntN+yOzLm13pd1G/w9/EZtTP/tdV7jduyxv8Ebclu988jm3sE+/3fsn7Sm +1JjmzuN+fPA7ux93zK3+FkPuhL8Ibpp7V/WXuAt7KD23vbPueWRd89kVgD9QuLvqO9wt9scH8++p +fSDZvfA38Qf2tVae5nJz2z/gzbi3/nlk2X3wIgax7bm/2gvcjz1wEN6K+0zOI1v4ALsK19NcuXPb +B0rntvn+C38Xf2Jf7LIqy1+GPY6e2z5odh7ZlQ+x69iO/TZ3UYUfKMzG5rYfbWf34aEKc9t8D8Nf +xl/YN/tI+eIfwR72F7wND5ueh+Rpbul1c+MCn9vme7STXQt33VzpNBeb266D57adj5qfR5Y9xi5m +zd/UNvU/3n7hj2MP+hvegseanEf2xJPsalxdNyf30rgnn2h0INly+Pt4F/tyn2q37Kewx9Bz2+XN +ziNb+jS7nm3YDxQGnile9TPYfxA3wHPbp2vMbfP1wV8IN81tc90cd2ncr/Dr9zU9jyx7Fl4SN819 +rmjJz4md2z7b/Dyy519g12T/ujm5l8a98DxwINmL8Feyidquommu3Lnti8R5ZC/B182B09yX89b7 +sti57ehL48y9An8n/2BfcO4PFLgfH/wDv/grzHlk019l12X3ujm5l8a9Or3+3ud7Df5SrF43x81t +6UvjXqPOI8tWwEvjrptrmebKnduu4M4jex2+bo6b5o79gQL34wN6bjvzdfBAspXw12JtmrsM+8N/ +wq+8kjyPrGcVu7rtlq6bk3tp3Koe073Ptxr+Xv7FvuRR01xubvsv/MKr2fPIFgcRD5Mc+6IFEQ8T +e2lcZ4f5zhcJIB4m99K48fx5BBAPkzu3HYp90cTHw6THvmhyr5sbiofJj33RhMfDAoh90brhhaLx +sBBiXzTJ8TC5c9uRsS+a4HhYGLEvGh4P46a5gcS+aHLjYRi7sS+a3HgYxXbsiyY3HgaxHvuiyY2H +IezHvmhy42EEF7Evmtx4GMBF7IsmNx7WnJvYF01uPKwxR7EvWi+87B2+z2GYq9gXTW48rBl3sS+a +3HhYI+5iXzS58bAmXMa+aHLjYQ24jH3R5E5zzYUyt80nNx5mzHHsiyY3HmbIdeyLJjceZsZ97Ism +Nx5mxH3siyY3HmYCj31ZndvmkxsPM+Aj9kWTe91cfZIujTMnNx5Wm6fYF01uPKwmX7Evmtx4WD3+ +Yl80ufGwWvzFvmhy42F1+Ix90eTGw2rwGvuiiY2HVec39kWTGw+rynfsiyY3HlaR79gXTW48rBr/ +sS+a3HhYJf5jXzS58bAqJMS+aHLjYRWIiH3R5MbDSg3CSzeLfdHkxsPKSIl90eTGw0pIiX3R5MbD +2pMT+6LJjYe1JSf2RQtzmhvH3Daf3HhYMVmxL5rceFghWbEvmtx4WBFpsS+a3HhYAWmxL5rceFg+ +ebEvWh/8xVme5gqMfdHExsPySIx90eTGw1rJjH3R5MbDWsiMfdHkxsPGkhr7osmNh40hNfZFkxsP +G01u7IsmNx42iuDYF01uPGyEQXiRZOyLJjcetpfs2BdNbjxsD9mxL5rceNgw6bEvmtx42G7SY180 +ufGwIWvh5fGxL5rceNhOIcS+aHLjYf1hxL5ocuNhocS+aHLjYfiPD+zEvmhyr5sL+9I4c2LjYcHE +vmjd8ItD8bBwYl80mfGwkGJfNJHxsJBiXzSJ8bCwYl80gfGwsGJfNHnxsNBiXzRx8bDgYl80YfGw +8GJfNFnxsBBjXzRR8bAQY180SfEw/NI44XPbfILiYYHGvmi98DbsMD2PUGNfNCnxsHBjXzQh8bBw +Y180GfGwkGNfNBHxsJBjXzQJ09xU57b5BMTDAo990bzHw0KPfdF8x8PCj33RPMfDwo990fzGw2KI +fdG8xsNiiH3RfF43F/OlceY8xsMiiX3RvMXDYol90XzFw+gfH/iLfdE8xcPiiX3R/MTDYop90eh4 +WKVpblSxL5qHeFhcsS+a+3hYbLEvmvN4WGyxL5rreFh8sS+a43hYfLEvmtt4WIyxL5rTeFiUsS+a +w3jYIPwoGbEvmrt4WKyxL5qzeBh9aZyU2BfNVTws3tgXzVE8LN7YF83NNFfnttW5iIfhl8aJin3R +HMTD4o590ezHw2KPfdHoeFjLNDf22BfNdjws/tgXrQ/+gsfEwxKIfdGsxsNSiH3RbMbD0oh90eh4 +2IhpbhqxLxp93dzeaW4qsS+atXhYKrEvmq14WDqxL5qleFhCsS+alXgYfWmc5NgXzUY8LK3YF81C +PCyt2BeNj4elFvui4fGw1GJfODoeBpMf+6LR8TBWCLEvGh0PQ4UQ+6LR8TBSGLEvGh0PA4UR+6LR +181xwr40zhwdD8MEE/uidfve+XzhxL5odDyMEVLsi0bHwxAhxb5o9DSXkMrcNh8dDwNM870nXtHx +sOZCi33R6HhYY8HFvmh0PKyh8GJfNDoe1kyIsS8aHQ9rJMTYF42OhzURZuyLRsfDGgg09kXr9X0O +w0KNfdHoeJipcGNfNDoeZijc2BeNjoeZCTn2RaPjYUZCjn3RJExzU53b5lvg+ziCj33R6HhYbaHH +vmh0PKyu8GNfNDoeVlP4sS8aHQ+rJ4bYF42Oh9USQ+yLRl83V0fMl8aZo+NhNUQS+6LR8bDKlvh+ +c6HoeFhV8cS+aHQ8rKJ4Yl80Oh5WTUyxLxodD6skqtgX7Rb35xFX7ItGx8PKxRb7otHxsFKxxb5o +dDysTHyxLxodDysRX+yLdg8cD2svxtgXjY6HtRVl7ItGx8PaiDP2RaPjYcVijX3RHnR1ILHGvmh0 +PKxIvLEvGh0PKxBv7IvmZpqrc9vq6HhYnrhjXzQ6HpYj7tgXjY6HtYo99kWj42Etlvt+w8DQ8bCx +4o990frsHkgCsS8aHQ8bJYXYF42Oh42URuyLRsfDRkgj9kWzd91c2pfGmaPjYXukEvui0fGwYenE +vmh0PGy3hGJfNDoetktKsS8aHQ/bKa3YF42Oh61JLfZFo+Nh6cW+aHQ8LL3YFw2Oh6UX+6Kx8bAU +Y180NB6WYuyLRsbD0ox90cB4WJqxLxp33ZxeGsfA4mHJxr5o3cx5pBv7ojHxsJRjXzQkHpZy7ItG +THN1bksC4mHTfL9DVJrHw1KPfdEax8OSj33RGsbDNPZFaxYP09gXr1E8TGNfvCbxMI192dAgHqax +Lyt6Tc9DY192mMbDNPZli2E8TGNftpjFwzT2ZY9RPExjX/aYTHN1bmuTQTxsge81x612PExjX3bV +jYdp7Mu2mvEwjX3ZVi8eprEv+2rFwzT2ZV+d6+b00jgXasTDNPblROV42BLfK01E1XiYxr5cqRgP +09iXK9XiYRr7cqdSPExjXw5ViIdp7Mul8niYxr7cKo2HaezLrbJ4mMa+XCuJh2nsy7X28TCNfbnX +Nh6msS8P2sTDNPblQ3E8TGNffhTGwzT25UdRPExjX74UxMM09uVL/jRX57b+5MXDNPblU048TGNf +PrXGwzT25VdLPGy57xUlbmw8TGNfvvWNPhCNfXk3Kh6msS//RsbDNPYlwYh4mMa+JNh73ZxeGifD +nniYxr5kGI6HaexLit3xMI19ibErHqaxLzl2xsM09iXJSo19ydKzSmNfsqzW2JdSSimllFJKKaWU +UkoppZRSSimllFJKKaWUUor0P9elgirnVGycAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIwLTEyLTE5 +VDAxOjQ5OjE4KzAwOjAwKY1R7AAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMC0xMi0xOVQwMTo0OTox +OCswMDowMFjQ6VAAAAAASUVORK5CYII=" /> +</svg> diff --git a/WebSite/src/layout/components/AppMain.vue b/WebSite/src/layout/components/AppMain.vue deleted file mode 100644 index c5fcc5d4ef20f5a7ca1970098b8fa890733034af..0000000000000000000000000000000000000000 --- a/WebSite/src/layout/components/AppMain.vue +++ /dev/null @@ -1,66 +0,0 @@ -<!-- - * @Descripttion: - * @Author: dongjunhua - * @Date: 2020-04-21 18:54:20 - * @LastEditors: dongjunhua - * @LastEditTime: 2020-09-13 13:54:22 ---> -<template> - <section class="app-main"> - <transition name="fade-transform" mode="out-in"> - <keep-alive :include="cachedViews"> - <router-view :key="key" /> - </keep-alive> - </transition> - </section> -</template> - -<script> -export default { - name: "AppMain", - computed: { - cachedViews() { - return this.$store.state.tagsView.cachedViews; - }, - key() { - return this.$route.path; - } - } -}; -</script> - -<style lang="scss" scoped> -.app-main { - /* 50= navbar 50 */ - min-height: calc(100vh - 50px); - width: 100%; - position: relative; - overflow: hidden; - // padding: 20px; - background: #f5f5f5; -} - -.fixed-header + .app-main { - padding-top: 50px; -} - -.hasTagsView { - .app-main { - /* 84 = navbar + tags-view = 50 + 34 */ - min-height: calc(100vh - 84px); - } - - .fixed-header + .app-main { - padding-top: 84px; - } -} -</style> - -<style lang="scss"> -// fix css style bug in open el-dialog -.el-popup-parent--hidden { - .fixed-header { - padding-right: 15px; - } -} -</style> diff --git a/WebSite/src/layout/components/AppMain/index.vue b/WebSite/src/layout/components/AppMain/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..5da49e634018a5686377d2849f88b55d69c60d64 --- /dev/null +++ b/WebSite/src/layout/components/AppMain/index.vue @@ -0,0 +1,104 @@ +<!-- + * @Description: + * @Autor: dongjunhua + * @Date: 2020-12-21 09:01:58 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-02-25 14:15:57 +--> +<template> + <section class="app-main"> + <router-view v-slot="{ Component }" v-loading="appLoading"> + <transition name="fade-transform-s" mode="out-in"> + <component :is="Component" /> + </transition> + </router-view> + </section> +</template> + +<script> +import { computed } from 'vue'; +import { useRoute } from 'vue-router'; +import { useStore } from 'vuex'; +export default { + name: 'AppMain', + setup() { + const store = useStore(); + const route = useRoute(); + + // !! can't use loading as it will cause v-loading dosen't work + const appLoading = computed(() => store.state.app.loading); + const key = computed(() => route.path); + + return { appLoading, key }; + } +}; +</script> + +<style lang="scss" scoped> +.app-main { + /* 50= navbar 50 */ + // min-height: calc(100vh - 50px); + // min-height: 100vh; + width: 100%; + position: relative; + overflow: hidden; + flex-grow: 1; + padding: 20px; + background-color: rgb(241, 245, 248); +} + +// .sub-34 { +// .app-main { +// min-height: calc(100vh - 34px); +// } +// } +// .sub-50 { +// .app-main { +// min-height: calc(100vh - 50px); +// } +// } +// .sub-84 { +// .app-main { +// min-height: calc(100vh - 84px); +// } +// } +// .sub-90 { +// .app-main { +// min-height: calc(100vh - 90px); +// } +// } +// .sub-106 { +// .app-main { +// min-height: calc(100vh - 106px); +// } +// } +// .sub-140 { +// .app-main { +// min-height: calc(100vh - 140px); +// } +// } + +// .fixed-header + .app-main { +// padding-top: 50px; +// } + +// .hasTagsView { +// .app-main { +// /* 84 = navbar + tags-view = 50 + 34 */ +// min-height: calc(100vh - 84px); +// } + +// .fixed-header + .app-main { +// padding-top: 84px; +// } +// } +</style> + +<style lang="scss"> +// fix css style bug in open el-dialog +// .el-popup-parent--hidden { +// .fixed-header { +// padding-right: 15px; +// } +// } +</style> diff --git a/WebSite/src/layout/components/Navbar.vue b/WebSite/src/layout/components/Navbar.vue deleted file mode 100644 index c4d981664e5f7127c6d2a9df7003fecf7b79e68c..0000000000000000000000000000000000000000 --- a/WebSite/src/layout/components/Navbar.vue +++ /dev/null @@ -1,250 +0,0 @@ -<template> - <div class="navbar"> - <hamburger - id="hamburger-container" - :is-active="sidebar.opened" - class="hamburger-container" - @toggleClick="toggleSideBar" - /> - - <breadcrumb id="breadcrumb-container" class="breadcrumb-container" /> - - <div class="right-menu"> - <template v-if="false"> - <!-- device !== 'mobile' --> - <search id="header-search" class="right-menu-item" /> - - <error-log class="errLog-container right-menu-item hover-effect" /> - - <screenfull id="screenfull" class="right-menu-item hover-effect" /> - - <el-tooltip content="Global Size" effect="dark" placement="bottom"> - <size-select id="size-select" class="right-menu-item hover-effect" /> - </el-tooltip> - </template> - - <el-dropdown - class="avatar-container right-menu-item hover-effect" - trigger="click" - > - <div class="avatar-wrapper"> - <!-- <img :src="avatar + '?imageView2/1/w/80/h/80'" class="user-avatar" /> --> - <span class="text-avatar"><i class="el-icon-user-solid"></i></span> - <i class="el-icon-caret-bottom" /> - </div> - <el-dropdown-menu slot="dropdown"> - <!-- <router-link to="/profile/index"> - <el-dropdown-item>Profile</el-dropdown-item> - </router-link> - <router-link to="/"> - <el-dropdown-item>Dashboard</el-dropdown-item> - </router-link> - <a - target="_blank" - href="https://github.com/PanJiaChen/vue-element-admin/" - > - <el-dropdown-item>Github</el-dropdown-item> - </a> - <a - target="_blank" - href="https://panjiachen.github.io/vue-element-admin-site/#/" - > - <el-dropdown-item>Docs</el-dropdown-item> - </a> - <el-dropdown-item divided @click.native="logout"> - <span style="display:block;">Log Out</span> - </el-dropdown-item> --> - <!-- <el-dropdown-item @click.native="handleSelectUser" - >{{ name - }}<span style="color:#409EFF"> 鍒囨崲</span></el-dropdown-item - > --> - <el-dropdown-item - ><span style="display:block; font-size:12px" - ><i class="el-icon-user-solid" /> {{ name }}</span - ></el-dropdown-item - > - <el-dropdown-item divided @click.native="handleModifyPassword"> - <span style="display:block; font-size:12px"> - <i class="el-icon-s-cooperation" /> - 淇敼瀵嗙爜</span - > - </el-dropdown-item> - <el-dropdown-item @click.native="logout"> - <span style="display:block; font-size:12px" - ><i class="el-icon-switch-button" /> 娉ㄩ攢</span - > - </el-dropdown-item> - </el-dropdown-menu> - </el-dropdown> - </div> - <select-user - :visible.sync="dialogSelectUser.visible" - :userList="dialogSelectUser.userList" - @handle-confirm="setUser" - /> - <modify-password :visible.sync="dialogModifyPassword.visible" /> - </div> -</template> - -<script> -import { mapGetters } from "vuex"; -import Breadcrumb from "@/components/Breadcrumb"; -import Hamburger from "@/components/Hamburger"; -import ErrorLog from "@/components/ErrorLog"; -import Screenfull from "@/components/Screenfull"; -import SizeSelect from "@/components/SizeSelect"; -import Search from "@/components/HeaderSearch"; -import ModifyPassword from "@/components/ModifyPassword"; -import SelectUser from "@/components/SelectUser"; - -export default { - data() { - return { - dialogSelectUser: { - visible: false, - userList: [] - }, - dialogModifyPassword: { - visible: false - } - }; - }, - components: { - Breadcrumb, - Hamburger, - ErrorLog, - Screenfull, - SizeSelect, - Search, - ModifyPassword, - SelectUser - }, - computed: { - ...mapGetters(["sidebar", "avatar", "device", "name"]) - }, - methods: { - toggleSideBar() { - this.$store.dispatch("app/toggleSideBar"); - }, - async logout() { - await this.$store.dispatch("user/logout"); - this.$router.push("/login"); - }, - async handleSelectUser() { - const { users } = await this.$store.dispatch("user/login", {}); - this.dialogSelectUser.userList = users; - if (this.dialogSelectUser.userList.length > 1) { - this.dialogSelectUser.visible = true; - } - }, - async setUser(id) { - await this.$store.dispatch("user/setUser", id); - await this.$store.dispatch("user/getInfo"); - this.$router.push({ - path: "/", - query: { - t: new Date().valueOf() - } - }); - }, - handleModifyPassword() { - this.dialogModifyPassword.visible = true; - } - } -}; -</script> - -<style lang="scss" scoped> -.navbar { - height: 50px; - overflow: hidden; - position: relative; - background: #fff; - box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08); - - .hamburger-container { - line-height: 46px; - height: 100%; - float: left; - cursor: pointer; - transition: background 0.3s; - -webkit-tap-highlight-color: transparent; - - &:hover { - background: rgba(0, 0, 0, 0.025); - } - } - - .breadcrumb-container { - float: left; - } - - .errLog-container { - display: inline-block; - vertical-align: top; - } - - .right-menu { - float: right; - height: 100%; - line-height: 50px; - - &:focus { - outline: none; - } - - .right-menu-item { - display: inline-block; - padding: 0 8px; - height: 100%; - font-size: 18px; - color: #5a5e66; - vertical-align: text-bottom; - - &.hover-effect { - cursor: pointer; - transition: background 0.3s; - - &:hover { - background: rgba(0, 0, 0, 0.025); - } - } - } - - .avatar-container { - margin-right: 30px; - - .avatar-wrapper { - margin-top: 5px; - position: relative; - - .user-avatar { - cursor: pointer; - width: 40px; - height: 40px; - border-radius: 10px; - } - - .el-icon-caret-bottom { - cursor: pointer; - position: absolute; - right: -20px; - top: 25px; - font-size: 12px; - } - - .text-avatar { - display: flex; - cursor: pointer; - width: 40px; - height: 40px; - border-radius: 20px; - justify-content: center; - align-items: center; - background-color: #eeeeee; - } - } - } - } -} -</style> diff --git a/WebSite/src/layout/components/Navbar/index.vue b/WebSite/src/layout/components/Navbar/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..3e1215e8b62408e3778913681e261037f93122a3 --- /dev/null +++ b/WebSite/src/layout/components/Navbar/index.vue @@ -0,0 +1,48 @@ +<!-- + * @Description: + * @Autor: dongjunhua + * @Date: 2021-02-24 09:44:14 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-02-26 09:59:13 +--> + +<template> + <div class="navbar-container"> + <scroll-pane> + <el-menu + :default-active="activeMenu" + :unique-opened="false" + mode="horizontal" + > + <sidebar-item v-for="root in menuList" :key="root.id" :item="root" /> + </el-menu> + </scroll-pane> + </div> +</template> + +<script> +import { useStore } from 'vuex'; +import { useRoute } from 'vue-router'; +import SidebarItem from '@/layout/components/Sidebar/components/SidebarItem'; +import ScrollPane from '../ScrollPane'; +import variablesStyle from '@/styles/variables.scss'; +import { computed } from 'vue'; +export default { + name: 'Navbar', + components: { SidebarItem, ScrollPane }, + setup() { + const store = useStore(); + const route = useRoute(); + + const activeMenu = computed(() => route.path); + const variables = computed(() => variablesStyle); + const menuList = computed(() => store.state.subject.user.menuList || []); + + return { + activeMenu, + variables, + menuList + }; + } +}; +</script> diff --git a/WebSite/src/layout/components/Navigation/components/Breadcrumb.vue b/WebSite/src/layout/components/Navigation/components/Breadcrumb.vue new file mode 100644 index 0000000000000000000000000000000000000000..c8b1afb2bc3653fd5681faf2b2d54d9dc1ec2fa7 --- /dev/null +++ b/WebSite/src/layout/components/Navigation/components/Breadcrumb.vue @@ -0,0 +1,98 @@ +<!-- + * @Description: + * @Autor: dongjunhua + * @Date: 2020-12-29 15:32:29 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-01-20 14:58:43 +--> + +<template> + <el-breadcrumb class="app-breadcrumb" separator-class="el-icon-arrow-right"> + <transition-group name="breadcrumb"> + <el-breadcrumb-item v-for="item in levelList" :key="item.id"> + <span class="no-redirect">{{ item.name }}</span> + </el-breadcrumb-item> + </transition-group> + </el-breadcrumb> +</template> + +<script> +import { useStore } from 'vuex'; +import { useRoute } from 'vue-router'; +import { computed, reactive, toRefs, watch } from 'vue'; +export default { + name: 'Breadcrumb', + setup() { + const store = useStore(); + const route = useRoute(); + const menuList = computed(() => + store.state.subject.user ? store.state.subject.user.menuList : [] + ).value; + + const data = reactive({ + levelList: [] + }); + + const getLevelList = () => { + data.levelList = []; + if (route.path === '/i') { + data.levelList.unshift({ + id: 0, + name: 'Home' + }); + } + const menus = JSON.parse(JSON.stringify(menuList)); + menus.forEach(m => filterMenuNode(m, route.path)); + }; + + const filterMenuNode = (node, path) => { + if (node.children && node.children.length > 0) { + node.children.forEach(c => filterMenuNode(c, path)); + node.children = node.children.filter( + c => + `/i/${c.routingUrl}` === path || + (c.children && c.children.length > 0) + ); + } + if ( + `/i/${node.routingUrl}` === path || + (node.children && node.children.length > 0) + ) { + data.levelList.unshift({ + id: node.id, + name: node.name + }); + } + }; + + // watch route will cause a warn, you should avoid watching the whole route object + // see detail: https://github.com/vuejs/vue-next/issues/2027 + watch( + () => route.path, + () => { + getLevelList(); + }, + { immediate: true } + ); + + return { + ...toRefs(data), + getLevelList + }; + } +}; +</script> + +<style lang="scss" scoped> +.app-breadcrumb.el-breadcrumb { + display: inline-block; + font-size: 14px; + line-height: 50px; + margin-left: 8px; + + .no-redirect { + color: #606266; + cursor: text; + } +} +</style> diff --git a/WebSite/src/components/Hamburger/index.vue b/WebSite/src/layout/components/Navigation/components/Hamburger.vue similarity index 84% rename from WebSite/src/components/Hamburger/index.vue rename to WebSite/src/layout/components/Navigation/components/Hamburger.vue index cc798b5c2944a93be2501aa2f102b3c3bb746330..7c40881622a99b0812c2b874be2be0fd1c02a7a4 100644 --- a/WebSite/src/components/Hamburger/index.vue +++ b/WebSite/src/layout/components/Navigation/components/Hamburger.vue @@ -1,3 +1,11 @@ +<!-- + * @Description: + * @Autor: dongjunhua + * @Date: 2020-12-30 09:39:55 + * @LastEditors: dongjunhua + * @LastEditTime: 2020-12-30 09:40:08 +--> + <template> <div style="padding: 0 15px;" @click="toggleClick"> <svg @@ -17,7 +25,7 @@ <script> export default { - name: "Hamburger", + name: 'Hamburger', props: { isActive: { type: Boolean, @@ -26,7 +34,7 @@ export default { }, methods: { toggleClick() { - this.$emit("toggleClick"); + this.$emit('toggleClick'); } } }; diff --git a/WebSite/src/layout/components/Navigation/index.vue b/WebSite/src/layout/components/Navigation/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..48978828fb91054a249d503256b2ed68397f552e --- /dev/null +++ b/WebSite/src/layout/components/Navigation/index.vue @@ -0,0 +1,295 @@ +<!-- + * @Description: + * @Autor: dongjunhua + * @Date: 2020-12-21 09:02:04 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-02-26 10:14:57 +--> +<template> + <div class="navigation-container"> + <hamburger + id="hamburger-container" + v-if="sidebar.enabled" + :is-active="sidebar.opened" + class="hamburger-container" + @toggleClick="toggleSideBar" + /> + + <breadcrumb id="breadcrumb-container" class="breadcrumb-container" /> + + <div class="right-menu"> + <div class="avatar-container"> + <el-dropdown size="small" trigger="click"> + <span class="el-dropdown-link"> + <i class="fas fa-user-circle"></i + ><span class="avatar-text">{{ user.name }}</span + ><i class="el-icon-arrow-down el-icon--right"></i> + </span> + <template #dropdown> + <el-dropdown-menu> + <div @click="about"> + <el-dropdown-item + ><span class="dropdown-menu-item" + ><i class="far fa-hdd" />Ver. {{ version }}</span + ></el-dropdown-item + > + </div> + <div @click="logout"> + <el-dropdown-item divided + ><span class="dropdown-menu-item" + ><i class="fas fa-door-open" />Safety Logout</span + ></el-dropdown-item + > + </div> + </el-dropdown-menu> + </template> + </el-dropdown> + </div> + </div> + + <el-tooltip + v-if="sso" + class="item" + effect="dark" + content="sso mode" + placement="bottom-start" + > + <div class="function" v-if="sso"> + <i class="fas fa-fingerprint"></i></div + ></el-tooltip> + + <el-tooltip + v-if="mock" + class="item" + effect="dark" + content="mock-server is running" + placement="bottom-start" + > + <div class="function" v-if="mock"> + <i class="fab fa-node-js"></i></div + ></el-tooltip> + + <div class="function"> + <el-dropdown size="small" trigger="click"> + <svg-icon icon-class="002-rgb" className="theme-icon" /> + <template #dropdown> + <el-dropdown-menu> + <el-dropdown-item> + <div class="theme-selection-container"> + <div + v-for="theme in themes" + :key="theme.name" + :class=" + `theme-selection ${theme.active ? 'active' : ''} ${ + theme.className + }` + " + @click="setTheme(theme.name)" + ></div></div + ></el-dropdown-item> + </el-dropdown-menu> + </template> + </el-dropdown> + </div> + </div> +</template> + +<script> +import Hamburger from './components/Hamburger'; +import Breadcrumb from './components/Breadcrumb'; +import { useStore } from 'vuex'; +import { computed } from 'vue'; +import { ElNotification } from 'element-plus'; +export default { + name: 'Navigation', + components: { Hamburger, Breadcrumb }, + setup() { + const store = useStore(); + + const version = computed(() => store.state.app.version); + const coreVersion = computed(() => store.state.app.coreVersion); + const sidebar = computed(() => store.state.app.sidebar); + const themes = computed(() => store.state.app.themes); + const user = computed(() => store.state.subject.user); + const sso = computed(() => store.state.subject.loginType === 'sso'); + const mock = computed(() => process.env.NODE_ENV === 'mock'); + + const toggleSideBar = () => { + store.dispatch('app/toggleSideBar'); + }; + const setTheme = name => { + store.dispatch('app/setTheme', name); + }; + const toggleTheme = () => { + store.dispatch('app/toggleTheme'); + }; + const logout = () => { + store.dispatch('subject/logout', { ssoLogout: true }); + }; + const about = () => { + ElNotification({ + title: 'Vue Element Next', + message: `Version: ${version.value}(${coreVersion.value})`, + type: 'info', + duration: 10 * 1000 + }); + }; + + return { + version, + coreVersion, + mock, + sso, + sidebar, + themes, + user, + setTheme, + toggleTheme, + toggleSideBar, + about, + logout + }; + } +}; +</script> + +<style lang="scss" scoped> +.theme-icon { + width: 1em !important; + height: 1em !important; +} +.theme-selection-container { + display: flex; + justify-content: space-between; + margin: 2px 0; + + .theme-selection { + display: flex; + justify-content: center; + align-items: center; + width: 20px; + height: 20px; + border-radius: 10px; + margin-right: 10px; + border: 3px solid #bbb; + + &:last-of-type { + margin-right: 0; + } + } + + .active { + &::after { + content: ''; + position: absolute; + display: block; + bottom: 0; + width: 12px; + height: 3px; + background-color: rgba(80, 138, 255, 1); + } + } +} + +.navigation-container { + height: 50px; + overflow: hidden; + position: relative; + z-index: 11; + background: rgb(250, 250, 250); + border-bottom: 1px solid#d8dce5; + box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08); + + .hamburger-container { + line-height: 46px; + height: 100%; + float: left; + cursor: pointer; + transition: background 0.3s; + -webkit-tap-highlight-color: transparent; + + &:hover { + background: rgba(0, 0, 0, 0.025); + } + } + + .breadcrumb-container { + float: left; + } + + .errLog-container { + display: inline-block; + vertical-align: top; + } + + .function { + float: right; + height: 100%; + width: 40px; + color: #606266; + display: flex; + justify-content: center; + align-items: center; + cursor: pointer; + transition: background 0.3s; + &:hover { + background-color: #eee; + } + } + + .right-menu { + float: right; + height: 100%; + line-height: 50px; + + &:focus { + outline: none; + } + + .right-menu-item { + display: inline-block; + padding: 0 8px; + height: 100%; + font-size: 18px; + color: #5a5e66; + vertical-align: text-bottom; + + &.hover-effect { + cursor: pointer; + transition: background 0.3s; + + &:hover { + background: rgba(0, 0, 0, 0.025); + } + } + } + + .avatar-container { + margin: 0 15px; + cursor: pointer; + + .avatar-text { + margin: 0 10px; + } + } + } +} +</style> + +<style lang="scss"> +.el-dropdown { + line-height: 44px !important; +} +.el-dropdown-menu__item { + &:hover { + background: none !important; + } +} +.dropdown-menu-item { + font-size: 14px; + + i { + margin-right: 12px !important; + } +} +</style> diff --git a/WebSite/src/layout/components/TagsView/ScrollPane.vue b/WebSite/src/layout/components/ScrollPane/index.vue similarity index 89% rename from WebSite/src/layout/components/TagsView/ScrollPane.vue rename to WebSite/src/layout/components/ScrollPane/index.vue index a513290f3a494b46862ded4d72cf0b56bfe452f2..7f304278db872a35ae374326acceb816d0955f60 100644 --- a/WebSite/src/layout/components/TagsView/ScrollPane.vue +++ b/WebSite/src/layout/components/ScrollPane/index.vue @@ -1,9 +1,17 @@ +<!-- + * @Description: + * @Autor: dongjunhua + * @Date: 2021-02-25 09:17:44 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-02-25 09:28:16 +--> + <template> <el-scrollbar ref="scrollContainer" :vertical="false" class="scroll-container" - @wheel.native.prevent="handleScroll" + @wheel.prevent="handleScroll" > <slot /> </el-scrollbar> @@ -13,7 +21,7 @@ const tagAndTagSpacing = 4; // tagAndTagSpacing export default { - name: "ScrollPane", + name: 'ScrollPane', data() { return { left: 0 @@ -78,19 +86,15 @@ export default { }; </script> -<style lang="scss" scoped> +<style lang="scss"> .scroll-container { white-space: nowrap; position: relative; overflow: hidden; width: 100%; - /deep/ { - .el-scrollbar__bar { - bottom: 0px; - } - .el-scrollbar__wrap { - height: 49px; - } + + .el-scrollbar__bar { + bottom: 0px; } } </style> diff --git a/WebSite/src/layout/components/Settings/index.vue b/WebSite/src/layout/components/Settings/index.vue deleted file mode 100644 index e09ff9c7fe686022fc5bf6ffd83a8808cf666d46..0000000000000000000000000000000000000000 --- a/WebSite/src/layout/components/Settings/index.vue +++ /dev/null @@ -1,110 +0,0 @@ -<template> - <div class="drawer-container"> - <div> - <h3 class="drawer-title">Page style setting</h3> - - <div class="drawer-item"> - <span>Theme Color</span> - <theme-picker - style="float: right;height: 26px;margin: -3px 8px 0 0;" - @change="themeChange" - /> - </div> - - <div class="drawer-item"> - <span>Open Tags-View</span> - <el-switch v-model="tagsView" class="drawer-switch" /> - </div> - - <div class="drawer-item"> - <span>Fixed Header</span> - <el-switch v-model="fixedHeader" class="drawer-switch" /> - </div> - - <div class="drawer-item"> - <span>Sidebar Logo</span> - <el-switch v-model="sidebarLogo" class="drawer-switch" /> - </div> - </div> - </div> -</template> - -<script> -import ThemePicker from "@/components/ThemePicker"; - -export default { - components: { ThemePicker }, - data() { - return {}; - }, - computed: { - fixedHeader: { - get() { - return this.$store.state.settings.fixedHeader; - }, - set(val) { - this.$store.dispatch("settings/changeSetting", { - key: "fixedHeader", - value: val - }); - } - }, - tagsView: { - get() { - return this.$store.state.settings.tagsView; - }, - set(val) { - this.$store.dispatch("settings/changeSetting", { - key: "tagsView", - value: val - }); - } - }, - sidebarLogo: { - get() { - return this.$store.state.settings.sidebarLogo; - }, - set(val) { - this.$store.dispatch("settings/changeSetting", { - key: "sidebarLogo", - value: val - }); - } - } - }, - methods: { - themeChange(val) { - this.$store.dispatch("settings/changeSetting", { - key: "theme", - value: val - }); - } - } -}; -</script> - -<style lang="scss" scoped> -.drawer-container { - padding: 24px; - font-size: 14px; - line-height: 1.5; - word-wrap: break-word; - - .drawer-title { - margin-bottom: 12px; - color: rgba(0, 0, 0, 0.85); - font-size: 14px; - line-height: 22px; - } - - .drawer-item { - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - padding: 12px 0; - } - - .drawer-switch { - float: right; - } -} -</style> diff --git a/WebSite/src/layout/components/Sidebar/FixiOSBug.js b/WebSite/src/layout/components/Sidebar/FixiOSBug.js deleted file mode 100644 index c9c5d2a5795171ecb561e94babe2106894e91703..0000000000000000000000000000000000000000 --- a/WebSite/src/layout/components/Sidebar/FixiOSBug.js +++ /dev/null @@ -1,26 +0,0 @@ -export default { - computed: { - device() { - return this.$store.state.app.device; - } - }, - mounted() { - // In order to fix the click on menu on the ios device will trigger the mouseleave bug - // https://github.com/PanJiaChen/vue-element-admin/issues/1135 - this.fixBugIniOS(); - }, - methods: { - fixBugIniOS() { - const $subMenu = this.$refs.subMenu; - if ($subMenu) { - const handleMouseleave = $subMenu.handleMouseleave; - $subMenu.handleMouseleave = e => { - if (this.device === "mobile") { - return; - } - handleMouseleave(e); - }; - } - } - } -}; diff --git a/WebSite/src/layout/components/Sidebar/Item.vue b/WebSite/src/layout/components/Sidebar/Item.vue deleted file mode 100644 index ecd826be80118cf26658e44f2ee2c3f5c69e6ab7..0000000000000000000000000000000000000000 --- a/WebSite/src/layout/components/Sidebar/Item.vue +++ /dev/null @@ -1,29 +0,0 @@ -<script> -export default { - name: "MenuItem", - functional: true, - props: { - icon: { - type: String, - default: "" - }, - title: { - type: String, - default: "" - } - }, - render(h, context) { - const { icon, title } = context.props; - const vnodes = []; - - if (icon) { - vnodes.push(<svg-icon icon-class={icon} />); - } - - if (title) { - vnodes.push(<span slot="title">{title}</span>); - } - return vnodes; - } -}; -</script> diff --git a/WebSite/src/layout/components/Sidebar/Link.vue b/WebSite/src/layout/components/Sidebar/Link.vue deleted file mode 100644 index 3be5ba6085a5be95906f69d402dd52a3d7e76499..0000000000000000000000000000000000000000 --- a/WebSite/src/layout/components/Sidebar/Link.vue +++ /dev/null @@ -1,35 +0,0 @@ -<template> - <!-- eslint-disable vue/require-component-is --> - <component v-bind="linkProps(to)"> - <slot /> - </component> -</template> - -<script> -import { isExternal } from "@/utils/validate"; - -export default { - props: { - to: { - type: String, - required: true - } - }, - methods: { - linkProps(url) { - if (isExternal(url)) { - return { - is: "a", - href: url, - target: "_blank", - rel: "noopener" - }; - } - return { - is: "router-link", - to: url - }; - } - } -}; -</script> diff --git a/WebSite/src/layout/components/Sidebar/components/AppLink.vue b/WebSite/src/layout/components/Sidebar/components/AppLink.vue new file mode 100644 index 0000000000000000000000000000000000000000..8d071f7c0905cc4611821153b33a5ed902254d1e --- /dev/null +++ b/WebSite/src/layout/components/Sidebar/components/AppLink.vue @@ -0,0 +1,50 @@ +<!-- + * @Description: + * @Autor: dongjunhua + * @Date: 2020-12-21 13:37:40 + * @LastEditors: dongjunhua + * @LastEditTime: 2020-12-21 14:51:07 +--> +<template> + <component :is="type" v-bind="linkProps(to)"> + <slot /> + </component> +</template> + +<script> +import { isExternal } from '@/utils/validate'; + +export default { + props: { + to: { + type: String, + required: true + } + }, + computed: { + isExternal() { + return isExternal(this.to); + }, + type() { + if (this.isExternal) { + return 'a'; + } + return 'router-link'; + } + }, + methods: { + linkProps(to) { + if (this.isExternal) { + return { + href: to, + target: '_blank', + rel: 'noopener' + }; + } + return { + to: to + }; + } + } +}; +</script> diff --git a/WebSite/src/layout/components/Sidebar/Logo.vue b/WebSite/src/layout/components/Sidebar/components/Logo.vue similarity index 86% rename from WebSite/src/layout/components/Sidebar/Logo.vue rename to WebSite/src/layout/components/Sidebar/components/Logo.vue index 0bb917eb505fd6964bc517eaeffc813d361c3ffa..4956ab77a6db34e529e6d886405d2a100c7533b4 100644 --- a/WebSite/src/layout/components/Sidebar/Logo.vue +++ b/WebSite/src/layout/components/Sidebar/components/Logo.vue @@ -1,9 +1,9 @@ <!-- * @Description: - * @Autor: dong jun hua - * @Date: 2020-06-15 11:18:22 - * @LastEditors: dong jun hua - * @LastEditTime: 2020-06-15 14:11:55 + * @Autor: dongjunhua + * @Date: 2020-12-21 13:22:08 + * @LastEditors: dongjunhua + * @LastEditTime: 2020-12-21 13:23:26 --> <template> <div class="sidebar-logo-container" :class="{ collapse: collapse }"> @@ -27,7 +27,7 @@ <script> export default { - name: "SidebarLogo", + name: 'SidebarLogo', props: { collapse: { type: Boolean, @@ -36,9 +36,9 @@ export default { }, data() { return { - title: "Vue Element Admin", + title: 'Vue Element Next', logo: - "https://wpimg.wallstcn.com/69a1c46c-eb1c-4b46-8bd4-e9e686ef5251.png" + 'https://wpimg.wallstcn.com/69a1c46c-eb1c-4b46-8bd4-e9e686ef5251.png' }; } }; diff --git a/WebSite/src/layout/components/Sidebar/SidebarItem.vue b/WebSite/src/layout/components/Sidebar/components/SidebarItem.vue similarity index 67% rename from WebSite/src/layout/components/Sidebar/SidebarItem.vue rename to WebSite/src/layout/components/Sidebar/components/SidebarItem.vue index c6293c85d0f37afcd8a1885cdb1f04bf45f7801e..bc2dd97cb8cf6974d4f516bb2c04319917d86118 100644 --- a/WebSite/src/layout/components/Sidebar/SidebarItem.vue +++ b/WebSite/src/layout/components/Sidebar/components/SidebarItem.vue @@ -2,8 +2,8 @@ * @Description: * @Autor: dong jun hua * @Date: 2020-06-15 11:18:22 - * @LastEditors: dong jun hua - * @LastEditTime: 2020-08-14 16:01:05 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-02-25 10:26:53 --> <template> <div> @@ -14,8 +14,8 @@ :index="item.id" popper-append-to-body > - <template slot="title"> - <item :icon="item.icon" :title="item.name" /> + <template v-slot:title> + <unit :icon="item.icon" :title="item.name" /> </template> <sidebar-item v-for="child in item.children" @@ -28,7 +28,7 @@ <template v-else> <app-link :to="`${path}${params}`"> <el-menu-item :index="path"> - <item :icon="item.icon" :title="item.name" /> + <unit :icon="item.icon" :title="item.name" /> </el-menu-item> </app-link> </template> @@ -36,16 +36,12 @@ </template> <script> -// import path from "path"; -import { isExternal } from "@/utils/validate"; -import Item from "./Item"; -import AppLink from "./Link"; -import FixiOSBug from "./FixiOSBug"; +import Unit from './Unit'; +import AppLink from './AppLink'; export default { - name: "SidebarItem", - components: { Item, AppLink }, - mixins: [FixiOSBug], + name: 'SidebarItem', + components: { Unit, AppLink }, props: { // route object item: { @@ -58,7 +54,7 @@ export default { return `/i/${this.item.routingUrl}`; }, params() { - return this.item.redirectUrl ? `?url=${this.item.redirectUrl}` : ""; + return this.item.redirectUrl ? `?url=${this.item.redirectUrl}` : ''; } }, data() { diff --git a/WebSite/src/layout/components/Sidebar/components/Unit.vue b/WebSite/src/layout/components/Sidebar/components/Unit.vue new file mode 100644 index 0000000000000000000000000000000000000000..4beb08d0a8922bac575b4ba3ca73306985040147 --- /dev/null +++ b/WebSite/src/layout/components/Sidebar/components/Unit.vue @@ -0,0 +1,48 @@ +<!-- + * @Description: + * @Autor: dongjunhua + * @Date: 2020-12-21 13:34:03 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-02-24 16:34:22 +--> +<script> +export default { + name: 'Unit', + functional: true, + props: { + icon: { + type: String, + default: '' + }, + title: { + type: String, + default: '' + } + }, + render() { + const vnodes = []; + + if (this.icon) { + // vnodes.push(<svg-icon icon-class={this.icon} />); + vnodes.push( + <i + class={this.icon + ' svg-icon'} + style="color: inherit; margin-right: 16px; font-size: inherit" + /> + ); + } + + if (this.title) { + vnodes.push(<span slot="title">{this.title}</span>); + } + return vnodes; + } +}; +</script> + +<style lang="scss" scoped> +.menu-icon { + color: inherit; + margin-right: 16px; +} +</style> diff --git a/WebSite/src/layout/components/Sidebar/index.vue b/WebSite/src/layout/components/Sidebar/index.vue index 959591e5b001f325971eb976bc500a0c41aafc45..a349758674889adb10efe26acffd5386937af9b5 100644 --- a/WebSite/src/layout/components/Sidebar/index.vue +++ b/WebSite/src/layout/components/Sidebar/index.vue @@ -1,63 +1,54 @@ <!-- * @Description: - * @Autor: dong jun hua - * @Date: 2020-06-15 11:18:22 - * @LastEditors: dong jun hua - * @LastEditTime: 2020-08-14 16:31:21 + * @Autor: dongjunhua + * @Date: 2020-12-21 09:02:09 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-02-25 09:02:17 --> <template> - <div :class="{ 'has-logo': showLogo }"> - <logo v-if="showLogo" :collapse="isCollapse" /> + <div :class="{ 'has-logo': sidebar.showLogo }"> + <logo v-if="sidebar.showLogo" :collapse="isCollapse" /> <el-scrollbar wrap-class="scrollbar-wrapper"> <el-menu :default-active="activeMenu" :collapse="isCollapse" - :background-color="variables.menuBg" - :text-color="variables.menuText" :unique-opened="false" - :active-text-color="variables.menuActiveText" :collapse-transition="false" mode="vertical" > - <sidebar-item v-for="root in menuTree" :key="root.id" :item="root" /> + <sidebar-item v-for="root in menuList" :key="root.id" :item="root" /> </el-menu> </el-scrollbar> </div> </template> <script> -import { mapGetters } from "vuex"; -import Logo from "./Logo"; -import SidebarItem from "./SidebarItem"; -import variables from "@/styles/variables.scss"; +import { useStore } from 'vuex'; +import { useRoute } from 'vue-router'; +import Logo from './components/Logo'; +import SidebarItem from './components/SidebarItem'; +import variablesStyle from '@/styles/variables.scss'; +import { computed } from 'vue'; export default { - name: "MenuTree", + name: 'Sidebar', components: { SidebarItem, Logo }, - computed: { - ...mapGetters(["menuTree", "sidebar"]), - activeMenu() { - const route = this.$route; - const { meta, path } = route; - // if set path, the sidebar will highlight the path you set - if (meta.activeMenu) { - return meta.activeMenu; - } - return path; - }, - showLogo() { - return this.$store.state.settings.sidebarLogo; - }, - variables() { - return variables; - }, - isCollapse() { - return !this.sidebar.opened; - } - }, - data() { - return {}; - }, - mounted() {}, - methods: {} + setup() { + const store = useStore(); + const route = useRoute(); + + const activeMenu = computed(() => route.path); + const variables = computed(() => variablesStyle); + const menuList = computed(() => store.state.subject.user.menuList || []); + const sidebar = computed(() => store.state.app.sidebar); + const isCollapse = computed(() => !sidebar.value.opened); + + return { + activeMenu, + variables, + sidebar, + menuList, + isCollapse + }; + } }; </script> diff --git a/WebSite/src/layout/components/TagsView/index.vue b/WebSite/src/layout/components/TagsView/index.vue index 2b7c05e51cac1c2038fac0f1a9feb3c86706f5a3..8b6dc79261e5a5fdb1cecfe573356adec19f476e 100644 --- a/WebSite/src/layout/components/TagsView/index.vue +++ b/WebSite/src/layout/components/TagsView/index.vue @@ -1,209 +1,124 @@ +<!-- + * @Description: + * @Autor: dongjunhua + * @Date: 2020-12-21 09:02:14 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-03-03 09:12:32 +--> <template> - <div id="tags-view-container" class="tags-view-container"> - <scroll-pane ref="scrollPane" class="tags-view-wrapper"> - <router-link - v-for="tag in visitedViews" - ref="tag" - :key="tag.path" - :class="isActive(tag) ? 'active' : ''" - :to="{ path: tag.path, query: tag.query, fullPath: tag.fullPath }" - tag="span" - class="tags-view-item" - @click.middle.native="!isAffix(tag) ? closeSelectedTag(tag) : ''" - @contextmenu.prevent.native="openMenu(tag, $event)" - > - {{ tag.title }} - <span - v-if="!isAffix(tag)" - class="el-icon-close" - @click.prevent.stop="closeSelectedTag(tag)" - /> - </router-link> - </scroll-pane> - <ul - v-show="visible" - :style="{ left: left + 'px', top: top + 'px' }" - class="contextmenu" - > - <li @click="refreshSelectedTag(selectedTag)">Refresh</li> - <li v-if="!isAffix(selectedTag)" @click="closeSelectedTag(selectedTag)"> - Close - </li> - <li @click="closeOthersTags">Close Others</li> - <li @click="closeAllTags(selectedTag)">Close All</li> - </ul> - </div> + <transition name="fade-transform-top"> + <div class="tags-view-container" v-if="cachedViews.length > 1"> + <scroll-pane> + <div class="router-link-container"> + <router-link + v-for="view in cachedViews" + ref="tag" + :key="view.id" + :class="view.active ? 'active' : ''" + :to="{ path: path(view.path) }" + tag="span" + class="tags-view-item" + > + <!-- <svg-icon v-if="view.active && view.icon" :icon-class="view.icon" /> --> + <i v-if="view.icon" :class="view.icon"></i> + <span v-if="view.name" class="context">{{ view.name }}</span> + <div + class="close-icon-container" + v-if="view.allowClose" + @click.prevent="closeTag(view)" + > + <svg width="16" height="16"> + <line + x1="5" + y1="5" + x2="11" + y2="11" + style="stroke:rgb(99,99,99);stroke-width:1" + /> + <line + x1="5" + y1="11" + x2="11" + y2="5" + style="stroke:rgb(99,99,99);stroke-width:1" + /> + </svg> + </div> + </router-link> + </div> + </scroll-pane> + </div> + </transition> </template> <script> -import ScrollPane from "./ScrollPane"; -import path from "path"; - +import { useStore } from 'vuex'; +import { useRoute, useRouter } from 'vue-router'; +import { computed, watch } from 'vue'; +import ScrollPane from '../ScrollPane'; +import TagView from '@/core/model/TagView'; export default { + name: 'TagsView', components: { ScrollPane }, - data() { - return { - visible: false, - top: 0, - left: 0, - selectedTag: {}, - affixTags: [] + setup() { + const store = useStore(); + const route = useRoute(); + const router = useRouter(); + + const cachedViews = computed(() => { + return store.state.app.tagsView.cachedViews; + }); + const menuList = computed(() => store.state.subject.user.menuList || []); + + const path = routingUrl => { + return routingUrl ? `/i/${routingUrl}` : '/i'; }; - }, - computed: { - visitedViews() { - return this.$store.state.tagsView.visitedViews; - }, - routes() { - return this.$store.state.permission.routes; - } - }, - watch: { - $route() { - this.addTags(); - this.moveToCurrentTag(); - }, - visible(value) { - if (value) { - document.body.addEventListener("click", this.closeMenu); + + const getTag = () => { + if (route.path === '/i') { + store.dispatch( + 'app/addTagView', + new TagView(0, '', '', 'fas fa-home', true, false) + ); } else { - document.body.removeEventListener("click", this.closeMenu); + menuList.value.forEach(m => checkNode(m, route.path)); } - } - }, - mounted() { - this.initTags(); - this.addTags(); - }, - methods: { - isActive(route) { - return route.path === this.$route.path; - }, - isAffix(tag) { - return tag.meta && tag.meta.affix; - }, - filterAffixTags(routes, basePath = "/") { - let tags = []; - routes.forEach(route => { - if (route.meta && route.meta.affix) { - const tagPath = path.resolve(basePath, route.path); - tags.push({ - fullPath: tagPath, - path: tagPath, - name: route.name, - meta: { ...route.meta } - }); - } - if (route.children) { - const tempTags = this.filterAffixTags(route.children, route.path); - if (tempTags.length >= 1) { - tags = [...tags, ...tempTags]; - } - } - }); - return tags; - }, - initTags() { - const affixTags = (this.affixTags = this.filterAffixTags(this.routes)); - for (const tag of affixTags) { - // Must have tag name - if (tag.name) { - this.$store.dispatch("tagsView/addVisitedView", tag); - } - } - }, - addTags() { - const { name } = this.$route; - if (name) { - this.$store.dispatch("tagsView/addView", this.$route); - } - return false; - }, - moveToCurrentTag() { - const tags = this.$refs.tag; - this.$nextTick(() => { - for (const tag of tags) { - if (tag.to.path === this.$route.path) { - this.$refs.scrollPane.moveToTarget(tag); - // when query is different then update - if (tag.to.fullPath !== this.$route.fullPath) { - this.$store.dispatch("tagsView/updateVisitedView", this.$route); - } - break; - } - } - }); - }, - refreshSelectedTag(view) { - this.$store.dispatch("tagsView/delCachedView", view).then(() => { - const { fullPath } = view; - this.$nextTick(() => { - this.$router.replace({ - path: "/redirect" + fullPath - }); - }); - }); - }, - closeSelectedTag(view) { - this.$store - .dispatch("tagsView/delView", view) - .then(({ visitedViews }) => { - if (this.isActive(view)) { - this.toLastView(visitedViews, view); - } - }); - }, - closeOthersTags() { - this.$router.push(this.selectedTag); - this.$store - .dispatch("tagsView/delOthersViews", this.selectedTag) - .then(() => { - this.moveToCurrentTag(); - }); - }, - closeAllTags(view) { - this.$store.dispatch("tagsView/delAllViews").then(({ visitedViews }) => { - if (this.affixTags.some(tag => tag.path === view.path)) { - return; - } - this.toLastView(visitedViews, view); - }); - }, - toLastView(visitedViews, view) { - const latestView = visitedViews.slice(-1)[0]; - if (latestView) { - this.$router.push(latestView.fullPath); - } else { - // now the default is to redirect to the home page if there is no tags-view, - // you can adjust it according to your needs. - if (view.name === "Dashboard") { - // to reload home page - this.$router.replace({ path: "/redirect" + view.fullPath }); - } else { - this.$router.push("/"); - } + }; + + const checkNode = (node, path) => { + if (`/i/${node.routingUrl}` === path) { + store.dispatch( + 'app/addTagView', + new TagView(node.id, node.name, node.routingUrl, node.icon) + ); + } else if (node.children && node.children.length > 0) { + node.children.forEach(c => checkNode(c, path)); } - }, - openMenu(tag, e) { - const menuMinWidth = 105; - const offsetLeft = this.$el.getBoundingClientRect().left; // container margin left - const offsetWidth = this.$el.offsetWidth; // container width - const maxLeft = offsetWidth - menuMinWidth; // left boundary - const left = e.clientX - offsetLeft + 15; // 15: margin right + }; - if (left > maxLeft) { - this.left = maxLeft; + const closeTag = view => { + store.dispatch('app/delTagView', view); + const activeView = cachedViews.value.find(v => v.active); + if (activeView) { + router.push(path(activeView.path)); } else { - this.left = left; + router.push('/'); } + }; - this.top = e.clientY; - this.visible = true; - this.selectedTag = tag; - }, - closeMenu() { - this.visible = false; - } + watch( + () => route.path, + () => { + getTag(); + }, + { immediate: true } + ); + + return { + path, + cachedViews, + closeTag + }; } }; </script> @@ -212,64 +127,125 @@ export default { .tags-view-container { height: 34px; width: 100%; - background: #fff; + position: relative; + z-index: 10; + background: rgb(245, 245, 245); border-bottom: 1px solid #d8dce5; - // box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.12), 0 0 3px 0 rgba(0, 0, 0, 0.04); - .tags-view-wrapper { + box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08); + + .router-link-container { + display: flex; + .tags-view-item { - display: inline-block; + transition: all 0.18s; + display: flex; position: relative; cursor: pointer; - height: 26px; + height: 33px; line-height: 26px; - border: 1px solid #d8dce5; - color: #495060; - background: #fff; - padding: 0 8px; + justify-content: center; + align-items: center; + color: #777; + padding: 1px 2px 0 8px; font-size: 12px; - margin-left: 5px; - margin-top: 4px; + margin-left: 10px; + font-weight: bold; + &:first-of-type { - margin-left: 15px; + margin-left: 5px; + padding-left: 15px; + padding-right: 15px; } &:last-of-type { - margin-right: 15px; + margin-right: 5px; + &::after { + position: absolute; + right: -5px; + content: ''; + width: 1px; + height: 30px; + border-right: 0; + } } + &::before { + transition: all 0.18s; + position: absolute; + left: 0; + bottom: 0; + content: ''; + height: 0; + width: 100%; + } + &::after { + position: absolute; + right: -5px; + content: ''; + width: 1px; + height: 16px; + border-right: 1px solid #ccc; + } + + &:hover { + color: #495060; + } + &.active { - background-color: #42b983; - color: #fff; - border-color: #42b983; + color: #495060; + &::before { - content: ""; - background: #fff; - display: inline-block; - width: 8px; - height: 8px; - border-radius: 50%; - position: relative; - margin-right: 2px; + position: absolute; + left: 0; + bottom: 0; + content: ''; + height: 3px; + width: 100%; + background-color: rgb(80, 138, 255); + // background: linear-gradient( + // to left, + // rgba(80, 138, 255, 0.8), + // rgba(30, 180, 97, 0.8), + // rgba(80, 138, 255, 0.8) + // ); } } } - } - .contextmenu { - margin: 0; - background: #fff; - z-index: 3000; - position: absolute; - list-style-type: none; - padding: 5px 0; - border-radius: 4px; - font-size: 12px; - font-weight: 400; - color: #333; - box-shadow: 2px 2px 3px 0 rgba(0, 0, 0, 0.3); - li { - margin: 0; - padding: 7px 16px; - cursor: pointer; + .context { + display: inline-block; + padding: 0 10px; + } + + .close-icon-container { + position: relative; + display: flex; + justify-content: center; + align-items: center; + width: 18px; + height: 18px; + border-radius: 9px; &:hover { - background: #eee; + background-color: #ccc; + } + } + + .contextmenu { + margin: 0; + background: #fff; + z-index: 3000; + position: absolute; + list-style-type: none; + padding: 5px 0; + border-radius: 4px; + font-size: 12px; + font-weight: 400; + color: #333; + box-shadow: 2px 2px 3px 0 rgba(0, 0, 0, 0.3); + li { + margin: 0; + padding: 7px 16px; + cursor: pointer; + &:hover { + background: #eee; + } } } } diff --git a/WebSite/src/layout/components/index.js b/WebSite/src/layout/components/index.js index 750be802c8d9a3d02abc801721b2ef44143e4f00..86b2465078af19eb4dc112a5edfb65ea25a3896f 100644 --- a/WebSite/src/layout/components/index.js +++ b/WebSite/src/layout/components/index.js @@ -1,13 +1,12 @@ /* * @Description: - * @Autor: dong jun hua - * @Date: 2020-06-08 09:28:04 - * @LastEditors: dong jun hua - * @LastEditTime: 2020-06-16 10:35:57 + * @Autor: dongjunhua + * @Date: 2020-12-21 09:01:40 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-02-26 10:00:07 */ - -export { default as AppMain } from "./AppMain"; -export { default as Navbar } from "./Navbar"; -export { default as Settings } from "./Settings"; -export { default as Sidebar } from "./Sidebar"; -export { default as TagsView } from "./TagsView"; +export { default as AppMainSection } from './AppMain/index.vue'; +export { default as NavbarSection } from './Navbar/index.vue'; +export { default as NavigationSection } from './Navigation/index.vue'; +export { default as SidebarSection } from './Sidebar/index.vue'; +export { default as TagsViewSection } from './TagsView/index.vue'; diff --git a/WebSite/src/layout/index.vue b/WebSite/src/layout/index.vue index a65534b15c31fecf58aaa2910a93bf76f91fc8c9..a4500c68772680392784c5809833760fd9c2f56c 100644 --- a/WebSite/src/layout/index.vue +++ b/WebSite/src/layout/index.vue @@ -1,69 +1,93 @@ +<!-- + * @Description: + * @Autor: dongjunhua + * @Date: 2020-12-21 08:50:10 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-02-26 10:14:07 +--> <template> - <div :class="classObj" class="app-wrapper"> + <div + :class="{ + hideSidebar: !sidebar.opened || !sidebar.enabled, + openSidebar: sidebar.opened && sidebar.enabled, + withoutAnimation: sidebar.withoutAnimation, + mobile: device === 'mobile' || !sidebar.enabled + }" + class="app-wrapper" + > <div v-if="device === 'mobile' && sidebar.opened" class="drawer-bg" @click="handleClickOutside" /> - <sidebar class="sidebar-container" /> - <div :class="{ hasTagsView: needTagsView }" class="main-container"> - <div :class="{ 'fixed-header': fixedHeader }"> - <navbar /> - <tags-view v-if="needTagsView" /> - </div> - <app-main /> - <right-panel v-if="showSettings"> - <settings /> - </right-panel> + <sidebar-section v-if="sidebar.enabled" class="sidebar-container" /> + <div class="main-container"> + <navbar-section v-if="navbar.enabled" /> + <navigation-section v-if="navigation.enabled" /> + <tags-view-section v-if="tagsView.enabled" /> + <app-main-section /> </div> </div> </template> <script> -import RightPanel from "@/components/RightPanel"; -import { AppMain, Navbar, Settings, TagsView, Sidebar } from "./components"; -import ResizeMixin from "./mixin/ResizeHandler"; -import { mapState } from "vuex"; +import { + AppMainSection, + NavbarSection, + NavigationSection, + SidebarSection, + TagsViewSection +} from './components'; +import { useStore } from 'vuex'; +import { computed } from 'vue'; +import ResizeMixin from './mixin/ResizeHandler'; export default { - name: "Layout", + name: 'Layout', components: { - AppMain, - Navbar, - RightPanel, - Settings, - TagsView, - Sidebar + AppMainSection, + NavigationSection, + NavbarSection, + SidebarSection, + TagsViewSection }, mixins: [ResizeMixin], - computed: { - ...mapState({ - sidebar: state => state.app.sidebar, - device: state => state.app.device, - showSettings: state => state.settings.showSettings, - needTagsView: state => state.settings.tagsView, - fixedHeader: state => state.settings.fixedHeader - }), - classObj() { - return { - hideSidebar: !this.sidebar.opened, - openSidebar: this.sidebar.opened, - withoutAnimation: this.sidebar.withoutAnimation, - mobile: this.device === "mobile" - }; - } - }, - methods: { - handleClickOutside() { - this.$store.dispatch("app/closeSideBar", { withoutAnimation: false }); - } + setup() { + const store = useStore(); + + // !! the name of variable in steup can not be same with the name in components + // even they are diff in case on initial (case-insensitive) + const fixedHeader = computed(() => store.state.app.fixedHeader); + const device = computed(() => store.state.app.device); + const navbar = computed(() => store.state.app.navbar); + const navigation = computed(() => store.state.app.navigation); + const sidebar = computed(() => store.state.app.sidebar); + const tagsView = computed(() => store.state.app.tagsView); + const cachedViews = computed(() => { + return store.state.app.tagsView.cachedViews; + }); + + const handleClickOutside = () => { + store.dispatch('app/closeSideBar', { withoutAnimation: false }); + }; + + return { + fixedHeader, + device, + sidebar, + navigation, + navbar, + tagsView, + cachedViews, + handleClickOutside + }; } }; </script> <style lang="scss" scoped> -@import "~@/styles/mixin.scss"; -@import "~@/styles/variables.scss"; +@import '~@/styles/mixin.scss'; +@import '~@/styles/variables.scss'; .app-wrapper { @include clearfix; diff --git a/WebSite/src/layout/mixin/ResizeHandler.js b/WebSite/src/layout/mixin/ResizeHandler.js index 48f7959441ea125bf6365729a51662d3dc48322a..cdd085889ea7ed98a68497fa513d068e518daf99 100644 --- a/WebSite/src/layout/mixin/ResizeHandler.js +++ b/WebSite/src/layout/mixin/ResizeHandler.js @@ -1,27 +1,34 @@ -import store from "@/store"; +/* + * @Description: + * @Autor: dongjunhua + * @Date: 2021-02-03 09:24:05 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-02-03 09:29:57 + */ +import store from '@/store'; const { body } = document; const WIDTH = 992; // refer to Bootstrap's responsive design export default { watch: { - $route(route) { - if (this.device === "mobile" && this.sidebar.opened) { - store.dispatch("app/closeSideBar", { withoutAnimation: false }); + $route() { + if (this.device === 'mobile' && this.sidebar.opened) { + store.dispatch('app/closeSideBar', { withoutAnimation: false }); } } }, beforeMount() { - window.addEventListener("resize", this.$_resizeHandler); + window.addEventListener('resize', this.$_resizeHandler); }, - beforeDestroy() { - window.removeEventListener("resize", this.$_resizeHandler); + beforeUnmount() { + window.removeEventListener('resize', this.$_resizeHandler); }, mounted() { const isMobile = this.$_isMobile(); if (isMobile) { - store.dispatch("app/toggleDevice", "mobile"); - store.dispatch("app/closeSideBar", { withoutAnimation: true }); + store.dispatch('app/setDevice', 'mobile'); + store.dispatch('app/closeSideBar', { withoutAnimation: true }); } }, methods: { @@ -34,10 +41,10 @@ export default { $_resizeHandler() { if (!document.hidden) { const isMobile = this.$_isMobile(); - store.dispatch("app/toggleDevice", isMobile ? "mobile" : "desktop"); + store.dispatch('app/setDevice', isMobile ? 'mobile' : 'desktop'); if (isMobile) { - store.dispatch("app/closeSideBar", { withoutAnimation: true }); + store.dispatch('app/closeSideBar', { withoutAnimation: true }); } } } diff --git a/WebSite/src/main.js b/WebSite/src/main.js index 4cf333afb14a9280ed927e4e55f3ebce6266a627..8662093ce107bd738d3af8309410ebd43d750ce9 100644 --- a/WebSite/src/main.js +++ b/WebSite/src/main.js @@ -1,58 +1,41 @@ /* - * @Descripttion: - * @Author: dong - * @Date: 2020-04-21 18:54:20 + * @Description: + * @Autor: dongjunhua + * @Date: 2020-12-17 10:20:47 * @LastEditors: dongjunhua - * @LastEditTime: 2020-08-20 08:39:38 + * @LastEditTime: 2021-01-05 14:57:59 */ -import Vue from "vue"; -import Cookies from "js-cookie"; -import "normalize.css/normalize.css"; // a modern alternative to CSS resets -import Element from "element-ui"; -import "./styles/element-variables.scss"; -import "@/styles/index.scss"; // global css -import App from "./App"; -import store from "./store"; -import router from "./router"; -import "./icons"; // icon -import "./permission"; // permission control -import "./utils/error-log"; // error log -import * as filters from "./filters"; // global filters -import VueJsonp from "vue-jsonp"; // jsonp -import service from "./service"; -import LayoutCard from "./components/LayoutCard"; -import JumpDialog from "./components/JumpDialog"; -import JumpDialogItem from "./components/JumpDialog/components/JumpDialogItem"; +import { createApp } from 'vue'; +import App from './App.vue'; +import router from './router'; +import store from './store'; +import 'normalize.css/normalize.css'; // a modern alternative to CSS resets +import ElementPlus from 'element-plus'; +import 'element-plus/lib/theme-chalk/index.css'; +import locale from 'element-plus/lib/locale/lang/zh-cn'; +import defaultSettings from './settings'; +import '@/styles/index.scss'; // global css +import './icons'; // icon +import SvgIcon from './components/SvgIcon/index.vue'; +import VueParticles from 'vue-particles'; +import '@fortawesome/fontawesome-free/css/all.css'; +import components from '@/components'; +import directives from '@/utils/directives' +const app = createApp(App); -// 鎵撳寘鍚庢彁渚沵ock鏁版嵁锛屽浣跨敤鐪熷疄api锛岃娉ㄩ噴 -if (process.env.NODE_ENV === "test") { - const { mockXHR } = require("../mock"); - mockXHR(); -} +// register plugins +app + .use(components) + .use(store) + .use(router) + .use(ElementPlus, { ...defaultSettings.element, locale }) + .use(VueParticles); -//鍏ㄥ眬娉ㄥ唽缁勪欢 -Vue.component("LayoutCard", LayoutCard); -Vue.component("JumpDialog", JumpDialog); -Vue.component("JumpDialogItem", JumpDialogItem); +// register global component +app.component('SvgIcon', SvgIcon); -Vue.use(service); -Vue.use(Element, { - //size: Cookies.get("size") || "medium" // set element-ui default size - size: "mini" -}); -// use jsonp -Vue.use(VueJsonp); +//娉ㄥ唽鍏ㄥ眬鎸囦护 +app.directive('loadmore', directives.loadmore); -// register global utility filters -Object.keys(filters).forEach(key => { - Vue.filter(key, filters[key]); -}); - -Vue.config.productionTip = false; - -new Vue({ - el: "#app", - router, - store, - render: h => h(App) -}); +// mount instance +app.mount('#app'); diff --git a/WebSite/src/permission.js b/WebSite/src/permission.js deleted file mode 100644 index 9b2325bab1ebda63feef97e0750a0c7292a6d61f..0000000000000000000000000000000000000000 --- a/WebSite/src/permission.js +++ /dev/null @@ -1,74 +0,0 @@ -/* - * @Description: - * @Autor: dong jun hua - * @Date: 2020-03-13 10:03:56 - * @LastEditors: dong jun hua - * @LastEditTime: 2020-08-10 13:07:55 - */ -import router from "./router"; -import store from "./store"; -import { Message } from "element-ui"; -import NProgress from "nprogress"; // progress bar -import "nprogress/nprogress.css"; // progress bar style -import { getToken } from "@/utils/auth"; // get token from cookie -import getPageTitle from "@/utils/get-page-title"; - -NProgress.configure({ showSpinner: false }); // NProgress Configuration - -const whiteList = ["/login", "/auth-redirect"]; // no redirect whitelist - -router.beforeEach(async (to, from, next) => { - // start progress bar - NProgress.start(); - - // set page title - document.title = getPageTitle(to.meta.title); - - // determine whether the user has logged in - const hasToken = getToken(); - - if (hasToken) { - if (to.path === "/login") { - // if is logged in, redirect to the home page - next({ path: "/" }); - NProgress.done(); - } else { - // determine whether the user has existed through getInfo - if (store.getters.user) { - next(); - } else { - try { - // get user info - await store.dispatch("user/getInfo"); - // store.dispatch("permission/generateRoutes"); - - // hack method to ensure that addRoutes is complete - // set the replace: true, so the navigation will not leave a history record - next({ ...to, replace: true }); - } catch (error) { - // remove token and go to login page to re-login - await store.dispatch("user/resetCache"); - Message.error(error || "Has Error"); - next("/login"); - NProgress.done(); - } - } - } - } else { - /* has no token*/ - - if (whiteList.indexOf(to.path) !== -1) { - // in the free login whitelist, go directly - next(); - } else { - // other pages that do not have permission to access are redirected to the login page. - next("/login"); - NProgress.done(); - } - } -}); - -router.afterEach(() => { - // finish progress bar - NProgress.done(); -}); diff --git a/WebSite/src/router/guards.js b/WebSite/src/router/guards.js new file mode 100644 index 0000000000000000000000000000000000000000..7f8db0ae71b2ca0b304f6eeeb2e70c3504b8ca5e --- /dev/null +++ b/WebSite/src/router/guards.js @@ -0,0 +1,88 @@ +/* + * @Description: global router guards + * @Autor: dongjunhua + * @Date: 2020-12-17 13:02:54 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-02-11 16:25:16 + */ + +import NProgress from 'nprogress'; // progress bar +import 'nprogress/nprogress.css'; // progress bar style +import store from '@/store'; +import { clearRequest } from '@/core/base/request'; +// NProgress Configuration +NProgress.configure({ showSpinner: false }); + +// not authenticated +// 鏈璇佺姸鎬佺櫧鍚嶅崟 +const whiteListLv1 = ['/login', '/auth-redirect']; +// authenticated +// 宸茶璇佺姸鎬佺櫧鍚嶅崟 +const whiteListLv2 = ['/login', '/auth-redirect', '/i', '/401', '/404']; + +const before = async (to, from, next) => { + // start progress bar + NProgress.start(); + clearRequest(); + if (store.state.subject.initialized) { + // try to get persistence data from storage when subject is initialized, e.g., refresh + // 褰撲細璇濆浜庡垵濮嬪寲鐘舵€佹椂灏濊瘯浠巗torage涓仮澶� + await store.dispatch('subject/recovery'); + next({ ...to, replace: true }); + } else if ( + store.state.subject.isAuthenticated && + store.state.subject.isPermitted + ) { + // authenticated and permitted + // 宸茶璇佸拰鎺堟潈 + if (whiteListLv1.includes(to.path) || to.meta.isWhitePath) { + // when current path in whitelist + if (to.meta.isWhitePath) { + next(); + NProgress.done(); + return; + } + // 褰撳墠璺敱灞炰簬鐧藉悕鍗� + if (to.query.redirect_uri) { + next(); + NProgress.done(); + const { sso_logout, ...query } = to.query; + if (sso_logout === 'true') { + store.dispatch('subject/logout', { query }); + } else { + window.location.href = `${to.query.redirect_uri}?code=${store.state.subject.token}`; + } + } else { + next({ path: '/i', replace: true }); + } + } else { + // check for permission of current path when not in whitelist + // 褰撳墠璺敱涓嶅睘浜庣櫧鍚嶅崟鏃舵鏌ユ潈闄� + const hasPermission = await store.dispatch('subject/checkPermission', { + path: to.path, + whiteList: whiteListLv2 + }); + if (hasPermission) { + next(); + NProgress.done(); + } else { + next({ path: '/401', replace: true }); + } + } + } else { + // not authenticated + // 鏈璇� + next(); + NProgress.done(); + if (!whiteListLv1.includes(to.path)) { + store.dispatch('subject/logout'); + } + } +}; + +const after = () => { + // end progress bar + NProgress.done(); +}; + +export { before, after }; diff --git a/WebSite/src/router/index.js b/WebSite/src/router/index.js index 510c2407ee71657768b97a18d028eeb3fb49f57d..2ced067366de9959970949ade7c746a1b57190c4 100644 --- a/WebSite/src/router/index.js +++ b/WebSite/src/router/index.js @@ -1,119 +1,81 @@ -import Vue from "vue"; -import Router from "vue-router"; - -Vue.use(Router); - -/* Layout */ -import Layout from "@/layout"; - -/** - * Note: sub-menu only appear when route children.length >= 1 - * Detail see: https://panjiachen.github.io/vue-element-admin-site/guide/essentials/router-and-nav.html - * - * hidden: true if set true, item will not show in the sidebar(default is false) - * alwaysShow: true if set true, will always show the root menu - * if not set alwaysShow, when item has more than one children route, - * it will becomes nested mode, otherwise not show the root menu - * redirect: noRedirect if set noRedirect will no redirect in the breadcrumb - * name:'router-name' the name is used by <keep-alive> (must set!!!) - * meta : { - roles: ['admin','editor'] control the page roles (you can set multiple roles) - title: 'title' the name show in sidebar and breadcrumb (recommend set) - icon: 'svg-name' the icon show in the sidebar - noCache: true if set true, the page will no be cached(default is false) - affix: true if set true, the tag will affix in the tags-view - breadcrumb: false if set false, the item will hidden in breadcrumb(default is true) - activeMenu: '/example/list' if set path, the sidebar will highlight the path you set - } +/* + * @Description: + * @Autor: dongjunhua + * @Date: 2020-12-17 10:20:47 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-02-20 12:51:36 */ +import { createRouter, createWebHashHistory } from 'vue-router'; +import { before, after } from './guards'; +import Layout from '@/layout'; -/** - * 鍩虹璺敱 - */ -export const constantRoutes = [ - { - path: "/redirect", - component: Layout, - hidden: true, - children: [ - { - path: "/redirect/:path(.*)", - component: () => import("@/views/redirect/index") - } - ] - }, +// get routes from modules +const modulesFiles = require.context('./modules', true, /\.js$/); +// router for layout +const moduleRoutes = modulesFiles.keys().reduce((moduleRoutes, modulePath) => { + const value = modulesFiles(modulePath); + return [...moduleRoutes, ...value.default]; +}, []); +// router for outer +const moduleRoutesForOuter = moduleRoutes.map(r => { + const routeForOuter = { + path: `/${r.path}`, + component: r.component, + name: `${r.name}ForOuter` + }; + return routeForOuter; +}); + +const routes = [ { - path: "/login", - component: () => import("@/views/login/index"), - hidden: true + path: '/login', + name: 'Login', + component: () => import('@/views/login/index') }, { - path: "/auth-redirect", - component: () => import("@/views/login/auth-redirect"), - hidden: true + path: '/auth-redirect', + name: 'AuthRedirect', + component: () => import('@/views/auth-redirect') }, { - path: "/404", - component: () => import("@/views/error-page/404"), - hidden: true + path: '/401', + name: 'NoPermission', + component: () => import('@/views/error-page/401') }, { - path: "/401", - component: () => import("@/views/error-page/401"), - hidden: true + path: '/404', + name: 'NotFound', + component: () => import('@/views/error-page/404') }, { - path: "/", - component: Layout, - redirect: "/i" - } -]; - -import { demoRoutes } from "./modules/demo"; - -/** - * 闇€瑕佸姩鎬佸姞杞界殑璺敱 - */ -export const asyncRoutes = [...demoRoutes]; - -/** - * 澶栧眰妗嗘灦璺敱 - */ -export const layoutRoutes = [ - { - path: "/i", + path: '/i', component: Layout, children: [ { - path: "", - component: () => import("@/views/home"), - name: "Home", - meta: { title: "棣栭〉", affix: true } - } + path: '', + name: 'Home', + component: () => import('@/views/home') + }, + ...moduleRoutes ] - } + }, + ...moduleRoutesForOuter, + { + path: '/', + redirect: '/i' + }, + // catch all routes (*, /*) must now be defined using a parameter with a custom regex + { path: '/:pathMatch(.*)*', redirect: { name: 'NotFound' } } ]; -/** - * 404椤甸潰锛屽繀椤诲湪鏈€鍚庡姞杞� - */ -export const notFoundRoutes = [{ path: "*", redirect: "/404", hidden: true }]; - -export const routes = [...constantRoutes]; - -const createRouter = () => - new Router({ - // mode: 'history', // require service support - scrollBehavior: () => ({ y: 0 }), - routes - }); - -const router = createRouter(); +const router = createRouter({ + history: createWebHashHistory(), + routes +}); -// Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465 -export function resetRouter() { - const newRouter = createRouter(); - router.matcher = newRouter.matcher; // reset router -} +// set global router guards +router.beforeEach(before); +router.afterEach(after); +export { moduleRoutes }; export default router; diff --git a/WebSite/src/router/modules/ProjectRegistry.js b/WebSite/src/router/modules/ProjectRegistry.js new file mode 100644 index 0000000000000000000000000000000000000000..edb6a1de87cedcb7cf8d98aed21ab8f52c11277f --- /dev/null +++ b/WebSite/src/router/modules/ProjectRegistry.js @@ -0,0 +1,9 @@ +const libraryRoutes = [ + { + path: 'merits/performance-library', + component: () => import('@/views/main/performance-library'), + name: 'PerformanceLibrary' + } +]; + +export default libraryRoutes; diff --git a/WebSite/src/router/modules/base.js b/WebSite/src/router/modules/base.js new file mode 100644 index 0000000000000000000000000000000000000000..395bcd5de3da8096a6d5057033e127c3c4cf28dd --- /dev/null +++ b/WebSite/src/router/modules/base.js @@ -0,0 +1,40 @@ +const routes = [ + { + path: 'basicSetting/declarationControl', + component: () => import('@/views/main/basicSetting/declarationControl'), + name: 'DeclarationControl' + }, + { + path: 'basicSetting/projectLibrary', + component: () => import('@/views/main/basicSetting/projectLibrary'), + name: 'ProjectLibrary' + }, + + { + path: 'basicSetting/subjectsSetting', + component: () => import('@/views/main/basicSetting/subjectsSetting'), + name: 'subjectsSetting' + }, + { + path: 'basicSetting/subjectExtension', + component: () => import('@/views/main/basicSetting/subjectExtension'), + name: 'SubjectExtension' + }, + { + path: 'basicSetting/equipmentType', + component: () => import('@/views/main/basicSetting/equipmentType'), + name: 'EquipmentType' + }, + { + path: 'basicSetting/informationType', + component: () => import('@/views/main/basicSetting/informationType'), + name: 'InformationType' + }, + { + path: 'basicSetting/personnelExpenses', + component: () => import('@/views/main/basicSetting/personnelExpenses'), + name: 'PersonnelExpenses' + } +]; + +export default routes; diff --git a/WebSite/src/router/modules/commonRouter.js b/WebSite/src/router/modules/commonRouter.js new file mode 100644 index 0000000000000000000000000000000000000000..352e8b716c54c1a23b2d8ec1e010644fde918552 --- /dev/null +++ b/WebSite/src/router/modules/commonRouter.js @@ -0,0 +1,24 @@ +/** + * 涓嶆樉绀哄湪鑿滃崟涓殑璺敱锛屽彲浠ヨ闂紝涓簃eta灞炴€ф坊鍔爄sWhitePath瀛楁涓簍rue + */ + +const routes = [ + { + path: 'common/ProjectFundApply', + component: () => import('@/views/yo-common/ProjectFundApply'), + name: 'ProjectFundApplyOrder', + meta: { + isWhitePath: true + } + }, + { + path: 'common/PeopleFundApply', + component: () => import('@/views/yo-common/PeopleFundApply'), + name: 'PeopleFundApplyOrder', + meta: { + isWhitePath: true + } + } +]; + +export default routes; \ No newline at end of file diff --git a/WebSite/src/router/modules/demo.js b/WebSite/src/router/modules/demo.js deleted file mode 100644 index 67b8006dbd10eedec60ff640e62209a30c229756..0000000000000000000000000000000000000000 --- a/WebSite/src/router/modules/demo.js +++ /dev/null @@ -1,55 +0,0 @@ -/* - * @Description: - * @Autor: dong jun hua - * @Date: 2020-07-15 16:40:16 - * @LastEditors: dong jun hua - * @LastEditTime: 2020-09-18 13:56:32 - */ - -export const demoRoutes = [ - { - path: "icon", - component: () => import("@/views/icons"), - name: "Icon" - }, - { - path: "dashboard", - component: () => import("@/views/dashboard"), - name: "Dashboard" - }, - { - path: "example/index", - component: () => import("@/views/example/index"), - name: "Example" - }, - { - path: "example/button", - component: () => import("@/views/example/button"), - name: "Button" - }, - { - path: "example/table", - component: () => import("@/views/example/table"), - name: "Table" - }, - { - path: "example/dialog", - component: () => import("@/views/example/dialog"), - name: "Dialog" - }, - { - path: "example/icon", - component: () => import("@/views/example/icon"), - name: "Icon" - }, - { - path: "example/layout", - component: () => import("@/views/example/layout"), - name: "Layout" - }, - { - path: "example/form", - component: () => import("@/views/example/form"), - name: "Form" - } -]; diff --git a/WebSite/src/router/modules/deptBZ.js b/WebSite/src/router/modules/deptBZ.js new file mode 100644 index 0000000000000000000000000000000000000000..4a358be6b57cc849eda239b428c447675eb29074 --- /dev/null +++ b/WebSite/src/router/modules/deptBZ.js @@ -0,0 +1,89 @@ +const routes = [ + { + path: 'dept/first/ProjectFundApply', + component: () => import('@/views/yo-dept-bz/first/ProjectFundApply'), + name: 'ProjectFundApply' + }, + { + path: 'dept/first/PuplicFundApply', + component: () => import('@/views/yo-dept-bz/first/PuplicFundApply'), + name: 'PuplicFundApply' + }, + { + path: 'dept/first/PeopleFundApply', + component: () => import('@/views/yo-dept-bz/first/PeopleFundApply'), + name: 'PeopleFundApply' + }, + { + path: 'dept/first/IncomeApply', + component: () => import('@/views/yo-dept-bz/first/IncomeApply'), + name: 'IncomeApply' + }, + + //浜屼笂 + { + path: 'dept/second/ProjectFundApply', + component: () => import('@/views/yo-dept-bz/second/SecondProjectFundApply'), + name: 'SecondProjectFundApply' + }, + { + path: 'dept/second/PuplicFundApply', + component: () => import('@/views/yo-dept-bz/second/SecondPuplicFundApply'), + name: 'SecondPuplicFundApply' + }, + { + path: 'dept/second/PeopleFundApply', + component: () => import('@/views/yo-dept-bz/second/SecondPeopleFundApply'), + name: 'SecondPeopleFundApply' + }, + { + path: 'dept/second/IncomeApply', + component: () => import('@/views/yo-dept-bz/second/SecondIncomeApply'), + name: 'SecondIncomeApply' + }, + + //鎵瑰 + { + path: 'dept/find/ProjectFundApply', + component: () => import('@/views/yo-dept-bz/find/FindProjectFundApply'), + name: 'FindProjectFundApply' + }, + { + path: 'dept/find/PuplicFundApply', + component: () => import('@/views/yo-dept-bz/find/FindPuplicFundApply'), + name: 'FindPuplicFundApply' + }, + { + path: 'dept/find/PeopleFundApply', + component: () => import('@/views/yo-dept-bz/find/FindPeopleFundApply'), + name: 'FindPeopleFundApply' + }, + { + path: 'dept/find/IncomeApply', + component: () => import('@/views/yo-dept-bz/find/FindIncomeApply'), + name: 'FindIncomeApply' + }, + { + path: 'dept/find/BackDeptFund', + component: () => import('@/views/yo-dept-bz/find/FindBackDeptFund'), + name: 'FindBackDeptFund' + }, + // 瀹氶 + { + path: 'dept/quota/daily', + component: () => import('@/views/yo-dept-bz/quota/daily'), + name: 'Daily' + }, + { + path: 'dept/quota/dept', + component: () => import('@/views/yo-dept-bz/quota/dept'), + name: 'Dept' + }, + { + path: 'dept/quota/project', + component: () => import('@/views/yo-dept-bz/quota/project'), + name: 'Project' + } +]; + +export default routes; diff --git a/WebSite/src/router/modules/deptSP.js b/WebSite/src/router/modules/deptSP.js new file mode 100644 index 0000000000000000000000000000000000000000..5636493d7595f906ce7424635ced682bb3480fc0 --- /dev/null +++ b/WebSite/src/router/modules/deptSP.js @@ -0,0 +1,61 @@ +const routes = [ + //椤圭洰缁忚垂瀹℃壒 + { + path: 'approval/project/LeaderApproval', + component: () => import('@/views/yo-dept-sp/project-fund-approval/LeaderApproval'), + name: 'LeaderApproval' + }, + { + path: 'approval/project/BackDeptApproval', + component: () => import('@/views/yo-dept-sp/project-fund-approval/BackDeptApproval'), + name: 'BackDeptApproval' + }, + { + path: 'approval/project/SchoolLeaderApproval', + component: () => import('@/views/yo-dept-sp/project-fund-approval/SchoolLeaderApproval'), + name: 'SchoolLeaderApproval' + }, + { + path: 'approval/project/FinanceApproval', + component: () => import('@/views/yo-dept-sp/project-fund-approval/FinanceApproval'), + name: 'FinanceApproval' + }, + + //鍏敤缁忚垂瀹℃壒 + { + path: 'approval/public/LeaderApproval', + component: () => import('@/views/yo-dept-sp/public-fund-approval/LeaderApproval'), + name: 'publicLeaderApproval' + }, + { + path: 'approval/public/SchoolLeaderApproval', + component: () => import('@/views/yo-dept-sp/public-fund-approval/SchoolLeaderApproval'), + name: 'publicSchoolLeaderApproval' + }, + { + path: 'approval/public/FinanceApproval', + component: () => import('@/views/yo-dept-sp/public-fund-approval/FinanceApproval'), + name: 'publicFinanceApproval' + }, + + //浜哄憳缁忚垂瀹℃壒 + { + path: 'approval/people/HrApproval', + component: () => import('@/views/yo-dept-sp/people-fund-approval/HrApproval'), + name: 'peopleHrApproval' + }, + { + path: 'approval/people/FinanceApproval', + component: () => import('@/views/yo-dept-sp/people-fund-approval/FinanceApproval'), + name: 'peopleFinanceApproval' + }, + + //鏀跺叆瀹℃壒 + { + path: 'approval/income/IncomeApproval', + component: () => import('@/views/yo-dept-sp/income-approval/IncomeApproval'), + name: 'incomeIncomeApproval' + }, +]; + +export default routes; \ No newline at end of file diff --git a/WebSite/src/router/modules/merits.js b/WebSite/src/router/modules/merits.js new file mode 100644 index 0000000000000000000000000000000000000000..1be0e0ccba5b69aecb5490dcbe94199c9c638f28 --- /dev/null +++ b/WebSite/src/router/modules/merits.js @@ -0,0 +1,3 @@ +const routes = []; + +export default routes; diff --git a/WebSite/src/router/modules/projectLibrary.js b/WebSite/src/router/modules/projectLibrary.js new file mode 100644 index 0000000000000000000000000000000000000000..b9f11b0453886bbe9f4284b0c74a299953fd1487 --- /dev/null +++ b/WebSite/src/router/modules/projectLibrary.js @@ -0,0 +1,14 @@ +const libraryRoutes = [ + { + path: 'project-library/department', + component: () => import('@/views/main/project-library/department'), + name: 'Department' + }, + { + path: 'project-library/inSchool', + component: () => import('@/views/main/project-library/inSchool'), + name: 'InSchool' + } +]; + +export default libraryRoutes; diff --git a/WebSite/src/router/modules/search.js b/WebSite/src/router/modules/search.js new file mode 100644 index 0000000000000000000000000000000000000000..c89945038441b9c9b7b9df24f408ff3344e90df3 --- /dev/null +++ b/WebSite/src/router/modules/search.js @@ -0,0 +1,9 @@ +const routes = [ + { + path: 'search/ProjectSearch', + component: () => import('@/views/yo-search/search/ProjectSearch'), + name: 'ProjectSearch' + } +]; + +export default routes; \ No newline at end of file diff --git a/WebSite/src/service/index.js b/WebSite/src/service/index.js deleted file mode 100644 index f890cc7e540d41715c584679acdaea1d2150fd24..0000000000000000000000000000000000000000 --- a/WebSite/src/service/index.js +++ /dev/null @@ -1,56 +0,0 @@ -/* - * @Descripttion: global service module ver .1 - * @Author: dong - * @Date: 2020-05-11 19:56:12 - * @LastEditors: dong jun hua - * @LastEditTime: 2020-06-17 14:39:39 - */ - -const modulesFiles = require.context("./modules", true, /\.js$/); - -const modules = modulesFiles.keys().reduce((modules, modulePath) => { - const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, "$1"); - const value = modulesFiles(modulePath); - - const key = moduleName.charAt(0).toUpperCase() + moduleName.slice(1); - modules[key] = value.default; - - return modules; -}, {}); - -// import Organization from "@/service/modules/organization"; -// const modules = { Organization }; - -Object.defineProperty(modules, "invoke", { - value: function(method, ...params) { - let im; - eachMethod(this, (name, m) => { - name === method && (im = m); - }); - if (im) { - return im(...params); - } - }, - writable: false, - enumerable: false, - configurable: false -}); - -function eachMethod(modules, cb) { - Object.keys(modules).forEach(cKey => { - const c = modules[cKey]; - typeof c === "function" && - Object.getOwnPropertyNames(c).forEach(mKey => { - const m = c[mKey]; - typeof m === "function" && cb(`${c.name}/${m.name}`, m); - }); - }); -} - -const service = { - install(Vue) { - Vue.prototype.$service = modules; - } -}; - -export default service; diff --git a/WebSite/src/service/modules/account.js b/WebSite/src/service/modules/account.js deleted file mode 100644 index 78b6caac641df71c2e21a29d1a23bf5ec2697c8d..0000000000000000000000000000000000000000 --- a/WebSite/src/service/modules/account.js +++ /dev/null @@ -1,21 +0,0 @@ -/* - * @Description: - * @Autor: dong jun hua - * @Date: 2020-06-11 11:13:25 - * @LastEditors: dong jun hua - * @LastEditTime: 2020-07-15 17:21:52 - */ -import request from "@/utils/request"; -import { Base } from "../base/base"; - -class Account extends Base { - static login(data) { - return request.post("/account/pc/v1/login", data); - } - - static modifyPassword(data) { - return Promise.resolve("success"); - } -} - -export default Account; diff --git a/WebSite/src/service/modules/user.js b/WebSite/src/service/modules/user.js deleted file mode 100644 index 8f7e8778cd559e10a7fb61df5533f6f5e28337a6..0000000000000000000000000000000000000000 --- a/WebSite/src/service/modules/user.js +++ /dev/null @@ -1,21 +0,0 @@ -/* - * @Descripttion: - * @Author: dong - * @Date: 2020-05-11 19:57:33 - * @LastEditors: dong jun hua - * @LastEditTime: 2020-07-15 17:14:35 - */ -import request from "@/utils/request"; -import { Base } from "../base/base"; - -class User extends Base { - static setCurrent(data) { - return request.post("/user/pc/v1/setCurrent", data); - } - - static getCurrent() { - return request.post("/user/pc/v1/getCurrent"); - } -} - -export default User; diff --git a/WebSite/src/settings.js b/WebSite/src/settings.js deleted file mode 100644 index a96eb551712348e9a3b41858b23f01bb1ad34457..0000000000000000000000000000000000000000 --- a/WebSite/src/settings.js +++ /dev/null @@ -1,48 +0,0 @@ -/* - * @Description: - * @Autor: dong jun hua - * @Date: 2020-03-13 10:03:56 - * @LastEditors: dong jun hua - * @LastEditTime: 2020-08-14 16:31:37 - */ -module.exports = { - title: "Vue Element Admin", - - /** - * @type {boolean} true | false - * @description Whether show the settings right-panel - */ - showSettings: false, - - /** - * @type {boolean} true | false - * @description Whether need tagsView - */ - tagsView: true, - - /** - * @type {boolean} true | false - * @description Whether fix the header - */ - fixedHeader: false, - - /** - * @type {boolean} true | false - * @description Whether show the logo in sidebar - */ - sidebarLogo: false, - - /** - * @type {boolean} true | false - * @description Whether show when there is only one root menu - */ - sidebarRootMenu: true, - - /** - * @type {string | array} 'production' | ['production', 'development'] - * @description Need show err logs component. - * The default is only used in the production env - * If you want to also use it in dev, you can pass ['production', 'development'] - */ - errorLog: "production" -}; diff --git a/WebSite/src/settings/index.js b/WebSite/src/settings/index.js new file mode 100644 index 0000000000000000000000000000000000000000..a230bd4e5a9731f589d999ca5490c123bbfd910e --- /dev/null +++ b/WebSite/src/settings/index.js @@ -0,0 +1,89 @@ +/* + * @Description: + * @Autor: dongjunhua + * @Date: 2020-12-17 14:51:38 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-03-03 10:11:57 + */ +const npmConfig = require('../../package.json'); + +module.exports = { + /** + * 搴旂敤鍚嶇О + */ + applicationName: '棰勭畻缂栧埗' || npmConfig.name, + /** + * 搴旂敤璇嗗埆id + */ + recognizeId: 'vue_element_next', + /** + * 鐗堟湰 + */ + releaseCycle: '伪lpha', + /** + * 鐗堟湰鍙� + */ + version: npmConfig.version, + /** + * Vue鐗堟湰鍙� + */ + coreVersion: npmConfig.dependencies.vue.replace(/\./g, ''), + /** + * 鐧诲綍妯″紡锛坉efault: 榛樿/sso: 鍗曠偣鐧诲綍锛� + */ + loginType: 'sso', + /** + * 鍗曠偣鐧诲綍鍦板潃 + */ + ssoAddress: 'http://localhost:9529/#/login', + /** + * 浼氳瘽鏈夋晥鏃堕棿锛堝崟浣嶏細ms锛� + */ + loginValidDuration: 6000000, + /** + * 缂撳瓨鍔犲瘑 + */ + storageEncrypt: false, + /** + * 鐜鏍囪瘑 + */ + device: 'desktop', + /** + * 鏄惁寮€鍚櫥褰曢〉闈㈠姩鎬佽儗鏅� + */ + dynamicLoginBg: true, + /** + * ElementUI鍏ㄥ眬閰嶇疆 + */ + element: { + size: 'mini', + zIndex: 3000 + }, + /** + * 瀵艰埅鏍忛厤缃紙椤堕儴鑿滃崟锛� + * 寮€鍚椂璇峰叧闂晶杈规爮 + */ + navbar: { + enabled: false + }, + /** + * 瀵艰埅淇℃伅鏍忛厤缃� + */ + navigation: { + enabled: true + }, + /** + * 渚ц竟鏍忛厤缃紙渚ц竟鑿滃崟锛� + * 寮€鍚椂璇峰叧闂鑸爮 + */ + sidebar: { + enabled: true, + showLogo: true + }, + /** + * 鏍囩椤甸厤缃� + */ + tagsView: { + enabled: true + } +}; diff --git a/WebSite/src/settings/theme.js b/WebSite/src/settings/theme.js new file mode 100644 index 0000000000000000000000000000000000000000..7f1a02b1f4a9d56c1b58810412a52f2516df53ed --- /dev/null +++ b/WebSite/src/settings/theme.js @@ -0,0 +1,25 @@ +/* + * @Description: + * @Author: dongjunhua + * @Date: 2021-02-14 16:58:25 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-02-14 22:17:35 + */ + +module.exports = { + themeConfigs: [ + { + name: 'default', + className: 'default' + }, + { + name: 'light', + className: 'light', + default: true + }, + { + name: 'dark', + className: 'dark' + } + ] +}; diff --git a/WebSite/src/store/getters.js b/WebSite/src/store/getters.js index 8e765c5d41fa1077e357df4d67e48b7410606f19..69ea6ead357139524f0accec0b5919f7590dd3b1 100644 --- a/WebSite/src/store/getters.js +++ b/WebSite/src/store/getters.js @@ -1,34 +1,15 @@ /* * @Description: - * @Autor: dong jun hua - * @Date: 2020-03-13 10:03:57 - * @LastEditors: dong jun hua - * @LastEditTime: 2020-08-14 16:30:05 + * @Autor: dongjunhua + * @Date: 2021-01-27 13:17:54 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-01-27 13:21:36 */ -import { sidebarRootMenu } from "@/settings"; const getters = { sidebar: state => state.app.sidebar, - size: state => state.app.size, - device: state => state.app.device, - visitedViews: state => state.tagsView.visitedViews, - cachedViews: state => state.tagsView.cachedViews, - token: state => state.user.token, - avatar: state => state.user.avatar, - name: state => state.user.name, - introduction: state => state.user.introduction, - roles: state => state.user.roles, - user: state => state.user.user, - accountId: state => state.user.accountId, - permissionRoutes: state => state.permission.routes, - menuTree: state => { - if (!sidebarRootMenu) { - if (state.user.menuTree.length === 1 && state.user.menuTree[0].children) { - return state.user.menuTree[0].children; - } - } - return state.user.menuTree; - }, - errorLogs: state => state.errorLog.logs + user: state => state.subject.user, + menuList: state => (state.subject.user ? state.subject.user.menuList : []) }; + export default getters; diff --git a/WebSite/src/store/index.js b/WebSite/src/store/index.js index cb6eb462c0afa7ea2338a5e38f344a9c0c335571..088dd367bc79b18a3434614944b4605820962897 100644 --- a/WebSite/src/store/index.js +++ b/WebSite/src/store/index.js @@ -1,25 +1,27 @@ -import Vue from "vue"; -import Vuex from "vuex"; -import getters from "./getters"; - -Vue.use(Vuex); +/* + * @Description: + * @Autor: dongjunhua + * @Date: 2020-12-17 10:20:47 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-01-27 13:26:54 + */ +import { createStore } from 'vuex'; +import getters from '@/store/getters'; // https://webpack.js.org/guides/dependency-management/#requirecontext -const modulesFiles = require.context("./modules", true, /\.js$/); +const modulesFiles = require.context('./modules', true, /\.js$/); // you do not need `import app from './modules/app'` // it will auto require all vuex module from modules file const modules = modulesFiles.keys().reduce((modules, modulePath) => { // set './app.js' => 'app' - const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, "$1"); + const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, '$1'); const value = modulesFiles(modulePath); modules[moduleName] = value.default; return modules; }, {}); -const store = new Vuex.Store({ +export default createStore({ modules, getters }); - -export default store; diff --git a/WebSite/src/store/modules/app.js b/WebSite/src/store/modules/app.js index 692dcadaf7f2cc7799fa84635c4d6be66bd4b8bb..05c224a591e819177a118611f3da527498bbbd33 100644 --- a/WebSite/src/store/modules/app.js +++ b/WebSite/src/store/modules/app.js @@ -1,52 +1,203 @@ -import Cookies from "js-cookie"; +/* + * @Description: + * @Autor: dongjunhua + * @Date: 2020-12-21 09:34:12 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-02-26 10:17:43 + */ +import App from '@/core/model/App'; +import TagView from '@/core/model/TagView'; +import Storage from '@/utils/Storage'; -const state = { - sidebar: { - opened: Cookies.get("sidebarStatus") - ? !!+Cookies.get("sidebarStatus") - : true, - withoutAnimation: false - }, - device: "desktop", - size: Cookies.get("size") || "medium" +import { + version, + coreVersion, + device, + dynamicLoginBg, + fixedHeader, + navigation, + navbar, + sidebar, + tagsView +} from '@/settings'; + +import { themeConfigs } from '@/settings/theme'; + +const getThemes = () => { + const activeTheme = + Storage.getLocal('app.theme') || + themeConfigs.find(s => s.default).name || + 'default'; + const themes = themeConfigs.map(t => { + return { + name: t.name, + className: t.className, + active: activeTheme === t.name + }; + }); + return themes; }; +const state = new App( + version, + coreVersion, + device, + dynamicLoginBg, + fixedHeader, + getThemes(), + { + enabled: navbar.enabled + }, + { + enabled: navigation.enabled + }, + { + enabled: sidebar.enabled, + showLogo: sidebar.showLogo, + opened: Storage.getSession('app.sidebar.opened') === false ? false : true, + withoutAnimation: true + }, + { + enabled: tagsView.enabled, + cachedViews: [] + } +); + const mutations = { + SET_DEVICE: (state, device) => { + state.device = device; + }, + CHANGE_THEME: (state, theme) => { + state.sidebar.withoutAnimation = false; + state.themes.forEach(t => { + t.active = t.name === theme; + }); + Storage.setLocal('app.theme', theme); + }, TOGGLE_SIDEBAR: state => { - state.sidebar.opened = !state.sidebar.opened; state.sidebar.withoutAnimation = false; - if (state.sidebar.opened) { - Cookies.set("sidebarStatus", 1); + state.sidebar.opened = !state.sidebar.opened; + Storage.setSession('app.sidebar.opened', state.sidebar.opened); + }, + CLOSE_SIDEBAR: (state, withoutAnimation = true) => { + state.sidebar.withoutAnimation = withoutAnimation; + state.sidebar.opened = false; + Storage.setSession('app.sidebar.opened', state.sidebar.opened); + }, + ADD_TAGVIEW: (state, view) => { + if (state.tagsView.cachedViews.length === 0) { + // try get views from sessionStorage + const sessionViews = Storage.getSession('app.tagsView.cachedViews'); + if (sessionViews && sessionViews.length > 0) { + sessionViews.forEach(v => + state.tagsView.cachedViews.push( + new TagView(v.id, v.name, v.path, v.icon, v.active, v.allowClose) + ) + ); + } + } + // console.log('add', view.name); + const index = state.tagsView.cachedViews.findIndex(v => v.id === view.id); + state.tagsView.cachedViews.forEach(v => (v.active = false)); + if (index < 0) { + state.tagsView.cachedViews.push(view); } else { - Cookies.set("sidebarStatus", 0); + state.tagsView.cachedViews[index].active = true; } + Storage.setSession('app.tagsView.cachedViews', state.tagsView.cachedViews); }, - CLOSE_SIDEBAR: (state, withoutAnimation) => { - Cookies.set("sidebarStatus", 0); - state.sidebar.opened = false; - state.sidebar.withoutAnimation = withoutAnimation; + DEL_TAGVIEW: (state, view) => { + // console.log('del', view.name); + const index = state.tagsView.cachedViews.findIndex(v => v.id === view.id); + if (index > -1) { + const [{ active }] = state.tagsView.cachedViews.splice(index, 1); + if (active) { + // if the view has been deleted is active, change the active view + if (index - 1 > -1) { + state.tagsView.cachedViews[index - 1].active = true; + } else if (index < state.tagsView.cachedViews.length) { + state.tagsView.cachedViews[index].active = true; + } + } + } + Storage.setSession('app.tagsView.cachedViews', state.tagsView.cachedViews); }, - TOGGLE_DEVICE: (state, device) => { - state.device = device; + CLEAR_TAGVIEW: state => { + state.tagsView.cachedViews = []; }, - SET_SIZE: (state, size) => { - state.size = size; - Cookies.set("size", size); + SET_LOADING: (state, loading) => { + state.loading = loading; } }; const actions = { - toggleSideBar({ commit }) { - commit("TOGGLE_SIDEBAR"); + /** + * @method toggleDevice + * @param {*} context + * @param {string} device + */ + setDevice: ({ commit }, device) => { + commit('SET_DEVICE', device); + }, + /** + * @method setTheme + * @param {*} context + * @param {string} theme + */ + setTheme: ({ commit }, theme) => { + commit('CHANGE_THEME', theme); + }, + /** + * @method toggleSideBar + * @param {*} context + */ + toggleSideBar: ({ commit }) => { + commit('TOGGLE_SIDEBAR'); + }, + /** + * @method closeSideBar + * @param {*} context + * @param {*} payload + */ + closeSideBar: ({ commit }, { withoutAnimation }) => { + commit('CLOSE_SIDEBAR', withoutAnimation); + }, + /** + * @method closeSideBar + * @param {*} context + * @param {TagView} view + */ + addTagView: ({ commit }, view) => { + commit('ADD_TAGVIEW', view); + }, + /** + * @method delTagView + * @param {*} context + * @param {TagView} view + */ + delTagView: ({ commit }, view) => { + commit('DEL_TAGVIEW', view); }, - closeSideBar({ commit }, { withoutAnimation }) { - commit("CLOSE_SIDEBAR", withoutAnimation); + /** + * @method clearTagView + * @param {*} context + */ + clearTagView: ({ commit }) => { + commit('CLEAR_TAGVIEW'); }, - toggleDevice({ commit }, device) { - commit("TOGGLE_DEVICE", device); + /** + * @method startLoading + * @param {*} context + */ + startLoading: ({ commit }) => { + commit('SET_LOADING', true); }, - setSize({ commit }, size) { - commit("SET_SIZE", size); + /** + * @method endLoading + * @param {*} context + */ + endLoading: ({ commit }) => { + commit('SET_LOADING', false); } }; diff --git a/WebSite/src/store/modules/errorLog.js b/WebSite/src/store/modules/errorLog.js deleted file mode 100644 index 72bdb4af500fede46b355ef1209f0ff1f9201686..0000000000000000000000000000000000000000 --- a/WebSite/src/store/modules/errorLog.js +++ /dev/null @@ -1,28 +0,0 @@ -const state = { - logs: [] -}; - -const mutations = { - ADD_ERROR_LOG: (state, log) => { - state.logs.push(log); - }, - CLEAR_ERROR_LOG: state => { - state.logs.splice(0); - } -}; - -const actions = { - addErrorLog({ commit }, log) { - commit("ADD_ERROR_LOG", log); - }, - clearErrorLog({ commit }) { - commit("CLEAR_ERROR_LOG"); - } -}; - -export default { - namespaced: true, - state, - mutations, - actions -}; diff --git a/WebSite/src/store/modules/permission.js b/WebSite/src/store/modules/permission.js deleted file mode 100644 index 025b302ae8ad379a2cd44ec9829ef87667dc5de8..0000000000000000000000000000000000000000 --- a/WebSite/src/store/modules/permission.js +++ /dev/null @@ -1,97 +0,0 @@ -/* - * @Description: - * @Autor: dong jun hua - * @Date: 2020-06-08 09:28:05 - * @LastEditors: dong jun hua - * @LastEditTime: 2020-07-10 13:48:29 - */ -import { deepClone } from "@/utils/index.js"; -import router, { - constantRoutes, - asyncRoutes, - layoutRoutes, - notFoundRoutes -} from "@/router"; - -const state = { - routes: [] -}; - -const mutations = { - SET_ROUTES: (state, routes) => { - state.routes = routes; - } -}; - -const component = () => import("@/views/outer"); - -function eachMenu(menuList, cb) { - menuList.forEach(m => { - cb(m); - m.children && m.children.length > 0 && eachMenu(m.children, cb); - }); -} - -function getDynamicRoutes(menuList) { - const dynamicRoutes = []; - const layoutRoute = deepClone(layoutRoutes[0]); - - eachMenu(menuList, m => { - if (m.routingUrl && !m.redirectUrl) { - const asyncRoute = asyncRoutes.find(r => r.path === m.routingUrl); - if (asyncRoute) { - const route = deepClone(asyncRoute); - // 璁剧疆meta - route.meta = { - icon: m.icon, - title: m.name - }; - // 绯荤粺鍐呴儴璺敱 - layoutRoute.children.push(route); - // 渚涘閮ㄨ皟鐢ㄧ殑璺敱 - const routeForOuter = deepClone(route); - routeForOuter.path = `/${routeForOuter.path}`; - routeForOuter.name = `${routeForOuter.name}ForOuter`; - dynamicRoutes.push(routeForOuter); - } - } - if (m.routingUrl && m.redirectUrl) { - const routeToOuter = { - path: m.routingUrl, - component, - name: `${m.id}ToOuter`, - meta: { - icon: m.icon, - title: m.name - } - }; - layoutRoute.children.push(routeToOuter); - } - }); - dynamicRoutes.push(layoutRoute); - return dynamicRoutes; -} - -const actions = { - /** - * 鏍规嵁褰撳墠鐢ㄦ埛鏉冮檺鍔ㄦ€佹坊鍔犺矾鐢� - */ - generateRoutes({ commit }, menuList) { - // - const dynamicRoutes = getDynamicRoutes(menuList); - router.addRoutes(dynamicRoutes); - router.addRoutes(notFoundRoutes); - commit("SET_ROUTES", [ - ...constantRoutes, - ...dynamicRoutes, - ...notFoundRoutes - ]); - } -}; - -export default { - namespaced: true, - state, - mutations, - actions -}; diff --git a/WebSite/src/store/modules/settings.js b/WebSite/src/store/modules/settings.js deleted file mode 100644 index c287845b8f3fbbd9f1ad638862961a71e153fe4b..0000000000000000000000000000000000000000 --- a/WebSite/src/store/modules/settings.js +++ /dev/null @@ -1,33 +0,0 @@ -import variables from "@/styles/element-variables.scss"; -import defaultSettings from "@/settings"; - -const { showSettings, tagsView, fixedHeader, sidebarLogo } = defaultSettings; - -const state = { - theme: variables.theme, - showSettings: showSettings, - tagsView: tagsView, - fixedHeader: fixedHeader, - sidebarLogo: sidebarLogo -}; - -const mutations = { - CHANGE_SETTING: (state, { key, value }) => { - if (state.hasOwnProperty(key)) { - state[key] = value; - } - } -}; - -const actions = { - changeSetting({ commit }, data) { - commit("CHANGE_SETTING", data); - } -}; - -export default { - namespaced: true, - state, - mutations, - actions -}; diff --git a/WebSite/src/store/modules/subject.js b/WebSite/src/store/modules/subject.js new file mode 100644 index 0000000000000000000000000000000000000000..3ba226f72364a4fb877f99f452d6795e32667bae --- /dev/null +++ b/WebSite/src/store/modules/subject.js @@ -0,0 +1,254 @@ +/* + * @Description: + * @Autor: dongjunhua + * @Date: 2020-12-21 11:37:15 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-02-22 13:56:26 + */ + +import Subject from '@/core/model/Subject'; +import AuthenticationToken from '@/core/model/AuthenticationToken'; +import AuthenticationInfo from '@/core/model/AuthenticationInfo'; +// import AuthorizationInfo from '@/core/model/AuthorizationInfo'; +import Api from '@/api' +import Realm from '@/core/base/Realm'; +import Storage from '@/utils/Storage'; +import { moduleRoutes } from '@/router'; +import { loginType, ssoAddress, loginValidDuration } from '@/settings'; +import router from '@/router'; +import { ElNotification } from 'element-plus'; +import path from '../path'; +const state = new Subject(loginType, ssoAddress); + +const mutations = { + SET_INITIALIZED: (state, initialized) => { + state.initialized = initialized; + }, + SET_SSO_ADDRESS: (state, ssoAddress) => { + state.ssoAddress = ssoAddress; + }, + SET_ACCOUNT: (state, account) => { + state.account = account; + }, + SET_USER: (state, user) => { + state.user = user; + }, + SET_IS_AUTHENTICATED: (state, isAuthenticated) => { + state.isAuthenticated = isAuthenticated; + }, + SET_IS_PERMITTED: (state, isPermitted) => { + state.isPermitted = isPermitted; + }, + SET_PERMITTED_ROUTES: (state, permittedRoutes) => { + state.permittedRoutes = permittedRoutes; + }, + SET_TOKEN: (state, token) => { + state.token = token; + }, + SET_YEAR: (state, year) => { + state.year = year; + }, +}; + +const afterStorageChange = () => { + const subject = Storage.getLocal('subject'); + if (!subject) { + router.go(0); + } +}; + +const permitRoutes = (menuList = []) => { + const permittedRoutes = []; + if (menuList.length === 0) { + return []; + } + const eachMenu = (menuList, callback) => { + menuList.forEach(m => { + callback(m); + m.children && m.children.length > 0 && eachMenu(m.children, callback); + }); + }; + eachMenu(menuList, m => { + if (!m.routingUrl) { + return; + } + const route = moduleRoutes.find(r => r.path === m.routingUrl); + route && permittedRoutes.push(route.path); + }); + return permittedRoutes; +}; + +const actions = { + /** + * @method login 韬唤璁よ瘉 + * @param {*} context + * @param {*} token + * @return {Promise} + */ + login: async ({ commit, state }, token) => { + try { + // token must be an AuthenticationToken instance when use default login mode + // 褰撲娇鐢ㄩ粯璁ょ櫥褰曟ā寮忔椂锛宼oken蹇呴』鏄竴涓狝uthenticationToken鐨勫疄渚� + // 褰撲娇鐢ㄥ崟鐐圭櫥褰曟ā寮忔椂锛宼oken搴旇鏄竴涓敱鍗曠偣鐧诲綍鏈嶅姟绔鍙戠殑浠ょ墝锛堟巿鏉冪爜锛� + if ( + state.loginType === 'default' && + token.constructor !== AuthenticationToken + ) { + throw new Error('Invalid Token'); + } + // get authentication info from realm + // 浠庡畨鍏ㄦ暟鎹簮鑾峰緱韬唤璁よ瘉淇℃伅 + const info = await Realm.doGetAuthenticationInfo(token); + if (info.constructor !== AuthenticationInfo) { + throw new Error('Invalid AuthenticationInfo'); + } + const res = await Api.getConfigYearByType('涓€涓�'); + window.sessionStorage.setItem('year', res.data[0].toString()); + commit('SET_YEAR', res.data[0].toString()); + commit('SET_INITIALIZED', false); + commit('SET_ACCOUNT', info.account); + commit('SET_IS_AUTHENTICATED', true); + Storage.setLocal('subject', state, info.expired || loginValidDuration); + // add storage listener + // 娣诲姞storage鐩戝惉鍣紝鐢ㄤ簬鍦ㄤ换鎰忔爣绛鹃〉浼氳瘽澶辨晥鏃惰Е鍙戝叾浣欐爣绛鹃〉鏇存柊 + Storage.addListener(afterStorageChange); + } catch (error) { + ElNotification({ + message: error, + type: 'error', + duration: 5 * 1000 + }); + } + }, + /** + * @method permit 鎺堟潈 + * @param {*} context + * @param {object} payload + * @return {Promise} + */ + permit: async ({ commit, state }, payload = {}) => { + try { + let { authorizationToken, afterPermitted } = payload; + typeof afterPermitted !== 'function' && + (afterPermitted = () => { + router.push('/i'); + }); + // const info = await Realm.doGetAuthorizationInfo(authorizationToken); + // if (info.constructor !== AuthorizationInfo) { + // throw new Error('Invalid AuthorizationInfo'); + // } + const menuList = path[authorizationToken]; + const info = { + user: { + id: '1', + available: 'YES', + versionDate: '2020-07-01 01:34:33.767', + updator: '1', + creator: '1', + remark: '', + name: state.account.username, + code: state.account.username, + userType: 'ADMIN', + mobilePhone: '15911111111', + email: 'test@seasky.com', + enabled: 'YES', + menuList + } + }; + const permittedRoutes = permitRoutes(info.user.menuList); + commit('SET_USER', info.user); + commit('SET_IS_PERMITTED', true); + commit('SET_PERMITTED_ROUTES', permittedRoutes); + commit('SET_TOKEN', info.token); + Storage.setLocal('subject', state); + // permit complete, do redirect or custom action + // 鎺堟潈瀹屾垚锛屾墽琛岄粯璁ょ殑璺宠浆鎴栦竴涓嚜瀹氫箟鐨勫洖璋� + afterPermitted(info.token); + } catch (err) { + console.error(err); + } + }, + /** + * @method checkPermission 鏍¢獙璺敱鏉冮檺 + * @param {*} context + * @param {object} payload + * @return {boolean} + */ + checkPermission: ({ state }, payload = {}) => { + let { path, whiteList = [] } = payload; + if (!path) { + return false; + } + if (whiteList.includes(path)) { + return true; + } + path.indexOf('/i/') === 0 && (path = path.replace(new RegExp('/i/'), '')); + path.indexOf('/') === 0 && (path = path.replace(new RegExp('/'), '')); + return state.permittedRoutes.includes(path); + }, + /** + * @method recovery 鎭㈠浼氳瘽 + * @param {*} context + */ + recovery: ({ commit }) => { + // get persistence data from storage + // 灏濊瘯浠巗torage涓仮澶嶅墠绔細璇� + const subject = Storage.getLocal('subject'); + commit('SET_INITIALIZED', false); + if (!subject) { + commit('SET_IS_AUTHENTICATED', false); + return; + } + commit('SET_ACCOUNT', subject.account); + commit('SET_IS_AUTHENTICATED', subject.isAuthenticated); + commit('SET_USER', subject.user); + commit('SET_IS_PERMITTED', subject.isPermitted); + commit('SET_PERMITTED_ROUTES', subject.permittedRoutes); + commit('SET_TOKEN', subject.token); + Storage.addListener(afterStorageChange); + }, + /** + * @method logout 娉ㄩ攢 + * @param {*} context + * @param {object} payload + * @return {Promise} + */ + logout: async ({ commit, dispatch, state }, payload = {}) => { + let { beforeLogout, ssoAddress, ssoLogout = false, query = {} } = payload; + // action before logout + typeof beforeLogout !== 'function' && (beforeLogout = Realm.beforeLogout); + const realmSsoAddress = await beforeLogout(); + // ssoAddress priority: option > relam > setting + realmSsoAddress && commit('SET_SSO_ADDRESS', realmSsoAddress); + ssoAddress && commit('SET_SSO_ADDRESS', ssoAddress); + // remove storage listener + Storage.removeListener(afterStorageChange); + // clear storage + Storage.delLocal('subject'); + Storage.delSession(); + // reset subject + commit('SET_ACCOUNT', {}); + commit('SET_IS_AUTHENTICATED', false); + commit('SET_USER', {}); + commit('SET_IS_PERMITTED', false); + commit('SET_PERMITTED_ROUTES', []); + // clear tagsView + dispatch('app/clearTagView', null, { root: true }); + // redirect + const redirect = + state.loginType === 'sso' && state.ssoAddress + ? { + path: '/auth-redirect', + query: { ssoAddress: state.ssoAddress, ssoLogout } + } + : { path: '/login', query }; + router.push(redirect); + } +}; + +export default { + namespaced: true, + state, + mutations, + actions +}; diff --git a/WebSite/src/store/modules/tagsView.js b/WebSite/src/store/modules/tagsView.js deleted file mode 100644 index 97bd2e75ca461f1d7ec8a005abb142c0780241cb..0000000000000000000000000000000000000000 --- a/WebSite/src/store/modules/tagsView.js +++ /dev/null @@ -1,160 +0,0 @@ -const state = { - visitedViews: [], - cachedViews: [] -}; - -const mutations = { - ADD_VISITED_VIEW: (state, view) => { - if (state.visitedViews.some(v => v.path === view.path)) return; - state.visitedViews.push( - Object.assign({}, view, { - title: view.meta.title || "no-name" - }) - ); - }, - ADD_CACHED_VIEW: (state, view) => { - if (state.cachedViews.includes(view.name)) return; - if (!view.meta.noCache) { - state.cachedViews.push(view.name); - } - }, - - DEL_VISITED_VIEW: (state, view) => { - for (const [i, v] of state.visitedViews.entries()) { - if (v.path === view.path) { - state.visitedViews.splice(i, 1); - break; - } - } - }, - DEL_CACHED_VIEW: (state, view) => { - const index = state.cachedViews.indexOf(view.name); - index > -1 && state.cachedViews.splice(index, 1); - }, - - DEL_OTHERS_VISITED_VIEWS: (state, view) => { - state.visitedViews = state.visitedViews.filter(v => { - return v.meta.affix || v.path === view.path; - }); - }, - DEL_OTHERS_CACHED_VIEWS: (state, view) => { - const index = state.cachedViews.indexOf(view.name); - if (index > -1) { - state.cachedViews = state.cachedViews.slice(index, index + 1); - } else { - // if index = -1, there is no cached tags - state.cachedViews = []; - } - }, - - DEL_ALL_VISITED_VIEWS: state => { - // keep affix tags - const affixTags = state.visitedViews.filter(tag => tag.meta.affix); - state.visitedViews = affixTags; - }, - DEL_ALL_CACHED_VIEWS: state => { - state.cachedViews = []; - }, - - UPDATE_VISITED_VIEW: (state, view) => { - for (let v of state.visitedViews) { - if (v.path === view.path) { - v = Object.assign(v, view); - break; - } - } - } -}; - -const actions = { - addView({ dispatch }, view) { - dispatch("addVisitedView", view); - dispatch("addCachedView", view); - }, - addVisitedView({ commit }, view) { - commit("ADD_VISITED_VIEW", view); - }, - addCachedView({ commit }, view) { - commit("ADD_CACHED_VIEW", view); - }, - - delView({ dispatch, state }, view) { - return new Promise(resolve => { - dispatch("delVisitedView", view); - dispatch("delCachedView", view); - resolve({ - visitedViews: [...state.visitedViews], - cachedViews: [...state.cachedViews] - }); - }); - }, - delVisitedView({ commit, state }, view) { - return new Promise(resolve => { - commit("DEL_VISITED_VIEW", view); - resolve([...state.visitedViews]); - }); - }, - delCachedView({ commit, state }, view) { - return new Promise(resolve => { - commit("DEL_CACHED_VIEW", view); - resolve([...state.cachedViews]); - }); - }, - - delOthersViews({ dispatch, state }, view) { - return new Promise(resolve => { - dispatch("delOthersVisitedViews", view); - dispatch("delOthersCachedViews", view); - resolve({ - visitedViews: [...state.visitedViews], - cachedViews: [...state.cachedViews] - }); - }); - }, - delOthersVisitedViews({ commit, state }, view) { - return new Promise(resolve => { - commit("DEL_OTHERS_VISITED_VIEWS", view); - resolve([...state.visitedViews]); - }); - }, - delOthersCachedViews({ commit, state }, view) { - return new Promise(resolve => { - commit("DEL_OTHERS_CACHED_VIEWS", view); - resolve([...state.cachedViews]); - }); - }, - - delAllViews({ dispatch, state }, view) { - return new Promise(resolve => { - dispatch("delAllVisitedViews", view); - dispatch("delAllCachedViews", view); - resolve({ - visitedViews: [...state.visitedViews], - cachedViews: [...state.cachedViews] - }); - }); - }, - delAllVisitedViews({ commit, state }) { - return new Promise(resolve => { - commit("DEL_ALL_VISITED_VIEWS"); - resolve([...state.visitedViews]); - }); - }, - delAllCachedViews({ commit, state }) { - return new Promise(resolve => { - commit("DEL_ALL_CACHED_VIEWS"); - resolve([...state.cachedViews]); - }); - }, - - updateVisitedView({ commit }, view) { - commit("UPDATE_VISITED_VIEW", view); - } -}; - -export default { - namespaced: true, - state, - mutations, - actions -}; diff --git a/WebSite/src/store/modules/user.js b/WebSite/src/store/modules/user.js deleted file mode 100644 index 0fcbaa28e3762a5004ee05aeb92cd831ac810e0a..0000000000000000000000000000000000000000 --- a/WebSite/src/store/modules/user.js +++ /dev/null @@ -1,142 +0,0 @@ -/* - * @Description: - * @Autor: dong jun hua - * @Date: 2020-03-13 10:03:58 - * @LastEditors: dong jun hua - * @LastEditTime: 2020-08-10 13:17:16 - */ -import { getToken, setToken, removeToken } from "@/utils/auth"; -import router, { resetRouter } from "@/router"; -import Account from "@/service/modules/account"; -import User from "@/service/modules/user"; -import { Message } from "element-ui"; -import { getConfig } from "@/utils/config"; - -const state = { - token: getToken(), - name: "", - avatar: "", - introduction: "", - roles: [], - menuTree: [], - user: null, - accountId: "", - userId: "" -}; - -const mutations = { - SET_TOKEN: (state, token) => { - state.token = token; - }, - SET_INTRODUCTION: (state, introduction) => { - state.introduction = introduction; - }, - SET_NAME: (state, name) => { - state.name = name; - }, - SET_AVATAR: (state, avatar) => { - state.avatar = avatar; - }, - SET_ROLES: (state, roles) => { - state.roles = roles; - }, - SET_MENUTREE: (state, menuTree) => { - state.menuTree = menuTree; - }, - SET_USER: (state, user) => { - state.user = user; - }, - SET_ACCOUNTID: (state, accountId) => { - state.accountId = accountId; - }, - SET_USERID: (state, userId) => { - state.userId = userId; - } -}; - -const actions = { - async login({ commit }, loginInfo) { - loginInfo.rememberMe = true; - const { recognizeId } = await getConfig(); - if (!recognizeId) { - Message.error("璇峰厛閰嶇疆搴旂敤璇嗗埆id"); - return Promise.reject(); - } - const resLogin = await Account.login({ recognizeId, ...loginInfo }); - const account = resLogin.data[0]; - const { id, users } = resLogin.data[0]; - if (!users || users.length === 0) { - Message.error("褰撳墠鐧诲綍璐﹀彿鏃犲彲閫夌敤鎴�"); - return Promise.reject(); - } - commit("SET_ACCOUNTID", id); - localStorage.setItem("accountId", id); - return account; - }, - - async setUser({ commit }, id) { - await User.setCurrent({ id }); - commit("SET_USERID", id); - commit("SET_TOKEN", id); - setToken(id); - }, - - async getInfo({ commit, dispatch }) { - const accountId = localStorage.getItem("accountId"); - commit("SET_ACCOUNTID", accountId); - - const res = await User.getCurrent(); - const { id, name } = res.data[0]; - const menuTree = res.data[0].menuList; - const roles = ["admin"]; - const avatar = - "https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif"; - const introduction = ""; - - const data = { roles, menuTree, id, name, avatar, introduction }; - - commit("SET_ROLES", roles); - commit("SET_MENUTREE", menuTree); - commit("SET_NAME", name); - commit("SET_AVATAR", avatar); - commit("SET_INTRODUCTION", introduction); - commit("SET_USER", res.data[0]); - commit("SET_USERID", id); - - dispatch("permission/generateRoutes", menuTree, { root: true }); - - return data; - }, - - // user logout - async logout({ dispatch }) { - await dispatch("resetCache"); - resetRouter(); - - // reset visited views and cached views - // to fixed https://github.com/PanJiaChen/vue-element-admin/issues/2485 - dispatch("tagsView/delAllViews", null, { root: true }); - }, - - // resst all cache - async resetCache({ commit }) { - commit("SET_ACCOUNTID", null); - commit("SET_TOKEN", null); - commit("SET_ROLES", null); - commit("SET_MENUTREE", null); - commit("SET_NAME", null); - commit("SET_AVATAR", null); - commit("SET_INTRODUCTION", null); - commit("SET_USER", null); - commit("SET_USERID", null); - localStorage.clear(); - removeToken(); - } -}; - -export default { - namespaced: true, - state, - mutations, - actions -}; diff --git a/WebSite/src/store/path.js b/WebSite/src/store/path.js new file mode 100644 index 0000000000000000000000000000000000000000..b1290a59ab2e0deccc68bb656e25dc9397b9a7c6 --- /dev/null +++ b/WebSite/src/store/path.js @@ -0,0 +1,1013 @@ +const ProjectRegistry = [ + { + id: '1', + available: 'YES', + versionDate: '2020-07-10 02:31:46.962', + creator: '1', + applicationId: '1', + menuNo: '0000', + name: '閮ㄩ棬棰勭畻椤圭洰搴�', + icon: 'fas fa-globe-asia', + parentId: '0', + routingUrl: '', + isNewWindow: 'NO', + isSystem: 'YES', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], + children: [ + { + id: '2', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_001', + name: '鏈儴闂ㄩ」鐩簱', + icon: 'fas fa-cube', + parentId: '1', + routingUrl: 'project-library/department', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], + children: [] + }, + { + id: '3', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_002', + name: '鏍″唴椤圭洰搴�', + icon: 'fas fa-feather-alt', + parentId: '1', + routingUrl: 'project-library/inSchool', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1'], + children: [] + } + ] + } +]; +const base = [ + { + id: '1', + available: 'YES', + versionDate: '2020-07-10 02:31:46.962', + creator: '1', + applicationId: '1', + menuNo: '0000', + name: '鍩虹璁剧疆', + icon: 'fas fa-globe-asia', + parentId: '0', + routingUrl: '', + isNewWindow: 'NO', + isSystem: 'YES', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], + children: [ + { + id: '2', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_002', + name: '鐢虫姤鎺у埗', + icon: 'fas fa-cube', + parentId: '1', + routingUrl: 'basicSetting/declarationControl', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], + children: [] + }, + { + id: '3', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_003', + name: '椤圭洰搴�', + icon: 'fas fa-feather-alt', + parentId: '1', + routingUrl: 'basicSetting/projectLibrary', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1'], + children: [] + }, + { + id: '4', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_004', + name: '缁忔祹绉戠洰璁剧疆', + icon: 'fas fa-feather-alt', + parentId: '1', + routingUrl: 'basicSetting/subjectsSetting', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1'], + children: [] + }, + { + id: '5', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_005', + name: '绉戠洰鎵╁睍琛ㄨ缃�', + icon: 'fas fa-feather-alt', + parentId: '1', + routingUrl: 'basicSetting/subjectExtension', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1'], + children: [] + }, + { + id: '6', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_006', + name: '璁惧绫诲瀷璁剧疆', + icon: 'fas fa-feather-alt', + parentId: '1', + routingUrl: 'basicSetting/equipmentType', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1'], + children: [] + }, + { + id: '7', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_007', + name: '淇℃伅鍖栫被鍨嬭缃�', + icon: 'fas fa-feather-alt', + parentId: '1', + routingUrl: 'basicSetting/informationType', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1'], + children: [] + }, + { + id: '8', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_008', + name: '浜哄憳缁忚垂璁剧疆', + icon: 'fas fa-feather-alt', + parentId: '1', + routingUrl: 'basicSetting/personnelExpenses', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1'], + children: [] + } + ] + } +]; + +const deptBZ = [ + { + id: '1', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_001', + name: '閮ㄩ棬棰勭畻缂栧埗涓€涓�', + icon: 'fas fa-cube', + parentId: '0', + routingUrl: '', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], + children: [ + { + id: '101', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_00101', + name: '閮ㄩ棬椤圭洰缁忚垂鐢虫姤', + icon: 'fas fa-cube', + parentId: '1', + routingUrl: 'dept/first/ProjectFundApply', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], + children: [] + }, + { + id: '102', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_00102', + name: '閮ㄩ棬鍏敤缁忚垂鐢虫姤', + icon: 'fas fa-cube', + parentId: '1', + routingUrl: 'dept/first/PuplicFundApply', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], + children: [] + }, + { + id: '103', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_00103', + name: '浜哄憳缁忚垂鐢虫姤', + icon: 'fas fa-cube', + parentId: '1', + routingUrl: 'dept/first/PeopleFundApply', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], + children: [] + }, + { + id: '104', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_00104', + name: '鏀跺叆鐢虫姤', + icon: 'fas fa-cube', + parentId: '1', + routingUrl: 'dept/first/IncomeApply', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], + children: [] + } + ] + }, + { + id: '2', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_002', + name: '閮ㄩ棬棰勭畻缂栧埗浜屼笂', + icon: 'fas fa-cube', + parentId: '0', + routingUrl: '', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], + children: [ + { + id: '201', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_00201', + name: '閮ㄩ棬椤圭洰缁忚垂鐢虫姤', + icon: 'fas fa-cube', + parentId: '2', + routingUrl: 'dept/second/ProjectFundApply', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], + children: [] + }, + { + id: '202', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_00202', + name: '閮ㄩ棬鍏敤缁忚垂鐢虫姤', + icon: 'fas fa-cube', + parentId: '2', + routingUrl: 'dept/second/PuplicFundApply', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], + children: [] + }, + { + id: '203', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_00203', + name: '浜哄憳缁忚垂鐢虫姤', + icon: 'fas fa-cube', + parentId: '2', + routingUrl: 'dept/second/PeopleFundApply', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], + children: [] + }, + { + id: '204', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_00204', + name: '鏀跺叆鐢虫姤', + icon: 'fas fa-cube', + parentId: '2', + routingUrl: 'dept/second/IncomeApply', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], + children: [] + } + ] + }, + { + id: '3', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_003', + name: '閮ㄩ棬棰勭畻缂栧埗鎵瑰', + icon: 'fas fa-cube', + parentId: '0', + routingUrl: '', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], + children: [ + { + id: '301', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_00301', + name: '閮ㄩ棬椤圭洰缁忚垂鏌ョ湅', + icon: 'fas fa-cube', + parentId: '3', + routingUrl: 'dept/find/ProjectFundApply', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], + children: [] + }, + { + id: '302', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_00302', + name: '閮ㄩ棬鍏敤缁忚垂鏌ョ湅', + icon: 'fas fa-cube', + parentId: '3', + routingUrl: 'dept/find/PuplicFundApply', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], + children: [] + }, + { + id: '303', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_00303', + name: '浜哄憳缁忚垂鏌ョ湅', + icon: 'fas fa-cube', + parentId: '3', + routingUrl: 'dept/find/PeopleFundApply', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], + children: [] + }, + { + id: '304', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_00304', + name: '鏀跺叆鏌ョ湅', + icon: 'fas fa-cube', + parentId: '3', + routingUrl: 'dept/find/IncomeApply', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], + children: [] + }, + { + id: '305', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_00305', + name: '褰掑彛閮ㄩ棬椤圭洰缁忚垂鏌ョ湅', + icon: 'fas fa-cube', + parentId: '3', + routingUrl: 'dept/find/BackDeptFund', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], + children: [] + } + ] + }, + { + id: '4', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_003', + name: '瀹氶', + icon: 'fas fa-cube', + parentId: '0', + routingUrl: '', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], + children: [ + { + id: '401', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_00301', + name: '涓嬭揪缁存寔鎬х粡璐�(閮ㄩ棬)', + icon: 'fas fa-cube', + parentId: '3', + routingUrl: 'dept/quota/dept', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], + children: [] + }, + { + id: '402', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_00302', + name: '涓嬭揪缁存寔鎬х粡璐�(椤圭洰)', + icon: 'fas fa-cube', + parentId: '3', + routingUrl: 'dept/quota/project', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], + children: [] + }, + { + id: '403', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_00303', + name: '涓嬭揪鏃ュ父杩愯缁忚垂', + icon: 'fas fa-cube', + parentId: '3', + routingUrl: 'dept/quota/daily', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], + children: [] + } + ] + } +]; +const deptSP = [ + { + id: '1', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_001', + name: '椤圭洰缁忚垂瀹℃壒', + icon: 'fas fa-cube', + parentId: '0', + routingUrl: '', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], + children: [ + { + id: '101', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_00101', + name: '閮ㄩ棬棰嗗瀹℃壒', + icon: 'fas fa-cube', + parentId: '1', + routingUrl: 'approval/project/LeaderApproval', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], + children: [] + }, + { + id: '102', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_00102', + name: '褰掑彛閮ㄩ棬瀹℃壒', + icon: 'fas fa-cube', + parentId: '1', + routingUrl: 'approval/project/BackDeptApproval', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], + children: [] + }, + { + id: '103', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_00103', + name: '鍒嗙鏍¢瀵煎鎵�', + icon: 'fas fa-cube', + parentId: '1', + routingUrl: 'approval/project/SchoolLeaderApproval', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], + children: [] + }, + { + id: '104', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_00104', + name: '璐㈠姟澶勫鎵�', + icon: 'fas fa-cube', + parentId: '1', + routingUrl: 'approval/project/FinanceApproval', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], + children: [] + } + ] + }, + { + id: '2', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_002', + name: '鍏敤缁忚垂瀹℃壒', + icon: 'fas fa-cube', + parentId: '0', + routingUrl: '', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], + children: [ + { + id: '201', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_00201', + name: '閮ㄩ棬棰嗗瀹℃壒', + icon: 'fas fa-cube', + parentId: '2', + routingUrl: 'approval/public/LeaderApproval', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], + children: [] + }, + { + id: '202', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_00202', + name: '鍒嗙鏍¢瀵煎鎵�', + icon: 'fas fa-cube', + parentId: '2', + routingUrl: 'approval/public/SchoolLeaderApproval', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], + children: [] + }, + { + id: '203', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_00203', + name: '璐㈠姟澶勫鎵�', + icon: 'fas fa-cube', + parentId: '2', + routingUrl: 'approval/public/FinanceApproval', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], + children: [] + } + ] + }, + { + id: '3', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_003', + name: '浜哄憳缁忚垂瀹℃壒', + icon: 'fas fa-cube', + parentId: '0', + routingUrl: '', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], + children: [ + { + id: '301', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_00301', + name: '浜轰簨澶勫鎵�', + icon: 'fas fa-cube', + parentId: '3', + routingUrl: 'approval/people/HrApproval', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], + children: [] + }, + { + id: '302', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_00302', + name: '璐㈠姟澶勫鎵�', + icon: 'fas fa-cube', + parentId: '3', + routingUrl: 'approval/people/FinanceApproval', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], + children: [] + } + ] + }, + { + id: '4', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_004', + name: '鏀跺叆瀹℃壒', + icon: 'fas fa-cube', + parentId: '0', + routingUrl: '', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], + children: [ + { + id: '401', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_00401', + name: '鏀跺叆瀹℃壒', + icon: 'fas fa-cube', + parentId: '4', + routingUrl: 'approval/income/IncomeApproval', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], + children: [] + } + ] + } +]; +const search = [ + { + id: '1', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_001', + name: '椤圭洰鏌ヨ', + icon: 'fas fa-cube', + parentId: '0', + routingUrl: 'search/ProjectSearch', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], + children: [] + } +]; + +const merits = [ + { + id: '1', + available: 'YES', + versionDate: '2020-07-10 05:53:01.597', + updator: '1', + creator: '1', + applicationId: '1', + menuNo: 'SBD_001', + name: '缁╂晥绠$悊', + icon: 'fas fa-cube', + parentId: '0', + routingUrl: 'merits/performance-library', + redirectUrl: '', + urlParameter: '', + isNewWindow: 'NO', + isSystem: 'NO', + withUserId: 'NO', + enabled: 'YES', + authUser: ['1', '2'], + children: [] + } +]; +export default { + ProjectRegistry, + deptBZ, + deptSP, + search, + base, + merits +}; diff --git a/WebSite/src/styles/common.scss b/WebSite/src/styles/common.scss new file mode 100644 index 0000000000000000000000000000000000000000..e23f20e6ae2f012228d7c92199ae2d4ce5006ccc --- /dev/null +++ b/WebSite/src/styles/common.scss @@ -0,0 +1,45 @@ +.mt-40 { + margin-top: 40px; +} +.mt-20 { + margin-top: 20px; +} +.mt-10 { + margin-top: 10px; +} +.ml-10{ + margin-left: 10px; +} +.flexItem{ + display: flex; + align-items: flex-start; +} +.aCenter{ + align-items: center !important; +} +.no-wrap { + overflow: hidden; + overflow-x: auto; + // text-overflow: ellipsis; //婧㈠嚭鐢ㄧ渷鐣ュ彿鏄剧ず + white-space: nowrap; //婧㈠嚭涓嶆崲琛� + scrollbar-width: none; // 鐏嫄 + -ms-overflow-style: none; // ie +} +.no-wrap::-webkit-scrollbar { + display: none; +} +.mb-20 { + margin-bottom: 20px; +} +.ta-l { + text-align: left; +} +.ta-c { + text-align: center; +} +.ta-r { + text-align: right; +} +.cp { + cursor: pointer; +} diff --git a/WebSite/src/styles/element-ui.scss b/WebSite/src/styles/element-ui.scss index 955d3cab2f758122540a434f93c34b44bb01b774..db0114a4976ba895d4529f5bba966f1703ebcd0c 100644 --- a/WebSite/src/styles/element-ui.scss +++ b/WebSite/src/styles/element-ui.scss @@ -6,11 +6,15 @@ } .el-upload { - input[type="file"] { + input[type='file'] { display: none !important; } } - +.el-date-editor.el-input, +.el-date-editor.el-input__inner, +.el-select { + width: 100%; +} .el-upload__input { display: none; } @@ -31,7 +35,7 @@ .fixed-width { .el-button--mini { padding: 7px 10px; - width: 60px; + min-width: 60px; } } @@ -69,7 +73,7 @@ // dropdown .el-dropdown-menu { a { - display: block + display: block; } } @@ -82,3 +86,27 @@ .el-range-separator { box-sizing: content-box; } + +// notification +.el-notification { + background-color: rgba(0, 0, 0, 0.6) !important; + border: 0 !important; + + .el-notification__title { + color: #fff !important; + } + + .el-notification__content { + color: #eee !important; + } + + .el-notification__closeBtn { + &:hover { + color: #ddd !important; + } + } +} + +.el-loading-mask { + // z-index: 3115; +} diff --git a/WebSite/src/styles/element-variables.scss b/WebSite/src/styles/element-variables.scss index 30a0e6bc7f2fa9f36a2d90bb48f40cf2abee1c19..5bdc4dadc42a88a16efc51d2911f18de8ae77373 100644 --- a/WebSite/src/styles/element-variables.scss +++ b/WebSite/src/styles/element-variables.scss @@ -6,7 +6,7 @@ /* theme color */ $--color-primary: #1890ff; $--color-success: #13ce66; -$--color-warning: #FFBA00; +$--color-warning: #ffba00; $--color-danger: #ff4949; // $--color-info: #1E1E1E; @@ -17,10 +17,10 @@ $--button-font-weight: 400; $--border-color-light: #dfe4ed; $--border-color-lighter: #e6ebf5; -$--table-border:1px solid#dfe6ec; +$--table-border: 1px solid #dfe6ec; /* icon font path, required */ -$--font-path: '~element-ui/lib/theme-chalk/fonts'; +$--font-path: "~element-ui/lib/theme-chalk/fonts"; @import "~element-ui/packages/theme-chalk/src/index"; diff --git a/WebSite/src/styles/index.scss b/WebSite/src/styles/index.scss index 96095ef6b3a52fca8dbbc65e59551594da02a477..c9ac6b9b9e76ee6db7c5b65ce407c52ae65ed3e3 100644 --- a/WebSite/src/styles/index.scss +++ b/WebSite/src/styles/index.scss @@ -4,6 +4,9 @@ @import './element-ui.scss'; @import './sidebar.scss'; @import './btn.scss'; +@import './mixin-theme.scss'; +@import './navbar.scss'; +@import './common.scss'; body { height: 100%; @@ -22,8 +25,9 @@ html { box-sizing: border-box; } -#app { +#app,#app-inner { height: 100%; + min-width: 1060px; } *, @@ -95,7 +99,9 @@ div:focus { height: 0; } } - +.mtop20{ + margin-top: 20px; +} aside { background: #eef1f6; padding: 8px 24px; @@ -121,7 +127,8 @@ aside { //main-container鍏ㄥ眬鏍峰紡 .app-container { - padding: 20px; + // padding: 20px; + position: relative; } .components-container { diff --git a/WebSite/src/styles/mixin-theme.scss b/WebSite/src/styles/mixin-theme.scss new file mode 100644 index 0000000000000000000000000000000000000000..efd5fea1b0a67917237d551395d21041a5f1134d --- /dev/null +++ b/WebSite/src/styles/mixin-theme.scss @@ -0,0 +1,179 @@ +@mixin theme( + // 涓婚鍚嶇О + $theme: default, + // 涓昏壊璋冿紙涓€绾ц彍鍗曡儗鏅壊锛岀櫥褰曠晫闈㈣儗鏅壊锛� + $menuBg: #303a4b, + // 涓€绾ц彍鍗曟偓鍋滄椂楂樹寒鑹� + $menuHover: #263445, + // 浜岀骇鑿滃崟鑳屾櫙鑹� + $subMenuBg: #1f2d3d, + // 浜岀骇鑿滃崟鎮仠鏃堕珮浜壊 + $subMenuHover: #001528, + // 鑿滃崟鏂囧瓧棰滆壊 + $menuText: #bfcbd9, + // 鑿滃崟婵€娲绘椂鏂囧瓧棰滆壊 + $menuActiveText: #508aff, + // 鑿滃崟婵€娲绘椂鐖剁骇鏂囧瓧棰滆壊 + $subMenuActiveText: #f4f4f5, + // 婵€娲绘爣蹇楅鑹� + $activeColor: #508aff +) { + // loginPage + .login-container { + background-color: $menuBg !important; + + .login-form { + color: $subMenuActiveText !important; + } + + .el-input { + input { + color: $subMenuActiveText !important; + caret-color: $subMenuActiveText !important; + } + } + + @if ($theme==light) { + .selection-container { + .selection { + &:hover { + background: rgba(55, 55, 55, 0.3) !important; + } + } + } + } + } + .el-menu-item { + color: $menuText !important; + background-color: $subMenuBg !important; + border-left: 0 solid $activeColor !important; + + &:hover { + background-color: $subMenuHover !important; + } + } + // siderbar && navbar + .sidebar-container, + .navbar-container { + background-color: $menuBg !important; + + .submenu-title-noDropdown, + .el-submenu__title { + color: $menuText !important; + background-color: $menuBg !important; + &:hover { + background-color: $menuHover !important; + } + } + + & .nest-menu .el-submenu > .el-submenu__title, + & .el-submenu .el-menu-item { + color: $menuText !important; + background-color: $subMenuBg !important; + border-left: 0 solid $activeColor !important; + + &:hover { + background-color: $subMenuHover !important; + } + } + + .is-active > .el-submenu__title { + color: $subMenuActiveText !important; + } + + .is-active.el-menu-item { + color: $menuActiveText !important; + border-left: 5px solid $activeColor !important; + } + } + + .sidebar-container { + @if ($theme==light) { + border-right: 1px solid #d8dce5 !important; + } + } + + .navbar-container { + @if ($theme==light) { + border-bottom: 1px solid #d8dce5 !important; + } + } + + // tagsView + .tags-view-container { + .tags-view-item { + &::before { + background-color: $activeColor !important; + } + } + } + + // popMenu + .el-menu--vertical, + .el-menu--horizontal { + .el-menu { + background-color: $subMenuBg !important; + } + + .nest-menu .el-submenu > .el-submenu__title, + .el-menu-item { + color: $menuText !important; + background-color: $subMenuBg !important; + + &:hover { + background-color: $subMenuHover !important; + } + } + + .is-active.el-menu-item { + color: $menuActiveText !important; + } + } +} + +/* theme: default */ +.default, +.default ~ .el-popper { + @include theme(); +} +.default.theme-selection { + background-color: rgba(48, 65, 86, 0.6); +} + +/* theme: light */ +.light, +.light ~ .el-popper { + @include theme( + light, + #fafafa, + #e6e6e6, + #f0f0f0, + #e1e1e1, + #707276, + #508aff, + #495060, + #508aff + ); +} +.light.theme-selection { + background-color: rgba(230, 230, 230, 1); +} + +/* theme: dark */ +.dark, +.dark ~ .el-popper { + @include theme( + dark, + #292732, + #53525a, + #3d3b46, + #5b5a62, + #bfcbd9, + #508aff, + #f4f4f5, + #508aff + ); +} +.dark.theme-selection { + background-color: rgba(41, 39, 50, 0.7); +} diff --git a/WebSite/src/styles/navbar.scss b/WebSite/src/styles/navbar.scss new file mode 100644 index 0000000000000000000000000000000000000000..dd3e74acc95abb3f623f044b8b4743fbc066ed02 --- /dev/null +++ b/WebSite/src/styles/navbar.scss @@ -0,0 +1,41 @@ +#app { + .main-container { + .navbar-container { + height: 56px; + width: 100%; + transition: background-color 0.28s; + + .el-scrollbar__wrap { + height: 73px !important; + overflow-y: hidden !important; + } + + .el-menu { + display: flex !important; + background-color: transparent !important; + border-bottom: 0; + + .el-submenu__title { + padding: 0 40px 0 18px !important; + + .svg-icon { + margin-left: 0 !important; + } + + .el-submenu__icon-arrow { + right: 12px !important; + display: block !important; + } + } + } + } + } +} + +.el-menu--horizontal { + .el-menu-item { + height: 56px !important; + padding: 0 20px !important; + line-height: 56px !important; + } +} diff --git a/WebSite/src/styles/reset.scss b/WebSite/src/styles/reset.scss deleted file mode 100644 index b796962d60fa905f42fa758f399f731d7fe4864f..0000000000000000000000000000000000000000 --- a/WebSite/src/styles/reset.scss +++ /dev/null @@ -1,67 +0,0 @@ -.mtNone { - .el-card__body { - padding-top: 0; - } -} -.tright { - text-align: right; -} -.filter-tree { - .custom-tree-node { - flex: 1; - display: flex; - align-items: center; - justify-content: space-between; - font-size: 14px; - padding-right: 8px; - } -} -.mt20 { - margin-top: 20px; -} -.btop { - border-top: 3px solid #3c8dbc; -} -.pd10 { - .el-card__body { - padding: 10px; - } -} -.pnone { - .el-card__body { - padding-top: 0; - } - .el-collapse-item__wrap { - border: none; - } -} - -.overAuto { - overflow: inherit; -} -/* 婊氬姩鏉$編鍖� */ -::-webkit-scrollbar { - width: 5px; - height: 5px; -} -/*澶栧眰杞ㄩ亾銆傚彲浠ョ敤display:none璁╁叾涓嶆樉绀猴紝涔熷彲浠ユ坊鍔犺儗鏅浘鐗囷紝棰滆壊鏀瑰彉鏄剧ず鏁堟灉*/ -::-webkit-scrollbar-track { - width: 6px; - background-color: #fff; - -webkit-border-radius: 2em; - -moz-border-radius: 2em; - border-radius: 2em; -} -/*婊氬姩鏉$殑璁剧疆*/ -::-webkit-scrollbar-thumb { - background-color: #409eff; - background-clip: padding-box; - min-height: 28px; - -webkit-border-radius: 2em; - -moz-border-radius: 2em; - border-radius: 2em; -} -/*婊氬姩鏉$Щ涓婂幓鐨勮儗鏅�*/ -::-webkit-scrollbar-thumb:hover { - background-color: #409eff; -} diff --git a/WebSite/src/styles/sidebar.scss b/WebSite/src/styles/sidebar.scss index 3dad4c39a192679c99221ee98498a4452897253a..2b6ba0ebe2c8e7dd6c73aec4263a7433965c6bcb 100644 --- a/WebSite/src/styles/sidebar.scss +++ b/WebSite/src/styles/sidebar.scss @@ -5,10 +5,13 @@ transition: margin-left .28s; margin-left: $sideBarWidth; position: relative; + display: flex; + flex-direction: column; } .sidebar-container { - transition: width 0.28s; + transition-property: width,background-color; + transition-duration: 0.28s; width: $sideBarWidth !important; background-color: $menuBg; height: 100%; @@ -27,6 +30,17 @@ .scrollbar-wrapper { overflow-x: hidden !important; + + // fixd on 1.0.2-beta.31 + // scrollbar-width: none will be set on firefox, maybe a bug + // this may cause the display problem on sidebar menu + // set auto to fix + // scrollbar-width: auto !important; + + // fixd on 1.0.2-beta.31 + // margin will lose on m1 mac, maybe a bug + // force set margin + // margin: 0 -17px -17px 0 !important; } .el-scrollbar__bar.is-vertical { @@ -57,32 +71,24 @@ margin-right: 16px; } + .sub-el-icon { + margin-right: 12px; + margin-left: -2px; + } + .el-menu { border: none; height: 100%; width: 100% !important; } - // menu hover - .submenu-title-noDropdown, - .el-submenu__title { - &:hover { - background-color: $menuHover !important; - } - } - - .is-active>.el-submenu__title { - color: $subMenuActiveText !important; - } - & .nest-menu .el-submenu>.el-submenu__title, & .el-submenu .el-menu-item { min-width: $sideBarWidth !important; - background-color: $subMenuBg !important; + } - &:hover { - background-color: $subMenuHover !important; - } + .el-menu-item{ + transition: all 0.18s; } } @@ -105,6 +111,10 @@ .svg-icon { margin-left: 20px; } + + .sub-el-icon { + margin-left: 19px; + } } } @@ -118,6 +128,10 @@ margin-left: 20px; } + .sub-el-icon { + margin-left: 19px; + } + .el-submenu__icon-arrow { display: none; } @@ -178,16 +192,20 @@ .svg-icon { margin-right: 16px; } - } - - .nest-menu .el-submenu>.el-submenu__title, - .el-menu-item { - &:hover { - // you can use $subMenuHover - background-color: $menuHover !important; + .sub-el-icon { + margin-right: 12px; + margin-left: -2px; } } + // .nest-menu .el-submenu>.el-submenu__title, + // .el-menu-item { + // &:hover { + // // you can use $subMenuHover + // background-color: $menuHover !important; + // } + // } + // the scroll bar appears when the subMenu is too long >.el-menu--popup { max-height: 100vh; diff --git a/WebSite/src/styles/transition.scss b/WebSite/src/styles/transition.scss index 4cb27cc811e28605bb6d0657a6257f0c901f6809..50dab1a6ebe6f99debb90a60773587b9f5c251f2 100644 --- a/WebSite/src/styles/transition.scss +++ b/WebSite/src/styles/transition.scss @@ -1,46 +1,101 @@ // global transition css +// !! there are only six classes can be used in Vue.js 3.x +// v-enter-active,v-enter-from,v-enter-to +// v-leave-active,v-leave-from,v-leave-to +// see detail: https://v3.vuejs.org/guide/transitions-enterleave.html#transition-classes /* fade */ -.fade-enter-active, -.fade-leave-active { +.fade-leave-active, +.fade-enter-active { transition: opacity 0.28s; } -.fade-enter, -.fade-leave-active { +.fade-enter-from, +.fade-leave-to { opacity: 0; } /* fade-transform */ -.fade-transform-leave-active, -.fade-transform-enter-active { - transition: all .5s; +.fade-transform-s-leave-active, +.fade-transform-s-enter-active { + transition: all 0.18s; } -.fade-transform-enter { +.fade-transform-s-enter-from, +.fade-transform-s-leave-to { opacity: 0; - transform: translateX(-30px); + transform: translateX(20px); +} + +.fade-transform-leave-active, +.fade-transform-enter-active { + transition: all 0.5s; } +.fade-transform-enter-from, .fade-transform-leave-to { opacity: 0; transform: translateX(30px); } +.fade-transform-bottom-s-leave-active, +.fade-transform-bottom-s-enter-active { + transition: all 0.18s; +} + +.fade-transform-bottom-s-enter-from, +.fade-transform-bottom-s-leave-to { + opacity: 0; + transform: translateY(20px); +} + +.fade-transform-bottom-leave-active, +.fade-transform-bottom-enter-active { + transition: all 0.5s; +} + +.fade-transform-bottom-enter-from, +.fade-transform-bottom-leave-to { + opacity: 0; + transform: translateY(30px); +} + +.fade-transform-top-s-leave-active, +.fade-transform-top-s-enter-active { + transition: all 0.18s; +} + +.fade-transform-top-s-enter-from, +.fade-transform-top-s-leave-to { + opacity: 0; + transform: translateY(-20px); +} + +.fade-transform-top-leave-active, +.fade-transform-top-enter-active { + transition: all 0.5s; +} + +.fade-transform-top-enter-from, +.fade-transform-top-leave-to { + opacity: 0; + transform: translateY(-30px); +} + /* breadcrumb transition */ .breadcrumb-enter-active, .breadcrumb-leave-active { - transition: all .5s; + transition: all 0.5s; } -.breadcrumb-enter, -.breadcrumb-leave-active { +.breadcrumb-enter-from, +.breadcrumb-leave-to { opacity: 0; transform: translateX(20px); } .breadcrumb-move { - transition: all .5s; + transition: all 0.5s; } .breadcrumb-leave-active { diff --git a/WebSite/src/styles/variables.scss b/WebSite/src/styles/variables.scss index a19c27c1453d5e5f5666b3274836daba54e16acf..a2f3b190b33ae6ac50f8f97a5290aedcafbbc0c1 100644 --- a/WebSite/src/styles/variables.scss +++ b/WebSite/src/styles/variables.scss @@ -1,17 +1,17 @@ // base color -$blue:#324157; -$light-blue:#3A71A8; -$red:#C03639; -$pink: #E65D6E; -$green: #30B08F; -$tiffany: #4AB7BD; -$yellow:#FEC171; -$panGreen: #30B08F; +$blue: #324157; +$light-blue: #3a71a8; +$red: #c03639; +$pink: #e65d6e; +$green: #30b08f; +$tiffany: #4ab7bd; +$yellow: #fec171; +$panGreen: #30b08f; // sidebar -$menuText:#bfcbd9; -$menuActiveText:#409EFF; -$subMenuActiveText:#f4f4f5; // https://github.com/ElemeFE/element/issues/12951 +$menuText: #bfcbd9; +$menuActiveText: #409eff; +$subMenuActiveText: #f4f4f5; // https://github.com/ElemeFE/element/issues/12951 $menuBg:#304156; $menuHover:#263445; diff --git a/WebSite/src/utils/Common.js b/WebSite/src/utils/Common.js new file mode 100644 index 0000000000000000000000000000000000000000..c0cd7d5f9165bd0d0ab5e870c649252827b1c2d6 --- /dev/null +++ b/WebSite/src/utils/Common.js @@ -0,0 +1,26 @@ +/* + * @Description: + * @Autor: dongjunhua + * @Date: 2021-01-20 09:34:35 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-01-20 11:17:54 + */ + +class Common { + static deepClone(source) { + if (!source && typeof source !== 'object') { + throw new Error('error arguments', 'deepClone'); + } + const targetObj = source.constructor === Array ? [] : {}; + Object.keys(source).forEach(keys => { + if (source[keys] && typeof source[keys] === 'object') { + targetObj[keys] = this.deepClone(source[keys]); + } else { + targetObj[keys] = source[keys]; + } + }); + return targetObj; + } +} + +export default Common; diff --git a/WebSite/src/utils/Storage.js b/WebSite/src/utils/Storage.js new file mode 100644 index 0000000000000000000000000000000000000000..a6f6bf3768d401acd387ac9639cd5352b148c080 --- /dev/null +++ b/WebSite/src/utils/Storage.js @@ -0,0 +1,233 @@ +/* + * @Description: + * @Autor: dongjunhua + * @Date: 2020-12-21 09:37:43 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-02-11 13:50:03 + */ + +import CryptoJS from 'crypto-js'; +import { recognizeId, storageEncrypt } from '@/settings'; + +/** + * storage util + * @class Storage + */ +class Storage { + /** + * @internal + * @method _getFullKey + * @for Storage + * @param {string} key + * @return {*} + */ + static _getFullKey(key) { + if (typeof key !== 'string' || !key) { + return false; + } + return `${this.recognizeId}:${key}`; + } + + /** + * @todo + * @internal + * @method _encrypt + * @for Storage + * @param {string} value + * @return {string} + */ + static _encrypt(value) { + if (!this.encrypt) { + return value; + } + const encryptedValue = CryptoJS.AES.encrypt(value, recognizeId).toString(); + return encryptedValue; + } + + /** + * @internal + * @method _decrypt + * @for Storage + * @param {string} value + * @return {string} + */ + static _decrypt(encryptedValue) { + if (!this.encrypt) { + return encryptedValue; + } + const value = CryptoJS.AES.decrypt(encryptedValue, recognizeId).toString( + CryptoJS.enc.Utf8 + ); + return value; + } + + /** + * @internal + * @method _setStorage + * @for Storage + * @param {string} type + * @param {string} key + * @param {*} value + * @param {number} expired + */ + static _setStorage(type, key, value, expired = 0) { + if (!['localStorage', 'sessionStorage'].includes(type)) { + return; + } + const fullKey = this._getFullKey(key); + if (!fullKey) { + return; + } + if (!value && value !== 0 && value !== false) { + return; + } + const valueObj = { + value + }; + if (expired) { + valueObj.expiredTime = Date.now() + expired; + } else { + const exists = window[type].getItem(fullKey); + if (exists) { + const existsObj = JSON.parse(this._decrypt(exists)); + const { expiredTime } = existsObj; + expiredTime && (valueObj.expiredTime = expiredTime); + } + } + const storageValue = this._encrypt(JSON.stringify(valueObj)); + window[type].setItem(fullKey, storageValue); + } + + /** + * @method _getStorage + * @for Storage + * @param {string} type + * @param {string} key + * @return {*} + */ + static _getStorage(type, key) { + if (!['localStorage', 'sessionStorage'].includes(type)) { + return; + } + const fullKey = this._getFullKey(key); + if (!fullKey) { + return null; + } + const exists = window[type].getItem(fullKey); + if (!exists) { + return null; + } + const existsObj = JSON.parse(this._decrypt(exists)); + const { value, expiredTime } = existsObj; + if (expiredTime && expiredTime < Date.now()) { + this.delLocal(key); + return null; + } + return value; + } + + /** + * @method _delStorage + * @for Storage + * @param {string} type + * @param {string} key + */ + static _delStorage(type, key) { + if (!['localStorage', 'sessionStorage'].includes(type)) { + return; + } + const fullKey = this._getFullKey(key); + if (fullKey) { + window[type].removeItem(fullKey); + } else { + window[type].clear(); + } + } + + /** + * @method addListener + * @for Storage + * @param {function} callback + */ + static addListener(callback) { + if (typeof callback === 'function') { + window.addEventListener('storage', callback); + } + } + + /** + * @method removeListener + * @for Storage + * @param {function} callback + */ + static removeListener(callback) { + if (typeof callback === 'function') { + window.removeEventListener('storage', callback); + } + } + + /** + * @method setLocal + * @for Storage + * @param {string} key + * @param {*} value + * @param {number} expired + */ + static setLocal(key, value, expired = 0) { + this._setStorage('localStorage', key, value, expired); + } + + /** + * @method getLocal + * @for Storage + * @param {string} key + * @return {*} + */ + static getLocal(key) { + return this._getStorage('localStorage', key); + } + + /** + * @method delLocal + * @for Storage + * @param {string} key + */ + static delLocal(key) { + this._delStorage('localStorage', key); + } + + /** + * @method setSession + * @for Storage + * @param {string} key + * @param {*} value + * @param {number} expired + */ + static setSession(key, value, expired = 0) { + this._setStorage('sessionStorage', key, value, expired); + } + + /** + * @method getSession + * @for Storage + * @param {string} key + * @return {*} + */ + static getSession(key) { + return this._getStorage('sessionStorage', key); + } + + /** + * @method delSession + * @for Storage + * @param {string} key + */ + static delSession(key) { + this._delStorage('sessionStorage', key); + } +} + +Storage.recognizeId = recognizeId || 'default'; +Storage.encrypt = storageEncrypt && true; + +export default Storage; diff --git a/WebSite/src/utils/auth.js b/WebSite/src/utils/auth.js deleted file mode 100644 index ba92eea2e34c95436103ea4bb2b6f80d4f2eab45..0000000000000000000000000000000000000000 --- a/WebSite/src/utils/auth.js +++ /dev/null @@ -1,34 +0,0 @@ -/* - * @Description: - * @Autor: dong jun hua - * @Date: 2020-03-13 10:03:58 - * @LastEditors: dong jun hua - * @LastEditTime: 2020-04-21 09:25:25 - */ -import Cookies from "js-cookie"; - -const TokenKey = "Admin-Token"; - -export function getToken() { - return Cookies.get(TokenKey); -} - -export function setToken(token) { - return Cookies.set(TokenKey, token); -} - -export function removeToken() { - return Cookies.remove(TokenKey); -} - -export function getStorage(key) { - return JSON.parse(localStorage.getItem(key)); -} - -export function setStorage(key, value) { - return localStorage.setItem(key, JSON.stringify(value)); -} - -export function removeStorage(key) { - return localStorage.removeItem(key); -} diff --git a/WebSite/src/utils/clipboard.js b/WebSite/src/utils/clipboard.js index a44307c62f6602d5394c9520eefdf2dee5b635d5..cc22b5ca1ff62a00121d08f18748af51b71d8116 100644 --- a/WebSite/src/utils/clipboard.js +++ b/WebSite/src/utils/clipboard.js @@ -1,18 +1,25 @@ -import Vue from "vue"; -import Clipboard from "clipboard"; +/* + * @Description: + * @Autor: dongjunhua + * @Date: 2020-12-18 10:12:27 + * @LastEditors: dongjunhua + * @LastEditTime: 2020-12-18 10:12:34 + */ +import Vue from 'vue'; +import Clipboard from 'clipboard'; function clipboardSuccess() { Vue.prototype.$message({ - message: "Copy successfully", - type: "success", + message: 'Copy successfully', + type: 'success', duration: 1500 }); } function clipboardError() { Vue.prototype.$message({ - message: "Copy failed", - type: "error" + message: 'Copy failed', + type: 'error' }); } @@ -20,11 +27,11 @@ export default function handleClipboard(text, event) { const clipboard = new Clipboard(event.target, { text: () => text }); - clipboard.on("success", () => { + clipboard.on('success', () => { clipboardSuccess(); clipboard.destroy(); }); - clipboard.on("error", () => { + clipboard.on('error', () => { clipboardError(); clipboard.destroy(); }); diff --git a/WebSite/src/utils/config.js b/WebSite/src/utils/config.js deleted file mode 100644 index 720d3006593c9ad4763c575031bface847dbb9a5..0000000000000000000000000000000000000000 --- a/WebSite/src/utils/config.js +++ /dev/null @@ -1,21 +0,0 @@ -/* - * @Description: - * @Autor: dong jun hua - * @Date: 2020-07-14 10:47:00 - * @LastEditors: dong jun hua - * @LastEditTime: 2020-08-10 08:49:59 - */ - -import axios from "axios"; - -async function getConfig() { - try { - const res = await axios.get("./config.json"); - return res.data; - } catch (err) { - console.log(`no config: ${err}`); - return null; - } -} - -export { getConfig }; diff --git a/WebSite/src/utils/directives.js b/WebSite/src/utils/directives.js new file mode 100644 index 0000000000000000000000000000000000000000..1a974b27511b7ca9f97fb0cc7e4c58bc2089cf4f --- /dev/null +++ b/WebSite/src/utils/directives.js @@ -0,0 +1,29 @@ +export default { + /** + * el-select瑙﹀簳銆佽Е椤跺姞杞� + * 榛樿瑙﹀簳锛屼紶鍏op鍙傛暟瑙﹂《 v-loadmore:top="" + */ + loadmore: { + beforeMount(el, binding) { + const drop_down_dom_id = el + .querySelector('.select-trigger') + .getAttribute('ariadescribedby'); + const drop_down_dom = document.querySelector(`#${drop_down_dom_id}`); + const SELECTWRAP_DOM = drop_down_dom.querySelector( + '.el-select-dropdown__wrap.el-scrollbar__wrap' + ); + SELECTWRAP_DOM.addEventListener('scroll', () => { + const down = + SELECTWRAP_DOM.scrollHeight - SELECTWRAP_DOM.scrollTop - 1 <= + SELECTWRAP_DOM.clientHeight; + const up = SELECTWRAP_DOM.scrollTop <= 0; + if (down) { + binding.value('down'); + } + if (up && binding.arg === 'top') { + binding.value('up'); + } + }); + } + } +}; diff --git a/WebSite/src/utils/enum.js b/WebSite/src/utils/enum.js deleted file mode 100644 index 529a002e8fd68fc46912b2054a4397634bff0ce1..0000000000000000000000000000000000000000 --- a/WebSite/src/utils/enum.js +++ /dev/null @@ -1,19 +0,0 @@ -/* - * @Description: - * @Autor: dong jun hua - * @Date: 2020-06-17 15:42:24 - * @LastEditors: dong jun hua - * @LastEditTime: 2020-06-17 16:12:16 - */ -export const EnableInfo = { - YES: "绂佺敤", - NO: "鍚敤" -}; - -export const UserType = { - ADMIN: "绠$悊鍛�", - TEACHER: "鏁欏伐", - STUDENT: "瀛︾敓", - EXTERNAL: "澶栬仒", - OTHER: "鍏朵粬" -}; diff --git a/WebSite/src/utils/error-log.js b/WebSite/src/utils/error-log.js deleted file mode 100644 index c1f5614b1149613d64597b8924ff36a463e24f02..0000000000000000000000000000000000000000 --- a/WebSite/src/utils/error-log.js +++ /dev/null @@ -1,35 +0,0 @@ -import Vue from "vue"; -import store from "@/store"; -import { isString, isArray } from "@/utils/validate"; -import settings from "@/settings"; - -// you can set in settings.js -// errorLog:'production' | ['production', 'development'] -const { errorLog: needErrorLog } = settings; - -function checkNeed() { - const env = process.env.NODE_ENV; - if (isString(needErrorLog)) { - return env === needErrorLog; - } - if (isArray(needErrorLog)) { - return needErrorLog.includes(env); - } - return false; -} - -if (checkNeed()) { - Vue.config.errorHandler = function(err, vm, info, a) { - // Don't ask me why I use Vue.nextTick, it just a hack. - // detail see https://forum.vuejs.org/t/dispatch-in-vue-config-errorhandler-has-some-problem/23500 - Vue.nextTick(() => { - store.dispatch("errorLog/addErrorLog", { - err, - vm, - info, - url: window.location.href - }); - console.error(err, info); - }); - }; -} diff --git a/WebSite/src/utils/get-page-title.js b/WebSite/src/utils/get-page-title.js deleted file mode 100644 index 119d994d14c194d15ecf04da4f1bc4c4f42bd6fd..0000000000000000000000000000000000000000 --- a/WebSite/src/utils/get-page-title.js +++ /dev/null @@ -1,10 +0,0 @@ -import defaultSettings from "@/settings"; - -const title = defaultSettings.title || "Vue Element Admin"; - -export default function getPageTitle(pageTitle) { - if (pageTitle) { - return `${pageTitle} - ${title}`; - } - return `${title}`; -} diff --git a/WebSite/src/utils/index.js b/WebSite/src/utils/index.js index 27dcdf341c2874115767743afc7c8945e0e0a5cd..430ee510db3752db334f1b0e795affb1f8ba4994 100644 --- a/WebSite/src/utils/index.js +++ b/WebSite/src/utils/index.js @@ -1,362 +1,411 @@ /** - * Created by PanJiaChen on 16/11/18. + * 鍒ゆ柇绌哄璞★紝鏁扮粍锛屽瓧绗︿覆锛寀ndefined锛宯ull + * @param {*} obj */ - -/** - * Parse the time to string - * @param {(Object|string|number)} time - * @param {string} cFormat - * @returns {string | null} - */ -export function parseTime(time, cFormat) { - if (arguments.length === 0) { - return null; - } - const format = cFormat || "{y}-{m}-{d} {h}:{i}:{s}"; - let date; - if (typeof time === "object") { - date = time; - } else { - if (typeof time === "string" && /^[0-9]+$/.test(time)) { - time = parseInt(time); - } - if (typeof time === "number" && time.toString().length === 10) { - time = time * 1000; - } - date = new Date(time); + export function isEmpty(obj) { + if ( + typeof obj == 'undefined' || + (!obj && typeof obj != 'undefined' && obj != 0) || + obj == null + ) { + return true; } - const formatObj = { - y: date.getFullYear(), - m: date.getMonth() + 1, - d: date.getDate(), - h: date.getHours(), - i: date.getMinutes(), - s: date.getSeconds(), - a: date.getDay() - }; - const time_str = format.replace(/{([ymdhisa])+}/g, (result, key) => { - const value = formatObj[key]; - // Note: getDay() returns 0 on Sunday - if (key === "a") { - return ["鏃�", "涓€", "浜�", "涓�", "鍥�", "浜�", "鍏�"][value]; + for (let i in obj) { + if (Object.prototype.hasOwnProperty.call(obj, i)) { + return false; } - return value.toString().padStart(2, "0"); - }); - return time_str; -} - -/** - * @param {number} time - * @param {string} option - * @returns {string} - */ -export function formatTime(time, option) { - if (("" + time).length === 10) { - time = parseInt(time) * 1000; - } else { - time = +time; } - const d = new Date(time); - const now = Date.now(); - - const diff = (now - d) / 1000; - - if (diff < 30) { - return "鍒氬垰"; - } else if (diff < 3600) { - // less 1 hour - return Math.ceil(diff / 60) + "鍒嗛挓鍓�"; - } else if (diff < 3600 * 24) { - return Math.ceil(diff / 3600) + "灏忔椂鍓�"; - } else if (diff < 3600 * 24 * 2) { - return "1澶╁墠"; - } - if (option) { - return parseTime(time, option); - } else { - return ( - d.getMonth() + - 1 + - "鏈�" + - d.getDate() + - "鏃�" + - d.getHours() + - "鏃�" + - d.getMinutes() + - "鍒�" - ); + if (typeof obj === 'number') { + return false; } + return true; } -/** - * @param {string} url - * @returns {Object} - */ -export function getQueryObject(url) { - url = url == null ? window.location.href : url; - const search = url.substring(url.lastIndexOf("?") + 1); - const obj = {}; - const reg = /([^?&=]+)=([^?&=]*)/g; - search.replace(reg, (rs, $1, $2) => { - const name = decodeURIComponent($1); - let val = decodeURIComponent($2); - val = String(val); - obj[name] = val; - return rs; - }); - return obj; -} - -/** - * @param {string} input value - * @returns {number} output value - */ -export function byteLength(str) { - // returns the byte length of an utf8 string - let s = str.length; - for (var i = str.length - 1; i >= 0; i--) { - const code = str.charCodeAt(i); - if (code > 0x7f && code <= 0x7ff) s++; - else if (code > 0x7ff && code <= 0xffff) s += 2; - if (code >= 0xdc00 && code <= 0xdfff) i--; - } - return s; +export function isNotEmpty(obj) { + return !isEmpty(obj); } /** - * @param {Array} actual - * @returns {Array} + * @name {闃叉姈} */ -export function cleanArray(actual) { - const newArray = []; - for (let i = 0; i < actual.length; i++) { - if (actual[i]) { - newArray.push(actual[i]); +export function debounce(fn, delay) { + let timer = null; + return function() { + if (timer) { + clearTimeout(timer); } - } - return newArray; + timer = setTimeout(() => { + fn.call(this, arguments); + timer = null; + }, delay); + }; } /** - * @param {Object} json - * @returns {Array} + * @name {鑺傛祦} + * @param {*} fn + * @param {*} delay */ -export function param(json) { - if (!json) return ""; - return cleanArray( - Object.keys(json).map(key => { - if (json[key] === undefined) return ""; - return encodeURIComponent(key) + "=" + encodeURIComponent(json[key]); - }) - ).join("&"); +export function throttle(fn, delay) { + let timer = null; + return function() { + if (!timer) { + timer = setTimeout(() => { + fn.call(this, arguments); + timer = null; + }, delay); + } + }; } /** - * @param {string} url - * @returns {Object} + * 鑾峰彇鎵€鏈塽rl鍙傛暟 */ -export function param2Obj(url) { - const search = url.split("?")[1]; - if (!search) { - return {}; +export function getQueryStringArgs() { + // 鍙栧緱娌℃湁寮€澶撮棶鍙风殑鏌ヨ瀛楃涓� + let qs = location.search.length > 0 ? location.search.substring(1) : '', + // 淇濆瓨鏁版嵁鐨勫璞� + args = {}; + // 鎶婃瘡涓弬鏁版坊鍔犲埌 args 瀵硅薄 + for (let item of qs.split('&').map(kv => kv.split('='))) { + let name = decodeURIComponent(item[0]), + value = decodeURIComponent(item[1]); + if (name.length) { + args[name] = value; + } } - return JSON.parse( - '{"' + - decodeURIComponent(search) - .replace(/"/g, '\\"') - .replace(/&/g, '","') - .replace(/=/g, '":"') - .replace(/\+/g, " ") + - '"}' - ); + return args; } /** - * @param {string} val - * @returns {string} + * @name {鎷兼帴url鍙傛暟} */ -export function html2Text(val) { - const div = document.createElement("div"); - div.innerHTML = val; - return div.textContent || div.innerText; -} - -/** - * Merges two objects, giving the last one precedence - * @param {Object} target - * @param {(Object|Array)} source - * @returns {Object} - */ -export function objectMerge(target, source) { - if (typeof target !== "object") { - target = {}; - } - if (Array.isArray(source)) { - return source.slice(); - } - Object.keys(source).forEach(property => { - const sourceProperty = source[property]; - if (typeof sourceProperty === "object") { - target[property] = objectMerge(target[property], sourceProperty); +export function urlParamCombine(obj) { + let param = '?'; + for (let key in obj) { + obj[key] = obj[key] == null ? '' : obj[key]; + if (Array.isArray(obj[key]) || typeof obj[key] == 'object') { + for (let k in obj[key]) { + param += k + '=' + obj[key][k] + '&'; + } } else { - target[property] = sourceProperty; + param += key + '=' + obj[key] + '&'; } - }); - return target; + } + return param.substr(0, param.length - 1); } /** - * @param {HTMLElement} element - * @param {string} className + * 鏍煎紡鍖栨椂闂� */ -export function toggleClass(element, className) { - if (!element || !className) { - return; - } - let classString = element.className; - const nameIndex = classString.indexOf(className); - if (nameIndex === -1) { - classString += "" + className; +export function formatTime( + dateOrTimestamp, + format = 'yyyy-MM-dd HH:mm:ss.SSS', + isMomentAgo = false, + isHideThisYear = false +) { + let date; + if (dateOrTimestamp instanceof Date) { + date = dateOrTimestamp; } else { - classString = - classString.substr(0, nameIndex) + - classString.substr(nameIndex + className.length); + if (/^-?\d+$/.test(dateOrTimestamp)) { + date = new Date(parseInt(dateOrTimestamp)); + } else if (new Date(dateOrTimestamp).toString() != 'Invalid Date') { + date = new Date(dateOrTimestamp); + } else { + console.error('鏃堕棿鏍煎紡鍖栧け璐ワ紝鍙傛暟dateOrStamp閿欒锛�', dateOrTimestamp); + return '鏃堕棿閿欒'; + } } - element.className = classString; -} -/** - * @param {string} type - * @returns {Date} - */ -export function getTime(type) { - if (type === "start") { - return new Date().getTime() - 3600 * 1000 * 24 * 90; - } else { - return new Date(new Date().toDateString()); + if (isHideThisYear && new Date().getFullYear() == date.getFullYear()) { + let matchRes = format.match(/M.*/); + if (matchRes && matchRes.length) { + format = matchRes[0]; + } } -} -/** - * @param {Function} func - * @param {number} wait - * @param {boolean} immediate - * @return {*} - */ -export function debounce(func, wait, immediate) { - let timeout, args, context, timestamp, result; + let dict = { + yyyy: date.getFullYear(), + M: date.getMonth() + 1, + d: date.getDate(), + H: date.getHours(), + m: date.getMinutes(), + s: date.getSeconds(), + S: ('' + (date.getMilliseconds() + 1000)).substring(1), + MM: ('' + (date.getMonth() + 101)).substring(1), + dd: ('' + (date.getDate() + 100)).substring(1), + HH: ('' + (date.getHours() + 100)).substring(1), + mm: ('' + (date.getMinutes() + 100)).substring(1), + ss: ('' + (date.getSeconds() + 100)).substring(1) + }; - const later = function() { - // 鎹笂涓€娆¤Е鍙戞椂闂撮棿闅� - const last = +new Date() - timestamp; + if (isMomentAgo) { + if (this.isToday(date)) { + let diffMin = parseInt((+new Date() - +date) / 1000 / 60); //鏃堕棿宸紙鍗曚綅鍒嗛挓锛� + let diffHour = parseInt(diffMin / 60); + if (diffMin < 1) { + return '鍒氬垰'; + } else if (diffMin < 60) { + return diffMin + '鍒嗛挓鍓�'; + } else if (diffHour < 6) { + return diffHour + '灏忔椂鍓�'; + } else { + if (format.indexOf('H') > -1) { + format = format.replace(/[\s\S].*?(?=H)/g, ''); + } else if (format.indexOf('m') > -1) { + format = format.replace(/[\s\S].*?(?=m)/g, ''); + } else if (format.indexOf('s') > -1) { + format = format.replace(/[\s\S].*?(?=s)/g, ''); + } else if (format.indexOf('S') > -1) { + format = format.replace(/[\s\S].*?(?=S)/g, ''); + } - // 涓婃琚寘瑁呭嚱鏁拌璋冪敤鏃堕棿闂撮殧 last 灏忎簬璁惧畾鏃堕棿闂撮殧 wait - if (last < wait && last > 0) { - timeout = setTimeout(later, wait - last); - } else { - timeout = null; - // 濡傛灉璁惧畾涓篿mmediate===true锛屽洜涓哄紑濮嬭竟鐣屽凡缁忚皟鐢ㄨ繃浜嗘澶勬棤闇€璋冪敤 - if (!immediate) { - result = func.apply(context, args); - if (!timeout) context = args = null; + if ( + format.indexOf('H') < 0 && + format.indexOf('s') < 0 && + format.indexOf('m') < 0 && + format.indexOf('S') < 0 + ) { + format = ''; //褰揌ms閮戒笉瀛樺湪鐨勬椂鍊欙紝绉婚櫎 MM-dd鐨勬牸寮忓寲 + } + + let result = + '浠婂ぉ ' + + format.replace(/(H+|s+|m+|S)/g, function(a) { + return dict[a]; + }); + return result.trim(); + } + } else if (this.isYesterday(date)) { + if (format.indexOf('H') > -1) { + format = format.replace(/[\s\S].*?(?=H)/g, ''); + } else if (format.indexOf('m') > -1) { + format = format.replace(/[\s\S].*?(?=m)/g, ''); + } else if (format.indexOf('s') > -1) { + format = format.replace(/[\s\S].*?(?=s)/g, ''); + } else if (format.indexOf('S') > -1) { + format = format.replace(/[\s\S].*?(?=S)/g, ''); } - } - }; - return function(...args) { - context = this; - timestamp = +new Date(); - const callNow = immediate && !timeout; - // 濡傛灉寤舵椂涓嶅瓨鍦紝閲嶆柊璁惧畾寤舵椂 - if (!timeout) timeout = setTimeout(later, wait); - if (callNow) { - result = func.apply(context, args); - context = args = null; - } + if ( + format.indexOf('H') < 0 && + format.indexOf('s') < 0 && + format.indexOf('m') < 0 && + format.indexOf('S') < 0 + ) { + format = ''; //褰揌ms閮戒笉瀛樺湪鐨勬椂鍊欙紝绉婚櫎 MM-dd鐨勬牸寮忓寲 + } - return result; - }; -} + let result = + '鏄ㄥぉ ' + + format.replace(/(H+|s+|m+|S)/g, function(a) { + return dict[a]; + }); -/** - * This is just a simple version of deep copy - * Has a lot of edge cases bug - * If you want to use a perfect deep copy, use lodash's _.cloneDeep - * @param {Object} source - * @returns {Object} - */ -export function deepClone(source) { - if (!source && typeof source !== "object") { - throw new Error("error arguments", "deepClone"); - } - const targetObj = source.constructor === Array ? [] : {}; - Object.keys(source).forEach(keys => { - if (source[keys] && typeof source[keys] === "object") { - targetObj[keys] = deepClone(source[keys]); - } else { - targetObj[keys] = source[keys]; + return result.trim(); } + } + + return format.replace(/(y+|M+|d+|H+|s+|m+|S)/g, function(a) { + return dict[a]; }); - return targetObj; } -// export function deepClone(p) { -// if (typeof p === "object" && p !== null) { -// if (Array.isArray(p)) { -// return p.map(item => deepClone(item)); -// } else { -// const newObj = {}; -// Object.keys(p).forEach(key => (newObj[key] = deepCopy(p[key]))); -// return newObj; -// } -// } else { -// return p; -// } -// } -/** - * @param {Array} arr - * @returns {Array} - */ -export function uniqueArr(arr) { - return Array.from(new Set(arr)); +export function moneyThousandsSep(number) { + number = (number + '').replace(/[^0-9+-Ee.]/g, ''); + const s = number.split('.'); + const re = /(-?\d+)(\d{3})/; + while (re.test(s[0])) { + s[0] = s[0].replace(re, `$1,$2`); + } + return s.join('.'); } /** - * @returns {string} + * money formatting + * @method: moneyFormatter + * @param {Number} number 瑕佹牸寮忓寲鐨勬暟瀛� + * @param {Number} decimals 淇濈暀鍑犱綅灏忔暟 + * @param {String} thousandsSep 鍗冨垎浣嶇鍙� + * @return {String} */ -export function createUniqueString() { - const timestamp = +new Date() + ""; - const randomNum = parseInt((1 + Math.random()) * 65536) + ""; - return (+(randomNum + timestamp)).toString(32); -} +export function moneyFormat(number, decimals, thousandsSep = '') { + number = (number + '').replace(/[^0-9+-Ee.]/g, ''); + const n = !isFinite(+number) ? 0 : +number, + prec = !isFinite(+decimals) ? 0 : Math.abs(decimals), + toFixedFix = function(n, prec) { + const k = Math.pow(10, prec); + return '' + Math.ceil(absNum(n, k, '*')) / k; + }; -/** - * Check if an element has a class - * @param {HTMLElement} elm - * @param {string} cls - * @returns {boolean} - */ -export function hasClass(ele, cls) { - return !!ele.className.match(new RegExp("(\\s|^)" + cls + "(\\s|$)")); + const s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.'); + const re = /(-?\d+)(\d{3})/; + while (re.test(s[0]) && thousandsSep) { + s[0] = s[0].replace(re, `$1${thousandsSep}$2`); + } + + if ((s[1] || '').length < prec) { + s[1] = s[1] || ''; + s[1] += new Array(prec - s[1].length + 1).join('0'); + } + return s.join('.'); +} +//瑙e喅js鏁板瓧绮惧害涓㈠け闂 +export function absNum(arg1, arg2, operate) { + //鍔� + function floatAdd(arg1, arg2) { + var r1, r2, m; + try { + r1 = arg1.toString().split('.')[1].length; + } catch (e) { + r1 = 0; + } + try { + r2 = arg2.toString().split('.')[1].length; + } catch (e) { + r2 = 0; + } + m = Math.pow(10, Math.max(r1, r2)); + return (arg1 * m + arg2 * m) / m; + } + //鍑� + function floatSub(arg1, arg2) { + var r1, r2, m, n; + try { + r1 = arg1.toString().split('.')[1].length; + } catch (e) { + r1 = 0; + } + try { + r2 = arg2.toString().split('.')[1].length; + } catch (e) { + r2 = 0; + } + m = Math.pow(10, Math.max(r1, r2)); + //鍔ㄦ€佹帶鍒剁簿搴﹂暱搴� + n = r1 >= r2 ? r1 : r2; + return ((arg1 * m - arg2 * m) / m).toFixed(n); + } + //涔� + function floatMul(arg1, arg2) { + var m = 0, + s1 = arg1.toString(), + s2 = arg2.toString(); + try { + m += s1.split('.')[1].length; + } catch (e) { + e; + } + try { + m += s2.split('.')[1].length; + } catch (e) { + e; + } + return ( + (Number(s1.replace('.', '')) * Number(s2.replace('.', ''))) / + Math.pow(10, m) + ); + } + //闄� + function floatDiv(arg1, arg2) { + var t1 = 0, + t2 = 0, + r1, + r2; + try { + t1 = arg1.toString().split('.')[1].length; + } catch (e) { + e; + } + try { + t2 = arg2.toString().split('.')[1].length; + } catch (e) { + e; + } + r1 = Number(arg1.toString().replace('.', '')); + r2 = Number(arg2.toString().replace('.', '')); + return (r1 / r2) * Math.pow(10, t2 - t1); + } + return operate === '+' + ? floatAdd(arg1, arg2) + : operate === '-' + ? floatSub(arg1, arg2) + : operate === '*' + ? floatMul(arg1, arg2) + : operate === '/' + ? floatDiv(arg1, arg2) + : false; } -/** - * Add class to element - * @param {HTMLElement} elm - * @param {string} cls - */ -export function addClass(ele, cls) { - if (!hasClass(ele, cls)) ele.className += " " + cls; +export function downloadBase64File(base64, name) { + const blob = base64ToBlob(base64); + downloadBlobFile(blob, name); +} +export function downloadBlobFile(blob, name) { + if ('msSaveOrOpenBlob' in navigator) { + window.navigator.msSaveOrOpenBlob(blob, name); + return; + } + const href = window.URL.createObjectURL(blob); + downUrlFile(href, name); + window.URL.revokeObjectURL(href); // 閲婃斁鍐呭瓨 +} +export function downUrlFile(url, name) { + const eleLink = document.createElement('a'); + eleLink.download = name; + eleLink.style.display = 'none'; + eleLink.href = url; + document.body.appendChild(eleLink); + eleLink.click(); + document.body.removeChild(eleLink); } -/** - * Remove class from element - * @param {HTMLElement} elm - * @param {string} cls - */ -export function removeClass(ele, cls) { - if (hasClass(ele, cls)) { - const reg = new RegExp("(\\s|^)" + cls + "(\\s|$)"); - ele.className = ele.className.replace(reg, " "); +//鏂囦欢绫诲瀷杞崲 +export function fileToBase64(file) { + const reader = new FileReader(); + reader.readAsDataURL(file); + return reader.result; +} +export function base64ToFile(base64, name) { + let arr = base64.split(','), + mime = arr[0].match(/:(.*?);/)[1], + bstr = atob(arr[1]), + n = bstr.length, + u8arr = new Uint8Array(n); + while (n--) { + u8arr[n] = bstr.charCodeAt(n); } + return new File([u8arr], name, { type: mime }); +} +export function base64ToBlob(base64) { + const mimeString = base64 + .split(',')[0] + .split(':')[1] + .split(';')[0]; + let binary = atob(base64.replace(/\s/g, '')); + let len = binary.length; + let buffer = new ArrayBuffer(len); + let view = new Uint8Array(buffer); + for (let i = 0; i < len; i++) { + view[i] = binary.charCodeAt(i); + } + return new Blob([view], { type: mimeString }); +} +export function base64ToUrl(base64) { + const blob = base64ToBlob(base64); + return URL.createObjectURL(blob); } +export default { + isEmpty, + isNotEmpty, + debounce, + throttle, + urlParamCombine, + formatTime, + moneyFormat, + absNum, + downloadBase64File, + downUrlFile, + base64ToUrl +}; diff --git a/WebSite/src/utils/loading.js b/WebSite/src/utils/loading.js deleted file mode 100644 index e761c217b036970db208802ee8c0c55328201380..0000000000000000000000000000000000000000 --- a/WebSite/src/utils/loading.js +++ /dev/null @@ -1,33 +0,0 @@ -/* - * @Description: - * @Autor: wang chao - * @Date: 2020-06-18 12:35:45 - * @LastEditors: dong jun hua - * @LastEditTime: 2020-06-18 13:01:12 - */ - -import { Loading } from "element-ui"; -let loading; -let loadCount = 0; -export function startLoading() { - if (loadCount === 0) { - const target = document.querySelector(".app-main"); - const background = target ? "rgba(255,255,255,.5)" : "rgba(0,0,0,.5)"; - //浣跨敤Element loading-start 鏂规硶 - loading = Loading.service({ - target, - lock: true, - text: "Loading", - spinner: "el-icon-loading", - background - }); - } - loadCount++; -} -export function endLoading() { - //浣跨敤Element loading-close 鏂规硶 - loadCount--; - if (loadCount <= 0) { - loading.close(); - } -} diff --git a/WebSite/src/utils/open-window.js b/WebSite/src/utils/open-window.js deleted file mode 100644 index 18536da1ded92e5c475537107c06a32dd6d13130..0000000000000000000000000000000000000000 --- a/WebSite/src/utils/open-window.js +++ /dev/null @@ -1,45 +0,0 @@ -/** - *Created by PanJiaChen on 16/11/29. - * @param {Sting} url - * @param {Sting} title - * @param {Number} w - * @param {Number} h - */ -export default function openWindow(url, title, w, h) { - // Fixes dual-screen position Most browsers Firefox - const dualScreenLeft = - window.screenLeft !== undefined ? window.screenLeft : screen.left; - const dualScreenTop = - window.screenTop !== undefined ? window.screenTop : screen.top; - - const width = window.innerWidth - ? window.innerWidth - : document.documentElement.clientWidth - ? document.documentElement.clientWidth - : screen.width; - const height = window.innerHeight - ? window.innerHeight - : document.documentElement.clientHeight - ? document.documentElement.clientHeight - : screen.height; - - const left = width / 2 - w / 2 + dualScreenLeft; - const top = height / 2 - h / 2 + dualScreenTop; - const newWindow = window.open( - url, - title, - "toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=yes, copyhistory=no, width=" + - w + - ", height=" + - h + - ", top=" + - top + - ", left=" + - left - ); - - // Puts focus on the newWindow - if (window.focus) { - newWindow.focus(); - } -} diff --git a/WebSite/src/utils/permission.js b/WebSite/src/utils/permission.js deleted file mode 100644 index 8d252a78c30f620107f288484cdb21ca4bdb37ab..0000000000000000000000000000000000000000 --- a/WebSite/src/utils/permission.js +++ /dev/null @@ -1,25 +0,0 @@ -import store from "@/store"; - -/** - * @param {Array} value - * @returns {Boolean} - * @example see @/views/permission/directive.vue - */ -export default function checkPermission(value) { - if (value && value instanceof Array && value.length > 0) { - const roles = store.getters && store.getters.roles; - const permissionRoles = value; - - const hasPermission = roles.some(role => { - return permissionRoles.includes(role); - }); - - if (!hasPermission) { - return false; - } - return true; - } else { - console.error(`need roles! Like v-permission="['admin','editor']"`); - return false; - } -} diff --git a/WebSite/src/utils/request.js b/WebSite/src/utils/request.js deleted file mode 100644 index 60b0342181bfe628f8f634548bd99fb8fca1c776..0000000000000000000000000000000000000000 --- a/WebSite/src/utils/request.js +++ /dev/null @@ -1,130 +0,0 @@ -import axios from "axios"; -import { MessageBox, Message } from "element-ui"; -import store from "@/store"; -import { getToken } from "@/utils/auth"; -import { getConfig } from "@/utils/config"; -import { startLoading, endLoading } from "@/utils/loading"; -import router from "@/router"; - -// try to get baseURL from config -let baseURL; -if (process.env.NODE_ENV === "test" || process.env.NODE_ENV === "production") { - getConfig().then(config => { - if (config.baseURL) { - baseURL = config.baseURL; - } - }); -} - -// create an axios instance -const service = axios.create({ - baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url - // withCredentials: true, // send cookies when cross-domain requests - timeout: 60000 // request timeout -}); - -// request interceptor -service.interceptors.request.use( - config => { - startLoading(); - // do something before request is sent - // use baseURL - if (baseURL) { - config.baseURL = baseURL; - } - - return config; - }, - error => { - // do something with request error - console.log(error); // for debug - return Promise.reject(error); - } -); - -// response interceptor -service.interceptors.response.use( - /** - * If you want to get http information such as headers or status - * Please return response => response - */ - - /** - * Determine the request status by custom code - * Here is just an example - * You can also judge the status by HTTP Status Code - */ - response => { - setTimeout(() => { - endLoading(); - }, 500); - // blob绫诲瀷闇€鍦ㄨ皟鐢╝pi鍙傛暟浣嶇疆浼犲叆鍙傛暟 responseType: 'blob' - if (response.config.responseType === "blob") { - const fileName = decodeURI( - response.headers["content-disposition"].split("filename=")[1] - ); - // 杩斿洖鏂囦欢娴佸唴瀹癸紝浠ュ強鑾峰彇鏂囦欢鍚� - return Promise.resolve({ data: response.data, fileName: fileName }); - } - - const res = response.data; - - // if the custom code is not 20000, it is judged as an error. - if (res.code !== 20000 && res.code !== "00000") { - Message({ - message: res.message || res.description || "Error", - type: "error", - duration: 5 * 1000 - }); - - // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired; - if (res.code === "10000") { - // to re-login - store.dispatch("user/logout").then(() => { - router.push("/login"); - }); - } - return Promise.reject( - new Error(res.message || res.description || "Error") - ); - } else { - return res; - } - }, - error => { - endLoading(); - let errMsg = ""; - if ( - error.code == "ECONNABORTED" && - error.message.indexOf("timeout") != -1 - ) { - errMsg = "no response from server"; - } else { - switch (error.response.status) { - case 401: - errMsg = "no login or login is invalid"; - break; - case 403: - errMsg = "server reject"; - break; - default: - errMsg = error.response.statusText; - break; - } - } - - const msg = `${error.response.status}: ${errMsg}`; - - console.log(error); // for debug - - Message({ - message: msg, - type: "error", - duration: 5 * 1000 - }); - - return Promise.reject(error); - } -); - -export default service; diff --git a/WebSite/src/utils/scroll-to.js b/WebSite/src/utils/scroll-to.js index dc2e87328c1a834fd0d92d6938c80d6d48c4f4db..c9c9cf58d3a2ba05bd55542a50f8bbe76c65a304 100644 --- a/WebSite/src/utils/scroll-to.js +++ b/WebSite/src/utils/scroll-to.js @@ -47,7 +47,7 @@ export function scrollTo(to, duration, callback) { const change = to - start; const increment = 20; let currentTime = 0; - duration = typeof duration === "undefined" ? 500 : duration; + duration = typeof duration === 'undefined' ? 500 : duration; var animateScroll = function() { // increment the time currentTime += increment; @@ -59,7 +59,7 @@ export function scrollTo(to, duration, callback) { if (currentTime < duration) { requestAnimFrame(animateScroll); } else { - if (callback && typeof callback === "function") { + if (callback && typeof callback === 'function') { // the animation is done so lets callback callback(); } diff --git a/WebSite/src/utils/validate.js b/WebSite/src/utils/validate.js index c86a80c69c5f30addd024480d7fcbac74a4b715a..79389f9b24fb7a67d4471eff01f081299e952bde 100644 --- a/WebSite/src/utils/validate.js +++ b/WebSite/src/utils/validate.js @@ -1,3 +1,10 @@ +/* + * @Description: + * @Autor: dongjunhua + * @Date: 2020-12-18 11:17:43 + * @LastEditors: dongjunhua + * @LastEditTime: 2020-12-18 11:19:03 + */ /** * Created by PanJiaChen on 16/11/18. */ @@ -15,7 +22,7 @@ export function isExternal(path) { * @returns {Boolean} */ export function validUsername(str) { - const valid_map = ["admin", "editor"]; + const valid_map = ['admin', 'editor']; return valid_map.indexOf(str.trim()) >= 0; } @@ -60,7 +67,7 @@ export function validAlphabets(str) { * @returns {Boolean} */ export function validEmail(email) { - const reg = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; + const reg = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; return reg.test(email); } @@ -69,7 +76,7 @@ export function validEmail(email) { * @returns {Boolean} */ export function isString(str) { - if (typeof str === "string" || str instanceof String) { + if (typeof str === 'string' || str instanceof String) { return true; } return false; @@ -80,8 +87,8 @@ export function isString(str) { * @returns {Boolean} */ export function isArray(arg) { - if (typeof Array.isArray === "undefined") { - return Object.prototype.toString.call(arg) === "[object Array]"; + if (typeof Array.isArray === 'undefined') { + return Object.prototype.toString.call(arg) === '[object Array]'; } return Array.isArray(arg); } diff --git a/WebSite/src/vendor/Export2Excel.js b/WebSite/src/vendor/Export2Excel.js deleted file mode 100644 index d8a2af3d4b4d16fd906a940933cd24e38ad0dee2..0000000000000000000000000000000000000000 --- a/WebSite/src/vendor/Export2Excel.js +++ /dev/null @@ -1,220 +0,0 @@ -/* eslint-disable */ -import { saveAs } from 'file-saver' -import XLSX from 'xlsx' - -function generateArray(table) { - var out = []; - var rows = table.querySelectorAll('tr'); - var ranges = []; - for (var R = 0; R < rows.length; ++R) { - var outRow = []; - var row = rows[R]; - var columns = row.querySelectorAll('td'); - for (var C = 0; C < columns.length; ++C) { - var cell = columns[C]; - var colspan = cell.getAttribute('colspan'); - var rowspan = cell.getAttribute('rowspan'); - var cellValue = cell.innerText; - if (cellValue !== "" && cellValue == +cellValue) cellValue = +cellValue; - - //Skip ranges - ranges.forEach(function (range) { - if (R >= range.s.r && R <= range.e.r && outRow.length >= range.s.c && outRow.length <= range.e.c) { - for (var i = 0; i <= range.e.c - range.s.c; ++i) outRow.push(null); - } - }); - - //Handle Row Span - if (rowspan || colspan) { - rowspan = rowspan || 1; - colspan = colspan || 1; - ranges.push({ - s: { - r: R, - c: outRow.length - }, - e: { - r: R + rowspan - 1, - c: outRow.length + colspan - 1 - } - }); - }; - - //Handle Value - outRow.push(cellValue !== "" ? cellValue : null); - - //Handle Colspan - if (colspan) - for (var k = 0; k < colspan - 1; ++k) outRow.push(null); - } - out.push(outRow); - } - return [out, ranges]; -}; - -function datenum(v, date1904) { - if (date1904) v += 1462; - var epoch = Date.parse(v); - return (epoch - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000); -} - -function sheet_from_array_of_arrays(data, opts) { - var ws = {}; - var range = { - s: { - c: 10000000, - r: 10000000 - }, - e: { - c: 0, - r: 0 - } - }; - for (var R = 0; R != data.length; ++R) { - for (var C = 0; C != data[R].length; ++C) { - if (range.s.r > R) range.s.r = R; - if (range.s.c > C) range.s.c = C; - if (range.e.r < R) range.e.r = R; - if (range.e.c < C) range.e.c = C; - var cell = { - v: data[R][C] - }; - if (cell.v == null) continue; - var cell_ref = XLSX.utils.encode_cell({ - c: C, - r: R - }); - - if (typeof cell.v === 'number') cell.t = 'n'; - else if (typeof cell.v === 'boolean') cell.t = 'b'; - else if (cell.v instanceof Date) { - cell.t = 'n'; - cell.z = XLSX.SSF._table[14]; - cell.v = datenum(cell.v); - } else cell.t = 's'; - - ws[cell_ref] = cell; - } - } - if (range.s.c < 10000000) ws['!ref'] = XLSX.utils.encode_range(range); - return ws; -} - -function Workbook() { - if (!(this instanceof Workbook)) return new Workbook(); - this.SheetNames = []; - this.Sheets = {}; -} - -function s2ab(s) { - var buf = new ArrayBuffer(s.length); - var view = new Uint8Array(buf); - for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF; - return buf; -} - -export function export_table_to_excel(id) { - var theTable = document.getElementById(id); - var oo = generateArray(theTable); - var ranges = oo[1]; - - /* original data */ - var data = oo[0]; - var ws_name = "SheetJS"; - - var wb = new Workbook(), - ws = sheet_from_array_of_arrays(data); - - /* add ranges to worksheet */ - // ws['!cols'] = ['apple', 'banan']; - ws['!merges'] = ranges; - - /* add worksheet to workbook */ - wb.SheetNames.push(ws_name); - wb.Sheets[ws_name] = ws; - - var wbout = XLSX.write(wb, { - bookType: 'xlsx', - bookSST: false, - type: 'binary' - }); - - saveAs(new Blob([s2ab(wbout)], { - type: "application/octet-stream" - }), "test.xlsx") -} - -export function export_json_to_excel({ - multiHeader = [], - header, - data, - filename, - merges = [], - autoWidth = true, - bookType = 'xlsx' -} = {}) { - /* original data */ - filename = filename || 'excel-list' - data = [...data] - data.unshift(header); - - for (let i = multiHeader.length - 1; i > -1; i--) { - data.unshift(multiHeader[i]) - } - - var ws_name = "SheetJS"; - var wb = new Workbook(), - ws = sheet_from_array_of_arrays(data); - - if (merges.length > 0) { - if (!ws['!merges']) ws['!merges'] = []; - merges.forEach(item => { - ws['!merges'].push(XLSX.utils.decode_range(item)) - }) - } - - if (autoWidth) { - /*璁剧疆worksheet姣忓垪鐨勬渶澶у搴�*/ - const colWidth = data.map(row => row.map(val => { - /*鍏堝垽鏂槸鍚︿负null/undefined*/ - if (val == null) { - return { - 'wch': 10 - }; - } - /*鍐嶅垽鏂槸鍚︿负涓枃*/ - else if (val.toString().charCodeAt(0) > 255) { - return { - 'wch': val.toString().length * 2 - }; - } else { - return { - 'wch': val.toString().length - }; - } - })) - /*浠ョ涓€琛屼负鍒濆鍊�*/ - let result = colWidth[0]; - for (let i = 1; i < colWidth.length; i++) { - for (let j = 0; j < colWidth[i].length; j++) { - if (result[j]['wch'] < colWidth[i][j]['wch']) { - result[j]['wch'] = colWidth[i][j]['wch']; - } - } - } - ws['!cols'] = result; - } - - /* add worksheet to workbook */ - wb.SheetNames.push(ws_name); - wb.Sheets[ws_name] = ws; - - var wbout = XLSX.write(wb, { - bookType: bookType, - bookSST: false, - type: 'binary' - }); - saveAs(new Blob([s2ab(wbout)], { - type: "application/octet-stream" - }), `${filename}.${bookType}`); -} diff --git a/WebSite/src/vendor/Export2Zip.js b/WebSite/src/vendor/Export2Zip.js deleted file mode 100644 index db70707d6d58a45cc74ca4aef6212a6041c8ac89..0000000000000000000000000000000000000000 --- a/WebSite/src/vendor/Export2Zip.js +++ /dev/null @@ -1,24 +0,0 @@ -/* eslint-disable */ -import { saveAs } from 'file-saver' -import JSZip from 'jszip' - -export function export_txt_to_zip(th, jsonData, txtName, zipName) { - const zip = new JSZip() - const txt_name = txtName || 'file' - const zip_name = zipName || 'file' - const data = jsonData - let txtData = `${th}\r\n` - data.forEach((row) => { - let tempStr = '' - tempStr = row.toString() - txtData += `${tempStr}\r\n` - }) - zip.file(`${txt_name}.txt`, txtData) - zip.generateAsync({ - type: "blob" - }).then((blob) => { - saveAs(blob, `${zip_name}.zip`) - }, (err) => { - alert('瀵煎嚭澶辫触') - }) -} diff --git a/WebSite/src/views/auth-redirect/index.vue b/WebSite/src/views/auth-redirect/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..5571d879e383dc5ba6f4ae870448a20ef8fcee31 --- /dev/null +++ b/WebSite/src/views/auth-redirect/index.vue @@ -0,0 +1,56 @@ +<!-- + * @Description: + * @Autor: dongjunhua + * @Date: 2021-01-20 09:06:24 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-02-11 15:06:27 +--> + +<template> + <div></div> +</template> + +<script> +import { reactive, toRefs } from 'vue'; +import { useRoute } from 'vue-router'; +// import { useStore } from 'vuex'; +// import AuthenticationToken from '@/core/model/AuthenticationToken'; +export default { + name: 'AuthRedirect', + setup() { + const route = useRoute(); + // const store = useStore(); + const data = reactive({ + ssoAddress: route.query.ssoAddress, + ssoLogout: route.query.ssoLogout, + code: route.query.code + }); + + const login = async () => { + // await store.dispatch( + // 'subject/login', + // new AuthenticationToken('admin', '123456') + // ); + // store.dispatch('subject/permit', { authorizationToken: '1' }); + window.location.href = 'http://localhost:3000/#/login'; + }; + + const goSso = () => { + // const redirect_uri = window.location.href.split('?')[0]; + // const recognizeId = 'seasky_base_data'; + // window.location.href = `${data.ssoAddress}?redirect=${encodeURIComponent( + // redirect_uri + // )}&recognizeId=${recognizeId}`; + window.location.href = 'http://localhost:3000/#/login'; + }; + + if (data.code) { + login(); + } else if (data.ssoAddress) { + goSso(); + } + + return { ...toRefs(data) }; + } +}; +</script> diff --git a/WebSite/src/views/charts/keyboard.vue b/WebSite/src/views/charts/keyboard.vue deleted file mode 100644 index 825221191aaf6a57a841b1061819406108e22b8f..0000000000000000000000000000000000000000 --- a/WebSite/src/views/charts/keyboard.vue +++ /dev/null @@ -1,22 +0,0 @@ -<template> - <div class="chart-container"> - <chart height="100%" width="100%" /> - </div> -</template> - -<script> -import Chart from "@/components/Charts/Keyboard"; - -export default { - name: "KeyboardChart", - components: { Chart } -}; -</script> - -<style scoped> -.chart-container { - position: relative; - width: 100%; - height: calc(100vh - 84px); -} -</style> diff --git a/WebSite/src/views/charts/line.vue b/WebSite/src/views/charts/line.vue deleted file mode 100644 index e63801018063a269eea1ad65902e4ec28619b2e7..0000000000000000000000000000000000000000 --- a/WebSite/src/views/charts/line.vue +++ /dev/null @@ -1,22 +0,0 @@ -<template> - <div class="chart-container"> - <chart height="100%" width="100%" /> - </div> -</template> - -<script> -import Chart from "@/components/Charts/LineMarker"; - -export default { - name: "LineChart", - components: { Chart } -}; -</script> - -<style scoped> -.chart-container { - position: relative; - width: 100%; - height: calc(100vh - 84px); -} -</style> diff --git a/WebSite/src/views/charts/mix-chart.vue b/WebSite/src/views/charts/mix-chart.vue deleted file mode 100644 index 7bdc487c8e634377b35adbbd86b4d9306238c1c4..0000000000000000000000000000000000000000 --- a/WebSite/src/views/charts/mix-chart.vue +++ /dev/null @@ -1,22 +0,0 @@ -<template> - <div class="chart-container"> - <chart height="100%" width="100%" /> - </div> -</template> - -<script> -import Chart from "@/components/Charts/MixChart"; - -export default { - name: "MixChart", - components: { Chart } -}; -</script> - -<style scoped> -.chart-container { - position: relative; - width: 100%; - height: calc(100vh - 84px); -} -</style> diff --git a/WebSite/src/views/clipboard/index.vue b/WebSite/src/views/clipboard/index.vue deleted file mode 100644 index e296dda07812212f441c1e3a8d782c0736172b98..0000000000000000000000000000000000000000 --- a/WebSite/src/views/clipboard/index.vue +++ /dev/null @@ -1,65 +0,0 @@ -<template> - <div class="app-container"> - <el-tabs v-model="activeName"> - <el-tab-pane label="use clipboard directly" name="directly"> - <el-input - v-model="inputData" - placeholder="Please input" - style="width:400px;max-width:100%;" - /> - <el-button - type="primary" - icon="el-icon-document" - @click="handleCopy(inputData, $event)" - > - copy - </el-button> - </el-tab-pane> - <el-tab-pane label="use clipboard by v-directive" name="v-directive"> - <el-input - v-model="inputData" - placeholder="Please input" - style="width:400px;max-width:100%;" - /> - <el-button - v-clipboard:copy="inputData" - v-clipboard:success="clipboardSuccess" - type="primary" - icon="el-icon-document" - > - copy - </el-button> - </el-tab-pane> - </el-tabs> - </div> -</template> - -<script> -import clip from "@/utils/clipboard"; // use clipboard directly -import clipboard from "@/directive/clipboard/index.js"; // use clipboard by v-directive - -export default { - name: "ClipboardDemo", - directives: { - clipboard - }, - data() { - return { - activeName: "directly", - inputData: "https://github.com/PanJiaChen/vue-element-admin" - }; - }, - methods: { - handleCopy(text, event) { - clip(text, event); - }, - clipboardSuccess() { - this.$message({ - message: "Copy successfully", - type: "success", - duration: 1500 - }); - } - } -}; -</script> diff --git a/WebSite/src/views/components-demo/avatar-upload.vue b/WebSite/src/views/components-demo/avatar-upload.vue deleted file mode 100644 index ea122535c79f1b58b01383efd0305ebed64dfec7..0000000000000000000000000000000000000000 --- a/WebSite/src/views/components-demo/avatar-upload.vue +++ /dev/null @@ -1,69 +0,0 @@ -<template> - <div class="components-container"> - <aside> - This is based on - <a class="link-type" href="//github.com/dai-siki/vue-image-crop-upload"> - vue-image-crop-upload</a - >. Since I was using only the vue@1 version, and it is not compatible with - mockjs at the moment, I modified it myself, and if you are going to use - it, it is better to use official version. - </aside> - - <pan-thumb :image="image" /> - - <el-button - type="primary" - icon="el-icon-upload" - style="position: absolute;bottom: 15px;margin-left: 40px;" - @click="imagecropperShow = true" - > - Change Avatar - </el-button> - - <image-cropper - v-show="imagecropperShow" - :key="imagecropperKey" - :width="300" - :height="300" - url="https://httpbin.org/post" - lang-type="en" - @close="close" - @crop-upload-success="cropSuccess" - /> - </div> -</template> - -<script> -import ImageCropper from "@/components/ImageCropper"; -import PanThumb from "@/components/PanThumb"; - -export default { - name: "AvatarUploadDemo", - components: { ImageCropper, PanThumb }, - data() { - return { - imagecropperShow: false, - imagecropperKey: 0, - image: "https://wpimg.wallstcn.com/577965b9-bb9e-4e02-9f0c-095b41417191" - }; - }, - methods: { - cropSuccess(resData) { - this.imagecropperShow = false; - this.imagecropperKey = this.imagecropperKey + 1; - this.image = resData.files.avatar; - }, - close() { - this.imagecropperShow = false; - } - } -}; -</script> - -<style scoped> -.avatar { - width: 200px; - height: 200px; - border-radius: 50%; -} -</style> diff --git a/WebSite/src/views/components-demo/back-to-top.vue b/WebSite/src/views/components-demo/back-to-top.vue deleted file mode 100644 index 9ab1057a9d865b7b5b7229c23bcb7c9a2538d5a9..0000000000000000000000000000000000000000 --- a/WebSite/src/views/components-demo/back-to-top.vue +++ /dev/null @@ -1,162 +0,0 @@ -<template> - <div class="components-container"> - <aside> - When the page is scrolled to the specified position, the Back to Top - button appears in the lower right corner - </aside> - <aside> - You can customize the style of the button, show / hide, height of - appearance, height of the return. If you need a text prompt, you can use - element-ui el-tooltip elements externally - </aside> - <div class="placeholder-container"> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - </div> - <!-- you can add element-ui's tooltip --> - <el-tooltip placement="top" content="tooltip"> - <back-to-top - :custom-style="myBackToTopStyle" - :visibility-height="300" - :back-position="50" - transition-name="fade" - /> - </el-tooltip> - </div> -</template> - -<script> -import BackToTop from "@/components/BackToTop"; - -export default { - name: "BackToTopDemo", - components: { BackToTop }, - data() { - return { - // customizable button style, show/hide critical point, return position - myBackToTopStyle: { - right: "50px", - bottom: "50px", - width: "40px", - height: "40px", - "border-radius": "4px", - "line-height": "45px", // 璇蜂繚鎸佷笌楂樺害涓€鑷翠互鍨傜洿灞呬腑 Please keep consistent with height to center vertically - background: "#e7eaf1" // 鎸夐挳鐨勮儗鏅鑹� The background color of the button - } - }; - } -}; -</script> - -<style scoped> -.placeholder-container div { - margin: 10px; -} -</style> diff --git a/WebSite/src/views/components-demo/count-to.vue b/WebSite/src/views/components-demo/count-to.vue deleted file mode 100644 index b7f29f3ba4960d7fc174499917becf2319394130..0000000000000000000000000000000000000000 --- a/WebSite/src/views/components-demo/count-to.vue +++ /dev/null @@ -1,244 +0,0 @@ -<template> - <div class="components-container"> - <aside> - <a href="https://github.com/PanJiaChen/vue-countTo" target="_blank" - >countTo-component</a - > - </aside> - <count-to - ref="example" - :start-val="_startVal" - :end-val="_endVal" - :duration="_duration" - :decimals="_decimals" - :separator="_separator" - :prefix="_prefix" - :suffix="_suffix" - :autoplay="false" - class="example" - /> - <div style="margin-left: 25%;margin-top: 40px;"> - <label class="label" for="startValInput" - >startVal: - <input - v-model.number="setStartVal" - type="number" - name="startValInput" - /> - </label> - <label class="label" for="endValInput" - >endVal: - <input v-model.number="setEndVal" type="number" name="endVaInput" /> - </label> - <label class="label" for="durationInput" - >duration: - <input - v-model.number="setDuration" - type="number" - name="durationInput" - /> - </label> - <div class="startBtn example-btn" @click="start"> - Start - </div> - <div class="pause-resume-btn example-btn" @click="pauseResume"> - pause/resume - </div> - <br /> - <label class="label" for="decimalsInput" - >decimals: - <input - v-model.number="setDecimals" - type="number" - name="decimalsInput" - /> - </label> - <label class="label" for="separatorInput" - >separator: - <input v-model="setSeparator" name="separatorInput" /> - </label> - <label class="label" for="prefixInput" - >prefix: - <input v-model="setPrefix" name="prefixInput" /> - </label> - <label class="label" for="suffixInput" - >suffix: - <input v-model="setSuffix" name="suffixInput" /> - </label> - </div> - <aside> - <count-to :start-val='{{ _startVal }}' :end-val='{{ - _endVal - }}' :duration='{{ _duration }}' :decimals='{{ - _decimals - }}' :separator='{{ _separator }}' :prefix='{{ - _prefix - }}' :suffix='{{ _suffix }}' :autoplay=false> - </aside> - </div> -</template> - -<script> -import countTo from "vue-count-to"; - -export default { - name: "CountToDemo", - components: { countTo }, - data() { - return { - setStartVal: 0, - setEndVal: 2017, - setDuration: 4000, - setDecimals: 0, - setSeparator: ",", - setSuffix: " rmb", - setPrefix: "楼 " - }; - }, - computed: { - _startVal() { - if (this.setStartVal) { - return this.setStartVal; - } else { - return 0; - } - }, - _endVal() { - if (this.setEndVal) { - return this.setEndVal; - } else { - return 0; - } - }, - _duration() { - if (this.setDuration) { - return this.setDuration; - } else { - return 100; - } - }, - _decimals() { - if (this.setDecimals) { - if (this.setDecimals < 0 || this.setDecimals > 20) { - alert("digits argument must be between 0 and 20"); - return 0; - } - return this.setDecimals; - } else { - return 0; - } - }, - _separator() { - return this.setSeparator; - }, - _suffix() { - return this.setSuffix; - }, - _prefix() { - return this.setPrefix; - } - }, - methods: { - start() { - this.$refs.example.start(); - }, - pauseResume() { - this.$refs.example.pauseResume(); - } - } -}; -</script> - -<style scoped> -.example-btn { - display: inline-block; - margin-bottom: 0; - font-weight: 500; - text-align: center; - -ms-touch-action: manipulation; - touch-action: manipulation; - cursor: pointer; - background-image: none; - border: 1px solid transparent; - white-space: nowrap; - line-height: 1.5; - padding: 4px 15px; - font-size: 12px; - border-radius: 4px; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - -webkit-transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); - transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); - position: relative; - color: rgba(0, 0, 0, 0.65); - background-color: #fff; - border-color: #d9d9d9; -} - -.example-btn:hover { - color: #4ab7bd; - background-color: #fff; - border-color: #4ab7bd; -} -.example { - font-size: 50px; - color: #f6416c; - display: block; - margin: 10px 0; - text-align: center; - font-size: 80px; - font-weight: 500; -} - -.label { - color: #2f4f4f; - font-size: 16px; - display: inline-block; - margin: 15px 30px 15px 0; -} - -input { - position: relative; - display: inline-block; - padding: 4px 7px; - width: 70px; - height: 28px; - cursor: text; - font-size: 12px; - line-height: 1.5; - color: rgba(0, 0, 0, 0.65); - background-color: #fff; - background-image: none; - border: 1px solid #d9d9d9; - border-radius: 4px; - -webkit-transition: all 0.3s; - transition: all 0.3s; -} - -.startBtn { - margin-left: 20px; - font-size: 20px; - color: #30b08f; - background-color: #fff; -} - -.startBtn:hover { - background-color: #30b08f; - color: #fff; - border-color: #30b08f; -} - -.pause-resume-btn { - font-size: 20px; - color: #e65d6e; - background-color: #fff; -} - -.pause-resume-btn:hover { - background-color: #e65d6e; - color: #fff; - border-color: #e65d6e; -} -</style> diff --git a/WebSite/src/views/components-demo/dnd-list.vue b/WebSite/src/views/components-demo/dnd-list.vue deleted file mode 100644 index 61cfa1141691f69f2348b9c01b4e8a46c72c06fa..0000000000000000000000000000000000000000 --- a/WebSite/src/views/components-demo/dnd-list.vue +++ /dev/null @@ -1,46 +0,0 @@ -<template> - <div class="components-container"> - <aside> - drag-list base on - <a href="https://github.com/SortableJS/Vue.Draggable" target="_blank" - >Vue.Draggable</a - > - </aside> - <div class="editor-container"> - <dnd-list - :list1="list1" - :list2="list2" - list1-title="List" - list2-title="Article pool" - /> - </div> - </div> -</template> - -<script> -import DndList from "@/components/DndList"; -import { fetchList } from "@/api/article"; - -export default { - name: "DndListDemo", - components: { DndList }, - data() { - return { - list1: [], - list2: [] - }; - }, - created() { - this.getData(); - }, - methods: { - getData() { - this.listLoading = true; - fetchList().then(response => { - this.list1 = response.data.items.splice(0, 5); - this.list2 = response.data.items; - }); - } - } -}; -</script> diff --git a/WebSite/src/views/components-demo/drag-dialog.vue b/WebSite/src/views/components-demo/drag-dialog.vue deleted file mode 100644 index 698239c8763d8d93373b6368e2dd181e0e5e7b5c..0000000000000000000000000000000000000000 --- a/WebSite/src/views/components-demo/drag-dialog.vue +++ /dev/null @@ -1,76 +0,0 @@ -<template> - <div class="components-container"> - <el-button type="primary" @click="dialogTableVisible = true"> - open a Drag Dialog - </el-button> - <el-dialog - v-el-drag-dialog - :visible.sync="dialogTableVisible" - title="Shipping address" - @dragDialog="handleDrag" - > - <el-select ref="select" v-model="value" placeholder="璇烽€夋嫨"> - <el-option - v-for="item in options" - :key="item.value" - :label="item.label" - :value="item.value" - /> - </el-select> - <el-table :data="gridData"> - <el-table-column property="date" label="Date" width="150" /> - <el-table-column property="name" label="Name" width="200" /> - <el-table-column property="address" label="Address" /> - </el-table> - </el-dialog> - </div> -</template> - -<script> -import elDragDialog from "@/directive/el-drag-dialog"; // base on element-ui - -export default { - name: "DragDialogDemo", - directives: { elDragDialog }, - data() { - return { - dialogTableVisible: false, - options: [ - { value: "閫夐」1", label: "榛勯噾绯�" }, - { value: "閫夐」2", label: "鍙岀毊濂�" }, - { value: "閫夐」3", label: "铓典粩鐓�" }, - { value: "閫夐」4", label: "榫欓』闈�" } - ], - value: "", - gridData: [ - { - date: "2016-05-02", - name: "John Smith", - address: "No.1518, Jinshajiang Road, Putuo District" - }, - { - date: "2016-05-04", - name: "John Smith", - address: "No.1518, Jinshajiang Road, Putuo District" - }, - { - date: "2016-05-01", - name: "John Smith", - address: "No.1518, Jinshajiang Road, Putuo District" - }, - { - date: "2016-05-03", - name: "John Smith", - address: "No.1518, Jinshajiang Road, Putuo District" - } - ] - }; - }, - methods: { - // v-el-drag-dialog onDrag callback function - handleDrag() { - this.$refs.select.blur(); - } - } -}; -</script> diff --git a/WebSite/src/views/components-demo/drag-kanban.vue b/WebSite/src/views/components-demo/drag-kanban.vue deleted file mode 100644 index 7d732148784d297547acd1ec17a786fb43bbb2e7..0000000000000000000000000000000000000000 --- a/WebSite/src/views/components-demo/drag-kanban.vue +++ /dev/null @@ -1,83 +0,0 @@ -<template> - <div class="components-container board"> - <Kanban - :key="1" - :list="list1" - :group="group" - class="kanban todo" - header-text="Todo" - /> - <Kanban - :key="2" - :list="list2" - :group="group" - class="kanban working" - header-text="Working" - /> - <Kanban - :key="3" - :list="list3" - :group="group" - class="kanban done" - header-text="Done" - /> - </div> -</template> -<script> -import Kanban from "@/components/Kanban"; - -export default { - name: "DragKanbanDemo", - components: { - Kanban - }, - data() { - return { - group: "mission", - list1: [ - { name: "Mission", id: 1 }, - { name: "Mission", id: 2 }, - { name: "Mission", id: 3 }, - { name: "Mission", id: 4 } - ], - list2: [ - { name: "Mission", id: 5 }, - { name: "Mission", id: 6 }, - { name: "Mission", id: 7 } - ], - list3: [ - { name: "Mission", id: 8 }, - { name: "Mission", id: 9 }, - { name: "Mission", id: 10 } - ] - }; - } -}; -</script> -<style lang="scss"> -.board { - width: 1000px; - margin-left: 20px; - display: flex; - justify-content: space-around; - flex-direction: row; - align-items: flex-start; -} -.kanban { - &.todo { - .board-column-header { - background: #4a9ff9; - } - } - &.working { - .board-column-header { - background: #f9944a; - } - } - &.done { - .board-column-header { - background: #2ac06d; - } - } -} -</style> diff --git a/WebSite/src/views/components-demo/drag-select.vue b/WebSite/src/views/components-demo/drag-select.vue deleted file mode 100644 index 6caa5ba95da94f1f83f99ffeda341c55d95a9554..0000000000000000000000000000000000000000 --- a/WebSite/src/views/components-demo/drag-select.vue +++ /dev/null @@ -1,59 +0,0 @@ -<template> - <div class="components-container"> - <el-drag-select - v-model="value" - style="width:500px;" - multiple - placeholder="璇烽€夋嫨" - > - <el-option - v-for="item in options" - :key="item.value" - :label="item.label" - :value="item.value" - /> - </el-drag-select> - - <div style="margin-top:30px;"> - <el-tag v-for="item of value" :key="item" style="margin-right:15px;"> - {{ item }} - </el-tag> - </div> - </div> -</template> - -<script> -import ElDragSelect from "@/components/DragSelect"; // base on element-ui - -export default { - name: "DragSelectDemo", - components: { ElDragSelect }, - data() { - return { - value: ["Apple", "Banana", "Orange"], - options: [ - { - value: "Apple", - label: "Apple" - }, - { - value: "Banana", - label: "Banana" - }, - { - value: "Orange", - label: "Orange" - }, - { - value: "Pear", - label: "Pear" - }, - { - value: "Strawberry", - label: "Strawberry" - } - ] - }; - } -}; -</script> diff --git a/WebSite/src/views/components-demo/dropzone.vue b/WebSite/src/views/components-demo/dropzone.vue deleted file mode 100644 index e70d78e42992ace0042e752fefb0a8c2f63a31d9..0000000000000000000000000000000000000000 --- a/WebSite/src/views/components-demo/dropzone.vue +++ /dev/null @@ -1,39 +0,0 @@ -<template> - <div class="components-container"> - <aside> - Based on - <a class="link-type" href="https://github.com/rowanwins/vue-dropzone"> - dropzone </a - >. Because my business has special needs, and has to upload images to - qiniu, so instead of a third party, I chose encapsulate it by myself. It - is very simple, you can see the detail code in @/components/Dropzone. - </aside> - <div class="editor-container"> - <dropzone - id="myVueDropzone" - url="https://httpbin.org/post" - @dropzone-removedFile="dropzoneR" - @dropzone-success="dropzoneS" - /> - </div> - </div> -</template> - -<script> -import Dropzone from "@/components/Dropzone"; - -export default { - name: "DropzoneDemo", - components: { Dropzone }, - methods: { - dropzoneS(file) { - console.log(file); - this.$message({ message: "Upload success", type: "success" }); - }, - dropzoneR(file) { - console.log(file); - this.$message({ message: "Delete success", type: "success" }); - } - } -}; -</script> diff --git a/WebSite/src/views/components-demo/json-editor.vue b/WebSite/src/views/components-demo/json-editor.vue deleted file mode 100644 index e9d21ec6e7e044e387e94e2f6d6df0c61de86c96..0000000000000000000000000000000000000000 --- a/WebSite/src/views/components-demo/json-editor.vue +++ /dev/null @@ -1,42 +0,0 @@ -<template> - <div class="components-container"> - <aside> - Json-Editor is base on - <a href="https://github.com/codemirror/CodeMirror" target="_blank" - >CodeMirrorr</a - >. Lint base on - <a - href="https://github.com/codemirror/CodeMirror/blob/master/addon/lint/json-lint.js" - target="_blank" - >json-lint</a - >. - </aside> - <div class="editor-container"> - <json-editor ref="jsonEditor" v-model="value" /> - </div> - </div> -</template> - -<script> -import JsonEditor from "@/components/JsonEditor"; - -const jsonData = - '[{"items":[{"market_type":"forexdata","symbol":"XAUUSD"},{"market_type":"forexdata","symbol":"UKOIL"},{"market_type":"forexdata","symbol":"CORN"}],"name":""},{"items":[{"market_type":"forexdata","symbol":"XAUUSD"},{"market_type":"forexdata","symbol":"XAGUSD"},{"market_type":"forexdata","symbol":"AUTD"},{"market_type":"forexdata","symbol":"AGTD"}],"name":"璐甸噾灞�"},{"items":[{"market_type":"forexdata","symbol":"CORN"},{"market_type":"forexdata","symbol":"WHEAT"},{"market_type":"forexdata","symbol":"SOYBEAN"},{"market_type":"forexdata","symbol":"SUGAR"}],"name":"鍐滀骇鍝�"},{"items":[{"market_type":"forexdata","symbol":"UKOIL"},{"market_type":"forexdata","symbol":"USOIL"},{"market_type":"forexdata","symbol":"NGAS"}],"name":"鑳芥簮鍖栧伐"}]'; - -export default { - name: "JsonEditorDemo", - components: { JsonEditor }, - data() { - return { - value: JSON.parse(jsonData) - }; - } -}; -</script> - -<style scoped> -.editor-container { - position: relative; - height: 100%; -} -</style> diff --git a/WebSite/src/views/components-demo/markdown.vue b/WebSite/src/views/components-demo/markdown.vue deleted file mode 100644 index 4ad7f9a70855bbe7a3ddea485cb188476f2e3ed9..0000000000000000000000000000000000000000 --- a/WebSite/src/views/components-demo/markdown.vue +++ /dev/null @@ -1,124 +0,0 @@ -<template> - <div class="components-container"> - <aside> - Markdown is based on - <a href="https://github.com/nhnent/tui.editor" target="_blank" - >tui.editor</a - > - 锛宻imply wrapped with Vue. - <a - target="_blank" - href="https://panjiachen.github.io/vue-element-admin-site/feature/component/markdown-editor.html" - > - Documentation - </a> - </aside> - - <div class="editor-container"> - <el-tag class="tag-title"> - Basic: - </el-tag> - <markdown-editor v-model="content1" height="300px" /> - </div> - - <div class="editor-container"> - <el-tag class="tag-title"> - Markdown Mode: - </el-tag> - <markdown-editor - ref="markdownEditor" - v-model="content2" - :options="{ hideModeSwitch: true, previewStyle: 'tab' }" - height="200px" - /> - </div> - - <div class="editor-container"> - <el-tag class="tag-title"> - Customize Toolbar: - </el-tag> - <markdown-editor - v-model="content3" - :options="{ toolbarItems: ['heading', 'bold', 'italic'] }" - /> - </div> - - <div class="editor-container"> - <el-tag class="tag-title"> - I18n: - </el-tag> - <el-alert - :closable="false" - title="You can change the language of the admin system to see the effect" - type="success" - /> - <markdown-editor - ref="markdownEditor" - v-model="content4" - :language="language" - height="300px" - /> - </div> - - <el-button - style="margin-top:80px;" - type="primary" - icon="el-icon-document" - @click="getHtml" - > - Get HTML - </el-button> - <div v-html="html" /> - </div> -</template> - -<script> -import MarkdownEditor from "@/components/MarkdownEditor"; - -const content = ` -**This is test** - -* vue -* element -* webpack - -`; -export default { - name: "MarkdownDemo", - components: { MarkdownEditor }, - data() { - return { - content1: content, - content2: content, - content3: content, - content4: content, - html: "", - languageTypeList: { - en: "en_US", - zh: "zh_CN", - es: "es_ES" - } - }; - }, - computed: { - language() { - return this.languageTypeList["en"]; - } - }, - methods: { - getHtml() { - this.html = this.$refs.markdownEditor.getHtml(); - console.log(this.html); - } - } -}; -</script> - -<style scoped> -.editor-container { - margin-bottom: 30px; -} -.tag-title { - margin-bottom: 5px; -} -</style> diff --git a/WebSite/src/views/components-demo/mixin.vue b/WebSite/src/views/components-demo/mixin.vue deleted file mode 100644 index 18691eb54bf356f217facedc741642d188b25782..0000000000000000000000000000000000000000 --- a/WebSite/src/views/components-demo/mixin.vue +++ /dev/null @@ -1,200 +0,0 @@ -<template> - <div class="mixin-components-container"> - <el-row> - <el-card class="box-card"> - <div slot="header" class="clearfix"> - <span>Buttons</span> - </div> - <div style="margin-bottom:50px;"> - <el-col :span="4" class="text-center"> - <router-link class="pan-btn blue-btn" to="/documentation/index"> - Documentation - </router-link> - </el-col> - <el-col :span="4" class="text-center"> - <router-link class="pan-btn light-blue-btn" to="/icon/index"> - Icons - </router-link> - </el-col> - <el-col :span="4" class="text-center"> - <router-link class="pan-btn pink-btn" to="/excel/export-excel"> - Excel - </router-link> - </el-col> - <el-col :span="4" class="text-center"> - <router-link class="pan-btn green-btn" to="/table/complex-table"> - Table - </router-link> - </el-col> - <el-col :span="4" class="text-center"> - <router-link class="pan-btn tiffany-btn" to="/example/create"> - Form - </router-link> - </el-col> - <el-col :span="4" class="text-center"> - <router-link class="pan-btn yellow-btn" to="/theme/index"> - Theme - </router-link> - </el-col> - </div> - </el-card> - </el-row> - - <el-row :gutter="20" style="margin-top:50px;"> - <el-col :span="6"> - <el-card class="box-card"> - <div slot="header" class="clearfix"> - <span>Material Design 鐨刬nput</span> - </div> - <div style="height:100px;"> - <el-form :model="demo" :rules="demoRules"> - <el-form-item prop="title"> - <md-input - v-model="demo.title" - icon="el-icon-search" - name="title" - placeholder="杈撳叆鏍囬" - > - 鏍囬 - </md-input> - </el-form-item> - </el-form> - </div> - </el-card> - </el-col> - - <el-col :span="6"> - <el-card class="box-card"> - <div slot="header" class="clearfix"> - <span>鍥剧墖hover鏁堟灉</span> - </div> - <div class="component-item"> - <pan-thumb - width="100px" - height="100px" - image="https://wpimg.wallstcn.com/577965b9-bb9e-4e02-9f0c-095b41417191" - > - vue-element-admin - </pan-thumb> - </div> - </el-card> - </el-col> - - <el-col :span="6"> - <el-card class="box-card"> - <div slot="header" class="clearfix"> - <span>姘存尝绾� waves v-directive</span> - </div> - <div class="component-item"> - <el-button v-waves type="primary"> - 姘存尝绾规晥鏋� - </el-button> - </div> - </el-card> - </el-col> - - <el-col :span="6"> - <el-card class="box-card"> - <div slot="header" class="clearfix"> - <span>hover text</span> - </div> - <div class="component-item"> - <mallki class-name="mallki-text" text="vue-element-admin" /> - </div> - </el-card> - </el-col> - </el-row> - - <el-row :gutter="20" style="margin-top:50px;"> - <el-col :span="8"> - <el-card class="box-card"> - <div slot="header" class="clearfix"> - <span>Share</span> - </div> - <div class="component-item" style="height:420px;"> - <dropdown-menu - :items="articleList" - style="margin:0 auto;" - title="绯诲垪鏂囩珷" - /> - </div> - </el-card> - </el-col> - </el-row> - </div> -</template> - -<script> -import PanThumb from "@/components/PanThumb"; -import MdInput from "@/components/MDinput"; -import Mallki from "@/components/TextHoverEffect/Mallki"; -import DropdownMenu from "@/components/Share/DropdownMenu"; -import waves from "@/directive/waves/index.js"; // 姘存尝绾规寚浠� - -export default { - name: "ComponentMixinDemo", - components: { - PanThumb, - MdInput, - Mallki, - DropdownMenu - }, - directives: { - waves - }, - data() { - const validate = (rule, value, callback) => { - if (value.length !== 6) { - callback(new Error("璇疯緭鍏ュ叚涓瓧绗�")); - } else { - callback(); - } - }; - return { - demo: { - title: "" - }, - demoRules: { - title: [{ required: true, trigger: "change", validator: validate }] - }, - articleList: [ - { - title: "鍩虹绡�", - href: "https://juejin.im/post/59097cd7a22b9d0065fb61d2" - }, - { - title: "鐧诲綍鏉冮檺绡�", - href: "https://juejin.im/post/591aa14f570c35006961acac" - }, - { - title: "瀹炴垬绡�", - href: "https://juejin.im/post/593121aa0ce4630057f70d35" - }, - { - title: "vue-admin-template 绡�", - href: "https://juejin.im/post/595b4d776fb9a06bbe7dba56" - }, - { - title: "v4.0 绡�", - href: "https://juejin.im/post/5c92ff94f265da6128275a85" - }, - { - title: "浼橀泤鐨勪娇鐢� icon", - href: "https://juejin.im/post/59bb864b5188257e7a427c09" - } - ] - }; - } -}; -</script> - -<style scoped> -.mixin-components-container { - background-color: #f0f2f5; - padding: 30px; - min-height: calc(100vh - 84px); -} -.component-item { - min-height: 100px; -} -</style> diff --git a/WebSite/src/views/components-demo/split-pane.vue b/WebSite/src/views/components-demo/split-pane.vue deleted file mode 100644 index 59ba5995accf604080f958312669fe784ab0fb56..0000000000000000000000000000000000000000 --- a/WebSite/src/views/components-demo/split-pane.vue +++ /dev/null @@ -1,71 +0,0 @@ -<template> - <div class="components-container"> - <aside> - <strong>SplitPane</strong> If you've used - <a href="https://codepen.io/" target="_blank"> codepen</a>, - <a href="https://jsfiddle.net/" target="_blank"> jsfiddle </a>will not be - unfamiliar. - <a href="https://github.com/PanJiaChen/vue-split-pane" target="_blank"> - Github repository</a - > - </aside> - <split-pane split="vertical" @resize="resize"> - <template slot="paneL"> - <div class="left-container" /> - </template> - <template slot="paneR"> - <split-pane split="horizontal"> - <template slot="paneL"> - <div class="top-container" /> - </template> - <template slot="paneR"> - <div class="bottom-container" /> - </template> - </split-pane> - </template> - </split-pane> - </div> -</template> - -<script> -import splitPane from "vue-splitpane"; - -export default { - name: "SplitpaneDemo", - components: { splitPane }, - methods: { - resize() { - console.log("resize"); - } - } -}; -</script> - -<style scoped> -.components-container { - position: relative; - height: 100vh; -} - -.left-container { - background-color: #f38181; - height: 100%; -} - -.right-container { - background-color: #fce38a; - height: 200px; -} - -.top-container { - background-color: #fce38a; - width: 100%; - height: 100%; -} - -.bottom-container { - width: 100%; - background-color: #95e1d3; - height: 100%; -} -</style> diff --git a/WebSite/src/views/components-demo/sticky.vue b/WebSite/src/views/components-demo/sticky.vue deleted file mode 100644 index 882c6c3ff05cd2fcaebb4d79675795bde7aabaa0..0000000000000000000000000000000000000000 --- a/WebSite/src/views/components-demo/sticky.vue +++ /dev/null @@ -1,149 +0,0 @@ -<template> - <div> - <sticky :z-index="10" class-name="sub-navbar"> - <el-dropdown trigger="click"> - <el-button plain> - Platform<i class="el-icon-caret-bottom el-icon--right" /> - </el-button> - <el-dropdown-menu slot="dropdown" class="no-border"> - <el-checkbox-group v-model="platforms" style="padding: 5px 15px;"> - <el-checkbox - v-for="item in platformsOptions" - :key="item.key" - :label="item.key" - > - {{ item.name }} - </el-checkbox> - </el-checkbox-group> - </el-dropdown-menu> - </el-dropdown> - - <el-dropdown trigger="click"> - <el-button plain> - Link<i class="el-icon-caret-bottom el-icon--right" /> - </el-button> - <el-dropdown-menu - slot="dropdown" - class="no-padding no-border" - style="width:300px" - > - <el-input v-model="url" placeholder="Please enter the content"> - <template slot="prepend"> - Url - </template> - </el-input> - </el-dropdown-menu> - </el-dropdown> - - <div class="time-container"> - <el-date-picker - v-model="time" - type="datetime" - format="yyyy-MM-dd HH:mm:ss" - placeholder="Release time" - /> - </div> - - <el-button style="margin-left: 10px;" type="success"> - publish - </el-button> - </sticky> - - <div class="components-container"> - <aside> - Sticky header, When the page is scrolled to the preset position will be - sticky on the top. - </aside> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <sticky :sticky-top="200"> - <el-button type="primary"> placeholder</el-button> - </sticky> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - <div>placeholder</div> - </div> - </div> -</template> - -<script> -import Sticky from "@/components/Sticky"; - -export default { - name: "StickyDemo", - components: { Sticky }, - data() { - return { - time: "", - url: "", - platforms: ["a-platform"], - platformsOptions: [ - { key: "a-platform", name: "platformA" }, - { key: "b-platform", name: "platformB" }, - { key: "c-platform", name: "platformC" } - ], - pickerOptions: { - disabledDate(time) { - return time.getTime() > Date.now(); - } - } - }; - } -}; -</script> - -<style scoped> -.components-container div { - margin: 10px; -} - -.time-container { - display: inline-block; -} -</style> diff --git a/WebSite/src/views/components-demo/tinymce.vue b/WebSite/src/views/components-demo/tinymce.vue deleted file mode 100644 index aa1a9d847824110b23bcf6f637789ba89287c083..0000000000000000000000000000000000000000 --- a/WebSite/src/views/components-demo/tinymce.vue +++ /dev/null @@ -1,43 +0,0 @@ -<template> - <div class="components-container"> - <aside> - Rich text is a core feature of the management backend, but at the same - time it is a place with lots of pits. In the process of selecting rich - texts, I also took a lot of detours. The common rich texts on the market - have been basically used, and I finally chose Tinymce. See the more - detailed rich text comparison and introduction. - <a - target="_blank" - class="link-type" - href="https://panjiachen.github.io/vue-element-admin-site/component/rich-editor.html" - >Documentation</a - > - </aside> - <div> - <tinymce v-model="content" :height="300" /> - </div> - <div class="editor-content" v-html="content" /> - </div> -</template> - -<script> -import Tinymce from "@/components/Tinymce"; - -export default { - name: "TinymceDemo", - components: { Tinymce }, - data() { - return { - content: `<h1 style="text-align: center;">Welcome to the TinyMCE demo!</h1><p style="text-align: center; font-size: 15px;"><img title="TinyMCE Logo" src="//www.tinymce.com/images/glyph-tinymce@2x.png" alt="TinyMCE Logo" width="110" height="97" /><ul> - <li>Our <a href="//www.tinymce.com/docs/">documentation</a> is a great resource for learning how to configure TinyMCE.</li><li>Have a specific question? Visit the <a href="https://community.tinymce.com/forum/">Community Forum</a>.</li><li>We also offer enterprise grade support as part of <a href="https://tinymce.com/pricing">TinyMCE premium subscriptions</a>.</li> - </ul>` - }; - } -}; -</script> - -<style scoped> -.editor-content { - margin-top: 20px; -} -</style> diff --git a/WebSite/src/views/dashboard/admin/components/BarChart.vue b/WebSite/src/views/dashboard/admin/components/BarChart.vue deleted file mode 100644 index df33a08e1d37bb4e66829481c6530ecb20184f9e..0000000000000000000000000000000000000000 --- a/WebSite/src/views/dashboard/admin/components/BarChart.vue +++ /dev/null @@ -1,111 +0,0 @@ -<template> - <div :class="className" :style="{ height: height, width: width }" /> -</template> - -<script> -import echarts from "echarts"; -require("echarts/theme/macarons"); // echarts theme -import resize from "./mixins/resize"; - -const animationDuration = 6000; - -export default { - mixins: [resize], - props: { - className: { - type: String, - default: "chart" - }, - width: { - type: String, - default: "100%" - }, - height: { - type: String, - default: "300px" - } - }, - data() { - return { - chart: null - }; - }, - mounted() { - this.$nextTick(() => { - this.initChart(); - }); - }, - beforeDestroy() { - if (!this.chart) { - return; - } - this.chart.dispose(); - this.chart = null; - }, - methods: { - initChart() { - this.chart = echarts.init(this.$el, "macarons"); - - this.chart.setOption({ - tooltip: { - trigger: "axis", - axisPointer: { - // 鍧愭爣杞存寚绀哄櫒锛屽潗鏍囪酱瑙﹀彂鏈夋晥 - type: "shadow" // 榛樿涓虹洿绾匡紝鍙€変负锛�'line' | 'shadow' - } - }, - grid: { - top: 10, - left: "2%", - right: "2%", - bottom: "3%", - containLabel: true - }, - xAxis: [ - { - type: "category", - data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"], - axisTick: { - alignWithLabel: true - } - } - ], - yAxis: [ - { - type: "value", - axisTick: { - show: false - } - } - ], - series: [ - { - name: "pageA", - type: "bar", - stack: "vistors", - barWidth: "60%", - data: [79, 52, 200, 334, 390, 330, 220], - animationDuration - }, - { - name: "pageB", - type: "bar", - stack: "vistors", - barWidth: "60%", - data: [80, 52, 200, 334, 390, 330, 220], - animationDuration - }, - { - name: "pageC", - type: "bar", - stack: "vistors", - barWidth: "60%", - data: [30, 52, 200, 334, 390, 330, 220], - animationDuration - } - ] - }); - } - } -}; -</script> diff --git a/WebSite/src/views/dashboard/admin/components/BoxCard.vue b/WebSite/src/views/dashboard/admin/components/BoxCard.vue deleted file mode 100644 index 9eb4c311a15fc6c005546414f06073551e7a20e7..0000000000000000000000000000000000000000 --- a/WebSite/src/views/dashboard/admin/components/BoxCard.vue +++ /dev/null @@ -1,116 +0,0 @@ -<template> - <el-card class="box-card-component" style="margin-left:8px;"> - <div slot="header" class="box-card-header"> - <img - src="https://wpimg.wallstcn.com/e7d23d71-cf19-4b90-a1cc-f56af8c0903d.png" - /> - </div> - <div style="position:relative;"> - <pan-thumb :image="avatar" class="panThumb" /> - <mallki class-name="mallki-text" text="vue-element-admin" /> - <div style="padding-top:35px;" class="progress-item"> - <span>Vue</span> - <el-progress :percentage="70" /> - </div> - <div class="progress-item"> - <span>JavaScript</span> - <el-progress :percentage="18" /> - </div> - <div class="progress-item"> - <span>Css</span> - <el-progress :percentage="12" /> - </div> - <div class="progress-item"> - <span>ESLint</span> - <el-progress :percentage="100" status="success" /> - </div> - </div> - </el-card> -</template> - -<script> -import { mapGetters } from "vuex"; -import PanThumb from "@/components/PanThumb"; -import Mallki from "@/components/TextHoverEffect/Mallki"; - -export default { - components: { PanThumb, Mallki }, - - filters: { - statusFilter(status) { - const statusMap = { - success: "success", - pending: "danger" - }; - return statusMap[status]; - } - }, - data() { - return { - statisticsData: { - article_count: 1024, - pageviews_count: 1024 - } - }; - }, - computed: { - ...mapGetters(["name", "avatar", "roles"]) - } -}; -</script> - -<style lang="scss"> -.box-card-component { - .el-card__header { - padding: 0px !important; - } -} -</style> -<style lang="scss" scoped> -.box-card-component { - .box-card-header { - position: relative; - height: 220px; - img { - width: 100%; - height: 100%; - transition: all 0.2s linear; - &:hover { - transform: scale(1.1, 1.1); - filter: contrast(130%); - } - } - } - .mallki-text { - position: absolute; - top: 0px; - right: 0px; - font-size: 20px; - font-weight: bold; - } - .panThumb { - z-index: 100; - height: 70px !important; - width: 70px !important; - position: absolute !important; - top: -45px; - left: 0px; - border: 5px solid #ffffff; - background-color: #fff; - margin: auto; - box-shadow: none !important; - /deep/ .pan-info { - box-shadow: none !important; - } - } - .progress-item { - margin-bottom: 10px; - font-size: 14px; - } - @media only screen and (max-width: 1510px) { - .mallki-text { - display: none; - } - } -} -</style> diff --git a/WebSite/src/views/dashboard/admin/components/LineChart.vue b/WebSite/src/views/dashboard/admin/components/LineChart.vue deleted file mode 100644 index e8cdf8971d59c7d2c68ada406f889cd5007893e3..0000000000000000000000000000000000000000 --- a/WebSite/src/views/dashboard/admin/components/LineChart.vue +++ /dev/null @@ -1,138 +0,0 @@ -<template> - <div :class="className" :style="{ height: height, width: width }" /> -</template> - -<script> -import echarts from "echarts"; -require("echarts/theme/macarons"); // echarts theme -import resize from "./mixins/resize"; - -export default { - mixins: [resize], - props: { - className: { - type: String, - default: "chart" - }, - width: { - type: String, - default: "100%" - }, - height: { - type: String, - default: "350px" - }, - autoResize: { - type: Boolean, - default: true - }, - chartData: { - type: Object, - required: true - } - }, - data() { - return { - chart: null - }; - }, - watch: { - chartData: { - deep: true, - handler(val) { - this.setOptions(val); - } - } - }, - mounted() { - this.$nextTick(() => { - this.initChart(); - }); - }, - beforeDestroy() { - if (!this.chart) { - return; - } - this.chart.dispose(); - this.chart = null; - }, - methods: { - initChart() { - this.chart = echarts.init(this.$el, "macarons"); - this.setOptions(this.chartData); - }, - setOptions({ expectedData, actualData } = {}) { - this.chart.setOption({ - xAxis: { - data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"], - boundaryGap: false, - axisTick: { - show: false - } - }, - grid: { - left: 10, - right: 10, - bottom: 20, - top: 30, - containLabel: true - }, - tooltip: { - trigger: "axis", - axisPointer: { - type: "cross" - }, - padding: [5, 10] - }, - yAxis: { - axisTick: { - show: false - } - }, - legend: { - data: ["expected", "actual"] - }, - series: [ - { - name: "expected", - itemStyle: { - normal: { - color: "#FF005A", - lineStyle: { - color: "#FF005A", - width: 2 - } - } - }, - smooth: true, - type: "line", - data: expectedData, - animationDuration: 2800, - animationEasing: "cubicInOut" - }, - { - name: "actual", - smooth: true, - type: "line", - itemStyle: { - normal: { - color: "#3888fa", - lineStyle: { - color: "#3888fa", - width: 2 - }, - areaStyle: { - color: "#f3f8ff" - } - } - }, - data: actualData, - animationDuration: 2800, - animationEasing: "quadraticOut" - } - ] - }); - } - } -}; -</script> diff --git a/WebSite/src/views/dashboard/admin/components/PanelGroup.vue b/WebSite/src/views/dashboard/admin/components/PanelGroup.vue deleted file mode 100644 index 49ffc0044b7e1b4180930224e4da7a2df2dc673e..0000000000000000000000000000000000000000 --- a/WebSite/src/views/dashboard/admin/components/PanelGroup.vue +++ /dev/null @@ -1,201 +0,0 @@ -<template> - <el-row :gutter="40" class="panel-group"> - <el-col :xs="12" :sm="12" :lg="6" class="card-panel-col"> - <div class="card-panel" @click="handleSetLineChartData('newVisitis')"> - <div class="card-panel-icon-wrapper icon-people"> - <svg-icon icon-class="peoples" class-name="card-panel-icon" /> - </div> - <div class="card-panel-description"> - <div class="card-panel-text"> - New Visits - </div> - <count-to - :start-val="0" - :end-val="102400" - :duration="2600" - class="card-panel-num" - /> - </div> - </div> - </el-col> - <el-col :xs="12" :sm="12" :lg="6" class="card-panel-col"> - <div class="card-panel" @click="handleSetLineChartData('messages')"> - <div class="card-panel-icon-wrapper icon-message"> - <svg-icon icon-class="message" class-name="card-panel-icon" /> - </div> - <div class="card-panel-description"> - <div class="card-panel-text"> - Messages - </div> - <count-to - :start-val="0" - :end-val="81212" - :duration="3000" - class="card-panel-num" - /> - </div> - </div> - </el-col> - <el-col :xs="12" :sm="12" :lg="6" class="card-panel-col"> - <div class="card-panel" @click="handleSetLineChartData('purchases')"> - <div class="card-panel-icon-wrapper icon-money"> - <svg-icon icon-class="money" class-name="card-panel-icon" /> - </div> - <div class="card-panel-description"> - <div class="card-panel-text"> - Purchases - </div> - <count-to - :start-val="0" - :end-val="9280" - :duration="3200" - class="card-panel-num" - /> - </div> - </div> - </el-col> - <el-col :xs="12" :sm="12" :lg="6" class="card-panel-col"> - <div class="card-panel" @click="handleSetLineChartData('shoppings')"> - <div class="card-panel-icon-wrapper icon-shopping"> - <svg-icon icon-class="shopping" class-name="card-panel-icon" /> - </div> - <div class="card-panel-description"> - <div class="card-panel-text"> - Shoppings - </div> - <count-to - :start-val="0" - :end-val="13600" - :duration="3600" - class="card-panel-num" - /> - </div> - </div> - </el-col> - </el-row> -</template> - -<script> -import CountTo from "vue-count-to"; - -export default { - components: { - CountTo - }, - methods: { - handleSetLineChartData(type) { - this.$emit("handleSetLineChartData", type); - } - } -}; -</script> - -<style lang="scss" scoped> -.panel-group { - margin-top: 18px; - - .card-panel-col { - margin-bottom: 32px; - } - - .card-panel { - height: 108px; - cursor: pointer; - font-size: 12px; - position: relative; - overflow: hidden; - color: #666; - background: #fff; - box-shadow: 4px 4px 40px rgba(0, 0, 0, 0.05); - border-color: rgba(0, 0, 0, 0.05); - - &:hover { - .card-panel-icon-wrapper { - color: #fff; - } - - .icon-people { - background: #40c9c6; - } - - .icon-message { - background: #36a3f7; - } - - .icon-money { - background: #f4516c; - } - - .icon-shopping { - background: #34bfa3; - } - } - - .icon-people { - color: #40c9c6; - } - - .icon-message { - color: #36a3f7; - } - - .icon-money { - color: #f4516c; - } - - .icon-shopping { - color: #34bfa3; - } - - .card-panel-icon-wrapper { - float: left; - margin: 14px 0 0 14px; - padding: 16px; - transition: all 0.38s ease-out; - border-radius: 6px; - } - - .card-panel-icon { - float: left; - font-size: 48px; - } - - .card-panel-description { - float: right; - font-weight: bold; - margin: 26px; - margin-left: 0px; - - .card-panel-text { - line-height: 18px; - color: rgba(0, 0, 0, 0.45); - font-size: 16px; - margin-bottom: 12px; - } - - .card-panel-num { - font-size: 20px; - } - } - } -} - -@media (max-width: 550px) { - .card-panel-description { - display: none; - } - - .card-panel-icon-wrapper { - float: none !important; - width: 100%; - height: 100%; - margin: 0 !important; - - .svg-icon { - display: block; - margin: 14px auto !important; - float: none !important; - } - } -} -</style> diff --git a/WebSite/src/views/dashboard/admin/components/PieChart.vue b/WebSite/src/views/dashboard/admin/components/PieChart.vue deleted file mode 100644 index cd81bc029c41bdd5974a0ccce491d419d0dbae81..0000000000000000000000000000000000000000 --- a/WebSite/src/views/dashboard/admin/components/PieChart.vue +++ /dev/null @@ -1,79 +0,0 @@ -<template> - <div :class="className" :style="{ height: height, width: width }" /> -</template> - -<script> -import echarts from "echarts"; -require("echarts/theme/macarons"); // echarts theme -import resize from "./mixins/resize"; - -export default { - mixins: [resize], - props: { - className: { - type: String, - default: "chart" - }, - width: { - type: String, - default: "100%" - }, - height: { - type: String, - default: "300px" - } - }, - data() { - return { - chart: null - }; - }, - mounted() { - this.$nextTick(() => { - this.initChart(); - }); - }, - beforeDestroy() { - if (!this.chart) { - return; - } - this.chart.dispose(); - this.chart = null; - }, - methods: { - initChart() { - this.chart = echarts.init(this.$el, "macarons"); - - this.chart.setOption({ - tooltip: { - trigger: "item", - formatter: "{a} <br/>{b} : {c} ({d}%)" - }, - legend: { - left: "center", - bottom: "10", - data: ["Industries", "Technology", "Forex", "Gold", "Forecasts"] - }, - series: [ - { - name: "WEEKLY WRITE ARTICLES", - type: "pie", - roseType: "radius", - radius: [15, 95], - center: ["50%", "38%"], - data: [ - { value: 320, name: "Industries" }, - { value: 240, name: "Technology" }, - { value: 149, name: "Forex" }, - { value: 100, name: "Gold" }, - { value: 59, name: "Forecasts" } - ], - animationEasing: "cubicInOut", - animationDuration: 2600 - } - ] - }); - } - } -}; -</script> diff --git a/WebSite/src/views/dashboard/admin/components/RaddarChart.vue b/WebSite/src/views/dashboard/admin/components/RaddarChart.vue deleted file mode 100644 index bf0e1cd61f8977e94b423ac605af92f76e703760..0000000000000000000000000000000000000000 --- a/WebSite/src/views/dashboard/admin/components/RaddarChart.vue +++ /dev/null @@ -1,119 +0,0 @@ -<template> - <div :class="className" :style="{ height: height, width: width }" /> -</template> - -<script> -import echarts from "echarts"; -require("echarts/theme/macarons"); // echarts theme -import resize from "./mixins/resize"; - -const animationDuration = 3000; - -export default { - mixins: [resize], - props: { - className: { - type: String, - default: "chart" - }, - width: { - type: String, - default: "100%" - }, - height: { - type: String, - default: "300px" - } - }, - data() { - return { - chart: null - }; - }, - mounted() { - this.$nextTick(() => { - this.initChart(); - }); - }, - beforeDestroy() { - if (!this.chart) { - return; - } - this.chart.dispose(); - this.chart = null; - }, - methods: { - initChart() { - this.chart = echarts.init(this.$el, "macarons"); - - this.chart.setOption({ - tooltip: { - trigger: "axis", - axisPointer: { - // 鍧愭爣杞存寚绀哄櫒锛屽潗鏍囪酱瑙﹀彂鏈夋晥 - type: "shadow" // 榛樿涓虹洿绾匡紝鍙€変负锛�'line' | 'shadow' - } - }, - radar: { - radius: "66%", - center: ["50%", "42%"], - splitNumber: 8, - splitArea: { - areaStyle: { - color: "rgba(127,95,132,.3)", - opacity: 1, - shadowBlur: 45, - shadowColor: "rgba(0,0,0,.5)", - shadowOffsetX: 0, - shadowOffsetY: 15 - } - }, - indicator: [ - { name: "Sales", max: 10000 }, - { name: "Administration", max: 20000 }, - { name: "Information Techology", max: 20000 }, - { name: "Customer Support", max: 20000 }, - { name: "Development", max: 20000 }, - { name: "Marketing", max: 20000 } - ] - }, - legend: { - left: "center", - bottom: "10", - data: ["Allocated Budget", "Expected Spending", "Actual Spending"] - }, - series: [ - { - type: "radar", - symbolSize: 0, - areaStyle: { - normal: { - shadowBlur: 13, - shadowColor: "rgba(0,0,0,.2)", - shadowOffsetX: 0, - shadowOffsetY: 10, - opacity: 1 - } - }, - data: [ - { - value: [5000, 7000, 12000, 11000, 15000, 14000], - name: "Allocated Budget" - }, - { - value: [4000, 9000, 15000, 15000, 13000, 11000], - name: "Expected Spending" - }, - { - value: [5500, 11000, 12000, 15000, 12000, 12000], - name: "Actual Spending" - } - ], - animationDuration: animationDuration - } - ] - }); - } - } -}; -</script> diff --git a/WebSite/src/views/dashboard/admin/components/TodoList/Todo.vue b/WebSite/src/views/dashboard/admin/components/TodoList/Todo.vue deleted file mode 100644 index 41123587614d1ab379b58e0dbc6aac5692e276d0..0000000000000000000000000000000000000000 --- a/WebSite/src/views/dashboard/admin/components/TodoList/Todo.vue +++ /dev/null @@ -1,81 +0,0 @@ -<template> - <li :class="{ completed: todo.done, editing: editing }" class="todo"> - <div class="view"> - <input - :checked="todo.done" - class="toggle" - type="checkbox" - @change="toggleTodo(todo)" - /> - <label @dblclick="editing = true" v-text="todo.text" /> - <button class="destroy" @click="deleteTodo(todo)" /> - </div> - <input - v-show="editing" - v-focus="editing" - :value="todo.text" - class="edit" - @keyup.enter="doneEdit" - @keyup.esc="cancelEdit" - @blur="doneEdit" - /> - </li> -</template> - -<script> -export default { - name: "Todo", - directives: { - focus(el, { value }, { context }) { - if (value) { - context.$nextTick(() => { - el.focus(); - }); - } - } - }, - props: { - todo: { - type: Object, - default: function() { - return {}; - } - } - }, - data() { - return { - editing: false - }; - }, - methods: { - deleteTodo(todo) { - this.$emit("deleteTodo", todo); - }, - editTodo({ todo, value }) { - this.$emit("editTodo", { todo, value }); - }, - toggleTodo(todo) { - this.$emit("toggleTodo", todo); - }, - doneEdit(e) { - const value = e.target.value.trim(); - const { todo } = this; - if (!value) { - this.deleteTodo({ - todo - }); - } else if (this.editing) { - this.editTodo({ - todo, - value - }); - this.editing = false; - } - }, - cancelEdit(e) { - e.target.value = this.todo.text; - this.editing = false; - } - } -}; -</script> diff --git a/WebSite/src/views/dashboard/admin/components/TodoList/index.scss b/WebSite/src/views/dashboard/admin/components/TodoList/index.scss deleted file mode 100644 index 74ce0d54ff0389b864906b96409be9670234de36..0000000000000000000000000000000000000000 --- a/WebSite/src/views/dashboard/admin/components/TodoList/index.scss +++ /dev/null @@ -1,320 +0,0 @@ -.todoapp { - font: 14px 'Helvetica Neue', Helvetica, Arial, sans-serif; - line-height: 1.4em; - color: #4d4d4d; - min-width: 230px; - max-width: 550px; - margin: 0 auto ; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-weight: 300; - background: #fff; - z-index: 1; - position: relative; - button { - margin: 0; - padding: 0; - border: 0; - background: none; - font-size: 100%; - vertical-align: baseline; - font-family: inherit; - font-weight: inherit; - color: inherit; - -webkit-appearance: none; - appearance: none; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - } - :focus { - outline: 0; - } - .hidden { - display: none; - } - .todoapp { - background: #fff; - margin: 130px 0 40px 0; - position: relative; - box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), 0 25px 50px 0 rgba(0, 0, 0, 0.1); - } - .todoapp input::-webkit-input-placeholder { - font-style: italic; - font-weight: 300; - color: #e6e6e6; - } - .todoapp input::-moz-placeholder { - font-style: italic; - font-weight: 300; - color: #e6e6e6; - } - .todoapp input::input-placeholder { - font-style: italic; - font-weight: 300; - color: #e6e6e6; - } - .todoapp h1 { - position: absolute; - top: -155px; - width: 100%; - font-size: 100px; - font-weight: 100; - text-align: center; - color: rgba(175, 47, 47, 0.15); - -webkit-text-rendering: optimizeLegibility; - -moz-text-rendering: optimizeLegibility; - text-rendering: optimizeLegibility; - } - .new-todo, - .edit { - position: relative; - margin: 0; - width: 100%; - font-size: 18px; - font-family: inherit; - font-weight: inherit; - line-height: 1.4em; - border: 0; - color: inherit; - padding: 6px; - border: 1px solid #999; - box-shadow: inset 0 -1px 5px 0 rgba(0, 0, 0, 0.2); - box-sizing: border-box; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - } - .new-todo { - padding: 10px 16px 16px 60px; - border: none; - background: rgba(0, 0, 0, 0.003); - box-shadow: inset 0 -2px 1px rgba(0, 0, 0, 0.03); - } - .main { - position: relative; - z-index: 2; - border-top: 1px solid #e6e6e6; - } - .toggle-all { - text-align: center; - border: none; - /* Mobile Safari */ - opacity: 0; - position: absolute; - } - .toggle-all+label { - width: 60px; - height: 34px; - font-size: 0; - position: absolute; - top: -52px; - left: -13px; - -webkit-transform: rotate(90deg); - transform: rotate(90deg); - } - .toggle-all+label:before { - content: '鉂�'; - font-size: 22px; - color: #e6e6e6; - padding: 10px 27px 10px 27px; - } - .toggle-all:checked+label:before { - color: #737373; - } - .todo-list { - margin: 0; - padding: 0; - list-style: none; - } - .todo-list li { - position: relative; - font-size: 24px; - border-bottom: 1px solid #ededed; - } - .todo-list li:last-child { - border-bottom: none; - } - .todo-list li.editing { - border-bottom: none; - padding: 0; - } - .todo-list li.editing .edit { - display: block; - width: 506px; - padding: 12px 16px; - margin: 0 0 0 43px; - } - .todo-list li.editing .view { - display: none; - } - .todo-list li .toggle { - text-align: center; - width: 40px; - /* auto, since non-WebKit browsers doesn't support input styling */ - height: auto; - position: absolute; - top: 0; - bottom: 0; - margin: auto 0; - border: none; - /* Mobile Safari */ - -webkit-appearance: none; - appearance: none; - } - .todo-list li .toggle { - opacity: 0; - } - .todo-list li .toggle+label { - /* - Firefox requires `#` to be escaped - https://bugzilla.mozilla.org/show_bug.cgi?id=922433 - IE and Edge requires *everything* to be escaped to render, so we do that instead of just the `#` - https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/7157459/ - */ - background-image: url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23ededed%22%20stroke-width%3D%223%22/%3E%3C/svg%3E'); - background-repeat: no-repeat; - background-position: center left; - background-size: 36px; - } - .todo-list li .toggle:checked+label { - background-size: 36px; - background-image: url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23bddad5%22%20stroke-width%3D%223%22/%3E%3Cpath%20fill%3D%22%235dc2af%22%20d%3D%22M72%2025L42%2071%2027%2056l-4%204%2020%2020%2034-52z%22/%3E%3C/svg%3E'); - } - .todo-list li label { - word-break: break-all; - padding: 15px 15px 15px 50px; - display: block; - line-height: 1.0; - font-size: 14px; - transition: color 0.4s; - } - .todo-list li.completed label { - color: #d9d9d9; - text-decoration: line-through; - } - .todo-list li .destroy { - display: none; - position: absolute; - top: 0; - right: 10px; - bottom: 0; - width: 40px; - height: 40px; - margin: auto 0; - font-size: 30px; - color: #cc9a9a; - transition: color 0.2s ease-out; - cursor: pointer; - } - .todo-list li .destroy:hover { - color: #af5b5e; - } - .todo-list li .destroy:after { - content: '脳'; - } - .todo-list li:hover .destroy { - display: block; - } - .todo-list li .edit { - display: none; - } - .todo-list li.editing:last-child { - margin-bottom: -1px; - } - .footer { - color: #777; - position: relative; - padding: 10px 15px; - height: 40px; - text-align: center; - border-top: 1px solid #e6e6e6; - } - .footer:before { - content: ''; - position: absolute; - right: 0; - bottom: 0; - left: 0; - height: 40px; - overflow: hidden; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 8px 0 -3px #f6f6f6, 0 9px 1px -3px rgba(0, 0, 0, 0.2), 0 16px 0 -6px #f6f6f6, 0 17px 2px -6px rgba(0, 0, 0, 0.2); - } - .todo-count { - float: left; - text-align: left; - } - .todo-count strong { - font-weight: 300; - } - .filters { - margin: 0; - padding: 0; - position: relative; - z-index: 1; - list-style: none; - } - .filters li { - display: inline; - } - .filters li a { - color: inherit; - font-size: 12px; - padding: 3px 7px; - text-decoration: none; - border: 1px solid transparent; - border-radius: 3px; - } - .filters li a:hover { - border-color: rgba(175, 47, 47, 0.1); - } - .filters li a.selected { - border-color: rgba(175, 47, 47, 0.2); - } - .clear-completed, - html .clear-completed:active { - float: right; - position: relative; - line-height: 20px; - text-decoration: none; - cursor: pointer; - } - .clear-completed:hover { - text-decoration: underline; - } - .info { - margin: 65px auto 0; - color: #bfbfbf; - font-size: 10px; - text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); - text-align: center; - } - .info p { - line-height: 1; - } - .info a { - color: inherit; - text-decoration: none; - font-weight: 400; - } - .info a:hover { - text-decoration: underline; - } - /* - Hack to remove background from Mobile Safari. - Can't use it globally since it destroys checkboxes in Firefox -*/ - @media screen and (-webkit-min-device-pixel-ratio:0) { - .toggle-all, - .todo-list li .toggle { - background: none; - } - .todo-list li .toggle { - height: 40px; - } - } - @media (max-width: 430px) { - .footer { - height: 50px; - } - .filters { - bottom: 10px; - } - } -} diff --git a/WebSite/src/views/dashboard/admin/components/TodoList/index.vue b/WebSite/src/views/dashboard/admin/components/TodoList/index.vue deleted file mode 100644 index 7a320156d23914f79012b4779cc80216eaa06f4a..0000000000000000000000000000000000000000 --- a/WebSite/src/views/dashboard/admin/components/TodoList/index.vue +++ /dev/null @@ -1,142 +0,0 @@ -<template> - <section class="todoapp"> - <!-- header --> - <header class="header"> - <input - class="new-todo" - autocomplete="off" - placeholder="Todo List" - @keyup.enter="addTodo" - /> - </header> - <!-- main section --> - <section v-show="todos.length" class="main"> - <input - id="toggle-all" - :checked="allChecked" - class="toggle-all" - type="checkbox" - @change="toggleAll({ done: !allChecked })" - /> - <label for="toggle-all" /> - <ul class="todo-list"> - <todo - v-for="(todo, index) in filteredTodos" - :key="index" - :todo="todo" - @toggleTodo="toggleTodo" - @editTodo="editTodo" - @deleteTodo="deleteTodo" - /> - </ul> - </section> - <!-- footer --> - <footer v-show="todos.length" class="footer"> - <span class="todo-count"> - <strong>{{ remaining }}</strong> - {{ remaining | pluralize("item") }} left - </span> - <ul class="filters"> - <li v-for="(val, key) in filters" :key="key"> - <a - :class="{ selected: visibility === key }" - @click.prevent="visibility = key" - >{{ key | capitalize }}</a - > - </li> - </ul> - <!-- <button class="clear-completed" v-show="todos.length > remaining" @click="clearCompleted"> - Clear completed - </button> --> - </footer> - </section> -</template> - -<script> -import Todo from "./Todo.vue"; - -const STORAGE_KEY = "todos"; -const filters = { - all: todos => todos, - active: todos => todos.filter(todo => !todo.done), - completed: todos => todos.filter(todo => todo.done) -}; -const defalutList = [ - { text: "star this repository", done: false }, - { text: "fork this repository", done: false }, - { text: "follow author", done: false }, - { text: "vue-element-admin", done: true }, - { text: "vue", done: true }, - { text: "element-ui", done: true }, - { text: "axios", done: true }, - { text: "webpack", done: true } -]; -export default { - components: { Todo }, - filters: { - pluralize: (n, w) => (n === 1 ? w : w + "s"), - capitalize: s => s.charAt(0).toUpperCase() + s.slice(1) - }, - data() { - return { - visibility: "all", - filters, - // todos: JSON.parse(window.localStorage.getItem(STORAGE_KEY)) || defalutList - todos: defalutList - }; - }, - computed: { - allChecked() { - return this.todos.every(todo => todo.done); - }, - filteredTodos() { - return filters[this.visibility](this.todos); - }, - remaining() { - return this.todos.filter(todo => !todo.done).length; - } - }, - methods: { - setLocalStorage() { - window.localStorage.setItem(STORAGE_KEY, JSON.stringify(this.todos)); - }, - addTodo(e) { - const text = e.target.value; - if (text.trim()) { - this.todos.push({ - text, - done: false - }); - this.setLocalStorage(); - } - e.target.value = ""; - }, - toggleTodo(val) { - val.done = !val.done; - this.setLocalStorage(); - }, - deleteTodo(todo) { - this.todos.splice(this.todos.indexOf(todo), 1); - this.setLocalStorage(); - }, - editTodo({ todo, value }) { - todo.text = value; - this.setLocalStorage(); - }, - clearCompleted() { - this.todos = this.todos.filter(todo => !todo.done); - this.setLocalStorage(); - }, - toggleAll({ done }) { - this.todos.forEach(todo => { - todo.done = done; - this.setLocalStorage(); - }); - } - } -}; -</script> - -<style lang="scss"> -@import "./index.scss"; -</style> diff --git a/WebSite/src/views/dashboard/admin/components/TransactionTable.vue b/WebSite/src/views/dashboard/admin/components/TransactionTable.vue deleted file mode 100644 index aa6a95c95ad250a74cbe08ef0288b59429f85166..0000000000000000000000000000000000000000 --- a/WebSite/src/views/dashboard/admin/components/TransactionTable.vue +++ /dev/null @@ -1,55 +0,0 @@ -<template> - <el-table :data="list" style="width: 100%;padding-top: 15px;"> - <el-table-column label="Order_No" min-width="200"> - <template slot-scope="scope"> - {{ scope.row.order_no | orderNoFilter }} - </template> - </el-table-column> - <el-table-column label="Price" width="195" align="center"> - <template slot-scope="scope"> - 楼{{ scope.row.price | toThousandFilter }} - </template> - </el-table-column> - <el-table-column label="Status" width="100" align="center"> - <template slot-scope="{ row }"> - <el-tag :type="row.status | statusFilter"> - {{ row.status }} - </el-tag> - </template> - </el-table-column> - </el-table> -</template> - -<script> -import { transactionList } from "@/api/remote-search"; - -export default { - filters: { - statusFilter(status) { - const statusMap = { - success: "success", - pending: "danger" - }; - return statusMap[status]; - }, - orderNoFilter(str) { - return str.substring(0, 30); - } - }, - data() { - return { - list: null - }; - }, - created() { - this.fetchData(); - }, - methods: { - fetchData() { - transactionList().then(response => { - this.list = response.data.items.slice(0, 8); - }); - } - } -}; -</script> diff --git a/WebSite/src/views/dashboard/admin/components/mixins/resize.js b/WebSite/src/views/dashboard/admin/components/mixins/resize.js deleted file mode 100644 index 53153bf8feaa6390a210de513925ed944b1d2149..0000000000000000000000000000000000000000 --- a/WebSite/src/views/dashboard/admin/components/mixins/resize.js +++ /dev/null @@ -1,65 +0,0 @@ -import { debounce } from "@/utils"; - -export default { - data() { - return { - $_sidebarElm: null, - $_resizeHandler: null - }; - }, - mounted() { - this.$_resizeHandler = debounce(() => { - if (this.chart) { - this.chart.resize(); - } - }, 100); - this.$_initResizeEvent(); - this.$_initSidebarResizeEvent(); - }, - beforeDestroy() { - this.$_destroyResizeEvent(); - this.$_destroySidebarResizeEvent(); - }, - // to fixed bug when cached by keep-alive - // https://github.com/PanJiaChen/vue-element-admin/issues/2116 - activated() { - this.$_initResizeEvent(); - this.$_initSidebarResizeEvent(); - }, - deactivated() { - this.$_destroyResizeEvent(); - this.$_destroySidebarResizeEvent(); - }, - methods: { - // use $_ for mixins properties - // https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential - $_initResizeEvent() { - window.addEventListener("resize", this.$_resizeHandler); - }, - $_destroyResizeEvent() { - window.removeEventListener("resize", this.$_resizeHandler); - }, - $_sidebarResizeHandler(e) { - if (e.propertyName === "width") { - this.$_resizeHandler(); - } - }, - $_initSidebarResizeEvent() { - this.$_sidebarElm = document.getElementsByClassName( - "sidebar-container" - )[0]; - this.$_sidebarElm && - this.$_sidebarElm.addEventListener( - "transitionend", - this.$_sidebarResizeHandler - ); - }, - $_destroySidebarResizeEvent() { - this.$_sidebarElm && - this.$_sidebarElm.removeEventListener( - "transitionend", - this.$_sidebarResizeHandler - ); - } - } -}; diff --git a/WebSite/src/views/dashboard/admin/index.vue b/WebSite/src/views/dashboard/admin/index.vue deleted file mode 100644 index ac41376eac60d8a054f7455488a3aa98e43e10db..0000000000000000000000000000000000000000 --- a/WebSite/src/views/dashboard/admin/index.vue +++ /dev/null @@ -1,145 +0,0 @@ -<template> - <div class="dashboard-editor-container"> - <github-corner class="github-corner" /> - - <panel-group @handleSetLineChartData="handleSetLineChartData" /> - - <el-row style="background:#fff;padding:16px 16px 0;margin-bottom:32px;"> - <line-chart :chart-data="lineChartData" /> - </el-row> - - <el-row :gutter="32"> - <el-col :xs="24" :sm="24" :lg="8"> - <div class="chart-wrapper"> - <raddar-chart /> - </div> - </el-col> - <el-col :xs="24" :sm="24" :lg="8"> - <div class="chart-wrapper"> - <pie-chart /> - </div> - </el-col> - <el-col :xs="24" :sm="24" :lg="8"> - <div class="chart-wrapper"> - <bar-chart /> - </div> - </el-col> - </el-row> - - <el-row :gutter="8"> - <el-col - :xs="{ span: 24 }" - :sm="{ span: 24 }" - :md="{ span: 24 }" - :lg="{ span: 12 }" - :xl="{ span: 12 }" - style="padding-right:8px;margin-bottom:30px;" - > - <transaction-table /> - </el-col> - <el-col - :xs="{ span: 24 }" - :sm="{ span: 12 }" - :md="{ span: 12 }" - :lg="{ span: 6 }" - :xl="{ span: 6 }" - style="margin-bottom:30px;" - > - <todo-list /> - </el-col> - <el-col - :xs="{ span: 24 }" - :sm="{ span: 12 }" - :md="{ span: 12 }" - :lg="{ span: 6 }" - :xl="{ span: 6 }" - style="margin-bottom:30px;" - > - <box-card /> - </el-col> - </el-row> - </div> -</template> - -<script> -import GithubCorner from "@/components/GithubCorner"; -import PanelGroup from "./components/PanelGroup"; -import LineChart from "./components/LineChart"; -import RaddarChart from "./components/RaddarChart"; -import PieChart from "./components/PieChart"; -import BarChart from "./components/BarChart"; -import TransactionTable from "./components/TransactionTable"; -import TodoList from "./components/TodoList"; -import BoxCard from "./components/BoxCard"; - -const lineChartData = { - newVisitis: { - expectedData: [100, 120, 161, 134, 105, 160, 165], - actualData: [120, 82, 91, 154, 162, 140, 145] - }, - messages: { - expectedData: [200, 192, 120, 144, 160, 130, 140], - actualData: [180, 160, 151, 106, 145, 150, 130] - }, - purchases: { - expectedData: [80, 100, 121, 104, 105, 90, 100], - actualData: [120, 90, 100, 138, 142, 130, 130] - }, - shoppings: { - expectedData: [130, 140, 141, 142, 145, 150, 160], - actualData: [120, 82, 91, 154, 162, 140, 130] - } -}; - -export default { - name: "DashboardAdmin", - components: { - GithubCorner, - PanelGroup, - LineChart, - RaddarChart, - PieChart, - BarChart, - TransactionTable, - TodoList, - BoxCard - }, - data() { - return { - lineChartData: lineChartData.newVisitis - }; - }, - methods: { - handleSetLineChartData(type) { - this.lineChartData = lineChartData[type]; - } - } -}; -</script> - -<style lang="scss" scoped> -.dashboard-editor-container { - padding: 32px; - background-color: rgb(240, 242, 245); - position: relative; - - .github-corner { - position: absolute; - top: 0px; - border: 0; - right: 0; - } - - .chart-wrapper { - background: #fff; - padding: 16px 16px 0; - margin-bottom: 32px; - } -} - -@media (max-width: 1024px) { - .chart-wrapper { - padding: 8px; - } -} -</style> diff --git a/WebSite/src/views/dashboard/editor/index.vue b/WebSite/src/views/dashboard/editor/index.vue deleted file mode 100644 index 61de4cedf5c3c536526592188db0ecd3dbce14ff..0000000000000000000000000000000000000000 --- a/WebSite/src/views/dashboard/editor/index.vue +++ /dev/null @@ -1,77 +0,0 @@ -<template> - <div class="dashboard-editor-container"> - <div class=" clearfix"> - <pan-thumb :image="avatar" style="float: left"> - Your roles: - <span v-for="item in roles" :key="item" class="pan-info-roles">{{ - item - }}</span> - </pan-thumb> - <github-corner - style="position: absolute; top: 0px; border: 0; right: 0;" - /> - <div class="info-container"> - <span class="display_name">{{ name }}</span> - <span style="font-size:20px;padding-top:20px;display:inline-block;" - >Editor's Dashboard</span - > - </div> - </div> - <div> - <img :src="emptyGif" class="emptyGif" /> - </div> - </div> -</template> - -<script> -import { mapGetters } from "vuex"; -import PanThumb from "@/components/PanThumb"; -import GithubCorner from "@/components/GithubCorner"; - -export default { - name: "DashboardEditor", - components: { PanThumb, GithubCorner }, - data() { - return { - emptyGif: - "https://wpimg.wallstcn.com/0e03b7da-db9e-4819-ba10-9016ddfdaed3" - }; - }, - computed: { - ...mapGetters(["name", "avatar", "roles"]) - } -}; -</script> - -<style lang="scss" scoped> -.emptyGif { - display: block; - width: 45%; - margin: 0 auto; -} - -.dashboard-editor-container { - background-color: #e3e3e3; - min-height: 100vh; - padding: 50px 60px 0px; - .pan-info-roles { - font-size: 12px; - font-weight: 700; - color: #333; - display: block; - } - .info-container { - position: relative; - margin-left: 190px; - height: 150px; - line-height: 200px; - .display_name { - font-size: 48px; - line-height: 48px; - color: #212121; - position: absolute; - top: 25px; - } - } -} -</style> diff --git a/WebSite/src/views/dashboard/index.vue b/WebSite/src/views/dashboard/index.vue deleted file mode 100644 index 1f4d5ba58556278340ea7bfd04ab1ed461facb95..0000000000000000000000000000000000000000 --- a/WebSite/src/views/dashboard/index.vue +++ /dev/null @@ -1,36 +0,0 @@ -<!-- - * @Descripttion: - * @Author: dong - * @Date: 2020-04-21 18:54:21 - * @LastEditors: dong jun hua - * @LastEditTime: 2020-05-12 08:28:53 - --> -<template> - <div class="dashboard-container"> - <component :is="currentRole" /> - </div> -</template> - -<script> -import { mapGetters } from "vuex"; -import adminDashboard from "./admin"; -import editorDashboard from "./editor"; - -export default { - name: "Dashboard", - components: { adminDashboard, editorDashboard }, - data() { - return { - currentRole: "adminDashboard" - }; - }, - computed: { - ...mapGetters(["roles"]) - }, - created() { - if (!this.roles.includes("admin")) { - this.currentRole = "editorDashboard"; - } - } -}; -</script> diff --git a/WebSite/src/views/documentation/index.vue b/WebSite/src/views/documentation/index.vue deleted file mode 100644 index d3d5e32b0accf6ca3ecd8ceedd53097358df9766..0000000000000000000000000000000000000000 --- a/WebSite/src/views/documentation/index.vue +++ /dev/null @@ -1,103 +0,0 @@ -<template> - <div class="app-container documentation-container"> - <a - class="document-btn" - target="_blank" - href="https://panjiachen.github.io/vue-element-admin-site/" - >Documentation</a - > - <a - class="document-btn" - target="_blank" - href="https://github.com/PanJiaChen/vue-element-admin/" - >Github Repository</a - > - <a - class="document-btn" - target="_blank" - href="https://panjiachen.gitee.io/vue-element-admin-site/zh/" - >鍥藉唴鏂囨。</a - > - <dropdown-menu class="document-btn" :items="articleList" title="绯诲垪鏂囩珷" /> - <a - class="document-btn" - target="_blank" - href="https://panjiachen.github.io/vue-element-admin-site/zh/job/" - >鍐呮帹鎷涜仒</a - > - </div> -</template> - -<script> -import DropdownMenu from "@/components/Share/DropdownMenu"; - -export default { - name: "Documentation", - components: { DropdownMenu }, - data() { - return { - articleList: [ - { - title: "鍩虹绡�", - href: "https://juejin.im/post/59097cd7a22b9d0065fb61d2" - }, - { - title: "鐧诲綍鏉冮檺绡�", - href: "https://juejin.im/post/591aa14f570c35006961acac" - }, - { - title: "瀹炴垬绡�", - href: "https://juejin.im/post/593121aa0ce4630057f70d35" - }, - { - title: "vue-admin-template 绡�", - href: "https://juejin.im/post/595b4d776fb9a06bbe7dba56" - }, - { - title: "v4.0 绡�", - href: "https://juejin.im/post/5c92ff94f265da6128275a85" - }, - { - title: "鑷灏佽 component", - href: "https://segmentfault.com/a/1190000009090836" - }, - { - title: "浼橀泤鐨勪娇鐢� icon", - href: "https://juejin.im/post/59bb864b5188257e7a427c09" - }, - { - title: "webpack4锛堜笂锛�", - href: "https://juejin.im/post/59bb864b5188257e7a427c09" - }, - { - title: "webpack4锛堜笅锛�", - href: "https://juejin.im/post/5b5d6d6f6fb9a04fea58aabc" - } - ] - }; - } -}; -</script> - -<style lang="scss" scoped> -.documentation-container { - margin: 50px; - display: flex; - flex-wrap: wrap; - justify-content: space-evenly; - - .document-btn { - flex-shrink: 0; - display: block; - cursor: pointer; - background: black; - color: white; - height: 60px; - width: 200px; - margin-bottom: 16px; - line-height: 60px; - font-size: 20px; - text-align: center; - } -} -</style> diff --git a/WebSite/src/views/error-log/components/ErrorTestA.vue b/WebSite/src/views/error-log/components/ErrorTestA.vue deleted file mode 100644 index f2846372036ee45ae5cf29fa151ab52a40719670..0000000000000000000000000000000000000000 --- a/WebSite/src/views/error-log/components/ErrorTestA.vue +++ /dev/null @@ -1,13 +0,0 @@ -<template> - <div> - <!--error code--> - {{ a.a }} - <!--error code--> - </div> -</template> - -<script> -export default { - name: "ErrorTestA" -}; -</script> diff --git a/WebSite/src/views/error-log/components/ErrorTestB.vue b/WebSite/src/views/error-log/components/ErrorTestB.vue deleted file mode 100644 index 24a3cd847d88fa2501e04cdcd65eb5932c0ec863..0000000000000000000000000000000000000000 --- a/WebSite/src/views/error-log/components/ErrorTestB.vue +++ /dev/null @@ -1,11 +0,0 @@ -<template> - <div /> -</template> - -<script> -export default { - created() { - this.b = b // eslint-disable-line - } -}; -</script> diff --git a/WebSite/src/views/error-log/index.vue b/WebSite/src/views/error-log/index.vue deleted file mode 100644 index fd1afb4c8ac7f4bdadd3db770b28c0f5f1a60ad0..0000000000000000000000000000000000000000 --- a/WebSite/src/views/error-log/index.vue +++ /dev/null @@ -1,42 +0,0 @@ -<template> - <div class="errPage-container"> - <ErrorA /> - <ErrorB /> - <h3>Please click the bug icon in the upper right corner</h3> - <aside> - Now the management system are basically the form of the spa, it enhances - the user experience, but it also increases the possibility of page - problems, a small negligence may lead to the entire page deadlock. - Fortunately Vue provides a way to catch handling exceptions, where you can - handle errors or report exceptions. - <a - target="_blank" - class="link-type" - href="https://panjiachen.github.io/vue-element-admin-site/guide/advanced/error.html" - > - Document introduction - </a> - </aside> - <a href="#"> - <img - src="https://wpimg.wallstcn.com/360e4842-4db5-42d0-b078-f9a84a825546.gif" - /> - </a> - </div> -</template> - -<script> -import ErrorA from "./components/ErrorTestA"; -import ErrorB from "./components/ErrorTestB"; - -export default { - name: "ErrorLog", - components: { ErrorA, ErrorB } -}; -</script> - -<style scoped> -.errPage-container { - padding: 30px; -} -</style> diff --git a/WebSite/src/views/error-page/401.vue b/WebSite/src/views/error-page/401.vue index dd7534f26ed71e909684edf9ebf5fc9d2d0ae46d..62dbf1b57beab3ac65778e993799b870957150c0 100644 --- a/WebSite/src/views/error-page/401.vue +++ b/WebSite/src/views/error-page/401.vue @@ -1,30 +1,22 @@ +<!-- + * @Description: + * @Autor: dongjunhua + * @Date: 2021-01-20 16:39:21 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-01-20 20:52:00 +--> <template> <div class="errPage-container"> - <el-button icon="el-icon-arrow-left" class="pan-back-btn" @click="back"> - 杩斿洖 - </el-button> <el-row> <el-col :span="12"> <h1 class="text-jumbo text-ginormous"> Oops! </h1> - gif鏉ユ簮<a href="https://zh.airbnb.com/" target="_blank">airbnb</a> 椤甸潰 - <h2>浣犳病鏈夋潈闄愬幓璇ラ〉闈�</h2> - <h6>濡傛湁涓嶆弧璇疯仈绯讳綘棰嗗</h6> - <ul class="list-unstyled"> - <li>鎴栬€呬綘鍙互鍘�:</li> - <li class="link-type"> - <router-link to="/dashboard"> - 鍥為椤� - </router-link> - </li> - <li class="link-type"> - <a href="https://www.taobao.com/">闅忎究鐪嬬湅</a> - </li> - <li> - <a href="#" @click.prevent="dialogVisible = true">鐐规垜鐪嬪浘</a> - </li> - </ul> + <h2>You have no permission !</h2> + <h5>Perhaps you should contact the administrator</h5> + <el-button size="large" class="pan-back-btn" @click="goBack"> + Go Back + </el-button> </el-col> <el-col :span="12"> <img @@ -35,32 +27,25 @@ /> </el-col> </el-row> - <el-dialog :visible.sync="dialogVisible" title="闅忎究鐪�"> - <img :src="ewizardClap" class="pan-img" /> - </el-dialog> </div> </template> <script> -import errGif from "@/assets/401_images/401.gif"; +import errGif from '@/assets/401_images/401.gif'; export default { - name: "Page401", + name: 'Page401', data() { return { - errGif: errGif + "?" + +new Date(), + errGif: errGif + '?' + +new Date(), ewizardClap: - "https://wpimg.wallstcn.com/007ef517-bafd-4066-aae4-6883632d9646", + 'https://wpimg.wallstcn.com/007ef517-bafd-4066-aae4-6883632d9646', dialogVisible: false }; }, methods: { - back() { - if (this.$route.query.noGoBack) { - this.$router.push({ path: "/dashboard" }); - } else { - this.$router.go(-1); - } + goBack() { + this.$router.go(-1); } } }; @@ -70,7 +55,8 @@ export default { .errPage-container { width: 800px; max-width: 100%; - margin: 100px auto; + margin: 0 auto; + padding-top: 160px; .pan-back-btn { background: #008489; color: #fff; diff --git a/WebSite/src/views/error-page/404.vue b/WebSite/src/views/error-page/404.vue index cb5c47ce1812a4276eb2a04ed147917b7a3b4e83..291b4cd849d179ebcba6fb8884621a8cf51775ac 100644 --- a/WebSite/src/views/error-page/404.vue +++ b/WebSite/src/views/error-page/404.vue @@ -39,7 +39,7 @@ Please check that the URL you entered is correct, or click the button below to return to the homepage. </div> - <a href="" class="bullshit__return-home">Back to home</a> + <a @click="goBack" class="bullshit__return-home">Go Back</a> </div> </div> </div> @@ -47,10 +47,15 @@ <script> export default { - name: "Page404", + name: 'Page404', computed: { message() { - return "The webmaster said that you can not enter this page..."; + return 'The webmaster said that you can not enter this page...'; + } + }, + methods: { + goBack() { + this.$router.go(-1); } } }; diff --git a/WebSite/src/views/example/button/index.vue b/WebSite/src/views/example/button/index.vue deleted file mode 100644 index 1fb98bd7440317ccf8c953e2229cdc56847a181e..0000000000000000000000000000000000000000 --- a/WebSite/src/views/example/button/index.vue +++ /dev/null @@ -1,160 +0,0 @@ -<!-- - * @Description: - * @Autor: dong jun hua - * @Date: 2020-07-15 16:50:12 - * @LastEditors: dongjunhua - * @LastEditTime: 2020-09-13 14:28:05 ---> -<template> - <div class="app-container"> - <el-card shadow="hover"> - <el-row class="row"> - <span class="text-title">鍩烘湰鎸夐挳绫诲瀷</span> - </el-row> - <el-row class="row"> - <el-button>榛樿鎸夐挳</el-button> - <el-button type="primary" plain>涓昏鎸夐挳</el-button> - <el-button type="success" plain>鎴愬姛鎸夐挳</el-button> - <el-button type="info" plain>淇℃伅鎸夐挳</el-button> - <el-button type="warning" plain>璀﹀憡鎸夐挳</el-button> - <el-button type="danger" plain>鍗遍櫓鎸夐挳</el-button> - </el-row> - <el-row class="row" style="margin-top:30px"> - <span class="text-title">甯歌鎸夐挳绀轰緥</span> - </el-row> - <el-row class="row"> - <el-table :data="tableData" style="width: 100%" stripe> - <el-table-column prop="type" label="绫诲瀷"> </el-table-column> - <el-table-column prop="text" label="鍚嶇О"> </el-table-column> - <el-table-column prop="icon" label="鍥炬爣"> </el-table-column> - <el-table-column label="灞曠ず"> - <template slot-scope="scope"> - <el-button - :type="scope.row.type" - :icon="scope.row.icon" - :plain="scope.row.plain" - >{{ scope.row.text }}</el-button - > - </template> - </el-table-column> - </el-table> - </el-row> - <el-row class="row" style="margin-top:30px"> - <span class="text-title">娉ㄦ剰浜嬮」</span> - </el-row> - <el-row> - <text-field> - <ul class="note"> - <li> - 濡傛棤鐗规畩鎯呭喌锛屾墍鏈夋寜閽粯璁� size 涓� - mini锛堝凡鍏ㄥ眬璁剧疆锛屾棤闇€鍗曠嫭娣诲姞锛� - </li> - <li> - 濡傛棤鐗规畩鎯呭喌锛岄櫎 鈥滃彇娑堚€� 鍜� 鈥滅‘瀹氣€� 澶栫殑鎵€鏈夋寜閽粯璁ゆ坊鍔� plain - 灞炴€э紙鏈寸礌鏍峰紡锛� - </li> - <li> - 鍦ㄥ父瑙佹寜閽腑宸插垪鍑虹殑鎸夐挳璇烽伒寰搴旀牱寮忥紝鏈垪鍑虹殑鎸夐挳鍥㈤槦鎴愬憳闂村簲杈炬垚鍏辫瘑锛屼繚鎸佹牱寮忕粺涓€ - </li> - <li>鏌ヨ鏉′欢鍖哄煙鐨勬寜閽』鍗曠嫭鍙﹁捣涓€琛�</li> - </ul> - </text-field> - </el-row> - </el-card> - </div> -</template> - -<script> -import TextField from "@/components/TextField"; -export default { - name: "Button", - components: { TextField }, - data() { - return { - tableData: [ - { - type: "default", - text: "鏌ヨ", - icon: "el-icon-search", - plain: true - }, - { - type: "default", - text: "鏌ョ湅", - icon: "el-icon-document-copy", - plain: true - }, - { - type: "primary", - text: "鏂板", - icon: "el-icon-plus", - plain: true - }, - { - type: "primary", - text: "淇敼", - icon: "el-icon-edit", - plain: true - }, - { - type: "danger", - text: "鍒犻櫎", - icon: "el-icon-delete", - plain: true - }, - { - type: "danger", - text: "閲嶇疆", - icon: "el-icon-refresh-left", - plain: true - }, - { - type: "info", - text: "涓婁紶", - icon: "el-icon-upload2", - plain: true - }, - { - type: "info", - text: "涓嬭浇", - icon: "el-icon-download", - plain: true - }, - { - type: "default", - text: "鍙栨秷", - icon: "", - plain: false - }, - { - type: "primary", - text: "纭畾", - icon: "", - plain: false - } - ] - }; - } -}; -</script> - -<style scoped> -.text-title { - display: inline-block; - font-size: 16px; - font-weight: 400; - color: #303133; -} -.row { - margin-bottom: 20px; -} -ul.note { - padding: 0 0 0 10px !important; - margin: 0 !important; -} -ul.note > li { - line-height: 2; - font-size: 14px; - color: #606266; -} -</style> diff --git a/WebSite/src/views/example/dialog/components/Detail.vue b/WebSite/src/views/example/dialog/components/Detail.vue deleted file mode 100644 index 779d188b20d12940439b77f6a43775ef709c3221..0000000000000000000000000000000000000000 --- a/WebSite/src/views/example/dialog/components/Detail.vue +++ /dev/null @@ -1,39 +0,0 @@ -<!-- - * @Descripttion: - * @Author: dongjunhua - * @Date: 2020-08-20 12:48:20 - * @LastEditors: dongjunhua - * @LastEditTime: 2020-08-20 12:59:30 ---> -<template> - <div> - <span>杩欐槸璇︽儏椤甸潰1</span> - <div class="footer-container"> - <el-button type="primary" @click="handleConfirm">纭� 瀹�</el-button> - </div> - </div> -</template> - -<script> -export default { - name: "Detail", - props: { - visible: { - type: Boolean - } - }, - methods: { - handleConfirm() { - this.$emit("update:visible", false); - } - } -}; -</script> - -<style scoped> -.footer-container { - width: 100%; - margin-top: 20px; - text-align: right; -} -</style> diff --git a/WebSite/src/views/example/dialog/index.vue b/WebSite/src/views/example/dialog/index.vue deleted file mode 100644 index 9fe4ec02f4716611188aa6bbf789dfe87c38a811..0000000000000000000000000000000000000000 --- a/WebSite/src/views/example/dialog/index.vue +++ /dev/null @@ -1,116 +0,0 @@ -<!-- - * @Descripttion: - * @Author: dongjunhua - * @Date: 2020-08-16 14:45:34 - * @LastEditors: dong jun hua - * @LastEditTime: 2020-09-18 14:29:36 ---> -<template> - <div class="app-container"> - <jump-dialog :visible.sync="dialogVisible2" :activeName="activeName"> - <el-card shadow="hover" slot="layout"> - <el-row class="row"> - <span class="text-title">绀轰緥</span> - </el-row> - <el-row> - <el-button @click="dialogVisible = true">鐐瑰嚮寮瑰嚭瀵硅瘽妗�</el-button> - <el-button @click="handleOpenJump1">鐐瑰嚮璺宠浆瀵硅瘽妗�1</el-button> - <el-button @click="handleOpenJump2">鐐瑰嚮璺宠浆瀵硅瘽妗�2</el-button> - </el-row> - <el-row class="row" style="margin-top:30px"> - <span class="text-title">娉ㄦ剰浜嬮」</span> - </el-row> - <el-row> - <text-field> - <ul class="note"> - <li> - 瀵逛簬 pc 绔〉闈紝榛樿浣跨敤 el-dialog - 缁勪欢锛屽湪鍙充笅瑙掓斁缃彇娑堝拰纭畾鎸夐挳锛堟寜閽枃瀛楁弿杩版牴鎹疄闄呬笟鍔″満鏅彲杩涜淇敼锛屾寜閽繀椤绘斁鍦ㄥ悕绉颁负 - footer 鐨勬彃妲戒腑锛� - </li> - <li> - 搴旀牴鎹唴瀹圭殑瀹為檯鎯呭喌璁剧疆 el-dialog 鐨勭櫨鍒嗘瘮瀹藉害 - </li> - <li> - 瀵逛簬鎵嬫満绔〉闈紝榛樿浣跨敤 el-drawer - 缁勪欢锛屾柟鍚戣嚜涓嬪線涓婂紑鍚紝鍦ㄥ簳閮ㄩ槻姝㈠彇娑堝拰纭畾鎸夐挳 - </li> - <li> - 瀵硅瘽妗嗕腑鍐呭杈冨鏃讹紝鍙娇鐢ㄨ嚜瀹氫箟缁勪欢 jump-dialog - 杩涜鏁撮〉璺宠浆锛屼互涓嬫槸璇ョ粍浠剁殑浣跨敤璇存槑锛�<br /> - (1) 灏嗗師椤甸潰鍐呭鏀剧疆鍦ㄥ悕涓� layout 鐨勬彃妲戒腑<br /> - (2) 姣忔湁涓€涓柊鐨勮烦杞璇濇锛岄渶鍦� jump-dialog 涓坊鍔犱竴涓� - jump-dialog-item 瀛愮粍浠�<br /> - (3) 瀛愮粍浠舵帴鏀� name 鍜� label 浣滀负鍙傛暟锛堝繀椤伙級锛屽叾涓� label - 浼氫綔涓鸿烦杞璇濇鐨勬爣棰樺睍绀�<br /> - (4) - 涓€鑸儏鍐典笅锛屽簲鍦ㄨ烦杞璇濇鐨勫彸涓嬭鏀剧疆纭畾鎸夐挳锛堣烦杞璇濇鑷甫杩斿洖鏁呬笉闇€瑕佸彇娑堟寜閽級 - </li> - </ul> - </text-field> - </el-row> - </el-card> - <jump-dialog-item name="first" label="璇︽儏椤甸潰1"> - <detail :visible.sync="dialogVisible2"></detail> - </jump-dialog-item> - <jump-dialog-item name="second" label="璇︽儏椤甸潰2"> - <span>杩欐槸璇︽儏椤甸潰2</span> - </jump-dialog-item> - </jump-dialog> - <el-dialog title="缂栬緫" :visible.sync="dialogVisible" width="30%"> - <span>杩欐槸涓€娈典俊鎭�</span> - <span slot="footer" class="dialog-footer"> - <el-button @click="dialogVisible = false">鍙� 娑�</el-button> - <el-button type="primary" @click="dialogVisible = false" - >纭� 瀹�</el-button - > - </span> - </el-dialog> - </div> -</template> -<script> -import Detail from "./components/Detail"; -import TextField from "@/components/TextField"; -export default { - name: "Dialog", - components: { Detail, TextField }, - data() { - return { - dialogVisible: false, - dialogVisible2: false, - activeName: null - }; - }, - methods: { - handleOpenJump1() { - this.dialogVisible2 = true; - this.activeName = "first"; - }, - handleOpenJump2() { - this.dialogVisible2 = true; - this.activeName = "second"; - } - } -}; -</script> - -<style scoped> -.text-title { - display: inline-block; - font-size: 16px; - font-weight: 400; - color: #303133; -} -.row { - margin-bottom: 20px; -} -ul.note { - padding: 0 0 0 10px !important; - margin: 0 !important; -} -ul.note > li { - line-height: 2; - font-size: 14px; - color: #606266; -} -</style> diff --git a/WebSite/src/views/example/form.vue b/WebSite/src/views/example/form.vue deleted file mode 100644 index 8ab770c8809aa9a2535c7edbcb184d978e9843c3..0000000000000000000000000000000000000000 --- a/WebSite/src/views/example/form.vue +++ /dev/null @@ -1,205 +0,0 @@ -<!-- - * @Description: - * @Autor: dong jun hua - * @Date: 2020-07-15 16:50:12 - * @LastEditors: dong jun hua - * @LastEditTime: 2020-09-18 14:23:16 ---> -<template> - <div class="app-container"> - <el-card shadow="hover"> - <el-row class="row"> - <span class="text-title">绀轰緥</span> - </el-row> - <el-row class="row"> - <el-col :sm="24" :md="12" :lg="6"> - <el-form - :model="ruleForm" - :rules="rules" - ref="ruleForm" - label-width="100px" - class="demo-ruleForm" - label-position="top" - > - <el-form-item label="娲诲姩鍚嶇О" prop="name"> - <el-input v-model="ruleForm.name"></el-input> - </el-form-item> - <el-form-item label="娲诲姩鍖哄煙" prop="region"> - <el-select v-model="ruleForm.region" placeholder="璇烽€夋嫨娲诲姩鍖哄煙"> - <el-option label="鍖哄煙涓€" value="shanghai"></el-option> - <el-option label="鍖哄煙浜�" value="beijing"></el-option> - </el-select> - </el-form-item> - <el-form-item label="娲诲姩鏃堕棿" required> - <el-col :span="11"> - <el-form-item prop="date1"> - <el-date-picker - type="date" - placeholder="閫夋嫨鏃ユ湡" - v-model="ruleForm.date1" - style="width: 100%;" - ></el-date-picker> - </el-form-item> - </el-col> - <el-col class="line" :span="2">-</el-col> - <el-col :span="11"> - <el-form-item prop="date2"> - <el-time-picker - placeholder="閫夋嫨鏃堕棿" - v-model="ruleForm.date2" - style="width: 100%;" - ></el-time-picker> - </el-form-item> - </el-col> - </el-form-item> - <el-form-item label="鍗虫椂閰嶉€�" prop="delivery"> - <el-switch v-model="ruleForm.delivery"></el-switch> - </el-form-item> - <el-form-item label="娲诲姩鎬ц川" prop="type"> - <el-checkbox-group v-model="ruleForm.type"> - <el-checkbox - label="缇庨/椁愬巺绾夸笂娲诲姩" - name="type" - ></el-checkbox> - <el-checkbox label="鍦版帹娲诲姩" name="type"></el-checkbox> - <el-checkbox label="绾夸笅涓婚娲诲姩" name="type"></el-checkbox> - <el-checkbox label="鍗曠函鍝佺墝鏇濆厜" name="type"></el-checkbox> - </el-checkbox-group> - </el-form-item> - <el-form-item label="鐗规畩璧勬簮" prop="resource"> - <el-radio-group v-model="ruleForm.resource"> - <el-radio label="绾夸笂鍝佺墝鍟嗚禐鍔�"></el-radio> - <el-radio label="绾夸笅鍦哄湴鍏嶈垂"></el-radio> - </el-radio-group> - </el-form-item> - <el-form-item label="娲诲姩褰㈠紡" prop="desc"> - <el-input type="textarea" v-model="ruleForm.desc"></el-input> - </el-form-item> - <el-form-item> - <el-button type="primary" @click="submitForm('ruleForm')" - >绔嬪嵆鍒涘缓</el-button - > - <el-button @click="resetForm('ruleForm')">閲嶇疆</el-button> - </el-form-item> - </el-form> - </el-col> - </el-row> - <el-row class="row" style="margin-top:30px"> - <span class="text-title">娉ㄦ剰浜嬮」</span> - </el-row> - <el-row> - <text-field> - <ul class="note"> - <li> - 搴旀牴鎹叿浣撶洰鏍囧拰鍒剁害鍥犵礌锛岄€夋嫨鏈€浣崇殑鏍囩瀵归綈鏂瑰紡锛堜緥濡傦細褰撴爣绛炬枃瀛楅暱搴﹁緝鐭椂鍙娇鐢ㄥ乏瀵归綈鎴栧彸瀵归綈锛屽綋闀垮害杈冮暱鏃跺彲浣跨敤椤堕儴瀵归綈锛夛紝浣嗘暣涓」鐩殑瀵归綈鏂瑰紡搴斿敖鍙兘淇濇寔涓€鑷� - </li> - <li> - 璇锋牴鎹疄闄呬笟鍔¢渶姹傚湪鎻愪氦鍓嶅琛ㄥ崟椤圭洰杩涜蹇呰鐨勬牎楠屽拰鎻愮ず - </li> - <li> - 濡傝〃鍗曞浜庡璇濇涓紝鍒欒〃鍗曠殑鎻愪氦搴斾氦鐢卞璇濇鐨勭‘瀹氭寜閽Е鍙� - </li> - </ul> - </text-field> - </el-row> - </el-card> - </div> -</template> - -<script> -import TextField from "@/components/TextField"; -export default { - name: "Form", - components: { TextField }, - data() { - return { - ruleForm: { - name: "", - region: "", - date1: "", - date2: "", - delivery: false, - type: [], - resource: "", - desc: "" - }, - rules: { - name: [ - { required: true, message: "璇疯緭鍏ユ椿鍔ㄥ悕绉�", trigger: "blur" }, - { min: 3, max: 5, message: "闀垮害鍦� 3 鍒� 5 涓瓧绗�", trigger: "blur" } - ], - region: [ - { required: true, message: "璇烽€夋嫨娲诲姩鍖哄煙", trigger: "change" } - ], - date1: [ - { - type: "date", - required: true, - message: "璇烽€夋嫨鏃ユ湡", - trigger: "change" - } - ], - date2: [ - { - type: "date", - required: true, - message: "璇烽€夋嫨鏃堕棿", - trigger: "change" - } - ], - type: [ - { - type: "array", - required: true, - message: "璇疯嚦灏戦€夋嫨涓€涓椿鍔ㄦ€ц川", - trigger: "change" - } - ], - resource: [ - { required: true, message: "璇烽€夋嫨娲诲姩璧勬簮", trigger: "change" } - ], - desc: [{ required: true, message: "璇峰~鍐欐椿鍔ㄥ舰寮�", trigger: "blur" }] - } - }; - }, - methods: { - submitForm(formName) { - this.$refs[formName].validate(valid => { - if (valid) { - alert("submit!"); - } else { - console.log("error submit!!"); - return false; - } - }); - }, - resetForm(formName) { - this.$refs[formName].resetFields(); - } - } -}; -</script> - -<style scoped> -.text-title { - display: inline-block; - font-size: 16px; - font-weight: 400; - color: #303133; -} -.row { - margin-bottom: 20px; -} -ul.note { - padding: 0 0 0 10px !important; - margin: 0 !important; -} -ul.note > li { - line-height: 2; - font-size: 14px; - color: #606266; -} -.line { - text-align: center; -} -</style> diff --git a/WebSite/src/views/example/icon.vue b/WebSite/src/views/example/icon.vue deleted file mode 100644 index eb9b2ec268f15a05378e227d3be75778c610bed2..0000000000000000000000000000000000000000 --- a/WebSite/src/views/example/icon.vue +++ /dev/null @@ -1,61 +0,0 @@ -<!-- - * @Description: - * @Autor: dong jun hua - * @Date: 2020-07-15 16:50:12 - * @LastEditors: dong jun hua - * @LastEditTime: 2020-09-18 13:47:36 ---> -<template> - <div class="app-container"> - <el-card shadow="hover"> - <el-row class="row"> - <span class="text-title">鍥炬爣</span> - </el-row> - <el-row> - <text-field> - <ul class="note"> - <li> - 鎺ㄨ崘浣跨敤榛樿鍜� element 涓ょ鍥炬爣鏍峰紡 - </li> - <li> - 濡傛湁闇€瑕佸彲寮曞叆澶栭儴鍥炬爣搴擄紝浣嗛渶娉ㄦ剰淇濇寔椋庢牸涓€鑷� - </li> - </ul> - </text-field> - </el-row> - <el-row style="margin-top:20px"> - <icons></icons> - </el-row> - </el-card> - </div> -</template> - -<script> -import TextField from "@/components/TextField"; -import Icons from "@/views/icons"; -export default { - name: "Icon", - components: { TextField, Icons } -}; -</script> - -<style scoped> -.text-title { - display: inline-block; - font-size: 16px; - font-weight: 400; - color: #303133; -} -.row { - margin-bottom: 20px; -} -ul.note { - padding: 0 0 0 10px !important; - margin: 0 !important; -} -ul.note > li { - line-height: 2; - font-size: 14px; - color: #606266; -} -</style> diff --git a/WebSite/src/views/example/index.vue b/WebSite/src/views/example/index.vue deleted file mode 100644 index 2168f80bdc1c2e9b5e24c044dca7021e8716f260..0000000000000000000000000000000000000000 --- a/WebSite/src/views/example/index.vue +++ /dev/null @@ -1,350 +0,0 @@ -<!-- - * @Description: - * @Autor: dong jun hua - * @Date: 2020-07-15 16:50:12 - * @LastEditors: dong jun hua - * @LastEditTime: 2020-09-18 15:17:46 ---> -<template> - <div class="app-container" style="position:relative"> - <div class="tag-outer"> - <div style="color:#ffffff"><b>ver</b></div> - <div style="color:#ffffff"> - <b>1.0</b> - </div> - </div> - <el-card shadow="hover"> - <el-row class="row"> - <span class="text-title">姒傝堪</span> - </el-row> - <el-row> - <text-field> - <ul class="note"> - <li> - 姝よ鑼冧负鍓嶇 UI 瑙勮寖锛屽熀浜� element-ui 鍒跺畾锛屽叾鐩殑鏄繚璇侀」鐩� UI - 鏁堟灉鐨勪竴鑷存€� 锛岃В鍐充互寰€寮€鍙戜腑椤圭洰缁勪笉鍚屾垚鍛橀棿鏍峰紡涓嶇粺涓€鐨勯棶棰� - </li> - <li> - 榛樿鎯呭喌涓嬶紝鍓嶇寮€鍙戜汉鍛樺湪寮€鍙戣繃绋嬩腑闇€閬靛惊瑙勮寖鎵€杩板唴瀹硅繘琛岄〉闈㈠紑鍙� - </li> - <li> - 濡傚綋鍓嶉」鐩湁鐗规畩鐨勬牱寮忛渶姹� - 锛屽垯鍙粡鐢遍」鐩礋璐d汉鍜屽墠绔紑鍙戜汉鍛樺叡鍚岃璁哄埗瀹� UI - 鏍峰紡浠ユ浛浠i粯璁ゆ牱寮忚鑼� - </li> - <li> - 姝よ鑼冨彲鑳戒細闅忔椂闂磋繘琛屾洿杩紝鍚姩鏂伴」鐩椂璇峰弬鐓у綋鍓嶆渶鏂拌鑼� - </li> - <li> - element-ui 缁勪欢鐨勪娇鐢紝璇峰弬闃呭畼缃� - <a - href="https://element.eleme.cn/#/zh-CN/component/quickstart" - target="_blank" - style="color:#409EFF" - >https://element.eleme.cn/#/zh-CN/component/quickstart</a - > - </li> - </ul> - </text-field> - </el-row> - <el-row class="row" style="margin-top:30px"> - <span class="text-title">瀛椾綋</span> - </el-row> - <el-row> - <text-field> - <ul class="note"> - <li> - 涓轰簡鍦ㄤ笉鍚岀幆澧冧笅閮借兘杈惧埌鏈€浣虫晥鏋滐紝鎴戜滑榛樿浣跨敤浠ヤ笅瀛椾綋锛�<br /> - <b>Helvetica Neue</b>, <b>Helvetica</b>, <b>PingFang SC</b>, - <b>Hiragino Sans GB</b>, <b>Microsoft YaHei</b>, <b>Arial</b>, - <b>sans-serif</b> - </li> - <li> - 浠ヤ笂瀛椾綋宸插湪鍏ㄥ眬 css 涓缃紝濡傛棤鐗规畩鎯呭喌绂佹浣跨敤鍏朵粬瀛椾綋 - </li> - </ul> - </text-field> - </el-row> - <el-row class="row" style="margin-top:30px"> - <span class="text-title">瀛楀彿</span> - </el-row> - <el-row> - <text-field> - <ul class="note"> - <li> - 榛樿鎯呭喌涓嬶紝鎴戜滑瀵瑰瓧鍙疯繘琛屼互涓嬭瀹氾細 - <br /><span style="font-size:12px; line-height:2" - ><b>12px</b> - 鐢ㄤ簬杈呭姪鎬ф彁绀哄唴瀹�</span - ><br /><span style="font-size:14px; line-height:2" - ><b>14px</b> - 鐢ㄤ簬姝f枃鍐呭</span - ><br /><span style="font-size:16px; line-height:2" - ><b>16px</b> - 鐢ㄤ簬鏍囬</span - > - </li> - <li> - 瀛楀彿鏍规嵁瀹為檯鎯呭喌鍙互閰屾儏鑰冭檻锛屼絾鍙厑璁镐娇鐢ㄥ伓鏁板瓧鍙凤紝涓斿瓧鍙疯鏍煎敖閲忔帶鍒跺湪3绉嶄互鍐� - </li> - <li> - 瀛椾綋鐨勮闂磋窛涓€鑸负瀛楀彿鐨�1.5 - 2鍊嶏紝鎺ㄨ崘浣跨敤2鍊� - </li> - </ul> - </text-field> - </el-row> - <el-row class="row" style="margin-top:30px"> - <span class="text-title">棰滆壊</span> - </el-row> - <el-row> - <text-field> - <ul class="note"> - <li> - 榛樿鎯呭喌涓嬶紝鎴戜滑瀵瑰瓧浣撳拰杈规鐨勯鑹茶繘琛屼互涓嬭瀹氾細<br /> - <b>#303133</b> - 鐢ㄤ簬涓昏鏂囧瓧锛堟爣棰橈級 <br /><b>#606266</b> - - 鐢ㄤ簬甯歌鏂囧瓧锛堟鏂囷級 <br /><b>#909399</b> - - 鐢ㄤ簬娆¤鏂囧瓧锛堣緟鍔╋級<br /> - <b>#e4ebed</b> - 涓€绾ц竟妗嗭紙澶栧眰锛� <br /><b>#ebeef5</b> - - 浜岀骇杈规锛堝唴灞傦級 - </li> - <li>浠讳綍鏃跺€欑姝娇鐢ㄧ函榛戣壊 <b>#000000</b></li> - </ul> - </text-field> - </el-row> - <el-row class="row" style="margin-top:30px"> - <span class="text-title">浜や簰缁勪欢鐨勪娇鐢�</span> - </el-row> - <el-row> - <text-field> - <ul class="note"> - <li> - 榛樿鎯呭喌涓嬶紝鎴戜滑瀵瑰父鐢ㄤ氦浜掔粍浠剁殑浣跨敤鍦哄悎杩涜浠ヤ笅瑙勫畾锛�<br /> - <b>el-input</b> - 榛樿杈撳叆妗嗭紝閫傚悎闇€瑕佹枃瀛楄緭鍏ョ殑鏌ヨ鏉′欢鎴栧唴瀹�<br /> - <el-input - v-model="input" - placeholder="璇疯緭鍏ュ唴瀹�" - style="width:200px; margin:10px 0" - ></el-input> - <br /><b>el-select</b> - 鐢ㄤ簬闇€瑕佽繘琛岄€夋嫨鐨勬煡璇㈡潯浠舵垨鍐呭 <br /> - <el-select - v-model="value" - placeholder="璇烽€夋嫨" - style="width:200px; margin:10px 0" - > - <el-option - v-for="item in options" - :key="item.value" - :label="item.label" - :value="item.value" - > - </el-option> - </el-select> - <br /> - <b>el-date-picker</b> - - 鐢ㄤ簬鏃ユ湡绫诲瀷鐨勬煡璇㈡潯浠舵垨鍐呭<br /> - <el-date-picker - v-model="value1" - type="date" - placeholder="閫夋嫨鏃ユ湡" - style="width:200px; margin:10px 0" - > - </el-date-picker - ><br /> - <b>el-time-select</b> - 鐢ㄤ簬鏃堕棿绫诲瀷鐨勬煡璇㈡潯浠舵垨鍐呭 <br /> - <el-time-select - v-model="value" - :picker-options="{ - start: '08:30', - step: '00:15', - end: '18:30' - }" - placeholder="閫夋嫨鏃堕棿" - style="width:200px; margin:10px 0" - > - </el-time-select> - <br /> - <b>el-checkbox</b> - - - 鍗曠嫭浣跨敤琛ㄧず涓ょ鐘舵€佷箣闂寸殑鍒囨崲锛屽涓娇鐢ㄨ〃绀轰竴缁勫閫夐」涓繘琛屽閫�<br /> - <el-row style="margin:10px 0"> - <el-checkbox-group v-model="checkList"> - <el-checkbox label="澶嶉€夋 A"></el-checkbox> - <el-checkbox label="澶嶉€夋 B"></el-checkbox> - <el-checkbox label="澶嶉€夋 C"></el-checkbox> - <el-checkbox label="绂佺敤" disabled></el-checkbox> - <el-checkbox label="閫変腑涓旂鐢�" disabled></el-checkbox> - </el-checkbox-group> - </el-row> - <b>el-radio</b> - - 涓嶅厑璁稿崟鐙娇鐢紝澶氫釜浣跨敤琛ㄧず涓€缁勫閫夐」涓繘琛屽崟閫�<br /> - <el-row style="margin:10px 0"> - <el-radio-group v-model="radio"> - <el-radio :label="3">鍗曢€夋 A</el-radio> - <el-radio :label="6">鍗曢€夋 B</el-radio> - <el-radio :label="9">鍗曢€夋 C</el-radio> - </el-radio-group> - </el-row> - </li> - </ul> - </text-field> - </el-row> - <el-row class="row" style="margin-top:30px"> - <span class="text-title">娑堟伅鎻愮ず</span> - </el-row> - <el-row> - <text-field> - <ul class="note"> - <li> - 鎴戜滑浣跨敤 message - 缁勪欢杩涜娑堟伅鎻愮ず锛屼笅闈㈡槸4绉嶆彁绀虹被鍨嬬殑浣跨敤鍦哄悎锛�<br /> - <b>message</b> - 榛樿锛岄€氬父鐢ㄤ簬涓€鑸彁绀轰俊鎭� - <el-button type="text" @click="openInfo">鐐瑰嚮</el-button> <br /><b - >message<span style="color:#67C23A">.success</span></b - > - - 鎴愬姛锛岀敤浜庤〃绀烘搷浣滄垨琛屼负杈炬垚 - <el-button type="text" @click="openSuccess">鐐瑰嚮</el-button - ><br /><b>message<span style="color:#E6A23C">.warning</span></b> - - 璀﹀憡锛岀敤浜庤〃绀烘搷浣滄垨琛屼负杈炬垚浣嗗瓨鍦ㄦ綔鍦ㄩ闄╂垨鍙兘鏈畬鍏ㄨ揪鍒伴鏈� - <el-button type="text" @click="openWarning">鐐瑰嚮</el-button><br /> - <b>message<span style="color:#F56C6C">.error</span></b> - - 閿欒锛岀敤浜庤〃绀烘搷浣滄垨琛屼负涓嶅厑璁告垨鏈揪鎴� - <el-button type="text" @click="openError">鐐瑰嚮</el-button> - </li> - <li> - 鎵€鏈夊脊鍑烘榛樿鏄剧ず鏃堕棿5绉掞紝涓旈渶甯︽湁鍏抽棴鎸夐挳 - </li> - <li> - 瀵逛簬 http 璇锋眰鐨勮繑鍥炵粨鏋滐紝axios - 瀹炰緥涓凡娣诲姞鍏ㄥ眬閿欒鎻愮ず锛屼竴鑸儏鍐典笅鏃犻渶棰濆澶勭悊锛堟垚鍔熸彁绀轰粛闇€鎵嬪姩娣诲姞锛� - </li> - </ul> - </text-field> - </el-row> - <el-row class="row" style="margin-top:30px"> - <span class="text-title">鍏朵粬娉ㄦ剰浜嬮」</span> - </el-row> - <el-row> - <text-field> - <ul class="note"> - <li> - 浠讳綍涓嶅彲閫嗘搷浣滃湪鎵ц鍓嶅繀椤诲脊鍑虹‘璁ゆ - </li> - <li> - 浜嬩欢瑙﹀彂璋冪敤 http - 璇锋眰鍒拌繑鍥炵粨鏋滆繖娈垫椂闂村唴锛屽簲闃叉浜嬩欢鍐嶆琚Е鍙戯紙鎵嬫鍖呮嫭浣嗕笉闄愪簬娣诲姞 - loading銆佽缃� disabled 绛夛級 - </li> - </ul> - </text-field> - </el-row> - </el-card> - </div> -</template> - -<script> -import TextField from "@/components/TextField"; -export default { - name: "Exmple", - components: { TextField }, - data() { - return { - input: "", - options: [ - { - value: "閫夐」1", - label: "榛勯噾绯�" - }, - { - value: "閫夐」2", - label: "鍙岀毊濂�" - }, - { - value: "閫夐」3", - label: "铓典粩鐓�" - }, - { - value: "閫夐」4", - label: "榫欓』闈�" - }, - { - value: "閫夐」5", - label: "鍖椾含鐑ら腑" - } - ], - value1: "", - value: "", - checkList: ["閫変腑涓旂鐢�", "澶嶉€夋 A"], - radio: 3 - }; - }, - methods: { - openInfo() { - this.$message({ - showClose: true, - message: "杩欐槸涓€鏉℃秷鎭彁绀�" - }); - }, - - openSuccess() { - this.$message({ - showClose: true, - message: "鎭枩浣狅紝杩欐槸涓€鏉℃垚鍔熸秷鎭�", - type: "success" - }); - }, - - openWarning() { - this.$message({ - showClose: true, - message: "璀﹀憡鍝︼紝杩欐槸涓€鏉¤鍛婃秷鎭�", - type: "warning" - }); - }, - - openError() { - this.$message({ - showClose: true, - message: "閿欎簡鍝︼紝杩欐槸涓€鏉¢敊璇秷鎭�", - type: "error" - }); - } - } -}; -</script> - -<style scoped> -.tag-outer { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - position: absolute; - top: 20px; - right: 40px; - width: 40px; - height: 40px; - font-size: 12px; - background-color: #409eff; - border-right: 5px solid rgb(121, 187, 255); - border-left: 5px solid rgb(121, 187, 255); - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.12), 0 0 6px rgba(0, 0, 0, 0.04); -} -</style> - -<style scoped> -.text-title { - display: inline-block; - font-size: 16px; - font-weight: 400; - color: #303133; -} -.row { - margin-bottom: 20px; -} -ul.note { - padding: 0 0 0 10px !important; - margin: 0 !important; -} -ul.note > li { - line-height: 2; - font-size: 14px; - color: #606266; -} -</style> diff --git a/WebSite/src/views/example/layout.vue b/WebSite/src/views/example/layout.vue deleted file mode 100644 index fe49f8105f817525aeba360f88e5e6cf9534a4da..0000000000000000000000000000000000000000 --- a/WebSite/src/views/example/layout.vue +++ /dev/null @@ -1,187 +0,0 @@ -<!-- - * @Description: - * @Autor: dong jun hua - * @Date: 2020-07-15 16:50:12 - * @LastEditors: dong jun hua - * @LastEditTime: 2020-09-17 10:01:43 ---> -<template> - <div class="app-container"> - <el-card shadow="hover"> - <el-row class="row"> - <span class="text-title">甯冨眬鎸囧鍘熷垯</span> - </el-row> - <el-row> - <text-field> - <ul class="note"> - <li> - 浠讳綍鏃跺€欙紝椤甸潰缁勪欢鏈€澶栧眰搴斾娇鐢� div 浣滀负鏈€澶栧眰瀹瑰櫒锛屼笖 class 涓� - app-container锛堣鏍峰紡宸插湪鍏ㄥ眬 css 涓畾涔夛級 - </li> - <li> - 鍏充簬鎬讳綋甯冨眬锛堜緥濡備笂涓嬪乏鍙冲尯鍧楋紝鍏冪礌鐨勫唴瀹瑰拰浣嶇疆锛夛紝寮€鍙戜汉鍛樺簲鍙傜収 - UI 璁捐杩涜 - </li> - <li> - 浠ュ睍绀虹殑鍐呭鎬ц川鍒掑垎鍖哄煙锛堜緥濡傛煡璇㈡潯浠躲€佹煡璇㈢粨鏋滐級锛屾瘡涓尯鍩熶娇鐢� - el-card 缁勪欢浣滀负澶栭儴瀹瑰櫒 - </li> - <li> - 姣忎釜 el-card 涓殑鍐呭锛屽簲浣跨敤 el-row 鍙� el-col 鐨勬爡鏍煎寲甯冨眬 - </li> - <li> - 瀵逛簬 el-row 涓彲鑳藉瓨鍦ㄥ鍒楃殑鎯呭喌锛堜緥濡傛煡璇㈡潯浠讹級锛屽繀椤讳娇鐢� - el-col锛岄粯璁ゅ搷搴斿昂瀵歌缃负 :sm="12" :md="8" - :lg="6"锛屽浜庣‘瀹氫笉瀛樺湪澶氬垪鐨勬儏鍐碉紙渚嬪鏌ヨ缁撴灉锛夛紝鍙互灏� el-col - 璁剧疆涓� :span=24锛屼篃鍙互涓嶄娇鐢� el-col - </li> - <li> - 姣忎釜鍧楃骇鍏冪礌鐨勯粯璁ら棿璺濅负20px锛堝寘鎷絾涓嶉檺浜庯細涓嶅悓 el-card - 涔嬮棿銆乪l-card - 鍜屽唴閮ㄥ厓绱犱箣闂淬€佸唴閮ㄥ厓绱犲拰鍐呴儴鍏冪礌涔嬮棿锛屾寜閽箣闂翠緥澶栵紝浣跨敤 - el-button 榛樿闂撮殧鍗冲彲锛� - </li> - </ul> - </text-field> - </el-row> - <el-row class="row" style="margin-top:30px"> - <span class="text-title">绀轰緥</span> - </el-row> - <el-row> - <div class="l-app"> - <div class="l-card"> - <el-row :gutter="20"> - <el-col :sm="12" :md="8" :lg="6" style="margin-bottom:20px"> - <div class="grid-content bg-purple l-flex"> - <b style="color:#666666">el-input</b> - </div> - </el-col> - <el-col :sm="12" :md="8" :lg="6" style="margin-bottom:20px"> - <div class="grid-content bg-purple l-flex"> - <b style="color:#666666">el-input</b> - </div> - </el-col> - <el-col :sm="12" :md="8" :lg="6" style="margin-bottom:20px"> - <div class="grid-content bg-purple l-flex"> - <b style="color:#666666">el-input</b> - </div> - </el-col> - <el-col :sm="12" :md="8" :lg="6" style="margin-bottom:20px"> - <div class="grid-content bg-purple l-flex"> - <b style="color:#666666">el-input</b> - </div> - </el-col> - </el-row> - <el-row :gutter="20"> - <el-col :span="24"> - <div - class="grid-content bg-blue l-i-flex" - style="width:100px; margin-right:5px" - > - <b style="color:#ffffff">el-button</b> - </div> - <div - class="grid-content bg-red l-i-flex" - style="width:100px; margin-right:5px" - > - <b style="color:#ffffff">el-button</b> - </div> - <div - class="grid-content bg-green l-i-flex" - style="width:100px; margin-right:5px" - > - <b style="color:#ffffff">el-button</b> - </div> - </el-col> - </el-row> - </div> - <div class="l-card" style="margin-top:20px"> - <el-row> - <div class="grid-content bg-purple l-flex" style="height:300px"> - <b style="color:#666666">el-table</b> - </div> - </el-row> - </div> - </div> - </el-row> - </el-card> - </div> -</template> - -<script> -import TextField from "@/components/TextField"; -export default { - name: "Layout", - components: { TextField } -}; -</script> - -<style scoped> -.l-app { - width: 100%; - padding: 20px; - background-color: #eeeeee; -} - -.l-card { - width: 100%; - padding: 20px; - background-color: #ffffff; - border-radius: 4px; -} - -.grid-content { - border-radius: 4px; - min-height: 36px; -} - -.bg-purple-dark { - background: #99a9bf; -} -.bg-purple { - background: #d3dce6; -} -.bg-purple-light { - background: #e5e9f2; -} -.bg-red { - background: #f56c6c; -} -.bg-green { - background: #67c23a; -} -.bg-blue { - background: #409eff; -} -.l-flex { - display: flex; - justify-content: center; - align-items: center; -} -.l-i-flex { - display: inline-flex; - justify-content: center; - align-items: center; -} -</style> - -<style scoped> -.text-title { - display: inline-block; - font-size: 16px; - font-weight: 400; - color: #303133; -} -.row { - margin-bottom: 20px; -} -ul.note { - padding: 0 0 0 10px !important; - margin: 0 !important; -} -ul.note > li { - line-height: 2; - font-size: 14px; - color: #606266; -} -</style> diff --git a/WebSite/src/views/example/table.vue b/WebSite/src/views/example/table.vue deleted file mode 100644 index 29a458e26666bd747aeaec3bfc54b302ad5541df..0000000000000000000000000000000000000000 --- a/WebSite/src/views/example/table.vue +++ /dev/null @@ -1,169 +0,0 @@ -<!-- - * @Description: - * @Autor: dong jun hua - * @Date: 2020-07-15 16:50:12 - * @LastEditors: dong jun hua - * @LastEditTime: 2020-09-18 13:49:43 ---> -<template> - <div class="app-container"> - <el-card shadow="hover"> - <el-row class="row"> - <span class="text-title">绀轰緥</span> - </el-row> - <el-row class="row"> - <el-table - :data="tableData" - style="width: 100%" - stripe - :cell-class-name="getCellClass" - > - <el-table-column type="selection" align="center" width="55"> - </el-table-column> - <el-table-column prop="date" label="鏃ユ湡"> </el-table-column> - <el-table-column prop="name" label="濮撳悕"> </el-table-column> - <el-table-column prop="amount" label="閲戦" width="160" align="right"> - <template slot-scope="scope"> - {{ scope.row.amount | moneyFormatter(2, ",") }} - </template> - </el-table-column> - <el-table-column prop="address" label="鍦板潃"> </el-table-column> - <el-table-column label="鐘舵€�" width="160"> - <template slot-scope="scope"> - <el-tag type="success">{{ scope.row.status }}</el-tag> - <el-tag type="info">鍋滅敤</el-tag> - </template> - </el-table-column> - <el-table-column label="鎿嶄綔" width="200"> - <template slot-scope="scope"> - <el-button - @click="handleClick(scope.row)" - type="default" - icon="el-icon-document-copy" - plain - >鏌ョ湅</el-button - > - <el-button type="primary" icon="el-icon-edit" plain - >缂栬緫</el-button - > - </template> - </el-table-column> - </el-table> - <el-pagination - background - layout="total, sizes, prev, pager, next" - :total="tableData.length" - :page-sizes="[20, 50, 100]" - style="margin-top:20px" - > - </el-pagination> - </el-row> - <el-row class="row" style="margin-top:30px"> - <span class="text-title">娉ㄦ剰浜嬮」</span> - </el-row> - <el-row> - <text-field> - <ul class="note"> - <li> - 濡傛棤鐗规畩鎯呭喌锛堜緥濡傦細澶氱骇琛ㄥご锛夛紝琛ㄦ牸榛樿浣跨敤涓嶅甫绔栫洿鏂瑰悜杈规涓斿甫鏈夋枒椹汗鐨勬牱寮� - </li> - <li> - 濡傛棤鐗规畩鎯呭喌锛岃〃鏍肩殑鍒楅粯璁ゅ乏瀵归綈锛屽璇ュ垪琛ㄧず閲戦鍒欏彸瀵归綈 - </li> - <li> - 鐢ㄤ簬閫夋嫨琛岀殑 checkbox 鍒楀簲浣嶄簬鏈€宸︿晶锛岄粯璁ゅ搴�55锛屽眳涓榻� - </li> - <li> - 鐢ㄤ簬鏀剧疆鍚勭鎿嶄綔鎸夐挳鐨勫垪搴斾綅浜庢渶鍙充晶锛屽搴︽牴鎹寜閽暟閲忓喅瀹氾紝褰� - table 鐨勫垪杈冨鏃跺簲鑰冭檻鍥哄畾璇ュ垪 - </li> - <li> - 琛ㄧず鐘舵€佺殑鍒楅渶浣跨敤 el-tag - 缁勪欢锛岄€氬父锛屾垜浠害瀹氬叾鎰忎箟涓虹湡鎴栧甫鏈夋闈㈠惈涔夌殑鐘舵€侀鑹蹭负缁胯壊鎴栬摑鑹诧紝鍏舵剰涔変负鍋囨垨甯︽湁璐熼潰鍚箟鐨勭姸鎬侀鑹蹭负鐏拌壊鎴栫孩鑹� - </li> - <li> - 琛ㄦ牸榛樿姣忛〉鏄剧ず 20 鏉℃暟鎹紝鍦ㄥ垎椤电粍浠朵腑鎻愪緵 20 / 50 / 100 鍏� 3 - 妗e彲璋冩暣閫夐」锛屽悓鏃舵樉绀烘€绘潯鏁� - </li> - </ul> - </text-field> - </el-row> - </el-card> - </div> -</template> - -<script> -import TextField from "@/components/TextField"; -export default { - name: "Button", - components: { TextField }, - data() { - return { - tableData: [ - { - date: "2016-05-02", - name: "鐜嬪皬铏�", - address: "涓婃捣甯傛櫘闄€鍖洪噾娌欐睙璺� 1518 寮�", - amount: 234791253.11, - status: "鍚敤" - }, - { - date: "2016-05-04", - name: "鐜嬪皬铏�", - address: "涓婃捣甯傛櫘闄€鍖洪噾娌欐睙璺� 1517 寮�", - amount: 3241380821.0, - status: "鍚敤" - }, - { - date: "2016-05-01", - name: "鐜嬪皬铏�", - address: "涓婃捣甯傛櫘闄€鍖洪噾娌欐睙璺� 1519 寮�", - amount: 5436434234.0, - status: "鍚敤" - }, - { - date: "2016-05-03", - name: "鐜嬪皬铏�", - address: "涓婃捣甯傛櫘闄€鍖洪噾娌欐睙璺� 1516 寮�", - amount: 73472122.0, - status: "鍚敤" - } - ] - }; - }, - methods: { - getCellClass({ row, column, rowIndex, columnIndex }) { - if (columnIndex === 3) { - return "amount-col"; - } - } - } -}; -</script> - -<style> -.amount-col > .cell { - text-align: right; -} -</style> - -<style scoped> -.text-title { - display: inline-block; - font-size: 16px; - font-weight: 400; - color: #303133; -} -.row { - margin-bottom: 20px; -} -ul.note { - padding: 0 0 0 10px !important; - margin: 0 !important; -} -ul.note > li { - line-height: 2; - font-size: 14px; - color: #606266; -} -</style> diff --git a/WebSite/src/views/excel/components/AutoWidthOption.vue b/WebSite/src/views/excel/components/AutoWidthOption.vue deleted file mode 100644 index 08cc5a843802a3afecb6f0286bc6352658bde19c..0000000000000000000000000000000000000000 --- a/WebSite/src/views/excel/components/AutoWidthOption.vue +++ /dev/null @@ -1,34 +0,0 @@ -<template> - <div style="display:inline-block;"> - <label class="radio-label">Cell Auto-Width: </label> - <el-radio-group v-model="autoWidth"> - <el-radio :label="true" border> - True - </el-radio> - <el-radio :label="false" border> - False - </el-radio> - </el-radio-group> - </div> -</template> - -<script> -export default { - props: { - value: { - type: Boolean, - default: true - } - }, - computed: { - autoWidth: { - get() { - return this.value; - }, - set(val) { - this.$emit("input", val); - } - } - } -}; -</script> diff --git a/WebSite/src/views/excel/components/BookTypeOption.vue b/WebSite/src/views/excel/components/BookTypeOption.vue deleted file mode 100644 index 465113f6566ee0fa4fc644409dc6cb07138f7878..0000000000000000000000000000000000000000 --- a/WebSite/src/views/excel/components/BookTypeOption.vue +++ /dev/null @@ -1,39 +0,0 @@ -<template> - <div style="display:inline-block;"> - <label class="radio-label">Book Type: </label> - <el-select v-model="bookType" style="width:120px;"> - <el-option - v-for="item in options" - :key="item" - :label="item" - :value="item" - /> - </el-select> - </div> -</template> - -<script> -export default { - props: { - value: { - type: String, - default: "xlsx" - } - }, - data() { - return { - options: ["xlsx", "csv", "txt"] - }; - }, - computed: { - bookType: { - get() { - return this.value; - }, - set(val) { - this.$emit("input", val); - } - } - } -}; -</script> diff --git a/WebSite/src/views/excel/components/FilenameOption.vue b/WebSite/src/views/excel/components/FilenameOption.vue deleted file mode 100644 index e29cb85a384ff231880efc1547ede26fa84b6b83..0000000000000000000000000000000000000000 --- a/WebSite/src/views/excel/components/FilenameOption.vue +++ /dev/null @@ -1,32 +0,0 @@ -<template> - <div style="display:inline-block;"> - <label class="radio-label" style="padding-left:0;">Filename: </label> - <el-input - v-model="filename" - placeholder="Please enter the file name (default excel-list)" - style="width:345px;" - prefix-icon="el-icon-document" - /> - </div> -</template> - -<script> -export default { - props: { - value: { - type: String, - default: "" - } - }, - computed: { - filename: { - get() { - return this.value; - }, - set(val) { - this.$emit("input", val); - } - } - } -}; -</script> diff --git a/WebSite/src/views/excel/export-excel.vue b/WebSite/src/views/excel/export-excel.vue deleted file mode 100644 index e613e6a89dac191ce6e24b4fa095df4d254559d8..0000000000000000000000000000000000000000 --- a/WebSite/src/views/excel/export-excel.vue +++ /dev/null @@ -1,142 +0,0 @@ -<template> - <div class="app-container"> - <div> - <FilenameOption v-model="filename" /> - <AutoWidthOption v-model="autoWidth" /> - <BookTypeOption v-model="bookType" /> - <el-button - :loading="downloadLoading" - style="margin:0 0 20px 20px;" - type="primary" - icon="el-icon-document" - @click="handleDownload" - > - Export Excel - </el-button> - <a - href="https://panjiachen.github.io/vue-element-admin-site/feature/component/excel.html" - target="_blank" - style="margin-left:15px;" - > - <el-tag type="info">Documentation</el-tag> - </a> - </div> - - <el-table - v-loading="listLoading" - :data="list" - element-loading-text="Loading..." - border - fit - highlight-current-row - > - <el-table-column align="center" label="Id" width="95"> - <template slot-scope="scope"> - {{ scope.$index }} - </template> - </el-table-column> - <el-table-column label="Title"> - <template slot-scope="scope"> - {{ scope.row.title }} - </template> - </el-table-column> - <el-table-column label="Author" width="110" align="center"> - <template slot-scope="scope"> - <el-tag>{{ scope.row.author }}</el-tag> - </template> - </el-table-column> - <el-table-column label="Readings" width="115" align="center"> - <template slot-scope="scope"> - {{ scope.row.pageviews }} - </template> - </el-table-column> - <el-table-column align="center" label="Date" width="220"> - <template slot-scope="scope"> - <i class="el-icon-time" /> - <span>{{ - scope.row.timestamp | parseTime("{y}-{m}-{d} {h}:{i}") - }}</span> - </template> - </el-table-column> - </el-table> - </div> -</template> - -<script> -import { fetchList } from "@/api/article"; -import { parseTime } from "@/utils"; -// options components -import FilenameOption from "./components/FilenameOption"; -import AutoWidthOption from "./components/AutoWidthOption"; -import BookTypeOption from "./components/BookTypeOption"; - -export default { - name: "ExportExcel", - components: { FilenameOption, AutoWidthOption, BookTypeOption }, - data() { - return { - list: null, - listLoading: true, - downloadLoading: false, - filename: "", - autoWidth: true, - bookType: "xlsx" - }; - }, - created() { - this.fetchData(); - }, - methods: { - fetchData() { - this.listLoading = true; - fetchList().then(response => { - this.list = response.data.items; - this.listLoading = false; - }); - }, - handleDownload() { - this.downloadLoading = true; - import("@/vendor/Export2Excel").then(excel => { - const tHeader = ["Id", "Title", "Author", "Readings", "Date"]; - const filterVal = [ - "id", - "title", - "author", - "pageviews", - "display_time" - ]; - const list = this.list; - const data = this.formatJson(filterVal, list); - excel.export_json_to_excel({ - header: tHeader, - data, - filename: this.filename, - autoWidth: this.autoWidth, - bookType: this.bookType - }); - this.downloadLoading = false; - }); - }, - formatJson(filterVal, jsonData) { - return jsonData.map(v => - filterVal.map(j => { - if (j === "timestamp") { - return parseTime(v[j]); - } else { - return v[j]; - } - }) - ); - } - } -}; -</script> - -<style> -.radio-label { - font-size: 14px; - color: #606266; - line-height: 40px; - padding: 0 12px 0 30px; -} -</style> diff --git a/WebSite/src/views/excel/merge-header.vue b/WebSite/src/views/excel/merge-header.vue deleted file mode 100644 index 2f584232583247b57f6689d1ab2a1c566322e3b5..0000000000000000000000000000000000000000 --- a/WebSite/src/views/excel/merge-header.vue +++ /dev/null @@ -1,116 +0,0 @@ -<template> - <div class="app-container"> - <el-button - :loading="downloadLoading" - style="margin-bottom:20px" - type="primary" - icon="el-icon-document" - @click="handleDownload" - >Export</el-button - > - - <el-table - ref="multipleTable" - v-loading="listLoading" - :data="list" - element-loading-text="Loading" - border - fit - highlight-current-row - > - <el-table-column align="center" label="Id" width="95"> - <template slot-scope="scope"> - {{ scope.$index }} - </template> - </el-table-column> - <el-table-column label="Main Information" align="center"> - <el-table-column label="Title"> - <template slot-scope="scope"> - {{ scope.row.title }} - </template> - </el-table-column> - <el-table-column label="Author" width="110" align="center"> - <template slot-scope="scope"> - <el-tag>{{ scope.row.author }}</el-tag> - </template> - </el-table-column> - <el-table-column label="Readings" width="115" align="center"> - <template slot-scope="scope"> - {{ scope.row.pageviews }} - </template> - </el-table-column> - </el-table-column> - <el-table-column align="center" label="Date" width="220"> - <template slot-scope="scope"> - <i class="el-icon-time" /> - <span>{{ - scope.row.timestamp | parseTime("{y}-{m}-{d} {h}:{i}") - }}</span> - </template> - </el-table-column> - </el-table> - </div> -</template> - -<script> -import { fetchList } from "@/api/article"; -import { parseTime } from "@/utils"; - -export default { - name: "MergeHeader", - data() { - return { - list: null, - listLoading: true, - downloadLoading: false - }; - }, - created() { - this.fetchData(); - }, - methods: { - fetchData() { - this.listLoading = true; - fetchList(this.listQuery).then(response => { - this.list = response.data.items; - this.listLoading = false; - }); - }, - handleDownload() { - this.downloadLoading = true; - import("@/vendor/Export2Excel").then(excel => { - const multiHeader = [["Id", "Main Information", "", "", "Date"]]; - const header = ["", "Title", "Author", "Readings", ""]; - const filterVal = [ - "id", - "title", - "author", - "pageviews", - "display_time" - ]; - const list = this.list; - const data = this.formatJson(filterVal, list); - const merges = ["A1:A2", "B1:D1", "E1:E2"]; - excel.export_json_to_excel({ - multiHeader, - header, - merges, - data - }); - this.downloadLoading = false; - }); - }, - formatJson(filterVal, jsonData) { - return jsonData.map(v => - filterVal.map(j => { - if (j === "timestamp") { - return parseTime(v[j]); - } else { - return v[j]; - } - }) - ); - } - } -}; -</script> diff --git a/WebSite/src/views/excel/select-excel.vue b/WebSite/src/views/excel/select-excel.vue deleted file mode 100644 index 6012b7c6ae43439f958c46af1c1f94b52703bfe0..0000000000000000000000000000000000000000 --- a/WebSite/src/views/excel/select-excel.vue +++ /dev/null @@ -1,128 +0,0 @@ -<template> - <div class="app-container"> - <el-input - v-model="filename" - placeholder="Please enter the file name (default excel-list)" - style="width:350px;" - prefix-icon="el-icon-document" - /> - <el-button - :loading="downloadLoading" - style="margin-bottom:20px" - type="primary" - icon="el-icon-document" - @click="handleDownload" - > - Export Selected Items - </el-button> - <a - href="https://panjiachen.github.io/vue-element-admin-site/feature/component/excel.html" - target="_blank" - style="margin-left:15px;" - > - <el-tag type="info">Documentation</el-tag> - </a> - <el-table - ref="multipleTable" - v-loading="listLoading" - :data="list" - element-loading-text="鎷煎懡鍔犺浇涓�" - border - fit - highlight-current-row - @selection-change="handleSelectionChange" - > - <el-table-column type="selection" align="center" /> - <el-table-column align="center" label="Id" width="95"> - <template slot-scope="scope"> - {{ scope.$index }} - </template> - </el-table-column> - <el-table-column label="Title"> - <template slot-scope="scope"> - {{ scope.row.title }} - </template> - </el-table-column> - <el-table-column label="Author" width="110" align="center"> - <template slot-scope="scope"> - <el-tag>{{ scope.row.author }}</el-tag> - </template> - </el-table-column> - <el-table-column label="Readings" width="115" align="center"> - <template slot-scope="scope"> - {{ scope.row.pageviews }} - </template> - </el-table-column> - <el-table-column align="center" label="PDate" width="220"> - <template slot-scope="scope"> - <i class="el-icon-time" /> - <span>{{ scope.row.display_time }}</span> - </template> - </el-table-column> - </el-table> - </div> -</template> - -<script> -import { fetchList } from "@/api/article"; - -export default { - name: "SelectExcel", - data() { - return { - list: null, - listLoading: true, - multipleSelection: [], - downloadLoading: false, - filename: "" - }; - }, - created() { - this.fetchData(); - }, - methods: { - fetchData() { - this.listLoading = true; - fetchList(this.listQuery).then(response => { - this.list = response.data.items; - this.listLoading = false; - }); - }, - handleSelectionChange(val) { - this.multipleSelection = val; - }, - handleDownload() { - if (this.multipleSelection.length) { - this.downloadLoading = true; - import("@/vendor/Export2Excel").then(excel => { - const tHeader = ["Id", "Title", "Author", "Readings", "Date"]; - const filterVal = [ - "id", - "title", - "author", - "pageviews", - "display_time" - ]; - const list = this.multipleSelection; - const data = this.formatJson(filterVal, list); - excel.export_json_to_excel({ - header: tHeader, - data, - filename: this.filename - }); - this.$refs.multipleTable.clearSelection(); - this.downloadLoading = false; - }); - } else { - this.$message({ - message: "Please select at least one item", - type: "warning" - }); - } - }, - formatJson(filterVal, jsonData) { - return jsonData.map(v => filterVal.map(j => v[j])); - } - } -}; -</script> diff --git a/WebSite/src/views/excel/upload-excel.vue b/WebSite/src/views/excel/upload-excel.vue deleted file mode 100644 index dcd94713ba303fc8dbc37f8e63a78ffc27f31f50..0000000000000000000000000000000000000000 --- a/WebSite/src/views/excel/upload-excel.vue +++ /dev/null @@ -1,55 +0,0 @@ -<template> - <div class="app-container"> - <upload-excel-component - :on-success="handleSuccess" - :before-upload="beforeUpload" - /> - <el-table - :data="tableData" - border - highlight-current-row - style="width: 100%;margin-top:20px;" - > - <el-table-column - v-for="item of tableHeader" - :key="item" - :prop="item" - :label="item" - /> - </el-table> - </div> -</template> - -<script> -import UploadExcelComponent from "@/components/UploadExcel/index.vue"; - -export default { - name: "UploadExcel", - components: { UploadExcelComponent }, - data() { - return { - tableData: [], - tableHeader: [] - }; - }, - methods: { - beforeUpload(file) { - const isLt1M = file.size / 1024 / 1024 < 1; - - if (isLt1M) { - return true; - } - - this.$message({ - message: "Please do not upload files larger than 1m in size.", - type: "warning" - }); - return false; - }, - handleSuccess({ results, header }) { - this.tableData = results; - this.tableHeader = header; - } - } -}; -</script> diff --git a/WebSite/src/views/guide/index.vue b/WebSite/src/views/guide/index.vue deleted file mode 100644 index 0c6bedba80c96a92d0053a6ca7d767080808f66e..0000000000000000000000000000000000000000 --- a/WebSite/src/views/guide/index.vue +++ /dev/null @@ -1,43 +0,0 @@ -<template> - <div class="app-container"> - <aside> - The guide page is useful for some people who entered the project for the - first time. You can briefly introduce the features of the project. Demo is - based on - <a href="https://github.com/kamranahmedse/driver.js" target="_blank" - >driver.js.</a - > - </aside> - <el-button - icon="el-icon-question" - type="primary" - @click.prevent.stop="guide" - > - Show Guide - </el-button> - </div> -</template> - -<script> -import Driver from "driver.js"; // import driver.js -import "driver.js/dist/driver.min.css"; // import driver.js css -import steps from "./steps"; - -export default { - name: "Guide", - data() { - return { - driver: null - }; - }, - mounted() { - this.driver = new Driver(); - }, - methods: { - guide() { - this.driver.defineSteps(steps); - this.driver.start(); - } - } -}; -</script> diff --git a/WebSite/src/views/guide/steps.js b/WebSite/src/views/guide/steps.js deleted file mode 100644 index 6dfc9c2dc66f2c31642e7b081832dae7c241588b..0000000000000000000000000000000000000000 --- a/WebSite/src/views/guide/steps.js +++ /dev/null @@ -1,53 +0,0 @@ -const steps = [ - { - element: "#hamburger-container", - popover: { - title: "Hamburger", - description: "Open && Close sidebar", - position: "bottom" - } - }, - { - element: "#breadcrumb-container", - popover: { - title: "Breadcrumb", - description: "Indicate the current page location", - position: "bottom" - } - }, - { - element: "#header-search", - popover: { - title: "Page Search", - description: "Page search, quick navigation", - position: "left" - } - }, - { - element: "#screenfull", - popover: { - title: "Screenfull", - description: "Set the page into fullscreen", - position: "left" - } - }, - { - element: "#size-select", - popover: { - title: "Switch Size", - description: "Switch the system size", - position: "left" - } - }, - { - element: "#tags-view-container", - popover: { - title: "Tags view", - description: "The history of the page you visited", - position: "bottom" - }, - padding: 0 - } -]; - -export default steps; diff --git a/WebSite/src/views/home/index.vue b/WebSite/src/views/home/index.vue index b90e914c8fbeac421778c5340d7cc658602a0f83..9543767839470a947d6424e7d16ee892ee9961a7 100644 --- a/WebSite/src/views/home/index.vue +++ b/WebSite/src/views/home/index.vue @@ -1,16 +1,43 @@ <!-- * @Description: - * @Autor: dong jun hua - * @Date: 2020-07-15 16:31:00 + * @Autor: dongjunhua + * @Date: 2021-01-20 09:16:50 * @LastEditors: dongjunhua - * @LastEditTime: 2020-09-13 15:36:49 + * @LastEditTime: 2021-02-18 16:55:50 --> + <template> - <div></div> + <div class="app-container"> + <el-card shadow="never" @click="testLoading"> + <el-calendar v-model="today"> </el-calendar> + </el-card> + </div> </template> <script> +import { reactive, toRefs } from 'vue'; +import { useStore } from 'vuex'; export default { - name: "Home" + name: 'Home', + setup() { + console.log('鎴戣繘鏉ヤ簡'); + const store = useStore(); + + const data = reactive({ + today: new Date() + }); + + const testLoading = () => { + store.dispatch('app/startLoading'); + setTimeout(() => { + store.dispatch('app/endLoading'); + }, 8000); + }; + + return { + ...toRefs(data), + testLoading + }; + } }; </script> diff --git a/WebSite/src/views/icons/element-icons.js b/WebSite/src/views/icons/element-icons.js deleted file mode 100644 index 6b4d71603cacf35587c43c3f6798abff5afc3ca2..0000000000000000000000000000000000000000 --- a/WebSite/src/views/icons/element-icons.js +++ /dev/null @@ -1,284 +0,0 @@ -const elementIcons = [ - "platform-eleme", - "eleme", - "delete-solid", - "delete", - "s-tools", - "setting", - "user-solid", - "user", - "phone", - "phone-outline", - "more", - "more-outline", - "star-on", - "star-off", - "s-goods", - "goods", - "warning", - "warning-outline", - "question", - "info", - "remove", - "circle-plus", - "success", - "error", - "zoom-in", - "zoom-out", - "remove-outline", - "circle-plus-outline", - "circle-check", - "circle-close", - "s-help", - "help", - "minus", - "plus", - "check", - "close", - "picture", - "picture-outline", - "picture-outline-round", - "upload", - "upload2", - "download", - "camera-solid", - "camera", - "video-camera-solid", - "video-camera", - "message-solid", - "bell", - "s-cooperation", - "s-order", - "s-platform", - "s-fold", - "s-unfold", - "s-operation", - "s-promotion", - "s-home", - "s-release", - "s-ticket", - "s-management", - "s-open", - "s-shop", - "s-marketing", - "s-flag", - "s-comment", - "s-finance", - "s-claim", - "s-custom", - "s-opportunity", - "s-data", - "s-check", - "s-grid", - "menu", - "share", - "d-caret", - "caret-left", - "caret-right", - "caret-bottom", - "caret-top", - "bottom-left", - "bottom-right", - "back", - "right", - "bottom", - "top", - "top-left", - "top-right", - "arrow-left", - "arrow-right", - "arrow-down", - "arrow-up", - "d-arrow-left", - "d-arrow-right", - "video-pause", - "video-play", - "refresh", - "refresh-right", - "refresh-left", - "finished", - "sort", - "sort-up", - "sort-down", - "rank", - "loading", - "view", - "c-scale-to-original", - "date", - "edit", - "edit-outline", - "folder", - "folder-opened", - "folder-add", - "folder-remove", - "folder-delete", - "folder-checked", - "tickets", - "document-remove", - "document-delete", - "document-copy", - "document-checked", - "document", - "document-add", - "printer", - "paperclip", - "takeaway-box", - "search", - "monitor", - "attract", - "mobile", - "scissors", - "umbrella", - "headset", - "brush", - "mouse", - "coordinate", - "magic-stick", - "reading", - "data-line", - "data-board", - "pie-chart", - "data-analysis", - "collection-tag", - "film", - "suitcase", - "suitcase-1", - "receiving", - "collection", - "files", - "notebook-1", - "notebook-2", - "toilet-paper", - "office-building", - "school", - "table-lamp", - "house", - "no-smoking", - "smoking", - "shopping-cart-full", - "shopping-cart-1", - "shopping-cart-2", - "shopping-bag-1", - "shopping-bag-2", - "sold-out", - "sell", - "present", - "box", - "bank-card", - "money", - "coin", - "wallet", - "discount", - "price-tag", - "news", - "guide", - "male", - "female", - "thumb", - "cpu", - "link", - "connection", - "open", - "turn-off", - "set-up", - "chat-round", - "chat-line-round", - "chat-square", - "chat-dot-round", - "chat-dot-square", - "chat-line-square", - "message", - "postcard", - "position", - "turn-off-microphone", - "microphone", - "close-notification", - "bangzhu", - "time", - "odometer", - "crop", - "aim", - "switch-button", - "full-screen", - "copy-document", - "mic", - "stopwatch", - "medal-1", - "medal", - "trophy", - "trophy-1", - "first-aid-kit", - "discover", - "place", - "location", - "location-outline", - "location-information", - "add-location", - "delete-location", - "map-location", - "alarm-clock", - "timer", - "watch-1", - "watch", - "lock", - "unlock", - "key", - "service", - "mobile-phone", - "bicycle", - "truck", - "ship", - "basketball", - "football", - "soccer", - "baseball", - "wind-power", - "light-rain", - "lightning", - "heavy-rain", - "sunrise", - "sunrise-1", - "sunset", - "sunny", - "cloudy", - "partly-cloudy", - "cloudy-and-sunny", - "moon", - "moon-night", - "dish", - "dish-1", - "food", - "chicken", - "fork-spoon", - "knife-fork", - "burger", - "tableware", - "sugar", - "dessert", - "ice-cream", - "hot-water", - "water-cup", - "coffee-cup", - "cold-drink", - "goblet", - "goblet-full", - "goblet-square", - "goblet-square-full", - "refrigerator", - "grape", - "watermelon", - "cherry", - "apple", - "pear", - "orange", - "coffee", - "ice-tea", - "ice-drink", - "milk-tea", - "potato-strips", - "lollipop", - "ice-cream-square", - "ice-cream-round" -]; - -export default elementIcons; diff --git a/WebSite/src/views/icons/index.vue b/WebSite/src/views/icons/index.vue deleted file mode 100644 index e78635bed03b661a1f07af83235ee1fb79375ca8..0000000000000000000000000000000000000000 --- a/WebSite/src/views/icons/index.vue +++ /dev/null @@ -1,112 +0,0 @@ -<template> - <div class="icons-container"> - <!-- <aside> - <a - href="https://panjiachen.github.io/vue-element-admin-site/guide/advanced/icon.html" - target="_blank" - >Add and use - </a> - </aside> --> - <el-tabs type="border-card"> - <el-tab-pane label="Icons"> - <div class="grid"> - <div - v-for="item of svgIcons" - :key="item" - @click="handleClipboard(generateIconCode(item), $event)" - > - <el-tooltip placement="top"> - <div slot="content"> - {{ generateIconCode(item) }} - </div> - <div class="icon-item"> - <svg-icon :icon-class="item" class-name="disabled" /> - <span>{{ item }}</span> - </div> - </el-tooltip> - </div> - </div> - </el-tab-pane> - <el-tab-pane label="Element-UI Icons"> - <div class="grid"> - <div - v-for="item of elementIcons" - :key="item" - @click="handleClipboard(generateElementIconCode(item), $event)" - > - <el-tooltip placement="top"> - <div slot="content"> - {{ generateElementIconCode(item) }} - </div> - <div class="icon-item"> - <i :class="'el-icon-' + item" /> - <span>{{ item }}</span> - </div> - </el-tooltip> - </div> - </div> - </el-tab-pane> - </el-tabs> - </div> -</template> - -<script> -import clipboard from "@/utils/clipboard"; -import svgIcons from "./svg-icons"; -import elementIcons from "./element-icons"; - -export default { - name: "Icons", - data() { - return { - svgIcons, - elementIcons - }; - }, - methods: { - generateIconCode(symbol) { - return `<svg-icon icon-class="${symbol}" />`; - }, - generateElementIconCode(symbol) { - return `<i class="el-icon-${symbol}" />`; - }, - handleClipboard(text, event) { - clipboard(text, event); - } - } -}; -</script> - -<style lang="scss" scoped> -.icons-container { - // margin: 10px 20px 0; - overflow: hidden; - - .grid { - position: relative; - display: grid; - grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); - } - - .icon-item { - margin: 20px; - height: 85px; - text-align: center; - width: 100px; - float: left; - font-size: 30px; - color: #24292e; - cursor: pointer; - } - - span { - display: block; - font-size: 16px; - margin-top: 10px; - } - - .disabled { - pointer-events: none; - } -} -</style> diff --git a/WebSite/src/views/icons/svg-icons.js b/WebSite/src/views/icons/svg-icons.js deleted file mode 100644 index 4b220e127e4ce804b8ddcdb23883868e8356c97c..0000000000000000000000000000000000000000 --- a/WebSite/src/views/icons/svg-icons.js +++ /dev/null @@ -1,10 +0,0 @@ -const req = require.context("../../icons/svg", false, /\.svg$/); -const requireAll = requireContext => requireContext.keys(); - -const re = /\.\/(.*)\.svg/; - -const svgIcons = requireAll(req).map(i => { - return i.match(re)[1]; -}); - -export default svgIcons; diff --git a/WebSite/src/views/login/auth-redirect.vue b/WebSite/src/views/login/auth-redirect.vue deleted file mode 100644 index 65ee12bd1772ebc71087e340147d479130b6cf06..0000000000000000000000000000000000000000 --- a/WebSite/src/views/login/auth-redirect.vue +++ /dev/null @@ -1,15 +0,0 @@ -<script> -export default { - name: "AuthRedirect", - created() { - const hash = window.location.search.slice(1); - if (window.localStorage) { - window.localStorage.setItem("x-admin-oauth-code", hash); - window.close(); - } - }, - render: function(h) { - return h(); // avoid warning message - } -}; -</script> diff --git a/WebSite/src/views/login/components/SelectUser.vue b/WebSite/src/views/login/components/SelectUser.vue new file mode 100644 index 0000000000000000000000000000000000000000..27d4a58ca56256e83c7f82822976a1e62878bc2f --- /dev/null +++ b/WebSite/src/views/login/components/SelectUser.vue @@ -0,0 +1,137 @@ +<!-- + * @Description: + * @Autor: dongjunhua + * @Date: 2020-12-23 12:56:35 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-02-02 13:29:47 +--> + +<template> + <div class="selection-container"> + <div class="title"> + <span class="big">:) Welcome!</span> + <span class="small">{{ + transitionList.length > 0 + ? 'Please select a user:' + : 'No user can be selected.' + }}</span> + </div> + <div v-for="item in transitionList" :key="item.id"> + <transition name="fade-transform-bottom"> + <div + v-show="item.show" + class="selection" + @click="handleSelectUser(item.id)" + > + <span class="svg-container"> + <svg-icon icon-class="user" /> + </span> + <span>{{ item.name }}</span> + </div> + </transition> + </div> + </div> +</template> + +<script> +import { onMounted, reactive, ref, watch } from 'vue'; +export default { + name: 'SelectUser', + props: { + userList: { + type: Array, + default: () => [] + } + }, + setup(props, context) { + const selectedUserId = ref(0); + const transitionList = reactive([]); + const handleSelectUser = id => { + context.emit('handle-confirm', id); + }; + watch( + () => props.userList, + () => { + // console.log(props.userList); + }, + { deep: true } + ); + onMounted(() => { + props.userList.forEach(u => { + transitionList.push({ + ...u, + show: false + }); + }); + let i = 0; + const interval = setInterval(() => { + if (i < transitionList.length) { + transitionList[i].show = true; + i++; + } else { + clearInterval(interval); + } + }, 200); + }); + return { props, selectedUserId, handleSelectUser, transitionList }; + } +}; +</script> + +<style lang="scss" scoped> +$dark_gray: #889aa4; +$light_gray: #eee; +.selection-container { + width: 100%; + + .title { + width: 100%; + height: 120px; + + span { + display: block; + // color: $light_gray; + font-weight: bold; + } + + .big { + line-height: 80px; + font-size: 32px; + } + + .small { + line-height: 30px; + font-size: 20px; + } + } + + .selection { + cursor: pointer; + border: 1px solid rgba(255, 255, 255, 0.2); + background: rgba(255, 255, 255, 0.1); + border-radius: 5px; + // color: #454545; + width: 100%; + height: 45px; + margin-bottom: 16px; + display: flex; + align-items: center; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.12), 0 0 6px rgba(0, 0, 0, 0.04); + + &:hover { + background: rgba(255, 255, 255, 0.3); + } + + .svg-container { + margin-left: 15px; + margin-right: 15px; + color: $dark_gray; + vertical-align: middle; + } + + // span { + // color: #eee; + // } + } +} +</style> diff --git a/WebSite/src/views/login/components/SocialSignin.vue b/WebSite/src/views/login/components/SocialSignin.vue deleted file mode 100644 index f85e73033d2692110e8a84b0033160656b27e25f..0000000000000000000000000000000000000000 --- a/WebSite/src/views/login/components/SocialSignin.vue +++ /dev/null @@ -1,76 +0,0 @@ -<template> - <div class="social-signup-container"> - <div class="sign-btn" @click="wechatHandleClick('wechat')"> - <span class="wx-svg-container" - ><svg-icon icon-class="wechat" class="icon" - /></span> - WeChat - </div> - <div class="sign-btn" @click="tencentHandleClick('tencent')"> - <span class="qq-svg-container" - ><svg-icon icon-class="qq" class="icon" - /></span> - QQ - </div> - </div> -</template> - -<script> -// import openWindow from '@/utils/open-window' - -export default { - name: "SocialSignin", - methods: { - wechatHandleClick(thirdpart) { - alert("ok"); - // this.$store.commit('SET_AUTH_TYPE', thirdpart) - // const appid = 'xxxxx' - // const redirect_uri = encodeURIComponent('xxx/redirect?redirect=' + window.location.origin + '/auth-redirect') - // const url = 'https://open.weixin.qq.com/connect/qrconnect?appid=' + appid + '&redirect_uri=' + redirect_uri + '&response_type=code&scope=snsapi_login#wechat_redirect' - // openWindow(url, thirdpart, 540, 540) - }, - tencentHandleClick(thirdpart) { - alert("ok"); - // this.$store.commit('SET_AUTH_TYPE', thirdpart) - // const client_id = 'xxxxx' - // const redirect_uri = encodeURIComponent('xxx/redirect?redirect=' + window.location.origin + '/auth-redirect') - // const url = 'https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=' + client_id + '&redirect_uri=' + redirect_uri - // openWindow(url, thirdpart, 540, 540) - } - } -}; -</script> - -<style lang="scss" scoped> -.social-signup-container { - margin: 20px 0; - .sign-btn { - display: inline-block; - cursor: pointer; - } - .icon { - color: #fff; - font-size: 24px; - margin-top: 8px; - } - .wx-svg-container, - .qq-svg-container { - display: inline-block; - width: 40px; - height: 40px; - line-height: 40px; - text-align: center; - padding-top: 1px; - border-radius: 4px; - margin-bottom: 20px; - margin-right: 5px; - } - .wx-svg-container { - background-color: #24da70; - } - .qq-svg-container { - background-color: #6ba2d6; - margin-left: 50px; - } -} -</style> diff --git a/WebSite/src/views/login/index.vue b/WebSite/src/views/login/index.vue index 967bafcd02eb37d938483c3cba5dca13fb3aa48a..d6be31a2ff8b73363c5fd73d29e76c686eb460de 100644 --- a/WebSite/src/views/login/index.vue +++ b/WebSite/src/views/login/index.vue @@ -1,38 +1,65 @@ <template> - <div class="login-warp"> - <div class="login-container"> - <el-form - ref="loginForm" - :model="loginForm" - :rules="loginRules" - class="login-form" - autocomplete="on" - label-position="left" - > - <div class="title-container"> - <h3 class="title"> - {{ defaultSettings.title || "Vue Element Admin" }} - </h3> - </div> + <div class="login-container"> + <vue-particles + v-if="dynamicLoginBg" + :color="dynamicBgColor" + :particleOpacity="0.1" + :particlesNumber="15" + shapeType="circle" + :particleSize="100" + :linesColor="dynamicBgColor" + :linesWidth="1" + :lineLinked="true" + :lineOpacity="0.4" + :linesDistance="150" + :moveSpeed="3" + :hoverEffect="true" + hoverMode="grab" + :clickEffect="true" + clickMode="push" + ></vue-particles> + + <div class="login-inner-container"> + <div class="release-info" @click="showSelectUser = !showSelectUser"> + <span>{{ releaseCycle }}</span> + </div> - <div class="el-form-item-container"> - <el-form-item prop="username"> + <transition name="fade-transform-top"> + <el-form + v-show="!showSelectUser" + ref="loginForm" + :model="formData" + :rules="formRules" + class="login-form" + autocomplete="on" + label-position="left" + > + <div class="title-container"> + <h3 class="title"> + <svg-icon + v-if="title === 'Vue Element Next'" + icon-class="001-adwords" + className="logo-icon" + /> + {{ title === 'Vue Element Next' ? title.substring(1) : title }} + </h3> + </div> + + <el-form-item prop="account"> <span class="svg-container"> <svg-icon icon-class="user" /> </span> <el-input - ref="username" - v-model="loginForm.username" - placeholder="Username" - name="username" + ref="account" + v-model="formData.account" + placeholder="account" + name="account" type="text" tabindex="1" autocomplete="on" /> </el-form-item> - </div> - <div class="el-form-item-container"> <el-tooltip v-model="capsTooltip" content="Caps lock is On" @@ -46,299 +73,300 @@ <el-input :key="passwordType" ref="password" - v-model="loginForm.password" + v-model="formData.password" :type="passwordType" placeholder="Password" name="password" tabindex="2" autocomplete="on" - @keyup.native="checkCapslock" + @keyup="checkCapslock" @blur="capsTooltip = false" - @keyup.enter.native="handleLogin" + @keyup.enter="handleLogin" /> - <span class="show-pwd" @click="showPwd"> + <span class="show-pwd" @click="showPassword"> <svg-icon :icon-class="passwordType === 'password' ? 'eye' : 'eye-open'" /> </span> </el-form-item> </el-tooltip> + + <el-button + :loading="loading" + type="primary" + size="medium" + style="width:100%" + @click.prevent="handleLogin" + >Login</el-button + > + </el-form> + </transition> + + <transition name="fade-transform-bottom"> + <div v-if="showSelectUser" class="login-form"> + <select-user :userList="userList" @handle-confirm="handleSetUser" /> </div> + </transition> - <el-form-item prop="status"> - <jc-range - style="margin-top:30px" - :status.sync="loginForm.status" - :successFun="onMpanelSuccess" - :errorFun="onMpanelError" - @handle-confirm="handleLogin" - ></jc-range> - </el-form-item> - - <!-- <el-button - :loading="loading" - type="primary" - style="width:100%;margin-bottom:30px;margin-top:30px" - @click.native.prevent="handleLogin" - >鐧� 褰�</el-button - > --> - - <!-- <div style="position:relative"> - <div class="tips"> - <span>Username : admin</span> - <span>Password : any</span> + <div class="svg-link-container"> + <div class="icon-container"> + <a href="https://v3.vuejs.org/" title="Vue.js" + ><svg-icon icon-class="vue" className="vue-icon" + /></a> </div> - <div class="tips"> - <span style="margin-right:18px;">Username : editor</span> - <span>Password : any</span> + <div class="icon-container"> + <a href="https://element-plus.gitee.io/#/zh-CN" title="Element Plus"> + <svg-icon icon-class="element" className="element-icon" /> + </a> + </div> + <div class="icon-container"> + <a + href="http://git.seaskysh.com.cn:8800/dongjunhua/vue-element-next" + title="GitLab" + > + <svg-icon icon-class="gitlab" className="gitlab-icon" /> + </a> </div> + </div> - <el-button - class="thirdparty-button" - type="primary" - @click="showDialog = true" - > - Or connect with - </el-button> - </div> --> - </el-form> - - <el-dialog title="Or connect with" :visible.sync="showDialog"> - Can not be simulated on local, so please combine you own business - simulation! ! ! - <br /> - <br /> - <br /> - <social-sign /> - </el-dialog> + <div class="info-container"> + <div class="text-container"> + <span style="margin-right:10px" + >Ver. {{ `${version}(${coreVersion})` }} + </span> + <span>Powered by Vue.js v3 {{ '&' }} Element Plus</span> + </div> + </div> </div> - <select-user - :visible.sync="dialogSelectUser.visible" - :userList="dialogSelectUser.userList" - @handle-confirm="setUser" - /> - <modify-password - :visible.sync="dialogModifyPassword.visible" - :isInitial="true" - @handle-confirm="selectUser" - /> </div> </template> <script> -import { validUsername } from "@/utils/validate"; -import SocialSign from "./components/SocialSignin"; -import SelectUser from "@/components/SelectUser"; -import ModifyPassword from "@/components/ModifyPassword"; -import JcRange from "@/components/JcRange"; +import defaultSettings from '@/settings'; +import { + ref, + onMounted, + reactive, + nextTick, + toRefs, + computed, + watch +} from 'vue'; +import { useStore } from 'vuex'; +import { useRoute } from 'vue-router'; +// import { useRouter } from 'vue-router'; +import AuthenticationToken from '@/core/model/AuthenticationToken'; +import SelectUser from './components/SelectUser'; export default { - name: "Login", - components: { SocialSign, SelectUser, JcRange, ModifyPassword }, - data() { - const validateUsername = (rule, value, callback) => { - callback(); - // if (!validUsername(value)) { - // callback(new Error("Please enter the correct user name")); - // } else { - // callback(); - // } - }; - const validatePassword = (rule, value, callback) => { - callback(); - // if (value.length < 6) { - // callback(new Error("The password can not be less than 6 digits")); - // } else { - // callback(); - // } - }; - const checkStatus = (rule, value, callback) => { - if (!value) { - callback(new Error("璇锋嫋鍔ㄦ粦鍧楀畬鎴愰獙璇�")); - } else { - callback(); - } - }; - return { - defaultSettings: require("@/settings.js"), - loginForm: { - username: "admin", - password: "123456", - status: false + name: 'Login', + components: { + SelectUser + }, + setup() { + // important!! this can't be used inside setup + // useStore & useRouter can only be used inside setup + const store = useStore(); + const route = useRoute(); + const loginForm = ref(null); + const account = ref(null); + const password = ref(null); + const data = reactive({ + title: defaultSettings.applicationName, + releaseCycle: defaultSettings.releaseCycle, + version: defaultSettings.version, + coreVersion: defaultSettings.coreVersion, + dynamicLoginBg: defaultSettings.dynamicLoginBg, + formData: { + account: 'admin', + password: '123456' }, - loginRules: { - username: [ - { required: true, trigger: "blur", validator: validateUsername } + formRules: { + account: [ + { required: true, trigger: 'blur', validator: validateAccount } ], password: [ - { required: true, trigger: "blur", validator: validatePassword } - ], - status: [{ trigger: "change", validator: checkStatus }] + { required: true, trigger: 'blur', validator: validatePassword } + ] }, - passwordType: "password", + passwordType: 'password', capsTooltip: false, - dialogVisible: false, loading: false, showDialog: false, redirect: undefined, - radio: "1", otherQuery: {}, - dialogSelectUser: { - visible: false, - userList: [] - }, - dialogModifyPassword: { - visible: false + userList: [], + showSelectUser: false + }); + + const dynamicBgColor = computed(() => { + if (store.state.app.themes.find(t => t.active).className === 'light') { + return '#aaa'; + } + if (store.state.app.themes.find(t => t.active).className === 'dark') { + return '#ddd'; } + return '#ddd'; + }); + + const validateAccount = (rule, value, callback) => { + // do valid here + // if invalid, callback(new Error()) + callback(); }; - }, - watch: { - $route: { - handler: function(route) { - const query = route.query; - if (query) { - this.redirect = query.redirect; - this.otherQuery = this.getOtherQuery(query); - } - }, - immediate: true - } - }, - created() { - // window.addEventListener('storage', this.afterQRScan) - }, - mounted() { - if (this.loginForm.username === "") { - this.$refs.username.focus(); - } else if (this.loginForm.password === "") { - this.$refs.password.focus(); - } - }, - destroyed() { - // window.removeEventListener('storage', this.afterQRScan) - }, - methods: { - onMpanelSuccess() { - this.$refs.loginForm.validate(_ => {}); - }, - onMpanelError() {}, - submitForm(formName) { - this.$refs[formName].validate(valid => { - if (valid) { - alert("submit!"); - } else { - console.log("error submit!!"); - return false; - } - }); - }, - checkCapslock(e) { + const validatePassword = (rule, value, callback) => { + // do valid here + // if invalid, callback(new Error()) + callback(); + }; + const checkCapslock = e => { const { key } = e; - this.capsTooltip = key && key.length === 1 && key >= "A" && key <= "Z"; - }, - showPwd() { - if (this.passwordType === "password") { - this.passwordType = ""; + data.capsTooltip = key && key.length === 1 && key >= 'A' && key <= 'Z'; + }; + const showPassword = async () => { + if (data.passwordType === 'password') { + data.passwordType = ''; } else { - this.passwordType = "password"; + data.passwordType = 'password'; } - this.$nextTick(() => { - this.$refs.password.focus(); - }); - }, - handleLogin() { - this.$refs.loginForm.validate(async valid => { + await nextTick(); + password.value.focus(); + }; + const handleLogin = () => { + loginForm.value.validate(async valid => { if (valid) { - this.loading = true; - try { - const { isInitial, users } = await this.$store.dispatch( - "user/login", - this.loginForm - ); - this.dialogSelectUser.userList = users; - // 棣栨鐧诲綍蹇呴』淇敼瀵嗙爜 - if (isInitial === "YES") { - this.dialogModifyPassword.visible = true; - } else { - this.selectUser(); + const token = new AuthenticationToken( + data.formData.account, + data.formData.password + ); + await store.dispatch('subject/login', token); + const userList = store.state.subject.account.users; + if (userList) { + if (userList.length > 1) { + data.userList = userList; + data.showSelectUser = true; + } else if (userList.length === 1) { + handleSetUser(userList[0].id); } - } catch (err) { - this.loading = false; } + } else { + // console.log('error submit!!'); + return false; } }); - }, - selectUser() { - // 褰撳墠璐﹀彿鍙湁涓€涓叧鑱旂敤鎴风洿鎺ョ櫥褰曪紝鍚﹀垯閫夋嫨鐢ㄦ埛 - if (this.dialogSelectUser.userList.length === 1) { - this.setUser(this.dialogSelectUser.userList[0].id); - } else { - this.dialogSelectUser.visible = true; - } - }, - async setUser(id) { - try { - await this.$store.dispatch("user/setUser", id); - this.$router.push({ - path: "/" - }); - } catch (err) { - this.loading = false; + }; + const handleSetUser = async userId => { + const permitOptions = { authorizationToken: userId }; + if (data.otherQuery.redirect_uri) { + permitOptions.afterPermitted = token => { + window.location.href = `${data.otherQuery.redirect_uri}?code=${token}`; + }; } - }, - // handleLogin() { - // // this.dialogVisible = true; - // // return; - // this.$refs.loginForm.validate(valid => { - // if (valid) { - // this.loading = true; - // this.$store - // .dispatch("user/login", this.loginForm) - // .then(() => { - // this.$router.push({ - // path: this.redirect || "/", - // query: this.otherQuery - // }); - // this.loading = false; - // }) - // .catch(() => { - // this.loading = false; - // }); - // } else { - // console.log("error submit!!"); - // return false; - // } - // }); - // }, - getOtherQuery(query) { + await store.dispatch('subject/permit', permitOptions); + }; + const getQuery = query => { return Object.keys(query).reduce((acc, cur) => { - if (cur !== "redirect") { + if (cur !== 'redirect') { acc[cur] = query[cur]; } return acc; }, {}); - } - // afterQRScan() { - // if (e.key === 'x-admin-oauth-code') { - // const code = getQueryObject(e.newValue) - // const codeMap = { - // wechat: 'code', - // tencent: 'code' - // } - // const type = codeMap[this.auth_type] - // const codeName = code[type] - // if (codeName) { - // this.$store.dispatch('LoginByThirdparty', codeName).then(() => { - // this.$router.push({ path: this.redirect || '/' }) - // }) - // } else { - // alert('绗笁鏂圭櫥褰曞け璐�') - // } - // } - // } + }; + const focus = () => { + if (data.formData.account === '') { + account.value.focus(); + } else if (data.formData.password === '') { + password.value.focus(); + } + }; + + watch( + () => route.path, + () => { + data.otherQuery = getQuery(route.query); + }, + { immediate: true } + ); + + onMounted(() => { + focus(); + }); + + return { + loginForm, + account, + password, + ...toRefs(data), + dynamicBgColor, + checkCapslock, + showPassword, + handleLogin, + handleSetUser + }; } }; </script> +<style lang="scss" scoped> +/* particles */ +#particles-js { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; +} + +/* footer */ +.svg-link-container, +.info-container { + position: absolute; + display: flex; + width: 100%; + height: 40px; + justify-content: center; +} + +.svg-link-container { + bottom: 15%; + + .icon-container { + display: flex; + justify-content: center; + align-items: center; + padding: 10px; + + .vue-icon { + width: 1.3em !important; + height: 1.3em !important; + } + .element-icon { + width: 5em !important; + height: 2em !important; + } + .gitlab-icon { + width: 4.8em !important; + height: 2em !important; + } + } +} + +.info-container { + bottom: calc(15% - 50px); + + .text-container { + display: flex; + justify-content: center; + align-items: center; + padding: 10px; + + span { + color: #aaaaaa; + font-size: 14px; + } + } +} +</style> + <style lang="scss"> /* 淇input 鑳屾櫙涓嶅崗璋� 鍜屽厜鏍囧彉鑹� */ /* Detail see https://github.com/PanJiaChen/vue-element-admin/pull/927 */ @@ -352,6 +380,7 @@ $cursor: #fff; color: $cursor; } } + /* reset element-ui css */ .login-container { .el-input { @@ -365,9 +394,10 @@ $cursor: #fff; -webkit-appearance: none; border-radius: 0px; padding: 12px 5px 12px 15px; - color: $light_gray; + // color: $light_gray; height: 47px; - caret-color: $cursor; + // caret-color: $cursor; + font-size: 16px; &:-webkit-autofill { box-shadow: 0 0 0px 1000px $bg inset !important; @@ -376,38 +406,61 @@ $cursor: #fff; } } - .el-form-item-container { + .el-form-item { border: 1px solid rgba(255, 255, 255, 0.1); background: rgba(0, 0, 0, 0.1); border-radius: 5px; color: #454545; - margin-bottom: 22px; - - .el-form-item { - margin-bottom: 0px !important; - } } } </style> <style lang="scss" scoped> -$bg: #2d3a4b; +$bg: rgb(41, 39, 50); $dark_gray: #889aa4; $light_gray: #eee; -.login-warp { - min-height: 100%; - width: 100%; - background-color: $bg; - overflow: hidden; -} + .login-container { min-height: 100%; width: 100%; - background-color: $bg; overflow: hidden; + position: relative; + display: flex; + justify-content: center; - .login-form { + .login-inner-container { + min-height: 600px; + width: 100%; + overflow: hidden; position: relative; + display: flex; + justify-content: center; + + .release-info { + width: 100px; + height: 100px; + display: flex; + justify-content: center; + align-items: center; + background-color: #409eff; + position: fixed; + top: -50px; + right: -50px; + transform: rotate(45deg); + cursor: pointer; + + span { + user-select: none; + padding-top: 65px; + font-size: 18px; + font-weight: bold; + color: #eeeeee; + } + } + } + + .login-form { + position: absolute; width: 520px; max-width: 100%; padding: 160px 35px 0; @@ -417,7 +470,7 @@ $light_gray: #eee; .tips { font-size: 14px; - color: #fff; + // color: #fff; margin-bottom: 10px; span { @@ -440,10 +493,19 @@ $light_gray: #eee; .title { font-size: 26px; - color: $light_gray; + // color: $light_gray; margin: 0px auto 40px auto; text-align: center; font-weight: bold; + + .logo-icon { + position: relative; + top: -1px; + left: 7px; + transform: rotate(180deg); + width: 1em !important; + height: 1em !important; + } } } diff --git a/WebSite/src/views/main/basicSetting/declarationControl/components/List.vue b/WebSite/src/views/main/basicSetting/declarationControl/components/List.vue new file mode 100644 index 0000000000000000000000000000000000000000..da91084adbcabc9416e646a63ff08fdac6ec8453 --- /dev/null +++ b/WebSite/src/views/main/basicSetting/declarationControl/components/List.vue @@ -0,0 +1,219 @@ +<template> + <div> + <el-card> + <el-row :gutter="20"> + <el-col :span="3"> + <el-button type="primary" @click="handleSave">纭畾</el-button> + </el-col> + <el-col :span="6"> + <div class="flexItem aCenter"> + <span class="txt" style="width: 120px;">{{ + checkInfo.type == '涓€涓�' ? '涓€涓婂勾浠斤細' : '浜屼笂骞翠唤锛�' + }}</span> + <el-date-picker + v-model="form.year" + type="year" + @change="setYear" + placeholder="閫夋嫨骞�" + > + </el-date-picker> + </div> + </el-col> + <el-col :span="13"> + <div class="flexItem aCenter"> + <span class="txt" style="width: 200px;">{{ + checkInfo.type == '涓€涓�' + ? '涓€涓婄敵鎶ヨ捣姝㈡椂闂达細' + : '浜屼笂鐢虫姤璧锋鏃堕棿锛�' + }}</span> + <el-date-picker + v-model="form.time" + type="datetimerange" + @change="setTime" + range-separator="鑷�" + start-placeholder="寮€濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" + > + </el-date-picker> + </div> + </el-col> + </el-row> + </el-card> + <el-card class="mtop20"> + <el-row :gutter="20"> + <el-col :span="6"> + <div class="flexItem aCenter"> + <span class="txt" style="width: 120px;">閮ㄩ棬鍚嶇О锛�</span> + <el-input v-model="checkInfo.deptName"></el-input> + </div> + </el-col> + <el-col :span="18"> + <el-button type="warning" plain @click="init"> + 鍒濆鍖� + </el-button> + <el-button type="success" plain @click="openMore"> + 鎵归噺寮€ + </el-button> + <el-button type="danger" plain @click="closeMore"> + 鎵归噺鍏� + </el-button> + <el-button type="primary" plain @click="getDepartPageInfoFirst"> + 鏌ヨ + </el-button> + </el-col> + </el-row> + </el-card> + <el-card class="mtop20"> + <el-table + stripe + :data="departInfo.deptSwitchOutList" + style="width: 100%" + ref="multipleTable" + class="mtop20" + @selection-change="handleSelectionChange" + fit + > + <el-table-column type="selection" width="55" align="center" /> + <el-table-column label="閮ㄩ棬缂栧彿" prop="deptCode" /> + <el-table-column label="閮ㄩ棬鍚嶇О" prop="deptName" /> + <el-table-column label="鐘舵€�" prop="isOpen"> + <template #default="scope"> + <el-tag v-if="scope.row.isOpen === 'YES'" type="success"> + 鏄� + </el-tag> + <el-tag v-else type="danger">鍚�</el-tag> + </template> + </el-table-column> + </el-table> + <Pagination + v-show="departInfo.total > 0" + :total="departInfo.total" + v-model:page="checkInfo.pageIndex" + v-model:limit="checkInfo.pageSize" + @pagination="getDepartPageInfo" + /> + </el-card> + </div> +</template> + +<script> +import { reactive, toRefs, onMounted, ref } from 'vue'; +import ProjectLibrary from '@/api/projectLibrary'; +import { ElMessage } from 'element-plus'; +import Moment from 'moment'; +export default { + props: { + name: { + type: String + } + }, + setup(props) { + onMounted(() => { + getDepartPageInfo(); + }); + const multipleTable = ref(null); + const state = reactive({ + form: { + deptSwitchCmdList: [], + type: props.name, + year: '', + time: [], + startDate: '', + endDate: '' + }, + checkInfo: { + pageNumber: 1, + pageSize: 10, + type: props.name, + deptName: '' + }, + departInfo: { + total: null, + deptSwitchOutList: [] + }, + multipleSelection: [] + }); + const handleSelectionChange = val => { + state.multipleSelection = val; + }; + const getDepartPageInfoFirst = () => { + state.checkInfo.pageIndex = 1; + getDepartPageInfo(); + }; + // 鍒楄〃 + const getDepartPageInfo = () => { + ProjectLibrary.queryBudgetDeptSwitchDetail(state.checkInfo).then(res => { + console.log('res', res); + state.departInfo.total = res.total; + state.departInfo.deptSwitchOutList = res.data[0].deptSwitchOutList; + }); + }; + const openMore = () => { + if (state.multipleSelection.length === 0) { + ElMessage.warning('鎵€閫夋暟鎹笉鑳戒负绌�'); + return false; + } + let ids = state.multipleSelection.map(v => v.id); + ProjectLibrary.openDeptSwitch(ids).then(() => { + ElMessage.success('鎵归噺寮€鎴愬姛'); + multipleTable.value.clearSelection(); + getDepartPageInfo(); + }); + }; + const closeMore = () => { + if (state.multipleSelection.length === 0) { + ElMessage.warning('鎵€閫夋暟鎹笉鑳戒负绌�'); + return false; + } + let ids = state.multipleSelection.map(v => v.id); + ProjectLibrary.closeDeptSwitch(ids).then(() => { + ElMessage.success('鎵归噺鍏虫垚鍔�'); + multipleTable.value.clearSelection(); + getDepartPageInfo(); + }); + }; + const init = () => { + ProjectLibrary.initBudgetDeptSwitch({ type: props.name }).then(res => { + console.log('11', res); + getDepartPageInfo(); + }); + }; + const handleSave = () => { + ProjectLibrary.saveBudgetSwitch(state.form).then(res => { + console.log('res', res); + }); + }; + const setYear = () => { + state.form.year = Moment(state.form.year).format('YYYY'); + }; + const setTime = () => { + state.form.startDate = Moment(state.form.time[0]).format( + 'YYYY-MM-DD HH:mm:ss' + ); + state.form.endDate = Moment(state.form.time[1]).format( + 'YYYY-MM-DD HH:mm:ss' + ); + }; + return { + ...toRefs(state), + init, + openMore, + closeMore, + handleSave, + setTime, + setYear, + multipleTable, + handleSelectionChange, + getDepartPageInfoFirst, + getDepartPageInfo + }; + } +}; +</script> + +<style lang="scss" scoped> +.txt { + font-size: 14px; + display: inline-block; +} +</style> diff --git a/WebSite/src/views/main/basicSetting/declarationControl/index.vue b/WebSite/src/views/main/basicSetting/declarationControl/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..4fabaca38eb5e6644a7b9b259486c6fe0af5c53e --- /dev/null +++ b/WebSite/src/views/main/basicSetting/declarationControl/index.vue @@ -0,0 +1,43 @@ +<template> + <el-tabs + type="border-card" + v-model="activeName" + @tab-click="handleClick" + :stretch="true" + > + <el-tab-pane label="涓€涓�" name="first"> + <div v-if="activeName == 'first'"> + <List name="涓€涓�" /> + </div> + </el-tab-pane> + <el-tab-pane label="浜屼笂" name="second"> + <div v-if="activeName == 'second'"> + <List name="浜屼笂" /> + </div> + </el-tab-pane> + </el-tabs> +</template> + +<script> +import List from './components/List'; +import { reactive, toRefs } from 'vue'; +export default { + components: { + List + }, + setup() { + const state = reactive({ + activeName: 'first' + }); + const handleClick = (tab, event) => { + console.log(tab, event); + }; + return { + ...toRefs(state), + handleClick + }; + } +}; +</script> + +<style lang="scss" scoped></style> diff --git a/WebSite/src/views/main/basicSetting/equipmentType/index.vue b/WebSite/src/views/main/basicSetting/equipmentType/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..1053ca3f2bd6cec0e51037c5603d0a2a897ca045 --- /dev/null +++ b/WebSite/src/views/main/basicSetting/equipmentType/index.vue @@ -0,0 +1,231 @@ +<template> + <div> + <el-card> + <el-row> + <el-button type="primary" plain @click="handleAdd">鏂板</el-button> + <el-button plain @click="uploadDialog = true">瀵煎叆</el-button> + <el-button type="primary" plain @click="handleExport">瀵煎嚭</el-button> + <el-button type="danger" plain @click="handleDel">鍒犻櫎</el-button> + </el-row> + </el-card> + <el-card class="mtop20"> + <el-table + stripe + :data="departInfo.tableData" + style="width: 100%" + ref="multipleTable" + class="mtop20" + @selection-change="handleSelectionChange" + fit + > + <el-table-column type="selection" width="55" align="center" /> + <el-table-column label="璁惧绫诲瀷" prop="typeName" /> + <el-table-column label="閲囪喘鏂瑰紡" prop="purchaseType" /> + <el-table-column label="鍗曚环闄愬埗" prop="price" /> + <el-table-column fixed="right" label="鎿嶄綔" width="100"> + <template #default="scope"> + <el-button type="text" size="small" @click="handleEdit(scope.row)" + >缂栬緫</el-button + > + </template> + </el-table-column> + </el-table> + <Pagination + v-show="departInfo.total > 0" + :total="departInfo.total" + v-model:page="checkInfo.pageIndex" + v-model:limit="checkInfo.pageSize" + @pagination="getDepartPageInfo" + /> + </el-card> + <el-dialog title="鏂板" v-model="dialogVisible" width="600px"> + <el-form + :model="form" + label-width="120px" + ref="ruleForm" + :rules="validList" + > + <el-form-item label="璁惧绫诲瀷" prop="typeName"> + <el-input v-model="form.typeName"></el-input> + </el-form-item> + <el-form-item label="閲囪喘鏂瑰紡" prop="purchaseType"> + <el-select v-model="form.purchaseType" placeholder="璇烽€夋嫨閲囪喘鏂瑰紡"> + <el-option label="鍒嗘暎閲囪喘" value="ZHENGFUCAIGOU"></el-option> + <el-option label="闆嗗競閲囪喘" value="JIZHONGCAIGOU"></el-option> + <el-option label="闆嗕腑閲囪喘" value="FENSANCAIGOU"></el-option> + </el-select> + </el-form-item> + <el-form-item label="鍗曚环闄愬埗" prop="price"> + <el-input v-model="form.price"></el-input> + </el-form-item> + </el-form> + <template #footer> + <span class="dialog-footer"> + <el-button @click="handleClose">鍙� 娑�</el-button> + <el-button type="primary" @click="onSubmit">纭� 瀹�</el-button> + </span> + </template> + </el-dialog> + <UploadFile + v-model="uploadDialog" + @upload-handler="uploadHandler" + ></UploadFile> + </div> +</template> + +<script> +import { reactive, toRefs, onMounted, ref } from 'vue'; +import { ElMessage, ElMessageBox } from 'element-plus'; +import ProjectLibrary from '@/api/projectLibrary'; +export default { + setup() { + onMounted(() => { + getDepartPageInfo(); + }); + const multipleTable = ref(null); + const ruleForm = ref(null); + const state = reactive({ + checkInfo: { + pageNumber: 1, + pageSize: 10 + }, + projectCheckInfo: { + year: '', //骞翠唤 + projectName: '', //椤圭洰鍚嶇О + pageIndex: 1, + pageSize: 10 + }, + dialogVisible: false, + departInfo: { + total: 1, + tableData: [] + }, + uploadDialog: false, + form: { + typeName: '', + purchaseType: '', + price: '', + id: null, + baseType: '', + year: sessionStorage.getItem('year') + }, + validList: { + typeName: [ + { required: true, message: '璁惧绫诲瀷涓嶈兘涓虹┖', trigger: 'blur' } + ], + purchaseType: [ + { required: true, message: '閲囪喘鏂瑰紡涓嶈兘涓虹┖', trigger: 'change' } + ], + price: [ + { required: true, message: '鍗曚环闄愬埗涓嶈兘涓虹┖', trigger: 'blur' } + ] + }, + multipleSelection: [] + }); + // 鍒犻櫎 + const handleDel = () => { + if (state.multipleSelection.length === 0) { + ElMessage.warning('鍒犻櫎鏁版嵁涓嶈兘涓虹┖'); + return false; + } + ElMessageBox.confirm('纭畾鍒犻櫎鎵€閫夌敤鎴峰悧?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + let ids = state.multipleSelection.map(v => v.id); + ProjectLibrary.deleteDeviceType(ids).then(() => { + ElMessage.success('鍒犻櫎鎴愬姛'); + getDepartPageInfo(); + }); + }) + .catch(() => { + ElMessage.info('宸插彇娑堝垹闄�'); + multipleTable.value.clearSelection(); + }); + }; + const handleSelectionChange = val => { + state.multipleSelection = val; + }; + const getDepartPageInfoFirst = () => { + state.checkInfo.pageIndex = 1; + getDepartPageInfo(); + }; + + const handleAdd = () => { + state.dialogVisible = true; + }; + // 缂栬緫 + const handleEdit = row => { + ProjectLibrary.queryDeviceTypeById(row.id).then(res => { + state.dialogVisible = true; + state.form = res.data[0]; + }); + }; + // 鍒楄〃 + const getDepartPageInfo = () => { + ProjectLibrary.queryDevicePage(state.checkInfo).then(res => { + state.departInfo.total = res.total; + state.departInfo.tableData = res.data; + }); + }; + // 鎻愪氦 + const onSubmit = () => { + let arr = []; + ruleForm.value.validate(valid => { + if (valid) { + arr[0] = state.form; + ProjectLibrary.saveDeviceType(arr).then(() => { + if (state.form.id) { + ElMessage.success('淇敼鎴愬姛'); + } else { + ElMessage.success('鏂板缓鎴愬姛'); + } + handleClose(); + getDepartPageInfo(); + }); + } else { + console.log('error submit!!'); + return false; + } + }); + }; + const handleClose = () => { + state.form = { + typeName: '', + purchaseType: '', + price: '', + id: null, + baseType: '', + year: sessionStorage.getItem('year') + }; + ruleForm.value.resetFields(); + state.dialogVisible = false; + }; + // 瀵煎嚭 + const handleExport = () => {}; + const uploadHandler = file => { + console.log('file', file); + state.uploadDialog = false; + }; + return { + ...toRefs(state), + handleClose, + handleAdd, + uploadHandler, + onSubmit, + multipleTable, + handleEdit, + ruleForm, + handleExport, + getDepartPageInfo, + handleDel, + getDepartPageInfoFirst, + handleSelectionChange + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/main/basicSetting/informationType/index.vue b/WebSite/src/views/main/basicSetting/informationType/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..f0c39ec517d6dfc02cdf026425b9e2aa9a805424 --- /dev/null +++ b/WebSite/src/views/main/basicSetting/informationType/index.vue @@ -0,0 +1,232 @@ +<template> + <div> + <el-card> + <el-row> + <el-button type="primary" plain @click="handleAdd">鏂板</el-button> + <el-button plain @click="uploadDialog = true">瀵煎叆</el-button> + <el-button type="primary" plain @click="handleExport">瀵煎嚭</el-button> + <el-button type="danger" plain @click="handleDel">鍒犻櫎</el-button> + </el-row> + </el-card> + <el-card class="mtop20"> + <el-table + stripe + :data="departInfo.tableData" + style="width: 100%" + ref="multipleTable" + class="mtop20" + @selection-change="handleSelectionChange" + fit + > + <el-table-column type="selection" width="55" align="center" /> + <el-table-column label="澶х被" prop="typeFile1" /> + <el-table-column label="涓被" prop="typeFile2" /> + <el-table-column label="灏忕被" prop="typeFile3" /> + <el-table-column fixed="right" label="鎿嶄綔" width="100"> + <template #default="scope"> + <el-button type="text" size="small" @click="handleEdit(scope.row)" + >缂栬緫</el-button + > + </template> + </el-table-column> + </el-table> + <Pagination + v-show="departInfo.total > 0" + :total="departInfo.total" + v-model:page="checkInfo.pageIndex" + v-model:limit="checkInfo.pageSize" + @pagination="getQueryUserByPage" + /> + </el-card> + <el-dialog title="鏂板" v-model="dialogVisible" width="600px"> + <el-form + :model="form" + label-width="120px" + ref="ruleForm" + :rules="validList" + > + <el-form-item label="澶х被" prop="typeFile1"> + <el-input v-model="form.typeFile1"></el-input> + </el-form-item> + <el-form-item label="涓被" prop="typeFile2"> + <el-input v-model="form.typeFile2"></el-input> + </el-form-item> + <el-form-item label="灏忕被" prop="typeFile3"> + <el-input v-model="form.typeFile3"></el-input> + </el-form-item> + </el-form> + <template #footer> + <span class="dialog-footer"> + <el-button @click="handleClose">鍙� 娑�</el-button> + <el-button type="primary" @click="onSubmit">纭� 瀹�</el-button> + </span> + </template> + </el-dialog> + <UploadFile + v-model="uploadDialog" + @upload-handler="uploadHandler" + ></UploadFile> + </div> +</template> + +<script> +import { reactive, toRefs, onMounted, ref } from 'vue'; +import { ElMessage, ElMessageBox } from 'element-plus'; +import ProjectLibrary from '@/api/projectLibrary'; +export default { + setup() { + onMounted(() => { + getDepartPageInfo(); + }); + const multipleTable = ref(null); + const ruleForm = ref(null); + const state = reactive({ + checkInfo: { + pageNumber: 1, + pageSize: 10 + }, + projectCheckInfo: { + year: '', //骞翠唤 + projectName: '', //椤圭洰鍚嶇О + pageIndex: 1, + pageSize: 10 + }, + dialogVisible: false, + departInfo: { + total: 1, + tableData: [] + }, + uploadDialog: false, + form: { + id: null, + baseType: '', + year: sessionStorage.getItem('year'), + typeFile1: '', + typeFile2: '', + typeFile3: '' + }, + validList: { + typeFile1: [ + { required: true, message: '澶х被涓嶈兘涓虹┖', trigger: 'blur' } + ], + typeFile2: [ + { required: true, message: '涓被涓嶈兘涓虹┖', trigger: 'blur' } + ], + typeFile3: [ + { required: true, message: '灏忕被涓嶈兘涓虹┖', trigger: 'blur' } + ] + }, + multipleSelection: [] + }); + // 鍒犻櫎 + const handleDel = () => { + if (state.multipleSelection.length === 0) { + ElMessage.warning('鍒犻櫎鏁版嵁涓嶈兘涓虹┖'); + return false; + } + ElMessageBox.confirm('纭畾鍒犻櫎鎵€閫夌敤鎴峰悧?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + let ids = state.multipleSelection.map(v => v.id); + ProjectLibrary.deleteInformationType(ids).then(() => { + ElMessage.success('鍒犻櫎鎴愬姛'); + getDepartPageInfo(); + }); + }) + .catch(() => { + ElMessage.info('宸插彇娑堝垹闄�'); + multipleTable.value.clearSelection(); + }); + }; + // 鍒嗛〉鍥炶皟 + const getQueryUserByPage = () => { + getDepartPageInfo(); + }; + const handleSelectionChange = val => { + state.multipleSelection = val; + }; + const getDepartPageInfoFirst = () => { + state.checkInfo.pageIndex = 1; + getDepartPageInfo(); + }; + + const handleAdd = () => { + state.dialogVisible = true; + }; + // 缂栬緫 + const handleEdit = row => { + ProjectLibrary.queryInformationById(row.id).then(res => { + state.dialogVisible = true; + state.form = res.data[0]; + }); + }; + // 鍒楄〃 + const getDepartPageInfo = () => { + ProjectLibrary.queryInformation(state.checkInfo).then(res => { + state.departInfo.total = res.total; + state.departInfo.tableData = res.data; + }); + }; + // 鎻愪氦 + const onSubmit = () => { + let arr = []; + ruleForm.value.validate(valid => { + if (valid) { + arr[0] = state.form; + ProjectLibrary.saveInformationType(arr).then(() => { + if (state.form.id) { + ElMessage.success('淇敼鎴愬姛'); + } else { + ElMessage.success('鏂板缓鎴愬姛'); + } + handleClose(); + getDepartPageInfo(); + }); + } else { + console.log('error submit!!'); + return false; + } + }); + }; + const handleClose = () => { + state.form = { + id: null, + baseType: '', + year: sessionStorage.getItem('year'), + typeFile1: '', + typeFile2: '', + typeFile3: '' + }; + ruleForm.value.resetFields(); + state.dialogVisible = false; + }; + // 瀵煎嚭 + const handleExport = () => {}; + const uploadHandler = file => { + console.log('file', file); + state.uploadDialog = false; + }; + return { + ...toRefs(state), + handleClose, + handleAdd, + uploadHandler, + onSubmit, + getQueryUserByPage, + multipleTable, + handleEdit, + ruleForm, + handleExport, + getDepartPageInfo, + handleDel, + getDepartPageInfoFirst, + handleSelectionChange + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/main/basicSetting/personnelExpenses/index.vue b/WebSite/src/views/main/basicSetting/personnelExpenses/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..2605493cb10fb2833c2398d23e6c5b1550c5826a --- /dev/null +++ b/WebSite/src/views/main/basicSetting/personnelExpenses/index.vue @@ -0,0 +1,272 @@ +<template> + <div> + <el-card> + <el-row> + <el-button type="primary" plain @click="handleAdd">鏂板</el-button> + <el-button plain @click="uploadDialog = true">瀵煎叆</el-button> + <el-button type="primary" plain @click="handleExport">瀵煎嚭</el-button> + <el-button type="danger" plain @click="handleDel">鍒犻櫎</el-button> + </el-row> + </el-card> + <el-card class="mtop20"> + <el-table + stripe + :data="departInfo.tableData" + style="width: 100%" + ref="multipleTable" + class="mtop20" + @selection-change="handleSelectionChange" + fit + > + <el-table-column type="selection" width="55" align="center" /> + <el-table-column label="浜哄憳缁忔祹绉戠洰缂栧彿" prop="personFundCode" /> + <el-table-column label="浜哄憳缁忔祹绉戠洰缂栧彿鍚嶇О" prop="personFundName" /> + <el-table-column label="閮ㄩ棬" prop="canUseDeptJson" /> + <el-table-column fixed="right" label="鎿嶄綔" width="100"> + <template #default="scope"> + <el-button type="text" size="small" @click="handleEdit(scope.row)" + >缂栬緫</el-button + > + </template> + </el-table-column> + </el-table> + <Pagination + v-show="departInfo.total > 0" + :total="departInfo.total" + v-model:page="checkInfo.pageIndex" + v-model:limit="checkInfo.pageSize" + @pagination="getDepartPageInfo" + /> + </el-card> + <el-dialog title="鏂板" v-model="dialogVisible" width="600px"> + <el-form + :model="form" + label-width="170px" + ref="ruleForm" + :rules="validList" + > + <el-form-item label="浜哄憳缁忔祹绉戠洰缂栧彿" prop="personFundCode"> + <el-input v-model="form.personFundCode"></el-input> + </el-form-item> + <el-form-item label="浜哄憳缁忔祹绉戠洰缂栧彿鍚嶇О" prop="personFundName"> + <el-input v-model="form.personFundName"></el-input> + </el-form-item> + <el-form-item label="閮ㄩ棬" prop="canUseDeptJson"> + <div class="flexItem"> + <div class="deptInfo"> + <el-tag + class="ml-10" + :key="index" + closable + v-for="(tag, index) in deptSelect" + @close="handleDelete(tag)" + > + {{ tag.name }} + </el-tag> + </div> + <el-button type="primary" class="ml-10" @click="deptDialog = true"> + 閫夋嫨閮ㄩ棬 + </el-button> + </div> + </el-form-item> + </el-form> + <template #footer> + <span class="dialog-footer"> + <el-button @click="handleClose">鍙� 娑�</el-button> + <el-button type="primary" @click="onSubmit">纭� 瀹�</el-button> + </span> + </template> + </el-dialog> + <UploadFile + v-model="uploadDialog" + @upload-handler="uploadHandler" + ></UploadFile> + <SelectDept + v-if="deptDialog" + v-model="deptDialog" + v-model:deptSelect="deptSelect" + ></SelectDept> + </div> +</template> + +<script> +import { reactive, toRefs, onMounted, ref } from 'vue'; +import { ElMessage, ElMessageBox } from 'element-plus'; +import ProjectLibrary from '@/api/projectLibrary'; +export default { + setup() { + onMounted(() => { + getDepartPageInfo(); + }); + const multipleTable = ref(null); + const ruleForm = ref(null); + const state = reactive({ + checkInfo: { + pageNumber: 1, + pageSize: 10 + }, + projectCheckInfo: { + year: '', //骞翠唤 + projectName: '', //椤圭洰鍚嶇О + pageIndex: 1, + pageSize: 10 + }, + dialogVisible: false, + uploadDialog: false, + deptDialog: false, + departInfo: { + total: 1, + tableData: [] + }, + form: { + id: null, + baseType: '', + year: sessionStorage.getItem('year'), + personFundCode: '', + personFundName: '', + canUseDeptJson: [] + }, + validList: { + personFundCode: [ + { + required: true, + message: '浜哄憳缁忔祹绉戠洰缂栧彿涓嶈兘涓虹┖', + trigger: 'blur' + } + ], + personFundName: [ + { + required: true, + message: '浜哄憳缁忔祹绉戠洰缂栧彿鍚嶇О涓嶈兘涓虹┖', + trigger: 'blur' + } + ], + canUseDeptJson: [ + { required: true, message: '閮ㄩ棬涓嶈兘涓虹┖', trigger: 'blur' } + ] + }, + multipleSelection: [], + deptSelect: [] + }); + // 鍒犻櫎 + const handleDel = () => { + if (state.multipleSelection.length === 0) { + ElMessage.warning('鍒犻櫎鏁版嵁涓嶈兘涓虹┖'); + return false; + } + ElMessageBox.confirm('纭畾鍒犻櫎鎵€閫夌敤鎴峰悧?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + let ids = state.multipleSelection.map(v => v.id); + ProjectLibrary.deletePersonFund(ids).then(() => { + ElMessage.success('鍒犻櫎鎴愬姛'); + getDepartPageInfo(); + }); + }) + .catch(() => { + ElMessage.info('宸插彇娑堝垹闄�'); + multipleTable.value.clearSelection(); + }); + }; + const handleSelectionChange = val => { + state.multipleSelection = val; + }; + const getDepartPageInfoFirst = () => { + state.checkInfo.pageIndex = 1; + getDepartPageInfo(); + }; + + const handleAdd = () => { + state.dialogVisible = true; + }; + // 缂栬緫 + const handleEdit = row => { + ProjectLibrary.queryPersonFundById(row.id).then(res => { + state.dialogVisible = true; + state.form = res.data[0]; + }); + }; + // 鍒楄〃 + const getDepartPageInfo = () => { + ProjectLibrary.queryPersonFundPage(state.checkInfo).then(res => { + state.departInfo.total = res.total; + state.departInfo.tableData = res.data; + }); + }; + // 鎻愪氦 + const onSubmit = () => { + let arr = []; + state.form.canUseDeptJson = JSON.stringify(state.deptSelect); + ruleForm.value.validate(valid => { + if (valid) { + arr[0] = state.form; + ProjectLibrary.savePersonFund(arr).then(() => { + if (state.form.id) { + ElMessage.success('淇敼鎴愬姛'); + } else { + ElMessage.success('鏂板缓鎴愬姛'); + } + handleClose(); + getDepartPageInfo(); + }); + } else { + console.log('error submit!!'); + return false; + } + }); + }; + const handleClose = () => { + state.form = { + id: null, + baseType: '', + year: sessionStorage.getItem('year'), + personFundCode: '', + personFundName: '', + canUseDeptJson: [] + }; + ruleForm.value.resetFields(); + state.dialogVisible = false; + }; + // 瀵煎嚭 + const handleExport = () => {}; + const uploadHandler = file => { + console.log('file', file); + state.uploadDialog = false; + }; + + const handleDelete = tag => { + let index = state.deptSelect.findIndex(v => v.userID === tag.userID); + state.deptSelect.splice(index, 1); + }; + return { + ...toRefs(state), + handleClose, + handleDelete, + handleAdd, + uploadHandler, + onSubmit, + multipleTable, + handleEdit, + ruleForm, + handleExport, + getDepartPageInfo, + handleDel, + getDepartPageInfoFirst, + handleSelectionChange + }; + } +}; +</script> + +<style lang="scss" scoped> +.deptInfo { + border: 1px solid #dcdfe6; + border-radius: 5px; + padding: 7px; + flex: 1; + height: 80px; +} +</style> diff --git a/WebSite/src/views/main/basicSetting/projectLibrary/components/Detail.vue b/WebSite/src/views/main/basicSetting/projectLibrary/components/Detail.vue new file mode 100644 index 0000000000000000000000000000000000000000..f954a8d0c03b5f1d5ba5f635767f9c7442496094 --- /dev/null +++ b/WebSite/src/views/main/basicSetting/projectLibrary/components/Detail.vue @@ -0,0 +1,329 @@ +<template> + <div> + <el-card> + <el-button @click="handleBack">杩斿洖</el-button> + <el-button type="primary" plain @click="handleSave">淇濆瓨</el-button> + </el-card> + <el-card class="mtop20"> + <div class="projectInfo">椤圭洰淇℃伅</div> + <el-form + :model="ruleForm" + :rules="rules" + ref="ruleFormS" + label-width="130px" + class="demo-ruleForm mtop20" + > + <el-row :gutter="20"> + <el-col :span="12"> + <el-form-item label="娲诲姩鍚嶇О" prop="budgetName"> + <el-input v-model="ruleForm.budgetName"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="娲诲姩缂栧彿" prop="budgetCode"> + <el-input v-model="ruleForm.budgetCode"></el-input> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="20"> + <el-col :span="12"> + <el-form-item label="涓婄骇椤圭洰" prop="parentBudgetName"> + <el-input v-model="ruleForm.parentBudgetName" disabled></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鏄惁缁╂晥" prop="haveTarget"> + <el-radio v-model="ruleForm.haveTarget" :label="true" + >鏄�</el-radio + > + <el-radio v-model="ruleForm.haveTarget" :label="false" + >鍚�</el-radio + > + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="20"> + <el-col :span="12"> + <el-form-item label="寮€濮嬫椂闂�" prop="beginDate"> + <el-date-picker + v-model="ruleForm.beginDate" + type="date" + placeholder="閫夋嫨鏃ユ湡" + > + </el-date-picker> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="缁撴潫鏃堕棿" prop="endDate"> + <el-date-picker + v-model="ruleForm.endDate" + type="date" + placeholder="閫夋嫨鏃ユ湡" + > + </el-date-picker> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="20"> + <el-col :span="12"> + <el-form-item label="椤圭洰璐熻矗浜�" prop="chargerJson"> + <el-select + v-model="ruleForm.chargerJson" + placeholder="璇烽€夋嫨椤圭洰璐熻矗浜�" + filterable + remote + popper-class="select-dept" + :remote-method="getLeaderByValue" + @visible-change="selectVisibleChange" + > + <el-option + :label="item.name" + :value="item.name" + v-for="(item, index) in userInfo" + :key="index" + ></el-option> + </el-select> + </el-form-item> + </el-col> + </el-row> + <el-form-item label="鍙敵鎶ラ儴闂�"> + <div class="flexItem"> + <div class="deptInfo"> + <el-tag + class="ml-10" + :key="index" + closable + v-for="(tag, index) in deptSelect" + @close="handleDelete(tag)" + > + {{ tag.name }} + </el-tag> + </div> + <el-button type="primary" class="ml-10" @click="deptDialog = true"> + 娣诲姞閮ㄩ棬 + </el-button> + </div> + </el-form-item> + <el-form-item label="褰掑彛閮ㄩ棬"> + <div class="flexItem"> + <div class="deptInfo"> + <el-tag + class="ml-10" + :key="index" + closable + v-for="(tag, index) in deptSelectG" + @close="handleDeleteG(tag)" + > + {{ tag.name }} + </el-tag> + </div> + <el-button type="primary" class="ml-10" @click="deptDialogG = true"> + 娣诲姞閮ㄩ棬 + </el-button> + </div> + </el-form-item> + <el-form-item label="缁忔祹绉戠洰" prop="value8"> + <div class="flexItem"> + <el-input type="textarea" v-model="ruleForm.value8"></el-input> + <el-button type="primary" class="ml-10">娣诲姞绉戠洰</el-button> + </div> + </el-form-item> + </el-form> + </el-card> + <SelectDept + v-if="deptDialog" + v-model="deptDialog" + v-model:deptSelect="deptSelect" + ></SelectDept> + <SelectDeptG + v-if="deptDialogG" + v-model="deptDialogG" + v-model:deptSelectG="deptSelectG" + ></SelectDeptG> + </div> +</template> + +<script> +import { reactive, toRefs, onMounted } from 'vue'; +import ProjectLibrary from '@/api/projectLibrary'; +import { absNum } from '@/utils'; +import { ElMessage } from 'element-plus'; +import Moment from 'moment'; +export default { + props: { + parentObj: { + type: Object + }, + editInfo: { + type: Object + } + }, + setup(props, cxt) { + onMounted(() => { + queryUserPage(); + if (props.editInfo) { + console.log('props.editInfo', props.editInfo); + state.ruleForm = props.editInfo; + state.ruleForm.functionDeptJson = JSON.parse( + props.editInfo.functionDeptJson + ); + state.ruleForm.canUseDeptJson = JSON.parse( + props.editInfo.canUseDeptJson + ); + state.deptSelect = state.ruleForm.functionDeptJson; + state.deptSelectG = state.ruleForm.canUseDeptJson; + } else { + state.ruleForm.parentBudgetId = props.parentObj.parentBudgetId; + state.ruleForm.parentBudgetName = props.parentObj.parentBudgetName; + } + }); + const state = reactive({ + ruleForm: { + year: sessionStorage.getItem('year'), + id: null, + budgetName: '', //娲诲姩鍚嶇О + budgetCode: '', //娲诲姩缂栧彿 + parentBudgetId: '', //涓婄骇椤圭洰id + parentBudgetName: '', //涓婄骇椤圭洰name + haveTarget: true, //鏄惁缁╂晥 + beginDate: '', //寮€濮嬫椂闂� + endDate: '', //缁撴潫鏃堕棿 + chargerJson: '', //椤圭洰璐熻矗浜� + canUseDeptJson: [], //鍙敵鎶ラ儴闂� + functionDeptJson: [] //褰掑彛閮ㄩ棬 + //canUseFundJson: [] //缁忔祹绉戠洰 + }, + rules: { + budgetName: [ + { required: true, message: '璇疯緭鍏ユ椿鍔ㄥ悕绉�', trigger: 'blur' } + ], + budgetCode: [ + { required: true, message: '璇疯緭鍏ユ椿鍔ㄧ紪鍙�', trigger: 'blur' } + ] + }, + selectUserLoading: false, + checkInfo: { + pageIndex: 1, + pageSize: 10, + name: '' + }, + total: null, + deptDialog: false, + deptDialogG: false, + deptSelect: [], + deptSelectG: [], + userInfo: [] + }); + // const setParentObj = parentObj => { + // state.ruleForm.parentBudgetId = parentObj.parentBudgetId; + // state.ruleForm.parentBudgetName = parentObj.parentBudgetName; + // }; + const handleBack = () => { + cxt.emit('switchPage', 'List', '1'); + }; + const queryUserPage = () => { + state.selectUserLoading = true; + ProjectLibrary.queryUserPage(state.checkInfo).then(res => { + console.log('res', res); + state.userInfo = res.data; + + state.total = res.total; + state.selectUserLoading = false; + }); + }; + //涓嬫媺妗嗚Е搴曡Е椤跺姞杞� + const selectVisibleChange = visible => { + if (visible) { + const SELECTWRAP_DOM = document.querySelector( + '.select-dept .el-select-dropdown__wrap.el-scrollbar__wrap' + ); + const totalPage = Math.ceil( + absNum(state.total, state.checkInfo.pageSize, '/') + ); + SELECTWRAP_DOM && + SELECTWRAP_DOM.addEventListener('scroll', () => { + // console.log(SELECTWRAP_DOM.scrollHeight, SELECTWRAP_DOM.scrollTop, SELECTWRAP_DOM.clientHeight); + const down = + SELECTWRAP_DOM.scrollHeight - SELECTWRAP_DOM.scrollTop - 1 <= + SELECTWRAP_DOM.clientHeight; + // const up = SELECTWRAP_DOM.scrollTop <= 0; + if (down) { + console.log('瑙﹀簳鍔犺浇'); + if (state.checkInfo.pageIndex >= totalPage) { + //鏈€鍚庝竴椤� + console.log('鏈€鍚庝竴椤�'); + return; + } + state.checkInfo.pageIndex++; //涓嬩竴椤� + SELECTWRAP_DOM.scrollTop = 1; + queryUserPage(); + } + // if (up) { + // console.log('瑙﹂《鍔犺浇'); + // if (state.checkInfo.pageIndex <= 1) { + // //绗竴椤� + // console.log('绗竴椤�'); + // return; + // } + // state.checkInfo.pageIndex--; //涓嬩竴椤� + // SELECTWRAP_DOM.scrollTop = 1; + // queryUserPage(); + // } + }); + } + }; + const handleDelete = tag => { + let index = state.deptSelect.findIndex(v => v.id === tag.id); + state.deptSelect.splice(index, 1); + }; + const handleDeleteG = tag => { + let index = state.deptSelectG.findIndex(v => v.id === tag.id); + state.deptSelectG.splice(index, 1); + }; + const handleSave = () => { + state.ruleForm.canUseDeptJson = JSON.stringify(state.deptSelect); + state.ruleForm.functionDeptJson = JSON.stringify(state.deptSelectG); + state.ruleForm.beginDate = Moment(state.ruleForm.beginDate).format( + 'YYYY-MM-DD HH:mm:ss.SSS' + ); + state.ruleForm.endDate = Moment(state.ruleForm.endDate).format( + 'YYYY-MM-DD HH:mm:ss.SSS' + ); + ProjectLibrary.createBudgetInfo(state.ruleForm).then(res => { + console.log('res', res); + if (state.ruleForm.id) { + ElMessage.success('淇敼鎴愬姛'); + cxt.emit('switchPage', 'List', '1'); + } else { + ElMessage.success('淇濆瓨鎴愬姛'); + cxt.emit('switchPage', 'List', '1'); + } + }); + }; + return { + handleBack, + queryUserPage, + selectVisibleChange, + handleSave, + handleDelete, + handleDeleteG, + ...toRefs(state) + }; + } +}; +</script> + +<style lang="scss" scoped> +.projectInfo { + font-weight: bold; + text-align: center; +} +.deptInfo { + border: 1px solid #dcdfe6; + border-radius: 5px; + padding: 7px; + flex: 1; + height: 80px; + overflow-y: scroll; +} +</style> diff --git a/WebSite/src/views/main/basicSetting/projectLibrary/components/List.vue b/WebSite/src/views/main/basicSetting/projectLibrary/components/List.vue new file mode 100644 index 0000000000000000000000000000000000000000..0960eb79d44f7bc26c8569da80609369970bf229 --- /dev/null +++ b/WebSite/src/views/main/basicSetting/projectLibrary/components/List.vue @@ -0,0 +1,137 @@ +<template> + <div> + <el-card> + <el-row> + <el-button type="primary" plain @click="handleAdd">鏂板</el-button> + <el-button plain>瀵煎叆</el-button> + <el-button type="primary" plain>瀵煎嚭</el-button> + <el-button type="danger" plain @click="handleRemove">鍒犻櫎</el-button> + </el-row> + </el-card> + <el-card class="mtop20"> + <el-table + stripe + :data="departInfo.tableData" + style="width: 100%" + ref="multipleTable" + class="mtop20" + @selection-change="handleSelectionChange" + fit + > + <el-table-column type="selection" width="55" align="center" /> + <!-- <el-table-column label="涓婄骇椤圭洰" prop="parentBudgetName" /> --> + <el-table-column label="椤圭洰缂栧彿" prop="budgetCode" /> + <el-table-column label="椤圭洰鍚嶇О" prop="budgetName" /> + <el-table-column label="褰掑彛閮ㄩ棬" prop="functionDeptNameList" /> + <el-table-column label="椤圭洰璐熻矗浜�" prop="chargerJson" /> + <el-table-column label="寤鸿鍛ㄦ湡"> + <template #default="scope"> + {{ scope.row.beginDate }}-{{ scope.row.endDate }} + </template> + </el-table-column> + <el-table-column label="缁╂晥鏄惁蹇呭~" prop="haveTarget" width="140"> + <template #default="scope"> + <el-tag v-if="scope.row.haveTarget === true" type="success"> + 鏄� + </el-tag> + <el-tag v-else type="danger">鍚�</el-tag> + </template> + </el-table-column> + <el-table-column fixed="right" label="鎿嶄綔"> + <template #default="scope"> + <el-button type="text" size="small" @click="handleEdit(scope.row)" + >缂栬緫</el-button + > + </template> + </el-table-column> + </el-table> + <Pagination + v-show="departInfo.total > 0" + :total="departInfo.total" + v-model:page="checkInfo.pageIndex" + v-model:limit="checkInfo.pageSize" + @pagination="queryBudgetInfoPage" + /> + </el-card> + </div> +</template> + +<script> +import { reactive, toRefs, ref } from 'vue'; +import ProjectLibrary from '@/api/projectLibrary'; +import { ElMessage, ElMessageBox } from 'element-plus'; +export default { + setup(props, cxt) { + const multipleTable = ref(null); + const state = reactive({ + departInfo: { + total: 1, + tableData: [] + }, + checkInfo: { + pageIndex: 1, + pageSize: 10, + year: 2021, + parentBudgetId: '' + }, + multipleSelection: [] + }); + const queryBudgetInfoPage = () => { + queryBudgetInfoPageByPId(state.checkInfo.parentBudgetId); + }; + const queryBudgetInfoPageByPId = parentBudgetId => { + state.loading = true; + state.checkInfo.parentBudgetId = parentBudgetId; + ProjectLibrary.queryBudgetInfoPageByPId(state.checkInfo).then(res => { + state.departInfo.tableData = res.data; + state.departInfo.total = res.total; + }); + }; + const handleEdit = row => { + ProjectLibrary.queryBudgetInfo(row.id).then(res => { + cxt.emit('switchPage', 'Detail', res.data[0]); + }); + }; + const handleAdd = () => { + cxt.emit('switchPage', 'Detail'); + }; + const handleSelectionChange = val => { + state.multipleSelection = val; + }; + const handleRemove = () => { + if (state.multipleSelection.length === 0) { + ElMessage.warning('鍒犻櫎鏁版嵁涓嶈兘涓虹┖'); + return false; + } + ElMessageBox.confirm('纭畾鍒犻櫎鎵€閫夌敤鎴峰悧?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + let ids = state.multipleSelection.map(v => v.id); + ProjectLibrary.removeBudgetInfo(ids).then(() => { + ElMessage.success('鍒犻櫎鎴愬姛'); + cxt.emit('switchPage', 'List', '1'); + }); + }) + .catch(() => { + ElMessage.info('宸插彇娑堝垹闄�'); + multipleTable.value.clearSelection(); + }); + }; + return { + ...toRefs(state), + handleAdd, + handleEdit, + multipleTable, + handleRemove, + queryBudgetInfoPage, + queryBudgetInfoPageByPId, + handleSelectionChange + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/main/basicSetting/projectLibrary/index.vue b/WebSite/src/views/main/basicSetting/projectLibrary/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..892627f78dfaf69cf192cd3486abedce92356183 --- /dev/null +++ b/WebSite/src/views/main/basicSetting/projectLibrary/index.vue @@ -0,0 +1,125 @@ +<template> + <div> + <el-row :gutter="20"> + <el-col :span="7"> + <el-card> + <el-input placeholder="杈撳叆鍏抽敭瀛楄繘琛岃繃婊�" v-model="filterText"> + </el-input> + <el-tree + class="filter-tree mtop20" + node-key="id" + highlight-current + :props="defaultProps" + :default-expand-all="true" + :expand-on-click-node="false" + :data="treeData" + :filter-node-method="filterNode" + ref="tree" + @node-click="handleNodeClick" + > + </el-tree> + </el-card> + </el-col> + <el-col :span="17"> + <el-card> + <transition name="fade-transform" mode="out-in"> + <component + ref="child" + :parentObj="parentObj" + :editInfo="editInfo" + :is="currentComponent" + @switch-page="switchPage" + ></component> + </transition> + </el-card> + </el-col> + </el-row> + </div> +</template> + +<script> +import { reactive, toRefs, watch, ref, onMounted, nextTick } from 'vue'; +import List from './components/List'; +import Detail from './components/Detail'; +import ProjectLibrary from '@/api/projectLibrary'; +export default { + components: { + List, + Detail + }, + setup() { + onMounted(() => { + queryBudgetInfoTree(); + }); + const tree = ref(tree); + const child = ref(null); + const state = reactive({ + filterText: '', + currentComponent: 'List', + treeData: [], + parentObj: { parentBudgetId: '', parentBudgetName: '' }, + defaultProps: { + children: 'children', + label: 'budgetName' + }, + editInfo: null + }); + const handleNodeClick = data => { + state.parentObj = { + parentBudgetId: data.id, + parentBudgetName: data.budgetName + }; + console.log('12345', child.value.setParentObj); + // child.value.setParentObj(state.parentObj); + child.value.queryBudgetInfoPageByPId(data.id); + }; + const filterNode = (value, data) => { + if (!value) return true; + return data.budgetName.indexOf(value) !== -1; + }; + const switchPage = (page, index) => { + state.currentComponent = page; + if (index) { + if (index.constructor === String) { + queryBudgetInfoTree(); + } else { + state.editInfo = index; + } + } + }; + // 椤圭洰搴撴爲 + const queryBudgetInfoTree = () => { + ProjectLibrary.queryBudgetInfoTree({}).then(res => { + state.treeData = res.data; + if (state.treeData && state.treeData.length > 0) { + nextTick(() => { + tree.value.setCurrentKey(res.data[0].id); + child.value.queryBudgetInfoPageByPId(res.data[0].id); + state.parentObj = { + parentBudgetId: res.data[0].id, + parentBudgetName: res.data[0].budgetName + }; + }); + } + }); + }; + watch( + () => state.filterText, + val => { + tree.value.filter(val); + } + ); + return { + ...toRefs(state), + handleNodeClick, + switchPage, + filterNode, + child, + queryBudgetInfoTree, + tree + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/main/basicSetting/subjectExtension/index.vue b/WebSite/src/views/main/basicSetting/subjectExtension/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..c6935da56f4c23587385930ce3f97b446716e937 --- /dev/null +++ b/WebSite/src/views/main/basicSetting/subjectExtension/index.vue @@ -0,0 +1,273 @@ +<template> + <div> + <el-card> + <el-row> + <el-button type="primary" plain @click="handleAdd">鏂板</el-button> + <el-button plain @click="uploadDialog = true">瀵煎叆</el-button> + <el-button type="primary" plain @click="handleExport">瀵煎嚭</el-button> + <el-button type="danger" plain @click="handleDel">鍒犻櫎</el-button> + </el-row> + </el-card> + <el-card class="mtop20"> + <el-table + stripe + :data="departInfo.tableData" + style="width: 100%" + ref="multipleTable" + class="mtop20" + @selection-change="handleSelectionChange" + fit + > + <el-table-column type="selection" width="55" align="center" /> + <el-table-column label="鎵╁睍瀛楁缂栧彿" prop="extendCode" /> + <el-table-column label="鎵╁睍瀛楁鍚嶇О" prop="extendName" /> + <el-table-column label="鎵╁睍绫诲瀷" prop="extendType"> </el-table-column> + <el-table-column label="鏉ユ簮" prop="source"></el-table-column> + <el-table-column label="鏄惁寮€鍚�" prop="isOpen"> + <template #default="scope"> + <el-tag v-if="scope.row.isOpen === 'YES'" type="success"> + 鏄� + </el-tag> + <el-tag v-else type="danger">鍚�</el-tag> + </template> + </el-table-column> + <el-table-column + label="鎵╁睍琛ㄥ悕绉�" + prop="extendTableName" + ></el-table-column> + <el-table-column fixed="right" label="鎿嶄綔" width="100"> + <template #default="scope"> + <el-button type="text" size="small" @click="handleEdit(scope.row)" + >缂栬緫</el-button + > + </template> + </el-table-column> + </el-table> + <Pagination + v-show="departInfo.total > 0" + :total="departInfo.total" + v-model:page="checkInfo.pageIndex" + v-model:limit="checkInfo.pageSize" + @pagination="getDepartPageInfo" + /> + </el-card> + + <el-dialog title="鏂板" v-model="dialogVisible" width="600px"> + <el-form + :model="form" + label-width="120px" + ref="ruleForm" + :rules="validList" + > + <el-form-item label="鎵╁睍瀛楁缂栧彿" prop="extendCode"> + <el-input v-model="form.extendCode"></el-input> + </el-form-item> + <el-form-item label="鎵╁睍瀛楁鍚嶇О" prop="extendName"> + <el-input v-model="form.extendName"></el-input> + </el-form-item> + <el-form-item label="鎵╁睍绫诲瀷" prop="extendType"> + <el-select v-model="form.extendType" placeholder="璇烽€夋嫨娲诲姩鍖哄煙"> + <el-option label="鏂囨湰" value="WENBEN"></el-option> + <el-option label="鏁板瓧" value="SHUZI"></el-option> + <el-option label="涓嬫媺妗�" value="XIALAKUANG"></el-option> + <el-option label="鏃ユ湡" value="RIQI"></el-option> + </el-select> + </el-form-item> + <el-form-item label="鎵╁睍琛ㄥ瓧娈�" prop="extendTableName"> + <el-input v-model="form.extendTableName"></el-input> + </el-form-item> + <el-form-item label="鏄惁寮€鍚�"> + <el-radio-group v-model="form.isOpen"> + <el-radio label="YES">鏄�</el-radio> + <el-radio label="NO">鍚�</el-radio> + </el-radio-group> + </el-form-item> + <el-form-item label="鏉ユ簮" prop="source"> + <el-input + type="textarea" + :autosize="{ maxRows: 5, minRows: 4 }" + v-model="form.source" + ></el-input> + </el-form-item> + </el-form> + <template #footer> + <span class="dialog-footer"> + <el-button @click="handleClose">鍙� 娑�</el-button> + <el-button type="primary" @click="onSubmit">纭� 瀹�</el-button> + </span> + </template> + </el-dialog> + <UploadFile + v-model="uploadDialog" + @upload-handler="uploadHandler" + ></UploadFile> + </div> +</template> + +<script> +import { reactive, toRefs, onMounted, ref } from 'vue'; +import { ElMessage, ElMessageBox } from 'element-plus'; +import ProjectLibrary from '@/api/projectLibrary'; +export default { + setup() { + onMounted(() => { + getDepartPageInfo(); + }); + const multipleTable = ref(null); + const ruleForm = ref(null); + const state = reactive({ + checkInfo: { + pageNumber: 1, + pageSize: 10 + }, + projectCheckInfo: { + year: '', //骞翠唤 + projectName: '', //椤圭洰鍚嶇О + pageIndex: 1, + pageSize: 10 + }, + dialogVisible: false, + departInfo: { + total: null, + tableData: [] + }, + uploadDialog: false, + form: { + id: null, + baseType: '', + year: sessionStorage.getItem('year'), + extendCode: '', + extendName: '', + extendTableName: '', + extendType: '', + isOpen: 'YES', + source: '' + }, + validList: { + extendCode: [ + { required: true, message: '鎵╁睍瀛楁缂栧彿涓嶈兘涓虹┖', trigger: 'blur' } + ], + extendName: [ + { required: true, message: '鎵╁睍瀛楁鍚嶇О涓嶈兘涓虹┖', trigger: 'blur' } + ], + extendType: [ + { required: true, message: '鎵╁睍绫诲瀷涓嶈兘涓虹┖', trigger: 'change' } + ], + extendTableName: [ + { required: true, message: '鎵╁睍琛ㄥ悕绉颁笉鑳戒负绌�', trigger: 'blur' } + ], + source: [{ required: true, message: '鏉ユ簮涓嶈兘涓虹┖', trigger: 'blur' }] + }, + multipleSelection: [] + }); + // 鍒犻櫎 + const handleDel = () => { + if (state.multipleSelection.length === 0) { + ElMessage.warning('鍒犻櫎鏁版嵁涓嶈兘涓虹┖'); + return false; + } + ElMessageBox.confirm('纭畾鍒犻櫎鎵€閫夌敤鎴峰悧?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + let ids = state.multipleSelection.map(v => v.id); + ProjectLibrary.deleteExtendFormManage(ids).then(() => { + ElMessage.success('鍒犻櫎鎴愬姛'); + getDepartPageInfo(); + }); + }) + .catch(() => { + ElMessage.info('宸插彇娑堝垹闄�'); + multipleTable.value.clearSelection(); + }); + }; + const handleSelectionChange = val => { + state.multipleSelection = val; + }; + const getDepartPageInfoFirst = () => { + state.checkInfo.pageIndex = 1; + getDepartPageInfo(); + }; + + const handleAdd = () => { + state.dialogVisible = true; + }; + // 缂栬緫 + const handleEdit = row => { + ProjectLibrary.queryExtendFormById(row.id).then(res => { + state.dialogVisible = true; + state.form = res.data[0]; + }); + }; + // 鍒楄〃 + const getDepartPageInfo = () => { + ProjectLibrary.queryExtendFormPage(state.checkInfo).then(res => { + console.log('res', res); + state.departInfo.total = res.total; + state.departInfo.tableData = res.data; + }); + }; + // 鎻愪氦 + const onSubmit = () => { + let arr = []; + ruleForm.value.validate(valid => { + if (valid) { + arr[0] = state.form; + ProjectLibrary.saveExtendFormManage(arr).then(() => { + if (state.form.id) { + ElMessage.success('淇敼鎴愬姛'); + } else { + ElMessage.success('鏂板缓鎴愬姛'); + } + handleClose(); + getDepartPageInfo(); + }); + } else { + console.log('error submit!!'); + return false; + } + }); + }; + const handleClose = () => { + state.form = { + id: null, + baseType: '', + year: sessionStorage.getItem('year'), + extendCode: '', + extendName: '', + extendTableName: '', + extendType: '', + isOpen: 'YES', + source: '' + }; + ruleForm.value.resetFields(); + state.dialogVisible = false; + }; + // 瀵煎嚭 + const handleExport = () => {}; + const uploadHandler = file => { + console.log('file', file); + state.uploadDialog = false; + }; + return { + ...toRefs(state), + handleClose, + handleAdd, + onSubmit, + multipleTable, + uploadHandler, + handleEdit, + ruleForm, + handleExport, + getDepartPageInfo, + handleDel, + getDepartPageInfoFirst, + handleSelectionChange + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/main/basicSetting/subjectsSetting/components/Detail.vue b/WebSite/src/views/main/basicSetting/subjectsSetting/components/Detail.vue new file mode 100644 index 0000000000000000000000000000000000000000..a92fa2e5ea966c9452c0f83a61f653e5dcc58fd1 --- /dev/null +++ b/WebSite/src/views/main/basicSetting/subjectsSetting/components/Detail.vue @@ -0,0 +1,175 @@ +<template> + <div> + <el-card> + <el-button @click="handleBack">杩斿洖</el-button> + <el-button type="primary" plain @click="handleSave">淇濆瓨</el-button> + </el-card> + <el-card class="mtop20"> + <div class="projectInfo">椤圭洰淇℃伅</div> + <el-form + :model="ruleForm" + :rules="rules" + ref="ruleFormS" + label-width="130px" + class="demo-ruleForm mtop20" + > + <el-row :gutter="20"> + <el-col :span="12"> + <el-form-item label="缁忔祹绉戠洰鍚嶇О" prop="fundName"> + <el-input v-model="ruleForm.fundName"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="缁忔祹绉戠洰缂栧彿" prop="fundCode"> + <el-input v-model="ruleForm.fundCode"></el-input> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="20"> + <el-col :span="12"> + <el-form-item label="涓婄骇缁忔祹椤圭洰"> + <el-input disabled v-model="ruleForm.fundParentName"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鎵╁睍琛ㄥ崟" prop="extendFormId"> + <el-select + v-model="ruleForm.extendFormId" + placeholder="璇烽€夋嫨鎵╁睍琛ㄥ崟" + > + <el-option label="浼氳璐�" value="1"></el-option> + <el-option label="鍩硅璐�" value="2"></el-option> + </el-select> + </el-form-item> + </el-col> + </el-row> + + <el-form-item label="褰掑彛閮ㄩ棬"> + <div class="flexItem"> + <div class="deptInfo"> + <el-tag + class="ml-10" + :key="index" + closable + v-for="(tag, index) in deptSelect" + @close="handleDelete(tag)" + > + {{ tag.name }} + </el-tag> + </div> + <el-button type="primary" class="ml-10" @click="deptDialog = true"> + 娣诲姞閮ㄩ棬 + </el-button> + </div> + </el-form-item> + <el-form-item label="缁忔祹绉戠洰璇存槑" prop="fundDescribe"> + <el-input type="textarea" v-model="ruleForm.fundDescribe"></el-input> + </el-form-item> + </el-form> + </el-card> + <SelectDept + v-if="deptDialog" + v-model="deptDialog" + v-model:deptSelect="deptSelect" + ></SelectDept> + </div> +</template> + +<script> +import { reactive, toRefs, onMounted } from 'vue'; +import ProjectLibrary from '@/api/projectLibrary'; +import { ElMessage } from 'element-plus'; +export default { + props: { + parentObj: { + type: Object + }, + editInfo: { + type: Object + } + }, + setup(props, cxt) { + onMounted(() => { + console.log('1234', props.editInfo); + if (props.editInfo) { + state.ruleForm = props.editInfo; + state.ruleForm.functionDeptJson = JSON.parse( + props.editInfo.functionDeptJson + ); + state.deptSelect = state.ruleForm.functionDeptJson; + } + state.ruleForm.fundParentId = props.parentObj.parentBudgetId; + state.ruleForm.fundParentName = props.parentObj.parentBudgetName; + }); + const state = reactive({ + ruleForm: { + year: sessionStorage.getItem('year'), + id: null, + fundName: '', + fundCode: '', + fundParentId: '', + fundParentName: '', + extendFormId: '', + functionDeptJson: [], + fundDescribe: '' + }, + rules: { + fundName: [ + { required: true, message: '璇疯緭鍏ユ椿鍔ㄥ悕绉�', trigger: 'blur' } + ], + fundCode: [ + { required: true, message: '璇疯緭鍏ユ椿鍔ㄧ紪鍙�', trigger: 'blur' } + ] + }, + deptDialog: false, + deptSelect: [] + }); + const handleBack = () => { + cxt.emit('switchPage', 'List', '1'); + }; + const handleDelete = tag => { + let index = state.deptSelect.findIndex(v => v.id === tag.id); + state.deptSelect.splice(index, 1); + }; + const setParentObj = parentObj => { + state.ruleForm.parentBudgetId = parentObj.fundParentId; + state.ruleForm.parentBudgetName = parentObj.fundParentName; + }; + const handleSave = () => { + state.ruleForm.functionDeptJson = JSON.stringify(state.deptSelect); + ProjectLibrary.createFund(state.ruleForm).then(res => { + console.log('res', res); + if (state.ruleForm.id) { + ElMessage.success('淇敼鎴愬姛'); + cxt.emit('switchPage', 'List', '1'); + } else { + ElMessage.success('淇濆瓨鎴愬姛'); + cxt.emit('switchPage', 'List', '1'); + } + }); + }; + return { + handleBack, + setParentObj, + handleSave, + handleDelete, + ...toRefs(state) + }; + } +}; +</script> + +<style lang="scss" scoped> +.projectInfo { + font-weight: bold; + text-align: center; +} +.deptInfo { + border: 1px solid #dcdfe6; + border-radius: 5px; + padding: 7px; + flex: 1; + height: 80px; + overflow-y: scroll; +} +</style> diff --git a/WebSite/src/views/main/basicSetting/subjectsSetting/components/List.vue b/WebSite/src/views/main/basicSetting/subjectsSetting/components/List.vue new file mode 100644 index 0000000000000000000000000000000000000000..afcfc2c61a060b08fc0b45cb7e5c159c2000a83a --- /dev/null +++ b/WebSite/src/views/main/basicSetting/subjectsSetting/components/List.vue @@ -0,0 +1,124 @@ +<template> + <div> + <el-card> + <el-row> + <el-button type="primary" plain @click="handleAdd">鏂板</el-button> + <el-button plain>瀵煎叆</el-button> + <el-button type="primary" plain>瀵煎嚭</el-button> + <el-button type="danger" plain @click="handleRemove">鍒犻櫎</el-button> + </el-row> + </el-card> + <el-card class="mtop20"> + <el-table + stripe + :data="departInfo.tableData" + style="width: 100%" + ref="multipleTable" + class="mtop20" + @selection-change="handleSelectionChange" + fit + > + <el-table-column type="selection" width="55" align="center" /> + <el-table-column label="缁忔祹绉戠洰缂栧彿" prop="fundCode" /> + <el-table-column label="缁忔祹绉戠洰鍚嶇О" prop="fundName" /> + <el-table-column label="涓婄骇缁忔祹绉戠洰" prop="fundParentName" /> + <el-table-column label="鎵╁睍琛�" prop="extendFormId" /> + <el-table-column label="褰掑彛閮ㄩ棬" prop="functionDeptJson" /> + <el-table-column fixed="right" label="鎿嶄綔"> + <template #default="scope"> + <el-button type="text" size="small" @click="handleEdit(scope.row)" + >缂栬緫</el-button + > + </template> + </el-table-column> + </el-table> + <Pagination + v-show="departInfo.total > 0" + :total="departInfo.total" + v-model:page="checkInfo.pageIndex" + v-model:limit="checkInfo.pageSize" + @pagination="queryBudgetInfoPage" + /> + </el-card> + </div> +</template> + +<script> +import { reactive, toRefs, ref } from 'vue'; +import ProjectLibrary from '@/api/projectLibrary'; +import { ElMessage, ElMessageBox } from 'element-plus'; +export default { + setup(props, cxt) { + const multipleTable = ref(null); + const state = reactive({ + departInfo: { + total: 1, + tableData: [] + }, + checkInfo: { + pageIndex: 1, + pageSize: 10, + year: 2021, + fundParentId: '' + }, + multipleSelection: [] + }); + const queryBudgetInfoPage = () => { + queryFundPageByPId(state.checkInfo.fundParentId); + }; + const queryFundPageByPId = parentBudgetId => { + state.loading = true; + state.checkInfo.fundParentId = parentBudgetId; + ProjectLibrary.queryFundPageByPId(state.checkInfo).then(res => { + state.departInfo.tableData = res.data; + state.departInfo.total = res.total; + }); + }; + const handleEdit = row => { + ProjectLibrary.queryFund(row.id).then(res => { + cxt.emit('switchPage', 'Detail', res.data[0]); + }); + }; + const handleAdd = () => { + cxt.emit('switchPage', 'Detail'); + }; + const handleSelectionChange = val => { + state.multipleSelection = val; + }; + const handleRemove = () => { + if (state.multipleSelection.length === 0) { + ElMessage.warning('鍒犻櫎鏁版嵁涓嶈兘涓虹┖'); + return false; + } + ElMessageBox.confirm('纭畾鍒犻櫎鎵€閫夌敤鎴峰悧?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + let ids = state.multipleSelection.map(v => v.id); + ProjectLibrary.removeFund(ids).then(() => { + ElMessage.success('鍒犻櫎鎴愬姛'); + cxt.emit('switchPage', 'List', '1'); + }); + }) + .catch(() => { + ElMessage.info('宸插彇娑堝垹闄�'); + multipleTable.value.clearSelection(); + }); + }; + return { + ...toRefs(state), + handleAdd, + handleEdit, + multipleTable, + handleRemove, + queryBudgetInfoPage, + queryFundPageByPId, + handleSelectionChange + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/main/basicSetting/subjectsSetting/index.vue b/WebSite/src/views/main/basicSetting/subjectsSetting/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..ede1c6a660f85ed5295b76cc17bc227cd874de51 --- /dev/null +++ b/WebSite/src/views/main/basicSetting/subjectsSetting/index.vue @@ -0,0 +1,122 @@ +<template> + <div> + <el-row :gutter="20"> + <el-col :span="7"> + <el-card> + <el-input placeholder="杈撳叆鍏抽敭瀛楄繘琛岃繃婊�" v-model="filterText"> + </el-input> + <el-tree + class="filter-tree mtop20" + node-key="id" + highlight-current + :data="treeData" + :props="defaultProps" + :default-expand-all="true" + :expand-on-click-node="false" + :filter-node-method="filterNode" + @node-click="handleNodeClick" + ref="tree" + > + </el-tree> + </el-card> + </el-col> + <el-col :span="17"> + <el-card> + <transition name="fade-transform" mode="out-in"> + <component + ref="child" + :parentObj="parentObj" + :editInfo="editInfo" + :is="currentComponent" + @switch-page="switchPage" + ></component> + </transition> + </el-card> + </el-col> + </el-row> + </div> +</template> + +<script> +import { reactive, toRefs, watch, ref, nextTick, onMounted } from 'vue'; +import List from './components/List'; +import Detail from './components/Detail'; +import ProjectLibrary from '@/api/projectLibrary'; +export default { + components: { + List, + Detail + }, + setup() { + onMounted(() => { + queryFundTree(); + }); + const tree = ref(tree); + const child = ref(null); + const state = reactive({ + filterText: '', + parentObj: { parentBudgetId: '', parentBudgetName: '' }, + currentComponent: 'List', + treeData: [], + defaultProps: { + children: 'children', + label: 'fundName' + }, + editInfo: null + }); + const filterNode = (value, data) => { + if (!value) return true; + return data.fundName.indexOf(value) !== -1; + }; + const switchPage = (page, index) => { + state.currentComponent = page; + if (index) { + if (index.constructor === String) { + queryFundTree(); + } else { + state.editInfo = index; + } + } + }; + const handleNodeClick = data => { + state.parentObj = { + parentBudgetId: data.id, + parentBudgetName: data.fundName + }; + child.value.setParentObj(state.parentObj); + }; + const queryFundTree = () => { + ProjectLibrary.queryFundTree({}).then(res => { + state.treeData = res.data; + if (state.treeData && state.treeData.length > 0) { + nextTick(() => { + tree.value.setCurrentKey(res.data[0].id); + child.value.queryFundPageByPId(res.data[0].id); + state.parentObj = { + parentBudgetId: res.data[0].id, + parentBudgetName: res.data[0].fundName + }; + }); + } + }); + }; + watch( + () => state.filterText, + val => { + tree.value.filter(val); + } + ); + return { + ...toRefs(state), + switchPage, + child, + handleNodeClick, + queryFundTree, + filterNode, + tree + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/main/performance-library/components/Detail.vue b/WebSite/src/views/main/performance-library/components/Detail.vue new file mode 100644 index 0000000000000000000000000000000000000000..4be8af01162c1a42d6a0ff313d82a6b68386ab7c --- /dev/null +++ b/WebSite/src/views/main/performance-library/components/Detail.vue @@ -0,0 +1,113 @@ +<template> + <div> + <el-card> + <el-button @click="handleBack">杩斿洖</el-button> + <el-button type="primary" plain @click="handleSave">淇濆瓨</el-button> + </el-card> + <el-card class="mtop20"> + <div class="projectInfo">椤圭洰淇℃伅</div> + <el-form + :model="ruleForm" + :rules="rules" + ref="ruleForms" + label-width="130px" + class="demo-ruleForm mtop20" + > + <el-row :gutter="20"> + <el-col :span="12"> + <el-form-item label="鎸囨爣鍚嶇О" prop="targetName"> + <el-input v-model="ruleForm.targetName"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鎸囨爣缂栧彿" prop="targetCode"> + <el-input v-model="ruleForm.targetCode"></el-input> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="20"> + <el-col :span="12"> + <el-form-item label="涓婄骇椤圭洰" prop="parentName"> + <el-input v-model="ruleForm.parentName" disabled></el-input> + </el-form-item> + </el-col> + </el-row> + </el-form> + </el-card> + </div> +</template> + +<script> +import { reactive, toRefs, onMounted } from 'vue'; +import ProjectLibrary from '@/api/projectLibrary'; +import { ElMessage } from 'element-plus'; +export default { + props: { + parentObj: { + type: Object + }, + editInfo: { + type: Object + } + }, + setup(props, cxt) { + onMounted(() => { + if (props.editInfo) { + state.ruleForm = props.editInfo; + } + state.ruleForm.parent = props.parentObj.parentBudgetId; + state.ruleForm.parentName = props.parentObj.parentBudgetName; + }); + const state = reactive({ + ruleForm: { + year: sessionStorage.getItem('year'), + id: null, + targetName: '', + targetCode: '', + parent: '', + parentName: '' + }, + rules: { + targetName: [ + { required: true, message: '璇疯緭鍏ユ椿鍔ㄥ悕绉�', trigger: 'blur' } + ], + targetCode: [ + { required: true, message: '璇疯緭鍏ユ椿鍔ㄧ紪鍙�', trigger: 'blur' } + ] + } + }); + const setParentObj = parentObj => { + state.ruleForm.parent = parentObj.parentBudgetId; + state.ruleForm.parentName = parentObj.parentBudgetName; + }; + const handleBack = () => { + cxt.emit('switchPage', 'List', '1'); + }; + const handleSave = () => { + ProjectLibrary.saveProjectTarget(state.ruleForm).then(res => { + console.log('res', res); + if (state.ruleForm.id) { + ElMessage.success('淇敼鎴愬姛'); + cxt.emit('switchPage', 'List', '1'); + } else { + ElMessage.success('淇濆瓨鎴愬姛'); + cxt.emit('switchPage', 'List', '1'); + } + }); + }; + return { + handleBack, + handleSave, + setParentObj, + ...toRefs(state) + }; + } +}; +</script> + +<style lang="scss" scoped> +.projectInfo { + font-weight: bold; + text-align: center; +} +</style> diff --git a/WebSite/src/views/main/performance-library/components/List.vue b/WebSite/src/views/main/performance-library/components/List.vue new file mode 100644 index 0000000000000000000000000000000000000000..eadcea793905f5f15f6450128d0aaefc276e539c --- /dev/null +++ b/WebSite/src/views/main/performance-library/components/List.vue @@ -0,0 +1,124 @@ +<template> + <div> + <el-card> + <el-row> + <el-button type="primary" plain @click="handleAdd">鏂板</el-button> + <el-button plain>瀵煎叆</el-button> + <el-button type="primary" plain>瀵煎嚭</el-button> + <el-button type="danger" plain @click="handleRemove">鍒犻櫎</el-button> + </el-row> + </el-card> + <el-card class="mtop20"> + <el-table + stripe + :data="departInfo.tableData" + style="width: 100%" + ref="multipleTable" + class="mtop20" + @selection-change="handleSelectionChange" + fit + > + <el-table-column type="selection" width="55" align="center" /> + <el-table-column label="鎸囨爣缂栧彿" prop="targetCode" /> + <el-table-column label="鎸囨爣鍚嶇О" prop="targetName" /> + + <el-table-column fixed="right" label="鎿嶄綔"> + <template #default="scope"> + <el-button type="text" size="small" @click="handleEdit(scope.row)" + >缂栬緫</el-button + > + </template> + </el-table-column> + </el-table> + <Pagination + v-show="departInfo.total > 0" + :total="departInfo.total" + v-model:page="checkInfo.pageIndex" + v-model:limit="checkInfo.pageSize" + @pagination="queryBudgetInfoPage" + /> + </el-card> + </div> +</template> + +<script> +import { reactive, toRefs, ref } from 'vue'; +import ProjectLibrary from '@/api/projectLibrary'; +import { ElMessage, ElMessageBox } from 'element-plus'; +export default { + setup(props, cxt) { + const multipleTable = ref(null); + const state = reactive({ + departInfo: { + total: 1, + tableData: [] + }, + checkInfo: { + pageIndex: 1, + pageSize: 10, + year: 2021, + parent: '' + }, + multipleSelection: [] + }); + const queryBudgetInfoPage = () => { + queryProjectTargetPageByPId(state.checkInfo.parent); + }; + const queryProjectTargetPageByPId = parentBudgetId => { + state.loading = true; + state.checkInfo.parent = parentBudgetId; + ProjectLibrary.queryProjectTargetPageByPId(state.checkInfo).then(res => { + state.departInfo.tableData = res.data; + state.departInfo.total = res.total; + }); + }; + const getQueryUserByPage = () => {}; + const handleEdit = row => { + ProjectLibrary.queryProjectTarget(row.id).then(res => { + cxt.emit('switchPage', 'Detail', res.data[0]); + }); + }; + const handleAdd = () => { + cxt.emit('switchPage', 'Detail'); + }; + const handleSelectionChange = val => { + state.multipleSelection = val; + }; + const handleRemove = () => { + if (state.multipleSelection.length === 0) { + ElMessage.warning('鍒犻櫎鏁版嵁涓嶈兘涓虹┖'); + return false; + } + ElMessageBox.confirm('纭畾鍒犻櫎鎵€閫夌敤鎴峰悧?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + let ids = state.multipleSelection.map(v => v.id); + ProjectLibrary.removeProjectTarget(ids).then(() => { + ElMessage.success('鍒犻櫎鎴愬姛'); + cxt.emit('switchPage', 'List', '1'); + }); + }) + .catch(() => { + ElMessage.info('宸插彇娑堝垹闄�'); + multipleTable.value.clearSelection(); + }); + }; + return { + ...toRefs(state), + handleAdd, + handleRemove, + multipleTable, + handleEdit, + queryBudgetInfoPage, + queryProjectTargetPageByPId, + handleSelectionChange, + getQueryUserByPage + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/main/performance-library/index.vue b/WebSite/src/views/main/performance-library/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..2acf681b0295575011e88500edcfcbe34f6f48b2 --- /dev/null +++ b/WebSite/src/views/main/performance-library/index.vue @@ -0,0 +1,142 @@ +<template> + <div> + <el-row :gutter="20"> + <el-col :span="7"> + <el-card> + <div class="flexItem"> + <el-date-picker + v-model="checkInfo.year" + type="year" + placeholder="閫夋嫨骞�" + :clearable="false" + @change="setTree" + > + </el-date-picker> + <el-button + type="primary" + class="ml-10" + @click="init" + :disabled="treeData.length > 0" + >鍚屾涓婂勾鏁版嵁</el-button + > + </div> + <el-tree + class="filter-tree mtop20" + node-key="id" + highlight-current + :props="defaultProps" + :default-expand-all="true" + :expand-on-click-node="false" + :data="treeData" + :filter-node-method="filterNode" + @node-click="handleNodeClick" + ref="tree" + > + </el-tree> + </el-card> + </el-col> + <el-col :span="17"> + <el-card> + <transition name="fade-transform" mode="out-in"> + <component + ref="child" + :parentObj="parentObj" + :editInfo="editInfo" + :is="currentComponent" + @switch-page="switchPage" + ></component> + </transition> + </el-card> + </el-col> + </el-row> + </div> +</template> + +<script> +import { reactive, toRefs, ref, onMounted, nextTick } from 'vue'; +import List from './components/List'; +import Detail from './components/Detail'; +import ProjectLibrary from '@/api/projectLibrary'; +import Moment from 'moment'; +export default { + components: { + List, + Detail + }, + setup() { + onMounted(() => { + queryProjectTargetTree(); + }); + const tree = ref(tree); + const child = ref(null); + const state = reactive({ + checkInfo: { + year: sessionStorage.getItem('year') + }, + currentComponent: 'List', + treeData: [], + parentObj: { parentBudgetId: '', parentBudgetName: '' }, + defaultProps: { + children: 'children', + label: 'targetName' + }, + editInfo: null + }); + const handleNodeClick = data => { + console.log('鏍戠偣鍑�', data); + state.parentObj = { + parentBudgetId: data.id, + parentBudgetName: data.targetName + }; + child.value.setParentObj(state.parentObj); + }; + const switchPage = (page, index) => { + state.currentComponent = page; + if (index) { + if (index.constructor === String) { + queryProjectTargetTree(); + } else { + state.editInfo = index; + } + } + }; + const setTree = () => { + state.checkInfo.year = Moment(state.checkInfo.year).format('YYYY'); + queryProjectTargetTree(); + }; + const queryProjectTargetTree = () => { + ProjectLibrary.queryProjectTargetTree(state.checkInfo).then(res => { + state.treeData = res.data; + if (state.treeData && state.treeData.length > 0) { + nextTick(() => { + tree.value.setCurrentKey(res.data[0].id); + child.value.queryProjectTargetPageByPId(res.data[0].id); + state.parentObj = { + parentBudgetId: res.data[0].id, + parentBudgetName: res.data[0].targetName + }; + }); + } + }); + }; + const init = () => { + ProjectLibrary.initProjectTargetList(state.checkInfo).then(res => { + console.log('res', res); + queryProjectTargetTree(); + }); + }; + return { + ...toRefs(state), + switchPage, + setTree, + init, + handleNodeClick, + child, + queryProjectTargetTree, + tree + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/main/project-library/department/components/Detail.vue b/WebSite/src/views/main/project-library/department/components/Detail.vue new file mode 100644 index 0000000000000000000000000000000000000000..88c79b8c1fd577346dd286262c0a6aca5f8ecba9 --- /dev/null +++ b/WebSite/src/views/main/project-library/department/components/Detail.vue @@ -0,0 +1,159 @@ +<template> + <div> + <TableFlow + @handleBack="handleBack" + @handleSave="handleSave" + @handleSubmit="handleSubmit" + @handleReturn="handleReturn" + :row="applyInfo" + :canEdit="canEdit" + /> + </div> +</template> + +<script> +// :flowInfo="flowInfo" +import { reactive, toRefs, onMounted } from 'vue'; +import ProjectLibrary from '@/api/projectLibrary'; +import { ElMessage } from 'element-plus'; +export default { + props: { + oId: { + type: String + }, + canEdit: { + type: Boolean + } + }, + setup(props, cxt) { + onMounted(() => { + console.log('oId', props.oId); + if (props.oId) { + init(props.oId); + } + }); + const state = reactive({ + applyInfo: {}, + flowInfo: { + nextSubmitNodes: [ + { + key: '1599725907064', + value: '绉戠爺澶勫鏍�' + } + ], + canRejectNodes: [ + { + key: '1599725907064', + value: '绉戠爺澶勫鏍�' + } + ], + user: '绯荤粺绠$悊鍛�', + state: '璐熻矗浜鸿ˉ鍏�', + flow: [ + { + actionTime: '2020骞�9鏈�11鏃�', + time: '17:30:43', + icon: '', + flowName: '绔嬮」', + attitude: '', + auditor: '绯荤粺绠$悊鍛�', + startNodeName: '寮€濮�', + endNodeName: '绉戠爺澶勭珛椤�', + flowState: '娴佺▼寮€濮�', + isPassed: 'False', + systemID: '00000000-0000-0000-0000-000000000000', + isEnable: false + }, + { + actionTime: '2020骞�9鏈�11鏃�', + time: '17:31:00', + icon: '', + flowName: '绔嬮」', + attitude: '', + auditor: '绯荤粺绠$悊鍛�', + startNodeName: '绉戠爺澶勭珛椤�', + endNodeName: '璐熻矗浜鸿ˉ鍏�', + flowState: '鎻愪氦', + isPassed: 'False', + systemID: '00000000-0000-0000-0000-000000000000', + isEnable: false + } + ], + btnStates: { + isShowSave: true, + isShowSubmit: true, + isShowReject: true, + isShowRevoke: false, + isShowChart: true, + isShowHistory: true, + isShowUser: true, + isShowState: true, + isShowCancel: false + }, + planId: null + } + }); + const handleBack = () => { + cxt.emit('switch-page', 'List'); + }; + const handleSave = applyInfo => { + console.log('鎴戠偣鍑讳簡淇濆瓨'); + ProjectLibrary.saveProjectInfoPlan(applyInfo).then(res => { + console.log('res', res); + init(res.data[0].id); + }); + }; + const handleSubmit = flowOutput => { + console.log('鎷垮埌鎻愪氦缁勪欢杩斿洖鐨勬暟鎹�', flowOutput); + let { nodeIds, remake } = flowOutput; + let nodeIdArr = []; + nodeIdArr.push(nodeIds); + let actionFlowCmd = { + id: state.planId, + nodeIds: nodeIdArr, + remake + }; + this.formLine.actionFlowCmd = actionFlowCmd; + this.$service.Budget.changeStateLabel(this.formLine).then(res => { + console.log('res', res); + ElMessage.success('鎻愪氦鎴愬姛'); + this.handleBack(); + }); + }; + const handleReturn = flowOutput => { + console.log('鎷垮埌鍥為€€缁勪欢杩斿洖鐨勬暟鎹�', flowOutput); + let { nodeIds, remake } = flowOutput; + let nodeIdArr = []; + nodeIdArr.push(nodeIds); + let actionFlowCmd = { + id: state.planId, + nodeIds: nodeIdArr, + remake + }; + this.formLine.actionFlowCmd = actionFlowCmd; + this.$service.Budget.rollBackDgjBudgetDraft(this.formLine).then(res => { + console.log('res', res); + ElMessage.success('鍥為€€鎴愬姛'); + this.handleBack(); + }); + }; + const init = id => { + ProjectLibrary.queryProjectInfoPlanById(id).then(res => { + console.log('res', res); + state.applyInfo = res.data[0]; + state.planId = res.data[0].id; + }); + }; + return { + ...toRefs(state), + handleBack, + init, + handleSave, + handleReturn, + handleSubmit + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/main/project-library/department/components/List.vue b/WebSite/src/views/main/project-library/department/components/List.vue new file mode 100644 index 0000000000000000000000000000000000000000..c041137026bd593eaa7de19b9d5b2e940059cc9c --- /dev/null +++ b/WebSite/src/views/main/project-library/department/components/List.vue @@ -0,0 +1,326 @@ +<template> + <div> + <el-card> + <el-row :gutter="20"> + <el-col :span="6"> + <el-date-picker + v-model="checkInfo.year" + type="year" + placeholder="閫夋嫨骞�" + > + </el-date-picker> + </el-col> + <el-col :span="6"> + <el-input + v-model="checkInfo.projectName" + placeholder="璇疯緭鍏ラ」鐩悕绉�" + ></el-input> + </el-col> + </el-row> + <el-row class="mtop20"> + <el-button type="primary" plain @click="handleAdd">鏂板缓</el-button> + <el-button plain @click="getDepartPageInfoFirst">鏌ヨ</el-button> + <el-button type="danger" plain @click="handleDel">鍒犻櫎</el-button> + <el-button type="primary" plain @click="choiceProject" + >鎸戦€変竾鍘嗛」鐩�</el-button + > + </el-row> + </el-card> + <el-card class="mtop20"> + <el-table + stripe + :data="departInfo.tableData" + style="width: 100%" + ref="multipleTable" + class="mtop20" + @selection-change="handleSelectionChange" + fit + > + <el-table-column type="selection" width="55" align="center" /> + <el-table-column label="椤圭洰鍚嶇О" prop="projectName" /> + <el-table-column label="椤圭洰搴�" prop="projectLibraryName"> + <template #default="scope"> + <el-button + @click="toDetail(scope.row)" + :type="scope.row.projectLibraryState == 2 ? 'text' : 'primary'" + >{{ scope.row.projectLibraryName }}</el-button + > + </template> + </el-table-column> + <!-- <el-table-column label="椤圭洰搴撳鏍哥姸鎬�" prop="projectLibraryState" /> --> + <el-table-column label="涓€涓�" prop="oneUPName"> + <template #default="scope"> + <el-button + @click="toOne(scope.row)" + :type="scope.row.oneUPState == 2 ? 'text' : 'primary'" + >{{ scope.row.oneUPName }}</el-button + > + </template> + </el-table-column> + <el-table-column label="浜屼笂" prop="twoUPName"> + <template #default="scope"> + <el-button + @click="toTwo(scope.row)" + :type="scope.row.twoUPState == 2 ? 'text' : 'primary'" + >{{ scope.row.twoUPName }}</el-button + > + </template> + </el-table-column> + <el-table-column label="鎵瑰" prop="replyName"> + <template #default="scope"> + <span v-if="scope.row.replyState == 2">{{ + scope.row.replyName + }}</span> + <el-button v-else type="primary" @click="toDetail(scope.row)">{{ + scope.row.replyName + }}</el-button> + </template> + </el-table-column> + </el-table> + <Pagination + v-show="departInfo.total > 0" + :total="departInfo.total" + v-model:page="checkInfo.pageNumber" + v-model:limit="checkInfo.pageSize" + @pagination="getDepartPageInfo" + /> + </el-card> + <el-dialog title="鎸戦€夐」鐩�" v-model="dialogVisible" width="800px"> + <div> + <el-row :gutter="20"> + <el-col :span="6"> + <el-date-picker + v-model="projectCheckInfo.year" + type="year" + placeholder="閫夋嫨骞�" + > + </el-date-picker> + </el-col> + <el-col :span="6"> + <el-input + v-model="projectCheckInfo.projectName" + placeholder="璇疯緭鍏ラ」鐩悕绉�" + ></el-input> + </el-col> + <el-col :span="3"> + <el-button plain @click="queryHistoryFirst">鏌ヨ</el-button> + </el-col> + </el-row> + <el-table + stripe + :data="projectInfo.tableData" + style="width: 100%" + ref="multipleTableP" + class="mtop20" + fit + @selection-change="handleSelectionProject" + > + <el-table-column type="selection" width="55" align="center" /> + <el-table-column label="骞翠唤" prop="year" /> + <el-table-column label="椤圭洰缂栧彿" prop="departmentCode" /> + <el-table-column label="椤圭洰鍚嶇О" prop="projectName" /> + <el-table-column label="閲戦" prop="planMoney"> </el-table-column> + <el-table-column + label="鍒跺崟浜�" + prop="projectLeaderName" + ></el-table-column> + </el-table> + <Pagination + v-show="projectInfo.total > 0" + :total="projectInfo.total" + v-model:page="projectCheckInfo.pageNumber" + v-model:limit="projectCheckInfo.pageSize" + @pagination="getQueryProjectByPage" + /> + </div> + <template #footer> + <span class="dialog-footer"> + <el-button @click="dialogVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="handleOk">纭� 瀹�</el-button> + </span> + </template> + </el-dialog> + </div> +</template> + +<script> +import { reactive, toRefs, onMounted, ref } from 'vue'; +import { ElMessage, ElMessageBox } from 'element-plus'; +import ProjectLibrary from '@/api/projectLibrary'; +export default { + setup(props, cxt) { + onMounted(() => { + getDepartPageInfo(); + queryHistoryProjectLibraryPageByCurrentUserDept(); + }); + const multipleTable = ref(null); + const multipleTableP = ref(null); + const state = reactive({ + checkInfo: { + year: sessionStorage.getItem('year'), //骞翠唤 + projectName: '', //椤圭洰鍚嶇О + departmentCode: '', + typeList: '', + pageNumber: 1, + pageSize: 10 + }, + projectCheckInfo: { + year: sessionStorage.getItem('year'), //骞翠唤 + projectName: '', //椤圭洰鍚嶇О + departmentCode: '', + typeList: '', + pageNumber: 1, + pageSize: 10 + }, + projectInfo: { + total: null, + tableData: [] + }, + dialogVisible: false, + departInfo: { + total: null, + tableData: [] + }, + multipleSelection: [], + multipleSelectionProject: [] + }); + // 鍒犻櫎 + const handleDel = () => { + if (state.multipleSelection.length === 0) { + ElMessage.warning('鍒犻櫎鏁版嵁涓嶈兘涓虹┖'); + return false; + } + ElMessageBox.confirm('纭畾鍒犻櫎鎵€閫夌敤鎴峰悧?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }) + .then(() => { + let idList = state.multipleSelection.map(v => v.id); + ProjectLibrary.removeProjectLibrary(idList).then(() => { + ElMessage.success('鍒犻櫎鎴愬姛'); + getDepartPageInfo(); + }); + }) + .catch(() => { + ElMessage.info('宸插彇娑堝垹闄�'); + multipleTable.value.clearSelection(); + }); + }; + const handleSelectionChange = val => { + state.multipleSelection = val; + }; + const getDepartPageInfoFirst = () => { + state.checkInfo.pageNumber = 1; + getDepartPageInfo(); + }; + // 鍒楄〃 + const getDepartPageInfo = () => { + ProjectLibrary.queryProjectLibraryPageByCurrentUserDept( + state.checkInfo + ).then(res => { + state.departInfo.tableData = res.data; + state.departInfo.total = res.total; + }); + }; + const queryHistoryFirst = () => { + state.projectCheckInfo.pageNumber = 1; + queryHistoryProjectLibraryPageByCurrentUserDept(); + }; + const queryHistoryProjectLibraryPageByCurrentUserDept = () => { + ProjectLibrary.queryHistoryProjectLibraryPageByCurrentUserDept( + state.projectCheckInfo + ).then(res => { + state.projectInfo.tableData = res.data; + state.projectInfo.total = res.total; + }); + }; + const choiceProject = async () => { + await getProjectInfo(); + state.dialogVisible = true; + }; + const getProjectInfoFirst = () => { + state.projectCheckInfo.pageNumber = 1; + getProjectInfo(); + }; + const getProjectInfo = () => {}; + const getQueryProjectByPage = () => { + getProjectInfo(); + }; + const handleAdd = () => { + cxt.emit('switch-page', 'Detail'); + }; + const handleSelectionProject = val => { + state.multipleSelectionProject = val; + }; + const handleOk = () => { + let idList = state.multipleSelectionProject.map(v => v.id); + ProjectLibrary.copyHistoryProjectLibrary(idList).then(res => { + console.log('res', res); + state.dialogVisible = false; + multipleTableP.value.clearSelection(); + getDepartPageInfo(); + }); + }; + const toDetail = row => { + cxt.emit('switch-page', 'Detail', true, row.projectLibraryBookID); + }; + const toOne = row => { + console.log('row', row); + // 0 杩涘叆 1 鍙栨秷 2 鏂囧瓧 + if (row.oneUPState === 0) { + ProjectLibrary.enterProjectPlanType1(row.id).then(res => { + console.log('resrow', res); + getDepartPageInfo(); + }); + } else if (row.oneUPState === 1) { + ProjectLibrary.cancelEnterProjectPlanType1(row.id).then(res => { + console.log('res', res); + getDepartPageInfo(); + }); + } else { + cxt.emit('switch-page', 'Detail', true, row.oneUPBookID); + } + }; + const toTwo = row => { + console.log('row', row); + // 0 杩涘叆 1 鍙栨秷 2 鏂囧瓧 + if (row.twoUPState === 0) { + ProjectLibrary.enterProjectPlanType2(row.id).then(res => { + console.log('resrow', res); + getDepartPageInfo(); + }); + } else if (row.twoUPState === 1) { + ProjectLibrary.cancelEnterProjectPlanType2(row.id).then(res => { + console.log('res', res); + getDepartPageInfo(); + }); + } else { + cxt.emit('switch-page', 'Detail', true, row.twoUPBookID); + } + }; + return { + ...toRefs(state), + handleAdd, + toOne, + toTwo, + choiceProject, + toDetail, + handleOk, + multipleTable, + multipleTableP, + getProjectInfoFirst, + queryHistoryFirst, + queryHistoryProjectLibraryPageByCurrentUserDept, + getQueryProjectByPage, + getDepartPageInfo, + handleDel, + handleSelectionProject, + getDepartPageInfoFirst, + handleSelectionChange + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/main/project-library/department/index.vue b/WebSite/src/views/main/project-library/department/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..d8a62e0c94d7184766538d3b6df4ad5a6dacaf1e --- /dev/null +++ b/WebSite/src/views/main/project-library/department/index.vue @@ -0,0 +1,43 @@ +<template> + <div class="app-container"> + <transition name="fade-transform" mode="out-in"> + <component + :is="currentComponent" + :canEdit="canEdit" + @switch-page="switchPage" + :oId="oId" + ></component> + </transition> + </div> +</template> + +<script> +import List from './components/List'; +import Detail from './components/Detail'; +import { reactive, toRefs } from 'vue'; + +export default { + components: { + List, + Detail + }, + setup() { + const data = reactive({ + currentComponent: 'List', + oId: null, + canEdit: false + }); + const switchPage = (page, canEdit, id) => { + data.oId = id; + data.canEdit = canEdit; + data.currentComponent = page; + }; + return { + ...toRefs(data), + switchPage + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/main/project-library/inSchool/components/Detail.vue b/WebSite/src/views/main/project-library/inSchool/components/Detail.vue new file mode 100644 index 0000000000000000000000000000000000000000..5ba0237db94b846bad718a6b315f388fbe221956 --- /dev/null +++ b/WebSite/src/views/main/project-library/inSchool/components/Detail.vue @@ -0,0 +1,101 @@ +<template> + <div> + <el-card> + <Flow + @handleBack="handleBack" + @handleSave="handleSave" + @handleSubmit="handleSubmit" + @handleReturn="handleReturn" + :flowInfo="flowInfo" + ></Flow> + </el-card> + </div> +</template> + +<script> +import { reactive, toRefs } from 'vue'; +export default { + setup(props, cxt) { + const state = reactive({ + flowInfo: { + nextSubmitNodes: [ + { + key: '1599725907064', + value: '绉戠爺澶勫鏍�' + } + ], + canRejectNodes: [ + { + key: '1599725907064', + value: '绉戠爺澶勫鏍�' + } + ], + user: '绯荤粺绠$悊鍛�', + state: '璐熻矗浜鸿ˉ鍏�', + flow: [ + { + actionTime: '2020骞�9鏈�11鏃�', + time: '17:30:43', + icon: '', + flowName: '绔嬮」', + attitude: '', + auditor: '绯荤粺绠$悊鍛�', + startNodeName: '寮€濮�', + endNodeName: '绉戠爺澶勭珛椤�', + flowState: '娴佺▼寮€濮�', + isPassed: 'False', + systemID: '00000000-0000-0000-0000-000000000000', + isEnable: false + }, + { + actionTime: '2020骞�9鏈�11鏃�', + time: '17:31:00', + icon: '', + flowName: '绔嬮」', + attitude: '', + auditor: '绯荤粺绠$悊鍛�', + startNodeName: '绉戠爺澶勭珛椤�', + endNodeName: '璐熻矗浜鸿ˉ鍏�', + flowState: '鎻愪氦', + isPassed: 'False', + systemID: '00000000-0000-0000-0000-000000000000', + isEnable: false + } + ], + btnStates: { + isShowSave: true, + isShowSubmit: true, + isShowReject: true, + isShowRevoke: false, + isShowChart: true, + isShowHistory: true, + isShowUser: true, + isShowState: true, + isShowCancel: false + } + } + }); + const handleBack = () => { + cxt.emit('switch-page', 'List'); + }; + const handleSave = () => { + console.log('鎴戠偣鍑讳簡淇濆瓨'); + }; + const handleSubmit = handleSubmit => { + console.log('鎷垮埌鎻愪氦缁勪欢杩斿洖鐨勬暟鎹�', handleSubmit); + }; + const handleReturn = flowOutput => { + console.log('鎷垮埌鍥為€€缁勪欢杩斿洖鐨勬暟鎹�', flowOutput); + }; + return { + ...toRefs(state), + handleBack, + handleSave, + handleReturn, + handleSubmit + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/main/project-library/inSchool/components/List.vue b/WebSite/src/views/main/project-library/inSchool/components/List.vue new file mode 100644 index 0000000000000000000000000000000000000000..4662de948c14d7651607fbff611c2bb658ef9f98 --- /dev/null +++ b/WebSite/src/views/main/project-library/inSchool/components/List.vue @@ -0,0 +1,114 @@ +<template> + <div> + <el-card> + <el-row :gutter="20"> + <el-col :span="6"> + <el-date-picker + v-model="checkInfo.year" + type="year" + placeholder="閫夋嫨骞�" + > + </el-date-picker> + </el-col> + <el-col :span="6"> + <el-input + v-model="checkInfo.projectName" + placeholder="璇疯緭鍏ラ」鐩悕绉�" + ></el-input> + </el-col> + <el-col :span="6"> + <el-select v-model="checkInfo.planType" placeholder="璇烽€夋嫨椤圭洰搴�"> + <el-option + :label="item.key" + :value="item.name" + v-for="(item, index) in planInfo" + :key="index" + ></el-option> + </el-select> + </el-col> + </el-row> + <el-row class="mtop20"> + <el-button plain @click="getDepartPageInfoFirst">鏌ヨ</el-button> + </el-row> + </el-card> + <el-card class="mtop20"> + <el-table + stripe + :data="departInfo.tableData" + style="width: 100%" + ref="multipleTable" + class="mtop20" + fit + > + <el-table-column label="骞翠唤" prop="year" /> + <el-table-column label="椤圭洰鍚嶇О" prop="projectName" /> + <el-table-column label="璐熻矗浜�" prop="projectName" /> + <el-table-column label="椤圭洰搴�" prop="projectLibraryName"> + </el-table-column> + <el-table-column label="涓€涓�" prop="oneUPName"> </el-table-column> + <el-table-column label="浜屼笂" prop="twoUPName"> </el-table-column> + <el-table-column label="鎵瑰" prop="replyName"> </el-table-column> + </el-table> + <Pagination + v-show="departInfo.total > 0" + :total="departInfo.total" + v-model:page="checkInfo.pageNumber" + v-model:limit="checkInfo.pageSize" + @pagination="getDepartPageInfo" + /> + </el-card> + </div> +</template> + +<script> +import { reactive, toRefs, onMounted, ref } from 'vue'; +import ProjectLibrary from '@/api/projectLibrary'; +export default { + setup() { + onMounted(() => { + getDepartPageInfo(); + getPlanTypeEnum(); + }); + const multipleTable = ref(null); + const state = reactive({ + checkInfo: { + year: sessionStorage.getItem('year'), //骞翠唤 + projectName: '', //椤圭洰鍚嶇О + planType: '', //椤圭洰搴� + pageNumber: 1, + pageSize: 10 + }, + departInfo: { + total: null, + tableData: [] + }, + planInfo: [] + }); + const getDepartPageInfoFirst = () => { + state.checkInfo.pageNumber = 1; + getDepartPageInfo(); + }; + // 鍒楄〃 + const getDepartPageInfo = () => { + ProjectLibrary.queryProjectLibraryPage(state.checkInfo).then(res => { + console.log('Res', res); + }); + }; + const getPlanTypeEnum = () => { + ProjectLibrary.getPlanTypeEnum({}).then(res => { + console.log('res', res); + state.planInfo = res.data; + }); + }; + return { + ...toRefs(state), + getDepartPageInfoFirst, + getPlanTypeEnum, + multipleTable, + getDepartPageInfo + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/main/project-library/inSchool/index.vue b/WebSite/src/views/main/project-library/inSchool/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..e19f130f0b949c8c57293f45e2cf327f9c80a3b3 --- /dev/null +++ b/WebSite/src/views/main/project-library/inSchool/index.vue @@ -0,0 +1,33 @@ +<template> + <div class="app-container"> + <transition name="fade-transform" mode="out-in"> + <component :is="currentComponent" @switch-page="switchPage"></component> + </transition> + </div> +</template> + +<script> +import List from './components/List'; +import Detail from './components/Detail'; +import { reactive, toRefs } from 'vue'; +export default { + components: { + List, + Detail + }, + setup() { + const data = reactive({ + currentComponent: 'List' + }); + const switchPage = page => { + data.currentComponent = page; + }; + return { + ...toRefs(data), + switchPage + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/nested/menu1/index.vue b/WebSite/src/views/nested/menu1/index.vue deleted file mode 100644 index 30cb670118ee7441850a6f8f83bda2b3514d8e0c..0000000000000000000000000000000000000000 --- a/WebSite/src/views/nested/menu1/index.vue +++ /dev/null @@ -1,7 +0,0 @@ -<template> - <div style="padding:30px;"> - <el-alert :closable="false" title="menu 1"> - <router-view /> - </el-alert> - </div> -</template> diff --git a/WebSite/src/views/nested/menu1/menu1-1/index.vue b/WebSite/src/views/nested/menu1/menu1-1/index.vue deleted file mode 100644 index 27e173a6b473d2eb308f059384bf9c4790894a5f..0000000000000000000000000000000000000000 --- a/WebSite/src/views/nested/menu1/menu1-1/index.vue +++ /dev/null @@ -1,7 +0,0 @@ -<template> - <div style="padding:30px;"> - <el-alert :closable="false" title="menu 1-1" type="success"> - <router-view /> - </el-alert> - </div> -</template> diff --git a/WebSite/src/views/nested/menu1/menu1-2/index.vue b/WebSite/src/views/nested/menu1/menu1-2/index.vue deleted file mode 100644 index 0c86276e0162396768de0d2781927e7d0322130f..0000000000000000000000000000000000000000 --- a/WebSite/src/views/nested/menu1/menu1-2/index.vue +++ /dev/null @@ -1,7 +0,0 @@ -<template> - <div style="padding:30px;"> - <el-alert :closable="false" title="menu 1-2" type="success"> - <router-view /> - </el-alert> - </div> -</template> diff --git a/WebSite/src/views/nested/menu1/menu1-2/menu1-2-1/index.vue b/WebSite/src/views/nested/menu1/menu1-2/menu1-2-1/index.vue deleted file mode 100644 index f87d88f4908681b45eae1fbb26389b86b5f9cc1d..0000000000000000000000000000000000000000 --- a/WebSite/src/views/nested/menu1/menu1-2/menu1-2-1/index.vue +++ /dev/null @@ -1,5 +0,0 @@ -<template functional> - <div style="padding:30px;"> - <el-alert :closable="false" title="menu 1-2-1" type="warning" /> - </div> -</template> diff --git a/WebSite/src/views/nested/menu1/menu1-2/menu1-2-2/index.vue b/WebSite/src/views/nested/menu1/menu1-2/menu1-2-2/index.vue deleted file mode 100644 index d88789f205ed5bbba622bfb1b6291ad827e6004d..0000000000000000000000000000000000000000 --- a/WebSite/src/views/nested/menu1/menu1-2/menu1-2-2/index.vue +++ /dev/null @@ -1,5 +0,0 @@ -<template functional> - <div style="padding:30px;"> - <el-alert :closable="false" title="menu 1-2-2" type="warning" /> - </div> -</template> diff --git a/WebSite/src/views/nested/menu1/menu1-3/index.vue b/WebSite/src/views/nested/menu1/menu1-3/index.vue deleted file mode 100644 index f7cd0738f1b36e662bf6b088b337c79865878c4c..0000000000000000000000000000000000000000 --- a/WebSite/src/views/nested/menu1/menu1-3/index.vue +++ /dev/null @@ -1,5 +0,0 @@ -<template functional> - <div style="padding:30px;"> - <el-alert :closable="false" title="menu 1-3" type="success" /> - </div> -</template> diff --git a/WebSite/src/views/nested/menu2/index.vue b/WebSite/src/views/nested/menu2/index.vue deleted file mode 100644 index 19dd48f0edf37f54317f14b0cfb707d00ab04f11..0000000000000000000000000000000000000000 --- a/WebSite/src/views/nested/menu2/index.vue +++ /dev/null @@ -1,5 +0,0 @@ -<template> - <div style="padding:30px;"> - <el-alert :closable="false" title="menu 2" /> - </div> -</template> diff --git a/WebSite/src/views/outer/index.vue b/WebSite/src/views/outer/index.vue index 69b91a9d1747ea28879ebb09a47841aebdf7538d..fff765e6e13d88acc4d1a4f016998108357afb28 100644 --- a/WebSite/src/views/outer/index.vue +++ b/WebSite/src/views/outer/index.vue @@ -2,8 +2,8 @@ * @Description: * @Autor: dong jun hua * @Date: 2020-07-08 16:06:00 - * @LastEditors: dong jun hua - * @LastEditTime: 2020-07-09 10:56:45 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-01-20 10:05:22 --> <template> @@ -14,10 +14,10 @@ <script> export default { - name: "Outer", + name: 'Outer', data() { return { - url: "" + url: '' }; }, watch: { @@ -37,8 +37,8 @@ export default { }, methods: { setFrameHeight() { - const container = document.querySelector(".frame-container"); - const frame = document.querySelector(".frame"); + const container = document.querySelector('.frame-container'); + const frame = document.querySelector('.frame'); const height = container.offsetHeight; frame.style.height = `${height}px`; } diff --git a/WebSite/src/views/pdf/content.js b/WebSite/src/views/pdf/content.js deleted file mode 100644 index d5bc71d29ad265fde19f6dafe6242aa2adc43c79..0000000000000000000000000000000000000000 --- a/WebSite/src/views/pdf/content.js +++ /dev/null @@ -1,58 +0,0 @@ -const title = "Plans for the Next Iteration of Vue.js"; - -const content = `<p>Last week at<a href="https://vuejs.london/summary" rel="nofollow">Vue.js London</a>I gave a brief sneak peek of what鈥檚 coming in the next major version of Vue. This post provides an in-depth overview of the plan.</p> -<p><img class=" wscnph" src="https://wpimg.wallstcn.com/b8a1d7be-0b73-41b8-be8c-7c01c93cab66.png" data-wscntype="image" data-wscnh="742" data-wscnw="692" /></p> -<h3>Why a new majorversion?</h3> -<p>Vue 2.0 was released<a href="https://medium.com/the-vue-point/vue-2-0-is-here-ef1f26acf4b8" rel="nofollow">exactly two years ago</a>(how time flies!). During this period, the core has remained backwards compatible with five minor releases. We鈥檝e accumulated a number of ideas that would bring improvements, but they were held off because they would result in breaking changes. At the same time, the JavaScript ecosystem and the language itself has been evolving rapidly. There are greatly improved tools that could enhance our workflow, and many new language features that could unlock simpler, more complete, and more efficient solutions to the problems Vue is trying to solve. What鈥檚 more exciting is that we are seeing ES2015 support becoming a baseline for all major evergreen browsers. Vue 3.0 aims to leverage these new language features to make Vue core smaller, faster, and more powerful.</p> -<p>Vue 3.0 is currently in prototyping phase, and we have already implemented a runtime close to feature-parity with 2.x.<strong>Many of the items listed below are either already implemented, or confirmed to be feasible. Ones that are not yet implemented or still in exploration phase are marked with a *.</strong></p> -<h3>The Details</h3> -<h4>High-Level APIChanges</h4> -<blockquote>TL;DR: Everything except render function API and scoped-slots syntax will either remain the same or can be made 2.x compatible via a compatibility build.</blockquote> -<p>Since it鈥檚 a new major, there is going to be some breaking changes. However, we take backwards compatibility seriously, so we want to start communicating these changes as soon as possible. Here鈥檚 the currently planned public API changes:</p> -<ul><li>Template syntax will remain 99% the same. There may be small tweaks in scoped slots syntax, but other than that we have no plans to change anything else for templates.</li><li>3.0 will support class-based components natively, with the aim to provide an API that is pleasant to use in native ES2015 without requiring any transpilation or stage-x features. Most current options will have a reasonable mapping in the class-based API. Stage-x features such as class fields and decorators can still be used optionally to enhance the authoring experience. In addition, the API is designed with TypeScript type inference in mind. The 3.x codebase will itself be written in TypeScript, and providing improved TypeScript support. (That said, usage of TypeScript in an application is still entirely optional.)</li><li>The 2.x object-based component format will still be supported by internally transforming the object to a corresponding class.</li><li>Mixins will still be supported.*</li><li>Top level APIs will likely receive an overhaul to avoid globally mutating the Vue runtime when installing plugins. Instead, plugins will be applied and scoped to a component tree. This will make it easier to test components that rely on specific plugins, and also make it possible to mount multiple Vue applications on the same page with different plugins, but using the same Vue runtime.*</li><li>Functional components can finally be plain functions 鈥攈owever, async components will now need to be explicitly created via a helper function.</li><li>The part that will receive the most changes is the Virtual DOM format used in render functions. We are currently collecting feedback from major library authors and will be sharing more details as we are more confident of the changes, but as long as you don鈥檛 heavily rely on hand-written (non-JSX) render functions in your app, upgrading should be a reasonably straightforward process.</li></ul> -<h4>Source Code Architecture</h4> -<blockquote>TL;DR: better decoupled internal modules, TypeScript, and a codebase that is easier to contribute to.</blockquote> -<p>We are re-writing 3.0 from the ground up for a cleaner and more maintainable architecture, in particular trying to make it easier to contribute to. We are breaking some internal functionalities into individual packages in order to isolate the scope of complexity. For example, the observer module will become its own package, with its own public API and tests. Note this does not affect framework-level API鈥� you will not have to manually import individual bits from multiple packages in order to use Vue. Instead, the final Vue package is assembled using these internal packages.</p> -<p>The codebase is also now written in TypeScript. Although this will make proficiency in TypeScript a pre-requisite for contributing to the new codebase, we believe the type information and IDE support will actually make it easier for a new contributor to make meaningful contributions.</p> -<p>Decoupling the observer and scheduler into separate packages also allows us to easily experiment with alternative implementations of these parts. For example, we can implement an IE11 compatible observer implementation with the same API, or an alternative scheduler that leverages<code>requestIdleCallback</code>to yield to the browser during long updates.*</p> -<p><img class=" wscnph" src="https://wpimg.wallstcn.com/4d0b5fb2-d7f9-48fd-8f1b-03362b534dd9.png" data-wscntype="image" data-wscnh="716" data-wscnw="460" /></p> -<h4>Observation Mechanism</h4> -<blockquote>TL;DR: more complete, precise, efficient and debuggable reactivity tracking & API for creating observables.</blockquote> -<p>3.0 will ship with a Proxy-based observer implementation that provides reactivity tracking with full language coverage. This eliminates a number of limitations of Vue 2鈥檚 current implementation based on<code>Object.defineProperty</code>:</p> -<p>The new observer also features the following:</p> -<p>Easily understand why a component is re-rendering</p> -<p><img class=" wscnph" src="https://wpimg.wallstcn.com/a0c9d811-1ef9-4628-8976-f7c1aaa66da0.png" data-wscntype="image" data-wscnh="540" data-wscnw="789" /></p> -<h4>Other Runtime Improvements</h4> -<blockquote>TL;DR: smaller, faster, tree-shakable features, fragments & portals, custom renderer API.</blockquote> -<h4>Compiler Improvements*</h4> -<blockquote>TL;DR: tree-shaking friendly output, more AOT optimizations, parser with better error info and source map support.</blockquote> -<h4>IE11 Support*</h4> -<blockquote>TL;DR: it will be supported, but in a separate build with the same reactivity limitations of Vue 2.x.</blockquote> -<p>The new codebase currently targets evergreen browsers only and assumes baseline native ES2015 support. But alas, we know a lot of our users still need to support IE11 for the foreseeable future. Most of the ES2015 features used can be transpiled / polyfilled for IE11, with the exception for Proxies. Our plan is to implement an alternative observer with the same API, but using the good old ES5<code>Object.defineProperty</code>API. A separate build of Vue 3.x will be distributed using this observer implementation. However, this build will be subject to the same change detection caveats of Vue 2.x and thus not fully compatible with the 鈥渕odern鈥� build of 3.x. We are aware that this imposes some inconvenience for library authors as they will need to be aware of compatibility for two different builds, but we will make sure to provide clear guidelines on this when we reach that stage.</p> -<h3>How Do We GetThere</h3> -<p>First of all, although we are announcing it today, we do not have a definitive timeline yet. What we do know at the moment is the steps we will be taking to get there:</p> -<h4>1. Internal Feedback for the Runtime Prototype</h4> -<p>This is the phase we are in right now. Currently, we already have a working runtime prototype that includes the new observer, Virtual DOM and component implementation. We have invited a group of authors of influential community projects to provide feedback for the internal changes, and would like to make sure they are comfortable with the changes before moving forward. We want to ensure that important libraries in the ecosystem will be ready at the same time when we release 3.0, so that users relying on those projects can upgrade easily.</p> -<h4>2. Public Feedback viaRFCs</h4> -<p>Once we gain a certain level of confidence in the new design, for each breaking change we will be opening a dedicated RFC issue which includes:</p> -<p>We will anticipate public feedback from the wider community to help us consolidate these ideas.</p> -<h4>3. Introduce Compatible Features in 2.x &2.x-next</h4> -<p>We are not forgetting about 2.x! In fact, we plan to use 2.x to progressively accustom users to the new changes. We will be gradually introducing confirmed API changes into 2.x via opt-in adaptors, and 2.x-next will allow users to try out the new Proxy-based observer.</p> -<p>The last minor release in 2.x will become LTS and continue to receive bug and security fixes for 18 months when 3.0 is released.</p> -<h4>4. AlphaPhase</h4> -<p>Next, we will finish up the compiler and server-side rendering parts of 3.0 and start making alpha releases. These will mostly be for stability testing purposes in small greenfield apps.</p> -<h4>5. BetaPhase</h4> -<p>During beta phase, our main goal is updating support libraries and tools like Vue Router, Vuex, Vue CLI, Vue DevTools and make sure they work smoothly with the new core. We will also be working with major library authors from the community to help them get ready for 3.0.</p> -<h4>6. RCPhase</h4> -<p>Once we consider the API and codebase stable, we will enter RC phase with API freeze. During this phase we will also work on a 鈥渃ompat build鈥�: a build of 3.0 that includes compatibility layers for 2.x API. This build will also ship with a flag you can turn on to emit deprecation warnings for 2.x API usage in your app. The compat build can be used as a guide to upgrade your app to 3.0.</p> -<h4>7. IE11build</h4> -<p>The last task before the final release will be the IE11 compatibility build as mentioned above.</p> -<h4>8. FinalRelease</h4> -<p>In all honesty, we don鈥檛 know when this will happen yet, but likely in 2019. Again, we care more about shipping something that is solid and stable rather than hitting specific dates. There is a lot of work to be done, but we are excited for what鈥檚 coming next!</p>`; - -const data = { - title, - content -}; - -export default data; diff --git a/WebSite/src/views/pdf/download.vue b/WebSite/src/views/pdf/download.vue deleted file mode 100644 index 74ba12bb11bf46f470b5831db8b4833a0b2b9d8b..0000000000000000000000000000000000000000 --- a/WebSite/src/views/pdf/download.vue +++ /dev/null @@ -1,214 +0,0 @@ -<template> - <div - v-loading.fullscreen.lock="fullscreenLoading" - class="main-article" - element-loading-text="Efforts to generate PDF" - > - <div class="article__heading"> - <div class="article__heading__title"> - {{ article.title }} - </div> - </div> - <div style="color: #ccc;"> - This article is from Evan You on - <a - target="_blank" - href="https://medium.com/the-vue-point/plans-for-the-next-iteration-of-vue-js-777ffea6fabf" - >medium</a - > - </div> - <div ref="content" class="node-article-content" v-html="article.content" /> - </div> -</template> - -<script> -export default { - data() { - return { - article: "", - fullscreenLoading: true - }; - }, - mounted() { - this.fetchData(); - }, - methods: { - fetchData() { - import("./content.js").then(data => { - const { title } = data.default; - document.title = title; - this.article = data.default; - setTimeout(() => { - this.fullscreenLoading = false; - this.$nextTick(() => { - window.print(); - }); - }, 3000); - }); - } - } -}; -</script> - -<style lang="scss"> -@mixin clearfix { - &:before { - display: table; - content: ""; - clear: both; - } - - &:after { - display: table; - content: ""; - clear: both; - } -} - -.main-article { - padding: 20px; - margin: 0 auto; - display: block; - width: 740px; - background: #fff; -} - -.article__heading { - position: relative; - padding: 0 0 20px; - overflow: hidden; -} - -.article__heading__title { - display: block; - display: -webkit-box; - -webkit-box-orient: vertical; - -webkit-line-clamp: 2; - line-clamp: 2; - word-wrap: break-word; - overflow-wrap: break-word; - font-size: 32px; - line-height: 48px; - font-weight: 600; - color: #333; - overflow: hidden; -} - -.node-article-content { - margin: 20px 0 0; - @include clearfix; - font-size: 16px; - color: #333; - letter-spacing: 0.5px; - line-height: 28px; - margin-bottom: 30px; - font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", - Times, serif; - - & > :last-child { - margin-bottom: 0; - } - - b, - strong { - font-weight: inherit; - font-weight: bolder; - } - - img { - max-width: 100%; - display: block; - margin: 0 auto; - } - - p { - font-weight: 400; - font-style: normal; - font-size: 21px; - line-height: 1.58; - letter-spacing: -0.003em; - } - - ul { - margin-bottom: 30px; - } - - li { - --x-height-multiplier: 0.375; - --baseline-multiplier: 0.17; - - letter-spacing: 0.01rem; - font-weight: 400; - font-style: normal; - font-size: 21px; - line-height: 1.58; - letter-spacing: -0.003em; - margin-left: 30px; - margin-bottom: 14px; - } - - a { - text-decoration: none; - background-repeat: repeat-x; - background-image: linear-gradient( - to right, - rgba(0, 0, 0, 0.84) 100%, - rgba(0, 0, 0, 0) 0 - ); - background-size: 1px 1px; - background-position: 0 calc(1em + 1px); - padding: 0 6px; - } - - code { - background: rgba(0, 0, 0, 0.05); - padding: 3px 4px; - margin: 0 2px; - font-size: 16px; - display: inline-block; - } - - img { - border: 0; - } - - /* 瑙e喅 IE6-7 鍥剧墖缂╂斁閿娇闂 */ - img { - -ms-interpolation-mode: bicubic; - } - - blockquote { - --x-height-multiplier: 0.375; - --baseline-multiplier: 0.17; - font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", - Times, serif; - letter-spacing: 0.01rem; - font-weight: 400; - font-style: italic; - font-size: 21px; - line-height: 1.58; - letter-spacing: -0.003em; - border-left: 3px solid rgba(0, 0, 0, 0.84); - padding-left: 20px; - margin-left: -23px; - padding-bottom: 2px; - } - - a { - text-decoration: none; - } - - h2, - h3, - h4 { - font-size: 34px; - line-height: 1.15; - letter-spacing: -0.015em; - margin: 53px 0 0; - } - - h4 { - font-size: 26px; - } -} -</style> diff --git a/WebSite/src/views/pdf/index.vue b/WebSite/src/views/pdf/index.vue deleted file mode 100644 index 532c96402c5fb5c7f24c29126c7bdb1483271be1..0000000000000000000000000000000000000000 --- a/WebSite/src/views/pdf/index.vue +++ /dev/null @@ -1,12 +0,0 @@ -<template> - <div class="app-container"> - <aside style="margin-top:15px;"> - Here we use window.print() to implement the feature of downloading PDF. - </aside> - <router-link target="_blank" to="/pdf/download"> - <el-button type="primary"> - Click to download PDF - </el-button> - </router-link> - </div> -</template> diff --git a/WebSite/src/views/permission/components/SwitchRoles.vue b/WebSite/src/views/permission/components/SwitchRoles.vue deleted file mode 100644 index 743aa9a2412374f92a0c95a27b3279f3597acf85..0000000000000000000000000000000000000000 --- a/WebSite/src/views/permission/components/SwitchRoles.vue +++ /dev/null @@ -1,33 +0,0 @@ -<!-- - * @Description: - * @Autor: dong jun hua - * @Date: 2020-06-08 09:28:06 - * @LastEditors: dong jun hua - * @LastEditTime: 2020-06-16 10:06:27 ---> -<template> - <div> - <div style="margin-bottom:15px;">Your roles: {{ roles }}</div> - Switch roles: - <el-radio-group v-model="switchRoles"> - <el-radio-button label="editor" /> - <el-radio-button label="admin" /> - </el-radio-group> - </div> -</template> - -<script> -export default { - computed: { - roles() { - return this.$store.getters.roles; - }, - switchRoles: { - get() { - return this.roles[0]; - }, - set(val) {} - } - } -}; -</script> diff --git a/WebSite/src/views/permission/directive.vue b/WebSite/src/views/permission/directive.vue deleted file mode 100644 index 204b857b86dbc19463ceb213a98dcb5875193e8e..0000000000000000000000000000000000000000 --- a/WebSite/src/views/permission/directive.vue +++ /dev/null @@ -1,131 +0,0 @@ -<template> - <div class="app-container"> - <switch-roles @change="handleRolesChange" /> - <div :key="key" style="margin-top:30px;"> - <div> - <span v-permission="['admin']" class="permission-alert"> - Only - <el-tag class="permission-tag" size="small">admin</el-tag> can see - this - </span> - <el-tag - v-permission="['admin']" - class="permission-sourceCode" - type="info" - > - v-permission="['admin']" - </el-tag> - </div> - - <div> - <span v-permission="['editor']" class="permission-alert"> - Only - <el-tag class="permission-tag" size="small">editor</el-tag> can see - this - </span> - <el-tag - v-permission="['editor']" - class="permission-sourceCode" - type="info" - > - v-permission="['editor']" - </el-tag> - </div> - - <div> - <span v-permission="['admin', 'editor']" class="permission-alert"> - Both - <el-tag class="permission-tag" size="small">admin</el-tag> and - <el-tag class="permission-tag" size="small">editor</el-tag> can see - this - </span> - <el-tag - v-permission="['admin', 'editor']" - class="permission-sourceCode" - type="info" - > - v-permission="['admin','editor']" - </el-tag> - </div> - </div> - - <div :key="'checkPermission' + key" style="margin-top:60px;"> - <aside> - In some cases, using v-permission will have no effect. For example: - Element-UI's Tab component or el-table-column and other scenes that - dynamically render dom. You can only do this with v-if. - <br /> - e.g. - </aside> - - <el-tabs type="border-card" style="width:550px;"> - <el-tab-pane v-if="checkPermission(['admin'])" label="Admin"> - Admin can see this - <el-tag class="permission-sourceCode" type="info"> - v-if="checkPermission(['admin'])" - </el-tag> - </el-tab-pane> - - <el-tab-pane v-if="checkPermission(['editor'])" label="Editor"> - Editor can see this - <el-tag class="permission-sourceCode" type="info"> - v-if="checkPermission(['editor'])" - </el-tag> - </el-tab-pane> - - <el-tab-pane - v-if="checkPermission(['admin', 'editor'])" - label="Admin-OR-Editor" - > - Both admin or editor can see this - <el-tag class="permission-sourceCode" type="info"> - v-if="checkPermission(['admin','editor'])" - </el-tag> - </el-tab-pane> - </el-tabs> - </div> - </div> -</template> - -<script> -import permission from "@/directive/permission/index.js"; // 鏉冮檺鍒ゆ柇鎸囦护 -import checkPermission from "@/utils/permission"; // 鏉冮檺鍒ゆ柇鍑芥暟 -import SwitchRoles from "./components/SwitchRoles"; - -export default { - name: "DirectivePermission", - components: { SwitchRoles }, - directives: { permission }, - data() { - return { - key: 1 // 涓轰簡鑳芥瘡娆″垏鎹㈡潈闄愮殑鏃跺€欓噸鏂板垵濮嬪寲鎸囦护 - }; - }, - methods: { - checkPermission, - handleRolesChange() { - this.key++; - } - } -}; -</script> - -<style lang="scss" scoped> -.app-container { - /deep/ .permission-alert { - width: 320px; - margin-top: 15px; - background-color: #f0f9eb; - color: #67c23a; - padding: 8px 16px; - border-radius: 4px; - display: inline-block; - } - /deep/ .permission-sourceCode { - margin-left: 15px; - } - /deep/ .permission-tag { - background-color: #ecf5ff; - } -} -</style> diff --git a/WebSite/src/views/permission/page.vue b/WebSite/src/views/permission/page.vue deleted file mode 100644 index 072717222245d32011f5f6b0424cd95daa77de71..0000000000000000000000000000000000000000 --- a/WebSite/src/views/permission/page.vue +++ /dev/null @@ -1,19 +0,0 @@ -<template> - <div class="app-container"> - <switch-roles @change="handleRolesChange" /> - </div> -</template> - -<script> -import SwitchRoles from "./components/SwitchRoles"; - -export default { - name: "PagePermission", - components: { SwitchRoles }, - methods: { - handleRolesChange() { - this.$router.push({ path: "/permission/index?" + +new Date() }); - } - } -}; -</script> diff --git a/WebSite/src/views/permission/role.vue b/WebSite/src/views/permission/role.vue deleted file mode 100644 index dd0d4fdda16b0bc9eb0a3b71aac679c47a06d998..0000000000000000000000000000000000000000 --- a/WebSite/src/views/permission/role.vue +++ /dev/null @@ -1,302 +0,0 @@ -<template> - <div class="app-container"> - <el-button type="primary" @click="handleAddRole">New Role</el-button> - - <el-table :data="rolesList" style="width: 100%;margin-top:30px;" border> - <el-table-column align="center" label="Role Key" width="220"> - <template slot-scope="scope"> - {{ scope.row.key }} - </template> - </el-table-column> - <el-table-column align="center" label="Role Name" width="220"> - <template slot-scope="scope"> - {{ scope.row.name }} - </template> - </el-table-column> - <el-table-column align="header-center" label="Description"> - <template slot-scope="scope"> - {{ scope.row.description }} - </template> - </el-table-column> - <el-table-column align="center" label="Operations"> - <template slot-scope="scope"> - <el-button type="primary" size="small" @click="handleEdit(scope)" - >Edit</el-button - > - <el-button type="danger" size="small" @click="handleDelete(scope)" - >Delete</el-button - > - </template> - </el-table-column> - </el-table> - - <el-dialog - :visible.sync="dialogVisible" - :title="dialogType === 'edit' ? 'Edit Role' : 'New Role'" - > - <el-form :model="role" label-width="80px" label-position="left"> - <el-form-item label="Name"> - <el-input v-model="role.name" placeholder="Role Name" /> - </el-form-item> - <el-form-item label="Desc"> - <el-input - v-model="role.description" - :autosize="{ minRows: 2, maxRows: 4 }" - type="textarea" - placeholder="Role Description" - /> - </el-form-item> - <el-form-item label="Menus"> - <el-tree - ref="tree" - :check-strictly="checkStrictly" - :data="routesData" - :props="defaultProps" - show-checkbox - node-key="path" - class="permission-tree" - /> - </el-form-item> - </el-form> - <div style="text-align:right;"> - <el-button type="danger" @click="dialogVisible = false" - >Cancel</el-button - > - <el-button type="primary" @click="confirmRole">Confirm</el-button> - </div> - </el-dialog> - </div> -</template> - -<script> -import path from "path"; -import { deepClone } from "@/utils"; -import { - getRoutes, - getRoles, - addRole, - deleteRole, - updateRole -} from "@/api/role"; - -const defaultRole = { - key: "", - name: "", - description: "", - routes: [] -}; - -export default { - data() { - return { - role: Object.assign({}, defaultRole), - routes: [], - rolesList: [], - dialogVisible: false, - dialogType: "new", - checkStrictly: false, - defaultProps: { - children: "children", - label: "title" - } - }; - }, - computed: { - routesData() { - return this.routes; - } - }, - created() { - // Mock: get all routes and roles list from server - this.getRoutes(); - this.getRoles(); - }, - methods: { - async getRoutes() { - const res = await getRoutes(); - this.serviceRoutes = res.data; - this.routes = this.generateRoutes(res.data); - }, - async getRoles() { - const res = await getRoles(); - this.rolesList = res.data; - }, - - // Reshape the routes structure so that it looks the same as the sidebar - generateRoutes(routes, basePath = "/") { - const res = []; - - for (let route of routes) { - // skip some route - if (route.hidden) { - continue; - } - - const onlyOneShowingChild = this.onlyOneShowingChild( - route.children, - route - ); - - if (route.children && onlyOneShowingChild && !route.alwaysShow) { - route = onlyOneShowingChild; - } - - const data = { - path: path.resolve(basePath, route.path), - title: route.meta && route.meta.title - }; - - // recursive child routes - if (route.children) { - data.children = this.generateRoutes(route.children, data.path); - } - res.push(data); - } - return res; - }, - generateArr(routes) { - let data = []; - routes.forEach(route => { - data.push(route); - if (route.children) { - const temp = this.generateArr(route.children); - if (temp.length > 0) { - data = [...data, ...temp]; - } - } - }); - return data; - }, - handleAddRole() { - this.role = Object.assign({}, defaultRole); - if (this.$refs.tree) { - this.$refs.tree.setCheckedNodes([]); - } - this.dialogType = "new"; - this.dialogVisible = true; - }, - handleEdit(scope) { - this.dialogType = "edit"; - this.dialogVisible = true; - this.checkStrictly = true; - this.role = deepClone(scope.row); - this.$nextTick(() => { - const routes = this.generateRoutes(this.role.routes); - this.$refs.tree.setCheckedNodes(this.generateArr(routes)); - // set checked state of a node not affects its father and child nodes - this.checkStrictly = false; - }); - }, - handleDelete({ $index, row }) { - this.$confirm("Confirm to remove the role?", "Warning", { - confirmButtonText: "Confirm", - cancelButtonText: "Cancel", - type: "warning" - }) - .then(async () => { - await deleteRole(row.key); - this.rolesList.splice($index, 1); - this.$message({ - type: "success", - message: "Delete succed!" - }); - }) - .catch(err => { - console.error(err); - }); - }, - generateTree(routes, basePath = "/", checkedKeys) { - const res = []; - - for (const route of routes) { - const routePath = path.resolve(basePath, route.path); - - // recursive child routes - if (route.children) { - route.children = this.generateTree( - route.children, - routePath, - checkedKeys - ); - } - - if ( - checkedKeys.includes(routePath) || - (route.children && route.children.length >= 1) - ) { - res.push(route); - } - } - return res; - }, - async confirmRole() { - const isEdit = this.dialogType === "edit"; - - const checkedKeys = this.$refs.tree.getCheckedKeys(); - this.role.routes = this.generateTree( - deepClone(this.serviceRoutes), - "/", - checkedKeys - ); - - if (isEdit) { - await updateRole(this.role.key, this.role); - for (let index = 0; index < this.rolesList.length; index++) { - if (this.rolesList[index].key === this.role.key) { - this.rolesList.splice(index, 1, Object.assign({}, this.role)); - break; - } - } - } else { - const { data } = await addRole(this.role); - this.role.key = data.key; - this.rolesList.push(this.role); - } - - const { description, key, name } = this.role; - this.dialogVisible = false; - this.$notify({ - title: "Success", - dangerouslyUseHTMLString: true, - message: ` - <div>Role Key: ${key}</div> - <div>Role Name: ${name}</div> - <div>Description: ${description}</div> - `, - type: "success" - }); - }, - // reference: src/view/layout/components/Sidebar/SidebarItem.vue - onlyOneShowingChild(children = [], parent) { - let onlyOneChild = null; - const showingChildren = children.filter(item => !item.hidden); - - // When there is only one child route, the child route is displayed by default - if (showingChildren.length === 1) { - onlyOneChild = showingChildren[0]; - onlyOneChild.path = path.resolve(parent.path, onlyOneChild.path); - return onlyOneChild; - } - - // Show parent if there are no child route to display - if (showingChildren.length === 0) { - onlyOneChild = { ...parent, path: "", noShowingChildren: true }; - return onlyOneChild; - } - - return false; - } - } -}; -</script> - -<style lang="scss" scoped> -.app-container { - .roles-table { - margin-top: 30px; - } - .permission-tree { - margin-bottom: 30px; - } -} -</style> diff --git a/WebSite/src/views/profile/components/Account.vue b/WebSite/src/views/profile/components/Account.vue deleted file mode 100644 index 77a7b2b773cafbb51211be6a28e9b35e975f69a9..0000000000000000000000000000000000000000 --- a/WebSite/src/views/profile/components/Account.vue +++ /dev/null @@ -1,38 +0,0 @@ -<template> - <el-form> - <el-form-item label="Name"> - <el-input v-model.trim="user.name" /> - </el-form-item> - <el-form-item label="Email"> - <el-input v-model.trim="user.email" /> - </el-form-item> - <el-form-item> - <el-button type="primary" @click="submit">Update</el-button> - </el-form-item> - </el-form> -</template> - -<script> -export default { - props: { - user: { - type: Object, - default: () => { - return { - name: "", - email: "" - }; - } - } - }, - methods: { - submit() { - this.$message({ - message: "User information has been updated successfully", - type: "success", - duration: 5 * 1000 - }); - } - } -}; -</script> diff --git a/WebSite/src/views/profile/components/Activity.vue b/WebSite/src/views/profile/components/Activity.vue deleted file mode 100644 index 679ae25c2845a93aaea9bf6603793e718f3d024d..0000000000000000000000000000000000000000 --- a/WebSite/src/views/profile/components/Activity.vue +++ /dev/null @@ -1,202 +0,0 @@ -<template> - <div class="user-activity"> - <div class="post"> - <div class="user-block"> - <img - class="img-circle" - :src=" - 'https://wpimg.wallstcn.com/57ed425a-c71e-4201-9428-68760c0537c4.jpg' + - avatarPrefix - " - /> - <span class="username text-muted">Iron Man</span> - <span class="description">Shared publicly - 7:30 PM today</span> - </div> - <p> - Lorem ipsum represents a long-held tradition for designers, typographers - and the like. Some people hate it and argue for its demise, but others - ignore the hate as they create awesome tools to help create filler text - for everyone from bacon lovers to Charlie Sheen fans. - </p> - <ul class="list-inline"> - <li> - <span class="link-black text-sm"> - <i class="el-icon-share" /> - Share - </span> - </li> - <li> - <span class="link-black text-sm"> - <svg-icon icon-class="like" /> - Like - </span> - </li> - </ul> - </div> - <div class="post"> - <div class="user-block"> - <img - class="img-circle" - :src=" - 'https://wpimg.wallstcn.com/9e2a5d0a-bd5b-457f-ac8e-86554616c87b.jpg' + - avatarPrefix - " - /> - <span class="username text-muted">Captain American</span> - <span class="description">Sent you a message - yesterday</span> - </div> - <p> - Lorem ipsum represents a long-held tradition for designers, typographers - and the like. Some people hate it and argue for its demise, but others - ignore the hate as they create awesome tools to help create filler text - for everyone from bacon lovers to Charlie Sheen fans. - </p> - <ul class="list-inline"> - <li> - <span class="link-black text-sm"> - <i class="el-icon-share" /> - Share - </span> - </li> - <li> - <span class="link-black text-sm"> - <svg-icon icon-class="like" /> - Like - </span> - </li> - </ul> - </div> - <div class="post"> - <div class="user-block"> - <img - class="img-circle" - :src=" - 'https://wpimg.wallstcn.com/fb57f689-e1ab-443c-af12-8d4066e202e2.jpg' + - avatarPrefix - " - /> - <span class="username">Spider Man</span> - <span class="description">Posted 4 photos - 2 days ago</span> - </div> - <div class="user-images"> - <el-carousel :interval="6000" type="card" height="220px"> - <el-carousel-item v-for="item in carouselImages" :key="item"> - <img :src="item + carouselPrefix" class="image" /> - </el-carousel-item> - </el-carousel> - </div> - <ul class="list-inline"> - <li> - <span class="link-black text-sm" - ><i class="el-icon-share" /> Share</span - > - </li> - <li> - <span class="link-black text-sm"> - <svg-icon icon-class="like" /> Like</span - > - </li> - </ul> - </div> - </div> -</template> - -<script> -const avatarPrefix = "?imageView2/1/w/80/h/80"; -const carouselPrefix = "?imageView2/2/h/440"; - -export default { - data() { - return { - carouselImages: [ - "https://wpimg.wallstcn.com/9679ffb0-9e0b-4451-9916-e21992218054.jpg", - "https://wpimg.wallstcn.com/bcce3734-0837-4b9f-9261-351ef384f75a.jpg", - "https://wpimg.wallstcn.com/d1d7b033-d75e-4cd6-ae39-fcd5f1c0a7c5.jpg", - "https://wpimg.wallstcn.com/50530061-851b-4ca5-9dc5-2fead928a939.jpg" - ], - avatarPrefix, - carouselPrefix - }; - } -}; -</script> - -<style lang="scss" scoped> -.user-activity { - .user-block { - .username, - .description { - display: block; - margin-left: 50px; - padding: 2px 0; - } - - .username { - font-size: 16px; - color: #000; - } - - :after { - clear: both; - } - - .img-circle { - border-radius: 50%; - width: 40px; - height: 40px; - float: left; - } - - span { - font-weight: 500; - font-size: 12px; - } - } - - .post { - font-size: 14px; - border-bottom: 1px solid #d2d6de; - margin-bottom: 15px; - padding-bottom: 15px; - color: #666; - - .image { - width: 100%; - height: 100%; - } - - .user-images { - padding-top: 20px; - } - } - - .list-inline { - padding-left: 0; - margin-left: -5px; - list-style: none; - - li { - display: inline-block; - padding-right: 5px; - padding-left: 5px; - font-size: 13px; - } - - .link-black { - &:hover, - &:focus { - color: #999; - } - } - } -} - -.box-center { - margin: 0 auto; - display: table; -} - -.text-muted { - color: #777; -} -</style> diff --git a/WebSite/src/views/profile/components/Timeline.vue b/WebSite/src/views/profile/components/Timeline.vue deleted file mode 100644 index b3c2b5df4ee98ba90be942b08a7f76f7728b588d..0000000000000000000000000000000000000000 --- a/WebSite/src/views/profile/components/Timeline.vue +++ /dev/null @@ -1,48 +0,0 @@ -<template> - <div class="block"> - <el-timeline> - <el-timeline-item - v-for="(item, index) of timeline" - :key="index" - :timestamp="item.timestamp" - placement="top" - > - <el-card> - <h4>{{ item.title }}</h4> - <p>{{ item.content }}</p> - </el-card> - </el-timeline-item> - </el-timeline> - </div> -</template> - -<script> -export default { - data() { - return { - timeline: [ - { - timestamp: "2019/4/20", - title: "Update Github template", - content: "PanJiaChen committed 2019/4/20 20:46" - }, - { - timestamp: "2019/4/21", - title: "Update Github template", - content: "PanJiaChen committed 2019/4/21 20:46" - }, - { - timestamp: "2019/4/22", - title: "Build Template", - content: "PanJiaChen committed 2019/4/22 20:46" - }, - { - timestamp: "2019/4/23", - title: "Release New Version", - content: "PanJiaChen committed 2019/4/23 20:46" - } - ] - }; - } -}; -</script> diff --git a/WebSite/src/views/profile/components/UserCard.vue b/WebSite/src/views/profile/components/UserCard.vue deleted file mode 100644 index 49055882a6d29f6ca66bf36b4a179a277d29e0af..0000000000000000000000000000000000000000 --- a/WebSite/src/views/profile/components/UserCard.vue +++ /dev/null @@ -1,145 +0,0 @@ -<template> - <el-card style="margin-bottom:20px;"> - <div slot="header" class="clearfix"> - <span>About me</span> - </div> - - <div class="user-profile"> - <div class="box-center"> - <pan-thumb - :image="user.avatar" - :height="'100px'" - :width="'100px'" - :hoverable="false" - > - <div>Hello</div> - {{ user.role }} - </pan-thumb> - </div> - <div class="box-center"> - <div class="user-name text-center">{{ user.name }}</div> - <div class="user-role text-center text-muted"> - {{ user.role | uppercaseFirst }} - </div> - </div> - </div> - - <div class="user-bio"> - <div class="user-education user-bio-section"> - <div class="user-bio-section-header"> - <svg-icon icon-class="education" /><span>Education</span> - </div> - <div class="user-bio-section-body"> - <div class="text-muted"> - JS in Computer Science from the University of Technology - </div> - </div> - </div> - - <div class="user-skills user-bio-section"> - <div class="user-bio-section-header"> - <svg-icon icon-class="skill" /><span>Skills</span> - </div> - <div class="user-bio-section-body"> - <div class="progress-item"> - <span>Vue</span> - <el-progress :percentage="70" /> - </div> - <div class="progress-item"> - <span>JavaScript</span> - <el-progress :percentage="18" /> - </div> - <div class="progress-item"> - <span>Css</span> - <el-progress :percentage="12" /> - </div> - <div class="progress-item"> - <span>ESLint</span> - <el-progress :percentage="100" status="success" /> - </div> - </div> - </div> - </div> - </el-card> -</template> - -<script> -import PanThumb from "@/components/PanThumb"; - -export default { - components: { PanThumb }, - props: { - user: { - type: Object, - default: () => { - return { - name: "", - email: "", - avatar: "", - roles: "" - }; - } - } - } -}; -</script> - -<style lang="scss" scoped> -.box-center { - margin: 0 auto; - display: table; -} - -.text-muted { - color: #777; -} - -.user-profile { - .user-name { - font-weight: bold; - } - - .box-center { - padding-top: 10px; - } - - .user-role { - padding-top: 10px; - font-weight: 400; - font-size: 14px; - } - - .box-social { - padding-top: 30px; - - .el-table { - border-top: 1px solid #dfe6ec; - } - } - - .user-follow { - padding-top: 20px; - } -} - -.user-bio { - margin-top: 20px; - color: #606266; - - span { - padding-left: 4px; - } - - .user-bio-section { - font-size: 14px; - padding: 15px 0; - - .user-bio-section-header { - border-bottom: 1px solid #dfe6ec; - padding-bottom: 10px; - margin-bottom: 10px; - font-weight: bold; - } - } -} -</style> diff --git a/WebSite/src/views/profile/index.vue b/WebSite/src/views/profile/index.vue deleted file mode 100644 index 326985f8495c9180475dc3065b169c6a91fa5f12..0000000000000000000000000000000000000000 --- a/WebSite/src/views/profile/index.vue +++ /dev/null @@ -1,62 +0,0 @@ -<template> - <div class="app-container"> - <div v-if="user"> - <el-row :gutter="20"> - <el-col :span="6" :xs="24"> - <user-card :user="user" /> - </el-col> - - <el-col :span="18" :xs="24"> - <el-card> - <el-tabs v-model="activeTab"> - <el-tab-pane label="Activity" name="activity"> - <activity /> - </el-tab-pane> - <el-tab-pane label="Timeline" name="timeline"> - <timeline /> - </el-tab-pane> - <el-tab-pane label="Account" name="account"> - <account :user="user" /> - </el-tab-pane> - </el-tabs> - </el-card> - </el-col> - </el-row> - </div> - </div> -</template> - -<script> -import { mapGetters } from "vuex"; -import UserCard from "./components/UserCard"; -import Activity from "./components/Activity"; -import Timeline from "./components/Timeline"; -import Account from "./components/Account"; - -export default { - name: "Profile", - components: { UserCard, Activity, Timeline, Account }, - data() { - return { - user: {}, - activeTab: "activity" - }; - }, - computed: { - ...mapGetters(["name", "avatar", "roles"]) - }, - created() { - this.getUser(); - }, - methods: { - getUser() { - this.user = { - name: this.name, - role: this.roles.join(" | "), - email: "admin@test.com", - avatar: this.avatar - }; - } - } -}; -</script> diff --git a/WebSite/src/views/qiniu/upload.vue b/WebSite/src/views/qiniu/upload.vue deleted file mode 100644 index 8b195c880f865c50c0fa7eb74f158bb573b117de..0000000000000000000000000000000000000000 --- a/WebSite/src/views/qiniu/upload.vue +++ /dev/null @@ -1,47 +0,0 @@ -<template> - <el-upload - :data="dataObj" - :multiple="true" - :before-upload="beforeUpload" - action="https://upload.qbox.me" - drag - > - <i class="el-icon-upload" /> - <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div> - </el-upload> -</template> - -<script> -import { getToken } from "@/api/qiniu"; -// 鑾峰彇涓冪墰token 鍚庣閫氳繃Access Key,Secret Key,bucket绛夌敓鎴恡oken -// 涓冪墰瀹樻柟sdk https://developer.qiniu.com/sdk#official-sdk - -export default { - data() { - return { - dataObj: { token: "", key: "" }, - image_uri: [], - fileList: [] - }; - }, - methods: { - beforeUpload() { - const _self = this; - return new Promise((resolve, reject) => { - getToken() - .then(response => { - const key = response.data.qiniu_key; - const token = response.data.qiniu_token; - _self._data.dataObj.token = token; - _self._data.dataObj.key = key; - resolve(true); - }) - .catch(err => { - console.log(err); - reject(false); - }); - }); - } - } -}; -</script> diff --git a/WebSite/src/views/redirect/index.vue b/WebSite/src/views/redirect/index.vue deleted file mode 100644 index 9357ce21b973df1cc59b3c1b56afd15894001cd0..0000000000000000000000000000000000000000 --- a/WebSite/src/views/redirect/index.vue +++ /dev/null @@ -1,12 +0,0 @@ -<script> -export default { - created() { - const { params, query } = this.$route; - const { path } = params; - this.$router.replace({ path: "/" + path, query }); - }, - render: function(h) { - return h(); // avoid warning message - } -}; -</script> diff --git a/WebSite/src/views/tab/components/TabPane.vue b/WebSite/src/views/tab/components/TabPane.vue deleted file mode 100644 index 1d61e65d6284d1d5b0b2f629374d2bab67b6f706..0000000000000000000000000000000000000000 --- a/WebSite/src/views/tab/components/TabPane.vue +++ /dev/null @@ -1,108 +0,0 @@ -<template> - <el-table :data="list" border fit highlight-current-row style="width: 100%"> - <el-table-column - v-loading="loading" - align="center" - label="ID" - width="65" - element-loading-text="璇风粰鎴戠偣鏃堕棿锛�" - > - <template slot-scope="scope"> - <span>{{ scope.row.id }}</span> - </template> - </el-table-column> - - <el-table-column width="180px" align="center" label="Date"> - <template slot-scope="scope"> - <span>{{ - scope.row.timestamp | parseTime("{y}-{m}-{d} {h}:{i}") - }}</span> - </template> - </el-table-column> - - <el-table-column min-width="300px" label="Title"> - <template slot-scope="{ row }"> - <span>{{ row.title }}</span> - <el-tag>{{ row.type }}</el-tag> - </template> - </el-table-column> - - <el-table-column width="110px" align="center" label="Author"> - <template slot-scope="scope"> - <span>{{ scope.row.author }}</span> - </template> - </el-table-column> - - <el-table-column width="120px" label="Importance"> - <template slot-scope="scope"> - <svg-icon - v-for="n in +scope.row.importance" - :key="n" - icon-class="star" - /> - </template> - </el-table-column> - - <el-table-column align="center" label="Readings" width="95"> - <template slot-scope="scope"> - <span>{{ scope.row.pageviews }}</span> - </template> - </el-table-column> - - <el-table-column class-name="status-col" label="Status" width="110"> - <template slot-scope="{ row }"> - <el-tag :type="row.status | statusFilter"> - {{ row.status }} - </el-tag> - </template> - </el-table-column> - </el-table> -</template> - -<script> -import { fetchList } from "@/api/article"; - -export default { - filters: { - statusFilter(status) { - const statusMap = { - published: "success", - draft: "info", - deleted: "danger" - }; - return statusMap[status]; - } - }, - props: { - type: { - type: String, - default: "CN" - } - }, - data() { - return { - list: null, - listQuery: { - page: 1, - limit: 5, - type: this.type, - sort: "+id" - }, - loading: false - }; - }, - created() { - this.getList(); - }, - methods: { - getList() { - this.loading = true; - this.$emit("create"); // for test - fetchList(this.listQuery).then(response => { - this.list = response.data.items; - this.loading = false; - }); - } - } -}; -</script> diff --git a/WebSite/src/views/tab/index.vue b/WebSite/src/views/tab/index.vue deleted file mode 100644 index 7857ab4b018d0b439f4e7bbb9990b3b1f05234a6..0000000000000000000000000000000000000000 --- a/WebSite/src/views/tab/index.vue +++ /dev/null @@ -1,71 +0,0 @@ -<template> - <div class="tab-container"> - <el-tag>mounted times 锛歿{ createdTimes }}</el-tag> - <el-alert - :closable="false" - style="width:200px;display:inline-block;vertical-align: middle;margin-left:30px;" - title="Tab with keep-alive" - type="success" - /> - <el-tabs v-model="activeName" style="margin-top:15px;" type="border-card"> - <el-tab-pane - v-for="item in tabMapOptions" - :key="item.key" - :label="item.label" - :name="item.key" - > - <keep-alive> - <tab-pane - v-if="activeName == item.key" - :type="item.key" - @create="showCreatedTimes" - /> - </keep-alive> - </el-tab-pane> - </el-tabs> - </div> -</template> - -<script> -import tabPane from "./components/TabPane"; - -export default { - name: "Tab", - components: { tabPane }, - data() { - return { - tabMapOptions: [ - { label: "China", key: "CN" }, - { label: "USA", key: "US" }, - { label: "Japan", key: "JP" }, - { label: "Eurozone", key: "EU" } - ], - activeName: "CN", - createdTimes: 0 - }; - }, - watch: { - activeName(val) { - this.$router.push(`${this.$route.path}?tab=${val}`); - } - }, - created() { - // init the default selected tab - const tab = this.$route.query.tab; - if (tab) { - this.activeName = tab; - } - }, - methods: { - showCreatedTimes() { - this.createdTimes = this.createdTimes + 1; - } - } -}; -</script> - -<style scoped> -.tab-container { - margin: 30px; -} -</style> diff --git a/WebSite/src/views/table/complex-table.vue b/WebSite/src/views/table/complex-table.vue deleted file mode 100644 index 3d4cf900fd3237a14e787ce3f33a00cf2a5cb9d2..0000000000000000000000000000000000000000 --- a/WebSite/src/views/table/complex-table.vue +++ /dev/null @@ -1,567 +0,0 @@ -<template> - <div class="app-container"> - <div class="filter-container"> - <el-input - v-model="listQuery.title" - placeholder="Title" - style="width: 200px;" - class="filter-item" - @keyup.enter.native="handleFilter" - /> - <el-select - v-model="listQuery.importance" - placeholder="Imp" - clearable - style="width: 90px" - class="filter-item" - > - <el-option - v-for="item in importanceOptions" - :key="item" - :label="item" - :value="item" - /> - </el-select> - <el-select - v-model="listQuery.type" - placeholder="Type" - clearable - class="filter-item" - style="width: 130px" - > - <el-option - v-for="item in calendarTypeOptions" - :key="item.key" - :label="item.display_name + '(' + item.key + ')'" - :value="item.key" - /> - </el-select> - <el-select - v-model="listQuery.sort" - style="width: 140px" - class="filter-item" - @change="handleFilter" - > - <el-option - v-for="item in sortOptions" - :key="item.key" - :label="item.label" - :value="item.key" - /> - </el-select> - <el-button - v-waves - class="filter-item" - type="primary" - icon="el-icon-search" - @click="handleFilter" - > - Search - </el-button> - <el-button - class="filter-item" - style="margin-left: 10px;" - type="primary" - icon="el-icon-edit" - @click="handleCreate" - > - Add - </el-button> - <el-button - v-waves - :loading="downloadLoading" - class="filter-item" - type="primary" - icon="el-icon-download" - @click="handleDownload" - > - Export - </el-button> - <el-checkbox - v-model="showReviewer" - class="filter-item" - style="margin-left:15px;" - @change="tableKey = tableKey + 1" - > - reviewer - </el-checkbox> - </div> - - <el-table - :key="tableKey" - v-loading="listLoading" - :data="list" - border - fit - highlight-current-row - style="width: 100%;" - @sort-change="sortChange" - > - <el-table-column - label="ID" - prop="id" - sortable="custom" - align="center" - width="80" - :class-name="getSortClass('id')" - > - <template slot-scope="{ row }"> - <span>{{ row.id }}</span> - </template> - </el-table-column> - <el-table-column label="Date" width="150px" align="center"> - <template slot-scope="{ row }"> - <span>{{ row.timestamp | parseTime("{y}-{m}-{d} {h}:{i}") }}</span> - </template> - </el-table-column> - <el-table-column label="Title" min-width="150px"> - <template slot-scope="{ row }"> - <span class="link-type" @click="handleUpdate(row)">{{ - row.title - }}</span> - <el-tag>{{ row.type | typeFilter }}</el-tag> - </template> - </el-table-column> - <el-table-column label="Author" width="110px" align="center"> - <template slot-scope="{ row }"> - <span>{{ row.author }}</span> - </template> - </el-table-column> - <el-table-column - v-if="showReviewer" - label="Reviewer" - width="110px" - align="center" - > - <template slot-scope="{ row }"> - <span style="color:red;">{{ row.reviewer }}</span> - </template> - </el-table-column> - <el-table-column label="Imp" width="80px"> - <template slot-scope="{ row }"> - <svg-icon - v-for="n in +row.importance" - :key="n" - icon-class="star" - class="meta-item__icon" - /> - </template> - </el-table-column> - <el-table-column label="Readings" align="center" width="95"> - <template slot-scope="{ row }"> - <span - v-if="row.pageviews" - class="link-type" - @click="handleFetchPv(row.pageviews)" - >{{ row.pageviews }}</span - > - <span v-else>0</span> - </template> - </el-table-column> - <el-table-column label="Status" class-name="status-col" width="100"> - <template slot-scope="{ row }"> - <el-tag :type="row.status | statusFilter"> - {{ row.status }} - </el-tag> - </template> - </el-table-column> - <el-table-column - label="Actions" - align="center" - width="230" - class-name="small-padding fixed-width" - > - <template slot-scope="{ row, $index }"> - <el-button type="primary" size="mini" @click="handleUpdate(row)"> - Edit - </el-button> - <el-button - v-if="row.status != 'published'" - size="mini" - type="success" - @click="handleModifyStatus(row, 'published')" - > - Publish - </el-button> - <el-button - v-if="row.status != 'draft'" - size="mini" - @click="handleModifyStatus(row, 'draft')" - > - Draft - </el-button> - <el-button - v-if="row.status != 'deleted'" - size="mini" - type="danger" - @click="handleDelete(row, $index)" - > - Delete - </el-button> - </template> - </el-table-column> - </el-table> - - <pagination - v-show="total > 0" - :total="total" - :page.sync="listQuery.page" - :limit.sync="listQuery.limit" - @pagination="getList" - /> - - <el-dialog :title="textMap[dialogStatus]" :visible.sync="dialogFormVisible"> - <el-form - ref="dataForm" - :rules="rules" - :model="temp" - label-position="left" - label-width="70px" - style="width: 400px; margin-left:50px;" - > - <el-form-item label="Type" prop="type"> - <el-select - v-model="temp.type" - class="filter-item" - placeholder="Please select" - > - <el-option - v-for="item in calendarTypeOptions" - :key="item.key" - :label="item.display_name" - :value="item.key" - /> - </el-select> - </el-form-item> - <el-form-item label="Date" prop="timestamp"> - <el-date-picker - v-model="temp.timestamp" - type="datetime" - placeholder="Please pick a date" - /> - </el-form-item> - <el-form-item label="Title" prop="title"> - <el-input v-model="temp.title" /> - </el-form-item> - <el-form-item label="Status"> - <el-select - v-model="temp.status" - class="filter-item" - placeholder="Please select" - > - <el-option - v-for="item in statusOptions" - :key="item" - :label="item" - :value="item" - /> - </el-select> - </el-form-item> - <el-form-item label="Imp"> - <el-rate - v-model="temp.importance" - :colors="['#99A9BF', '#F7BA2A', '#FF9900']" - :max="3" - style="margin-top:8px;" - /> - </el-form-item> - <el-form-item label="Remark"> - <el-input - v-model="temp.remark" - :autosize="{ minRows: 2, maxRows: 4 }" - type="textarea" - placeholder="Please input" - /> - </el-form-item> - </el-form> - <div slot="footer" class="dialog-footer"> - <el-button @click="dialogFormVisible = false"> - Cancel - </el-button> - <el-button - type="primary" - @click="dialogStatus === 'create' ? createData() : updateData()" - > - Confirm - </el-button> - </div> - </el-dialog> - - <el-dialog :visible.sync="dialogPvVisible" title="Reading statistics"> - <el-table - :data="pvData" - border - fit - highlight-current-row - style="width: 100%" - > - <el-table-column prop="key" label="Channel" /> - <el-table-column prop="pv" label="Pv" /> - </el-table> - <span slot="footer" class="dialog-footer"> - <el-button type="primary" @click="dialogPvVisible = false" - >Confirm</el-button - > - </span> - </el-dialog> - </div> -</template> - -<script> -import { - fetchList, - fetchPv, - createArticle, - updateArticle -} from "@/api/article"; -import waves from "@/directive/waves"; // waves directive -import { parseTime } from "@/utils"; -import Pagination from "@/components/Pagination"; // secondary package based on el-pagination - -const calendarTypeOptions = [ - { key: "CN", display_name: "China" }, - { key: "US", display_name: "USA" }, - { key: "JP", display_name: "Japan" }, - { key: "EU", display_name: "Eurozone" } -]; - -// arr to obj, such as { CN : "China", US : "USA" } -const calendarTypeKeyValue = calendarTypeOptions.reduce((acc, cur) => { - acc[cur.key] = cur.display_name; - return acc; -}, {}); - -export default { - name: "ComplexTable", - components: { Pagination }, - directives: { waves }, - filters: { - statusFilter(status) { - const statusMap = { - published: "success", - draft: "info", - deleted: "danger" - }; - return statusMap[status]; - }, - typeFilter(type) { - return calendarTypeKeyValue[type]; - } - }, - data() { - return { - tableKey: 0, - list: null, - total: 0, - listLoading: true, - listQuery: { - page: 1, - limit: 20, - importance: undefined, - title: undefined, - type: undefined, - sort: "+id" - }, - importanceOptions: [1, 2, 3], - calendarTypeOptions, - sortOptions: [ - { label: "ID Ascending", key: "+id" }, - { label: "ID Descending", key: "-id" } - ], - statusOptions: ["published", "draft", "deleted"], - showReviewer: false, - temp: { - id: undefined, - importance: 1, - remark: "", - timestamp: new Date(), - title: "", - type: "", - status: "published" - }, - dialogFormVisible: false, - dialogStatus: "", - textMap: { - update: "Edit", - create: "Create" - }, - dialogPvVisible: false, - pvData: [], - rules: { - type: [ - { required: true, message: "type is required", trigger: "change" } - ], - timestamp: [ - { - type: "date", - required: true, - message: "timestamp is required", - trigger: "change" - } - ], - title: [ - { required: true, message: "title is required", trigger: "blur" } - ] - }, - downloadLoading: false - }; - }, - created() { - this.getList(); - }, - methods: { - getList() { - this.listLoading = true; - fetchList(this.listQuery).then(response => { - this.list = response.data.items; - this.total = response.data.total; - - // Just to simulate the time of the request - setTimeout(() => { - this.listLoading = false; - }, 1.5 * 1000); - }); - }, - handleFilter() { - this.listQuery.page = 1; - this.getList(); - }, - handleModifyStatus(row, status) { - this.$message({ - message: "鎿嶄綔Success", - type: "success" - }); - row.status = status; - }, - sortChange(data) { - const { prop, order } = data; - if (prop === "id") { - this.sortByID(order); - } - }, - sortByID(order) { - if (order === "ascending") { - this.listQuery.sort = "+id"; - } else { - this.listQuery.sort = "-id"; - } - this.handleFilter(); - }, - resetTemp() { - this.temp = { - id: undefined, - importance: 1, - remark: "", - timestamp: new Date(), - title: "", - status: "published", - type: "" - }; - }, - handleCreate() { - this.resetTemp(); - this.dialogStatus = "create"; - this.dialogFormVisible = true; - this.$nextTick(() => { - this.$refs["dataForm"].clearValidate(); - }); - }, - createData() { - this.$refs["dataForm"].validate(valid => { - if (valid) { - this.temp.id = parseInt(Math.random() * 100) + 1024; // mock a id - this.temp.author = "vue-element-admin"; - createArticle(this.temp).then(() => { - this.list.unshift(this.temp); - this.dialogFormVisible = false; - this.$notify({ - title: "Success", - message: "Created Successfully", - type: "success", - duration: 2000 - }); - }); - } - }); - }, - handleUpdate(row) { - this.temp = Object.assign({}, row); // copy obj - this.temp.timestamp = new Date(this.temp.timestamp); - this.dialogStatus = "update"; - this.dialogFormVisible = true; - this.$nextTick(() => { - this.$refs["dataForm"].clearValidate(); - }); - }, - updateData() { - this.$refs["dataForm"].validate(valid => { - if (valid) { - const tempData = Object.assign({}, this.temp); - tempData.timestamp = +new Date(tempData.timestamp); // change Thu Nov 30 2017 16:41:05 GMT+0800 (CST) to 1512031311464 - updateArticle(tempData).then(() => { - const index = this.list.findIndex(v => v.id === this.temp.id); - this.list.splice(index, 1, this.temp); - this.dialogFormVisible = false; - this.$notify({ - title: "Success", - message: "Update Successfully", - type: "success", - duration: 2000 - }); - }); - } - }); - }, - handleDelete(row, index) { - this.$notify({ - title: "Success", - message: "Delete Successfully", - type: "success", - duration: 2000 - }); - this.list.splice(index, 1); - }, - handleFetchPv(pv) { - fetchPv(pv).then(response => { - this.pvData = response.data.pvData; - this.dialogPvVisible = true; - }); - }, - handleDownload() { - this.downloadLoading = true; - import("@/vendor/Export2Excel").then(excel => { - const tHeader = ["timestamp", "title", "type", "importance", "status"]; - const filterVal = [ - "timestamp", - "title", - "type", - "importance", - "status" - ]; - const data = this.formatJson(filterVal); - excel.export_json_to_excel({ - header: tHeader, - data, - filename: "table-list" - }); - this.downloadLoading = false; - }); - }, - formatJson(filterVal) { - return this.list.map(v => - filterVal.map(j => { - if (j === "timestamp") { - return parseTime(v[j]); - } else { - return v[j]; - } - }) - ); - }, - getSortClass: function(key) { - const sort = this.listQuery.sort; - return sort === `+${key}` ? "ascending" : "descending"; - } - } -}; -</script> diff --git a/WebSite/src/views/table/drag-table.vue b/WebSite/src/views/table/drag-table.vue deleted file mode 100644 index 7800568049a2c5ada0f1d803c429de222a12caf2..0000000000000000000000000000000000000000 --- a/WebSite/src/views/table/drag-table.vue +++ /dev/null @@ -1,167 +0,0 @@ -<template> - <div class="app-container"> - <!-- Note that row-key is necessary to get a correct row order. --> - <el-table - ref="dragTable" - v-loading="listLoading" - :data="list" - row-key="id" - border - fit - highlight-current-row - style="width: 100%" - > - <el-table-column align="center" label="ID" width="65"> - <template slot-scope="{ row }"> - <span>{{ row.id }}</span> - </template> - </el-table-column> - - <el-table-column width="180px" align="center" label="Date"> - <template slot-scope="{ row }"> - <span>{{ row.timestamp | parseTime("{y}-{m}-{d} {h}:{i}") }}</span> - </template> - </el-table-column> - - <el-table-column min-width="300px" label="Title"> - <template slot-scope="{ row }"> - <span>{{ row.title }}</span> - </template> - </el-table-column> - - <el-table-column width="110px" align="center" label="Author"> - <template slot-scope="{ row }"> - <span>{{ row.author }}</span> - </template> - </el-table-column> - - <el-table-column width="100px" label="Importance"> - <template slot-scope="{ row }"> - <svg-icon - v-for="n in +row.importance" - :key="n" - icon-class="star" - class="icon-star" - /> - </template> - </el-table-column> - - <el-table-column align="center" label="Readings" width="95"> - <template slot-scope="{ row }"> - <span>{{ row.pageviews }}</span> - </template> - </el-table-column> - - <el-table-column class-name="status-col" label="Status" width="110"> - <template slot-scope="{ row }"> - <el-tag :type="row.status | statusFilter"> - {{ row.status }} - </el-tag> - </template> - </el-table-column> - - <el-table-column align="center" label="Drag" width="80"> - <template slot-scope="{}"> - <svg-icon class="drag-handler" icon-class="drag" /> - </template> - </el-table-column> - </el-table> - <div class="show-d"><el-tag>The default order :</el-tag> {{ oldList }}</div> - <div class="show-d"> - <el-tag>The after dragging order :</el-tag> {{ newList }} - </div> - </div> -</template> - -<script> -import { fetchList } from "@/api/article"; -import Sortable from "sortablejs"; - -export default { - name: "DragTable", - filters: { - statusFilter(status) { - const statusMap = { - published: "success", - draft: "info", - deleted: "danger" - }; - return statusMap[status]; - } - }, - data() { - return { - list: null, - total: null, - listLoading: true, - listQuery: { - page: 1, - limit: 10 - }, - sortable: null, - oldList: [], - newList: [] - }; - }, - created() { - this.getList(); - }, - methods: { - async getList() { - this.listLoading = true; - const { data } = await fetchList(this.listQuery); - this.list = data.items; - this.total = data.total; - this.listLoading = false; - this.oldList = this.list.map(v => v.id); - this.newList = this.oldList.slice(); - this.$nextTick(() => { - this.setSort(); - }); - }, - setSort() { - const el = this.$refs.dragTable.$el.querySelectorAll( - ".el-table__body-wrapper > table > tbody" - )[0]; - this.sortable = Sortable.create(el, { - ghostClass: "sortable-ghost", // Class name for the drop placeholder, - setData: function(dataTransfer) { - // to avoid Firefox bug - // Detail see : https://github.com/RubaXa/Sortable/issues/1012 - dataTransfer.setData("Text", ""); - }, - onEnd: evt => { - const targetRow = this.list.splice(evt.oldIndex, 1)[0]; - this.list.splice(evt.newIndex, 0, targetRow); - - // for show the changes, you can delete in you code - const tempIndex = this.newList.splice(evt.oldIndex, 1)[0]; - this.newList.splice(evt.newIndex, 0, tempIndex); - } - }); - } - } -}; -</script> - -<style> -.sortable-ghost { - opacity: 0.8; - color: #fff !important; - background: #42b983 !important; -} -</style> - -<style scoped> -.icon-star { - margin-right: 2px; -} -.drag-handler { - width: 20px; - height: 20px; - cursor: pointer; -} -.show-d { - margin-top: 15px; -} -</style> diff --git a/WebSite/src/views/table/dynamic-table/components/FixedThead.vue b/WebSite/src/views/table/dynamic-table/components/FixedThead.vue deleted file mode 100644 index 1bfa5d5021b317c2878f5d396a46cf339fb3c3e9..0000000000000000000000000000000000000000 --- a/WebSite/src/views/table/dynamic-table/components/FixedThead.vue +++ /dev/null @@ -1,70 +0,0 @@ -<template> - <div class="app-container"> - <div class="filter-container"> - <el-checkbox-group v-model="checkboxVal"> - <el-checkbox label="apple"> - apple - </el-checkbox> - <el-checkbox label="banana"> - banana - </el-checkbox> - <el-checkbox label="orange"> - orange - </el-checkbox> - </el-checkbox-group> - </div> - - <el-table - :key="key" - :data="tableData" - border - fit - highlight-current-row - style="width: 100%" - > - <el-table-column prop="name" label="fruitName" width="180" /> - <el-table-column v-for="fruit in formThead" :key="fruit" :label="fruit"> - <template slot-scope="scope"> - {{ scope.row[fruit] }} - </template> - </el-table-column> - </el-table> - </div> -</template> - -<script> -const defaultFormThead = ["apple", "banana"]; - -export default { - data() { - return { - tableData: [ - { - name: "fruit-1", - apple: "apple-10", - banana: "banana-10", - orange: "orange-10" - }, - { - name: "fruit-2", - apple: "apple-20", - banana: "banana-20", - orange: "orange-20" - } - ], - key: 1, // table key - formTheadOptions: ["apple", "banana", "orange"], - checkboxVal: defaultFormThead, // checkboxVal - formThead: defaultFormThead // 榛樿琛ㄥご Default header - }; - }, - watch: { - checkboxVal(valArr) { - this.formThead = this.formTheadOptions.filter( - i => valArr.indexOf(i) >= 0 - ); - this.key = this.key + 1; // 涓轰簡淇濊瘉table 姣忔閮戒細閲嶆覆 In order to ensure the table will be re-rendered each time - } - } -}; -</script> diff --git a/WebSite/src/views/table/dynamic-table/components/UnfixedThead.vue b/WebSite/src/views/table/dynamic-table/components/UnfixedThead.vue deleted file mode 100644 index 8b28c238c3f76d14890d5ec2a623e077d0e94fd8..0000000000000000000000000000000000000000 --- a/WebSite/src/views/table/dynamic-table/components/UnfixedThead.vue +++ /dev/null @@ -1,56 +0,0 @@ -<template> - <div class="app-container"> - <div class="filter-container"> - <el-checkbox-group v-model="formThead"> - <el-checkbox label="apple"> - apple - </el-checkbox> - <el-checkbox label="banana"> - banana - </el-checkbox> - <el-checkbox label="orange"> - orange - </el-checkbox> - </el-checkbox-group> - </div> - - <el-table - :data="tableData" - border - fit - highlight-current-row - style="width: 100%" - > - <el-table-column prop="name" label="fruitName" width="180" /> - <el-table-column v-for="fruit in formThead" :key="fruit" :label="fruit"> - <template slot-scope="scope"> - {{ scope.row[fruit] }} - </template> - </el-table-column> - </el-table> - </div> -</template> - -<script> -export default { - data() { - return { - tableData: [ - { - name: "fruit-1", - apple: "apple-10", - banana: "banana-10", - orange: "orange-10" - }, - { - name: "fruit-2", - apple: "apple-20", - banana: "banana-20", - orange: "orange-20" - } - ], - formThead: ["apple", "banana"] - }; - } -}; -</script> diff --git a/WebSite/src/views/table/dynamic-table/index.vue b/WebSite/src/views/table/dynamic-table/index.vue deleted file mode 100644 index 503784cb5b85f74adf1100f5ba042e910874a12f..0000000000000000000000000000000000000000 --- a/WebSite/src/views/table/dynamic-table/index.vue +++ /dev/null @@ -1,23 +0,0 @@ -<template> - <div class="app-container"> - <div style="margin:0 0 5px 20px"> - Fixed header, sorted by header order, - </div> - <fixed-thead /> - - <div style="margin:30px 0 5px 20px"> - Not fixed header, sorted by click order - </div> - <unfixed-thead /> - </div> -</template> - -<script> -import FixedThead from "./components/FixedThead"; -import UnfixedThead from "./components/UnfixedThead"; - -export default { - name: "DynamicTable", - components: { FixedThead, UnfixedThead } -}; -</script> diff --git a/WebSite/src/views/table/inline-edit-table.vue b/WebSite/src/views/table/inline-edit-table.vue deleted file mode 100644 index 4b120956e739935b3405c85be820e73a2ea3d5c2..0000000000000000000000000000000000000000 --- a/WebSite/src/views/table/inline-edit-table.vue +++ /dev/null @@ -1,161 +0,0 @@ -<template> - <div class="app-container"> - <el-table - v-loading="listLoading" - :data="list" - border - fit - highlight-current-row - style="width: 100%" - > - <el-table-column align="center" label="ID" width="80"> - <template slot-scope="{ row }"> - <span>{{ row.id }}</span> - </template> - </el-table-column> - - <el-table-column width="180px" align="center" label="Date"> - <template slot-scope="{ row }"> - <span>{{ row.timestamp | parseTime("{y}-{m}-{d} {h}:{i}") }}</span> - </template> - </el-table-column> - - <el-table-column width="120px" align="center" label="Author"> - <template slot-scope="{ row }"> - <span>{{ row.author }}</span> - </template> - </el-table-column> - - <el-table-column width="100px" label="Importance"> - <template slot-scope="{ row }"> - <svg-icon - v-for="n in +row.importance" - :key="n" - icon-class="star" - class="meta-item__icon" - /> - </template> - </el-table-column> - - <el-table-column class-name="status-col" label="Status" width="110"> - <template slot-scope="{ row }"> - <el-tag :type="row.status | statusFilter"> - {{ row.status }} - </el-tag> - </template> - </el-table-column> - - <el-table-column min-width="300px" label="Title"> - <template slot-scope="{ row }"> - <template v-if="row.edit"> - <el-input v-model="row.title" class="edit-input" size="small" /> - <el-button - class="cancel-btn" - size="small" - icon="el-icon-refresh" - type="warning" - @click="cancelEdit(row)" - > - cancel - </el-button> - </template> - <span v-else>{{ row.title }}</span> - </template> - </el-table-column> - - <el-table-column align="center" label="Actions" width="120"> - <template slot-scope="{ row }"> - <el-button - v-if="row.edit" - type="success" - size="small" - icon="el-icon-circle-check-outline" - @click="confirmEdit(row)" - > - Ok - </el-button> - <el-button - v-else - type="primary" - size="small" - icon="el-icon-edit" - @click="row.edit = !row.edit" - > - Edit - </el-button> - </template> - </el-table-column> - </el-table> - </div> -</template> - -<script> -import { fetchList } from "@/api/article"; - -export default { - name: "InlineEditTable", - filters: { - statusFilter(status) { - const statusMap = { - published: "success", - draft: "info", - deleted: "danger" - }; - return statusMap[status]; - } - }, - data() { - return { - list: null, - listLoading: true, - listQuery: { - page: 1, - limit: 10 - } - }; - }, - created() { - this.getList(); - }, - methods: { - async getList() { - this.listLoading = true; - const { data } = await fetchList(this.listQuery); - const items = data.items; - this.list = items.map(v => { - this.$set(v, "edit", false); // https://vuejs.org/v2/guide/reactivity.html - v.originalTitle = v.title; // will be used when user click the cancel botton - return v; - }); - this.listLoading = false; - }, - cancelEdit(row) { - row.title = row.originalTitle; - row.edit = false; - this.$message({ - message: "The title has been restored to the original value", - type: "warning" - }); - }, - confirmEdit(row) { - row.edit = false; - row.originalTitle = row.title; - this.$message({ - message: "The title has been edited", - type: "success" - }); - } - } -}; -</script> - -<style scoped> -.edit-input { - padding-right: 100px; -} -.cancel-btn { - position: absolute; - right: 15px; - top: 10px; -} -</style> diff --git a/WebSite/src/views/theme/index.vue b/WebSite/src/views/theme/index.vue deleted file mode 100644 index 74351743750a6d2c1f53a75046a8549aebb73fc4..0000000000000000000000000000000000000000 --- a/WebSite/src/views/theme/index.vue +++ /dev/null @@ -1,131 +0,0 @@ -<template> - <div class="app-container"> - <el-card class="box-card"> - <div slot="header"> - <a - class="link-type link-title" - target="_blank" - href="https://panjiachen.github.io/vue-element-admin-site/guide/advanced/theme.html" - > - Theme documentation - </a> - </div> - <div class="box-item"> - <span class="field-label">Change Theme : </span> - <el-switch v-model="theme" /> - <aside style="margin-top:15px;"> - Tips: It is different from the theme-pick on the navbar is two - different skinning methods, each with different application scenarios. - Refer to the documentation for details. - </aside> - </div> - </el-card> - - <div class="block"> - <el-button type="primary"> - Primary - </el-button> - <el-button type="success"> - Success - </el-button> - <el-button type="info"> - Info - </el-button> - <el-button type="warning"> - Warning - </el-button> - <el-button type="danger"> - Danger - </el-button> - </div> - - <div class="block"> - <el-button type="primary" icon="el-icon-edit" /> - <el-button type="primary" icon="el-icon-share" /> - <el-button type="primary" icon="el-icon-delete" /> - <el-button type="primary" icon="el-icon-search"> - Search - </el-button> - <el-button type="primary"> - Upload - <i class="el-icon-upload el-icon-right" /> - </el-button> - </div> - - <div class="block"> - <el-tag - v-for="tag in tags" - :key="tag.type" - :type="tag.type" - class="tag-item" - > - {{ tag.name }} - </el-tag> - </div> - - <div class="block"> - <el-radio-group v-model="radio"> - <el-radio :label="3"> - Option A - </el-radio> - <el-radio :label="6"> - Option B - </el-radio> - <el-radio :label="9"> - Option C - </el-radio> - </el-radio-group> - </div> - - <div class="block"> - <el-slider v-model="slideValue" /> - </div> - </div> -</template> - -<script> -import { toggleClass } from "@/utils"; -import "@/assets/custom-theme/index.css"; // the theme changed version element-ui css - -export default { - name: "Theme", - data() { - return { - theme: false, - tags: [ - { name: "Tag One", type: "" }, - { name: "Tag Two", type: "info" }, - { name: "Tag Three", type: "success" }, - { name: "Tag Four", type: "warning" }, - { name: "Tag Five", type: "danger" } - ], - slideValue: 50, - radio: 3 - }; - }, - watch: { - theme() { - toggleClass(document.body, "custom-theme"); - } - } -}; -</script> - -<style scoped> -.field-label { - vertical-align: middle; -} -.box-card { - width: 400px; - max-width: 100%; - margin: 20px auto; -} - -.block { - padding: 30px 24px; -} - -.tag-item { - margin-right: 15px; -} -</style> diff --git a/WebSite/src/views/yo-common/IncomeApply/index.vue b/WebSite/src/views/yo-common/IncomeApply/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..0068358006274b7e1fdc6692eea6813ea0659aec --- /dev/null +++ b/WebSite/src/views/yo-common/IncomeApply/index.vue @@ -0,0 +1,637 @@ +<template> + <div> + <el-row> + <el-col :span="8"> + <el-select v-model="incomeType" :disabled="IS_DETAIL"> + <el-option + v-for="item in typeList" + :key="item.comeTypeVal" + :value="item.comeTypeCode" + :label="item.comeTypeName" + ></el-option> + </el-select> + </el-col> + </el-row> + <el-card class="mt-20" v-if="incomeType"> + <Flow + :flowInfo="flowInfo" + @handleBack="handleBack" + @handleSave="handleSave" + @handleSubmit="handleSubmit" + @handleReturn="handleReturn" + /> + <div class="mt-20"> + <div v-if="incomeType == 'JIAOYU'"> + <el-card> + <template #header> + <el-row> + <el-col :span="6"> + <el-button plain type="primary" @click="addItem" + >鏂板</el-button + > + <el-button plain type="danger" @click="removeItem" + >鍒犻櫎</el-button + > + </el-col> + <!-- <el-col :span="2"> + + </el-col> --> + <!-- style="display: flex; flex-direction: row; align-items: center;" --> + <el-col :span="6" style="display: flex; align-items: center;"> + <span>閮ㄩ棬锛�</span> + <el-select + v-model="eduData.deptNO" + style="width: auto; flex: 1;" + > + <el-option + v-for="item in deptList" + :key="item.id" + :value="`${item.name + ',' + item.id}`" + :label="item.name" + ></el-option> + </el-select> + </el-col> + </el-row> + </template> + <el-table + ref="eduTableRef" + border + stripe + :data="eduData.tableData" + @selection-change="selectChange" + > + <el-table-column type="selection"> </el-table-column> + <el-table-column label="瀛︾敓绫诲埆"> + <template #default="scope"> + <el-select v-model="scope.row.studentType"> + <el-option + v-for="item in studnentList" + :key="item.comeTypeCode" + :value="item.comeTypeCode" + :label="item.comeTypeName" + ></el-option> + </el-select> + </template> + </el-table-column> + <el-table-column label="鏀惰垂鍐呭"> + <template #default="scope"> + <el-input + type="textarea" + v-model="scope.row.context" + placeholder="璇疯緭鍏ユ敹璐瑰唴瀹�" + ></el-input> + </template> + </el-table-column> + <el-table-column label="浜烘暟"> + <template #default="scope"> + <el-input + v-model="scope.row.peoNum" + @blur="typeNum(scope.row.peoNum)" + placeholder="璇疯緭鍏ヤ汉鏁�" + ></el-input> + </template> + </el-table-column> + <el-table-column label="鏀惰垂鏍囧噯(鍏�/浜�/骞�)"> + <template #default="scope"> + <AmountInputBox + v-model="scope.row.standard" + placeholder="璇疯緭鍏ユ敹璐规爣鍑�" + ></AmountInputBox> + </template> + </el-table-column> + <el-table-column label="閲戦"> + <template #default="scope"> + {{ + isNaN(scope.row.standard * scope.row.peoNum) + ? '' + : scope.row.standard * scope.row.peoNum + }} + </template> + </el-table-column> + <el-table-column label="闄勪欢"> + <template #default="scope"> + <el-button disabled style="margin-left: 5px;" + >闄勪欢涓婁紶</el-button + > + <el-tag + type="info" + style="margin-left:5px;" + v-for="(file, index) in scope.row.fileList" + :key="index" + :closable="IS_MATERIALS == 1" + >{{ file.filename }}</el-tag + > + </template> + </el-table-column> + </el-table> + <el-row> + <el-col :span="24" class="col-table total">鍚堣锛歿{}}</el-col> + </el-row> + </el-card> + </div> + <div v-if="incomeType == 'BAXIANG'"> + <el-row> + <el-col :span="6" class="col-table left">閮ㄩ棬</el-col> + <el-col :span="6" class="col-table"> + <el-select v-model="eightData.deptNO"> + <el-option + v-for="item in deptList" + :key="item.id" + :value="`${item.name + ',' + item.id}`" + :label="item.name" + ></el-option> + </el-select> + </el-col> + <el-col :span="6" class="col-table"></el-col> + <el-col :span="6" class="col-table"></el-col> + </el-row> + <el-row> + <el-col :span="6" class="col-table left">鏀跺叆椤圭洰鍚嶇О</el-col> + <el-col :span="6" class="col-table">棰勮閲戦</el-col> + <el-col :span="6" class="col-table">鍏蜂綋鍐呭</el-col> + <el-col :span="6" class="col-table">璁$畻渚濇嵁</el-col> + </el-row> + <el-row> + <el-col :span="6" class="col-table left">鍥芥湁璧勪骇澶勭疆鏀跺叆</el-col> + <el-col :span="6" class="col-table"> + <el-input + v-model="eightData.nationalHand.money" + placeholder="璇疯緭鍏�..." + ></el-input> + </el-col> + <el-col :span="6" class="col-table" + ><el-input + v-model="eightData.nationalHand.context" + placeholder="璇疯緭鍏�..." + ></el-input + ></el-col> + <el-col :span="6" class="col-table" + ><el-input + v-model="eightData.nationalHand.basis" + placeholder="璇疯緭鍏�..." + ></el-input + ></el-col> + </el-row> + <el-row> + <el-col :span="6" class="col-table left">鍒╂伅鏀跺叆</el-col> + <el-col :span="6" class="col-table"> + <el-input + v-model="eightData.rates.money" + placeholder="璇疯緭鍏�..." + ></el-input> + </el-col> + <el-col :span="6" class="col-table" + ><el-input + v-model="eightData.rates.context" + placeholder="璇疯緭鍏�..." + ></el-input + ></el-col> + <el-col :span="6" class="col-table" + ><el-input + v-model="eightData.rates.basis" + placeholder="璇疯緭鍏�..." + ></el-input + ></el-col> + </el-row> + <el-row> + <el-col :span="6" class="col-table left">鍥芥湁璧勪骇鎶曡祫鏀剁泭</el-col> + <el-col :span="6" class="col-table"> + <el-input + v-model="eightData.nationalInvest.money" + placeholder="璇疯緭鍏�..." + ></el-input> + </el-col> + <el-col :span="6" class="col-table" + ><el-input + v-model="eightData.nationalInvest.context" + placeholder="璇疯緭鍏�..." + ></el-input + ></el-col> + <el-col :span="6" class="col-table" + ><el-input + v-model="eightData.nationalInvest.basis" + placeholder="璇疯緭鍏�..." + ></el-input + ></el-col> + </el-row> + <el-row> + <el-col :span="6" class="col-table left">骞垮憡鏀跺叆</el-col> + <el-col :span="6" class="col-table"> + <el-input + v-model="eightData.advertisement.money" + placeholder="璇疯緭鍏�..." + ></el-input> + </el-col> + <el-col :span="6" class="col-table" + ><el-input + v-model="eightData.advertisement.context" + placeholder="璇疯緭鍏�..." + ></el-input + ></el-col> + <el-col :span="6" class="col-table" + ><el-input + v-model="eightData.advertisement.basis" + placeholder="璇疯緭鍏�..." + ></el-input + ></el-col> + </el-row> + <el-row> + <el-col :span="6" class="col-table left">鎹愯禒鏀跺叆</el-col> + <el-col :span="6" class="col-table"> + <el-input + v-model="eightData.donate.money" + placeholder="璇疯緭鍏�..." + ></el-input> + </el-col> + <el-col :span="6" class="col-table" + ><el-input + v-model="eightData.donate.context" + placeholder="璇疯緭鍏�..." + ></el-input + ></el-col> + <el-col :span="6" class="col-table" + ><el-input + v-model="eightData.donate.basis" + placeholder="璇疯緭鍏�..." + ></el-input + ></el-col> + </el-row> + <el-row> + <el-col :span="6" class="col-table left bottom" + >鍥芥湁璧勪骇鍑虹鍑哄€熸敹鍏�</el-col + > + <el-col :span="6" class="col-table bottom"> + <el-input + v-model="eightData.nationalHire.money" + placeholder="璇疯緭鍏�..." + ></el-input> + </el-col> + <el-col :span="6" class="col-table bottom" + ><el-input + v-model="eightData.nationalHire.context" + placeholder="璇疯緭鍏�..." + ></el-input + ></el-col> + <el-col :span="6" class="col-table bottom" + ><el-input + v-model="eightData.nationalHire.basis" + placeholder="璇疯緭鍏�..." + ></el-input + ></el-col> + </el-row> + + <el-divider></el-divider> + + <div style="padding: 0 20px;"> + <h3>涓婁紶闄勪欢</h3> + <el-button plain type="primary" @click="uploadDialog = true" + >涓婁紶闄勪欢</el-button + > + <el-tag + type="info" + style="margin-left:5px;" + v-for="(file, index) in eightData.uploadFiles" + :key="index" + :closable="canEdit" + >{{ file.filename }}</el-tag + > + </div> + </div> + <div + v-if=" + incomeType == 'QITA' || + incomeType == 'KEYAN' || + incomeType == 'JIAOWEI' + " + > + <el-card> + <template #header> + <el-row> + <el-col :span="6"> + <el-button plain type="primary" @click="addItem" + >鏂板</el-button + > + <el-button plain type="danger" @click="removeItem" + >鍒犻櫎</el-button + > + </el-col> + <el-col :span="6" style="display: flex; align-items: center;"> + <span>閮ㄩ棬锛�</span> + <el-select + v-model="otherData.deptNO" + style="width: auto; flex: 1;" + > + <el-option + v-for="item in deptList" + :key="item.id" + :value="`${item.name + ',' + item.id}`" + :label="item.name" + ></el-option> + </el-select> + </el-col> + </el-row> + </template> + <el-table + border + stripe + :data="otherData.tableData" + ref="otherTableRef" + @selection-change="selectChange" + > + <el-table-column type="selection"> </el-table-column> + <el-table-column label="鏀跺叆绫诲埆"> + <template #default="scope"> + <el-input v-model="scope.row.type"> </el-input> + </template> + </el-table-column> + <el-table-column label="鍏蜂綋鍐呭"> + <template #default="scope"> + <el-input + v-model="scope.row.context" + type="textarea" + placeholder="璇疯緭鍏ユ敹璐瑰唴瀹�" + ></el-input> + </template> + </el-table-column> + <el-table-column label="鏀跺叆閲戦"> + <template #default="scope"> + <el-input + v-model="scope.row.money" + placeholder="璇疯緭鍏ユ敹鍏ラ噾棰�" + ></el-input> + </template> + </el-table-column> + <el-table-column label="娴嬬畻渚濇嵁"> + <template #default="scope"> + <el-input + v-model="scope.row.basis" + placeholder="璇疯緭鍏ユ祴绠椾緷鎹�" + ></el-input> + </template> + </el-table-column> + <el-table-column label="闄勪欢"> + <template #default="scope"> + <el-button disabled style="margin-left: 5px;" + >闄勪欢涓婁紶</el-button + > + <el-tag + type="info" + style="margin-left:5px;" + v-for="(file, index) in scope.row.fileList" + :key="index" + :closable="IS_MATERIALS == 1" + >{{ file.filename }}</el-tag + > + </template> + </el-table-column> + </el-table> + <el-row> + <el-col :span="24" class="col-table total">鍚堣锛歿{}}</el-col> + </el-row> + </el-card> + </div> + <!-- <div v-if="incomeType == 4"></div> --> + <!-- <div v-if="incomeType == 5"></div> --> + </div> + </el-card> + + <UploadFile v-model="uploadDialog"></UploadFile> + </div> +</template> + +<script> +import AmountInputBox from '@/components/AmountInputBox'; +import { computed, onMounted, reactive, toRefs, watch } from 'vue'; +import { isNotEmpty } from '@/utils'; +import Api from '@/api'; +import Message from 'element-plus/lib/el-message'; +export default { + props: { + canEdit: { + type: Boolean, + required: true + }, + row: { + type: Object, + default: () => { + return {}; + } + }, + flowInfo: { + type: Object, + required: true + } + }, + components: { AmountInputBox }, + emits: ['handleBack', 'handleSave', 'handleSubmit', 'handleReturn'], + + setup(props, context) { + onMounted(() => { + getTypeList(); + getDept(); + getStudent(); + }); + watch( + () => props.row, + val => { + data.incomeType = val.planType; + Api.getInComeDetail({ id: val.id }).then(res => { + if (val.planType == 'JIAOYU') { + data.eduData.deptNO = val.departmentCode; + let arr = []; + res.data[0].inComeSubList.forEach(item => { + arr.push(JSON.parse(item.subOhterJson)); + }); + data.eduData.tableData = arr; + } else if (val.planType == 'BAXIANG') { + console.log(JSON.parse(res.data[0].otherJson)); + console.log(`${incomeTypeStr.value}` + 'Data'); + data[`${incomeTypeStr.value}` + 'Data'] = JSON.parse( + res.data[0].otherJson + ); + } else { + data.otherData.deptNO = val.departmentCode; + let arr = []; + res.data[0].inComeSubList.forEach(item => { + arr.push(JSON.parse(item.subOhterJson)); + }); + data.otherData.tableData = arr; + } + }); + } + ); + const IS_DETAIL = isNotEmpty(props.row); + let PageDetail; + if (IS_DETAIL) { + const ROW_CLONE = JSON.parse(JSON.stringify(props.row)); + //鏍规嵁鏀跺叆绫诲瀷鏍煎紡鍖栨暟鎹� + PageDetail = ROW_CLONE; + } + + const data = reactive({ + IS_DETAIL, + typeList: [], + deptList: [], + studnentList: [], + incomeType: IS_DETAIL ? PageDetail.incomeType : '', //鏀跺叆鐢虫姤绫诲瀷 + eduTableRef: null, + otherTableRef: null, + //鏁欒偛浜嬩笟鏀跺叆鏁版嵁 + eduData: IS_DETAIL + ? PageDetail + : { + tableData: [], + deptNO: '', + selectedList: [] + }, + //鍏」鏀跺叆 + eightData: IS_DETAIL + ? PageDetail + : { + deptNO: '', + uploadFiles: [], + nationalHand: {}, + rates: {}, + nationalInvest: {}, + advertisement: {}, + donate: {}, + nationalHire: {} + }, + //鍏跺畠锛岀鐮旓紝鏁欏鏀跺叆 + otherData: IS_DETAIL + ? PageDetail + : { + tableData: [], + deptNO: '', + selectedList: [] + }, + uploadDialog: false + }); + + const incomeTypeStr = computed(() => { + switch (data.incomeType) { + case 'JIAOYU': + return 'edu'; + // break; + case 'BAXIANG': + return 'eight'; + // break; + case 'QITA': + return 'other'; + // break; + case 'KEYAN': + return 'other'; + // break; + case 'JIAOWEI': + return 'other'; + // break; + } + }); + + const saveData = computed(() => { + const params = { + incomeType: data.incomeType, //鏀跺叆绫诲瀷 + model: data[`${incomeTypeStr.value}` + 'Data'] + }; + return params; + }); + const getTypeList = () => { + Api.getInCometype().then(res => { + data.typeList = res.data; + }); + }; + const getDept = () => { + Api.getDept().then(res => { + data.deptList = res.data; + }); + }; + const getStudent = () => { + Api.getStuedents().then(res => { + data.studnentList = res.data; + }); + }; + const handleBack = () => { + context.emit('handleBack'); + }; + const handleSave = () => { + context.emit('handleSave', saveData.value, props.row.id); + }; + const handleSubmit = () => { + context.emit('handleSubmit', saveData.value); + }; + const handleReturn = () => { + context.emit('handleReturn'); + }; + + const addItem = () => { + console.log(incomeTypeStr.value); + data[`${incomeTypeStr.value}` + 'Data'].tableData.push({ + id: Math.floor(Math.random() * 10), + fileList: [] + }); + }; + const removeItem = () => { + data[`${incomeTypeStr.value}` + 'Data'].selectedList.forEach(item => { + const index = data[ + `${incomeTypeStr.value}` + 'Data' + ].tableData.findIndex(jtem => item.id === jtem.id); + index > -1 && + data[`${incomeTypeStr.value}` + 'Data'].tableData.splice(index, 1); + }); + data[`${incomeTypeStr.value}` + 'Data'].selectedList = []; + data[`${incomeTypeStr.value}` + 'TableRef'].clearSelection(); + }; + const selectChange = selectList => { + console.log(selectList); + data[`${incomeTypeStr.value}` + 'Data'].selectedList = selectList; + }; + const typeNum = value => { + if (!/^([1-9][0-9]*)$/.test(value) && Boolean(value)) { + Message.warning('璇疯緭鍏ユ鏁存暟'); + } + }; + return { + ...toRefs(data), + handleBack, + handleSave, + handleSubmit, + handleReturn, + getTypeList, + getDept, + getStudent, + addItem, + removeItem, + typeNum, + selectChange + }; + } +}; +</script> + +<style lang="scss" scoped> +.col-table { + padding: 0 20px; + font-size: 14px; + display: flex; + height: 50px; + align-items: center; + justify-content: center; + border: 1px solid rgba($color: #ebeef5, $alpha: 1); + border-left: none; + border-bottom: none; + &.left { + border-left: 1px solid rgba($color: #ebeef5, $alpha: 1); + } + &.bottom { + border-bottom: 1px solid rgba($color: #ebeef5, $alpha: 1); + } + &.total { + border: 1px solid rgba($color: #ebeef5, $alpha: 1); + border-top: none; + } +} +// .el-select { + +// } +</style> +<style></style> diff --git a/WebSite/src/views/yo-common/IncomeApplyPageList/index.vue b/WebSite/src/views/yo-common/IncomeApplyPageList/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..dd4cad3872c065cc9d199051e5d960dadc388759 --- /dev/null +++ b/WebSite/src/views/yo-common/IncomeApplyPageList/index.vue @@ -0,0 +1,155 @@ +<template> + <div> + <el-card> + <el-row :gutter="20"> + <el-col :span="6"> + <el-date-picker + v-model="queryForm.year" + type="year" + placeholder="閫夋嫨鏃ユ湡" + @change="yearChange" + :clearable="false" + > + </el-date-picker> + </el-col> + <el-col :span="6"> + <el-input + v-model="queryForm.projectName" + placeholder="璇疯緭鍏ラ」鐩悕绉�" + ></el-input> + </el-col> + <el-col :span="6" v-if="showDepartment"> + <el-input + v-model="queryForm.departmentName" + placeholder="璇疯緭鍏ラ儴闂ㄥ悕绉�" + ></el-input> + </el-col> + <el-col :span="3"> + <el-button plain @click="getPageList">鏌ヨ</el-button> + </el-col> + </el-row> + </el-card> + + <el-card class="mt-20"> + <template #header> + <el-row type="flex" justify="start"> + <div> + <el-button disabled plain type="primary" @click="batchSubmitHandler" + >鎵归噺閫氳繃</el-button + > + <el-button disabled plain type="warning" @click="batchRejectHandler" + >鎵归噺椹冲洖</el-button + > + <el-button disabled plain type="danger" @click="batchExportHandler" + >瀵煎嚭</el-button + > + </div> + </el-row> + </template> + <page-query + v-model:pageNO="pageNO" + v-model:pageSize="pageSize" + :total="total" + :tableData="tableData" + :tableConfig="tableConfig" + :primaryKey="primaryKey" + v-model:selectedList="selectedList" + @pageinfo-change="pageInfoChange" + > + <template #tableColumn="{scope}"> + <el-button @click="navToDetail(scope.row)">鏌ョ湅</el-button> + </template> + </page-query> + </el-card> + </div> +</template> + +<script> +import PageQuery from '@/components/PageQuery'; +import Api from '@/api' +import { reactive, toRefs } from 'vue'; +import { ElMessage } from 'element-plus' +export default { + props: { + planType: { + type: String, + required: true + }, + showDepartment: { + type: Boolean, + default: true + } + }, + components: { PageQuery }, + emits: ['switch-page'], + setup(props, context) { + const data = reactive({ + tableData: [], + pageNO: 1, + pageSize: 10, + total: 0, + queryForm: { + year: window.sessionStorage.getItem('year') + }, + selectedList: [], + tableConfig: [ + { prop: 'projectName', label: '椤圭洰鍚嶇О' }, + { prop: 'departmentName', label: '閮ㄩ棬鍚嶇О' }, + { prop: 'departmentCode', label: '閮ㄩ棬缂栧彿' }, + { prop: 'projectLeaderName', label: '璐熻矗浜哄鍚�' }, + { prop: 'projectLeaderCode', label: '璐熻矗浜虹紪鍙�' }, + { prop: 'quotaMoney', label: '鏍稿畾閲戦' }, + { prop: 'state', label: '瀹℃牳鐘舵€�' }, + { prop: 'planType', label: '鐢虫姤涔︾被鍨�' } + ], + primaryKey: 'id' + }); + const yearChange = val => { + const year = new Date(val).getFullYear().toString(); + data.queryForm.year = year; + }; + const getPageList = async () => { + const params = { + planType: props.planType, + pageIndex: data.pageNO, + pageSize: data.pageSize, + ...data.queryForm + }; + const res = await Api.incomeGetPageList(params); + data.tableData = res.data; + data.total = res.total; + } + const pageInfoChange = () => { + getPageList(); + } + const navToDetail = row => { + context.emit('switch-page', row); + }; + const batchSubmitHandler = () => { + ElMessage.success('鎻愪氦鎴愬姛'); + }; + const batchRejectHandler = () => { + ElMessage.success('椹冲洖鎴愬姛'); + }; + const batchExportHandler = () => { + ElMessage.success('瀵煎嚭鎴愬姛'); + }; + const init = () => { + getPageList(); + } + init(); + return { + ...toRefs(data), + pageInfoChange, + getPageList, + navToDetail, + batchSubmitHandler, + batchRejectHandler, + batchExportHandler, + yearChange + } + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-common/PeopleApplyPageList/index.vue b/WebSite/src/views/yo-common/PeopleApplyPageList/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..f6b5a91ea56e08662447605ff9f9690ab9c31df5 --- /dev/null +++ b/WebSite/src/views/yo-common/PeopleApplyPageList/index.vue @@ -0,0 +1,155 @@ +<template> + <div> + <el-card> + <el-row :gutter="20"> + <el-col :span="6"> + <el-date-picker + v-model="queryForm.year" + type="year" + placeholder="閫夋嫨鏃ユ湡" + @change="yearChange" + :clearable="false" + > + </el-date-picker> + </el-col> + <el-col :span="6"> + <el-input + v-model="queryForm.projectName" + placeholder="璇疯緭鍏ラ」鐩悕绉�" + ></el-input> + </el-col> + <el-col :span="6" v-if="showDepartment"> + <el-input + v-model="queryForm.departmentName" + placeholder="璇疯緭鍏ラ儴闂ㄥ悕绉�" + ></el-input> + </el-col> + <el-col :span="3"> + <el-button plain @click="getPageList">鏌ヨ</el-button> + </el-col> + </el-row> + </el-card> + + <el-card class="mt-20"> + <template #header> + <el-row type="flex" justify="start"> + <div> + <el-button disabled plain type="primary" @click="batchSubmitHandler" + >鎵归噺閫氳繃</el-button + > + <el-button disabled plain type="warning" @click="batchRejectHandler" + >鎵归噺椹冲洖</el-button + > + <el-button disabled plain type="danger" @click="batchExportHandler" + >瀵煎嚭</el-button + > + </div> + </el-row> + </template> + <page-query + v-model:pageNO="pageNO" + v-model:pageSize="pageSize" + :total="total" + :tableData="tableData" + :tableConfig="tableConfig" + :primaryKey="primaryKey" + v-model:selectedList="selectedList" + @pageinfo-change="pageInfoChange" + > + <template #tableColumn="{scope}"> + <el-button @click="navToDetail(scope.row)">鏌ョ湅</el-button> + </template> + </page-query> + </el-card> + </div> +</template> + +<script> +import PageQuery from '@/components/PageQuery'; +import Api from '@/api' +import { reactive, toRefs } from 'vue'; +import { ElMessage } from 'element-plus' +export default { + props: { + planType: { + type: String, + required: true + }, + showDepartment: { + type: Boolean, + default: true + } + }, + components: { PageQuery }, + emits: ['switch-page'], + setup(props, context) { + const data = reactive({ + tableData: [], + pageNO: 1, + pageSize: 10, + total: 0, + queryForm: { + year: window.sessionStorage.getItem('year') + }, + selectedList: [], + tableConfig: [ + { prop: 'projectName', label: '椤圭洰鍚嶇О' }, + { prop: 'departmentName', label: '閮ㄩ棬鍚嶇О' }, + { prop: 'departmentCode', label: '閮ㄩ棬缂栧彿' }, + { prop: 'projectLeaderName', label: '璐熻矗浜哄鍚�' }, + { prop: 'projectLeaderCode', label: '璐熻矗浜虹紪鍙�' }, + { prop: 'quotaMoney', label: '鏍稿畾閲戦' }, + { prop: 'state', label: '瀹℃牳鐘舵€�' }, + { prop: 'planType', label: '鐢虫姤涔︾被鍨�' } + ], + primaryKey: 'id' + }); + const yearChange = val => { + const year = new Date(val).getFullYear().toString(); + data.queryForm.year = year; + }; + const getPageList = async () => { + const params = { + planType: props.planType, + pageIndex: data.pageNO, + pageSize: data.pageSize, + ...data.queryForm + }; + const res = await Api.peopleGetPageList(params); + data.tableData = res.data; + data.total = res.total; + } + const pageInfoChange = () => { + getPageList(); + } + const navToDetail = row => { + context.emit('switch-page', row); + }; + const batchSubmitHandler = () => { + ElMessage.success('鎻愪氦鎴愬姛'); + }; + const batchRejectHandler = () => { + ElMessage.success('椹冲洖鎴愬姛'); + }; + const batchExportHandler = () => { + ElMessage.success('瀵煎嚭鎴愬姛'); + }; + const init = () => { + getPageList(); + } + init(); + return { + ...toRefs(data), + pageInfoChange, + getPageList, + navToDetail, + batchSubmitHandler, + batchRejectHandler, + batchExportHandler, + yearChange + } + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-common/PeopleFundApply/index.vue b/WebSite/src/views/yo-common/PeopleFundApply/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..7047da678bfdd449c3fd219cf053e5e45205b36e --- /dev/null +++ b/WebSite/src/views/yo-common/PeopleFundApply/index.vue @@ -0,0 +1,145 @@ +<template> + <div class="app-container"> + <el-card> + <Flow + :flowInfo="flowInfo" + @handleBack="handleBack" + @handleSave="handleSave" + @handleSubmit="handleSubmit" + @handleReturn="handleReturn" + ></Flow> + </el-card> + <h2>2020骞翠汉鍛樼粡璐规槑缁嗚〃</h2> + <el-row> + <el-col :span="4"> + <el-form label-width="50px"> + <el-form-item label="閮ㄩ棬" + ><el-select v-model="deptName"> + <el-option + v-for="item in deptList" + :key="item.id" + :value="item.id" + :label="item.name" + ></el-option> </el-select + ></el-form-item> + </el-form> + </el-col> + <el-col :span="20"> + <el-row type="flex" justify="end"> + <span>閲戦锛歿{}}鍏�</span> + </el-row> + </el-col> + </el-row> + + <el-form :disabled="!canEdit"> + <el-table border stripe :data="personSubjectList"> + <el-table-column type="index"></el-table-column> + <el-table-column + label="椤圭洰" + header-align="center" + prop="personFundName" + ></el-table-column> + <el-table-column label="鎬昏" header-align="center"> + <template #default="scope"> + <el-input-number + v-model="scope.row.totalAmount" + type="number" + style="width:100%;" + :precision="4" + :controls="false" + size="mini" + placeholder="璇疯緭鍏�..." + ></el-input-number> + </template> + </el-table-column> + <el-table-column label="澶囨敞" header-align="center"> + <template #default="scope"> + <el-input v-model="scope.row.note"></el-input> + </template> + </el-table-column> + </el-table> + </el-form> + </div> +</template> + +<script> +import { onMounted, reactive, toRefs, watch } from 'vue'; +import Api from '@/api'; +export default { + props: { + canEdit: { + type: Boolean, + required: true + }, + row: { + type: Object, + default: () => { + return {}; + } + }, + flowInfo: { + type: Object, + required: true + } + }, + emits: ['handleBack', 'handleSave', 'handleSubmit', 'handleReturn'], + setup(props, context) { + onMounted(() => { + Api.getDetailList().then(res => { + data.personSubjectList = res.data; + }); + Api.getDept().then(res => { + data.deptList = res.data; + }); + }); + watch( + () => props.row, + val => { + data.deptName = val[0].departmentName; + val[0].planBookPersonSubjectOutList.forEach(item => { + item.personFundName = item.personSubjectName; + }); + data.personSubjectList = val[0].planBookPersonSubjectOutList; + } + ); + const data = reactive({ + personSubjectList: [], + deptList: [], + deptName: '' + }); + const handleBack = () => { + context.emit('handleBack'); + }; + const handleSave = () => { + context.emit('handleSave', [ + data.personSubjectList, + data.deptName, + props.row + ]); + }; + const handleSubmit = flowOutput => { + context.emit('handleSubmit', flowOutput); + }; + const handleReturn = flowOutput => { + context.emit('handleReturn', flowOutput); + }; + return { + ...toRefs(data), + handleBack, + handleSave, + handleSubmit, + handleReturn + }; + } +}; +</script> + +<style lang="scss" scoped> +h2 { + text-align: center; +} +.header { + margin-bottom: 10px; +} +</style> +<style></style> diff --git a/WebSite/src/views/yo-common/ProjectApplyPageList/detail.vue b/WebSite/src/views/yo-common/ProjectApplyPageList/detail.vue new file mode 100644 index 0000000000000000000000000000000000000000..34911f215936ee0f1f55d67ae3cf4e815a966b88 --- /dev/null +++ b/WebSite/src/views/yo-common/ProjectApplyPageList/detail.vue @@ -0,0 +1,142 @@ +<template> + <div> + <TableFlow + :canEdit="canEdit" + :row="applyInfo" + :flowInfo="flowInfo" + @handleBack="handleBack" + @handleSave="handleSave" + @handleSubmit="handleSubmit" + @handleReturn="handleReturn" + ></TableFlow> + </div> +</template> + +<script> +import { reactive, toRefs } from 'vue'; +import Api from '@/api'; +import { ElMessage } from 'element-plus'; +export default { + props: { + canEdit: { + type: Boolean, + required: true + }, + row: { + type: Object, + default: () => { + return {}; + } + } + }, + setup(props, context) { + const data = reactive({ + flowInfo: { + nextSubmitNodes: [ + { + key: '1599725907064', + value: '绉戠爺澶勫鏍�' + } + ], + canRejectNodes: [ + { + key: '1599725907064', + value: '绉戠爺澶勫鏍�' + } + ], + user: '绯荤粺绠$悊鍛�', + state: '璐熻矗浜鸿ˉ鍏�', + flow: [ + { + actionTime: '2020骞�9鏈�11鏃�', + time: '17:30:43', + icon: '', + flowName: '绔嬮」', + attitude: '', + auditor: '绯荤粺绠$悊鍛�', + startNodeName: '寮€濮�', + endNodeName: '绉戠爺澶勭珛椤�', + flowState: '娴佺▼寮€濮�', + isPassed: 'False', + systemID: '00000000-0000-0000-0000-000000000000', + isEnable: false + }, + { + actionTime: '2020骞�9鏈�11鏃�', + time: '17:31:00', + icon: '', + flowName: '绔嬮」', + attitude: '', + auditor: '绯荤粺绠$悊鍛�', + startNodeName: '绉戠爺澶勭珛椤�', + endNodeName: '璐熻矗浜鸿ˉ鍏�', + flowState: '鎻愪氦', + isPassed: 'False', + systemID: '00000000-0000-0000-0000-000000000000', + isEnable: false + } + ], + btnStates: { + isShowSave: true, + isShowSubmit: true, + isShowReject: true, + isShowRevoke: false, + isShowChart: true, + isShowHistory: true, + isShowUser: true, + isShowState: true, + isShowCancel: false + } + }, + applyInfo: {} + }); + const handleBack = () => { + context.emit('switch-page', 'List'); + }; + const handleSave = async applyInfo => { + + + console.log(applyInfo); + if(!props.row.id) { + applyInfo.year = window.sessionStorage.getItem('year'); + applyInfo.planType = 'XIANGMUKU'; + } + const res = await Api.saveProjectFundApply(applyInfo); + if (props.row.id) { + ElMessage.success('鏇存柊鐢虫姤涔︽垚鍔�'); + getPageData(props.row.id); + } else { + ElMessage.success('鏂板鐢虫姤涔︽垚鍔�'); + getPageData(res.data[0]); + } + }; + const handleSubmit = (flowOutput, applyInfo) => { + console.log(flowOutput, applyInfo); + }; + const handleReturn = (flowOutput, applyInfo) => { + console.log(flowOutput, applyInfo); + }; + + const getPageData = async id => { + const res = await Api.projectGetById(id); + data.applyInfo = res.data[0]; + }; + + const init = () => { + if (props.row.id) { + getPageData(props.row.id); + } + }; + init(); + return { + ...toRefs(data), + handleBack, + handleSave, + handleSubmit, + handleReturn + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-common/ProjectApplyPageList/index.vue b/WebSite/src/views/yo-common/ProjectApplyPageList/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..850a658d4751d500472bcbd01dd334999a4dcc43 --- /dev/null +++ b/WebSite/src/views/yo-common/ProjectApplyPageList/index.vue @@ -0,0 +1,155 @@ +<template> + <div> + <el-card> + <el-row :gutter="20"> + <el-col :span="6"> + <el-date-picker + v-model="queryForm.year" + type="year" + placeholder="閫夋嫨鏃ユ湡" + @change="yearChange" + :clearable="false" + > + </el-date-picker> + </el-col> + <el-col :span="6"> + <el-input + v-model="queryForm.projectName" + placeholder="璇疯緭鍏ラ」鐩悕绉�" + ></el-input> + </el-col> + <el-col :span="6" v-if="showDepartment"> + <el-input + v-model="queryForm.departmentName" + placeholder="璇疯緭鍏ラ儴闂ㄥ悕绉�" + ></el-input> + </el-col> + <el-col :span="3"> + <el-button plain @click="getPageList">鏌ヨ</el-button> + </el-col> + </el-row> + </el-card> + + <el-card class="mt-20"> + <template #header> + <el-row type="flex" justify="start"> + <div> + <el-button disabled plain type="primary" @click="batchSubmitHandler" + >鎵归噺閫氳繃</el-button + > + <el-button disabled plain type="warning" @click="batchRejectHandler" + >鎵归噺椹冲洖</el-button + > + <el-button disabled plain type="danger" @click="batchExportHandler" + >瀵煎嚭</el-button + > + </div> + </el-row> + </template> + <page-query + v-model:pageNO="pageNO" + v-model:pageSize="pageSize" + :total="total" + :tableData="tableData" + :tableConfig="tableConfig" + :primaryKey="primaryKey" + v-model:selectedList="selectedList" + @pageinfo-change="pageInfoChange" + > + <template #tableColumn="{scope}"> + <el-button @click="navToDetail(scope.row)">鏌ョ湅</el-button> + </template> + </page-query> + </el-card> + </div> +</template> + +<script> +import PageQuery from '@/components/PageQuery'; +import Api from '@/api'; +import { reactive, toRefs } from 'vue'; +import { ElMessage } from 'element-plus'; +export default { + props: { + planType: { + type: String, + required: true + }, + showDepartment: { + type: Boolean, + default: true + } + }, + components: { PageQuery }, + emits: ['switch-page'], + setup(props, context) { + const data = reactive({ + tableData: [], + pageNO: 1, + pageSize: 10, + total: 0, + queryForm: { + year: window.sessionStorage.getItem('year') + }, + selectedList: [], + tableConfig: [ + { prop: 'projectName', label: '椤圭洰鍚嶇О' }, + { prop: 'departmentName', label: '閮ㄩ棬鍚嶇О' }, + { prop: 'departmentCode', label: '閮ㄩ棬缂栧彿' }, + { prop: 'projectLeaderName', label: '璐熻矗浜哄鍚�' }, + { prop: 'projectLeaderCode', label: '璐熻矗浜虹紪鍙�' }, + { prop: 'quotaMoney', label: '鏍稿畾閲戦' }, + { prop: 'state', label: '瀹℃牳鐘舵€�' }, + { prop: 'planType', label: '鐢虫姤涔︾被鍨�' } + ], + primaryKey: 'id' + }); + const yearChange = val => { + const year = new Date(val).getFullYear().toString(); + data.queryForm.year = year; + }; + const getPageList = async () => { + const params = { + planType: props.planType, + pageIndex: data.pageNO, + pageSize: data.pageSize, + ...data.queryForm + }; + const res = await Api.projectGetPageList(params); + data.tableData = res.data; + data.total = res.total; + }; + const pageInfoChange = () => { + getPageList(); + }; + const navToDetail = row => { + context.emit('switch-page', row); + }; + const batchSubmitHandler = () => { + ElMessage.success('鎻愪氦鎴愬姛'); + }; + const batchRejectHandler = () => { + ElMessage.success('椹冲洖鎴愬姛'); + }; + const batchExportHandler = () => { + ElMessage.success('瀵煎嚭鎴愬姛'); + }; + const init = () => { + getPageList(); + }; + init(); + return { + ...toRefs(data), + pageInfoChange, + getPageList, + navToDetail, + batchSubmitHandler, + batchRejectHandler, + batchExportHandler, + yearChange + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-common/ProjectFundApply/index.vue b/WebSite/src/views/yo-common/ProjectFundApply/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..41761544f6f14ceff488e483ca9d1deb90bf0077 --- /dev/null +++ b/WebSite/src/views/yo-common/ProjectFundApply/index.vue @@ -0,0 +1,1069 @@ +<template> + <div class="app-container"> + <div + class="step-wrap" + id="step" + style="position: absolute; + left: 20px; + top: 300px;" + > + <el-steps direction="vertical" :space="40" :active="activeStep"> + <el-step + title="鍩烘湰淇℃伅" + class="cp" + @click="scrollToView('baseInfo')" + ></el-step> + <el-step + title="椤圭洰姒傝堪" + class="cp" + @click="scrollToView('proIntro')" + ></el-step> + <el-step + title="椤圭洰缁╂晥" + class="cp" + @click="scrollToView('proMerits')" + ></el-step> + <el-step + title="椤圭洰棰勭畻" + class="cp" + @click="scrollToView('proBudget')" + ></el-step> + </el-steps> + </div> + <el-card> + <Flow + :flowInfo="flowInfo" + @handleBack="handleBack" + @handleSave="handleSave" + @handleSubmit="handleSubmit" + @handleReturn="handleReturn" + ></Flow> + </el-card> + <div class="apply-table-wrap"> + <h2>{{ applyInfo.year }}骞寸悊瀛﹂櫌椤圭洰鐢虫姤琛�</h2> + + <el-form :disabled="!canEdit"> + <el-card id="baseInfo" class="mt-20"> + <template #header> + 鍩烘湰淇℃伅 + </template> + <el-row class="form-item-override" :gutter="20"> + <el-col :xs="8" :sm="8" :md="8" :lg="8"> + <el-form-item label="鐢虫姤閮ㄩ棬锛�"> + <el-select + @change="selectDeptChange" + v-model="applyInfo.departmentCode" + placeholder="璇烽€夋嫨鐢虫姤閮ㄩ棬" + > + <el-option + v-for="item in applyDept" + :key="item.id" + :label="item.name" + :value="item.code" + ></el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :xs="8" :sm="8" :md="8" :lg="8"> + <el-form-item + label="椤圭洰绫诲瀷锛�" + @click="openSelectProjectTypeDialog" + > + <el-input + readonly + v-model="applyInfo.projectType" + placeholder="璇烽€夋嫨椤圭洰绫诲瀷" + ></el-input> + </el-form-item> + </el-col> + <el-col :xs="8" :sm="8" :md="8" :lg="8"> + <el-form-item label="椤圭洰鍚嶇О锛�"> + <el-input + v-model="applyInfo.projectName" + placeholder="璇疯緭鍏ラ」鐩悕绉�" + ></el-input> + </el-form-item> + </el-col> + <el-col :xs="8" :sm="8" :md="8" :lg="8"> + <el-form-item label="璐熻矗浜猴細"> + <el-select + @change="selectLeaderChange" + v-model="applyInfo.projectLeaderId" + filterable + remote + popper-class="select-user" + :loading="selectUserLoading" + :remote-method="getLeaderByValue" + @visible-change="selectVisibleChange" + placeholder="璇烽€夋嫨璐熻矗浜�" + > + <el-option + v-for="user in userList" + :key="user.id" + :label="user.name" + :value="user.id" + ></el-option> + </el-select> + <!-- <el-input v-model="applyInfo.projectLeaderName" placeholder="璇疯緭鍏ヨ礋璐d汉"></el-input> --> + </el-form-item> + </el-col> + <el-col :xs="8" :sm="8" :md="8" :lg="8"> + <el-form-item label="缁忚垂鍗″彿锛�"> + <el-input disabled placeholder="璇疯緭鍏ョ粡璐瑰崱鍙�"></el-input> + </el-form-item> + </el-col> + </el-row> + </el-card> + + <el-card class="mt-20" id="proIntro"> + <template #header> + 椤圭洰姒傝堪 + </template> + <el-form-item + label="1銆侀」鐩緷鎹�(瑕佸啓鏄庨」鐩簬闇€瑕佹墽琛岀殑鏀跨瓥鎴栨枃浠跺強棰勭畻缂栧埗渚濇嵁):" + > + <el-input + v-model="applyInfo.summaryJson.basis" + type="textarea" + ></el-input> + </el-form-item> + <el-form-item + label="2銆侀」鐩熀鏈儏鍐�(瑕佸啓鏄庡叿浣撳疄鏂界殑宸ヤ綔鍐呭锛屽苟涓庡叾棰勭畻鐩稿搴�):" + > + <el-input + v-model="applyInfo.summaryJson.baseinfo" + type="textarea" + ></el-input> + </el-form-item> + <el-form-item label="3銆侀」鐩熀纭€鏉′欢鍙婂墠鏈熷伐浣�:"> + <el-input + v-model="applyInfo.summaryJson.terminfo" + type="textarea" + ></el-input> + </el-form-item> + <el-form-item label="4銆侀」鐩墽琛岃鍒�(鍚伐浣滆繘搴︺€佽祫閲戞墽琛岃繘搴�):"> + <el-input + v-model="applyInfo.summaryJson.plan" + type="textarea" + ></el-input> + </el-form-item> + <el-form-item label="5銆侀」鐩繚闅滄帾鏂�:"> + <el-input + v-model="applyInfo.summaryJson.ensure" + type="textarea" + ></el-input> + </el-form-item> + <el-form-item label="6銆佹姇鍏ユ儏鍐�:"> + <el-input + v-model="applyInfo.summaryJson.inport" + type="textarea" + ></el-input> + </el-form-item> + <el-form-item + label="7銆侀」鐩敵璇风悊鐢�(缁撳悎瀛︽牎鈥滃崄涓変簲鈥濊鍒掋€佲€滃崄涓変簲鈥濊鍔ㄨ鍒掋€侀儴闂ㄥ伐浣滆鍒掔瓑闃愯堪):" + > + <el-input + v-model="applyInfo.summaryJson.applyReason" + type="textarea" + ></el-input> + </el-form-item> + <el-form-item label="8銆侀」鐩疄鏂藉唴瀹瑰強棰勭畻:"> + <el-input + v-model="applyInfo.summaryJson.budget" + type="textarea" + ></el-input> + </el-form-item> + </el-card> + <el-card class="mt-20" id="proMerits"> + <template #header> + 椤圭洰缁╂晥 + </template> + <el-form-item + label="椤圭洰绫诲埆锛�" + style="display: flex; align-items: center;" + > + <el-radio-group + v-model="applyInfo.projectTargetCmd.summaryJson.projectType" + > + <el-radio :label="1">涓撻」璧勯噾</el-radio> + <el-radio :label="2">缁忓父鎬ч」鐩�</el-radio> + <el-radio :label="3">涓€娆℃€ч」鐩�</el-radio> + </el-radio-group> + </el-form-item> + <el-form-item label="璁″垝寮€濮嬫棩鏈燂細"> + <el-date-picker + v-model="applyInfo.projectTargetCmd.summaryJson.startDate" + type="date" + placeholder="閫夋嫨鏃ユ湡" + > + </el-date-picker> + </el-form-item> + <el-form-item label="璁″垝瀹屾垚鏃ユ湡锛�"> + <el-date-picker + v-model="applyInfo.projectTargetCmd.summaryJson.endDate" + type="date" + placeholder="閫夋嫨鏃ユ湡" + > + </el-date-picker> + </el-form-item> + <el-form-item label="椤圭洰鎬荤洰鏍�20骞�-20骞达細"> + <el-input + v-model="applyInfo.projectTargetCmd.summaryJson.projectGoal" + type="textarea" + ></el-input> + </el-form-item> + <el-form-item label="骞村害鎬讳綋鐩爣锛�"> + <el-input + v-model="applyInfo.projectTargetCmd.summaryJson.yearGoal" + type="textarea" + ></el-input> + </el-form-item> + + <el-table + border + stripe + :data="applyInfo.projectTargetCmd.subOtherArrayJson" + > + <el-table-column label="涓€绾ф寚鏍�"> + <template #default="scope"> + <div class="one-quota"> + <el-cascader + popper-class="cascader-cus" + ref="cascaderRef" + @change=" + val => { + cascaderChange(scope, val); + } + " + v-model="scope.row.one" + :options="meritsTree" + :props="meritsTreeProps" + style="width: 100%;" + > + <template #default="{node, data}"> + <div v-if="data.children">{{ node.label }}</div> + <div v-else @click="onClickNode(scope, node, data)"> + {{ node.label }} + </div> + </template> + </el-cascader> + <div class="icon-wrap"> + <el-button + plain + type="primary" + icon="el-icon-circle-plus-outline" + circle + @click="addQuota(scope)" + ></el-button> + <el-button + plain + style="margin: 0;" + type="danger" + icon="el-icon-circle-close" + circle + @click="deleteQuota(scope)" + ></el-button> + <!-- <i + class="el-icon-circle-plus-outline add-icon" + @click="addQuota(scope)" + ></i> + <i + class="el-icon-circle-close delete-icon" + @click="deleteQuota(scope)" + ></i> --> + </div> + </div> + </template> + </el-table-column> + <el-table-column label="浜岀骇鎸囨爣"> + <template #default="scope"> + <el-input disabled v-model="scope.row.two"></el-input> + </template> + </el-table-column> + <el-table-column label="涓夌骇鎸囨爣"> + <template #default="scope"> + <el-input v-model="scope.row.three"></el-input> + </template> + </el-table-column> + <el-table-column label="骞村害鎸囨爣鍊�"> + <template #default="scope"> + <el-input v-model="scope.row.yearTarget"></el-input> + </template> + </el-table-column> + </el-table> + </el-card> + + <el-card class="mt-20" id="proBudget"> + <template #header> + 椤圭洰棰勭畻 + <div style="margin-top: 10px;"> + <el-button type="primary" plain @click="addBudget" + >鏂板</el-button + > + <el-button type="danger" plain @click="removeBudget" + >鍒犻櫎</el-button + > + </div> + </template> + <el-table + :data="applyInfo.planSubjectList" + border + stripe + ref="budgetTableRef" + @selection-change="budgetTableSelectChange" + > + <el-table-column type="selection"></el-table-column> + <el-table-column label="鏄庣粏鍐呭"> + <template #default="scope"> + <el-input + v-model="scope.row.subjectContent" + placeholder="璇疯緭鍏�..." + ></el-input> + </template> + </el-table-column> + <el-table-column label="缁忔祹绉戠洰"> + <template #default="scope"> + <el-select + @change="value => fundSubjectChhange(value, scope.row)" + v-model="scope.row.subjectName" + placeholder="璇疯緭鍏�..." + > + <el-option + v-for="item in fundsList" + :key="item.id" + :label="item.name" + :value="item.code" + ></el-option> + </el-select> + <!-- <el-input + v-model="scope.row.subjectName" + placeholder="璇疯緭鍏�..." + ></el-input> --> + </template> + </el-table-column> + <el-table-column label="绉戠洰缂栧彿"> + <template #default="scope"> + <el-input + v-model="scope.row.subjectCode" + placeholder="璇疯緭鍏�..." + ></el-input> + </template> + </el-table-column> + <el-table-column label="绉戠洰璇存槑"> + <template #default="scope"> + <el-input + v-model="scope.row.otherJson.subjectIntro" + placeholder="璇疯緭鍏�..." + ></el-input> + </template> + </el-table-column> + <el-table-column label="鏁伴噺"> + <template #default="scope"> + <el-input + :disabled="!!scope.row.extendFormId" + v-model="scope.row.number" + placeholder="璇疯緭鍏�..." + ></el-input> + </template> + </el-table-column> + <el-table-column label="鍗曚环"> + <template #default="scope"> + <el-input + :disabled="!!scope.row.extendFormId" + v-model="scope.row.price" + placeholder="璇疯緭鍏�..." + ></el-input> + </template> + </el-table-column> + <el-table-column label="閲戦"> + <template #default="scope"> + <el-input + :disabled="!!scope.row.extendFormId" + v-model="scope.row.subtotal" + placeholder="璇疯緭鍏�..." + ></el-input> + </template> + </el-table-column> + <el-table-column label="鏀垮簻閲囪喘"> + <template #default="scope"> + <el-input + v-model="scope.row.otherJson.orgPurchase" + placeholder="璇疯緭鍏�..." + ></el-input> + </template> + </el-table-column> + <el-table-column label="璧勯噾鏉ユ簮"> + <template #default="scope"> + <el-input + v-model="scope.row.otherJson.moneyFrom" + placeholder="璇疯緭鍏�..." + ></el-input> + </template> + </el-table-column> + <el-table-column label="濉啓鏄庣粏" width="120"> + <template #default="scope"> + <el-button + v-if="scope.row.extendFormId" + type="primary" + plain + @click="openFindDetailed(scope.row)" + >鏌ョ湅濉啓鏄庣粏</el-button + > + </template> + </el-table-column> + </el-table> + </el-card> + <el-card class="mt-20"> + <template #header> + 涓婁紶闄勪欢 + </template> + <el-button type="primary" plain @click="uploadDialog = true" + >涓婁紶闄勪欢</el-button + > + <el-tag + type="info" + style="margin-left:5px;" + v-for="(file, index) in uploadFiles" + :key="index" + :closable="canEdit" + @close="deleteFile(uploadFiles, index)" + @click="downloadFile(file)" + >{{ file.filename }}</el-tag + > + <UploadFile + v-model="uploadDialog" + @upload-handler="uploadHandler" + ></UploadFile> + </el-card> + </el-form> + </div> + + <!-- <el-dialog title="濉啓鏌ョ湅鏄庣粏" width="80%" v-model="findDetailDialog"> + <el-row> + <el-button type="primary" plain @click="addSubBudget">鏂板</el-button> + </el-row> + <el-table + class="mt-20" + border + stripe + :data="currentBudgetRow.subjectDetailList" + > + <el-table-column + v-for="item in tableConfig" + :key="item" + :label="item.label" + :prop="item.prop" + > + </el-table-column> + <el-table-column label="鎿嶄綔"> + <template #default="scope"> + <el-button type="danger" plain @click="removeSubBudget(scope)" + >鍒犻櫎</el-button + > + </template> + </el-table-column> + </el-table> + </el-dialog> --> + + <ExtendForm + v-model="findDetailDialog" + :tableConfig="tableConfig" + :tableData="currentBudgetRow.subjectDetailList" + :caculte="currentBudgetRow.caculte" + :fields="currentBudgetRow.fields" + @on-confirm="extendFormConfirm" + ></ExtendForm> + + <el-dialog + title="閫夋嫨涓€绾ч」鐩�" + width="60%" + v-model="selectProjectTypeDialog" + > + <el-table :data="projectTypeList" border stripe> + <el-table-column + label="涓€绾ч」鐩悕绉�" + prop="budgetName" + ></el-table-column> + <el-table-column + label="涓€绾ч」鐩紪鍙�" + prop="budgetCode" + ></el-table-column> + <el-table-column label="褰掑彛閮ㄩ棬"></el-table-column> + <el-table-column label="鎿嶄綔"> + <template #default="scope"> + <el-button type="primary" @click="selectProjectType(scope.row)" + >閫夋嫨</el-button + > + </template> + </el-table-column> + </el-table> + </el-dialog> + </div> +</template> + +<script> +import { nextTick, onMounted, reactive, toRefs, watch } from 'vue'; +import { ElMessage } from 'element-plus'; +// import UploadFile from '@/components/UploadFile'; +import ExtendForm from '@/components/ExtendFormTable'; +import { absNum, debounce, isEmpty, moneyFormat, throttle } from '@/utils'; +import Api from '@/api'; +export default { + components: { ExtendForm }, + props: { + canEdit: { + type: Boolean, + required: true + }, + row: { + type: Object, + default: () => { + return { + summaryJson: {}, //椤圭洰姒傝堪 + projectTargetCmd: { + //椤圭洰缁╂晥 + summaryJson: {}, + subOtherArrayJson: [] + }, + planSubjectList: [] + }; + } + }, + flowInfo: { + type: Object, + required: true + } + }, + emits: ['handleBack', 'handleSave', 'handleSubmit', 'handleReturn'], + setup(props, context) { + const data = reactive({ + applyInfo: JSON.parse(JSON.stringify(props.row)), + activeStep: 1 + }); + + //娴佺▼閫昏緫浠g爜 + const handleBack = () => { + context.emit('handleBack'); + }; + const handleSave = () => { + const applyInfo = JSON.parse(JSON.stringify(data.applyInfo)) + applyInfo.summaryJson = JSON.stringify(applyInfo.summaryJson); + applyInfo.projectTargetCmd.subOtherArrayJson = JSON.stringify(applyInfo.projectTargetCmd.subOtherArrayJson); + applyInfo.projectTargetCmd.summaryJson = JSON.stringify(applyInfo.projectTargetCmd.summaryJson); + applyInfo.planSubjectList.forEach(item => { + item.otherJson = JSON.stringify(item.otherJson); + item.subjectDetailList.forEach(jtem => { + jtem.otherJson = JSON.stringify(jtem.otherJson); + }) + }); + context.emit('handleSave', applyInfo); + }; + const handleSubmit = flowOutput => { + context.emit('handleSubmit', flowOutput, data.applyInfo); + }; + const handleReturn = flowOutput => { + context.emit('handleReturn', flowOutput, data.applyInfo); + }; + + //鍩烘湰淇℃伅锛岄」鐩杩伴€昏緫浠g爜 + const baseinfoData = reactive({ + applyDept: [], //鐢虫姤閮ㄩ棬 + projectTypeList: [], + selectProjectTypeDialog: false, + userList: [], + userQuery: { + pageIndex: 1, + pageSize: 10, + total: 0 + }, + selectUserLoading: false + }); + const selectDeptChange = (val) => { + const dept = baseinfoData.applyDept.find(item => item.code == val); + data.applyInfo.departmentName = dept.name; + } + const getApplyDept = async () => { + const res = await Api.pfApplyDept(); + baseinfoData.applyDept = res.data; + }; + const getProjectType = async () => { + const res = await Api.projectFundProjectType({ year: 2021 }); + baseinfoData.projectTypeList = res.data; + console.log(res); + }; + const openSelectProjectTypeDialog = async () => { + await getProjectType(); + baseinfoData.selectProjectTypeDialog = true; + }; + const selectProjectType = async row => { + data.applyInfo.projectType = row.budgetName; + data.applyInfo.projectTypeId = row.id; + await queryFundListById(row.id); + baseinfoData.selectProjectTypeDialog = false; + }; + //涓嬫媺妗嗚Е搴曡Е椤跺姞杞� + const selectVisibleChange = visible => { + if (visible) { + console.log('鎵撳紑'); + // const SELECTWRAP_LIST = document.querySelectorAll('.el-dropdown__popper.el-popper.is-light.is-pure'); + // const domList = Array.from(SELECTWRAP_LIST); + // console.log(domList); + // const SELECTWRAP_ITEM = domList.find(item => { + // console.log(item.getAttribute('aria-hidden')); + // return !item.getAttribute('aria-hidden') || item.getAttribute('aria-hidden') == 'false' + // }) + // console.error(SELECTWRAP_ITEM); + const SELECTWRAP_DOM = document.querySelector( + '.select-user .el-select-dropdown__wrap.el-scrollbar__wrap' + ); + const totalPage = Math.ceil( + absNum( + baseinfoData.userQuery.total, + baseinfoData.userQuery.pageSize, + '/' + ) + ); + SELECTWRAP_DOM && + SELECTWRAP_DOM.addEventListener('scroll', () => { + // console.log(SELECTWRAP_DOM.scrollHeight, SELECTWRAP_DOM.scrollTop, SELECTWRAP_DOM.clientHeight); + const down = + SELECTWRAP_DOM.scrollHeight - SELECTWRAP_DOM.scrollTop - 1 <= + SELECTWRAP_DOM.clientHeight; + const up = SELECTWRAP_DOM.scrollTop <= 0; + if (down) { + console.log('瑙﹀簳鍔犺浇'); + if (baseinfoData.userQuery.pageIndex >= totalPage) { + //鏈€鍚庝竴椤� + console.log('鏈€鍚庝竴椤�'); + return; + } + baseinfoData.userQuery.pageIndex++; //涓嬩竴椤� + SELECTWRAP_DOM.scrollTop = 1; + selectLoadmore(); + } + if (up) { + console.log('瑙﹂《鍔犺浇'); + if (baseinfoData.userQuery.pageIndex <= 1) { + //绗竴椤� + console.log('绗竴椤�'); + return; + } + baseinfoData.userQuery.pageIndex--; //涓嬩竴椤� + SELECTWRAP_DOM.scrollTop = 1; + selectLoadmore(); + } + }); + } + }; + //璐熻矗浜轰笅鎷夋鑾峰彇鏁版嵁 + const selectLoadmore = async name => { + baseinfoData.selectUserLoading = true; + const params = { + pageIndex: baseinfoData.userQuery.pageIndex, + pageSize: baseinfoData.userQuery.pageSize + }; + if (name) { + params.name = name; + } + const res = await Api.projectFundQueryUserList(params); + baseinfoData.userList = res.data; + baseinfoData.userQuery.total = res.total; + baseinfoData.selectUserLoading = false; + }; + //璐熻矗浜轰笅鎷夋杈撳叆妯$硦鏌ヨ + const getLeaderByValue = name => { + selectLoadmore(name); + }; + const selectLeaderChange = leaderId => { + const leader = baseinfoData.userList.find(item => item.id == leaderId); + data.applyInfo.projectLeaderName = leader.name; + data.applyInfo.projectLeaderCode = leader.code; + } + //椤圭洰缁╂晥閫昏緫浠g爜 + const meritsData = reactive({ + meritsTree: [], + meritsTreeProps: { + label: 'targetName', + value: 'id', + expandTrigger: 'hover' + // checkStrictly: true + }, + cascaderRef: null + }); + //娣诲姞缁╂晥 + const addQuota = scope => { + data.applyInfo.projectTargetCmd.subOtherArrayJson.splice( + scope.$index + 1, + 0, + {} + ); + }; + //鍒犻櫎缁╂晥 + const deleteQuota = scope => { + if (data.applyInfo.projectTargetCmd.subOtherArrayJson.length <= 1) { + data.applyInfo.projectTargetCmd.subOtherArrayJson.forEach(item => { + for (const key in item) { + item[key] = ''; + } + }); + return ElMessage.warning('鑷冲皯淇濈暀涓€琛屾暟鎹�'); + } + data.applyInfo.projectTargetCmd.subOtherArrayJson.splice( + scope.$index, + 1 + ); + }; + const cascaderChange = (scope, val) => { + console.log(scope, val); + // scope.row.one = val[0]; + // scope.row.two = val[1]; + // nextTick(() => { + // }); + }; + const onClickNode = (scope, node, data) => { + console.error(node, data); + // scope.row.one = data.parent; + scope.row.oneValue = data.parent; + scope.row.twoValue = node.value; + scope.row.two = node.label; + }; + const getMeritsTree = async () => { + const res = await Api.projectFundTargetTree({ year: 2021 }); + meritsData.meritsTree = res.data; + }; + + //椤圭洰棰勭畻閫昏緫浠g爜 + const budgetData = reactive({ + budgetTableRef: null, //椤圭洰棰勭畻琛ㄦ牸 + fundsList: [], //缁忔祹绉戠洰List + budgetTableSelected: [], + findDetailDialog: false, + tableConfig: [ + { label: '鏄庣粏鍐呭', prop: 'content' }, + { label: '缁忔祹绉戠洰', prop: 'kemu' }, + { label: '绉戠洰缂栧彿', prop: 'kemucode' }, + { label: '绉戠洰璇存槑', prop: 'kemushuoming' } + ], + currentBudgetRow: {} + }); + const queryFundListById = async id => { + const res = await Api.projectFundqueryFundList(id); + console.error(res); + budgetData.fundsList = res.data; + }; + //娣诲姞棰勭畻 + const addBudget = () => { + data.applyInfo.planSubjectList.push({ + otherJson: {}, + subjectDetailList: [] + }); + }; + //鍒犻櫎棰勭畻 + const removeBudget = () => { + budgetData.budgetTableSelected.forEach(item => { + const index = data.applyInfo.planSubjectList.findIndex( + jtem => item.id == jtem.id + ); + data.applyInfo.planSubjectList.splice(index, 1); + }); + budgetData.budgetTableRef.clearSelection(); + }; + //琛ㄦ牸閫変腑椤规敼鍙� + const budgetTableSelectChange = selected => { + budgetData.budgetTableSelected = selected; + }; + const fundSubjectChhange = (value, row) => { + const fund = budgetData.fundsList.find(item => item.code == value); + row.subjectCode = fund.code; + row.subtotal = 0; + row.subjectDetailList = []; + if (!fund.extendForm) { + row.extendFormId = undefined; + } else { + row.extendFormId = fund.extendForm; + } + }; + //鑾峰彇棰勭畻鏄庣粏/鍔ㄦ€佽〃鏍� + const openFindDetailed = async row => { + budgetData.currentBudgetRow = row; + //璇锋眰鎺ュ彛鑾峰彇鏁版嵁 + const res = await Api.projectFundGetTableConfig(row.extendFormId); + res.data.forEach(item => { + if (item.extendType == 'XIALAKUANG') { + item.source = item.source.split(','); + } + if (item.isSum == '1') { + let source = JSON.parse(item.source); + // const key = new String(source.key); + let key = source.key; + const fields = source.value.split(','); + for (let i = 0, length = Math.ceil(key.length / 2); i < length; i++) { + const index = '{' + i + '}'; + key = key.replace(index, 'otherJson.' + fields[i]); + // key = key.replace(index, 'scope.row.otherJson.' + fields[i]) + } + item.caculte = key; + budgetData.currentBudgetRow.caculte = key; + budgetData.currentBudgetRow.fields = fields; + // const keys = key.match(/[/+*-]/g); + // console.error(key, fields); + // item.fields = fields; + } + }); + budgetData.tableConfig = res.data; + budgetData.findDetailDialog = true; + }; + const extendFormConfirm = subDetailList => { + console.log(subDetailList); + let total = 0; + subDetailList.forEach(item => { + total = absNum(total, item.subtotalSource, '+'); + }); + budgetData.currentBudgetRow.subtotal = moneyFormat(total, 2, ','); + budgetData.currentBudgetRow.subjectDetailList = subDetailList; + budgetData.findDetailDialog = false; + }; + const addSubBudget = () => { + budgetData.currentBudgetRow.subjectDetailList.push({}); + }; + const removeSubBudget = scope => { + budgetData.currentBudgetRow.subjectDetailList.splice(scope.$index, 1); + }; + + //涓婁紶鏂囦欢閫昏緫浠g爜 + const uploadData = reactive({ + uploadDialog: false, + uploadFiles: [] + }); + //涓婁紶鏂囦欢 + const uploadHandler = fileList => { + console.log(fileList); + uploadData.uploadDialog = false; + }; + //鍒犻櫎鏂囦欢 + const deleteFile = (list, index) => { + console.log(list, index); + }; + //涓嬭浇鏂囦欢 + const downloadFile = () => {}; + + //璁$畻楂樺害锛屽浐瀹氭楠ゆ爮 + const caculateHeight = () => { + const step = document.querySelector('#step'); + step.style.top = 300 + window.scrollY + 'px'; + }; + //鑾峰彇楂樺害璁$畻褰撳墠step + const caculateActiveStep = () => { + var windowH = + window.innerHeight || + document.documentElement.clientHeight || + document.body.clientHeight; + const baseInfo = document.getElementById('baseInfo'); + const proIntro = document.getElementById('proIntro'); + const proMerits = document.getElementById('proMerits'); + const proBudget = document.getElementById('proBudget'); + // console.log(data) + if ( + proBudget.getBoundingClientRect().top > 0 && + proBudget.getBoundingClientRect().top < windowH / 2 + ) { + data.activeStep = 4; + } + if ( + proMerits.getBoundingClientRect().top > 0 && + proMerits.getBoundingClientRect().top < windowH / 2 + ) { + data.activeStep = 3; + } + if ( + proIntro.getBoundingClientRect().top > 0 && + proIntro.getBoundingClientRect().top < windowH / 2 + ) { + data.activeStep = 2; + } + if ( + baseInfo.getBoundingClientRect().top > 0 && + baseInfo.getBoundingClientRect().top < windowH / 2 + ) { + data.activeStep = 1; + } + }; + const debonceCaculate = throttle(caculateHeight, 10); + const debonceCaculateStep = debounce(caculateActiveStep, 10); + window.onscroll = () => { + debonceCaculate(); + debonceCaculateStep(); + }; + //鐐瑰嚮step婊氬姩鍒拌閲庡唴 + const scrollToView = id => { + const dom = document.getElementById(`${id}`); + dom.scrollIntoView({ behavior: 'smooth', block: 'center' }); + }; + + watch( + () => props.row, + val => { + const length = Object.keys(val).length; + if (length > 0) { + let applyInfo = JSON.parse(JSON.stringify(val)); + console.error('鏇存柊浜�', applyInfo); + applyInfo.projectTypeId && queryFundListById(applyInfo.projectTypeId); + applyInfo.summaryJson = applyInfo.summaryJson + ? JSON.parse(applyInfo.summaryJson) + : {}; + if (isEmpty(applyInfo.projectTargetCmd)) { + applyInfo.projectTargetCmd = { + subOtherArrayJson: [], + summaryJson: {} + }; + } else { + try { + applyInfo.projectTargetCmd.subOtherArrayJson = JSON.parse( + applyInfo.projectTargetCmd.subOtherArrayJson + ); + } catch (_) { + applyInfo.projectTargetCmd.subOtherArrayJson = []; + } + try { + applyInfo.projectTargetCmd.summaryJson = JSON.parse( + applyInfo.projectTargetCmd.summaryJson + ); + } catch (_) { + applyInfo.projectTargetCmd.summaryJson = {}; + } + } + applyInfo.planSubjectList.forEach(item => { + item.otherJson = item.otherJson ? JSON.parse(item.otherJson) : {}; + }); + data.applyInfo = applyInfo; + } else { + data.applyInfo = { + summaryJson: {}, //椤圭洰姒傝堪 + projectTargetCmd: { + //椤圭洰缁╂晥 + summaryJson: {}, + subOtherArrayJson: [] + }, + planSubjectList: [] + }; + } + }, + { + immediate: true + } + ); + const init = () => { + getApplyDept(); + getMeritsTree(); + selectLoadmore(); + // data.applyInfo.projectTypeId && + // queryFundListById(data.applyInfo.projectTypeId); + }; + init(); + + onMounted(() => { + nextTick(() => { + // data.applyInfo.projectTypeId && + // queryFundListById(data.applyInfo.projectTypeId); + }); + }); + return { + ...toRefs(data), + //鍩烘湰淇℃伅鍜屾杩� + ...toRefs(baseinfoData), + selectDeptChange, + openSelectProjectTypeDialog, + selectProjectType, + selectLoadmore, + selectVisibleChange, + getLeaderByValue, + selectLeaderChange, + //缁╂晥 + ...toRefs(meritsData), + cascaderChange, + onClickNode, + addQuota, + deleteQuota, + //椤圭洰棰勭畻 + ...toRefs(budgetData), + addBudget, + removeBudget, + fundSubjectChhange, + openFindDetailed, + extendFormConfirm, + budgetTableSelectChange, + addSubBudget, + removeSubBudget, + //涓婁紶鏂囦欢 + ...toRefs(uploadData), + uploadHandler, + deleteFile, + downloadFile, + //娴佺▼ + handleBack, + handleSave, + handleSubmit, + handleReturn, + + scrollToView + }; + } +}; +</script> + +<style scoped lang="scss"> +h2 { + text-align: center; +} +.apply-table-wrap { + padding: 0 150px; +} +.step-wrap { + // position: absolute; + // left: 30px; + // top: 75vh; + /* bottom: 0; */ +} + +.one-quota { + display: flex; + flex-direction: row; + align-items: center; + .icon-wrap { + font-size: 16px; + margin-left: 4px; + display: flex; + flex-direction: column; + i { + display: block; + } + .add-icon { + cursor: pointer; + color: #409eff; + } + .delete-icon { + cursor: pointer; + color: #f56c6c; + } + .el-button--mini.is-circle { + padding: 5px; + } + .el-button--mini { + min-height: 20px; + } + } +} +</style> + +<style lang="scss"> +.form-item-override { + .el-form-item__content { + display: flex; + } +} +.cascader-cus { + .el-radio { + // visibility: hidden; + } +} +</style> diff --git a/WebSite/src/views/yo-common/PublicApplyPageList/detail.vue b/WebSite/src/views/yo-common/PublicApplyPageList/detail.vue new file mode 100644 index 0000000000000000000000000000000000000000..99b414e6434b7794a86c2b43cf8ba45364f02f90 --- /dev/null +++ b/WebSite/src/views/yo-common/PublicApplyPageList/detail.vue @@ -0,0 +1,147 @@ +<template> + <div> + <PublicFundApply + :canEdit="CAN_EDIT" + :row="applyInfo" + :flowInfo="flowInfo" + @handleBack="handleBack" + @handleSave="handleSave" + @handleSubmit="handleSubmit" + @handleReturn="handleReturn" + /> + </div> +</template> + +<script> +import { onMounted, reactive, toRefs } from 'vue'; +import Api from '@/api'; +import { ElMessage } from 'element-plus'; +export default { + props: { + canEdit: { + type: Boolean, + required: true + }, + row: { + type: Object, + default: () => { + return {}; + } + } + }, + setup(props, context) { + onMounted(() => { + // if (props.row.id) { + // getPublicDetail(); + // } + }); + const data = reactive({ + flowInfo: { + nextSubmitNodes: [ + { + key: '1599725907064', + value: '绉戠爺澶勫鏍�' + } + ], + canRejectNodes: [ + { + key: '1599725907064', + value: '绉戠爺澶勫鏍�' + } + ], + user: '绯荤粺绠$悊鍛�', + state: '璐熻矗浜鸿ˉ鍏�', + flow: [ + { + actionTime: '2020骞�9鏈�11鏃�', + time: '17:30:43', + icon: '', + flowName: '绔嬮」', + attitude: '', + auditor: '绯荤粺绠$悊鍛�', + startNodeName: '寮€濮�', + endNodeName: '绉戠爺澶勭珛椤�', + flowState: '娴佺▼寮€濮�', + isPassed: 'False', + systemID: '00000000-0000-0000-0000-000000000000', + isEnable: false + }, + { + actionTime: '2020骞�9鏈�11鏃�', + time: '17:31:00', + icon: '', + flowName: '绔嬮」', + attitude: '', + auditor: '绯荤粺绠$悊鍛�', + startNodeName: '绉戠爺澶勭珛椤�', + endNodeName: '璐熻矗浜鸿ˉ鍏�', + flowState: '鎻愪氦', + isPassed: 'False', + systemID: '00000000-0000-0000-0000-000000000000', + isEnable: false + } + ], + btnStates: { + isShowSave: true, + isShowSubmit: true, + isShowReject: true, + isShowRevoke: false, + isShowChart: true, + isShowHistory: true, + isShowUser: true, + isShowState: true, + isShowCancel: false + } + }, + applyInfo: {}, + CAN_EDIT: props.canEdit + }); + const handleBack = () => { + context.emit('switch-page', 'List'); + }; + const getPublicDetail = id => { + Api.getPublicDetail(id).then(res => { + console.log(res); + data.applyInfo = res.data[0]; + }); + }; + const handleSave = async applyInfo => { + if(!props.row.id) { + applyInfo.year = window.sessionStorage.getItem('year'); + applyInfo.planType = 'XIANGMUKU'; + } + const res = await Api.savePublicFundApply(applyInfo); + if (props.row.id) { + ElMessage.success('鏇存柊鐢虫姤涔︽垚鍔�'); + getPublicDetail(props.row.id); + } else { + ElMessage.success('鏂板鐢虫姤涔︽垚鍔�'); + getPublicDetail(res.data[0]); + } + }; + const handleSubmit = (flowOutput, applyInfo) => { + console.log(flowOutput, applyInfo); + }; + const handleReturn = (flowOutput, applyInfo) => { + console.log(flowOutput, applyInfo); + }; + + const init = () => { + if (props.row.id) { + getPublicDetail(props.row.id); + } + }; + init(); + return { + ...toRefs(data), + handleBack, + getPublicDetail, + handleSave, + handleSubmit, + handleReturn + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-common/PublicApplyPageList/index.vue b/WebSite/src/views/yo-common/PublicApplyPageList/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..fe4a7582684af7527fd36eb26cb0a4aecbcc53ca --- /dev/null +++ b/WebSite/src/views/yo-common/PublicApplyPageList/index.vue @@ -0,0 +1,155 @@ +<template> + <div> + <el-card> + <el-row :gutter="20"> + <el-col :span="6"> + <el-date-picker + v-model="queryForm.year" + type="year" + placeholder="閫夋嫨鏃ユ湡" + @change="yearChange" + :clearable="false" + > + </el-date-picker> + </el-col> + <el-col :span="6"> + <el-input + v-model="queryForm.projectName" + placeholder="璇疯緭鍏ラ」鐩悕绉�" + ></el-input> + </el-col> + <el-col :span="6" v-if="showDepartment"> + <el-input + v-model="queryForm.departmentName" + placeholder="璇疯緭鍏ラ儴闂ㄥ悕绉�" + ></el-input> + </el-col> + <el-col :span="3"> + <el-button plain @click="getPageList">鏌ヨ</el-button> + </el-col> + </el-row> + </el-card> + + <el-card class="mt-20"> + <template #header> + <el-row type="flex" justify="start"> + <div> + <el-button disabled plain type="primary" @click="batchSubmitHandler" + >鎵归噺閫氳繃</el-button + > + <el-button disabled plain type="warning" @click="batchRejectHandler" + >鎵归噺椹冲洖</el-button + > + <el-button disabled plain type="danger" @click="batchExportHandler" + >瀵煎嚭</el-button + > + </div> + </el-row> + </template> + <page-query + v-model:pageNO="pageNO" + v-model:pageSize="pageSize" + :total="total" + :tableData="tableData" + :tableConfig="tableConfig" + :primaryKey="primaryKey" + v-model:selectedList="selectedList" + @pageinfo-change="pageInfoChange" + > + <template #tableColumn="{scope}"> + <el-button @click="navToDetail(scope.row)">鏌ョ湅</el-button> + </template> + </page-query> + </el-card> + </div> +</template> + +<script> +import PageQuery from '@/components/PageQuery'; +import Api from '@/api' +import { reactive, toRefs } from 'vue'; +import { ElMessage } from 'element-plus' +export default { + props: { + planType: { + type: String, + required: true + }, + showDepartment: { + type: Boolean, + default: true + } + }, + components: { PageQuery }, + emits: ['switch-page'], + setup(props, context) { + const data = reactive({ + tableData: [], + pageNO: 1, + pageSize: 10, + total: 0, + queryForm: { + year: window.sessionStorage.getItem('year') + }, + selectedList: [], + tableConfig: [ + { prop: 'projectName', label: '椤圭洰鍚嶇О' }, + { prop: 'departmentName', label: '閮ㄩ棬鍚嶇О' }, + { prop: 'departmentCode', label: '閮ㄩ棬缂栧彿' }, + { prop: 'projectLeaderName', label: '璐熻矗浜哄鍚�' }, + { prop: 'projectLeaderCode', label: '璐熻矗浜虹紪鍙�' }, + { prop: 'quotaMoney', label: '鏍稿畾閲戦' }, + { prop: 'state', label: '瀹℃牳鐘舵€�' }, + { prop: 'planType', label: '鐢虫姤涔︾被鍨�' } + ], + primaryKey: 'id' + }); + const yearChange = val => { + const year = new Date(val).getFullYear().toString(); + data.queryForm.year = year; + }; + const getPageList = async () => { + const params = { + planType: props.planType, + pageIndex: data.pageNO, + pageSize: data.pageSize, + ...data.queryForm + }; + const res = await Api.publicGetPageList(params); + data.tableData = res.data; + data.total = res.total; + } + const pageInfoChange = () => { + getPageList(); + } + const navToDetail = row => { + context.emit('switch-page', row); + }; + const batchSubmitHandler = () => { + ElMessage.success('鎻愪氦鎴愬姛'); + }; + const batchRejectHandler = () => { + ElMessage.success('椹冲洖鎴愬姛'); + }; + const batchExportHandler = () => { + ElMessage.success('瀵煎嚭鎴愬姛'); + }; + const init = () => { + getPageList(); + } + init(); + return { + ...toRefs(data), + pageInfoChange, + getPageList, + navToDetail, + batchSubmitHandler, + batchRejectHandler, + batchExportHandler, + yearChange + } + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-common/PublicFundApply/index.vue b/WebSite/src/views/yo-common/PublicFundApply/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..a7c25e4263c97a04a3ea6f73fdd6f5493f5ddaa3 --- /dev/null +++ b/WebSite/src/views/yo-common/PublicFundApply/index.vue @@ -0,0 +1,780 @@ +<template> + <div class="app-container"> + <el-card> + <Flow + :flowInfo="flowInfo" + @handleBack="handleBack" + @handleSave="handleSave" + @handleSubmit="handleSubmit" + @handleReturn="handleReturn" + ></Flow> + </el-card> + <div class="apply-table-wrap"> + <h2>{{applyInfo.year}}骞寸悊瀛﹂櫌鍏敤缁忚垂鐢虫姤琛�</h2> + + <el-form :disabled="!CAN_EDIT"> + <el-card class="mt-20"> + <template #header> + 鍩烘湰淇℃伅 + </template> + <el-row class="form-item-override" :gutter="20"> + <el-col :xs="6" :sm="6" :md="6" :lg="6"> + <el-form-item label="鐢虫姤閮ㄩ棬锛�"> + <el-select + v-model="applyInfo.departmentCode" + @change="selectDeptChange" + placeholder="璇烽€夋嫨鐢虫姤閮ㄩ棬" + > + <el-option + v-for="item in applyDept" + :key="item.id" + :label="item.name" + :value="item.code" + ></el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :xs="6" :sm="6" :md="6" :lg="6"> + <el-form-item label="椤圭洰鍚嶇О锛�"> + <el-input + v-model="applyInfo.projectName" + placeholder="璇疯緭鍏ラ」鐩悕绉�" + ></el-input> + </el-form-item> + </el-col> + <el-col :xs="6" :sm="6" :md="6" :lg="6"> + <el-form-item label="璐熻矗浜猴細"> + <el-select + @change="selectLeaderChange" + v-model="applyInfo.projectLeaderId" + popper-class="select-user" + filterable + remote + :loading="selectUserLoading" + :remote-method="getLeaderByValue" + @visible-change="selectVisibleChange" + placeholder="璇烽€夋嫨璐熻矗浜�" + > + <el-option + v-for="user in userList" + :key="user.id" + :label="user.name" + :value="user.id" + ></el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :xs="6" :sm="6" :md="6" :lg="6"> + <el-form> + <el-button type="primary" plain @click="baseInfoDialog = true" + >鏌ョ湅鍩虹淇℃伅</el-button + > + </el-form> + </el-col> + </el-row> + </el-card> + + <el-card class="mt-20"> + <template #header> + 椤圭洰姒傝堪 + </template> + <el-form-item label="椤圭洰姒傝堪:"> + <el-input + v-model="applyInfo.summaryJson.projectIntro" + type="textarea" + ></el-input> + </el-form-item> + </el-card> + + <el-card class="mt-20"> + <template #header> + 椤圭洰棰勭畻 + <div style="margin-top: 10px;"> + <el-button type="primary" plain @click="addBudget" + >鏂板</el-button + > + <el-button type="danger" plain @click="removeBudget" + >鍒犻櫎</el-button + > + </div> + </template> + <el-table + :data="applyInfo.planSubjectList" + border + stripe + ref="budgetTableRef" + @selection-change="budgetTableSelectChange" + > + <el-table-column type="selection"></el-table-column> + <el-table-column label="鏄庣粏鍐呭"> + <template #default="scope"> + <el-input + v-model="scope.row.subjectContent" + placeholder="璇疯緭鍏�..." + ></el-input> + </template> + </el-table-column> + <el-table-column label="缁忔祹绉戠洰"> + <template #default="scope"> + <el-select + @change="value => fundSubjectChhange(value, scope.row)" + v-model="scope.row.subjectName" + placeholder="璇疯緭鍏�..." + > + <el-option + v-for="item in fundsList" + :key="item.id" + :label="item.fundName" + :value="item.fundCode" + ></el-option> + </el-select> + <!-- <el-input + v-model="scope.row.subjectName" + placeholder="璇疯緭鍏�..." + ></el-input> --> + </template> + </el-table-column> + <el-table-column label="绉戠洰缂栧彿"> + <template #default="scope"> + <el-input + v-model="scope.row.subjectCode" + placeholder="璇疯緭鍏�..." + ></el-input> + </template> + </el-table-column> + <el-table-column label="绉戠洰璇存槑"> + <template #default="scope"> + <el-input + v-model="scope.row.otherJson.subjectIntro" + placeholder="璇疯緭鍏�..." + ></el-input> + </template> + </el-table-column> + <el-table-column label="鏁伴噺"> + <template #default="scope"> + <el-input + :disabled="!!scope.row.extendFormId" + v-model="scope.row.number" + placeholder="璇疯緭鍏�..." + ></el-input> + </template> + </el-table-column> + <el-table-column label="鍗曚环"> + <template #default="scope"> + <el-input + :disabled="!!scope.row.extendFormId" + v-model="scope.row.price" + placeholder="璇疯緭鍏�..." + ></el-input> + </template> + </el-table-column> + <el-table-column label="閲戦"> + <template #default="scope"> + <el-input + :disabled="!!scope.row.extendFormId" + v-model="scope.row.subtotal" + placeholder="璇疯緭鍏�..." + ></el-input> + </template> + </el-table-column> + <el-table-column label="鏀垮簻閲囪喘"> + <template #default="scope"> + <el-input + v-model="scope.row.otherJson.orgPurchase" + placeholder="璇疯緭鍏�..." + ></el-input> + </template> + </el-table-column> + <el-table-column label="璧勯噾鏉ユ簮"> + <template #default="scope"> + <el-input + v-model="scope.row.otherJson.moneyFrom" + placeholder="璇疯緭鍏�..." + ></el-input> + </template> + </el-table-column> + <el-table-column label="濉啓鏄庣粏" width="120"> + <template #default="scope"> + <el-button + v-if="scope.row.extendFormId" + type="primary" + plain + @click="openFindDetailed(scope.row)" + >鏌ョ湅濉啓鏄庣粏</el-button + > + </template> + </el-table-column> + </el-table> + </el-card> + <el-card class="mt-20"> + <template #header> + 涓婁紶闄勪欢 + </template> + <el-button type="primary" plain @click="uploadDialog = true" + >涓婁紶闄勪欢</el-button + > + <el-tag + type="info" + style="margin-left:5px;" + v-for="(file, index) in uploadFiles" + :key="index" + :closable="canEdit" + @close="deleteFile(uploadFiles, index)" + @click="downloadFile(file)" + >{{ file.filename }}</el-tag + > + <UploadFile + v-model="uploadDialog" + @upload-handler="uploadHandler" + ></UploadFile> + </el-card> + </el-form> + </div> + + <!-- <el-dialog title="濉啓鏌ョ湅鏄庣粏" width="80%" v-model="findDetailDialog"> + <el-row> + <el-button type="primary" plain @click="addSubBudget">鏂板</el-button> + </el-row> + <el-table + class="mt-20" + border + stripe + :data="currentBudgetRow.subjectDetailList" + > + <el-table-column + v-for="item in tableConfig" + :key="item" + :label="item.label" + :prop="item.prop" + > + </el-table-column> + <el-table-column label="鎿嶄綔"> + <template #default="scope"> + <el-button type="danger" plain @click="removeSubBudget(scope)" + >鍒犻櫎</el-button + > + </template> + </el-table-column> + </el-table> + </el-dialog> --> + <ExtendForm + v-model="findDetailDialog" + :tableConfig="tableConfig" + :tableData="currentBudgetRow.subjectDetailList" + :caculte="currentBudgetRow.caculte" + :fields="currentBudgetRow.fields" + @on-confirm="extendFormConfirm" + ></ExtendForm> + <el-dialog title="鍩虹淇℃伅" width="80%" v-model="baseInfoDialog"> + <div class="col-table"> + <el-row> + <el-col :span="4" class="col-df-aic bb br"> + <span>鏁欏笀鏍囧噯棰濆害</span> + </el-col> + <el-col :span="8" class="bb br"> + <div class="info-wrap"> + <div>浜烘暟1.0鍒�10.0鐨勪汉鍧囬搴︿负6000.0鍏�</div> + <div>浜烘暟11.0鍒�50.0鐨勪汉鍧囬搴︿负6000.0鍏�</div> + <div>浜烘暟51.0鍒�80.0鐨勪汉鍧囬搴︿负6000.0鍏�</div> + <div>浜烘暟81.0鍒�100.0鐨勪汉鍧囬搴︿负6000.0鍏�</div> + <div>浜烘暟101.0鍒�9999.0鐨勪汉鍧囬搴︿负6000.0鍏�</div> + </div> + </el-col> + <el-col :span="4" class="col-df-aic bb br"> + <span>瀛︾敓鏍囧噯棰濆害</span> + </el-col> + <el-col :span="8" class="bb"> + <div class="info-wrap"> + <div>浜烘暟1.0鍒�10.0鐨勪汉鍧囬搴︿负6000.0鍏�</div> + <div>浜烘暟11.0鍒�50.0鐨勪汉鍧囬搴︿负6000.0鍏�</div> + <div>浜烘暟51.0鍒�80.0鐨勪汉鍧囬搴︿负6000.0鍏�</div> + <div>浜烘暟81.0鍒�100.0鐨勪汉鍧囬搴︿负6000.0鍏�</div> + <div>浜烘暟101.0鍒�9999.0鐨勪汉鍧囬搴︿负6000.0鍏�</div> + </div> + </el-col> + </el-row> + <el-row> + <el-col :span="4" class="bb br"> + <span>瀹為檯鑱屽伐浜烘暟</span> + </el-col> + <el-col :span="4" class="bb br"> + 100 + </el-col> + <el-col :span="4" class="bb br"> + <span>鍏朵腑锛氫换璇炬暀甯�</span> + </el-col> + <el-col :span="4" class="bb br"> + <span>50</span> + </el-col> + <el-col :span="4" class="bb br"> + <span>鏈鐢熸€讳汉鏁�</span> + </el-col> + <el-col :span="4" class="bb"> + <span>12000</span> + </el-col> + </el-row> + <el-row> + <el-col :span="4" class="bb br"> + <span>鐮旂┒鐢熸€讳汉鏁�</span> + </el-col> + <el-col :span="4" class="bb br"> + 500 + </el-col> + <el-col :span="4" class="bb br"> + <span>鍏朵腑锛氱澹汉鏁�</span> + </el-col> + <el-col :span="4" class="bb br"> + <span>300</span> + </el-col> + <el-col :span="4" class="bb br"> + <span>鍏朵腑锛氬崥澹汉鏁�</span> + </el-col> + <el-col :span="4" class="bb"> + <span>200</span> + </el-col> + </el-row> + <el-row> + <el-col :span="4" class="bb br"> + <span>褰撳勾姣曚笟纭曞+</span> + </el-col> + <el-col :span="4" class="bb br"> + 500 + </el-col> + <el-col :span="4" class="bb br"> + <span>褰撳勾姣曚笟鍗氬+</span> + </el-col> + <el-col :span="4" class="bb br"> + <span>300</span> + </el-col> + <el-col :span="4" class="bb br"> + <span>瀛﹀巻鐣欏鐢�</span> + </el-col> + <el-col :span="4" class="bb"> + <span>200</span> + </el-col> + </el-row> + <el-row> + <el-col :span="4" class="bb br"> + <span>鍏叡璇炬椂</span> + </el-col> + <el-col :span="4" class="bb br"> + 500 + </el-col> + <el-col :span="4" class="bb br"> + <span>鍏朵粬缁忚垂</span> + </el-col> + <el-col :span="4" class="bb br"> + <span>300</span> + </el-col> + <el-col :span="4" class="bb br"> + <span>棰勭畻鎺у埗鏁�</span> + </el-col> + <el-col :span="4" class="bb"> + <span>200</span> + </el-col> + </el-row> + <el-row class="fc-r"> + <el-col :span="4" class="br"> + <span>鍒嗛厤瀹氶閲戦</span> + </el-col> + <el-col :span="8" class="br"> + 500 + </el-col> + <el-col :span="4" class="br"> + <span>褰撳墠鍙敤閲戦</span> + </el-col> + <el-col :span="8"> + <span>200</span> + </el-col> + </el-row> + </div> + </el-dialog> + </div> +</template> + +<script> +import { reactive, toRefs, watch } from 'vue'; +import { absNum, moneyFormat } from '@/utils'; +import Api from '@/api'; +import ExtendForm from '@/components/ExtendFormTable'; +export default { + components: { ExtendForm }, + props: { + canEdit: { + type: Boolean, + required: true + }, + row: { + type: Object, + default: () => { + return {}; + } + }, + flowInfo: { + type: Object, + required: true + } + }, + setup(props, context) { + watch( + () => props.row, + val => { + console.log('val', val); + } + ); + const data = reactive({ + CAN_EDIT: props.canEdit, + applyInfo: {}, + baseInfoDialog: false + }); + + const handleBack = () => { + context.emit('handleBack'); + }; + const handleSave = () => { + const applyInfo = JSON.parse(JSON.stringify(data.applyInfo)) + applyInfo.summaryJson = JSON.stringify(applyInfo.summaryJson); + applyInfo.planSubjectList.forEach(item => { + item.otherJson = JSON.stringify(item.otherJson); + item.subjectDetailList.forEach(jtem => { + jtem.otherJson = JSON.stringify(jtem.otherJson); + }) + }); + context.emit('handleSave', applyInfo); + }; + const handleSubmit = flowOutput => { + context.emit('handleSubmit', flowOutput, data.applyInfo); + }; + const handleReturn = flowOutput => { + context.emit('handleReturn', flowOutput, data.applyInfo); + }; + //鍩烘湰淇℃伅锛岄」鐩杩伴€昏緫浠g爜 + const baseinfoData = reactive({ + applyDept: [], //鐢虫姤閮ㄩ棬 + userList: [], + userQuery: { + pageIndex: 1, + pageSize: 15, + total: 0 + }, + selectUserLoading: false + }); + const selectDeptChange = (val) => { + const dept = baseinfoData.applyDept.find(item => item.code == val); + data.applyInfo.departmentName = dept.name; + } + const getApplyDept = async () => { + const res = await Api.pfApplyDept(); + baseinfoData.applyDept = res.data; + }; + //涓嬫媺妗嗚Е搴曡Е椤跺姞杞� + const selectVisibleChange = visible => { + if (visible) { + console.log('鎵撳紑'); + const SELECTWRAP_DOM = document.querySelector( + '.select-user .el-select-dropdown__wrap.el-scrollbar__wrap' + ); + const totalPage = Math.ceil( + absNum(baseinfoData.userQuery.total, baseinfoData.userQuery.pageSize, '/') + ); + SELECTWRAP_DOM && + SELECTWRAP_DOM.addEventListener('scroll', () => { + const down = + SELECTWRAP_DOM.scrollHeight - SELECTWRAP_DOM.scrollTop - 1 <= + SELECTWRAP_DOM.clientHeight; + const up = SELECTWRAP_DOM.scrollTop <= 0; + if (down) { + console.log('瑙﹀簳鍔犺浇'); + if (baseinfoData.userQuery.pageIndex >= totalPage) { + //鏈€鍚庝竴椤� + console.log('鏈€鍚庝竴椤�'); + return; + } + baseinfoData.userQuery.pageIndex++; //涓嬩竴椤� + selectLoadmore(); + } + if (up) { + console.log('瑙﹂《鍔犺浇'); + if (baseinfoData.userQuery.pageIndex <= 1) { + //绗竴椤� + console.log('绗竴椤�'); + return; + } + baseinfoData.userQuery.pageIndex--; //涓嬩竴椤� + selectLoadmore(); + } + }); + } + }; + //璐熻矗浜轰笅鎷夋鑾峰彇鏁版嵁 + const selectLoadmore = async name => { + baseinfoData.selectUserLoading = true; + const params = { + pageIndex: baseinfoData.userQuery.pageIndex, + pageSize: baseinfoData.userQuery.pageSize + }; + if (name) { + params.name = name; + } + let res; + try { + res = await Api.projectFundQueryUserList(params); + } catch (error) { + baseinfoData.selectUserLoading = false; + return ; + } + baseinfoData.userList = res.data; + baseinfoData.userQuery.total = res.total; + baseinfoData.selectUserLoading = false; + }; + //璐熻矗浜轰笅鎷夋杈撳叆妯$硦鏌ヨ + const getLeaderByValue = name => { + selectLoadmore(name); + }; + const selectLeaderChange = leaderId => { + const leader = baseinfoData.userList.find(item => item.id == leaderId); + data.applyInfo.projectLeaderName = leader.name; + data.applyInfo.projectLeaderCode = leader.code; + } + //椤圭洰棰勭畻閫昏緫浠g爜 + const budgetData = reactive({ + fundsList: [], + budgetTableRef: null, //椤圭洰棰勭畻琛ㄦ牸 + budgetTableSelected: [], + findDetailDialog: false, + tableConfig: [ + { label: '鏄庣粏鍐呭', prop: 'content' }, + { label: '缁忔祹绉戠洰', prop: 'kemu' }, + { label: '绉戠洰缂栧彿', prop: 'kemucode' }, + { label: '绉戠洰璇存槑', prop: 'kemushuoming' } + ], + currentBudgetRow: {} + }); + const queryDailyFund = async () => { + const res = await Api.publicQueryDailyFund(); + console.error(res); + budgetData.fundsList = res.data + }; + //娣诲姞棰勭畻 + const addBudget = () => { + data.applyInfo.planSubjectList.push({ + otherJson: {}, + subjectDetailList: [] + }); + }; + //鍒犻櫎棰勭畻 + const removeBudget = () => { + budgetData.budgetTableSelected.forEach(item => { + const index = data.applyInfo.planSubjectList.findIndex( + jtem => item.id == jtem.id + ); + data.applyInfo.planSubjectList.splice(index, 1); + }); + budgetData.budgetTableRef.clearSelection(); + }; + //琛ㄦ牸閫変腑椤规敼鍙� + const budgetTableSelectChange = selected => { + budgetData.budgetTableSelected = selected; + }; + const fundSubjectChhange = (value, row) => { + const fund = budgetData.fundsList.find(item => item.fundCode == value); + row.subjectCode = fund.fundCode; + row.subtotal = 0; + row.subjectDetailList = []; + if (!fund.extendFormId) { + row.extendFormId = undefined; + } else { + row.extendFormId = fund.extendFormId; + } + }; + //鑾峰彇棰勭畻鏄庣粏/鍔ㄦ€佽〃鏍� + const openFindDetailed = async row => { + budgetData.currentBudgetRow = row; + //璇锋眰鎺ュ彛鑾峰彇鏁版嵁 + const res = await Api.projectFundGetTableConfig(row.extendFormId); + res.data.forEach(item => { + if(item.extendType == "XIALAKUANG") { + item.source = item.source.split(','); + } + if(item.isSum == '1') { + let source = JSON.parse(item.source); + // const key = new String(source.key); + let key = source.key; + const fields = source.value.split(','); + for(let i = 0, length = Math.ceil(key.length / 2); i < length; i++) { + const index = '{' + i + '}' + key = key.replace(index, 'otherJson.' + fields[i]) + // key = key.replace(index, 'scope.row.otherJson.' + fields[i]) + } + item.caculte = key; + budgetData.currentBudgetRow.caculte = key; + budgetData.currentBudgetRow.fields = fields; + // const keys = key.match(/[/+*-]/g); + // console.error(key, fields); + // item.fields = fields; + } + }) + budgetData.tableConfig = res.data; + budgetData.findDetailDialog = true; + }; + const extendFormConfirm = subDetailList => { + console.log(subDetailList); + let total = 0; + subDetailList.forEach(item => { + total = absNum(total, item.subtotalSource, '+') + }) + budgetData.currentBudgetRow.subtotal = moneyFormat(total, 2, ','); + budgetData.currentBudgetRow.subjectDetailList = subDetailList; + budgetData.findDetailDialog = false; + }; + const addSubBudget = () => { + budgetData.currentBudgetRow.subjectDetailList.push({}); + }; + const removeSubBudget = scope => { + budgetData.currentBudgetRow.subjectDetailList.splice(scope.$index, 1); + }; + + //涓婁紶鏂囦欢閫昏緫浠g爜 + const uploadData = reactive({ + uploadDialog: false, + uploadFiles: [] + }); + //涓婁紶鏂囦欢 + const uploadHandler = fileList => { + console.log(fileList); + uploadData.uploadDialog = false; + }; + //鍒犻櫎鏂囦欢 + const deleteFile = (list, index) => { + console.log(list, index); + }; + //涓嬭浇鏂囦欢 + const downloadFile = () => {}; + + watch( + () => props.row, + val => { + const length = Object.keys(val).length; + if (length > 0) { + let applyInfo = JSON.parse(JSON.stringify(val)); + console.error('鏇存柊浜�', applyInfo); + applyInfo.summaryJson = applyInfo.summaryJson + ? JSON.parse(applyInfo.summaryJson) + : {}; + applyInfo.planSubjectList.forEach(item => { + item.otherJson = item.otherJson ? JSON.parse(item.otherJson) : {}; + }); + data.applyInfo = applyInfo; + } else { + data.applyInfo = { + summaryJson: {}, //椤圭洰姒傝堪 + planSubjectList: [] + }; + } + }, + { + immediate: true + } + ); + + const init = () => { + getApplyDept(); + selectLoadmore(); + queryDailyFund(); + }; + init(); + return { + ...toRefs(data), + //鍩烘湰淇℃伅鍜屾杩� + ...toRefs(baseinfoData), + selectDeptChange, + selectLoadmore, + selectVisibleChange, + getLeaderByValue, + selectLeaderChange, + //椤圭洰棰勭畻 + ...toRefs(budgetData), + addBudget, + removeBudget, + fundSubjectChhange, + openFindDetailed, + extendFormConfirm, + budgetTableSelectChange, + addSubBudget, + removeSubBudget, + //涓婁紶鏂囦欢 + ...toRefs(uploadData), + uploadHandler, + deleteFile, + downloadFile, + + handleBack, + handleSave, + handleSubmit, + handleReturn + }; + } +}; +</script> + +<style scoped lang="scss"> +h2 { + text-align: center; +} +.apply-table-wrap { + padding: 0 150px; +} +.col-table { + .info-wrap { + div { + padding: 2px 0; + } + } + .fc-r { + color: red; + } + .el-col { + padding: 10px; + } + .col-df-aic { + display: flex; + align-items: center; + } + .bb { + border-bottom: 1px solid rgba($color: #ebeef5, $alpha: 1); + } + .br { + border-right: 1px solid rgba($color: #ebeef5, $alpha: 1); + } +} +.one-quota { + display: flex; + flex-direction: row; + align-items: center; + .icon-wrap { + font-size: 16px; + margin-left: 4px; + display: flex; + flex-direction: column; + i { + display: block; + } + .add-icon { + cursor: pointer; + color: #409eff; + } + .delete-icon { + cursor: pointer; + color: #f56c6c; + } + } +} +</style> + +<style lang="scss"> +.form-item-override { + .el-form-item__content { + display: flex; + } +} +</style> diff --git a/WebSite/src/views/yo-dept-bz/find/FindBackDeptFund/index.vue b/WebSite/src/views/yo-dept-bz/find/FindBackDeptFund/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..6e3fc6950b54dbc853d07ae831cf32902568d05b --- /dev/null +++ b/WebSite/src/views/yo-dept-bz/find/FindBackDeptFund/index.vue @@ -0,0 +1,92 @@ +<template> + <div class="app-container"> + <el-tabs type="border-card" stretch> + <el-tab-pane label="鍐呮兜寤鸿"> + <el-card> + <el-row :gutter="20"> + <el-col :span="6"> + <el-input placeholder="璇疯緭鍏ュ勾浠�"></el-input> + </el-col> + <el-col :span="6"> + <el-input placeholder="璇疯緭鍏ラ」鐩悕绉�"></el-input> + </el-col> + <el-col :span="3"> + <el-button plain>鏌ヨ</el-button> + </el-col> + </el-row> + </el-card> + + <el-card class="mt-20"> + <page-query + v-model:pageNO="pageNO" + v-model:pageSize="pageSize" + :total="total" + :tableData="tableData" + :tableConfig="tableConfig" + :primaryKey="primaryKey" + :showSelection="false" + :selectedList="selectedList" + @pageinfo-change="pageInfoChange" + > + <template #tableColumn="{scope}"> + <el-button @click="navToDetail(scope.row)">鏌ョ湅</el-button> + </template> + </page-query> + </el-card> + </el-tab-pane> + <el-tab-pane label="瀛︾敓娲诲姩缁忚垂">瀛︾敓娲诲姩缁忚垂</el-tab-pane> + <el-tab-pane label="鐗╀笟绠$悊璐�">鐗╀笟绠$悊璐�</el-tab-pane> + </el-tabs> + </div> +</template> + +<script> +import PageQuery from '@/components/PageQuery'; +import { reactive, toRefs } from 'vue'; +export default { + components: { PageQuery }, + setup() { + const data = reactive({ + tableData: [], + pageNO: 1, + pageSize: 10, + total: 0, + selectedList: [], + tableConfig: [ + { prop: 'agreementNumber', label: '椤圭洰鍚嶇О' }, + { prop: 'agreementName', label: '閮ㄩ棬鍚嶇О' }, + { prop: 'donorName', label: '閮ㄩ棬缂栧彿' }, + { prop: 'recipient', label: '璐熻矗浜哄鍚�' }, + { prop: 'signDate', label: '璐熻矗浜虹紪鍙�' }, + { prop: 'startTime', label: '鏍稿畾閲戦' }, + { prop: 'endTime', label: '瀹℃牳鐘舵€�' }, + { prop: 'agreementAmountFormat', label: '鐢虫姤涔︾被鍨�' } + ], + primaryKey: 'id' + }); + + const navToDetail = row => { + console.log(row); + }; + const pageInfoChange = val => { + console.error(val); + console.log(data.pageNO, data.pageSize); + // data.pageNo = val.page; + // data.pageSize = val.limit; + }; + return { + ...toRefs(data), + navToDetail, + pageInfoChange + }; + } +}; +</script> + +<style lang="scss"> +.override-form-item { + .el-form-item__content { + display: flex; + } +} +</style> diff --git a/WebSite/src/views/yo-dept-bz/find/FindIncomeApply/components/List.vue b/WebSite/src/views/yo-dept-bz/find/FindIncomeApply/components/List.vue new file mode 100644 index 0000000000000000000000000000000000000000..2eb4a8e1e9fed3f1669abe434da590bd823ae044 --- /dev/null +++ b/WebSite/src/views/yo-dept-bz/find/FindIncomeApply/components/List.vue @@ -0,0 +1,129 @@ +<template> + <div class="app-container"> + <el-card> + <el-row :gutter="20"> + <el-col :span="4"> + <el-input v-model="year" placeholder="璇疯緭鍏ュ勾浠�"></el-input> + </el-col> + <el-col :span="3"> + <el-button plain @click="getIncomeList">鏌ヨ</el-button> + </el-col> + </el-row> + </el-card> + + <el-card class="mt-20"> + <!-- <template #header> + <el-row type="flex" justify="start"> + <div> + <el-button plain type="primary" @click="createIncomeApply" + >鏂板缓</el-button + > + <el-button plain type="primary">鎵归噺鎻愪氦</el-button> + <el-button plain type="warning">鎵归噺鎾ゅ洖</el-button> + <el-button plain type="danger" @click="deleteIncome" + >鍒犻櫎</el-button + > + </div> + </el-row> + </template> --> + + <page-query + v-model:pageNO="pageNO" + v-model:pageSize="pageSize" + :total="total" + :tableData="tableData" + :tableConfig="tableConfig" + :primaryKey="primaryKey" + v-model:selectedList="selectedList" + @pageinfo-change="pageInfoChange" + > + <template #tableColumn="{scope}"> + <el-button type="primary" @click="navToDetail(scope.row)" + >鏌ョ湅</el-button + > + </template> + </page-query> + </el-card> + </div> +</template> + +<script> +import PageQuery from '@/components/PageQuery'; +import { onMounted, reactive, toRefs } from 'vue'; +import Api from '@/api'; +import Message from 'element-plus/lib/el-message'; +export default { + components: { PageQuery }, + emits: ['switch-page'], + setup(props, context) { + onMounted(() => { + getIncomeList(); + }); + const data = reactive({ + tableData: [{}], + pageNO: 1, + pageSize: 10, + total: 0, + year: '', + selectedList: [], + tableConfig: [ + { prop: 'planType', label: '鏀跺叆绫诲瀷' }, + { prop: 'departmentCode', label: '閮ㄩ棬缂栧彿' }, + { prop: 'departmentName', label: '閮ㄩ棬鍚嶇О' }, + { prop: 'totalMoney', label: '鎬婚噾棰�' }, + { prop: 'state', label: '瀹℃壒鐘舵€�' } + ], + primaryKey: 'id' + }); + const getIncomeList = () => { + Api.getInComeList({ + pageIndex: data.pageNO, + pageSize: data.pageSize, + departmentCode: '', + year: data.year, + id: null + }).then(res => { + data.tableData = res.data; + data.total = res.total; + }); + }; + const createIncomeApply = () => { + context.emit('switch-page', 'Detail', true); + }; + const navToDetail = row => { + context.emit('switch-page', 'Detail', false, row); + }; + const pageInfoChange = val => { + data.pageNo = val.page; + data.pageSize = val.limit; + getIncomeList(); + }; + const deleteIncome = () => { + let arr = []; + data.selectedList.forEach(item => { + arr.push(item.id); + }); + Api.deleteInCome(arr).then(() => { + Message.success('鍒犻櫎鎴愬姛'); + getIncomeList(); + }); + }; + return { + ...toRefs(data), + getIncomeList, + createIncomeApply, + navToDetail, + pageInfoChange, + deleteIncome + }; + } +}; +</script> + +<style lang="scss"> +.override-form-item { + .el-form-item__content { + display: flex; + } +} +</style> diff --git a/WebSite/src/views/yo-dept-bz/find/FindIncomeApply/index.vue b/WebSite/src/views/yo-dept-bz/find/FindIncomeApply/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..b95119e7590af85fbe987cdf65d32fffc5279a92 --- /dev/null +++ b/WebSite/src/views/yo-dept-bz/find/FindIncomeApply/index.vue @@ -0,0 +1,44 @@ +<template> + <div class="app-container"> + <transition name="fade-transform" mode="out-in"> + <component + :is="currentComponent" + @switch-page="switchPage" + :canEdit="canEdit" + :row="info" + ></component> + </transition> + </div> +</template> + +<script> +import List from '@/views/yo-dept-bz/find/FindIncomeApply/components/List.vue'; +import Detail from '@/views/yo-dept-bz/first/IncomeApply/components/Detail'; +import { reactive, toRefs } from 'vue'; +export default { + name: 'ProjectCheck', + components: { + List, + Detail + }, + setup() { + const data = reactive({ + currentComponent: 'List', + info: {}, + canEdit: false + }); + + const switchPage = (page, canEdit, row) => { + data.currentComponent = page; + data.canEdit = canEdit; + data.info = row; + }; + return { + ...toRefs(data), + switchPage + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-bz/find/FindPeopleFundApply/components/List.vue b/WebSite/src/views/yo-dept-bz/find/FindPeopleFundApply/components/List.vue new file mode 100644 index 0000000000000000000000000000000000000000..ff60936322461dc56c0357d5c43bb3a2288d1c43 --- /dev/null +++ b/WebSite/src/views/yo-dept-bz/find/FindPeopleFundApply/components/List.vue @@ -0,0 +1,133 @@ +<template> + <div class="app-container"> + <el-card> + <el-row :gutter="20"> + <el-col :span="4"> + <el-input placeholder="璇疯緭鍏ュ勾浠�"></el-input> + </el-col> + <el-col :span="4"> + <el-input placeholder="璇疯緭鍏ラ」鐩悕绉�"></el-input> + </el-col> + <el-col :span="3"> + <el-button plain>鏌ヨ</el-button> + </el-col> + </el-row> + </el-card> + + <el-card class="mt-20"> + <!-- <template #header> + <el-row type="flex" justify="start"> + <div> + <el-button plain type="primary" @click="createPeopleApply" + >鏂板缓</el-button + > + <el-button disabled plain type="primary">鎵归噺鎻愪氦</el-button> + <el-button disabled plain type="warning">鎵归噺鎾ゅ洖</el-button> + <el-button + :disabled="selectedList.length == 0" + plain + type="danger" + @click="deletePerson" + >鍒犻櫎</el-button + > + </div> + </el-row> + </template> --> + + <page-query + v-model:pageNO="pageNO" + v-model:pageSize="pageSize" + :total="total" + :tableData="tableData" + :tableConfig="tableConfig" + :primaryKey="primaryKey" + v-model:selectedList="selectedList" + @pageinfo-change="pageInfoChange" + > + <template #tableColumn="{scope}"> + <el-button @click="navToDetail(scope.row)">鏌ョ湅</el-button> + </template> + </page-query> + </el-card> + </div> +</template> + +<script> +import PageQuery from '@/components/PageQuery'; +import { onMounted, reactive, toRefs } from 'vue'; +import Api from '@/api'; +import { ElMessage } from 'element-plus'; +export default { + components: { PageQuery }, + setup(props, context) { + onMounted(() => { + getPersonList(); + }); + const data = reactive({ + tableData: [], + pageNO: 1, + pageSize: 10, + total: 0, + selectedList: [], + tableConfig: [ + { prop: 'projectName', label: '椤圭洰鍚嶇О' }, + { prop: 'departmentName', label: '閮ㄩ棬鍚嶇О' }, + { prop: 'departmentCode', label: '閮ㄩ棬缂栧彿' }, + { prop: 'projectLeaderName', label: '璐熻矗浜哄悕绉�' }, + { prop: 'projectLeaderCode', label: '璐熻矗浜虹紪鍙�' }, + { prop: 'quotaMoney', label: '鏍稿畾閲戦' }, + { prop: 'state', label: '瀹℃牳鐘舵€�' }, + { prop: 'planType', label: '鐢虫姤涔︾被鍨�' } + ], + primaryKey: 'id' + }); + const getPersonList = () => { + Api.getPersonList({ + pageIndex: 1, + pageSize: 10 + }).then(res => { + data.tableData = res.data; + data.total = res.total; + }); + }; + const createPeopleApply = () => { + context.emit('switch-page', 'Detail', true); + }; + const navToDetail = row => { + context.emit('switch-page', 'Detail', true, row); + }; + const pageInfoChange = val => { + console.error(val); + console.log(data.pageNO, data.pageSize); + // data.pageNo = val.page; + // data.pageSize = val.limit; + }; + const deletePerson = () => { + let arr = []; + data.selectedList.forEach(item => { + arr.push(item.id); + }); + Api.deletePersonList(arr).then(() => { + getPersonList(); + ElMessage.success('鎵归噺鍒犻櫎鎴愬姛'); + }); + }; + return { + ...toRefs(data), + getPersonList, + createPeopleApply, + navToDetail, + pageInfoChange, + deletePerson + }; + } +}; +</script> + +<style lang="scss"> +.override-form-item { + .el-form-item__content { + display: flex; + } +} +</style> diff --git a/WebSite/src/views/yo-dept-bz/find/FindPeopleFundApply/index.vue b/WebSite/src/views/yo-dept-bz/find/FindPeopleFundApply/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..f05823114755b68edca0eb540f07c8676cbb9b32 --- /dev/null +++ b/WebSite/src/views/yo-dept-bz/find/FindPeopleFundApply/index.vue @@ -0,0 +1,44 @@ +<template> + <div class="app-container"> + <transition name="fade-transform" mode="out-in"> + <component + :is="currentComponent" + @switch-page="switchPage" + :canEdit="canEdit" + :row="info" + ></component> + </transition> + </div> +</template> + +<script> +import List from '@/views/yo-dept-bz/find/FindPeopleFundApply/components/List'; +import Detail from '@/views/yo-dept-bz/first/PeopleFundApply/components/Detail'; +import { reactive, toRefs } from 'vue'; +export default { + name: 'ProjectCheck', + components: { + List, + Detail + }, + setup() { + const data = reactive({ + currentComponent: 'List', + info: {}, + canEdit: false + }); + + const switchPage = (page, canEdit, row) => { + data.currentComponent = page; + data.canEdit = canEdit; + data.info = row; + }; + return { + ...toRefs(data), + switchPage + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-bz/find/FindProjectFundApply/components/List.vue b/WebSite/src/views/yo-dept-bz/find/FindProjectFundApply/components/List.vue new file mode 100644 index 0000000000000000000000000000000000000000..7038d1d54ef94c546462fb14b4ea711a1e6343ab --- /dev/null +++ b/WebSite/src/views/yo-dept-bz/find/FindProjectFundApply/components/List.vue @@ -0,0 +1,120 @@ +<template> + <div class="app-container"> + <el-card> + <el-row :gutter="20"> + <el-col :span="4"> + <el-input + v-model="queryForm.year" + placeholder="璇疯緭鍏ュ勾浠�" + ></el-input> + </el-col> + <el-col :span="4"> + <el-input + v-model="queryForm.projectName" + placeholder="璇疯緭鍏ラ」鐩悕绉�" + ></el-input> + </el-col> + <el-col :span="3"> + <el-button plain @click="getPageList">鏌ヨ</el-button> + </el-col> + </el-row> + </el-card> + + <el-card class="mt-20"> + <!-- <template #header> + <el-row type="flex" justify="start"> + <div> + <el-button plain type="primary">鎵归噺鎻愪氦</el-button> + <el-button plain type="warning">鎵归噺鎾ゅ洖</el-button> + <el-button plain type="danger">鍒犻櫎</el-button> + </div> + </el-row> + </template> --> + + <page-query + v-model:pageNO="pageNO" + v-model:pageSize="pageSize" + :total="total" + :tableData="tableData" + :tableConfig="tableConfig" + :primaryKey="primaryKey" + :selectedList="selectedList" + :showSelection="false" + @pageinfo-change="pageInfoChange" + > + <template #tableColumn="{scope}"> + <el-button @click="navToDetail(scope.row)">鏌ョ湅</el-button> + </template> + </page-query> + </el-card> + </div> +</template> + +<script> +import PageQuery from '@/components/PageQuery'; +import { reactive, toRefs, onMounted } from 'vue'; +import Api from '@/api'; +export default { + components: { PageQuery }, + setup(props,context) { + onMounted(() => { + getPageList(); + }); + const data = reactive({ + queryForm: { + year: '', + projectName: '' + }, + tableData: [], + pageNO: 1, + pageSize: 10, + total: 0, + selectedList: [], + tableConfig: [ + { prop: 'projectName', label: '椤圭洰鍚嶇О' }, + { prop: 'departmentName', label: '閮ㄩ棬鍚嶇О' }, + { prop: 'departmentCode', label: '閮ㄩ棬缂栧彿' }, + { prop: 'projectLeaderName', label: '璐熻矗浜哄悕绉�' }, + { prop: 'projectLeaderCode', label: '璐熻矗浜虹紪鍙�' }, + { prop: 'quotaMoney', label: '鏍稿畾閲戦' }, + { prop: 'state', label: '瀹℃牳鐘舵€�' }, + { prop: 'planType', label: '鐢虫姤涔︾被鍨�' } + ], + primaryKey: 'id' + }); + const getPageList = () => { + Api.getDataList({ + pageIndex: data.pageNO, + pageSize: data.pageSize, + projectName: data.queryForm.projectName, + year: data.queryForm.year + }).then(res => { + data.tableData = res.data; + data.total = res.total; + }); + }; + const navToDetail = row => { + context.emit('switch-page', 'Detail', true, row); + }; + const pageInfoChange = val => { + data.pageSize = val.limit; + data.pageNO = val.page; + getPageList(); + }; + return { + ...toRefs(data), + getPageList, + navToDetail, + pageInfoChange + }; + } +}; +</script> + +<style lang="scss"> +.override-form-item { + .el-form-item__content { + display: flex; + } +} +</style> diff --git a/WebSite/src/views/yo-dept-bz/find/FindProjectFundApply/index.vue b/WebSite/src/views/yo-dept-bz/find/FindProjectFundApply/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..6ea888aa5d89c302dc9ab9c0fa46f0fac8f97fdf --- /dev/null +++ b/WebSite/src/views/yo-dept-bz/find/FindProjectFundApply/index.vue @@ -0,0 +1,43 @@ +<template> + <div class="app-container"> + <transition name="fade-transform" mode="out-in"> + <component + :is="currentComponent" + @switch-page="switchPage" + :canEdit="canEdit" + :row="info" + ></component> + </transition> + </div> +</template> + +<script> +import List from '@/views/yo-dept-bz/find/FindProjectFundApply/components/List'; +import Detail from '@/views/yo-dept-bz/first/ProjectFundApply/components/Detail'; +import { reactive, toRefs } from 'vue'; +export default { + name: 'ProjectCheck', + components: { + List, + Detail + }, + setup() { + const data = reactive({ + currentComponent: 'List', + info: {}, + canEdit: false + }); + const switchPage = (page, canEdit, row) => { + data.currentComponent = page; + data.canEdit = canEdit; + data.info = row; + }; + return { + ...toRefs(data), + switchPage + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-bz/find/FindPuplicFundApply/components/List.vue b/WebSite/src/views/yo-dept-bz/find/FindPuplicFundApply/components/List.vue new file mode 100644 index 0000000000000000000000000000000000000000..93a90f3632dc5d0e9de1aae850a492aa0c9c56b1 --- /dev/null +++ b/WebSite/src/views/yo-dept-bz/find/FindPuplicFundApply/components/List.vue @@ -0,0 +1,144 @@ +<template> + <div> + <el-card> + <el-row :gutter="20"> + <el-col :span="4"> + <el-input + v-model="queryForm.year" + placeholder="璇疯緭鍏ュ勾浠�" + ></el-input> + </el-col> + <!-- <el-col :span="4"> + <el-input + v-model="queryForm.projectName" + placeholder="璇疯緭鍏ラ」鐩悕绉�" + ></el-input> + </el-col> --> + <el-col :span="3"> + <el-button plain @click="getPublicList">鏌ヨ</el-button> + </el-col> + </el-row> + </el-card> + + <el-card class="mt-20"> + <!-- <template #header> + <el-row type="flex" justify="start"> + <div> + <el-button plain type="primary" @click="createPublicApply" + >鏂板缓</el-button + > + <el-button disabled plain type="primary">鎵归噺鎻愪氦</el-button> + <el-button disabled plain type="warning">鎵归噺鎾ゅ洖</el-button> + <el-button + :disabled="selectedList.length == 0" + plain + type="danger" + @click="deletePubliic" + >鍒犻櫎</el-button + > + </div> + </el-row> + </template> --> + + <page-query + v-model:pageNO="pageNO" + v-model:pageSize="pageSize" + :total="total" + :tableData="tableData" + :tableConfig="tableConfig" + :primaryKey="primaryKey" + v-model:selectedList="selectedList" + @pageinfo-change="pageInfoChange" + > + <template #tableColumn="{scope}"> + <el-button @click="navToDetail(scope.row)">鏌ョ湅</el-button> + </template> + </page-query> + </el-card> + </div> +</template> + +<script> +import PageQuery from '@/components/PageQuery'; +import { onMounted, reactive, toRefs } from 'vue'; +import Api from '@/api'; +import { ElMessage } from 'element-plus'; +export default { + components: { PageQuery }, + setup(props, context) { + onMounted(() => { + getPublicList(); + }); + const data = reactive({ + queryForm: { + year: '', + projectName: '' + }, + tableData: [], + pageNO: 1, + pageSize: 10, + total: 0, + selectedList: [], + tableConfig: [ + { prop: 'projectName', label: '椤圭洰鍚嶇О' }, + { prop: 'departmentName', label: '閮ㄩ棬鍚嶇О' }, + { prop: 'departmentCode', label: '閮ㄩ棬缂栧彿' }, + { prop: 'projectLeaderName', label: '璐熻矗浜哄悕绉�' }, + { prop: 'projectLeaderCode', label: '璐熻矗浜虹紪鍙�' }, + { prop: 'quotaMoney', label: '鏍稿畾閲戦' }, + { prop: 'state', label: '瀹℃牳鐘舵€�' }, + { prop: 'planType', label: '鐢虫姤涔︾被鍨�' } + ], + primaryKey: 'id' + }); + const getPublicList = () => { + Api.getPublicList({ + pageIndex: data.pageNO, + pageSize: data.pageSize, + // projectName: data.queryForm.projectName, + year: data.queryForm.year + }).then(res => { + data.tableData = res.data; + data.total = res.total; + }); + }; + const navToDetail = row => { + context.emit('switch-page', 'Detail', true, row); + }; + const createPublicApply = () => { + context.emit('switch-page', 'Detail', true); + }; + const pageInfoChange = val => { + data.pageNO = val.page; + data.pageSize = val.limit; + getPublicList(); + }; + const deletePubliic = () => { + let arr = []; + data.selectedList.forEach(item => { + arr.push(item.id); + }); + Api.deletePublicList(arr).then(() => { + getPublicList(); + ElMessage.success('鎵归噺鍒犻櫎鎴愬姛'); + }); + }; + return { + ...toRefs(data), + getPublicList, + navToDetail, + pageInfoChange, + createPublicApply, + deletePubliic + }; + } +}; +</script> + +<style lang="scss"> +.override-form-item { + .el-form-item__content { + display: flex; + } +} +</style> diff --git a/WebSite/src/views/yo-dept-bz/find/FindPuplicFundApply/index.vue b/WebSite/src/views/yo-dept-bz/find/FindPuplicFundApply/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..132b41855a76466111a247eb9bc5a80d20e63bd2 --- /dev/null +++ b/WebSite/src/views/yo-dept-bz/find/FindPuplicFundApply/index.vue @@ -0,0 +1,43 @@ +<template> + <div class="app-container"> + <transition name="fade-transform" mode="out-in"> + <component + :is="currentComponent" + @switch-page="switchPage" + :canEdit="canEdit" + :row="info" + ></component> + </transition> + </div> +</template> + +<script> +import List from '@/views/yo-dept-bz/find/FindPuplicFundApply/components/List'; +import Detail from '@/views/yo-dept-bz/first/PuplicFundApply/components/Detail'; +import { reactive, toRefs } from 'vue'; +export default { + name: 'ProjectCheck', + components: { + List, + Detail + }, + setup() { + const data = reactive({ + currentComponent: 'List', + info: {}, + canEdit: false + }); + const switchPage = (page, canEdit, row) => { + data.canEdit = canEdit; + data.info = row; + data.currentComponent = page; + }; + return { + ...toRefs(data), + switchPage + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-bz/first/IncomeApply/components/Detail.vue b/WebSite/src/views/yo-dept-bz/first/IncomeApply/components/Detail.vue new file mode 100644 index 0000000000000000000000000000000000000000..f0d7caa32c4fa0a4fc3a18491b4e39545555839d --- /dev/null +++ b/WebSite/src/views/yo-dept-bz/first/IncomeApply/components/Detail.vue @@ -0,0 +1,143 @@ +<template> + <div> + <IncomeApply + :canEdit="canEdit" + :row="applyInfo" + :flowInfo="flowInfo" + @handleBack="handleBack" + @handleSave="handleSave" + @handleSubmit="handleSubmit" + @handleReturn="handleReturn" + /> + </div> +</template> + +<script> +import { onMounted, reactive, toRefs } from 'vue'; +import Api from '@/api'; +import Message from 'element-plus/lib/el-message'; +export default { + props: { + canEdit: { + type: Boolean, + required: true + }, + row: { + type: Object, + default: () => { + return {}; + } + } + }, + setup(props, context) { + onMounted(() => { + if (props.row.planType) { + data.applyInfo = props.row; + } + }); + const data = reactive({ + flowInfo: { + nextSubmitNodes: [ + { + key: '1599725907064', + value: '绉戠爺澶勫鏍�' + } + ], + canRejectNodes: [ + { + key: '1599725907064', + value: '绉戠爺澶勫鏍�' + } + ], + user: '绯荤粺绠$悊鍛�', + state: '璐熻矗浜鸿ˉ鍏�', + flow: [ + { + actionTime: '2020骞�9鏈�11鏃�', + time: '17:30:43', + icon: '', + flowName: '绔嬮」', + attitude: '', + auditor: '绯荤粺绠$悊鍛�', + startNodeName: '寮€濮�', + endNodeName: '绉戠爺澶勭珛椤�', + flowState: '娴佺▼寮€濮�', + isPassed: 'False', + systemID: '00000000-0000-0000-0000-000000000000', + isEnable: false + }, + { + actionTime: '2020骞�9鏈�11鏃�', + time: '17:31:00', + icon: '', + flowName: '绔嬮」', + attitude: '', + auditor: '绯荤粺绠$悊鍛�', + startNodeName: '绉戠爺澶勭珛椤�', + endNodeName: '璐熻矗浜鸿ˉ鍏�', + flowState: '鎻愪氦', + isPassed: 'False', + systemID: '00000000-0000-0000-0000-000000000000', + isEnable: false + } + ], + btnStates: { + isShowSave: true, + isShowSubmit: true, + isShowReject: true, + isShowRevoke: false, + isShowChart: true, + isShowHistory: true, + isShowUser: true, + isShowState: true, + isShowCancel: false + } + }, + applyInfo: {} + }); + const handleBack = () => { + context.emit('switch-page', 'List'); + }; + const handleSave = (obj, id) => { + console.log(obj); + if (obj.incomeType != 'BAXIANG') { + let arr = []; + obj.model.tableData.forEach(item => { + arr.push({ id: '', subOtherJson: JSON.stringify(item), total: 0 }); + }); + Api.saveInCome({ + id: id ? id : '', + departmentCode: obj.model.deptNO.split(',')[1], + departmentName: obj.model.deptNO.split(',')[0], + inComeSubList:arr, + planType: obj.incomeType + }).then(() => { + Message.success('淇濆瓨鎴愬姛'); + }); + } else { + Api.saveInComeE({ + id: id ? id : '', + departmentCode: obj.model.deptNO.split(',')[1], + departmentName: obj.model.deptNO.split(',')[0], + otherJson: JSON.stringify(obj.model), + planType: obj.incomeType + }).then(() => { + Message.success('淇濆瓨鎴愬姛'); + }); + } + }; + const handleSubmit = () => {}; + const handleReturn = () => {}; + + return { + ...toRefs(data), + handleBack, + handleSave, + handleSubmit, + handleReturn + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-bz/first/IncomeApply/components/List.vue b/WebSite/src/views/yo-dept-bz/first/IncomeApply/components/List.vue new file mode 100644 index 0000000000000000000000000000000000000000..b0749cbc05231bc08180f246d2a5bd6a3297e342 --- /dev/null +++ b/WebSite/src/views/yo-dept-bz/first/IncomeApply/components/List.vue @@ -0,0 +1,134 @@ +<template> + <div class="app-container"> + <el-card> + <el-row :gutter="20"> + <el-col :span="4"> + <el-input v-model="year" placeholder="璇疯緭鍏ュ勾浠�"></el-input> + </el-col> + <el-col :span="3"> + <el-button plain @click="getIncomeList">鏌ヨ</el-button> + </el-col> + </el-row> + </el-card> + + <el-card class="mt-20"> + <template #header> + <el-row type="flex" justify="start"> + <div> + <el-button plain type="primary" @click="createIncomeApply" + >鏂板缓</el-button + > + <el-button plain type="primary">鎵归噺鎻愪氦</el-button> + <el-button plain type="warning">鎵归噺鎾ゅ洖</el-button> + <el-button plain type="danger" @click="deleteIncome" + >鍒犻櫎</el-button + > + </div> + </el-row> + </template> + + <page-query + v-model:pageNO="pageNO" + v-model:pageSize="pageSize" + :total="total" + :tableData="tableData" + :tableConfig="tableConfig" + :primaryKey="primaryKey" + v-model:selectedList="selectedList" + @pageinfo-change="pageInfoChange" + > + <template #tableColumn="{scope}"> + <el-button type="primary" @click="navToDetail(scope.row)">{{ + scope.row.state == '寰呮彁浜�' ? '缂栬緫' : '鏌ョ湅' + }}</el-button> + </template> + </page-query> + </el-card> + </div> +</template> + +<script> +import PageQuery from '@/components/PageQuery'; +import { onMounted, reactive, toRefs } from 'vue'; +import Api from '@/api'; +import Message from 'element-plus/lib/el-message'; +export default { + components: { PageQuery }, + emits: ['switch-page'], + setup(props, context) { + onMounted(() => { + getIncomeList(); + }); + const data = reactive({ + tableData: [{}], + pageNO: 1, + pageSize: 10, + total: 0, + year: '', + selectedList: [], + tableConfig: [ + { prop: 'planType', label: '鏀跺叆绫诲瀷' }, + { prop: 'departmentCode', label: '閮ㄩ棬缂栧彿' }, + { prop: 'departmentName', label: '閮ㄩ棬鍚嶇О' }, + { prop: 'totalMoney', label: '鎬婚噾棰�' }, + { prop: 'state', label: '瀹℃壒鐘舵€�' } + ], + primaryKey: 'id' + }); + const getIncomeList = () => { + Api.getInComeList({ + pageIndex: data.pageNO, + pageSize: data.pageSize, + departmentCode: '', + year: data.year, + id: null + }).then(res => { + data.tableData = res.data; + data.total = res.total; + }); + }; + const createIncomeApply = () => { + context.emit('switch-page', 'Detail', true); + }; + const navToDetail = row => { + context.emit( + 'switch-page', + 'Detail', + row.state == '寰呮彁浜�' ? true : false, + row + ); + }; + const pageInfoChange = val => { + data.pageNo = val.page; + data.pageSize = val.limit; + getIncomeList(); + }; + const deleteIncome = () => { + let arr = []; + data.selectedList.forEach(item => { + arr.push(item.id); + }); + Api.deleteInCome(arr).then(() => { + Message.success('鍒犻櫎鎴愬姛'); + getIncomeList(); + }); + }; + return { + ...toRefs(data), + getIncomeList, + createIncomeApply, + navToDetail, + pageInfoChange, + deleteIncome + }; + } +}; +</script> + +<style lang="scss"> +.override-form-item { + .el-form-item__content { + display: flex; + } +} +</style> diff --git a/WebSite/src/views/yo-dept-bz/first/IncomeApply/index.vue b/WebSite/src/views/yo-dept-bz/first/IncomeApply/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..e2afc6ef689c14630a665b926dfb59827ec3b9c3 --- /dev/null +++ b/WebSite/src/views/yo-dept-bz/first/IncomeApply/index.vue @@ -0,0 +1,44 @@ +<template> + <div class="app-container"> + <transition name="fade-transform" mode="out-in"> + <component + :is="currentComponent" + @switch-page="switchPage" + :canEdit="canEdit" + :row="info" + ></component> + </transition> + </div> +</template> + +<script> +import List from '@/views/yo-dept-bz/first/IncomeApply/components/List'; +import Detail from '@/views/yo-dept-bz/first/IncomeApply/components/Detail'; +import { reactive, toRefs } from 'vue'; +export default { + name: 'ProjectCheck', + components: { + List, + Detail + }, + setup() { + const data = reactive({ + currentComponent: 'List', + info: {}, + canEdit: false + }); + + const switchPage = (page, canEdit, row) => { + data.currentComponent = page; + data.canEdit = canEdit; + data.info = row; + }; + return { + ...toRefs(data), + switchPage + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-bz/first/PeopleFundApply/components/Detail.vue b/WebSite/src/views/yo-dept-bz/first/PeopleFundApply/components/Detail.vue new file mode 100644 index 0000000000000000000000000000000000000000..162d4eb0c2dd721d1ec1b667358c673717dc63cc --- /dev/null +++ b/WebSite/src/views/yo-dept-bz/first/PeopleFundApply/components/Detail.vue @@ -0,0 +1,141 @@ +<template> + <div> + <PeopleFundApply + :canEdit="canEdit" + :row="applyInfo" + :flowInfo="flowInfo" + @handleBack="handleBack" + @handleSave="handleSave" + @handleSubmit="handleSubmit" + @handleReturn="handleReturn" + /> + </div> +</template> + +<script> +import { onMounted, reactive, toRefs } from 'vue'; +import Api from '@/api'; +import Message from 'element-plus/lib/el-message'; +export default { + props: { + canEdit: { + type: Boolean, + required: true + }, + row: { + type: Object, + default: () => { + return {}; + } + } + }, + setup(props, context) { + onMounted(() => { + if (props.row.id) { + getPersonDetail(); + } else { + console.log('鏂板'); + } + }); + const data = reactive({ + flowInfo: { + nextSubmitNodes: [ + { + key: '1599725907064', + value: '绉戠爺澶勫鏍�' + } + ], + canRejectNodes: [ + { + key: '1599725907064', + value: '绉戠爺澶勫鏍�' + } + ], + user: '绯荤粺绠$悊鍛�', + state: '璐熻矗浜鸿ˉ鍏�', + flow: [ + { + actionTime: '2020骞�9鏈�11鏃�', + time: '17:30:43', + icon: '', + flowName: '绔嬮」', + attitude: '', + auditor: '绯荤粺绠$悊鍛�', + startNodeName: '寮€濮�', + endNodeName: '绉戠爺澶勭珛椤�', + flowState: '娴佺▼寮€濮�', + isPassed: 'False', + systemID: '00000000-0000-0000-0000-000000000000', + isEnable: false + }, + { + actionTime: '2020骞�9鏈�11鏃�', + time: '17:31:00', + icon: '', + flowName: '绔嬮」', + attitude: '', + auditor: '绯荤粺绠$悊鍛�', + startNodeName: '绉戠爺澶勭珛椤�', + endNodeName: '璐熻矗浜鸿ˉ鍏�', + flowState: '鎻愪氦', + isPassed: 'False', + systemID: '00000000-0000-0000-0000-000000000000', + isEnable: false + } + ], + btnStates: { + isShowSave: true, + isShowSubmit: true, + isShowReject: true, + isShowRevoke: false, + isShowChart: true, + isShowHistory: true, + isShowUser: true, + isShowState: true, + isShowCancel: false + } + }, + applyInfo: {} + }); + const getPersonDetail = () => { + Api.getPersonDetail(props.row.id).then(res => { + data.applyInfo = res.data; + }); + }; + const handleBack = () => { + context.emit('switch-page', 'List'); + }; + const handleSave = handleSave => { + handleSave[0].forEach(item => { + item.personSubjectName = item.personFundName; + }); + Api.savePerson({ + projectName: '浜哄憳缁忚垂', + id: handleSave[2][0] ? handleSave[2][0].id : '', + departmentName: '', + departmentCode: handleSave[1], + projectLeaderCode: '', + planType: 'XIANGMUKU', + projectLeaderId: 0, //璐熻矗浜篿d + projectLeaderName: '', //璐熻矗浜哄悕绉� + year: sessionStorage.getItem('year'), + personSubjectList: handleSave[0] + }).then(() => { + Message.success('淇濆瓨鎴愬姛'); + }); + }; + const handleSubmit = () => {}; + const handleReturn = () => {}; + return { + ...toRefs(data), + handleBack, + getPersonDetail, + handleSave, + handleSubmit, + handleReturn + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-bz/first/PeopleFundApply/components/List.vue b/WebSite/src/views/yo-dept-bz/first/PeopleFundApply/components/List.vue new file mode 100644 index 0000000000000000000000000000000000000000..9fc2073142dcba0a19a4b94b0b76832b66f0a3b0 --- /dev/null +++ b/WebSite/src/views/yo-dept-bz/first/PeopleFundApply/components/List.vue @@ -0,0 +1,140 @@ +<template> + <div class="app-container"> + <el-card> + <el-row :gutter="20"> + <el-col :span="4"> + <el-input placeholder="璇疯緭鍏ュ勾浠�"></el-input> + </el-col> + <el-col :span="4"> + <el-input placeholder="璇疯緭鍏ラ」鐩悕绉�"></el-input> + </el-col> + <el-col :span="3"> + <el-button plain>鏌ヨ</el-button> + </el-col> + </el-row> + </el-card> + + <el-card class="mt-20"> + <template #header> + <el-row type="flex" justify="start"> + <div> + <el-button plain type="primary" @click="createPeopleApply" + >鏂板缓</el-button + > + <el-button disabled plain type="primary">鎵归噺鎻愪氦</el-button> + <el-button disabled plain type="warning">鎵归噺鎾ゅ洖</el-button> + <el-button + :disabled="selectedList.length == 0" + plain + type="danger" + @click="deletePerson" + >鍒犻櫎</el-button + > + </div> + </el-row> + </template> + + <page-query + v-model:pageNO="pageNO" + v-model:pageSize="pageSize" + :total="total" + :tableData="tableData" + :tableConfig="tableConfig" + :primaryKey="primaryKey" + v-model:selectedList="selectedList" + @pageinfo-change="pageInfoChange" + > + <template #tableColumn="{scope}"> + <el-button type="primary" @click="navToDetail(scope.row)">{{ + scope.row.state == '寰呮彁浜�' ? '缂栬緫' : '鏌ョ湅' + }}</el-button> + </template> + </page-query> + </el-card> + </div> +</template> + +<script> +import PageQuery from '@/components/PageQuery'; +import { onMounted, reactive, toRefs } from 'vue'; +import Api from '@/api'; +import { ElMessage } from 'element-plus'; +export default { + components: { PageQuery }, + setup(props, context) { + onMounted(() => { + getPersonList(); + }); + const data = reactive({ + tableData: [], + pageNO: 1, + pageSize: 10, + total: 0, + selectedList: [], + tableConfig: [ + { prop: 'projectName', label: '椤圭洰鍚嶇О' }, + { prop: 'departmentName', label: '閮ㄩ棬鍚嶇О' }, + { prop: 'departmentCode', label: '閮ㄩ棬缂栧彿' }, + { prop: 'projectLeaderName', label: '璐熻矗浜哄悕绉�' }, + { prop: 'projectLeaderCode', label: '璐熻矗浜虹紪鍙�' }, + { prop: 'quotaMoney', label: '鏍稿畾閲戦' }, + { prop: 'state', label: '瀹℃牳鐘舵€�' }, + { prop: 'planType', label: '鐢虫姤涔︾被鍨�' } + ], + primaryKey: 'id' + }); + const getPersonList = () => { + Api.getPersonList({ + pageIndex: 1, + pageSize: 10 + }).then(res => { + data.tableData = res.data; + data.total = res.total; + }); + }; + const createPeopleApply = () => { + context.emit('switch-page', 'Detail', true); + }; + const navToDetail = row => { + context.emit( + 'switch-page', + 'Detail', + row.state == '寰呮彁浜�' ? true : false, + row + ); + }; + const pageInfoChange = val => { + console.error(val); + console.log(data.pageNO, data.pageSize); + // data.pageNo = val.page; + // data.pageSize = val.limit; + }; + const deletePerson = () => { + let arr = []; + data.selectedList.forEach(item => { + arr.push(item.id); + }); + Api.deletePersonList(arr).then(() => { + getPersonList(); + ElMessage.success('鎵归噺鍒犻櫎鎴愬姛'); + }); + }; + return { + ...toRefs(data), + getPersonList, + createPeopleApply, + navToDetail, + pageInfoChange, + deletePerson + }; + } +}; +</script> + +<style lang="scss"> +.override-form-item { + .el-form-item__content { + display: flex; + } +} +</style> diff --git a/WebSite/src/views/yo-dept-bz/first/PeopleFundApply/index.vue b/WebSite/src/views/yo-dept-bz/first/PeopleFundApply/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..4a4fd16192943afe5f7c03042119d90e5a3a0b85 --- /dev/null +++ b/WebSite/src/views/yo-dept-bz/first/PeopleFundApply/index.vue @@ -0,0 +1,44 @@ +<template> + <div class="app-container"> + <transition name="fade-transform" mode="out-in"> + <component + :is="currentComponent" + @switch-page="switchPage" + :canEdit="canEdit" + :row="info" + ></component> + </transition> + </div> +</template> + +<script> +import List from '@/views/yo-dept-bz/first/PeopleFundApply/components/List'; +import Detail from '@/views/yo-dept-bz/first/PeopleFundApply/components/Detail'; +import { reactive, toRefs } from 'vue'; +export default { + name: 'ProjectCheck', + components: { + List, + Detail + }, + setup() { + const data = reactive({ + currentComponent: 'List', + info: {}, + canEdit: false + }); + + const switchPage = (page, canEdit, row) => { + data.currentComponent = page; + data.canEdit = canEdit; + data.info = row; + }; + return { + ...toRefs(data), + switchPage + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-bz/first/ProjectFundApply/components/Detail.vue b/WebSite/src/views/yo-dept-bz/first/ProjectFundApply/components/Detail.vue new file mode 100644 index 0000000000000000000000000000000000000000..34291a33e4d0a4413fcca9d9a31d2eb776205b4a --- /dev/null +++ b/WebSite/src/views/yo-dept-bz/first/ProjectFundApply/components/Detail.vue @@ -0,0 +1,130 @@ +<template> + <div> + <TableFlow + :canEdit="canEdit" + :row="applyInfo" + :flowInfo="flowInfo" + @handleBack="handleBack" + @handleSave="handleSave" + @handleSubmit="handleSubmit" + @handleReturn="handleReturn" + ></TableFlow> + </div> +</template> + +<script> +import { onMounted, reactive, toRefs } from 'vue'; +import Api from '@/api'; +export default { + props: { + canEdit: { + type: Boolean, + required: true + }, + row: { + type: Object, + default: () => { + return {}; + } + } + }, + setup(props, context) { + onMounted(() => { + // if (props.row.id) { + // getDataDetail(); + // } + }); + const data = reactive({ + flowInfo: { + nextSubmitNodes: [ + { + key: '1599725907064', + value: '绉戠爺澶勫鏍�' + } + ], + canRejectNodes: [ + { + key: '1599725907064', + value: '绉戠爺澶勫鏍�' + } + ], + user: '绯荤粺绠$悊鍛�', + state: '璐熻矗浜鸿ˉ鍏�', + flow: [ + { + actionTime: '2020骞�9鏈�11鏃�', + time: '17:30:43', + icon: '', + flowName: '绔嬮」', + attitude: '', + auditor: '绯荤粺绠$悊鍛�', + startNodeName: '寮€濮�', + endNodeName: '绉戠爺澶勭珛椤�', + flowState: '娴佺▼寮€濮�', + isPassed: 'False', + systemID: '00000000-0000-0000-0000-000000000000', + isEnable: false + }, + { + actionTime: '2020骞�9鏈�11鏃�', + time: '17:31:00', + icon: '', + flowName: '绔嬮」', + attitude: '', + auditor: '绯荤粺绠$悊鍛�', + startNodeName: '绉戠爺澶勭珛椤�', + endNodeName: '璐熻矗浜鸿ˉ鍏�', + flowState: '鎻愪氦', + isPassed: 'False', + systemID: '00000000-0000-0000-0000-000000000000', + isEnable: false + } + ], + btnStates: { + isShowSave: true, + isShowSubmit: true, + isShowReject: true, + isShowRevoke: false, + isShowChart: true, + isShowHistory: true, + isShowUser: true, + isShowState: true, + isShowCancel: false + } + }, + applyInfo: {} + }); + const handleBack = () => { + context.emit('switch-page', 'List'); + }; + const getDataDetail = () => { + Api.getDataDetail(props.row.id).then(res => { + console.log(res); + data.applyInfo = res.data[0]; + }); + }; + const handleSave = applyInfo => { + console.log(applyInfo); + }; + const handleSubmit = () => {}; + const handleReturn = () => {}; + + const init = () => { + if (props.row.id) { + getDataDetail(); + } + }; + init(); + return { + ...toRefs(data), + handleBack, + getDataDetail, + handleSave, + handleSubmit, + handleReturn + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-bz/first/ProjectFundApply/components/List.vue b/WebSite/src/views/yo-dept-bz/first/ProjectFundApply/components/List.vue new file mode 100644 index 0000000000000000000000000000000000000000..3baa81718310b3ea63f303d22ac7702c29a67158 --- /dev/null +++ b/WebSite/src/views/yo-dept-bz/first/ProjectFundApply/components/List.vue @@ -0,0 +1,164 @@ +<template> + <div class="app-container"> + <el-card> + <el-row :gutter="20"> + <el-col :span="4"> + <el-input + v-model="queryForm.year" + placeholder="璇疯緭鍏ュ勾浠�" + ></el-input> + </el-col> + <el-col :span="4"> + <el-input + v-model="queryForm.projectName" + placeholder="璇疯緭鍏ラ」鐩悕绉�" + ></el-input> + </el-col> + <el-col :span="3"> + <el-button plain @click="getPageList">鏌ヨ</el-button> + </el-col> + </el-row> + </el-card> + + <el-card class="mt-20"> + <template #header> + <el-row type="flex" justify="start"> + <div> + <el-button disabled plain type="primary" @click="batchSubmitHandler" + >鎵归噺鎻愪氦</el-button + > + <el-button disabled plain type="warning" @click="batchRejectHandler" + >鎵归噺鎾ゅ洖</el-button + > + <el-button + :disabled="selectedList.length == 0" + plain + type="danger" + @click="barchRemoveHandler" + >鍒犻櫎</el-button + > + </div> + </el-row> + </template> + + <page-query + v-model:pageNO="pageNO" + v-model:pageSize="pageSize" + :total="total" + :tableData="tableData" + :tableConfig="tableConfig" + :primaryKey="primaryKey" + v-model:selectedList="selectedList" + @pageinfo-change="pageInfoChange" + > + <template #tableColumn="{scope}"> + <el-button type="primary" @click="navToDetail(scope.row)">{{ + scope.row.state == '寰呮彁浜�' ? '缂栬緫' : '鏌ョ湅' + }}</el-button> + </template> + </page-query> + </el-card> + </div> +</template> + +<script> +import PageQuery from '@/components/PageQuery'; +import { onMounted, reactive, toRefs } from 'vue'; +// import {useRouter} from 'vue-router' +import { ElMessage } from 'element-plus'; +import Api from '@/api'; +export default { + components: { PageQuery }, + setup(props, context) { + // const router = useRouter(); + onMounted(() => { + getPageList(); + }); + const data = reactive({ + queryForm: { + year: '', + projectName: '' + }, + pageNO: 1, + pageSize: 10, + total: 0, + tableData: [], + selectedList: [], + tableConfig: [ + { prop: 'projectName', label: '椤圭洰鍚嶇О' }, + { prop: 'departmentName', label: '閮ㄩ棬鍚嶇О' }, + { prop: 'departmentCode', label: '閮ㄩ棬缂栧彿' }, + { prop: 'projectLeaderName', label: '璐熻矗浜哄悕绉�' }, + { prop: 'projectLeaderCode', label: '璐熻矗浜虹紪鍙�' }, + { prop: 'quotaMoney', label: '鏍稿畾閲戦' }, + { prop: 'state', label: '瀹℃牳鐘舵€�' }, + { prop: 'planType', label: '鐢虫姤涔︾被鍨�' } + ], + primaryKey: 'id' + }); + const getPageList = () => { + Api.getDataList({ + pageIndex: data.pageNO, + pageSize: data.pageSize, + projectName: data.queryForm.projectName, + year: data.queryForm.year + }).then(res => { + data.tableData = res.data; + data.total = res.total; + }); + }; + const navToDetail = row => { + context.emit( + 'switch-page', + 'Detail', + row.state == '寰呮彁浜�' ? true : false, + row + ); + }; + const pageInfoChange = val => { + data.pageSize = val.limit; + data.pageNO = val.page; + getPageList(); + }; + + const batchSubmitHandler = () => { + ElMessage.success('鎵归噺鎻愪氦鎴愬姛'); + }; + const batchRejectHandler = () => { + ElMessage.success('鎵归噺鎾ゅ洖鎴愬姛'); + }; + const barchRemoveHandler = () => { + let arr = []; + data.selectedList.forEach(item => { + arr.push(item.id); + }); + Api.deleteDataList(arr).then(() => { + getPageList(); + ElMessage.success('鎵归噺鍒犻櫎鎴愬姛'); + }); + }; + + const init = () => { + // console.log('椤甸潰鍒濆鍖�'); + }; + init(); + return { + ...toRefs(data), + getPageList, + navToDetail, + pageInfoChange, + batchSubmitHandler, + batchRejectHandler, + barchRemoveHandler + }; + } +}; +</script> + +<style lang="scss"> +.override-form-item { + .el-form-item__content { + display: flex; + } +} +</style> diff --git a/WebSite/src/views/yo-dept-bz/first/ProjectFundApply/index.vue b/WebSite/src/views/yo-dept-bz/first/ProjectFundApply/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..4fbce5e9164e65f6f6776e4807c427535137d951 --- /dev/null +++ b/WebSite/src/views/yo-dept-bz/first/ProjectFundApply/index.vue @@ -0,0 +1,44 @@ +<template> + <div class="app-container"> + <transition name="fade-transform" mode="out-in"> + <component + :is="currentComponent" + @switch-page="switchPage" + :canEdit="canEdit" + :row="info" + ></component> + </transition> + </div> +</template> + +<script> +import List from '@/views/yo-dept-bz/first/ProjectFundApply/components/List'; +// import Detail from '@/views/yo-dept-bz/first/ProjectFundApply/components/Detail'; +import Detail from '@/views/yo-common/ProjectApplyPageList/detail.vue' +import { reactive, toRefs } from 'vue'; +export default { + name: 'ProjectCheck', + components: { + List, + Detail + }, + setup() { + const data = reactive({ + currentComponent: 'List', + info: {}, + canEdit: false + }); + const switchPage = (page, canEdit, row) => { + data.currentComponent = page; + data.canEdit = canEdit; + data.info = row; + }; + return { + ...toRefs(data), + switchPage + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-bz/first/PuplicFundApply/components/Detail.vue b/WebSite/src/views/yo-dept-bz/first/PuplicFundApply/components/Detail.vue new file mode 100644 index 0000000000000000000000000000000000000000..646a6698e236b81178c206de740a9fae2622af80 --- /dev/null +++ b/WebSite/src/views/yo-dept-bz/first/PuplicFundApply/components/Detail.vue @@ -0,0 +1,131 @@ +<template> + <div> + <PublicFundApply + :canEdit="CAN_EDIT" + :row="applyInfo" + :flowInfo="flowInfo" + @handleBack="handleBack" + @handleSave="handleSave" + @handleSubmit="handleSubmit" + @handleReturn="handleReturn" + /> + </div> +</template> + +<script> +import { onMounted, reactive, toRefs } from 'vue'; +import Api from '@/api'; +export default { + props: { + canEdit: { + type: Boolean, + required: true + }, + row: { + type: Object, + default: () => { + return {}; + } + } + }, + setup(props, context) { + onMounted(() => { + // if (props.row.id) { + // getPublicDetail(); + // } + }); + const data = reactive({ + flowInfo: { + nextSubmitNodes: [ + { + key: '1599725907064', + value: '绉戠爺澶勫鏍�' + } + ], + canRejectNodes: [ + { + key: '1599725907064', + value: '绉戠爺澶勫鏍�' + } + ], + user: '绯荤粺绠$悊鍛�', + state: '璐熻矗浜鸿ˉ鍏�', + flow: [ + { + actionTime: '2020骞�9鏈�11鏃�', + time: '17:30:43', + icon: '', + flowName: '绔嬮」', + attitude: '', + auditor: '绯荤粺绠$悊鍛�', + startNodeName: '寮€濮�', + endNodeName: '绉戠爺澶勭珛椤�', + flowState: '娴佺▼寮€濮�', + isPassed: 'False', + systemID: '00000000-0000-0000-0000-000000000000', + isEnable: false + }, + { + actionTime: '2020骞�9鏈�11鏃�', + time: '17:31:00', + icon: '', + flowName: '绔嬮」', + attitude: '', + auditor: '绯荤粺绠$悊鍛�', + startNodeName: '绉戠爺澶勭珛椤�', + endNodeName: '璐熻矗浜鸿ˉ鍏�', + flowState: '鎻愪氦', + isPassed: 'False', + systemID: '00000000-0000-0000-0000-000000000000', + isEnable: false + } + ], + btnStates: { + isShowSave: true, + isShowSubmit: true, + isShowReject: true, + isShowRevoke: false, + isShowChart: true, + isShowHistory: true, + isShowUser: true, + isShowState: true, + isShowCancel: false + } + }, + applyInfo: {}, + CAN_EDIT: props.canEdit + }); + const handleBack = () => { + context.emit('switch-page', 'List'); + }; + const getPublicDetail = () => { + Api.getPublicDetail(props.row.id).then(res => { + console.log(res); + data.applyInfo = res.data[0]; + }); + }; + const handleSave = (applyInfo) => { + console.log(applyInfo); + }; + const handleSubmit = () => {}; + const handleReturn = () => {}; + + const init = () => { + if (props.row.id) { + getPublicDetail(); + } + }; + init(); + return { + ...toRefs(data), + handleBack, + getPublicDetail, + handleSave, + handleSubmit, + handleReturn + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-bz/first/PuplicFundApply/components/List.vue b/WebSite/src/views/yo-dept-bz/first/PuplicFundApply/components/List.vue new file mode 100644 index 0000000000000000000000000000000000000000..d2741e372c7d8f6d0c63532524d6bd1cb1f89f0f --- /dev/null +++ b/WebSite/src/views/yo-dept-bz/first/PuplicFundApply/components/List.vue @@ -0,0 +1,151 @@ +<template> + <div> + <el-card> + <el-row :gutter="20"> + <el-col :span="4"> + <el-input + v-model="queryForm.year" + placeholder="璇疯緭鍏ュ勾浠�" + ></el-input> + </el-col> + <!-- <el-col :span="4"> + <el-input + v-model="queryForm.projectName" + placeholder="璇疯緭鍏ラ」鐩悕绉�" + ></el-input> + </el-col> --> + <el-col :span="3"> + <el-button plain @click="getPublicList">鏌ヨ</el-button> + </el-col> + </el-row> + </el-card> + + <el-card class="mt-20"> + <template #header> + <el-row type="flex" justify="start"> + <div> + <el-button plain type="primary" @click="createPublicApply" + >鏂板缓</el-button + > + <el-button disabled plain type="primary">鎵归噺鎻愪氦</el-button> + <el-button disabled plain type="warning">鎵归噺鎾ゅ洖</el-button> + <el-button + :disabled="selectedList.length == 0" + plain + type="danger" + @click="deletePubliic" + >鍒犻櫎</el-button + > + </div> + </el-row> + </template> + + <page-query + v-model:pageNO="pageNO" + v-model:pageSize="pageSize" + :total="total" + :tableData="tableData" + :tableConfig="tableConfig" + :primaryKey="primaryKey" + v-model:selectedList="selectedList" + @pageinfo-change="pageInfoChange" + > + <template #tableColumn="{scope}"> + <el-button type="primary" @click="navToDetail(scope.row)">{{ + scope.row.state == '寰呮彁浜�' ? '缂栬緫' : '鏌ョ湅' + }}</el-button> + </template> + </page-query> + </el-card> + </div> +</template> + +<script> +import PageQuery from '@/components/PageQuery'; +import { onMounted, reactive, toRefs } from 'vue'; +import Api from '@/api'; +import { ElMessage } from 'element-plus'; +export default { + components: { PageQuery }, + setup(props, context) { + onMounted(() => { + getPublicList(); + }); + const data = reactive({ + queryForm: { + year: '', + projectName: '' + }, + tableData: [], + pageNO: 1, + pageSize: 10, + total: 0, + selectedList: [], + tableConfig: [ + { prop: 'projectName', label: '椤圭洰鍚嶇О' }, + { prop: 'departmentName', label: '閮ㄩ棬鍚嶇О' }, + { prop: 'departmentCode', label: '閮ㄩ棬缂栧彿' }, + { prop: 'projectLeaderName', label: '璐熻矗浜哄悕绉�' }, + { prop: 'projectLeaderCode', label: '璐熻矗浜虹紪鍙�' }, + { prop: 'quotaMoney', label: '鏍稿畾閲戦' }, + { prop: 'state', label: '瀹℃牳鐘舵€�' }, + { prop: 'planType', label: '鐢虫姤涔︾被鍨�' } + ], + primaryKey: 'id' + }); + const getPublicList = () => { + Api.getPublicList({ + pageIndex: data.pageNO, + pageSize: data.pageSize, + // projectName: data.queryForm.projectName, + year: data.queryForm.year + }).then(res => { + data.tableData = res.data; + data.total = res.total; + }); + }; + const navToDetail = row => { + context.emit( + 'switch-page', + 'Detail', + row.state == '寰呮彁浜�' ? true : false, + row + ); + }; + const createPublicApply = () => { + context.emit('switch-page', 'Detail', true); + }; + const pageInfoChange = val => { + data.pageNO = val.page; + data.pageSize = val.limit; + getPublicList(); + }; + const deletePubliic = () => { + let arr = []; + data.selectedList.forEach(item => { + arr.push(item.id); + }); + Api.deletePublicList(arr).then(() => { + getPublicList(); + ElMessage.success('鎵归噺鍒犻櫎鎴愬姛'); + }); + }; + return { + ...toRefs(data), + getPublicList, + navToDetail, + pageInfoChange, + createPublicApply, + deletePubliic + }; + } +}; +</script> + +<style lang="scss"> +.override-form-item { + .el-form-item__content { + display: flex; + } +} +</style> diff --git a/WebSite/src/views/yo-dept-bz/first/PuplicFundApply/index.vue b/WebSite/src/views/yo-dept-bz/first/PuplicFundApply/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..b0858d29810c76586ab08c22655af6244dcbdbe3 --- /dev/null +++ b/WebSite/src/views/yo-dept-bz/first/PuplicFundApply/index.vue @@ -0,0 +1,44 @@ +<template> + <div class="app-container"> + <transition name="fade-transform" mode="out-in"> + <component + :is="currentComponent" + @switch-page="switchPage" + :canEdit="canEdit" + :row="info" + ></component> + </transition> + </div> +</template> + +<script> +import List from '@/views/yo-dept-bz/first/PuplicFundApply/components/List'; +// import Detail from '@/views/yo-dept-bz/first/PuplicFundApply/components/Detail'; +import Detail from '@/views/yo-common/PublicApplyPageList/detail.vue' +import { reactive, toRefs } from 'vue'; +export default { + name: 'ProjectCheck', + components: { + List, + Detail + }, + setup() { + const data = reactive({ + currentComponent: 'List', + info: {}, + canEdit: false + }); + const switchPage = (page, canEdit, row) => { + data.canEdit = canEdit; + data.info = row; + data.currentComponent = page; + }; + return { + ...toRefs(data), + switchPage + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-bz/quota/daily/index.vue b/WebSite/src/views/yo-dept-bz/quota/daily/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..a44e145f23f091ad4ce10c27d079ab72267378af --- /dev/null +++ b/WebSite/src/views/yo-dept-bz/quota/daily/index.vue @@ -0,0 +1,117 @@ +<template> + <div> + <el-card> + <el-row :gutter="10"> + <el-col :span="6"> + <el-date-picker + v-model="checkInfo.year" + type="year" + placeholder="閫夋嫨骞�" + > + </el-date-picker> + </el-col> + <el-col :span="6"> + <el-input + placeholder="璇疯緭鍏ラ儴闂ㄥ悕绉�" + v-model="checkInfo.deptName" + ></el-input> + </el-col> + </el-row> + <el-row class="mtop20"> + <el-button type="primary" plain @click="init">鍒濆鍖栭」鐩�</el-button> + <el-button @click="getQueryUserByPageFirst">鏌ヨ</el-button> + </el-row> + </el-card> + <el-card class="mtop20"> + <el-table + stripe + :data="departInfo.tableData" + style="width: 100%" + ref="multipleTable" + class="mtop20" + fit + > + <el-table-column label="骞翠唤" prop="year" /> + <el-table-column label="閮ㄩ棬鍚嶇О" prop="deptName" /> + <el-table-column label="閮ㄩ棬缂栧彿" prop="deptCode" /> + <el-table-column label="宸茬撼鍏ラ」鐩噾棰�" prop="quotaType" /> + <el-table-column label="閮ㄩ棬鏍稿畾鏁�" prop="quotaMoney"> + <template #default="scope"> + <el-input + v-model="scope.row.quotaMoney" + @blur="handleEdit(scope.row)" + ></el-input> + </template> + </el-table-column> + </el-table> + <Pagination + v-show="departInfo.total > 0" + :total="departInfo.total" + v-model:page="checkInfo.pageIndex" + v-model:limit="checkInfo.pageSize" + @pagination="getQueryUserByPage" + /> + </el-card> + </div> +</template> + +<script> +import { reactive, toRefs, onMounted } from 'vue'; +import { ElMessage } from 'element-plus'; +import ProjectLibrary from '@/api/projectLibrary'; +export default { + setup() { + onMounted(() => { + getQueryUserByPage(); + }); + const state = reactive({ + checkInfo: { + pageIndex: 1, + pageSize: 10, + year: sessionStorage.getItem('year'), + deptName: '', + quotaMoney: '', + deptCode: '' + }, + departInfo: { + total: null, + tableData: [] + } + }); + const getQueryUserByPageFirst = () => { + state.checkInfo.pageIndex = 1; + getQueryUserByPage(); + }; + const getQueryUserByPage = () => { + ProjectLibrary.queryDeptQuotaDailyPage(state.checkInfo).then(res => { + state.departInfo.tableData = res.data; + state.departInfo.total = res.total; + }); + }; + const handleEdit = row => { + ProjectLibrary.saveProjectDeptMoney({ + id: row.id, + quotaMoney: row.quotaMoney + }).then(() => { + ElMessage.success('淇敼鎴愬姛'); + getQueryUserByPage(); + }); + }; + const init = () => { + ProjectLibrary.initProjectDeptDaily({}).then(() => { + ElMessage.success('鍒濆鍖栨垚鍔�'); + getQueryUserByPage(); + }); + }; + return { + ...toRefs(state), + init, + getQueryUserByPageFirst, + handleEdit, + getQueryUserByPage + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-bz/quota/dept/index.vue b/WebSite/src/views/yo-dept-bz/quota/dept/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..8c54de18a7c94b9e58e5d4e7d14bf8ed9581034f --- /dev/null +++ b/WebSite/src/views/yo-dept-bz/quota/dept/index.vue @@ -0,0 +1,117 @@ +<template> + <div> + <el-card> + <el-row :gutter="10"> + <el-col :span="6"> + <el-date-picker + v-model="checkInfo.year" + type="year" + placeholder="閫夋嫨骞�" + > + </el-date-picker> + </el-col> + <el-col :span="6"> + <el-input + placeholder="璇疯緭鍏ラ儴闂ㄥ悕绉�" + v-model="checkInfo.deptName" + ></el-input> + </el-col> + </el-row> + <el-row class="mtop20"> + <el-button type="primary" plain @click="init">鍒濆鍖栭」鐩�</el-button> + <el-button @click="getQueryUserByPageFirst">鏌ヨ</el-button> + </el-row> + </el-card> + <el-card class="mtop20"> + <el-table + stripe + :data="departInfo.tableData" + style="width: 100%" + ref="multipleTable" + class="mtop20" + fit + > + <el-table-column label="骞翠唤" prop="year" /> + <el-table-column label="閮ㄩ棬鍚嶇О" prop="deptName" /> + <el-table-column label="閮ㄩ棬缂栧彿" prop="deptCode" /> + <el-table-column label="宸茬撼鍏ラ」鐩噾棰�" prop="quotaMoney" /> + <el-table-column label="閮ㄩ棬鏍稿畾鏁�" prop="quotaMoney"> + <template #default="scope"> + <el-input + v-model="scope.row.quotaMoney" + @blur="handleEdit(scope.row)" + ></el-input> + </template> + </el-table-column> + </el-table> + <Pagination + v-show="departInfo.total > 0" + :total="departInfo.total" + v-model:page="checkInfo.pageIndex" + v-model:limit="checkInfo.pageSize" + @pagination="getQueryUserByPage" + /> + </el-card> + </div> +</template> + +<script> +import { reactive, toRefs, onMounted } from 'vue'; +import { ElMessage } from 'element-plus'; +import ProjectLibrary from '@/api/projectLibrary'; +export default { + setup() { + onMounted(() => { + getQueryUserByPage(); + }); + const state = reactive({ + checkInfo: { + pageIndex: 1, + pageSize: 10, + year: sessionStorage.getItem('year'), + deptName: '', + quotaMoney: '' + }, + departInfo: { + total: null, + tableData: [] + } + }); + const getQueryUserByPageFirst = () => { + state.checkInfo.pageIndex = 1; + getQueryUserByPage(); + }; + const getQueryUserByPage = () => { + ProjectLibrary.queryDeptQuotaProjectPage(state.checkInfo).then(res => { + console.log('res', res); + state.departInfo.tableData = res.data; + state.departInfo.total = res.total; + }); + }; + const init = () => { + ProjectLibrary.initProjectDeptProject({}).then(() => { + ElMessage.success('鍒濆鍖栨垚鍔�'); + getQueryUserByPage(); + }); + }; + const handleEdit = row => { + ProjectLibrary.saveProjectDeptMoney({ + id: row.id, + quotaMoney: row.quotaMoney + }).then(() => { + ElMessage.success('淇敼鎴愬姛'); + getQueryUserByPage(); + }); + }; + return { + ...toRefs(state), + getQueryUserByPageFirst, + handleEdit, + init, + getQueryUserByPage + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-bz/quota/project/index.vue b/WebSite/src/views/yo-dept-bz/quota/project/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..0b0e6b016239d677befabacb7d25f3166cfde6ba --- /dev/null +++ b/WebSite/src/views/yo-dept-bz/quota/project/index.vue @@ -0,0 +1,129 @@ +<template> + <div> + <el-card> + <el-row :gutter="10"> + <el-col :span="6"> + <el-date-picker + v-model="checkInfo.year" + type="year" + placeholder="閫夋嫨骞�" + > + </el-date-picker> + </el-col> + <el-col :span="6"> + <el-input + placeholder="璇疯緭鍏ラ儴闂ㄥ悕绉�" + v-model="checkInfo.deptName" + ></el-input> + </el-col> + <el-col :span="6"> + <el-input + placeholder="涓€绾ч」鐩悕绉�" + v-model="checkInfo.one" + ></el-input> + </el-col> + <el-col :span="6"> + <el-input + placeholder="浜岀骇椤圭洰鍚嶇О" + v-model="checkInfo.two" + ></el-input> + </el-col> + </el-row> + <el-row class="mtop20"> + <el-button type="primary" plain @click="init">鍒濆鍖栭」鐩�</el-button> + <el-button @click="getQueryUserByPageFirst">鏌ヨ</el-button> + </el-row> + </el-card> + <el-card class="mtop20"> + <el-table + stripe + :data="departInfo.tableData" + style="width: 100%" + ref="multipleTable" + class="mtop20" + fit + > + <el-table-column label="骞翠唤" prop="year" /> + <el-table-column label="閮ㄩ棬鍚嶇О" prop="deptName" /> + <el-table-column label="閮ㄩ棬缂栧彿" prop="deptCode" /> + <el-table-column label="宸茬撼鍏ラ」鐩噾棰�" prop="quotaType" /> + <el-table-column label="閮ㄩ棬鏍稿畾鏁�" prop="quotaMoney"> + <template #default="scope"> + <el-input + v-model="scope.row.quotaMoney" + @blur="handleEdit(scope.row)" + ></el-input> + </template> + </el-table-column> + </el-table> + <Pagination + v-show="departInfo.total > 0" + :total="departInfo.total" + v-model:page="checkInfo.pageIndex" + v-model:limit="checkInfo.pageSize" + @pagination="getQueryUserByPage" + /> + </el-card> + </div> +</template> + +<script> +import { reactive, toRefs, onMounted } from 'vue'; +import { ElMessage } from 'element-plus'; +import ProjectLibrary from '@/api/projectLibrary'; +export default { + setup() { + onMounted(() => { + getQueryUserByPage(); + }); + const state = reactive({ + checkInfo: { + pageIndex: 1, + pageSize: 10, + year: sessionStorage.getItem('year'), + deptName: '', + deptCode: '', + quotaMoney: '' + }, + departInfo: { + total: null, + tableData: [] + } + }); + const getQueryUserByPageFirst = () => { + state.checkInfo.pageIndex = 1; + getQueryUserByPage(); + }; + const getQueryUserByPage = () => { + ProjectLibrary.queryProjectQuotaPage(state.checkInfo).then(res => { + state.departInfo.tableData = res.data; + state.departInfo.total = res.total; + }); + }; + const init = () => { + ProjectLibrary.initProject({}).then(() => { + ElMessage.success('鍒濆鍖栨垚鍔�'); + getQueryUserByPage(); + }); + }; + const handleEdit = row => { + ProjectLibrary.saveProjectDeptMoney({ + id: row.id, + quotaMoney: row.quotaMoney + }).then(() => { + ElMessage.success('淇敼鎴愬姛'); + getQueryUserByPage(); + }); + }; + return { + ...toRefs(state), + handleEdit, + init, + getQueryUserByPageFirst, + getQueryUserByPage + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-bz/second/SecondIncomeApply/components/List.vue b/WebSite/src/views/yo-dept-bz/second/SecondIncomeApply/components/List.vue new file mode 100644 index 0000000000000000000000000000000000000000..ff9b904c35c478aef79040943ad3bdeae341865c --- /dev/null +++ b/WebSite/src/views/yo-dept-bz/second/SecondIncomeApply/components/List.vue @@ -0,0 +1,129 @@ +<template> + <div class="app-container"> + <el-card> + <el-row :gutter="20"> + <el-col :span="4"> + <el-input v-model="year" placeholder="璇疯緭鍏ュ勾浠�"></el-input> + </el-col> + <el-col :span="3"> + <el-button plain @click="getIncomeList">鏌ヨ</el-button> + </el-col> + </el-row> + </el-card> + + <el-card class="mt-20"> + <template #header> + <el-row type="flex" justify="start"> + <div> + <el-button plain type="primary" @click="createIncomeApply" + >鏂板缓</el-button + > + <el-button plain type="primary">鎵归噺鎻愪氦</el-button> + <el-button plain type="warning">鎵归噺鎾ゅ洖</el-button> + <el-button plain type="danger" @click="deleteIncome" + >鍒犻櫎</el-button + > + </div> + </el-row> + </template> + + <page-query + v-model:pageNO="pageNO" + v-model:pageSize="pageSize" + :total="total" + :tableData="tableData" + :tableConfig="tableConfig" + :primaryKey="primaryKey" + v-model:selectedList="selectedList" + @pageinfo-change="pageInfoChange" + > + <template #tableColumn="{scope}"> + <el-button type="primary" @click="navToDetail(scope.row)">{{ + scope.row.state == '寰呮彁浜�' ? '缂栬緫' : '鏌ョ湅' + }}</el-button> + </template> + </page-query> + </el-card> + </div> +</template> + +<script> +import PageQuery from '@/components/PageQuery'; +import { onMounted, reactive, toRefs } from 'vue'; +import Api from '@/api'; +import Message from 'element-plus/lib/el-message'; +export default { + components: { PageQuery }, + emits: ['switch-page'], + setup(props, context) { + onMounted(() => { + getIncomeList(); + }); + const data = reactive({ + tableData: [{}], + pageNO: 1, + pageSize: 10, + total: 0, + year: '', + selectedList: [], + tableConfig: [ + { prop: 'planType', label: '鏀跺叆绫诲瀷' }, + { prop: 'departmentCode', label: '閮ㄩ棬缂栧彿' }, + { prop: 'departmentName', label: '閮ㄩ棬鍚嶇О' }, + { prop: 'totalMoney', label: '鎬婚噾棰�' }, + { prop: 'state', label: '瀹℃壒鐘舵€�' } + ], + primaryKey: 'id' + }); + const getIncomeList = () => { + Api.getInComeList({ + pageIndex: data.pageNO, + pageSize: data.pageSize, + departmentCode: '', + year: data.year, + id: null + }).then(res => { + data.tableData = res.data; + data.total = res.total; + }); + }; + const createIncomeApply = () => { + context.emit('switch-page', 'Detail', true); + }; + const navToDetail = row => { + context.emit('switch-page', 'Detail', row.state == '寰呮彁浜�' ? true : false, row); + }; + const pageInfoChange = val => { + data.pageNo = val.page; + data.pageSize = val.limit; + getIncomeList(); + }; + const deleteIncome = () => { + let arr = []; + data.selectedList.forEach(item => { + arr.push(item.id); + }); + Api.deleteInCome(arr).then(() => { + Message.success('鍒犻櫎鎴愬姛'); + getIncomeList() + }); + }; + return { + ...toRefs(data), + getIncomeList, + createIncomeApply, + navToDetail, + pageInfoChange, + deleteIncome + }; + } +}; +</script> + +<style lang="scss"> +.override-form-item { + .el-form-item__content { + display: flex; + } +} +</style> diff --git a/WebSite/src/views/yo-dept-bz/second/SecondIncomeApply/index.vue b/WebSite/src/views/yo-dept-bz/second/SecondIncomeApply/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..538846cb6ace9927f374cf95836618058b3ed101 --- /dev/null +++ b/WebSite/src/views/yo-dept-bz/second/SecondIncomeApply/index.vue @@ -0,0 +1,44 @@ +<template> + <div class="app-container"> + <transition name="fade-transform" mode="out-in"> + <component + :is="currentComponent" + @switch-page="switchPage" + :canEdit="canEdit" + :row="info" + ></component> + </transition> + </div> +</template> + +<script> +import List from '@/views/yo-dept-bz/second/SecondIncomeApply/components/List'; +import Detail from '@/views/yo-dept-bz/first/IncomeApply/components/Detail'; +import { reactive, toRefs } from 'vue'; +export default { + name: 'ProjectCheck', + components: { + List, + Detail + }, + setup() { + const data = reactive({ + currentComponent: 'List', + info: {}, + canEdit: false + }); + + const switchPage = (page, canEdit, row) => { + data.currentComponent = page; + data.canEdit = canEdit; + data.info = row; + }; + return { + ...toRefs(data), + switchPage + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-bz/second/SecondPeopleFundApply/components/List.vue b/WebSite/src/views/yo-dept-bz/second/SecondPeopleFundApply/components/List.vue new file mode 100644 index 0000000000000000000000000000000000000000..5d332bd4fa6452b791d40160b4d9f3a2eb17ced4 --- /dev/null +++ b/WebSite/src/views/yo-dept-bz/second/SecondPeopleFundApply/components/List.vue @@ -0,0 +1,131 @@ +<template> + <div class="app-container"> + <el-card> + <el-row :gutter="20"> + <el-col :span="4"> + <el-input placeholder="璇疯緭鍏ュ勾浠�"></el-input> + </el-col> + <el-col :span="4"> + <el-input placeholder="璇疯緭鍏ラ」鐩悕绉�"></el-input> + </el-col> + <el-col :span="3"> + <el-button plain>鏌ヨ</el-button> + </el-col> + </el-row> + </el-card> + + <el-card class="mt-20"> + <template #header> + <el-row type="flex" justify="start"> + <div> + <el-button plain type="primary" @click="createPeopleApply" + >鏂板缓</el-button + > + <el-button plain type="primary">鎵归噺鎻愪氦</el-button> + <el-button plain type="warning">鎵归噺鎾ゅ洖</el-button> + <el-button plain type="danger" @click="deletePerson" + >鍒犻櫎</el-button + > + </div> + </el-row> + </template> + + <page-query + v-model:pageNO="pageNO" + v-model:pageSize="pageSize" + :total="total" + :tableData="tableData" + :tableConfig="tableConfig" + :primaryKey="primaryKey" + :selectedList="selectedList" + @pageinfo-change="pageInfoChange" + > + <template #tableColumn="{scope}"> + <el-button type="primary" @click="navToDetail(scope.row)">{{ + scope.row.state == '寰呮彁浜�' ? '缂栬緫' : '鏌ョ湅' + }}</el-button> + </template> + </page-query> + </el-card> + </div> +</template> + +<script> +import PageQuery from '@/components/PageQuery'; +import { onMounted, reactive, toRefs } from 'vue'; +import { ElMessage } from 'element-plus'; +import Api from '@/api'; +export default { + components: { PageQuery }, + setup(props, context) { + onMounted(() => { + getPersonList(); + }); + const data = reactive({ + tableData: [], + pageNO: 1, + pageSize: 10, + total: 0, + selectedList: [], + tableConfig: [ + { prop: 'projectName', label: '椤圭洰鍚嶇О' }, + { prop: 'departmentName', label: '閮ㄩ棬鍚嶇О' }, + { prop: 'departmentCode', label: '閮ㄩ棬缂栧彿' }, + { prop: 'projectLeaderName', label: '璐熻矗浜哄悕绉�' }, + { prop: 'projectLeaderCode', label: '璐熻矗浜虹紪鍙�' }, + { prop: 'secondQuotaMoney', label: '鏍稿畾閲戦' }, + { prop: 'state', label: '瀹℃牳鐘舵€�' }, + { prop: 'planType', label: '鐢虫姤涔︾被鍨�' } + ], + primaryKey: 'id' + }); + const getPersonList = () => { + Api.getPersonList({ + pageIndex: 1, + pageSize: 10 + }).then(res => { + data.tableData = res.data; + data.total = res.total; + }); + }; + const navToDetail = row => { + context.emit('switch-page', 'Detail', row.state == '寰呮彁浜�' ? true : false, row); + }; + const pageInfoChange = val => { + console.error(val); + console.log(data.pageNO, data.pageSize); + // data.pageNo = val.page; + // data.pageSize = val.limit; + }; + const createPeopleApply = () => { + context.emit('switch-page', 'Detail', true); + }; + const deletePerson = () => { + let arr = []; + data.selectedList.forEach(item => { + arr.push(item.id); + }); + Api.deletePersonList(arr).then(() => { + getPersonList(); + ElMessage.success('鎵归噺鍒犻櫎鎴愬姛'); + }); + }; + return { + ...toRefs(data), + getPersonList, + navToDetail, + pageInfoChange, + createPeopleApply, + deletePerson + }; + } +}; +</script> + +<style lang="scss"> +.override-form-item { + .el-form-item__content { + display: flex; + } +} +</style> diff --git a/WebSite/src/views/yo-dept-bz/second/SecondPeopleFundApply/index.vue b/WebSite/src/views/yo-dept-bz/second/SecondPeopleFundApply/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..e902d5ac06aaf2791e058b75935c8524f4f9b1dd --- /dev/null +++ b/WebSite/src/views/yo-dept-bz/second/SecondPeopleFundApply/index.vue @@ -0,0 +1,44 @@ +<template> + <div class="app-container"> + <transition name="fade-transform" mode="out-in"> + <component + :is="currentComponent" + @switch-page="switchPage" + :canEdit="canEdit" + :row="info" + ></component> + </transition> + </div> +</template> + +<script> +import List from '@/views/yo-dept-bz/second/SecondPeopleFundApply/components/List'; +import Detail from '@/views/yo-dept-bz/first/PeopleFundApply/components/Detail'; +import { reactive, toRefs } from 'vue'; +export default { + name: 'ProjectCheck', + components: { + List, + Detail + }, + setup() { + const data = reactive({ + currentComponent: 'List', + info: {}, + canEdit: false + }); + + const switchPage = (page, canEdit, row) => { + data.currentComponent = page; + data.canEdit = canEdit; + data.info = row; + }; + return { + ...toRefs(data), + switchPage + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-bz/second/SecondProjectFundApply/components/List.vue b/WebSite/src/views/yo-dept-bz/second/SecondProjectFundApply/components/List.vue new file mode 100644 index 0000000000000000000000000000000000000000..b42a7919f54c0d281996df25e177d5d66bba6092 --- /dev/null +++ b/WebSite/src/views/yo-dept-bz/second/SecondProjectFundApply/components/List.vue @@ -0,0 +1,134 @@ +<template> + <div class="app-container"> + <el-card> + <el-row :gutter="20"> + <el-col :span="4"> + <el-input + v-model="queryForm.year" + placeholder="璇疯緭鍏ュ勾浠�" + ></el-input> + </el-col> + <el-col :span="4"> + <el-input + v-model="queryForm.projectName" + placeholder="璇疯緭鍏ラ」鐩悕绉�" + ></el-input> + </el-col> + <el-col :span="3"> + <el-button plain @click="getPageList">鏌ヨ</el-button> + </el-col> + </el-row> + </el-card> + + <el-card class="mt-20"> + <template #header> + <el-row type="flex" justify="start"> + <div> + <el-button plain type="primary">鎵归噺鎻愪氦</el-button> + <el-button plain type="warning">鎵归噺鎾ゅ洖</el-button> + <el-button plain type="danger" @click="barchRemoveHandler" + >鍒犻櫎</el-button + > + </div> + </el-row> + </template> + + <page-query + v-model:pageNO="pageNO" + v-model:pageSize="pageSize" + :total="total" + :tableData="tableData" + :tableConfig="tableConfig" + :primaryKey="primaryKey" + :selectedList="selectedList" + @pageinfo-change="pageInfoChange" + > + <template #tableColumn="{scope}"> + <el-button type="primary" @click="navToDetail(scope.row)">{{ + scope.row.state == '寰呮彁浜�' ? '缂栬緫' : '鏌ョ湅' + }}</el-button> + </template> + </page-query> + </el-card> + </div> +</template> + +<script> +import PageQuery from '@/components/PageQuery'; +import { onMounted, reactive, toRefs } from 'vue'; +import { ElMessage } from 'element-plus'; +import Api from '@/api'; +export default { + components: { PageQuery }, + setup(props, context) { + onMounted(() => { + getPageList(); + }); + const data = reactive({ + queryForm: { + year: '', + projectName: '' + }, + tableData: [], + pageNO: 1, + pageSize: 10, + total: 0, + selectedList: [], + tableConfig: [ + { prop: 'projectName', label: '椤圭洰鍚嶇О' }, + { prop: 'departmentName', label: '閮ㄩ棬鍚嶇О' }, + { prop: 'departmentCode', label: '閮ㄩ棬缂栧彿' }, + { prop: 'projectLeaderName', label: '璐熻矗浜哄悕绉�' }, + { prop: 'projectLeaderCode', label: '璐熻矗浜虹紪鍙�' }, + { prop: 'secondQuotaMoney', label: '鏍稿畾閲戦' }, + { prop: 'state', label: '瀹℃牳鐘舵€�' }, + { prop: 'planType', label: '鐢虫姤涔︾被鍨�' } + ], + primaryKey: 'id' + }); + const getPageList = () => { + Api.getDataList({ + pageIndex: data.pageNO, + pageSize: data.pageSize, + ...data.queryForm + }).then(res => { + data.tableData = res.data; + data.total = res.total; + }); + }; + const navToDetail = row => { + context.emit('switch-page', 'Detail', row.state == '寰呮彁浜�' ? true : false, row); + }; + const pageInfoChange = val => { + data.pageSize = val.limit; + data.pageNO = val.page; + getPageList(); + }; + const barchRemoveHandler = () => { + let arr = []; + data.selectedList.forEach(item => { + arr.push(item.id); + }); + Api.deleteDataList(arr).then(() => { + getPageList(); + ElMessage.success('鎵归噺鍒犻櫎鎴愬姛'); + }); + }; + return { + ...toRefs(data), + getPageList, + navToDetail, + pageInfoChange, + barchRemoveHandler + }; + } +}; +</script> + +<style lang="scss"> +.override-form-item { + .el-form-item__content { + display: flex; + } +} +</style> diff --git a/WebSite/src/views/yo-dept-bz/second/SecondProjectFundApply/index.vue b/WebSite/src/views/yo-dept-bz/second/SecondProjectFundApply/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..e80ab8ead1b1abfefe0e993150eb69e6dba2a59f --- /dev/null +++ b/WebSite/src/views/yo-dept-bz/second/SecondProjectFundApply/index.vue @@ -0,0 +1,44 @@ +<template> + <div class="app-container"> + <transition name="fade-transform" mode="out-in"> + <component + :is="currentComponent" + @switch-page="switchPage" + :canEdit="canEdit" + :row="info" + ></component> + </transition> + </div> +</template> + +<script> +import List from '@/views/yo-dept-bz/second/SecondProjectFundApply/components/List'; +// import Detail from '@/views/yo-dept-bz/first/ProjectFundApply/components/Detail'; +import Detail from '@/views/yo-common/ProjectApplyPageList/detail.vue' +import { reactive, toRefs } from 'vue'; +export default { + name: 'ProjectCheck', + components: { + List, + Detail + }, + setup() { + const data = reactive({ + currentComponent: 'List', + info: {}, + canEdit: false + }); + const switchPage = (page, canEdit, row) => { + data.currentComponent = page; + data.canEdit = canEdit; + data.info = row; + }; + return { + ...toRefs(data), + switchPage + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-bz/second/SecondPuplicFundApply/components/List.vue b/WebSite/src/views/yo-dept-bz/second/SecondPuplicFundApply/components/List.vue new file mode 100644 index 0000000000000000000000000000000000000000..7c034b38d3e867a6aba92aa24c16c93e260b887a --- /dev/null +++ b/WebSite/src/views/yo-dept-bz/second/SecondPuplicFundApply/components/List.vue @@ -0,0 +1,146 @@ +<template> + <div class="app-container"> + <el-card> + <el-row :gutter="20"> + <el-col :span="4"> + <el-input + v-model="queryForm.year" + placeholder="璇疯緭鍏ュ勾浠�" + ></el-input> + </el-col> + <!-- <el-col :span="4"> + <el-input + v-model="queryForm.projectName" + placeholder="璇疯緭鍏ラ」鐩悕绉�" + ></el-input> + </el-col> --> + <el-col :span="3"> + <el-button plain @click="getPublicList">鏌ヨ</el-button> + </el-col> + </el-row> + </el-card> + + <el-card class="mt-20"> + <template #header> + <el-row type="flex" justify="start"> + <div> + <el-button plain type="primary" @click="createPublicApply" + >鏂板缓</el-button + > + <el-button plain type="primary">鎵归噺鎻愪氦</el-button> + <el-button plain type="warning">鎵归噺鎾ゅ洖</el-button> + <el-button plain type="danger" @click="deletePubliic"> + 鍒犻櫎</el-button + > + </div> + </el-row> + </template> + + <page-query + v-model:pageNO="pageNO" + v-model:pageSize="pageSize" + :total="total" + :tableData="tableData" + :tableConfig="tableConfig" + :primaryKey="primaryKey" + :selectedList="selectedList" + @pageinfo-change="pageInfoChange" + > + <template #tableColumn="{scope}"> + <el-button type="primary" @click="navToDetail(scope.row)">{{ + scope.row.state == '寰呮彁浜�' ? '缂栬緫' : '鏌ョ湅' + }}</el-button> + </template> + </page-query> + </el-card> + </div> +</template> + +<script> +import PageQuery from '@/components/PageQuery'; +import { onMounted, reactive, toRefs } from 'vue'; +import { ElMessage } from 'element-plus'; +import Api from '@/api'; +export default { + components: { PageQuery }, + setup(props, context) { + onMounted(() => { + getPublicList(); + }); + const data = reactive({ + queryForm: { + year: '', + projectName: '' + }, + tableData: [], + pageNO: 1, + pageSize: 10, + total: 0, + selectedList: [], + tableConfig: [ + { prop: 'projectName', label: '椤圭洰鍚嶇О' }, + { prop: 'departmentName', label: '閮ㄩ棬鍚嶇О' }, + { prop: 'departmentCode', label: '閮ㄩ棬缂栧彿' }, + { prop: 'projectLeaderName', label: '璐熻矗浜哄悕绉�' }, + { prop: 'projectLeaderCode', label: '璐熻矗浜虹紪鍙�' }, + { prop: 'secondQuotaMoney', label: '鏍稿畾閲戦' }, + { prop: 'state', label: '瀹℃牳鐘舵€�' }, + { prop: 'planType', label: '鐢虫姤涔︾被鍨�' } + ], + primaryKey: 'id' + }); + const getPublicList = () => { + Api.getPublicList({ + pageIndex: data.pageNO, + pageSize: data.pageSize, + ...data.queryForm + }).then(res => { + data.tableData = res.data; + data.total = res.total; + }); + }; + const navToDetail = row => { + context.emit( + 'switch-page', + 'Detail', + row.state == '寰呮彁浜�' ? true : false, + row + ); + }; + const pageInfoChange = val => { + data.pageSize = val.limit; + data.pageNO = val.page; + getPublicList(); + }; + const deletePubliic = () => { + let arr = []; + data.selectedList.forEach(item => { + arr.push(item.id); + }); + Api.deletePublicList(arr).then(() => { + getPublicList(); + ElMessage.success('鎵归噺鍒犻櫎鎴愬姛'); + }); + }; + const createPublicApply = () => { + context.emit('switch-page', 'Detail', true); + }; + return { + ...toRefs(data), + getPublicList, + navToDetail, + pageInfoChange, + deletePubliic, + createPublicApply + }; + } +}; +</script> + +<style lang="scss"> +.override-form-item { + .el-form-item__content { + display: flex; + } +} +</style> diff --git a/WebSite/src/views/yo-dept-bz/second/SecondPuplicFundApply/index.vue b/WebSite/src/views/yo-dept-bz/second/SecondPuplicFundApply/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..f8f8f9c6e56dca504ef981f42d89cee2630888f3 --- /dev/null +++ b/WebSite/src/views/yo-dept-bz/second/SecondPuplicFundApply/index.vue @@ -0,0 +1,44 @@ +<template> + <div class="app-container"> + <transition name="fade-transform" mode="out-in"> + <component + :is="currentComponent" + @switch-page="switchPage" + :canEdit="canEdit" + :row="info" + ></component> + </transition> + </div> +</template> + +<script> +import List from '@/views/yo-dept-bz/second/SecondPuplicFundApply/components/List'; +// import Detail from '@/views/yo-dept-bz/first/PuplicFundApply/components/Detail'; +import Detail from '@/views/yo-common/PublicApplyPageList/detail.vue' +import { reactive, toRefs } from 'vue'; +export default { + name: 'ProjectCheck', + components: { + List, + Detail + }, + setup() { + const data = reactive({ + currentComponent: 'List', + info: {}, + canEdit: false + }); + const switchPage = (page, canEdit, row) => { + data.canEdit = canEdit; + data.info = row; + data.currentComponent = page; + }; + return { + ...toRefs(data), + switchPage + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-sp/income-approval/IncomeApproval/components/Detail.vue b/WebSite/src/views/yo-dept-sp/income-approval/IncomeApproval/components/Detail.vue new file mode 100644 index 0000000000000000000000000000000000000000..c45b18b4251990ef760237004f54a1b2676f0408 --- /dev/null +++ b/WebSite/src/views/yo-dept-sp/income-approval/IncomeApproval/components/Detail.vue @@ -0,0 +1,122 @@ +<template> + <div> + <IncomeApply + :canEdit="canEdit" + :row="applyInfo" + :flowInfo="flowInfo" + @handleBack="handleBack" + @handleSave="handleSave" + @handleSubmit="handleSubmit" + @handleReturn="handleReturn" + /> + </div> +</template> + +<script> +import { reactive, toRefs } from 'vue'; +import Api from '@/api' +export default { + props: { + canEdit: { + type: Boolean, + required: true + }, + row: { + type: Object, + default: () => { + return {}; + } + } + }, + setup(props, context) { + const data = reactive({ + flowInfo: { + nextSubmitNodes: [ + { + key: '1599725907064', + value: '绉戠爺澶勫鏍�' + } + ], + canRejectNodes: [ + { + key: '1599725907064', + value: '绉戠爺澶勫鏍�' + } + ], + user: '绯荤粺绠$悊鍛�', + state: '璐熻矗浜鸿ˉ鍏�', + flow: [ + { + actionTime: '2020骞�9鏈�11鏃�', + time: '17:30:43', + icon: '', + flowName: '绔嬮」', + attitude: '', + auditor: '绯荤粺绠$悊鍛�', + startNodeName: '寮€濮�', + endNodeName: '绉戠爺澶勭珛椤�', + flowState: '娴佺▼寮€濮�', + isPassed: 'False', + systemID: '00000000-0000-0000-0000-000000000000', + isEnable: false + }, + { + actionTime: '2020骞�9鏈�11鏃�', + time: '17:31:00', + icon: '', + flowName: '绔嬮」', + attitude: '', + auditor: '绯荤粺绠$悊鍛�', + startNodeName: '绉戠爺澶勭珛椤�', + endNodeName: '璐熻矗浜鸿ˉ鍏�', + flowState: '鎻愪氦', + isPassed: 'False', + systemID: '00000000-0000-0000-0000-000000000000', + isEnable: false + } + ], + btnStates: { + isShowSave: true, + isShowSubmit: true, + isShowReject: true, + isShowRevoke: false, + isShowChart: true, + isShowHistory: true, + isShowUser: true, + isShowState: true, + isShowCancel: false + } + }, + applyInfo: {} + }); + const handleBack = () => { + context.emit('switch-page', 'List'); + }; + const handleSave = () => {}; + const handleSubmit = () => {}; + const handleReturn = () => {}; + const getPageData = async () => { + const params = { + id: props.row.id + } + const res = await Api.incomeGetById(params); + data.applyInfo = res.data[0]; + console.log(res); + }; + + const init = () => { + getPageData(); + }; + init(); + return { + ...toRefs(data), + handleBack, + handleSave, + handleSubmit, + handleReturn + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-sp/income-approval/IncomeApproval/components/List.vue b/WebSite/src/views/yo-dept-sp/income-approval/IncomeApproval/components/List.vue new file mode 100644 index 0000000000000000000000000000000000000000..9f8e3f49955de3c50eaa98e58fef2221dc3a4697 --- /dev/null +++ b/WebSite/src/views/yo-dept-sp/income-approval/IncomeApproval/components/List.vue @@ -0,0 +1,41 @@ +<template> + <div class="app-container"> + <el-tabs + v-model="activeTab" + type="border-card" + stretch + > + <el-tab-pane label="涓€涓�" name="first"> + <page-list :planType="activeTab" @switch-page="navToDetail" :showDepartment="false"></page-list> + </el-tab-pane> + <el-tab-pane label="浜屼笂" name="second" lazy> + <page-list :planType="activeTab" @switch-page="navToDetail" :showDepartment="false"></page-list> + </el-tab-pane> + </el-tabs> + </div> +</template> + +<script> +import { reactive, toRefs } from 'vue'; +import PageList from '@/views/yo-common/IncomeApplyPageList'; +export default { + components: { + PageList + }, + emits: ['switch-page'], + setup(props, context) { + const data = reactive({ + activeTab: 'first' + }); + const navToDetail = row => { + context.emit('switch-page', 'Detail', false, row); + }; + return { + ...toRefs(data), + navToDetail, + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-sp/income-approval/IncomeApproval/index.vue b/WebSite/src/views/yo-dept-sp/income-approval/IncomeApproval/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..3533f5229bd401092e0ac0f5a7b1e69551db42b8 --- /dev/null +++ b/WebSite/src/views/yo-dept-sp/income-approval/IncomeApproval/index.vue @@ -0,0 +1,45 @@ +<template> + <div class="app-container"> + <transition name="fade-transform" mode="out-in"> + <component + :is="currentComponent" + @switch-page="switchPage" + :canEdit="canEdit" + :row="info" + ></component> + </transition> + </div> +</template> + +<script> +import List from '@/views/yo-dept-sp/income-approval/IncomeApproval/components/List'; +// import Detail from '@/views/yo-dept-sp/income-approval/IncomeApproval/components/Detail'; +import Detail from '@/views/yo-dept-bz/first/IncomeApply/components/Detail'; +import { reactive, toRefs } from 'vue'; +export default { + name: 'ProjectCheck', + components: { + List, + Detail + }, + setup() { + const data = reactive({ + currentComponent: 'List', + info: {}, + canEdit: false + }); + + const switchPage = (page, canEdit, row) => { + data.currentComponent = page; + data.canEdit = canEdit; + data.info = row; + }; + return { + ...toRefs(data), + switchPage + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-sp/people-fund-approval/FinanceApproval/components/Detail.vue b/WebSite/src/views/yo-dept-sp/people-fund-approval/FinanceApproval/components/Detail.vue new file mode 100644 index 0000000000000000000000000000000000000000..8c0da68211a9d0d4b1ca0ee28c0fbc2be7423963 --- /dev/null +++ b/WebSite/src/views/yo-dept-sp/people-fund-approval/FinanceApproval/components/Detail.vue @@ -0,0 +1,110 @@ +<template> + <div> + <PeopleFundApply + :canEdit="canEdit" + :row="applyInfo" + :flowInfo="flowInfo" + @handleBack="handleBack" + @handleSave="handleSave" + @handleSubmit="handleSubmit" + @handleReturn="handleReturn" + /> + </div> +</template> + +<script> +import { reactive, toRefs } from 'vue'; + +export default { + props: { + canEdit: { + type: Boolean, + required: true + }, + row: { + type: Object, + default: () => { + return {}; + } + } + }, + setup(props, context) { + const data = reactive({ + flowInfo: { + nextSubmitNodes: [ + { + key: '1599725907064', + value: '绉戠爺澶勫鏍�' + } + ], + canRejectNodes: [ + { + key: '1599725907064', + value: '绉戠爺澶勫鏍�' + } + ], + user: '绯荤粺绠$悊鍛�', + state: '璐熻矗浜鸿ˉ鍏�', + flow: [ + { + actionTime: '2020骞�9鏈�11鏃�', + time: '17:30:43', + icon: '', + flowName: '绔嬮」', + attitude: '', + auditor: '绯荤粺绠$悊鍛�', + startNodeName: '寮€濮�', + endNodeName: '绉戠爺澶勭珛椤�', + flowState: '娴佺▼寮€濮�', + isPassed: 'False', + systemID: '00000000-0000-0000-0000-000000000000', + isEnable: false + }, + { + actionTime: '2020骞�9鏈�11鏃�', + time: '17:31:00', + icon: '', + flowName: '绔嬮」', + attitude: '', + auditor: '绯荤粺绠$悊鍛�', + startNodeName: '绉戠爺澶勭珛椤�', + endNodeName: '璐熻矗浜鸿ˉ鍏�', + flowState: '鎻愪氦', + isPassed: 'False', + systemID: '00000000-0000-0000-0000-000000000000', + isEnable: false + } + ], + btnStates: { + isShowSave: true, + isShowSubmit: true, + isShowReject: true, + isShowRevoke: false, + isShowChart: true, + isShowHistory: true, + isShowUser: true, + isShowState: true, + isShowCancel: false + } + }, + applyInfo: {} + }); + + const handleBack = () => { + context.emit('switch-page', 'List'); + }; + const handleSave = () => {}; + const handleSubmit = () => {}; + const handleReturn = () => {}; + return { + ...toRefs(data), + handleBack, + handleSave, + handleSubmit, + handleReturn + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-sp/people-fund-approval/FinanceApproval/components/List.vue b/WebSite/src/views/yo-dept-sp/people-fund-approval/FinanceApproval/components/List.vue new file mode 100644 index 0000000000000000000000000000000000000000..40685bb835ffa7e5b59730fcd8b207eb78fff799 --- /dev/null +++ b/WebSite/src/views/yo-dept-sp/people-fund-approval/FinanceApproval/components/List.vue @@ -0,0 +1,41 @@ +<template> + <div class="app-container"> + <el-tabs + v-model="activeTab" + type="border-card" + stretch + > + <el-tab-pane label="涓€涓�" name="first"> + <page-list :planType="activeTab" @switch-page="navToDetail" :showDepartment="false"></page-list> + </el-tab-pane> + <el-tab-pane label="浜屼笂" name="second" lazy> + <page-list :planType="activeTab" @switch-page="navToDetail" :showDepartment="false"></page-list> + </el-tab-pane> + </el-tabs> + </div> +</template> + +<script> +import { reactive, toRefs } from 'vue'; +import PageList from '@/views/yo-common/PeopleApplyPageList'; +export default { + components: { + PageList + }, + emits: ['switch-page'], + setup(props, context) { + const data = reactive({ + activeTab: 'first' + }); + const navToDetail = row => { + context.emit('switch-page', 'Detail', false, row); + }; + return { + ...toRefs(data), + navToDetail, + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-sp/people-fund-approval/FinanceApproval/index.vue b/WebSite/src/views/yo-dept-sp/people-fund-approval/FinanceApproval/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..9b57b43c060e758226ae294d8ff7fbabf4f5fc4d --- /dev/null +++ b/WebSite/src/views/yo-dept-sp/people-fund-approval/FinanceApproval/index.vue @@ -0,0 +1,45 @@ +<template> + <div class="app-container"> + <transition name="fade-transform" mode="out-in"> + <component + :is="currentComponent" + @switch-page="switchPage" + :canEdit="canEdit" + :row="info" + ></component> + </transition> + </div> +</template> + +<script> +import List from '@/views/yo-dept-sp/people-fund-approval/FinanceApproval/components/List'; +// import Detail from '@/views/yo-dept-sp/people-fund-approval/FinanceApproval/components/Detail'; +import Detail from '@/views/yo-dept-bz/first/PeopleFundApply/components/Detail'; +import { reactive, toRefs } from 'vue'; +export default { + name: 'ProjectCheck', + components: { + List, + Detail + }, + setup() { + const data = reactive({ + currentComponent: 'List', + info: {}, + canEdit: false + }); + + const switchPage = (page, canEdit, row) => { + data.currentComponent = page; + data.canEdit = canEdit; + data.info = row; + }; + return { + ...toRefs(data), + switchPage + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-sp/people-fund-approval/HrApproval/components/Detail.vue b/WebSite/src/views/yo-dept-sp/people-fund-approval/HrApproval/components/Detail.vue new file mode 100644 index 0000000000000000000000000000000000000000..8c0da68211a9d0d4b1ca0ee28c0fbc2be7423963 --- /dev/null +++ b/WebSite/src/views/yo-dept-sp/people-fund-approval/HrApproval/components/Detail.vue @@ -0,0 +1,110 @@ +<template> + <div> + <PeopleFundApply + :canEdit="canEdit" + :row="applyInfo" + :flowInfo="flowInfo" + @handleBack="handleBack" + @handleSave="handleSave" + @handleSubmit="handleSubmit" + @handleReturn="handleReturn" + /> + </div> +</template> + +<script> +import { reactive, toRefs } from 'vue'; + +export default { + props: { + canEdit: { + type: Boolean, + required: true + }, + row: { + type: Object, + default: () => { + return {}; + } + } + }, + setup(props, context) { + const data = reactive({ + flowInfo: { + nextSubmitNodes: [ + { + key: '1599725907064', + value: '绉戠爺澶勫鏍�' + } + ], + canRejectNodes: [ + { + key: '1599725907064', + value: '绉戠爺澶勫鏍�' + } + ], + user: '绯荤粺绠$悊鍛�', + state: '璐熻矗浜鸿ˉ鍏�', + flow: [ + { + actionTime: '2020骞�9鏈�11鏃�', + time: '17:30:43', + icon: '', + flowName: '绔嬮」', + attitude: '', + auditor: '绯荤粺绠$悊鍛�', + startNodeName: '寮€濮�', + endNodeName: '绉戠爺澶勭珛椤�', + flowState: '娴佺▼寮€濮�', + isPassed: 'False', + systemID: '00000000-0000-0000-0000-000000000000', + isEnable: false + }, + { + actionTime: '2020骞�9鏈�11鏃�', + time: '17:31:00', + icon: '', + flowName: '绔嬮」', + attitude: '', + auditor: '绯荤粺绠$悊鍛�', + startNodeName: '绉戠爺澶勭珛椤�', + endNodeName: '璐熻矗浜鸿ˉ鍏�', + flowState: '鎻愪氦', + isPassed: 'False', + systemID: '00000000-0000-0000-0000-000000000000', + isEnable: false + } + ], + btnStates: { + isShowSave: true, + isShowSubmit: true, + isShowReject: true, + isShowRevoke: false, + isShowChart: true, + isShowHistory: true, + isShowUser: true, + isShowState: true, + isShowCancel: false + } + }, + applyInfo: {} + }); + + const handleBack = () => { + context.emit('switch-page', 'List'); + }; + const handleSave = () => {}; + const handleSubmit = () => {}; + const handleReturn = () => {}; + return { + ...toRefs(data), + handleBack, + handleSave, + handleSubmit, + handleReturn + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-sp/people-fund-approval/HrApproval/components/List.vue b/WebSite/src/views/yo-dept-sp/people-fund-approval/HrApproval/components/List.vue new file mode 100644 index 0000000000000000000000000000000000000000..40685bb835ffa7e5b59730fcd8b207eb78fff799 --- /dev/null +++ b/WebSite/src/views/yo-dept-sp/people-fund-approval/HrApproval/components/List.vue @@ -0,0 +1,41 @@ +<template> + <div class="app-container"> + <el-tabs + v-model="activeTab" + type="border-card" + stretch + > + <el-tab-pane label="涓€涓�" name="first"> + <page-list :planType="activeTab" @switch-page="navToDetail" :showDepartment="false"></page-list> + </el-tab-pane> + <el-tab-pane label="浜屼笂" name="second" lazy> + <page-list :planType="activeTab" @switch-page="navToDetail" :showDepartment="false"></page-list> + </el-tab-pane> + </el-tabs> + </div> +</template> + +<script> +import { reactive, toRefs } from 'vue'; +import PageList from '@/views/yo-common/PeopleApplyPageList'; +export default { + components: { + PageList + }, + emits: ['switch-page'], + setup(props, context) { + const data = reactive({ + activeTab: 'first' + }); + const navToDetail = row => { + context.emit('switch-page', 'Detail', false, row); + }; + return { + ...toRefs(data), + navToDetail, + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-sp/people-fund-approval/HrApproval/index.vue b/WebSite/src/views/yo-dept-sp/people-fund-approval/HrApproval/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..6f61a5f79e58a0385255bd8d0219351306c7b949 --- /dev/null +++ b/WebSite/src/views/yo-dept-sp/people-fund-approval/HrApproval/index.vue @@ -0,0 +1,45 @@ +<template> + <div class="app-container"> + <transition name="fade-transform" mode="out-in"> + <component + :is="currentComponent" + @switch-page="switchPage" + :canEdit="canEdit" + :row="info" + ></component> + </transition> + </div> +</template> + +<script> +import List from '@/views/yo-dept-sp/people-fund-approval/HrApproval/components/List'; +// import Detail from '@/views/yo-dept-sp/people-fund-approval/HrApproval/components/Detail'; +import Detail from '@/views/yo-dept-bz/first/PeopleFundApply/components/Detail'; +import { reactive, toRefs } from 'vue'; +export default { + name: 'ProjectCheck', + components: { + List, + Detail + }, + setup() { + const data = reactive({ + currentComponent: 'List', + info: {}, + canEdit: false + }); + + const switchPage = (page, canEdit, row) => { + data.currentComponent = page; + data.canEdit = canEdit; + data.info = row; + }; + return { + ...toRefs(data), + switchPage + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-sp/project-fund-approval/BackDeptApproval/components/Detail.vue b/WebSite/src/views/yo-dept-sp/project-fund-approval/BackDeptApproval/components/Detail.vue new file mode 100644 index 0000000000000000000000000000000000000000..076042c89d7dfe09931ed1810704b6776a0283b8 --- /dev/null +++ b/WebSite/src/views/yo-dept-sp/project-fund-approval/BackDeptApproval/components/Detail.vue @@ -0,0 +1,125 @@ +<template> + <div> + <TableFlow + :canEdit="canEdit" + :row="applyInfo" + :flowInfo="flowInfo" + @handleBack="handleBack" + @handleSave="handleSave" + @handleSubmit="handleSubmit" + @handleReturn="handleReturn" + ></TableFlow> + </div> +</template> + +<script> +import { reactive, toRefs } from 'vue'; +import Api from '@/api' +export default { + props: { + canEdit: { + type: Boolean, + required: true + }, + row: { + type: Object, + default: () => { + return {}; + } + }, + }, + setup(props, context) { + const data = reactive({ + flowInfo: { + nextSubmitNodes: [ + { + key: '1599725907064', + value: '绉戠爺澶勫鏍�' + } + ], + canRejectNodes: [ + { + key: '1599725907064', + value: '绉戠爺澶勫鏍�' + } + ], + user: '绯荤粺绠$悊鍛�', + state: '璐熻矗浜鸿ˉ鍏�', + flow: [ + { + actionTime: '2020骞�9鏈�11鏃�', + time: '17:30:43', + icon: '', + flowName: '绔嬮」', + attitude: '', + auditor: '绯荤粺绠$悊鍛�', + startNodeName: '寮€濮�', + endNodeName: '绉戠爺澶勭珛椤�', + flowState: '娴佺▼寮€濮�', + isPassed: 'False', + systemID: '00000000-0000-0000-0000-000000000000', + isEnable: false + }, + { + actionTime: '2020骞�9鏈�11鏃�', + time: '17:31:00', + icon: '', + flowName: '绔嬮」', + attitude: '', + auditor: '绯荤粺绠$悊鍛�', + startNodeName: '绉戠爺澶勭珛椤�', + endNodeName: '璐熻矗浜鸿ˉ鍏�', + flowState: '鎻愪氦', + isPassed: 'False', + systemID: '00000000-0000-0000-0000-000000000000', + isEnable: false + } + ], + btnStates: { + isShowSave: true, + isShowSubmit: true, + isShowReject: true, + isShowRevoke: false, + isShowChart: true, + isShowHistory: true, + isShowUser: true, + isShowState: true, + isShowCancel: false + } + }, + applyInfo: {} + }); + const handleBack = () => { + context.emit('switch-page', 'List'); + }; + const handleSave = applyInfo => { + console.log(applyInfo); + }; + const handleSubmit = (flowOutput, applyInfo) => { + console.log(flowOutput, applyInfo); + }; + const handleReturn = (flowOutput, applyInfo) => { + console.log(flowOutput, applyInfo); + }; + + const getPageData = async () => { + const res = await Api.projectGetById(props.row.id); + data.applyInfo = res.data[0]; + } + + const init = () => { + getPageData() + } + init(); + return { + ...toRefs(data), + handleBack, + handleSave, + handleSubmit, + handleReturn + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-sp/project-fund-approval/BackDeptApproval/components/List.vue b/WebSite/src/views/yo-dept-sp/project-fund-approval/BackDeptApproval/components/List.vue new file mode 100644 index 0000000000000000000000000000000000000000..4ff5a6b7a0cbe3c81e73684f7c024eb53ca945b3 --- /dev/null +++ b/WebSite/src/views/yo-dept-sp/project-fund-approval/BackDeptApproval/components/List.vue @@ -0,0 +1,81 @@ +<template> + <div class="app-container"> + <el-tabs + v-model="activeTab" + type="border-card" + stretch + > + <el-tab-pane + v-for="tab in tabList" + :key="tab" + :label="tab.label" + :name="tab.name" + lazy + > + <el-tabs + v-model="activeSubTab" + type="border-card" + stretch + > + <el-tab-pane + v-for="subTab in subTabList" + :key="subTab" + :label="subTab.label" + :name="subTab.name" + lazy + > + <page-list :planType="activeTab" @switch-page="navToDetail"></page-list> + </el-tab-pane> + </el-tabs> + </el-tab-pane> + </el-tabs> + </div> +</template> + +<script> +import { reactive, toRefs } from 'vue'; +import PageList from '@/views/yo-common/ProjectApplyPageList'; +export default { + components: { PageList }, + setup(props, context) { + const data = reactive({ + tabList: [ + { label: '涓€涓�', name: '涓€涓�' }, + { label: '浜屼笂', name: '浜屼笂' } + ], + subTabList: [ + { label: '鍐呮兜寤鸿', name: '鍐呮兜寤鸿' }, + { label: '瀛︾敓娲诲姩缁忚垂', name: '瀛︾敓娲诲姩缁忚垂' }, + { label: '鐗╀笟绠$悊璐�', name: '鐗╀笟绠$悊璐�' }, + ], + activeTab: '涓€涓�', + activeSubTab: '鍐呮兜寤鸿', + // tableData: [{ id: 1 }, { id: 2 }], + // pageNO: 1, + // pageSize: 10, + // total: 0, + // selectedList: [], + // tableConfig: [ + // { prop: 'projectName', label: '椤圭洰鍚嶇О' }, + // { prop: 'departmentName', label: '閮ㄩ棬鍚嶇О' }, + // { prop: 'departmentCode', label: '閮ㄩ棬缂栧彿' }, + // { prop: 'projectLeaderName', label: '璐熻矗浜哄鍚�' }, + // { prop: 'projectLeaderCode', label: '璐熻矗浜虹紪鍙�' }, + // { prop: 'quotaMoney', label: '鏍稿畾閲戦' }, + // { prop: 'state', label: '瀹℃牳鐘舵€�' }, + // { prop: 'planType', label: '鐢虫姤涔︾被鍨�' } + // ], + // primaryKey: 'id' + }); + const navToDetail = row => { + context.emit('switch-page', 'Detail', false, row); + }; + return { + ...toRefs(data), + navToDetail, + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-sp/project-fund-approval/BackDeptApproval/index.vue b/WebSite/src/views/yo-dept-sp/project-fund-approval/BackDeptApproval/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..970052e0eabafdaeddd79e83cda9ea6563f108a9 --- /dev/null +++ b/WebSite/src/views/yo-dept-sp/project-fund-approval/BackDeptApproval/index.vue @@ -0,0 +1,45 @@ +<template> + <div class="app-container"> + <transition name="fade-transform" mode="out-in"> + <component + :is="currentComponent" + @switch-page="switchPage" + :canEdit="canEdit" + :row="info" + ></component> + </transition> + </div> +</template> + +<script> +import List from '@/views/yo-dept-sp/project-fund-approval/BackDeptApproval/components/List'; +// import Detail from '@/views/yo-dept-sp/project-fund-approval/BackDeptApproval/components/Detail'; +import Detail from '@/views/yo-common/ProjectApplyPageList/detail.vue' +import { reactive, toRefs } from 'vue'; +export default { + name: 'ProjectCheck', + components: { + List, + Detail + }, + setup() { + const data = reactive({ + currentComponent: 'List', + info: {}, + canEdit: false + }); + + const switchPage = (page, canEdit, row) => { + data.currentComponent = page; + data.canEdit = canEdit; + data.info = row; + }; + return { + ...toRefs(data), + switchPage + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-sp/project-fund-approval/FinanceApproval/components/Detail.vue b/WebSite/src/views/yo-dept-sp/project-fund-approval/FinanceApproval/components/Detail.vue new file mode 100644 index 0000000000000000000000000000000000000000..2eff7d55a74b474bb597fbbe153d0e556a47fc5f --- /dev/null +++ b/WebSite/src/views/yo-dept-sp/project-fund-approval/FinanceApproval/components/Detail.vue @@ -0,0 +1,125 @@ +<template> + <div> + <TableFlow + :canEdit="canEdit" + :row="applyInfo" + :flowInfo="flowInfo" + @handleBack="handleBack" + @handleSave="handleSave" + @handleSubmit="handleSubmit" + @handleReturn="handleReturn" + ></TableFlow> + </div> +</template> + +<script> +import { reactive, toRefs } from 'vue'; +import Api from '@/api' +export default { + props: { + canEdit: { + type: Boolean, + required: true + }, + row: { + type: Object, + default: () => { + return {}; + } + } + }, + setup(props, context) { + const data = reactive({ + flowInfo: { + nextSubmitNodes: [ + { + key: '1599725907064', + value: '绉戠爺澶勫鏍�' + } + ], + canRejectNodes: [ + { + key: '1599725907064', + value: '绉戠爺澶勫鏍�' + } + ], + user: '绯荤粺绠$悊鍛�', + state: '璐熻矗浜鸿ˉ鍏�', + flow: [ + { + actionTime: '2020骞�9鏈�11鏃�', + time: '17:30:43', + icon: '', + flowName: '绔嬮」', + attitude: '', + auditor: '绯荤粺绠$悊鍛�', + startNodeName: '寮€濮�', + endNodeName: '绉戠爺澶勭珛椤�', + flowState: '娴佺▼寮€濮�', + isPassed: 'False', + systemID: '00000000-0000-0000-0000-000000000000', + isEnable: false + }, + { + actionTime: '2020骞�9鏈�11鏃�', + time: '17:31:00', + icon: '', + flowName: '绔嬮」', + attitude: '', + auditor: '绯荤粺绠$悊鍛�', + startNodeName: '绉戠爺澶勭珛椤�', + endNodeName: '璐熻矗浜鸿ˉ鍏�', + flowState: '鎻愪氦', + isPassed: 'False', + systemID: '00000000-0000-0000-0000-000000000000', + isEnable: false + } + ], + btnStates: { + isShowSave: true, + isShowSubmit: true, + isShowReject: true, + isShowRevoke: false, + isShowChart: true, + isShowHistory: true, + isShowUser: true, + isShowState: true, + isShowCancel: false + } + }, + applyInfo: {} + }); + const handleBack = () => { + context.emit('switch-page', 'List'); + }; + const handleSave = applyInfo => { + console.log(applyInfo); + }; + const handleSubmit = (flowOutput, applyInfo) => { + console.log(flowOutput, applyInfo); + }; + const handleReturn = (flowOutput, applyInfo) => { + console.log(flowOutput, applyInfo); + }; + + const getPageData = async () => { + const res = await Api.projectGetById(props.row.id); + data.applyInfo = res.data[0]; + }; + + const init = () => { + getPageData(); + }; + init(); + return { + ...toRefs(data), + handleBack, + handleSave, + handleSubmit, + handleReturn + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-sp/project-fund-approval/FinanceApproval/components/List.vue b/WebSite/src/views/yo-dept-sp/project-fund-approval/FinanceApproval/components/List.vue new file mode 100644 index 0000000000000000000000000000000000000000..e9655ca5be9eb40cfd4d904cfa6808df7e133403 --- /dev/null +++ b/WebSite/src/views/yo-dept-sp/project-fund-approval/FinanceApproval/components/List.vue @@ -0,0 +1,41 @@ +<template> + <div class="app-container"> + <el-tabs + v-model="activeTab" + type="border-card" + stretch + > + <el-tab-pane label="涓€涓�" name="first"> + <page-list :planType="activeTab" @switch-page="navToDetail"></page-list> + </el-tab-pane> + <el-tab-pane label="浜屼笂" name="second" lazy> + <page-list :planType="activeTab" @switch-page="navToDetail"></page-list> + </el-tab-pane> + </el-tabs> + </div> +</template> + +<script> +import { reactive, toRefs } from 'vue'; +import PageList from '@/views/yo-common/ProjectApplyPageList'; +export default { + components: { + PageList + }, + emits: ['switch-page'], + setup(props, context) { + const data = reactive({ + activeTab: 'first' + }); + const navToDetail = row => { + context.emit('switch-page', 'Detail', false, row); + }; + return { + ...toRefs(data), + navToDetail, + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-sp/project-fund-approval/FinanceApproval/index.vue b/WebSite/src/views/yo-dept-sp/project-fund-approval/FinanceApproval/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..5d1d3afaa7c429541189b2e89e4d1a79d27d89f9 --- /dev/null +++ b/WebSite/src/views/yo-dept-sp/project-fund-approval/FinanceApproval/index.vue @@ -0,0 +1,45 @@ +<template> + <div class="app-container"> + <transition name="fade-transform" mode="out-in"> + <component + :is="currentComponent" + @switch-page="switchPage" + :canEdit="canEdit" + :row="info" + ></component> + </transition> + </div> +</template> + +<script> +import List from '@/views/yo-dept-sp/project-fund-approval/FinanceApproval/components/List'; +// import Detail from '@/views/yo-dept-sp/project-fund-approval/FinanceApproval/components/Detail'; +import Detail from '@/views/yo-common/ProjectApplyPageList/detail.vue' +import { reactive, toRefs } from 'vue'; +export default { + name: 'ProjectCheck', + components: { + List, + Detail + }, + setup() { + const data = reactive({ + currentComponent: 'List', + info: {}, + canEdit: false + }); + + const switchPage = (page, canEdit, row) => { + data.currentComponent = page; + data.canEdit = canEdit; + data.info = row; + }; + return { + ...toRefs(data), + switchPage + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-sp/project-fund-approval/LeaderApproval/components/Detail.vue b/WebSite/src/views/yo-dept-sp/project-fund-approval/LeaderApproval/components/Detail.vue new file mode 100644 index 0000000000000000000000000000000000000000..d284baec7fb481ec372e8de63fbf4ffaec308c9f --- /dev/null +++ b/WebSite/src/views/yo-dept-sp/project-fund-approval/LeaderApproval/components/Detail.vue @@ -0,0 +1,133 @@ +<template> + <div> + <TableFlow + :canEdit="canEdit" + :row="applyInfo" + :flowInfo="flowInfo" + @handleBack="handleBack" + @handleSave="handleSave" + @handleSubmit="handleSubmit" + @handleReturn="handleReturn" + ></TableFlow> + </div> +</template> + +<script> +import { reactive, toRefs } from 'vue'; +import Api from '@/api'; +export default { + props: { + canEdit: { + type: Boolean, + required: true + }, + row: { + type: Object, + default: () => { + return {}; + } + } + }, + setup(props, context) { + const data = reactive({ + flowInfo: { + nextSubmitNodes: [ + { + key: '1599725907064', + value: '绉戠爺澶勫鏍�' + } + ], + canRejectNodes: [ + { + key: '1599725907064', + value: '绉戠爺澶勫鏍�' + } + ], + user: '绯荤粺绠$悊鍛�', + state: '璐熻矗浜鸿ˉ鍏�', + flow: [ + { + actionTime: '2020骞�9鏈�11鏃�', + time: '17:30:43', + icon: '', + flowName: '绔嬮」', + attitude: '', + auditor: '绯荤粺绠$悊鍛�', + startNodeName: '寮€濮�', + endNodeName: '绉戠爺澶勭珛椤�', + flowState: '娴佺▼寮€濮�', + isPassed: 'False', + systemID: '00000000-0000-0000-0000-000000000000', + isEnable: false + }, + { + actionTime: '2020骞�9鏈�11鏃�', + time: '17:31:00', + icon: '', + flowName: '绔嬮」', + attitude: '', + auditor: '绯荤粺绠$悊鍛�', + startNodeName: '绉戠爺澶勭珛椤�', + endNodeName: '璐熻矗浜鸿ˉ鍏�', + flowState: '鎻愪氦', + isPassed: 'False', + systemID: '00000000-0000-0000-0000-000000000000', + isEnable: false + } + ], + btnStates: { + isShowSave: true, + isShowSubmit: true, + isShowReject: true, + isShowRevoke: false, + isShowChart: true, + isShowHistory: true, + isShowUser: true, + isShowState: true, + isShowCancel: false + } + }, + applyInfo: { + // summaryJson: {}, //椤圭洰姒傝堪 + // projectTargetInfo: { + // //椤圭洰缁╂晥 + // summaryJson: {}, + // subOtherArrayJson: [{}] + // }, + // planBookSubjectOutList: [] + } + }); + const handleBack = () => { + context.emit('switch-page', 'List'); + }; + const handleSave = applyInfo => { + console.log(applyInfo); + }; + const handleSubmit = (flowOutput, applyInfo) => { + console.log(flowOutput, applyInfo); + }; + const handleReturn = (flowOutput, applyInfo) => { + console.log(flowOutput, applyInfo); + }; + + const getPageData = async () => { + const res = await Api.projectGetById(props.row.id); + data.applyInfo = res.data[0]; + }; + + const init = () => { + getPageData(); + }; + init(); + return { + ...toRefs(data), + handleBack, + handleSave, + handleSubmit, + handleReturn + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-sp/project-fund-approval/LeaderApproval/components/List.vue b/WebSite/src/views/yo-dept-sp/project-fund-approval/LeaderApproval/components/List.vue new file mode 100644 index 0000000000000000000000000000000000000000..74bfc5af0ed93210a4e116358ab8ecc76d290284 --- /dev/null +++ b/WebSite/src/views/yo-dept-sp/project-fund-approval/LeaderApproval/components/List.vue @@ -0,0 +1,45 @@ +<template> + <div class="app-container"> + <el-tabs v-model="activeTab" type="border-card" stretch> + <el-tab-pane label="涓€涓�" name="YISHANG"> + <page-list + :planType="activeTab" + @switch-page="navToDetail" + :showDepartment="false" + ></page-list> + </el-tab-pane> + <el-tab-pane label="浜屼笂" name="ERSHANG" lazy> + <page-list + :planType="activeTab" + @switch-page="navToDetail" + :showDepartment="false" + ></page-list> + </el-tab-pane> + </el-tabs> + </div> +</template> + +<script> +import { reactive, toRefs } from 'vue'; +import PageList from '@/views/yo-common/ProjectApplyPageList'; +export default { + components: { + PageList + }, + emits: ['switch-page'], + setup(props, context) { + const data = reactive({ + activeTab: 'YISHANG' + }); + const navToDetail = row => { + context.emit('switch-page', 'Detail', false, row); + }; + return { + ...toRefs(data), + navToDetail + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-sp/project-fund-approval/LeaderApproval/index.vue b/WebSite/src/views/yo-dept-sp/project-fund-approval/LeaderApproval/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..cd3b4783fc3ac0b7c0e2da90a891e4f79429c063 --- /dev/null +++ b/WebSite/src/views/yo-dept-sp/project-fund-approval/LeaderApproval/index.vue @@ -0,0 +1,45 @@ +<template> + <div class="app-container"> + <transition name="fade-transform" mode="out-in"> + <component + :is="currentComponent" + @switch-page="switchPage" + :canEdit="canEdit" + :row="info" + ></component> + </transition> + </div> +</template> + +<script> +import List from '@/views/yo-dept-sp/project-fund-approval/LeaderApproval/components/List'; +// import Detail from '@/views/yo-dept-sp/project-fund-approval/LeaderApproval/components/Detail'; +import Detail from '@/views/yo-common/ProjectApplyPageList/detail.vue' +import { reactive, toRefs } from 'vue'; +export default { + name: 'ProjectCheck', + components: { + List, + Detail + }, + setup() { + const data = reactive({ + currentComponent: 'List', + info: {}, + canEdit: false + }); + + const switchPage = (page, canEdit, row) => { + data.currentComponent = page; + data.canEdit = canEdit; + data.info = row; + }; + return { + ...toRefs(data), + switchPage + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-sp/project-fund-approval/SchoolLeaderApproval/components/Detail.vue b/WebSite/src/views/yo-dept-sp/project-fund-approval/SchoolLeaderApproval/components/Detail.vue new file mode 100644 index 0000000000000000000000000000000000000000..2eff7d55a74b474bb597fbbe153d0e556a47fc5f --- /dev/null +++ b/WebSite/src/views/yo-dept-sp/project-fund-approval/SchoolLeaderApproval/components/Detail.vue @@ -0,0 +1,125 @@ +<template> + <div> + <TableFlow + :canEdit="canEdit" + :row="applyInfo" + :flowInfo="flowInfo" + @handleBack="handleBack" + @handleSave="handleSave" + @handleSubmit="handleSubmit" + @handleReturn="handleReturn" + ></TableFlow> + </div> +</template> + +<script> +import { reactive, toRefs } from 'vue'; +import Api from '@/api' +export default { + props: { + canEdit: { + type: Boolean, + required: true + }, + row: { + type: Object, + default: () => { + return {}; + } + } + }, + setup(props, context) { + const data = reactive({ + flowInfo: { + nextSubmitNodes: [ + { + key: '1599725907064', + value: '绉戠爺澶勫鏍�' + } + ], + canRejectNodes: [ + { + key: '1599725907064', + value: '绉戠爺澶勫鏍�' + } + ], + user: '绯荤粺绠$悊鍛�', + state: '璐熻矗浜鸿ˉ鍏�', + flow: [ + { + actionTime: '2020骞�9鏈�11鏃�', + time: '17:30:43', + icon: '', + flowName: '绔嬮」', + attitude: '', + auditor: '绯荤粺绠$悊鍛�', + startNodeName: '寮€濮�', + endNodeName: '绉戠爺澶勭珛椤�', + flowState: '娴佺▼寮€濮�', + isPassed: 'False', + systemID: '00000000-0000-0000-0000-000000000000', + isEnable: false + }, + { + actionTime: '2020骞�9鏈�11鏃�', + time: '17:31:00', + icon: '', + flowName: '绔嬮」', + attitude: '', + auditor: '绯荤粺绠$悊鍛�', + startNodeName: '绉戠爺澶勭珛椤�', + endNodeName: '璐熻矗浜鸿ˉ鍏�', + flowState: '鎻愪氦', + isPassed: 'False', + systemID: '00000000-0000-0000-0000-000000000000', + isEnable: false + } + ], + btnStates: { + isShowSave: true, + isShowSubmit: true, + isShowReject: true, + isShowRevoke: false, + isShowChart: true, + isShowHistory: true, + isShowUser: true, + isShowState: true, + isShowCancel: false + } + }, + applyInfo: {} + }); + const handleBack = () => { + context.emit('switch-page', 'List'); + }; + const handleSave = applyInfo => { + console.log(applyInfo); + }; + const handleSubmit = (flowOutput, applyInfo) => { + console.log(flowOutput, applyInfo); + }; + const handleReturn = (flowOutput, applyInfo) => { + console.log(flowOutput, applyInfo); + }; + + const getPageData = async () => { + const res = await Api.projectGetById(props.row.id); + data.applyInfo = res.data[0]; + }; + + const init = () => { + getPageData(); + }; + init(); + return { + ...toRefs(data), + handleBack, + handleSave, + handleSubmit, + handleReturn + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-sp/project-fund-approval/SchoolLeaderApproval/components/List.vue b/WebSite/src/views/yo-dept-sp/project-fund-approval/SchoolLeaderApproval/components/List.vue new file mode 100644 index 0000000000000000000000000000000000000000..e9655ca5be9eb40cfd4d904cfa6808df7e133403 --- /dev/null +++ b/WebSite/src/views/yo-dept-sp/project-fund-approval/SchoolLeaderApproval/components/List.vue @@ -0,0 +1,41 @@ +<template> + <div class="app-container"> + <el-tabs + v-model="activeTab" + type="border-card" + stretch + > + <el-tab-pane label="涓€涓�" name="first"> + <page-list :planType="activeTab" @switch-page="navToDetail"></page-list> + </el-tab-pane> + <el-tab-pane label="浜屼笂" name="second" lazy> + <page-list :planType="activeTab" @switch-page="navToDetail"></page-list> + </el-tab-pane> + </el-tabs> + </div> +</template> + +<script> +import { reactive, toRefs } from 'vue'; +import PageList from '@/views/yo-common/ProjectApplyPageList'; +export default { + components: { + PageList + }, + emits: ['switch-page'], + setup(props, context) { + const data = reactive({ + activeTab: 'first' + }); + const navToDetail = row => { + context.emit('switch-page', 'Detail', false, row); + }; + return { + ...toRefs(data), + navToDetail, + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-sp/project-fund-approval/SchoolLeaderApproval/index.vue b/WebSite/src/views/yo-dept-sp/project-fund-approval/SchoolLeaderApproval/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..aed39baebcae676e7f7d5535a6bd3338c033e2f0 --- /dev/null +++ b/WebSite/src/views/yo-dept-sp/project-fund-approval/SchoolLeaderApproval/index.vue @@ -0,0 +1,45 @@ +<template> + <div class="app-container"> + <transition name="fade-transform" mode="out-in"> + <component + :is="currentComponent" + @switch-page="switchPage" + :canEdit="canEdit" + :row="info" + ></component> + </transition> + </div> +</template> + +<script> +import List from '@/views/yo-dept-sp/project-fund-approval/SchoolLeaderApproval/components/List'; +// import Detail from '@/views/yo-dept-sp/project-fund-approval/SchoolLeaderApproval/components/Detail'; +import Detail from '@/views/yo-common/ProjectApplyPageList/detail.vue' +import { reactive, toRefs } from 'vue'; +export default { + name: 'ProjectCheck', + components: { + List, + Detail + }, + setup() { + const data = reactive({ + currentComponent: 'List', + info: {}, + canEdit: false + }); + + const switchPage = (page, canEdit, row) => { + data.currentComponent = page; + data.canEdit = canEdit; + data.info = row; + }; + return { + ...toRefs(data), + switchPage + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-sp/public-fund-approval/FinanceApproval/components/Detail.vue b/WebSite/src/views/yo-dept-sp/public-fund-approval/FinanceApproval/components/Detail.vue new file mode 100644 index 0000000000000000000000000000000000000000..75627a12d2c94c4c3215788a2408bca7ba5d7396 --- /dev/null +++ b/WebSite/src/views/yo-dept-sp/public-fund-approval/FinanceApproval/components/Detail.vue @@ -0,0 +1,110 @@ +<template> + <div> + <PublicFundApply + :canEdit="CAN_EDIT" + :row="applyInfo" + :flowInfo="flowInfo" + @handleBack="handleBack" + @handleSave="handleSave" + @handleSubmit="handleSubmit" + @handleReturn="handleReturn" + /> + </div> +</template> + +<script> +import { reactive, toRefs } from 'vue'; + +export default { + props: { + canEdit: { + type: Boolean, + required: true + }, + row: { + type: Object, + default: () => { + return {}; + } + } + }, + setup(props, context) { + const data = reactive({ + flowInfo: { + nextSubmitNodes: [ + { + key: '1599725907064', + value: '绉戠爺澶勫鏍�' + } + ], + canRejectNodes: [ + { + key: '1599725907064', + value: '绉戠爺澶勫鏍�' + } + ], + user: '绯荤粺绠$悊鍛�', + state: '璐熻矗浜鸿ˉ鍏�', + flow: [ + { + actionTime: '2020骞�9鏈�11鏃�', + time: '17:30:43', + icon: '', + flowName: '绔嬮」', + attitude: '', + auditor: '绯荤粺绠$悊鍛�', + startNodeName: '寮€濮�', + endNodeName: '绉戠爺澶勭珛椤�', + flowState: '娴佺▼寮€濮�', + isPassed: 'False', + systemID: '00000000-0000-0000-0000-000000000000', + isEnable: false + }, + { + actionTime: '2020骞�9鏈�11鏃�', + time: '17:31:00', + icon: '', + flowName: '绔嬮」', + attitude: '', + auditor: '绯荤粺绠$悊鍛�', + startNodeName: '绉戠爺澶勭珛椤�', + endNodeName: '璐熻矗浜鸿ˉ鍏�', + flowState: '鎻愪氦', + isPassed: 'False', + systemID: '00000000-0000-0000-0000-000000000000', + isEnable: false + } + ], + btnStates: { + isShowSave: true, + isShowSubmit: true, + isShowReject: true, + isShowRevoke: false, + isShowChart: true, + isShowHistory: true, + isShowUser: true, + isShowState: true, + isShowCancel: false + } + }, + applyInfo: {}, + CAN_EDIT: props.canEdit + }); + const handleBack = () => { + context.emit('switch-page', 'List'); + }; + const handleSave = () => {}; + const handleSubmit = () => {}; + const handleReturn = () => {}; + return { + ...toRefs(data), + handleBack, + handleSave, + handleSubmit, + handleReturn + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-sp/public-fund-approval/FinanceApproval/components/List.vue b/WebSite/src/views/yo-dept-sp/public-fund-approval/FinanceApproval/components/List.vue new file mode 100644 index 0000000000000000000000000000000000000000..b837de6d8c9713b4b8eef1d311b56c50cf57fe67 --- /dev/null +++ b/WebSite/src/views/yo-dept-sp/public-fund-approval/FinanceApproval/components/List.vue @@ -0,0 +1,41 @@ +<template> + <div class="app-container"> + <el-tabs + v-model="activeTab" + type="border-card" + stretch + > + <el-tab-pane label="涓€涓�" name="first"> + <page-list :planType="activeTab" @switch-page="navToDetail"></page-list> + </el-tab-pane> + <el-tab-pane label="浜屼笂" name="second" lazy> + <page-list :planType="activeTab" @switch-page="navToDetail"></page-list> + </el-tab-pane> + </el-tabs> + </div> +</template> + +<script> +import { reactive, toRefs } from 'vue'; +import PageList from '@/views/yo-common/PublicApplyPageList'; +export default { + components: { + PageList + }, + emits: ['switch-page'], + setup(props, context) { + const data = reactive({ + activeTab: 'first' + }); + const navToDetail = row => { + context.emit('switch-page', 'Detail', false, row); + }; + return { + ...toRefs(data), + navToDetail, + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-sp/public-fund-approval/FinanceApproval/index.vue b/WebSite/src/views/yo-dept-sp/public-fund-approval/FinanceApproval/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..abfb0dde65da45a3bd21b758b676de3d03ddf738 --- /dev/null +++ b/WebSite/src/views/yo-dept-sp/public-fund-approval/FinanceApproval/index.vue @@ -0,0 +1,45 @@ +<template> + <div class="app-container"> + <transition name="fade-transform" mode="out-in"> + <component + :is="currentComponent" + @switch-page="switchPage" + :canEdit="canEdit" + :row="info" + ></component> + </transition> + </div> +</template> + +<script> +import List from '@/views/yo-dept-sp/public-fund-approval/FinanceApproval/components/List'; +// import Detail from '@/views/yo-dept-sp/public-fund-approval/FinanceApproval/components/Detail'; +import Detail from '@/views/yo-common/PublicApplyPageList/detail.vue' +import { reactive, toRefs } from 'vue'; +export default { + name: 'ProjectCheck', + components: { + List, + Detail + }, + setup() { + const data = reactive({ + currentComponent: 'List', + info: {}, + canEdit: false + }); + + const switchPage = (page, canEdit, row) => { + data.currentComponent = page; + data.canEdit = canEdit; + data.info = row; + }; + return { + ...toRefs(data), + switchPage + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-sp/public-fund-approval/LeaderApproval/components/Detail.vue b/WebSite/src/views/yo-dept-sp/public-fund-approval/LeaderApproval/components/Detail.vue new file mode 100644 index 0000000000000000000000000000000000000000..75627a12d2c94c4c3215788a2408bca7ba5d7396 --- /dev/null +++ b/WebSite/src/views/yo-dept-sp/public-fund-approval/LeaderApproval/components/Detail.vue @@ -0,0 +1,110 @@ +<template> + <div> + <PublicFundApply + :canEdit="CAN_EDIT" + :row="applyInfo" + :flowInfo="flowInfo" + @handleBack="handleBack" + @handleSave="handleSave" + @handleSubmit="handleSubmit" + @handleReturn="handleReturn" + /> + </div> +</template> + +<script> +import { reactive, toRefs } from 'vue'; + +export default { + props: { + canEdit: { + type: Boolean, + required: true + }, + row: { + type: Object, + default: () => { + return {}; + } + } + }, + setup(props, context) { + const data = reactive({ + flowInfo: { + nextSubmitNodes: [ + { + key: '1599725907064', + value: '绉戠爺澶勫鏍�' + } + ], + canRejectNodes: [ + { + key: '1599725907064', + value: '绉戠爺澶勫鏍�' + } + ], + user: '绯荤粺绠$悊鍛�', + state: '璐熻矗浜鸿ˉ鍏�', + flow: [ + { + actionTime: '2020骞�9鏈�11鏃�', + time: '17:30:43', + icon: '', + flowName: '绔嬮」', + attitude: '', + auditor: '绯荤粺绠$悊鍛�', + startNodeName: '寮€濮�', + endNodeName: '绉戠爺澶勭珛椤�', + flowState: '娴佺▼寮€濮�', + isPassed: 'False', + systemID: '00000000-0000-0000-0000-000000000000', + isEnable: false + }, + { + actionTime: '2020骞�9鏈�11鏃�', + time: '17:31:00', + icon: '', + flowName: '绔嬮」', + attitude: '', + auditor: '绯荤粺绠$悊鍛�', + startNodeName: '绉戠爺澶勭珛椤�', + endNodeName: '璐熻矗浜鸿ˉ鍏�', + flowState: '鎻愪氦', + isPassed: 'False', + systemID: '00000000-0000-0000-0000-000000000000', + isEnable: false + } + ], + btnStates: { + isShowSave: true, + isShowSubmit: true, + isShowReject: true, + isShowRevoke: false, + isShowChart: true, + isShowHistory: true, + isShowUser: true, + isShowState: true, + isShowCancel: false + } + }, + applyInfo: {}, + CAN_EDIT: props.canEdit + }); + const handleBack = () => { + context.emit('switch-page', 'List'); + }; + const handleSave = () => {}; + const handleSubmit = () => {}; + const handleReturn = () => {}; + return { + ...toRefs(data), + handleBack, + handleSave, + handleSubmit, + handleReturn + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-sp/public-fund-approval/LeaderApproval/components/List.vue b/WebSite/src/views/yo-dept-sp/public-fund-approval/LeaderApproval/components/List.vue new file mode 100644 index 0000000000000000000000000000000000000000..5e8b400b7f20cf0e60ff2932ee1164a1b40ad873 --- /dev/null +++ b/WebSite/src/views/yo-dept-sp/public-fund-approval/LeaderApproval/components/List.vue @@ -0,0 +1,41 @@ +<template> + <div class="app-container"> + <el-tabs + v-model="activeTab" + type="border-card" + stretch + > + <el-tab-pane label="涓€涓�" name="first"> + <page-list :planType="activeTab" @switch-page="navToDetail" :showDepartment="false"></page-list> + </el-tab-pane> + <el-tab-pane label="浜屼笂" name="second" lazy> + <page-list :planType="activeTab" @switch-page="navToDetail" :showDepartment="false"></page-list> + </el-tab-pane> + </el-tabs> + </div> +</template> + +<script> +import { reactive, toRefs } from 'vue'; +import PageList from '@/views/yo-common/PublicApplyPageList'; +export default { + components: { + PageList + }, + emits: ['switch-page'], + setup(props, context) { + const data = reactive({ + activeTab: 'first' + }); + const navToDetail = row => { + context.emit('switch-page', 'Detail', true, row); + }; + return { + ...toRefs(data), + navToDetail, + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-sp/public-fund-approval/LeaderApproval/index.vue b/WebSite/src/views/yo-dept-sp/public-fund-approval/LeaderApproval/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..d9c3d3640596ab44aa61ce081024d425595a524a --- /dev/null +++ b/WebSite/src/views/yo-dept-sp/public-fund-approval/LeaderApproval/index.vue @@ -0,0 +1,45 @@ +<template> + <div class="app-container"> + <transition name="fade-transform" mode="out-in"> + <component + :is="currentComponent" + @switch-page="switchPage" + :canEdit="canEdit" + :row="info" + ></component> + </transition> + </div> +</template> + +<script> +import List from '@/views/yo-dept-sp/public-fund-approval/LeaderApproval/components/List'; +// import Detail from '@/views/yo-dept-sp/public-fund-approval/LeaderApproval/components/Detail'; +import Detail from '@/views/yo-common/PublicApplyPageList/detail.vue' +import { reactive, toRefs } from 'vue'; +export default { + name: 'ProjectCheck', + components: { + List, + Detail + }, + setup() { + const data = reactive({ + currentComponent: 'List', + info: {}, + canEdit: false + }); + + const switchPage = (page, canEdit, row) => { + data.currentComponent = page; + data.canEdit = canEdit; + data.info = row; + }; + return { + ...toRefs(data), + switchPage + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-sp/public-fund-approval/SchoolLeaderApproval/components/Detail.vue b/WebSite/src/views/yo-dept-sp/public-fund-approval/SchoolLeaderApproval/components/Detail.vue new file mode 100644 index 0000000000000000000000000000000000000000..75627a12d2c94c4c3215788a2408bca7ba5d7396 --- /dev/null +++ b/WebSite/src/views/yo-dept-sp/public-fund-approval/SchoolLeaderApproval/components/Detail.vue @@ -0,0 +1,110 @@ +<template> + <div> + <PublicFundApply + :canEdit="CAN_EDIT" + :row="applyInfo" + :flowInfo="flowInfo" + @handleBack="handleBack" + @handleSave="handleSave" + @handleSubmit="handleSubmit" + @handleReturn="handleReturn" + /> + </div> +</template> + +<script> +import { reactive, toRefs } from 'vue'; + +export default { + props: { + canEdit: { + type: Boolean, + required: true + }, + row: { + type: Object, + default: () => { + return {}; + } + } + }, + setup(props, context) { + const data = reactive({ + flowInfo: { + nextSubmitNodes: [ + { + key: '1599725907064', + value: '绉戠爺澶勫鏍�' + } + ], + canRejectNodes: [ + { + key: '1599725907064', + value: '绉戠爺澶勫鏍�' + } + ], + user: '绯荤粺绠$悊鍛�', + state: '璐熻矗浜鸿ˉ鍏�', + flow: [ + { + actionTime: '2020骞�9鏈�11鏃�', + time: '17:30:43', + icon: '', + flowName: '绔嬮」', + attitude: '', + auditor: '绯荤粺绠$悊鍛�', + startNodeName: '寮€濮�', + endNodeName: '绉戠爺澶勭珛椤�', + flowState: '娴佺▼寮€濮�', + isPassed: 'False', + systemID: '00000000-0000-0000-0000-000000000000', + isEnable: false + }, + { + actionTime: '2020骞�9鏈�11鏃�', + time: '17:31:00', + icon: '', + flowName: '绔嬮」', + attitude: '', + auditor: '绯荤粺绠$悊鍛�', + startNodeName: '绉戠爺澶勭珛椤�', + endNodeName: '璐熻矗浜鸿ˉ鍏�', + flowState: '鎻愪氦', + isPassed: 'False', + systemID: '00000000-0000-0000-0000-000000000000', + isEnable: false + } + ], + btnStates: { + isShowSave: true, + isShowSubmit: true, + isShowReject: true, + isShowRevoke: false, + isShowChart: true, + isShowHistory: true, + isShowUser: true, + isShowState: true, + isShowCancel: false + } + }, + applyInfo: {}, + CAN_EDIT: props.canEdit + }); + const handleBack = () => { + context.emit('switch-page', 'List'); + }; + const handleSave = () => {}; + const handleSubmit = () => {}; + const handleReturn = () => {}; + return { + ...toRefs(data), + handleBack, + handleSave, + handleSubmit, + handleReturn + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-sp/public-fund-approval/SchoolLeaderApproval/components/List.vue b/WebSite/src/views/yo-dept-sp/public-fund-approval/SchoolLeaderApproval/components/List.vue new file mode 100644 index 0000000000000000000000000000000000000000..b837de6d8c9713b4b8eef1d311b56c50cf57fe67 --- /dev/null +++ b/WebSite/src/views/yo-dept-sp/public-fund-approval/SchoolLeaderApproval/components/List.vue @@ -0,0 +1,41 @@ +<template> + <div class="app-container"> + <el-tabs + v-model="activeTab" + type="border-card" + stretch + > + <el-tab-pane label="涓€涓�" name="first"> + <page-list :planType="activeTab" @switch-page="navToDetail"></page-list> + </el-tab-pane> + <el-tab-pane label="浜屼笂" name="second" lazy> + <page-list :planType="activeTab" @switch-page="navToDetail"></page-list> + </el-tab-pane> + </el-tabs> + </div> +</template> + +<script> +import { reactive, toRefs } from 'vue'; +import PageList from '@/views/yo-common/PublicApplyPageList'; +export default { + components: { + PageList + }, + emits: ['switch-page'], + setup(props, context) { + const data = reactive({ + activeTab: 'first' + }); + const navToDetail = row => { + context.emit('switch-page', 'Detail', false, row); + }; + return { + ...toRefs(data), + navToDetail, + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-dept-sp/public-fund-approval/SchoolLeaderApproval/index.vue b/WebSite/src/views/yo-dept-sp/public-fund-approval/SchoolLeaderApproval/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..d0787d6c66ec39401a235b8a7bb2a1bc15da199f --- /dev/null +++ b/WebSite/src/views/yo-dept-sp/public-fund-approval/SchoolLeaderApproval/index.vue @@ -0,0 +1,45 @@ +<template> + <div class="app-container"> + <transition name="fade-transform" mode="out-in"> + <component + :is="currentComponent" + @switch-page="switchPage" + :canEdit="canEdit" + :row="info" + ></component> + </transition> + </div> +</template> + +<script> +import List from '@/views/yo-dept-sp/public-fund-approval/SchoolLeaderApproval/components/List'; +// import Detail from '@/views/yo-dept-sp/public-fund-approval/SchoolLeaderApproval/components/Detail'; +import Detail from '@/views/yo-common/PublicApplyPageList/detail.vue' +import { reactive, toRefs } from 'vue'; +export default { + name: 'ProjectCheck', + components: { + List, + Detail + }, + setup() { + const data = reactive({ + currentComponent: 'List', + info: {}, + canEdit: false + }); + + const switchPage = (page, canEdit, row) => { + data.currentComponent = page; + data.canEdit = canEdit; + data.info = row; + }; + return { + ...toRefs(data), + switchPage + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/yo-search/search/ProjectSearch/index.vue b/WebSite/src/views/yo-search/search/ProjectSearch/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..5ee3df64b4326c89f9b7518ea48f21dc74a1d2b7 --- /dev/null +++ b/WebSite/src/views/yo-search/search/ProjectSearch/index.vue @@ -0,0 +1,89 @@ +<template> + <div class="app-container"> + <el-tabs type="border-card" stretch> + <el-tab-pane label="涓€涓�"> + <el-card> + <el-row :gutter="20"> + <el-col :span="6"> + <el-input placeholder="璇疯緭鍏ラ」鐩紪鍙�"></el-input> + </el-col> + <el-col :span="3"> + <el-button plain>鏌ヨ</el-button> + </el-col> + </el-row> + </el-card> + + <el-card class="mt-20"> + <template #header> + <el-row type="flex" justify="start"> + <div> + <!-- <el-button plain type="primary">鎵归噺閫氳繃</el-button> + <el-button plain type="warning">鎵归噺椹冲洖</el-button> --> + <el-button plain type="primary">瀵煎嚭</el-button> + </div> + </el-row> + </template> + <page-query + v-model:pageNO="pageNO" + v-model:pageSize="pageSize" + :total="total" + :tableData="tableData" + :tableConfig="tableConfig" + :primaryKey="primaryKey" + :selectedList="selectedList" + @pageinfo-change="pageInfoChange" + > + <template #tableColumn="{ scope }"> + <el-button @click="navToDetail(scope.row)">鏌ョ湅</el-button> + </template> + </page-query> + </el-card> + </el-tab-pane> + <el-tab-pane label="浜屼笂">浜屼笂</el-tab-pane> + </el-tabs> + </div> +</template> + +<script> +import { reactive, toRefs } from 'vue'; +import PageQuery from '@/components/PageQuery'; +export default { + components: { PageQuery }, + setup() { + const data = reactive({ + tableData: [], + pageNO: 1, + pageSize: 10, + total: 0, + selectedList: [], + tableConfig: [ + { prop: 'agreementName', label: '閮ㄩ棬缂栧彿' }, + { prop: 'agreementNumber', label: '椤圭洰鍚嶇О' } + // { prop: 'donorName', label: '閮ㄩ棬缂栧彿' }, + // { prop: 'recipient', label: '璐熻矗浜哄鍚�' }, + // { prop: 'signDate', label: '璐熻矗浜虹紪鍙�' }, + // { prop: 'startTime', label: '鏍稿畾閲戦' }, + // { prop: 'endTime', label: '瀹℃牳鐘舵€�' }, + // { prop: 'agreementAmountFormat', label: '鐢虫姤涔︾被鍨�' } + ], + primaryKey: 'id' + }); + const navToDetail = row => { + console.log(row); + }; + const pageInfoChange = val => { + console.error(val); + console.log(data.pageNO, data.pageSize); + // data.pageNo = val.page; + // data.pageSize = val.limit; + }; + return { + ...toRefs(data), + navToDetail, + pageInfoChange + }; + } +}; +</script> + +<style></style> diff --git a/WebSite/src/views/zip/index.vue b/WebSite/src/views/zip/index.vue deleted file mode 100644 index 6bacc580c32a67b7ca29fc7b5048de7f6094c21d..0000000000000000000000000000000000000000 --- a/WebSite/src/views/zip/index.vue +++ /dev/null @@ -1,101 +0,0 @@ -<template> - <div class="app-container"> - <el-input - v-model="filename" - placeholder="Please enter the file name (default file)" - style="width:300px;" - prefix-icon="el-icon-document" - /> - <el-button - :loading="downloadLoading" - style="margin-bottom:20px;" - type="primary" - icon="el-icon-document" - @click="handleDownload" - > - Export Zip - </el-button> - <el-table - v-loading="listLoading" - :data="list" - element-loading-text="鎷煎懡鍔犺浇涓�" - border - fit - highlight-current-row - > - <el-table-column align="center" label="ID" width="95"> - <template slot-scope="scope"> - {{ scope.$index }} - </template> - </el-table-column> - <el-table-column label="Title"> - <template slot-scope="scope"> - {{ scope.row.title }} - </template> - </el-table-column> - <el-table-column label="Author" width="95" align="center"> - <template slot-scope="scope"> - <el-tag>{{ scope.row.author }}</el-tag> - </template> - </el-table-column> - <el-table-column label="Readings" width="115" align="center"> - <template slot-scope="scope"> - {{ scope.row.pageviews }} - </template> - </el-table-column> - <el-table-column align="center" label="Date" width="220"> - <template slot-scope="scope"> - <i class="el-icon-time" /> - <span>{{ scope.row.display_time }}</span> - </template> - </el-table-column> - </el-table> - </div> -</template> - -<script> -import { fetchList } from "@/api/article"; - -export default { - name: "ExportZip", - data() { - return { - list: null, - listLoading: true, - downloadLoading: false, - filename: "" - }; - }, - created() { - this.fetchData(); - }, - methods: { - async fetchData() { - this.listLoading = true; - const { data } = await fetchList(); - this.list = data.items; - this.listLoading = false; - }, - handleDownload() { - this.downloadLoading = true; - import("@/vendor/Export2Zip").then(zip => { - const tHeader = ["Id", "Title", "Author", "Readings", "Date"]; - const filterVal = [ - "id", - "title", - "author", - "pageviews", - "display_time" - ]; - const list = this.list; - const data = this.formatJson(filterVal, list); - zip.export_txt_to_zip(tHeader, data, this.filename, this.filename); - this.downloadLoading = false; - }); - }, - formatJson(filterVal, jsonData) { - return jsonData.map(v => filterVal.map(j => v[j])); - } - } -}; -</script> diff --git a/WebSite/tests/unit/.eslintrc.js b/WebSite/tests/unit/.eslintrc.js deleted file mode 100644 index 958d51ba27f55d294e6950088886d7ad71199d74..0000000000000000000000000000000000000000 --- a/WebSite/tests/unit/.eslintrc.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - env: { - jest: true - } -} diff --git a/WebSite/tests/unit/components/Hamburger.spec.js b/WebSite/tests/unit/components/Hamburger.spec.js deleted file mode 100644 index 01ea303a5e16f875972722d7665383836b20654c..0000000000000000000000000000000000000000 --- a/WebSite/tests/unit/components/Hamburger.spec.js +++ /dev/null @@ -1,18 +0,0 @@ -import { shallowMount } from '@vue/test-utils' -import Hamburger from '@/components/Hamburger/index.vue' -describe('Hamburger.vue', () => { - it('toggle click', () => { - const wrapper = shallowMount(Hamburger) - const mockFn = jest.fn() - wrapper.vm.$on('toggleClick', mockFn) - wrapper.find('.hamburger').trigger('click') - expect(mockFn).toBeCalled() - }) - it('prop isActive', () => { - const wrapper = shallowMount(Hamburger) - wrapper.setProps({ isActive: true }) - expect(wrapper.contains('.is-active')).toBe(true) - wrapper.setProps({ isActive: false }) - expect(wrapper.contains('.is-active')).toBe(false) - }) -}) diff --git a/WebSite/tests/unit/components/SvgIcon.spec.js b/WebSite/tests/unit/components/SvgIcon.spec.js deleted file mode 100644 index 31467a9f6fba16a81a90923db02da289248e2bc6..0000000000000000000000000000000000000000 --- a/WebSite/tests/unit/components/SvgIcon.spec.js +++ /dev/null @@ -1,22 +0,0 @@ -import { shallowMount } from '@vue/test-utils' -import SvgIcon from '@/components/SvgIcon/index.vue' -describe('SvgIcon.vue', () => { - it('iconClass', () => { - const wrapper = shallowMount(SvgIcon, { - propsData: { - iconClass: 'test' - } - }) - expect(wrapper.find('use').attributes().href).toBe('#icon-test') - }) - it('className', () => { - const wrapper = shallowMount(SvgIcon, { - propsData: { - iconClass: 'test' - } - }) - expect(wrapper.classes().length).toBe(1) - wrapper.setProps({ className: 'test' }) - expect(wrapper.classes().includes('test')).toBe(true) - }) -}) diff --git a/WebSite/tests/unit/utils/formatTime.spec.js b/WebSite/tests/unit/utils/formatTime.spec.js deleted file mode 100644 index d07e414f0a7153e4c0b30605270ff8976fa3e3bf..0000000000000000000000000000000000000000 --- a/WebSite/tests/unit/utils/formatTime.spec.js +++ /dev/null @@ -1,29 +0,0 @@ -import { formatTime } from '@/utils/index.js' -describe('Utils:formatTime', () => { - const d = new Date('2018-07-13 17:54:01') // "2018-07-13 17:54:01" - const retrofit = 5 * 1000 - - it('ten digits timestamp', () => { - expect(formatTime((d / 1000).toFixed(0))).toBe('7鏈�13鏃�17鏃�54鍒�') - }) - it('test now', () => { - expect(formatTime(+new Date() - 1)).toBe('鍒氬垰') - }) - it('less two minute', () => { - expect(formatTime(+new Date() - 60 * 2 * 1000 + retrofit)).toBe('2鍒嗛挓鍓�') - }) - it('less two hour', () => { - expect(formatTime(+new Date() - 60 * 60 * 2 * 1000 + retrofit)).toBe('2灏忔椂鍓�') - }) - it('less one day', () => { - expect(formatTime(+new Date() - 60 * 60 * 24 * 1 * 1000)).toBe('1澶╁墠') - }) - it('more than one day', () => { - expect(formatTime(d)).toBe('7鏈�13鏃�17鏃�54鍒�') - }) - it('format', () => { - expect(formatTime(d, '{y}-{m}-{d} {h}:{i}')).toBe('2018-07-13 17:54') - expect(formatTime(d, '{y}-{m}-{d}')).toBe('2018-07-13') - expect(formatTime(d, '{y}/{m}/{d} {h}-{i}')).toBe('2018/07/13 17-54') - }) -}) diff --git a/WebSite/tests/unit/utils/parseTime.spec.js b/WebSite/tests/unit/utils/parseTime.spec.js deleted file mode 100644 index 77ecb9d53c2a1b21a510d3d2909a0e301b7b5ce4..0000000000000000000000000000000000000000 --- a/WebSite/tests/unit/utils/parseTime.spec.js +++ /dev/null @@ -1,27 +0,0 @@ -import { parseTime } from '@/utils/index.js' -describe('Utils:parseTime', () => { - const d = new Date('2018-07-13 17:54:01') // "2018-07-13 17:54:01" - it('timestamp', () => { - expect(parseTime(d)).toBe('2018-07-13 17:54:01') - }) - it('ten digits timestamp', () => { - expect(parseTime((d / 1000).toFixed(0))).toBe('2018-07-13 17:54:01') - }) - it('new Date', () => { - expect(parseTime(new Date(d))).toBe('2018-07-13 17:54:01') - }) - it('format', () => { - expect(parseTime(d, '{y}-{m}-{d} {h}:{i}')).toBe('2018-07-13 17:54') - expect(parseTime(d, '{y}-{m}-{d}')).toBe('2018-07-13') - expect(parseTime(d, '{y}/{m}/{d} {h}-{i}')).toBe('2018/07/13 17-54') - }) - it('get the day of the week', () => { - expect(parseTime(d, '{a}')).toBe('浜�') // 鏄熸湡浜� - }) - it('get the day of the week', () => { - expect(parseTime(+d + 1000 * 60 * 60 * 24 * 2, '{a}')).toBe('鏃�') // 鏄熸湡鏃� - }) - it('empty argument', () => { - expect(parseTime()).toBeNull() - }) -}) diff --git a/WebSite/tests/unit/utils/validate.spec.js b/WebSite/tests/unit/utils/validate.spec.js deleted file mode 100644 index ef2efe614276df4ad3d30fc06a76bf88748d112e..0000000000000000000000000000000000000000 --- a/WebSite/tests/unit/utils/validate.spec.js +++ /dev/null @@ -1,28 +0,0 @@ -import { validUsername, validURL, validLowerCase, validUpperCase, validAlphabets } from '@/utils/validate.js' -describe('Utils:validate', () => { - it('validUsername', () => { - expect(validUsername('admin')).toBe(true) - expect(validUsername('editor')).toBe(true) - expect(validUsername('xxxx')).toBe(false) - }) - it('validURL', () => { - expect(validURL('https://github.com/PanJiaChen/vue-element-admin')).toBe(true) - expect(validURL('http://github.com/PanJiaChen/vue-element-admin')).toBe(true) - expect(validURL('github.com/PanJiaChen/vue-element-admin')).toBe(false) - }) - it('validLowerCase', () => { - expect(validLowerCase('abc')).toBe(true) - expect(validLowerCase('Abc')).toBe(false) - expect(validLowerCase('123abc')).toBe(false) - }) - it('validUpperCase', () => { - expect(validUpperCase('ABC')).toBe(true) - expect(validUpperCase('Abc')).toBe(false) - expect(validUpperCase('123ABC')).toBe(false) - }) - it('validAlphabets', () => { - expect(validAlphabets('ABC')).toBe(true) - expect(validAlphabets('Abc')).toBe(true) - expect(validAlphabets('123aBC')).toBe(false) - }) -}) diff --git a/WebSite/vue.config.js b/WebSite/vue.config.js index 5b7c28ad76b049251c153c4f665a5b2a4bf6b1d8..d523d36000ccc9c394202caa21fb9995f42405b6 100644 --- a/WebSite/vue.config.js +++ b/WebSite/vue.config.js @@ -1,136 +1,101 @@ -"use strict"; -const path = require("path"); -const defaultSettings = require("./src/settings.js"); +/* + * @Description: + * @Autor: dongjunhua + * @Date: 2020-12-17 12:52:35 + * @LastEditors: dongjunhua + * @LastEditTime: 2021-02-23 15:31:01 + */ +'use strict'; + +const path = require('path'); +const defaultSettings = require('./src/settings'); function resolve(dir) { return path.join(__dirname, dir); } -const name = defaultSettings.title || "Vue Element Admin"; // page title - -// If your port is set to 80, -// use administrator privileges to execute the command line. -// For example, Mac: sudo npm run -// You can change the port by the following method: -// port = 9527 npm run dev OR npm run dev --port = 9527 -const port = process.env.port || process.env.npm_config_port || 9529; // dev port - -// get npm config argv -const configArgv = JSON.parse(process.env.npm_config_argv); -const original = configArgv.original.slice(1); -const stage = original[1] ? original[1].replace(/-/g, "") : ""; - +// devServer const devServer = { - port: port, - open: false, + port: 3000, + open: true, overlay: { warnings: false, errors: true } }; -const proxy = { - // detail: https://cli.vuejs.org/config/#devserver-proxy - [process.env.VUE_APP_BASE_API]: { - // target: `http://127.0.0.1:${port}`, - target: "http://47.110.127.118:8001", - changeOrigin: true, - pathRewrite: { - ["^" + process.env.VUE_APP_BASE_API]: "" - } - } -}; -const mockServer = require("./mock/mock-server.js"); -if (stage === "mock") { - devServer.before = mockServer; + +if (process.env.NODE_ENV === 'mock') { + devServer.before = require('./mock/mock-server.js'); } else { - devServer.proxy = proxy; + devServer.proxy = { + // detail: https://cli.vuejs.org/config/#devserver-proxy + [process.env.VUE_APP_BASE_API]: { + target: 'http://192.168.2.10/projectplan', + changeOrigin: true, + pathRewrite: { + ['^' + process.env.VUE_APP_BASE_API]: '' + } + } + }; } -// All configuration item explanations can be find in https://cli.vuejs.org/config/ module.exports = { - /** - * You will need to set publicPath if you plan to deploy your site under a sub path, - * for example GitHub Pages. If you plan to deploy your site to https://foo.github.io/bar/, - * then publicPath should be set to "/bar/". - * In most cases please use '/' !!! - * Detail: https://cli.vuejs.org/config/#publicpath - */ - publicPath: "./", - outputDir: "dist", - assetsDir: "static", - lintOnSave: process.env.NODE_ENV === "development", + publicPath: './', + outputDir: 'dist', + assetsDir: 'static', productionSourceMap: false, devServer, configureWebpack: { // provide the app's title in webpack's name field, so that // it can be accessed in index.html to inject the correct title. - name: name, + name: defaultSettings.applicationName, resolve: { alias: { - "@": resolve("src") + '@': resolve('src') + } + }, + performance: { + hints: false, // close performance warning + assetFilter: function(assetFilename) { + // file filter + return assetFilename.endsWith('.css') || assetFilename.endsWith('.js'); } } }, chainWebpack(config) { - // copy config file to dist - config.plugin("copy").tap(args => { - let configName = - process.env.ENV && - process.env.ENV !== "development" && - process.env.ENV !== "production" - ? process.env.ENV - : "default"; - args[0].push({ - from: path.resolve( - __dirname, - `./src/assets/configs/${configName}.json` - ), - to: path.resolve(__dirname, "./dist/config.json") - }); - return args; - }); - config.plugins.delete("preload"); // TODO: need test - config.plugins.delete("prefetch"); // TODO: need test + // when use preload, it will cause runtime not found + config.plugins.delete('preload'); + // when there are many pages, it will cause too many meaningless requests + config.plugins.delete('prefetch'); // set svg-sprite-loader config.module - .rule("svg") - .exclude.add(resolve("src/icons")) + .rule('svg') + .exclude.add(resolve('src/icons')) .end(); config.module - .rule("icons") + .rule('icons') .test(/\.svg$/) - .include.add(resolve("src/icons")) + .include.add(resolve('src/icons')) .end() - .use("svg-sprite-loader") - .loader("svg-sprite-loader") + .use('svg-sprite-loader') + .loader('svg-sprite-loader') .options({ - symbolId: "icon-[name]" - }) - .end(); - - // set preserveWhitespace - config.module - .rule("vue") - .use("vue-loader") - .loader("vue-loader") - .tap(options => { - options.compilerOptions.preserveWhitespace = true; - return options; + symbolId: 'icon-[name]' }) .end(); config // https://webpack.js.org/configuration/devtool/#development - .when(process.env.NODE_ENV === "development", config => - config.devtool("cheap-source-map") + .when(process.env.NODE_ENV === 'development', config => + config.devtool('cheap-source-map') ); - config.when(process.env.NODE_ENV !== "development", config => { + config.when(process.env.NODE_ENV !== 'development', config => { config - .plugin("ScriptExtHtmlWebpackPlugin") - .after("html") - .use("script-ext-html-webpack-plugin", [ + .plugin('ScriptExtHtmlWebpackPlugin') + .after('html') + .use('script-ext-html-webpack-plugin', [ { // `runtime` must same as runtimeChunk name. default is `runtime` inline: /runtime\..*\.js$/ @@ -138,29 +103,30 @@ module.exports = { ]) .end(); config.optimization.splitChunks({ - chunks: "all", + chunks: 'all', + maxAsyncRequests: 5, + maxInitialRequests: 5, cacheGroups: { + settings: { + name: 'chunk-settings', + minSize: 1, + test: /[\\/]src[\\/]settings[\\/]/, + priority: 30 + }, libs: { - name: "chunk-libs", + name: 'chunk-libs', test: /[\\/]node_modules[\\/]/, priority: 10, - chunks: "initial" // only package third parties that are initially dependent + chunks: 'initial' // only package third parties that are initially dependent }, elementUI: { - name: "chunk-elementUI", // split elementUI into a single package + name: 'chunk-libs-elememt', // split elementUI into a single package priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app - test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm - }, - commons: { - name: "chunk-commons", - test: resolve("src/components"), // can customize your rules - minChunks: 3, // minimum common number - priority: 5, - reuseExistingChunk: true + test: /[\\/]node_modules[\\/]_?element-plus(.*)/ // in order to adapt to cnpm } } }); - config.optimization.runtimeChunk("single"); + config.optimization.runtimeChunk('single'); }); } }; diff --git "a/WebSite/\347\224\263\346\212\245\344\271\246\346\216\245\345\217\243\350\256\276\350\256\241.md" "b/WebSite/\347\224\263\346\212\245\344\271\246\346\216\245\345\217\243\350\256\276\350\256\241.md" new file mode 100644 index 0000000000000000000000000000000000000000..542993a3cb23de2671ce20672c44eaf35a2767c1 --- /dev/null +++ "b/WebSite/\347\224\263\346\212\245\344\271\246\346\216\245\345\217\243\350\256\276\350\256\241.md" @@ -0,0 +1,624 @@ + + + + +[TOC] + + + +# 鐢虫姤涔︾鐞� + +## 鏂板鎴栦慨鏀� 椤圭洰缁忚垂 鐢虫姤涔� + +| 绫� | 鍊� | +| ------ | -------------------------------- | +| URL | /projectPlan/saveProjectInfoPlan | +| Method | POST | + +### 璇锋眰鍙傛暟 + +### 璇锋眰浣� + +```json +{ + "id": 0, //鐢虫姤涔︿富閿甶d + "year": 2022, //骞翠唤 + "departmentCode": "8765986", //閮ㄩ棬缂栧彿 + "departmentName": "杩欐槸淇敼鐨勮姹傜ず渚�!~!!!!!!", //閮ㄩ棬鍚嶇О + "flowId": 0, //娴佺▼id + "flowType": "", //娴佺▼绫诲瀷 + "planType": "XIANGMUKU", //鐢虫姤涔︾被鍨� + "projectLeaderCode": "", //璐熻矗浜虹紪鍙� + "projectLeaderId": 0, //璐熻矗浜篿d + "projectLeaderName": "", //璐熻矗浜哄悕绉� + "projectLibraryId": 0, //鍏宠仈椤圭洰搴搃d + "projectName": "", //椤圭洰鍚嶇О + "projectType": "", //椤圭洰绫诲瀷 (鍚嶇О) + "quotaMoney2": 0, //鏍稿畾閲戦2 + "state": "", //瀹℃牳鐘舵€� + "summaryJson": "", //澶囨敞 JSON瀵硅薄 + "planSubjectList": [//缁忔祹绉戠洰闆嗗悎 + { + "extendFormId": 0, //鎵╁睍琛╥d + "helperCode": "123", //鍗忓姪浜哄伐鍙� + "helperName": "娴嬭瘯vA", //鍗忓姪浜哄悕绉� + "id": 0, //涓婚敭ID + "planBookId": "0", //鐢虫姤涔d + "number": 0, //鏁伴噺 + "otherJson": "", //鍏朵粬鍐呭json + "price": 0, //鍗曚环 + "subjectCode": "8848", //缁忔祹绉戠洰缂栧彿 + "subjectContent": "", //缁忔祹鏄庣粏 + "subjectName": "娴嬭瘯A213", //缁忔祹绉戠洰鍚嶇О + "subtotal": 0, //灏忚閲戦 + "subjectDetailList": [//缁忔祹绉戠洰鏄庣粏闆嗗悎 + { + "id": 0, //涓婚敭ID + "parentId": "0", //鐖剁骇ID 缁忔祹绉戠洰id + "otherJson": "51AA654", //鍏朵粬鍐呭 JSON + "subtotal": 1001 //灏忚閲戦 + } + ] + } + ], + "projectTargetCmd": {//椤圭洰缁╂晥瀹炰綋 + "id": 0, //涓婚敭id + "planBookId": 0, //鐢虫姤涔d + "summaryJson": "51654", //鎽樿json + "subOtherArrayJson": "杩擜鍥�" //鍏朵粬json + } +} +``` + +### 杩斿洖 +| 绫诲瀷 | 澶囨敞 | +| ---- | ---- | +| | | + +```json +{ + "code": "00000", + "description": "鎴愬姛", + "currentTime": "1623375525293", + "rid": "gCxTN5N0", + "pageIndex": 0, + "pageSize": 0, + "pageCount": 0, + "total": 1, + "data": [ + 1 + ] +} +``` + +---------- + +## 鏂板鎴栦慨鏀� 鏃ュ父缁忚垂 鐢虫姤涔� + +| 绫� | 鍊� | +| ------ | --------------------------------- | +| URL | /projectPlan/saveProjectDailyPlan | +| Method | POST | + +### 璇锋眰鍙傛暟 + +### 璇锋眰浣� + +```json +{ + "id": 0, //鐢虫姤涔︿富閿甶d + "year": 2022, //骞翠唤 + "departmentCode": "8765986", //閮ㄩ棬缂栧彿 + "departmentName": "杩欐槸淇敼鐨勮姹傜ず渚�!~!!!!!!", //閮ㄩ棬鍚嶇О + "flowId": 0, //娴佺▼id + "flowType": "", //娴佺▼绫诲瀷 + "note": "", //澶囨敞 + "planType": "XIANGMUKU", //鐢虫姤涔︾被鍨� + "projectLeaderCode": "", //璐熻矗浜虹紪鍙� + "projectLeaderId": 0, //璐熻矗浜篿d + "projectLeaderName": "", //璐熻矗浜哄悕绉� + "projectLibraryId": 0, //鍏宠仈椤圭洰搴搃d + "projectName": "", //椤圭洰鍚嶇О + "quotaMoney": 0, //鏍稿畾閲戦 + "quotaMoney2": 0, //鏍稿畾閲戦2 + "state": "", //瀹℃牳鐘舵€� + "planSubjectList": [//缁忔祹绉戠洰闆嗗悎 + { + "extendFormId": 0, //鎵╁睍琛╥d + "helperCode": "123", //鍗忓姪浜哄伐鍙� + "helperName": "娴嬭瘯vA", //鍗忓姪浜哄悕绉� + "id": 0, //涓婚敭ID + "planBookId": "0", //鐢虫姤涔d + "number": 0, //鏁伴噺 + "otherJson": "", //鍏朵粬鍐呭json + "price": 0, //鍗曚环 + "subjectCode": "8848", //缁忔祹绉戠洰缂栧彿 + "subjectContent": "", //缁忔祹鏄庣粏 + "subjectName": "娴嬭瘯A213", //缁忔祹绉戠洰鍚嶇О + "subtotal": 0, //灏忚閲戦 + "subjectDetailList": [//缁忔祹绉戠洰鏄庣粏闆嗗悎 + { + "id": 0, //涓婚敭ID + "planBookId": 0, //鐢虫姤涔d + "otherJson": "51AA654", //鍏朵粬鍐呭 JSON + "subtotal": 1001 //灏忚閲戦 + } + ] + } + ] +} +``` + +### 杩斿洖 + +| 绫诲瀷 | 澶囨敞 | +| ---- | ---- | +| | | + +```json +{ + "code": "00000", + "description": "鎴愬姛", + "currentTime": "1623376992742", + "rid": "sIVXX4wI", + "pageIndex": 0, + "pageSize": 0, + "pageCount": 0, + "total": 1, + "data": [ + 1 + ] +} +``` + +---------- + +## 鏂板鎴栦慨鏀� 浜哄憳缁忚垂 鐢虫姤涔� + +| 绫� | 鍊� | +| ------ | ---------------------------------- | +| URL | /projectPlan/saveProjectPersonPlan | +| Method | POST | + +### 璇锋眰鍙傛暟 + +### 璇锋眰浣� + +```json +{ + "id": 0, //鐢虫姤涔︿富閿甶d + "year": 2022, //骞翠唤 + "departmentCode": "8765986", //閮ㄩ棬缂栧彿 + "departmentName": "杩欐槸淇敼鐨勮姹傜ず渚�!~!!!!!!", //閮ㄩ棬鍚嶇О + "flowId": 0, //娴佺▼id + "flowType": "", //娴佺▼绫诲瀷 + "planType": "XIANGMUKU", //鐢虫姤涔︾被鍨� + "projectLeaderCode": "", //璐熻矗浜虹紪鍙� + "projectLeaderId": 0, //璐熻矗浜篿d + "projectLeaderName": "", //璐熻矗浜哄悕绉� + "projectLibraryId": 0, //鍏宠仈椤圭洰搴搃d + "projectName": "", //椤圭洰鍚嶇О + "quotaMoney": 0, //鏍稿畾閲戦 + "state": "", //瀹℃牳鐘舵€� + "secondQuotaMoney": 12, //浜屼笂鏍稿畾閲戦 + "projectDailyOncePlanId": 789415, //浜哄憳涓€涓婂叧鑱攊d + "personSubjectList": [//浜哄憳绉戠洰瀛愰泦瀵硅薄闆嗗悎 + { + "id": 1401781310567882754, //涓婚敭ID + "planBookId": "0", //鐢虫姤涔d + "note": "澶囨敞澶囨敞澶嘇AAA娉ㄤ汉鍛�", //澶囨敞 + "personSubjectCode": "444161", //浜哄憳绉戠洰缂栧彿 + "personSubjectName": "浜哄憳绉戠洰AAAA鍚嶇О12342", //浜哄憳绉戠洰鍚嶇О + "total": 0 //閲戦 + } + ] +} +``` + +### 杩斿洖 + +| 绫诲瀷 | 澶囨敞 | +| ---- | ---- | +| | | + +```json +{ + "code": "00000", + "description": "鎴愬姛", + "currentTime": "1623377346253", + "rid": "NIE0DauR", + "pageIndex": 0, + "pageSize": 0, + "pageCount": 0, + "total": 1, + "data": [ + 1 + ] +} +``` + +---------- + +## 鎵归噺鍒犻櫎鐢虫姤涔� + +| 绫� | 鍊� | +| ------ | ------------------------------------------------------------ | +| URL | /projectPlan/removeProjectInfoPlan 鎵归噺鍒犻櫎椤圭洰缁忚垂鐢虫姤涔�<br />/projectPlan/removeProjectDailyPlan 鎵归噺鍒犻櫎鏃ュ父缁忚垂鐢虫姤涔�<br />/projectPlan/removeProjectPersonPlan 鎵归噺鍒犻櫎浜哄憳缁忚垂鐢虫姤涔� | +| Method | POST | + +### 璇锋眰鍙傛暟 + +| 鍙傛暟鍚� | 绫诲瀷 | 澶囨敞 | +| ------ | ---- | ------------ | +| id | long | 缁╂晥鎸囨爣涓婚敭 | + +### 璇锋眰浣� +```json +[1402503065334939649,6546515649654563] +``` + +### 杩斿洖 +| 绫诲瀷 | 澶囨敞 | +| ---- | ---- | +| | | + +```json +{ + "code": "00000", + "description": "鎴愬姛", + "currentTime": "1623377764288", + "rid": "ll32CacO", + "pageIndex": 0, + "pageSize": 0, + "pageCount": 0, + "total": 1, + "data": [ + 1 + ] +} +``` + +---------- + +## 鎻愪氦鐢虫姤涔�----鏈€� + +| 绫� | 鍊� | +| ------ | ------------------------------ | +| URL | /projectPlan/submitProjectPlan | +| Method | POST | + +### 璇锋眰鍙傛暟 + +### 璇锋眰浣� + +```json +{ + "nodeIds": [], //鑺傜偣涓婚敭id + "remake": "" //澶囨敞 +} +``` + +### 杩斿洖 + +| 绫诲瀷 | 澶囨敞 | +| ---- | ---- | +| | | + +```json + +``` + +---------- + +## 閫氳繃id鏌ヨ椤圭洰鐢虫姤涔︽槑缁� + +| 绫� | 鍊� | +| ------ | ------------------------------------- | +| URL | /projectPlan/queryProjectInfoPlanById | +| Method | POST | + +### 璇锋眰鍙傛暟 + +| 绫诲瀷 | 澶囨敞 | +| ---- | ---- | +| long | 涓婚敭 | +| | | + +### 璇锋眰浣� +```json +{ + "id":"1" //涓婚敭ID +} +``` + +### 杩斿洖 +| 鍙傛暟鍚� | 绫诲瀷 | 澶囨敞 | +| ------ | ---- | ---- | +| | | | + +```json +{ + "code": "00000", + "description": "鎴愬姛", + "currentTime": "1623378221385", + "rid": "7azgVYFW", + "pageIndex": 0, + "pageSize": 0, + "pageCount": 0, + "total": 1, + "data": [ + { + "id": "0", + "year": 2022, + "projectName": "", + "departmentName": "杩欐槸淇敼鐨勮姹傜ず渚�!~!!!!!!", + "departmentCode": "8765986", + "projectLeaderId": "0", + "projectLeaderName": "", + "projectLeaderCode": "", + "flowId": "0", + "flowType": "", + "quotaMoney": 0, + "state": "", + "planType": "XIANGMUKU", + "projectLibraryId": "0", + "summaryJson": "", + "projectType": "", + "planBookSubjectOutList": [ + { + "id": "0", + "planBookId": "0", + "subjectName": "娴嬭瘯A213", + "subjectCode": "8848", + "subjectContent": "", + "price": 0, + "number": 0, + "subtotal": 0, + "otherJson": "", + "extendFormId": "0", + "helperCode": "123", + "helperName": "娴嬭瘯vA", + "subjectDetailList": [ + { + "id": "0", + "parentId": "0", + "subtotal": 1001, + "otherJson": "51AA654" + }, + { + "id": "1", + "parentId": "0", + "subtotal": 21, + "otherJson": "2111" + } + ] + }, + { + "id": "1", + "planBookId": "0", + "subjectName": "娴嬭瘯2asd", + "subjectCode": "64561", + "subjectDetailList": [ + { + "id": "2", + "parentId": "1", + "subtotal": 33, + "otherJson": "3333" + }, + { + "id": "3", + "parentId": "1", + "subtotal": 54, + "otherJson": "54444" + } + ] + } + ], + "projectTargetInfo": { + "id": "0", + "summaryJson": "51654", + "subOtherArrayJson": "杩擜鍥�", + "planBookId": "0" + } + } + ] + //鏆傛湭鍖呭惈娴佺▼鐩稿叧淇℃伅 +} +``` + +---------- + +## 閫氳繃id鏌ヨ鏃ュ父鐢虫姤涔︽槑缁� + +| 绫� | 鍊� | +| ------ | -------------------------------------- | +| URL | /projectPlan/queryProjectDailyPlanById | +| Method | POST | + +### 璇锋眰鍙傛暟 + +| 绫诲瀷 | 澶囨敞 | +| ---- | ---- | +| long | 涓婚敭 | +| | | + +### 璇锋眰浣� + +```json +{ + "id":"1" //涓婚敭ID +} +``` + +### 杩斿洖 + +| 鍙傛暟鍚� | 绫诲瀷 | 澶囨敞 | +| ------ | ---- | ---- | +| | | | + +```json +{ + "code": "00000", + "description": "鎴愬姛", + "currentTime": "1623378626132", + "rid": "T5VVO0vp", + "pageIndex": 0, + "pageSize": 0, + "pageCount": 0, + "total": 1, + "data": [ + { + "id": "0", + "year": 2022, + "projectName": "", + "departmentName": "杩欐槸淇敼鐨勮姹傜ず渚�!~!!!!!!", + "departmentCode": "8765986", + "projectLeaderId": "0", + "projectLeaderName": "", + "projectLeaderCode": "", + "flowId": "0", + "flowType": "", + "quotaMoney": 0, + "state": "", + "planType": "XIANGMUKU", + "projectLibraryId": "0", + "planBookSubjectOutList": [ + { + "id": "0", + "planBookId": "0", + "subjectName": "娴嬭瘯A213", + "subjectCode": "8848", + "subjectContent": "", + "price": 0, + "number": 0, + "subtotal": 0, + "otherJson": "", + "extendFormId": "0", + "helperCode": "123", + "helperName": "娴嬭瘯vA", + "subjectDetailList": [ + { + "id": "0", + "parentId": "0", + "subtotal": 1001, + "otherJson": "51AA654" + }, + { + "id": "1", + "parentId": "0", + "subtotal": 21, + "otherJson": "2111" + } + ] + }, + { + "id": "1", + "planBookId": "0", + "subjectName": "娴嬭瘯2asd", + "subjectCode": "64561", + "subjectDetailList": [ + { + "id": "2", + "parentId": "1", + "subtotal": 33, + "otherJson": "3333" + }, + { + "id": "3", + "parentId": "1", + "subtotal": 54, + "otherJson": "54444" + } + ] + } + ] + } + ] + //鏆傛湭鍖呭惈娴佺▼鐩稿叧淇℃伅 +} +``` + +---------- + +## 閫氳繃id鏌ヨ浜哄憳鐢虫姤涔︽槑缁� + +| 绫� | 鍊� | +| ------ | --------------------------------------- | +| URL | /projectPlan/queryProjectPersonPlanById | +| Method | POST | + +### 璇锋眰鍙傛暟 + +| 绫诲瀷 | 澶囨敞 | +| ---- | ---- | +| long | 涓婚敭 | +| | | + +### 璇锋眰浣� + +```json +{ + "id":"1" //涓婚敭ID +} +``` + +### 杩斿洖 + +| 鍙傛暟鍚� | 绫诲瀷 | 澶囨敞 | +| ------ | ---- | ---- | +| | | | + +```json +{ + "code": "00000", + "description": "鎴愬姛", + "currentTime": "1623378904123", + "rid": "JVOSS71V", + "pageIndex": 0, + "pageSize": 0, + "pageCount": 0, + "total": 1, + "data": [ + { + "id": "0", + "year": 2022, + "projectName": "", + "departmentName": "杩欐槸淇敼鐨勮姹傜ず渚�!~!!!!!!", + "departmentCode": "8765986", + "projectLeaderId": "0", + "projectLeaderName": "", + "projectLeaderCode": "", + "flowId": "0", + "flowType": "", + "quotaMoney": 0, + "state": "", + "planType": "XIANGMUKU", + "projectLibraryId": "0", + "secondQuotaMoney": 12, + "projectDailyOncePlanId": "4546", + "planBookPersonSubjectOutList": [ + { + "id": "0", + "planBookId": "0", + "personSubjectName": "浜哄憖UN绉戠洰鍚嶇О", + "personSubjectCode": "464646988", + "total": 0, + "note": "濂藉伓灏辨硶灏擲V" + }, + { + "id": "1", + "planBookId": "0", + "personSubjectName": "浜哄憳绉戠洰鍚嶇О", + "personSubjectCode": "1265465", + "total": 0, + "note": "鐨勫櫌骞冲潎鍒嗙エ棰濆" + } + ] + } + ] + //鏆傛湭鍖呭惈娴佺▼鐩稿叧淇℃伅 +} +``` + +---------- + diff --git "a/WebSite/\351\241\271\347\233\256\347\261\273\345\236\213\346\216\245\345\217\243\350\256\276\350\256\241.md" "b/WebSite/\351\241\271\347\233\256\347\261\273\345\236\213\346\216\245\345\217\243\350\256\276\350\256\241.md" new file mode 100644 index 0000000000000000000000000000000000000000..bed6bd12ee28025c639347e7a10e7abc1536a0c9 --- /dev/null +++ "b/WebSite/\351\241\271\347\233\256\347\261\273\345\236\213\346\216\245\345\217\243\350\256\276\350\256\241.md" @@ -0,0 +1,371 @@ + + + + +[TOC] + + + +# 椤圭洰绫诲瀷绠$悊 + +## 鏂板鎴栦慨鏀归」鐩被鍨� + +| 绫� | 鍊� | +| ------ | ---------------------------- | +| URL | /budgetInfo/createBudgetInfo | +| Method | POST | + +### 璇锋眰鍙傛暟 + +| 鍙傛暟鍚� | 绫诲瀷 | 澶囨敞 | +| ---------------- | ------ | ---------------------- | +| id | Long | 涓婚敭 | +| year | int | 骞翠唤 | +| budgetName | String | 棰勭畻椤圭洰绫诲瀷鍚嶇О | +| budgetCode | String | 棰勭畻椤圭洰绫诲瀷缂栧彿 | +| parentBudgetId | Long | 涓婄骇椤圭洰绫诲瀷id | +| canUseDeptJjson | String | 鍙娇鐢ㄩ儴闂╦son瀵硅薄 | +| functionDeptJson | String | 褰掑彛閮ㄩ棬json瀵硅薄 | +| canUseFundJson | String | 鍙娇鐢ㄧ粡娴庣鐩甹son瀵硅薄 | +| beginDate | Date | 寮€濮嬫椂闂� | +| endDate | Date | 缁撴潫鏃堕棿 | +| chargerJson | String | 椤圭洰璐熻矗浜簀son瀵硅薄 | +| haveTarget | String | 鏄惁缁╂晥蹇呭~ | + +### 璇锋眰浣� +```json +{ + "beginDate": "2020-12-09 00:00:00", + "budgetCode": "20210001", + "budgetName": "椤圭洰绫诲瀷鍚嶇О1", + "canUseDeptJson": "", + "canUseFundJson": "", + "chargerJson": "", + "endDate": "2020-12-09 00:00:00", + "functionDeptJson": "", + "haveTarget": false, + "id": 1, + "parentBudgetId": 1, + "year": 2021 +} +``` + +### 杩斿洖 +| 绫诲瀷 | 澶囨敞 | +| ---- | ---- | +| | | + +```json +{ + "code": "00000", + "description": "鎴愬姛", + "currentTime": "1623221484459", + "rid": "fnddv0Mb", + "pageIndex": 0, + "pageSize": 0, + "pageCount": 0, + "total": 1, + "data": [ + 1 + ] +} +``` + +---------- + +## 鎵归噺鍒犻櫎椤圭洰绫诲瀷 + +| 绫� | 鍊� | +| ------ | ---------------------------- | +| URL | /budgetInfo/removeBudgetInfo | +| Method | POST | + +### 璇锋眰鍙傛暟 + +| 鍙傛暟鍚� | 绫诲瀷 | 澶囨敞 | +| ------ | ---- | ------------ | +| id | long | 缁╂晥鎸囨爣涓婚敭 | + +### 璇锋眰浣� +```json +[1402503065334939649,6546515649654563] +``` + +### 杩斿洖 +| 绫诲瀷 | 澶囨敞 | +| ---- | ---- | +| | | + +```json +{ + "code": "00000", + "description": "鎴愬姛", + "currentTime": "1623223066509", + "rid": "dXcTKFgb", + "pageIndex": 0, + "pageSize": 0, + "pageCount": 0, + "total": 1, + "data": [ + 1 + ] +} +``` + +---------- + +## 閫氳繃id鏌ヨ鍗曟潯 + +| 绫� | 鍊� | +| ------ | --------------------------- | +| URL | /budgetInfo/queryBudgetInfo | +| Method | POST | + +### 璇锋眰鍙傛暟 + +| 绫诲瀷 | 澶囨敞 | +| ---- | ---- | +| long | 涓婚敭 | +| | | + +### 璇锋眰浣� +```json +{ + "id":"1" +} +``` + +### 杩斿洖 +| 鍙傛暟鍚� | 绫诲瀷 | 澶囨敞 | +| ------ | ---- | ---- | +| | | | + +```json +{ + "code": "00000", + "description": "鎴愬姛", + "currentTime": "1623226242458", + "rid": "RXlTO0Fe", + "pageIndex": 0, + "pageSize": 0, + "pageCount": 0, + "total": 1, + "data": [ + { + "id": "1", + "year": 2021, + "budgetName": "椤圭洰绫诲瀷鍚嶇О1", + "budgetCode": "20210001", + "parentBudgetId": "1", + "canUseDeptJson": "", + "functionDeptJson": "", + "canUseFundJson": "", + "beginDate": "2020-12-09 00:00:00.000", + "endDate": "2020-12-09 00:00:00.000", + "chargerJson": "", + "haveTarget": false + } + ] +} +``` + +---------- + +## 鑾峰彇椤圭洰绫诲瀷鏍� + +| 绫� | 鍊� | +| ------ | ------------------------------- | +| URL | /budgetInfo/queryBudgetInfoTree | +| Method | POST | + +### 璇锋眰鍙傛暟 + +| 鍙傛暟鍚� | 绫诲瀷 | 澶囨敞 | +| ------ | ---- | ---- | +| | | | + +### 璇锋眰浣� + +```json +{ + "year": 2021 +} +``` + +### 杩斿洖 + +| 鍙傛暟鍚� | 绫诲瀷 | 澶囨敞 | +| ------ | ---- | ---- | +| | | | + +```json +{ + "code": "00000", + "description": "鎴愬姛", + "currentTime": "1623226373126", + "rid": "i0apaH6j", + "pageIndex": 0, + "pageSize": 0, + "pageCount": 0, + "total": 1, + "data": [ + { + "id": "1", + "year": 2021, + "budgetName": "椤圭洰绫诲瀷鍚嶇О1", + "budgetCode": "20210001", + "canUseDeptJson": "", + "functionDeptJson": "", + "canUseFundJson": "", + "beginDate": "2020-12-09 00:00:00.000", + "endDate": "2020-12-09 00:00:00.000", + "chargerJson": "", + "haveTarget": false, + "children": [ + { + "id": "1396757227836952577", + "year": 2021, + "budgetName": "椤圭洰绫诲瀷鍚嶇О22", + "budgetCode": "202100002", + "parentBudgetId": "1", + "canUseDeptJson": "[{\"name\":\"姹皬甯� 鍓牎闀縗",\"code\":\"08\"},{\"name\":\"鑻熺嚂妤� 鎬讳細璁″笀\",\"code\":\"09\"}]", + "functionDeptJson": "", + "canUseFundJson": "", + "beginDate": "2021-01-20 23:59:59.000", + "endDate": "2021-01-20 23:59:59.000", + "chargerJson": "", + "haveTarget": false, + "children": [] + }, + { + "id": "1396757344858034178", + "year": 2021, + "budgetName": "椤圭洰绫诲瀷鍚嶇О3", + "budgetCode": "20210003", + "parentBudgetId": "1", + "canUseDeptJson": "[{\"name\":\"鎴愭棪绾� 涔﹁\",\"code\":\"01\"},{\"name\":\"鍒樻槍鑳� 鏍¢暱\",\"code\":\"02\"}]", + "functionDeptJson": "", + "canUseFundJson": "", + "beginDate": "2021-01-20 23:59:59.000", + "endDate": "2021-01-20 23:59:59.000", + "chargerJson": "", + "haveTarget": false, + "children": [] + } + ] + } + ] +} +``` + +---------- + +## 鑾峰彇椤圭洰绫诲瀷鏍戞煇鑺傜偣鐨勫瓙绾� 鍒嗛〉 + +| 绫� | 鍊� | +| ------ | ------------------------------------ | +| URL | /budgetInfo/queryBudgetInfoPageByPId | +| Method | POST | + +### 璇锋眰鍙傛暟 + +| 鍙傛暟鍚� | 绫诲瀷 | 澶囨敞 | +| ------------ | ---- | ------ | +| year | int | 骞翠唤 | +| fundParentId | Long | 鐖剁骇ID | + +### 璇锋眰浣� + +```json +{ + "pageIndex": 1, + "pageSize": 10, + "parentBudgetId": 1, + "year": 2021 +} +``` + +### 杩斿洖 + +| 鍙傛暟鍚� | 绫诲瀷 | 澶囨敞 | +| ------ | ---- | ---- | +| | | | + +```json +{ + "code": "00000", + "description": "鎴愬姛", + "currentTime": "1623226491942", + "rid": "zjpeDwAC", + "pageIndex": 1, + "pageSize": 10, + "pageCount": 1, + "total": 2, + "data": [ + { + "id": "1396757227836952577", + "year": 2021, + "budgetName": "椤圭洰绫诲瀷鍚嶇О22", + "budgetCode": "202100002", + "parentBudgetId": "1", + "canUseDeptJson": "[{\"name\":\"鎴愭棪绾� 涔﹁\",\"code\":\"01\"},{\"name\":\"鍒樻槍鑳� 鏍¢暱\",\"code\":\"02\"},{\"name\":\"娈� 鍕� 鍓功璁癨",\"code\":\"03\"},{\"name\":\"榫氭€濇€� 鍓牎闀縗",\"code\":\"04\"},{\"name\":\"娆ч槼鍗� 鍓功璁癨",\"code\":\"05\"}]", + "functionDeptJson": "", + "canUseFundJson": "", + "beginDate": "2021-01-20 23:59:59.000", + "endDate": "2021-01-20 23:59:59.000", + "chargerJson": "", + "haveTarget": false + }, + { + "id": "1396757344858034178", + "year": 2021, + "budgetName": "椤圭洰绫诲瀷鍚嶇О3", + "budgetCode": "20210003", + "parentBudgetId": "1", + "canUseDeptJson": "[{\"name\":\"鍚存槑绾� 鍓牎闀縗",\"code\":\"06\"},{\"name\":\"鑱� 娓� 鍓牎闀縗",\"code\":\"07\"},{\"name\":\"姹皬甯� 鍓牎闀縗",\"code\":\"08\"},{\"name\":\"鑻熺嚂妤� 鎬讳細璁″笀\",\"code\":\"09\"}]", + "functionDeptJson": "", + "canUseFundJson": "", + "beginDate": "2021-01-20 23:59:59.000", + "endDate": "2021-01-20 23:59:59.000", + "chargerJson": "", + "haveTarget": false + } + ] +} +``` + +---------- + +## 鏌ヨ褰撳墠鐢ㄦ埛鎵€鍦ㄩ儴闂� 鍙敤椤圭洰绫诲瀷 鍒楄〃 + +| 绫� | 鍊� | +| ------ | ------------------------------------------------ | +| URL | /budgetInfo/queryBudgetInfoListByCurrentUserDept | +| Method | POST | + +### 璇锋眰鍙傛暟 + +| 鍙傛暟鍚� | 绫诲瀷 | 澶囨敞 | +| ------ | ---- | ---- | +| | | | + +### 璇锋眰浣� + +```json +{ + +} +``` + +### 杩斿洖 + +| 鍙傛暟鍚� | 绫诲瀷 | 澶囨敞 | +| ------ | ---- | ---- | +| | | | + +```json +{ + ???????????????? +} +``` +