提交 ace2c371 编写于 作者: changdi.hao's avatar changdi.hao

Merge branch 'release' into 'master'

Release

See merge request com.pica.cloud.education.frontend/pica.cloud.web-education-admin!408
...@@ -935,6 +935,19 @@ ...@@ -935,6 +935,19 @@
"babel-helper-regex": "^6.24.1", "babel-helper-regex": "^6.24.1",
"babel-runtime": "^6.22.0", "babel-runtime": "^6.22.0",
"regexpu-core": "^2.0.0" "regexpu-core": "^2.0.0"
},
"dependencies": {
"regexpu-core": {
"version": "2.0.0",
"resolved": "http://192.168.110.93:4873/regexpu-core/-/regexpu-core-2.0.0.tgz",
"integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=",
"dev": true,
"requires": {
"regenerate": "^1.2.1",
"regjsgen": "^0.2.0",
"regjsparser": "^0.1.4"
}
}
} }
}, },
"babel-plugin-transform-exponentiation-operator": { "babel-plugin-transform-exponentiation-operator": {
...@@ -1904,8 +1917,8 @@ ...@@ -1904,8 +1917,8 @@
"dev": true, "dev": true,
"requires": { "requires": {
"cross-spawn": "^6.0.5" "cross-spawn": "^6.0.5"
}
}, },
"dependencies": {
"cross-spawn": { "cross-spawn": {
"version": "6.0.5", "version": "6.0.5",
"resolved": "http://192.168.110.93:4873/cross-spawn/-/cross-spawn-6.0.5.tgz", "resolved": "http://192.168.110.93:4873/cross-spawn/-/cross-spawn-6.0.5.tgz",
...@@ -1918,6 +1931,8 @@ ...@@ -1918,6 +1931,8 @@
"shebang-command": "^1.2.0", "shebang-command": "^1.2.0",
"which": "^1.2.9" "which": "^1.2.9"
} }
}
}
}, },
"cryptiles": { "cryptiles": {
"version": "2.0.5", "version": "2.0.5",
...@@ -1973,21 +1988,8 @@ ...@@ -1973,21 +1988,8 @@
"postcss-modules-scope": "^1.0.0", "postcss-modules-scope": "^1.0.0",
"postcss-modules-values": "^1.1.0", "postcss-modules-values": "^1.1.0",
"source-list-map": "^0.1.4" "source-list-map": "^0.1.4"
}
},
"css-select": {
"version": "4.1.3",
"resolved": "http://192.168.110.93:4873/css-select/-/css-select-4.1.3.tgz",
"integrity": "sha1-pwRA9wMX8maRGK10/xBeZYSccGc=",
"dev": true,
"requires": {
"boolbase": "^1.0.0",
"css-what": "^5.0.0",
"domhandler": "^4.2.0",
"domutils": "^2.6.0",
"nth-check": "^2.0.0"
}
}, },
"dependencies": {
"css-selector-tokenizer": { "css-selector-tokenizer": {
"version": "0.6.0", "version": "0.6.0",
"resolved": "http://192.168.110.93:4873/css-selector-tokenizer/-/css-selector-tokenizer-0.6.0.tgz", "resolved": "http://192.168.110.93:4873/css-selector-tokenizer/-/css-selector-tokenizer-0.6.0.tgz",
...@@ -1997,8 +1999,8 @@ ...@@ -1997,8 +1999,8 @@
"cssesc": "^0.1.0", "cssesc": "^0.1.0",
"fastparse": "^1.1.1", "fastparse": "^1.1.1",
"regexpu-core": "^1.0.0" "regexpu-core": "^1.0.0"
}
}, },
"dependencies": {
"regexpu-core": { "regexpu-core": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "http://192.168.110.93:4873/regexpu-core/-/regexpu-core-1.0.0.tgz", "resolved": "http://192.168.110.93:4873/regexpu-core/-/regexpu-core-1.0.0.tgz",
...@@ -2012,6 +2014,19 @@ ...@@ -2012,6 +2014,19 @@
} }
} }
}, },
"css-select": {
"version": "4.1.3",
"resolved": "http://192.168.110.93:4873/css-select/-/css-select-4.1.3.tgz",
"integrity": "sha1-pwRA9wMX8maRGK10/xBeZYSccGc=",
"dev": true,
"requires": {
"boolbase": "^1.0.0",
"css-what": "^5.0.0",
"domhandler": "^4.2.0",
"domutils": "^2.6.0",
"nth-check": "^2.0.0"
}
},
"css-what": { "css-what": {
"version": "5.0.1", "version": "5.0.1",
"resolved": "http://192.168.110.93:4873/css-what/-/css-what-5.0.1.tgz", "resolved": "http://192.168.110.93:4873/css-what/-/css-what-5.0.1.tgz",
...@@ -2103,6 +2118,11 @@ ...@@ -2103,6 +2118,11 @@
"assert-plus": "^1.0.0" "assert-plus": "^1.0.0"
} }
}, },
"dayjs": {
"version": "1.10.7",
"resolved": "http://192.168.110.93:4873/dayjs/-/dayjs-1.10.7.tgz",
"integrity": "sha1-LPX5Gt0oEWdIRAhmoKHSbzps5Gg="
},
"de-indent": { "de-indent": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "http://192.168.110.93:4873/de-indent/-/de-indent-1.0.2.tgz", "resolved": "http://192.168.110.93:4873/de-indent/-/de-indent-1.0.2.tgz",
...@@ -2626,10 +2646,6 @@ ...@@ -2626,10 +2646,6 @@
"loader-utils": "~0.2.5" "loader-utils": "~0.2.5"
} }
}, },
"file-saver": {
"version": "git+ssh://git@github.com/eligrey/FileSaver.js.git#e865e37af9f9947ddcced76b549e27dc45c1cb2e",
"from": "file-saver@github:eligrey/FileSaver.js#1.3.8"
},
"file-uri-to-path": { "file-uri-to-path": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "http://192.168.110.93:4873/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", "resolved": "http://192.168.110.93:4873/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
...@@ -2772,25 +2788,29 @@ ...@@ -2772,25 +2788,29 @@
"dependencies": { "dependencies": {
"abbrev": { "abbrev": {
"version": "1.1.1", "version": "1.1.1",
"bundled": true, "resolved": false,
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"ansi-regex": { "ansi-regex": {
"version": "2.1.1", "version": "2.1.1",
"bundled": true, "resolved": false,
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"aproba": { "aproba": {
"version": "1.2.0", "version": "1.2.0",
"bundled": true, "resolved": false,
"integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"are-we-there-yet": { "are-we-there-yet": {
"version": "1.1.5", "version": "1.1.5",
"bundled": true, "resolved": false,
"integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
...@@ -2800,13 +2820,15 @@ ...@@ -2800,13 +2820,15 @@
}, },
"balanced-match": { "balanced-match": {
"version": "1.0.0", "version": "1.0.0",
"bundled": true, "resolved": false,
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"brace-expansion": { "brace-expansion": {
"version": "1.1.11", "version": "1.1.11",
"bundled": true, "resolved": false,
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
...@@ -2816,37 +2838,43 @@ ...@@ -2816,37 +2838,43 @@
}, },
"chownr": { "chownr": {
"version": "1.1.4", "version": "1.1.4",
"bundled": true, "resolved": false,
"integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"code-point-at": { "code-point-at": {
"version": "1.1.0", "version": "1.1.0",
"bundled": true, "resolved": false,
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"concat-map": { "concat-map": {
"version": "0.0.1", "version": "0.0.1",
"bundled": true, "resolved": false,
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"console-control-strings": { "console-control-strings": {
"version": "1.1.0", "version": "1.1.0",
"bundled": true, "resolved": false,
"integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"core-util-is": { "core-util-is": {
"version": "1.0.2", "version": "1.0.2",
"bundled": true, "resolved": false,
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"debug": { "debug": {
"version": "3.2.6", "version": "3.2.6",
"bundled": true, "resolved": false,
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
...@@ -2855,25 +2883,29 @@ ...@@ -2855,25 +2883,29 @@
}, },
"deep-extend": { "deep-extend": {
"version": "0.6.0", "version": "0.6.0",
"bundled": true, "resolved": false,
"integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"delegates": { "delegates": {
"version": "1.0.0", "version": "1.0.0",
"bundled": true, "resolved": false,
"integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"detect-libc": { "detect-libc": {
"version": "1.0.3", "version": "1.0.3",
"bundled": true, "resolved": false,
"integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"fs-minipass": { "fs-minipass": {
"version": "1.2.7", "version": "1.2.7",
"bundled": true, "resolved": false,
"integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==",
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
...@@ -2882,13 +2914,15 @@ ...@@ -2882,13 +2914,15 @@
}, },
"fs.realpath": { "fs.realpath": {
"version": "1.0.0", "version": "1.0.0",
"bundled": true, "resolved": false,
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"gauge": { "gauge": {
"version": "2.7.4", "version": "2.7.4",
"bundled": true, "resolved": false,
"integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
...@@ -2904,7 +2938,8 @@ ...@@ -2904,7 +2938,8 @@
}, },
"glob": { "glob": {
"version": "7.1.6", "version": "7.1.6",
"bundled": true, "resolved": false,
"integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
...@@ -2918,13 +2953,15 @@ ...@@ -2918,13 +2953,15 @@
}, },
"has-unicode": { "has-unicode": {
"version": "2.0.1", "version": "2.0.1",
"bundled": true, "resolved": false,
"integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"iconv-lite": { "iconv-lite": {
"version": "0.4.24", "version": "0.4.24",
"bundled": true, "resolved": false,
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
...@@ -2933,7 +2970,8 @@ ...@@ -2933,7 +2970,8 @@
}, },
"ignore-walk": { "ignore-walk": {
"version": "3.0.3", "version": "3.0.3",
"bundled": true, "resolved": false,
"integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==",
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
...@@ -2942,7 +2980,8 @@ ...@@ -2942,7 +2980,8 @@
}, },
"inflight": { "inflight": {
"version": "1.0.6", "version": "1.0.6",
"bundled": true, "resolved": false,
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
...@@ -2952,19 +2991,22 @@ ...@@ -2952,19 +2991,22 @@
}, },
"inherits": { "inherits": {
"version": "2.0.4", "version": "2.0.4",
"bundled": true, "resolved": false,
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"ini": { "ini": {
"version": "1.3.5", "version": "1.3.5",
"bundled": true, "resolved": false,
"integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"is-fullwidth-code-point": { "is-fullwidth-code-point": {
"version": "1.0.0", "version": "1.0.0",
"bundled": true, "resolved": false,
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
...@@ -2973,13 +3015,15 @@ ...@@ -2973,13 +3015,15 @@
}, },
"isarray": { "isarray": {
"version": "1.0.0", "version": "1.0.0",
"bundled": true, "resolved": false,
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"minimatch": { "minimatch": {
"version": "3.0.4", "version": "3.0.4",
"bundled": true, "resolved": false,
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
...@@ -2988,13 +3032,15 @@ ...@@ -2988,13 +3032,15 @@
}, },
"minimist": { "minimist": {
"version": "1.2.5", "version": "1.2.5",
"bundled": true, "resolved": false,
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"minipass": { "minipass": {
"version": "2.9.0", "version": "2.9.0",
"bundled": true, "resolved": false,
"integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
...@@ -3004,7 +3050,8 @@ ...@@ -3004,7 +3050,8 @@
}, },
"minizlib": { "minizlib": {
"version": "1.3.3", "version": "1.3.3",
"bundled": true, "resolved": false,
"integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==",
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
...@@ -3013,7 +3060,8 @@ ...@@ -3013,7 +3060,8 @@
}, },
"mkdirp": { "mkdirp": {
"version": "0.5.3", "version": "0.5.3",
"bundled": true, "resolved": false,
"integrity": "sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg==",
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
...@@ -3022,13 +3070,15 @@ ...@@ -3022,13 +3070,15 @@
}, },
"ms": { "ms": {
"version": "2.1.2", "version": "2.1.2",
"bundled": true, "resolved": false,
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"needle": { "needle": {
"version": "2.3.3", "version": "2.3.3",
"bundled": true, "resolved": false,
"integrity": "sha512-EkY0GeSq87rWp1hoq/sH/wnTWgFVhYlnIkbJ0YJFfRgEFlz2RraCjBpFQ+vrEgEdp0ThfyHADmkChEhcb7PKyw==",
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
...@@ -3039,7 +3089,8 @@ ...@@ -3039,7 +3089,8 @@
}, },
"node-pre-gyp": { "node-pre-gyp": {
"version": "0.14.0", "version": "0.14.0",
"bundled": true, "resolved": false,
"integrity": "sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA==",
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
...@@ -3057,7 +3108,8 @@ ...@@ -3057,7 +3108,8 @@
}, },
"nopt": { "nopt": {
"version": "4.0.3", "version": "4.0.3",
"bundled": true, "resolved": false,
"integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==",
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
...@@ -3067,7 +3119,8 @@ ...@@ -3067,7 +3119,8 @@
}, },
"npm-bundled": { "npm-bundled": {
"version": "1.1.1", "version": "1.1.1",
"bundled": true, "resolved": false,
"integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==",
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
...@@ -3076,13 +3129,15 @@ ...@@ -3076,13 +3129,15 @@
}, },
"npm-normalize-package-bin": { "npm-normalize-package-bin": {
"version": "1.0.1", "version": "1.0.1",
"bundled": true, "resolved": false,
"integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"npm-packlist": { "npm-packlist": {
"version": "1.4.8", "version": "1.4.8",
"bundled": true, "resolved": false,
"integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==",
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
...@@ -3093,7 +3148,8 @@ ...@@ -3093,7 +3148,8 @@
}, },
"npmlog": { "npmlog": {
"version": "4.1.2", "version": "4.1.2",
"bundled": true, "resolved": false,
"integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
...@@ -3105,19 +3161,22 @@ ...@@ -3105,19 +3161,22 @@
}, },
"number-is-nan": { "number-is-nan": {
"version": "1.0.1", "version": "1.0.1",
"bundled": true, "resolved": false,
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"object-assign": { "object-assign": {
"version": "4.1.1", "version": "4.1.1",
"bundled": true, "resolved": false,
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"once": { "once": {
"version": "1.4.0", "version": "1.4.0",
"bundled": true, "resolved": false,
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
...@@ -3126,19 +3185,22 @@ ...@@ -3126,19 +3185,22 @@
}, },
"os-homedir": { "os-homedir": {
"version": "1.0.2", "version": "1.0.2",
"bundled": true, "resolved": false,
"integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"os-tmpdir": { "os-tmpdir": {
"version": "1.0.2", "version": "1.0.2",
"bundled": true, "resolved": false,
"integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"osenv": { "osenv": {
"version": "0.1.5", "version": "0.1.5",
"bundled": true, "resolved": false,
"integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
...@@ -3148,19 +3210,22 @@ ...@@ -3148,19 +3210,22 @@
}, },
"path-is-absolute": { "path-is-absolute": {
"version": "1.0.1", "version": "1.0.1",
"bundled": true, "resolved": false,
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"process-nextick-args": { "process-nextick-args": {
"version": "2.0.1", "version": "2.0.1",
"bundled": true, "resolved": false,
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"rc": { "rc": {
"version": "1.2.8", "version": "1.2.8",
"bundled": true, "resolved": false,
"integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
...@@ -3172,7 +3237,8 @@ ...@@ -3172,7 +3237,8 @@
}, },
"readable-stream": { "readable-stream": {
"version": "2.3.7", "version": "2.3.7",
"bundled": true, "resolved": false,
"integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
...@@ -3187,7 +3253,8 @@ ...@@ -3187,7 +3253,8 @@
}, },
"rimraf": { "rimraf": {
"version": "2.7.1", "version": "2.7.1",
"bundled": true, "resolved": false,
"integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
...@@ -3196,43 +3263,50 @@ ...@@ -3196,43 +3263,50 @@
}, },
"safe-buffer": { "safe-buffer": {
"version": "5.1.2", "version": "5.1.2",
"bundled": true, "resolved": false,
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"safer-buffer": { "safer-buffer": {
"version": "2.1.2", "version": "2.1.2",
"bundled": true, "resolved": false,
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"sax": { "sax": {
"version": "1.2.4", "version": "1.2.4",
"bundled": true, "resolved": false,
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"semver": { "semver": {
"version": "5.7.1", "version": "5.7.1",
"bundled": true, "resolved": false,
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"set-blocking": { "set-blocking": {
"version": "2.0.0", "version": "2.0.0",
"bundled": true, "resolved": false,
"integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"signal-exit": { "signal-exit": {
"version": "3.0.2", "version": "3.0.2",
"bundled": true, "resolved": false,
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"string-width": { "string-width": {
"version": "1.0.2", "version": "1.0.2",
"bundled": true, "resolved": false,
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
...@@ -3243,7 +3317,8 @@ ...@@ -3243,7 +3317,8 @@
}, },
"string_decoder": { "string_decoder": {
"version": "1.1.1", "version": "1.1.1",
"bundled": true, "resolved": false,
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
...@@ -3252,7 +3327,8 @@ ...@@ -3252,7 +3327,8 @@
}, },
"strip-ansi": { "strip-ansi": {
"version": "3.0.1", "version": "3.0.1",
"bundled": true, "resolved": false,
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
...@@ -3261,13 +3337,15 @@ ...@@ -3261,13 +3337,15 @@
}, },
"strip-json-comments": { "strip-json-comments": {
"version": "2.0.1", "version": "2.0.1",
"bundled": true, "resolved": false,
"integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"tar": { "tar": {
"version": "4.4.13", "version": "4.4.13",
"bundled": true, "resolved": false,
"integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==",
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
...@@ -3282,13 +3360,15 @@ ...@@ -3282,13 +3360,15 @@
}, },
"util-deprecate": { "util-deprecate": {
"version": "1.0.2", "version": "1.0.2",
"bundled": true, "resolved": false,
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"wide-align": { "wide-align": {
"version": "1.1.3", "version": "1.1.3",
"bundled": true, "resolved": false,
"integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
...@@ -3297,13 +3377,15 @@ ...@@ -3297,13 +3377,15 @@
}, },
"wrappy": { "wrappy": {
"version": "1.0.2", "version": "1.0.2",
"bundled": true, "resolved": false,
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"yallist": { "yallist": {
"version": "3.1.1", "version": "3.1.1",
"bundled": true, "resolved": false,
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
"dev": true, "dev": true,
"optional": true "optional": true
} }
...@@ -4229,7 +4311,7 @@ ...@@ -4229,7 +4311,7 @@
"integrity": "sha512-J9X76xnncMw+wIqb15HeWfPMqPwYxSpPY8yWPJ7rAZN/ZDzFkjCSZObryCyUe8zbrVRNiuCnIeQteCzMn7GnWw==", "integrity": "sha512-J9X76xnncMw+wIqb15HeWfPMqPwYxSpPY8yWPJ7rAZN/ZDzFkjCSZObryCyUe8zbrVRNiuCnIeQteCzMn7GnWw==",
"requires": { "requires": {
"canvg": "1.5.3", "canvg": "1.5.3",
"file-saver": "file-saver@github:eligrey/FileSaver.js#1.3.8", "file-saver": "github:eligrey/FileSaver.js#1.3.8",
"html2canvas": "1.0.0-alpha.12", "html2canvas": "1.0.0-alpha.12",
"omggif": "1.0.7", "omggif": "1.0.7",
"promise-polyfill": "8.1.0", "promise-polyfill": "8.1.0",
...@@ -4249,6 +4331,10 @@ ...@@ -4249,6 +4331,10 @@
"base64-arraybuffer": "^0.1.5" "base64-arraybuffer": "^0.1.5"
} }
}, },
"file-saver": {
"version": "github:eligrey/FileSaver.js#e865e37af9f9947ddcced76b549e27dc45c1cb2e",
"from": "github:eligrey/FileSaver.js#1.3.8"
},
"html2canvas": { "html2canvas": {
"version": "1.0.0-alpha.12", "version": "1.0.0-alpha.12",
"resolved": "http://192.168.110.93:4873/html2canvas/-/html2canvas-1.0.0-alpha.12.tgz", "resolved": "http://192.168.110.93:4873/html2canvas/-/html2canvas-1.0.0-alpha.12.tgz",
...@@ -6931,17 +7017,6 @@ ...@@ -6931,17 +7017,6 @@
"safe-regex": "^1.1.0" "safe-regex": "^1.1.0"
} }
}, },
"regexpu-core": {
"version": "2.0.0",
"resolved": "http://192.168.110.93:4873/regexpu-core/-/regexpu-core-2.0.0.tgz",
"integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=",
"dev": true,
"requires": {
"regenerate": "^1.2.1",
"regjsgen": "^0.2.0",
"regjsparser": "^0.1.4"
}
},
"regjsgen": { "regjsgen": {
"version": "0.2.0", "version": "0.2.0",
"resolved": "http://192.168.110.93:4873/regjsgen/-/regjsgen-0.2.0.tgz", "resolved": "http://192.168.110.93:4873/regjsgen/-/regjsgen-0.2.0.tgz",
...@@ -7843,6 +7918,11 @@ ...@@ -7843,6 +7918,11 @@
"readable-stream": "^2.0.1" "readable-stream": "^2.0.1"
} }
}, },
"storejs": {
"version": "2.0.1",
"resolved": "http://192.168.110.93:4873/storejs/-/storejs-2.0.1.tgz",
"integrity": "sha1-NCT0yI/5eeOWJBPOYOpD/WYKllc="
},
"stream-browserify": { "stream-browserify": {
"version": "2.0.2", "version": "2.0.2",
"resolved": "http://192.168.110.93:4873/stream-browserify/-/stream-browserify-2.0.2.tgz", "resolved": "http://192.168.110.93:4873/stream-browserify/-/stream-browserify-2.0.2.tgz",
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
"@babel/polyfill": "^7.2.5", "@babel/polyfill": "^7.2.5",
"axios": "0.16.2", "axios": "0.16.2",
"better-scroll": "^0.1.15", "better-scroll": "^0.1.15",
"dayjs": "^1.10.7",
"echarts": "^4.2.0-rc.2", "echarts": "^4.2.0-rc.2",
"element-ui": "^2.11.1", "element-ui": "^2.11.1",
"fastclick": "^1.0.6", "fastclick": "^1.0.6",
...@@ -26,7 +27,7 @@ ...@@ -26,7 +27,7 @@
"iscroll": "^5.2.0", "iscroll": "^5.2.0",
"js-cookie": "^2.2.0", "js-cookie": "^2.2.0",
"js-md5": "^0.7.3", "js-md5": "^0.7.3",
"jsencrypt": "^3.0.0-rc.1", "jsencrypt": "^3.2.1",
"jspdf": "^1.5.3", "jspdf": "^1.5.3",
"node-sass": "^4.9.2", "node-sass": "^4.9.2",
"pdfh5": "^1.3.9", "pdfh5": "^1.3.9",
...@@ -34,6 +35,7 @@ ...@@ -34,6 +35,7 @@
"qrcodejs2": "^0.0.2", "qrcodejs2": "^0.0.2",
"showdown": "^1.6.4", "showdown": "^1.6.4",
"sortablejs": "^1.13.0", "sortablejs": "^1.13.0",
"storejs": "^2.0.1",
"video.js": "^7.8.2", "video.js": "^7.8.2",
"vue": "^2.1.0", "vue": "^2.1.0",
"vue-infinite-scroll": "^2.0.2", "vue-infinite-scroll": "^2.0.2",
......
...@@ -82,6 +82,8 @@ const plazaList = r => require.ensure([], () => r(require('../views/plaza/plaza- ...@@ -82,6 +82,8 @@ const plazaList = r => require.ensure([], () => r(require('../views/plaza/plaza-
const activityMember = r => require.ensure([], () => r(require('../views/activitymanagement/activity-member.vue')), 'activity-member') const activityMember = r => require.ensure([], () => r(require('../views/activitymanagement/activity-member.vue')), 'activity-member')
const videoManage = r => require.ensure([], () => r(require('../views/shortvideo/video-manage.vue')), 'video-manage') const videoManage = r => require.ensure([], () => r(require('../views/shortvideo/video-manage.vue')), 'video-manage')
const qualificationList = r => require.ensure([], () => r(require('../views/qualification/list.vue')), 'qualification')
const qualificationDetail = r => require.ensure([], () => r(require('../views/qualification/detail.vue')), 'qualification')
export default [{ export default [{
path: '/', path: '/',
...@@ -347,7 +349,14 @@ export default [{ ...@@ -347,7 +349,14 @@ export default [{
path: 'video-manage', path: 'video-manage',
component: videoManage, component: videoManage,
}, },
{
path: 'qualification-list',
component:qualificationList
},
{
path: 'qualification-detail',
component:qualificationDetail
},
// { // {
// path: '/followup', // path: '/followup',
// name: 'followUp', // name: 'followUp',
......
@import './common.scss'; @import './common.scss';
// color
.c0D9078{
color:#0D9078;
}
//定位 //定位
.relative{ .relative{
position: relative; position: relative;
...@@ -18,9 +22,19 @@ ...@@ -18,9 +22,19 @@
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;
} }
.flex1{
flex: 1;
}
.textLeft{ .textLeft{
float: left; float: left;
} }
.cp{
cursor: pointer;
}
.flex-c{
display: flex;
align-items: center;
}
.center{ .center{
text-align: center; text-align: center;
} }
......
...@@ -47,3 +47,14 @@ export const uploadPersonExcel = (data, projectId) => { ...@@ -47,3 +47,14 @@ export const uploadPersonExcel = (data, projectId) => {
}) })
// }) // })
} }
export const uploadShieldExcel = (data, projectId) => {
return fetch({
headers: {
token: localStorage.getItem('storageToken'),
},
url: getBaseUrl('aggregate/black/setPeopleBlackStatus/batch/' + projectId),
method: 'post',
data: data,
description: '上传excel文件',
})
}
\ No newline at end of file
...@@ -133,3 +133,14 @@ export const getTypeCodeList = () => { ...@@ -133,3 +133,14 @@ export const getTypeCodeList = () => {
}); });
}; };
export const getBusinessCategory = () => {
return fetch({
headers,
url: getBaseUrl(`store/category/businessCategory/0`),
method: "get",
description: "查询业务类型",
});
};
import fetch from '@/utils/fetch' import fetch from '@/utils/fetch'
import { getBaseUrl, getReportUrl, getWorkApi, getCmsUrl } from '@/utils/index' import { getBaseUrl, getReportUrl, getWorkApi, getCmsUrl } from '@/utils/index'
import { CryptoJS } from '@/plugins/aes' import { CryptoJS } from '@/plugins/aes'
import 'jsencrypt' import JSEncrypt from 'jsencrypt'
import { getPubKey } from '@/utils/account/accountApi'; import { getPubKey } from '@/utils/account/accountApi';
......
...@@ -51,10 +51,12 @@ let errorCode = new Map([ ...@@ -51,10 +51,12 @@ let errorCode = new Map([
[701,'在断点续上传过程中,后续上传接收地址不正确或ctx信息已过期。'] [701,'在断点续上传过程中,后续上传接收地址不正确或ctx信息已过期。']
]); ]);
let qiniuErrorCheck = function (code) { let qiniuErrorCheck = function (code,self) {
errorCode.forEach(function (value, key, map) { errorCode.forEach(function (value, key, map) {
if (code === key){ if (code === key){
self.$message.error(value);
console.error(key+':'+value) console.error(key+':'+value)
} }
}) })
} }
...@@ -243,7 +245,7 @@ export const qiniuUpload = (self, file, filePath, previewId, progressId) => { ...@@ -243,7 +245,7 @@ export const qiniuUpload = (self, file, filePath, previewId, progressId) => {
console.log("七牛上传失败,详细信息请参考:https://developer.qiniu.com/kodo/api/3928/error-responses"); console.log("七牛上传失败,详细信息请参考:https://developer.qiniu.com/kodo/api/3928/error-responses");
//输出简略错误信息 //输出简略错误信息
if (err.isRequestError){ if (err.isRequestError){
qiniuErrorCheck(err.code) qiniuErrorCheck(err.code,self)
}else { }else {
console.error(err); console.error(err);
} }
...@@ -428,7 +430,7 @@ export const doUpload = (self, file, filePath, previewId, progressId, fileType) ...@@ -428,7 +430,7 @@ export const doUpload = (self, file, filePath, previewId, progressId, fileType)
console.log("七牛上传失败,详细信息请参考:https://developer.qiniu.com/kodo/api/3928/error-responses"); console.log("七牛上传失败,详细信息请参考:https://developer.qiniu.com/kodo/api/3928/error-responses");
//输出简略错误信息 //输出简略错误信息
if (err.isRequestError){ if (err.isRequestError){
qiniuErrorCheck(err.code) qiniuErrorCheck(err.code,self)
}else { }else {
console.error(err); console.error(err);
} }
......
import fetch from '../fetch';
import { getBaseUrl, getSaasDomain, getSaasApiDomain } from '@/utils/index'
let headers = {
'Content-Type': 'application/json;charset=UTF-8',
token: localStorage.getItem('storageToken'),
};
export const getCertifyList = (params) => {
return fetch({
headers,
url: getBaseUrl(`store/certify/list`),
method: 'post',
data:params,
description: '审核记录列表(批发和供应商)',
})
};
export const getCertifyHistory = (params) => {
return fetch({
headers,
url: getBaseUrl(`certify/certifyHistory`),
method: 'get',
data:params,
description: '查看审核历史',
})
};
export const getCertifyDetail = () => {
return fetch({
headers,
url: getBaseUrl(`store/certify/certifyDetail`),
method: 'get',
description: '获取认证申请的审核详情',
})
};
export const getRefuseTemplate = (type) => {
return fetch({
headers,
url: getBaseUrl(`store/cert/constant/refuse/template?type=${type}`),
method: 'get',
description: '获取错误模板',
})
};
export const postCertifyAudit = (params) => {
return fetch({
headers,
url: getBaseUrl(`store/certify/audit`),
method: 'post',
data:params,
description: '审核',
})
};
...@@ -155,3 +155,41 @@ export const getStoreAdressRepot = (storeId) => { ...@@ -155,3 +155,41 @@ export const getStoreAdressRepot = (storeId) => {
description: "获取店铺退货地址信息", description: "获取店铺退货地址信息",
}); });
}; };
export const OCRStore = (params) => {
return fetch({
headers,
url: getBaseUrl(`store/ocr/license`),
method: 'post',
data: params,
description: 'ocr店铺',
})
};
export const idCardOcr = (params) => {
return fetch({
headers,
url: getBaseUrl(`store/ocr/idCard`),
method: 'post',
data: params,
description: '身份证ocr',
})
};
export const orgOptionList = () => {
return fetch({
headers,
url: getBaseUrl(`store/cert/constant/org/type`),
method: 'get',
description: '企业类型列表',
})
};
export const orgScopeOptionList = () => {
return fetch({
headers,
url: getBaseUrl(`store/cert/constant/biz/scope`),
method: 'get',
description: '经营范围',
})
};
...@@ -49,6 +49,7 @@ ...@@ -49,6 +49,7 @@
</el-col> </el-col>
<el-col :span="6" style="padding:0;text-align:right;padding-right:10px;"> <el-col :span="6" style="padding:0;text-align:right;padding-right:10px;">
<el-button type="primary" size="small" @click="searchList()">搜索</el-button> <el-button type="primary" size="small" @click="searchList()">搜索</el-button>
<el-button type="primary" size="small" @click="importOrder()" v-if="shieldType == 1">批量导入</el-button>
</el-col> </el-col>
</el-form> </el-form>
</el-row> </el-row>
...@@ -103,12 +104,60 @@ ...@@ -103,12 +104,60 @@
</span> </span>
</el-dialog> </el-dialog>
</div> </div>
<!-- 导入屏蔽人员名单 -->
<el-dialog
class="exportlogistics-dialog"
title="批量导入"
:visible="isShowImport"
@close="isShowImport = false"
width="600px"
>
<el-form label-width="120px">
<el-form-item label="导入文档:">
<el-upload
class="upload-excel"
action="#"
accept=".xlsx"
multiple
:limit="1"
:show-file-list="true"
:before-upload="uploadfile"
>
<div class="upload-container">
<el-input
class="file-name"
v-model="fileData.fileName"
size="mini"
readonly
></el-input
>
<el-button type="primary" size="mini">选择文件</el-button>
</div>
</el-upload>
</el-form-item>
<el-form-item label="模板:">
<a class="import-url" :href="logisticsUrl" style="color: #449284">
批量导入模板.xlxs</a>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button size="small" @click="cancelImport">取消</el-button>
<el-button
size="small"
:loading="isLoading"
type="primary"
@click="confirmImport"
>确认</el-button
>
</div>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import BreadCrumb from "../../components/breadcrumb.vue"; import BreadCrumb from "../../components/breadcrumb.vue";
import { mapGetters } from "vuex"; import { mapGetters } from "vuex";
import { openLoading, closeLoading } from "../../utils/utils"; import { openLoading, closeLoading } from "../../utils/utils";
import { uploadShieldExcel } from "@/utils/education/educationApi";
import * as commonUtil from "../../utils/utils"; import * as commonUtil from "../../utils/utils";
import * as operationData from "../../utils/operation"; import * as operationData from "../../utils/operation";
let vm = null; let vm = null;
...@@ -118,6 +167,14 @@ export default { ...@@ -118,6 +167,14 @@ export default {
}, },
data() { data() {
return { return {
isShowImport: false,
isLoading: false,
logisticsUrl: 'https://files.yunqueyi.com/template/portal_template.xlsx',
fileData: {
ext: '',
file: "",
fileName: "",
},
curmbFirst: "教培项目", curmbFirst: "教培项目",
curmbSecond: "屏蔽", curmbSecond: "屏蔽",
projectId: "", projectId: "",
...@@ -232,6 +289,69 @@ export default { ...@@ -232,6 +289,69 @@ export default {
// } // }
// }, // },
methods: { methods: {
// 批量导入
importOrder() {
this.isShowImport = true;
},
uploadfile(file) {
console.log(file, '导入file');
let _this = this;
let arr = file.name.split(".");
let ext = "." + arr[1];
let name = file.name;
let reader = new FileReader();
reader.onload = function (e) {
_this.fileData.fileName = name;
_this.fileData.file = e.target.result.substr(
e.target.result.indexOf("base64,") + 7
);
_this.fileData.ext = ext;
console.log("fileJson", _this.fileData);
};
reader.readAsDataURL(file);
},
// 确认导入
confirmImport() {
this.isLoading = true;
let parmas = {
base64: this.fileData,
type: ''
}
uploadShieldExcel(parmas, this.projectId).then(res => {
if (res.code == '000000') {
if (res.data == '') {
this.isLoading = false;
this.isShowImport = false;
this.$message({
message: '导入成功',
type: 'success'
});
} else {
let a = document.createElement('a');
let href = res.data;
a.setAttribute('href',href);
a.click();
this.isLoading = false;
this.$message.error('导入失败');
}
} else {
this.isLoading = false;
this.$message.error(res.message);
}
}).catch(error => {
this.isLoading = false;
this.$message.error(error.message);
})
},
// 取消导入
cancelImport() {
this.fileData = {
file: "",
fileName: "",
};
this.isShowImport = false;
},
handleChange(value) { handleChange(value) {
let areaId = "000"; let areaId = "000";
for (let i = 0; i < value.length; i++) { for (let i = 0; i < value.length; i++) {
......
...@@ -11,9 +11,9 @@ ...@@ -11,9 +11,9 @@
</el-col> </el-col>
</el-row> </el-row>
<el-form <el-form
ref="formData" ref="formData3"
:model="formData" :model="formData3"
:rules="rules" :rules="rules3"
label-width="150px" label-width="150px"
label-suffix=":" label-suffix=":"
class="basic-form" class="basic-form"
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
<el-col :span="13"> <el-col :span="13">
<el-input <el-input
size="small" size="small"
v-model="formData.goodsName" v-model="formData3.goodsName"
placeholder="请输入商品名称" placeholder="请输入商品名称"
show-word-limit show-word-limit
maxlength="60" maxlength="60"
...@@ -40,12 +40,12 @@ ...@@ -40,12 +40,12 @@
type="textarea" type="textarea"
rows="4" rows="4"
size="small" size="small"
v-model="formData.goodsDescription" v-model="formData3.goodsDescription"
placeholder="请输入商品介绍" placeholder="请输入商品介绍"
maxlength="1000" maxlength="40"
show-word-limit show-word-limit
></el-input> ></el-input>
<!-- <span class="word-num">{{(formData.goodsDescription).replace(/\s+/g,"").length}}/1000</span> --> <span class="word-tip">此文案可摘取药品说明书【功能主治】or【适应症】</span>
</el-col> </el-col>
</el-form-item> </el-form-item>
...@@ -56,6 +56,9 @@ ...@@ -56,6 +56,9 @@
:show-file-list="isShowFileList" :show-file-list="isShowFileList"
action="#" action="#"
:before-upload="beforeUploadPic" :before-upload="beforeUploadPic"
multiple
:on-exceed="imgExceed"
:limit="6"
> >
<div class="file-pics" v-if="fileGoodsList.length > 0" :key="index" v-for="(item,index) in fileGoodsList"> <div class="file-pics" v-if="fileGoodsList.length > 0" :key="index" v-for="(item,index) in fileGoodsList">
<img :src="item.url" @mouseover.stop="headIndex=index" class="bg-img"/> <img :src="item.url" @mouseover.stop="headIndex=index" class="bg-img"/>
...@@ -68,23 +71,67 @@ ...@@ -68,23 +71,67 @@
<i class="el-icon-delete"></i> <i class="el-icon-delete"></i>
</div> </div>
</div> </div>
<img class="bg-img" src="../../assets/image/small.png" v-if="fileGoodsList.length <10"/> <img class="bg-img" src="../../assets/image/small.png" v-if="fileGoodsList.length < 6"/>
<div class="limit-text"> <div class="limit-text" v-if="fileGoodsList.length < 6">
<!-- <p>限制大小: 200kb</p> --> <!-- <p>限制大小: 200kb</p> -->
<p>建议尺寸:750*420</p> <p>建议尺寸:750*750</p>
<p>支持jpeg, png格式</p> <p>支持jpeg, png格式</p>
</div> </div>
</el-upload> </el-upload>
<p class="upload-message" v-if="!isgoodsImages">请上传商品头图</p> <p class="upload-message" v-if="!isgoodsImages">请上传商品头图</p>
<!-- <p class="upload-message" v-if="uploadImgMessage1">请上传商品头图</p> --> <!-- <p class="upload-message" v-if="uploadImgMessage1">请上传商品头图</p> -->
</el-form-item> </el-form-item>
<el-form-item label="商品介绍视频" class="label-video">
<el-upload
accept=".mp4"
:on-remove="handleRemoveVideo"
:file-list="videoList"
:before-upload="beforeVideoUpload"
:show-file-list="false"
:disabled="videoList.length == 1"
:limit="1"
action="#"
class="bg-uploader"
>
<video id="introVideoLecture" :src="videoModel.videoFullPath" controls preload style="width: 100%;" v-if="videoList.length == 1">
视频
</video>
<img class="bg-img" src="../../assets/image/video.png" v-if="videoList.length <1"/>
<div class="limit-text" v-if="videoList.length <1">
<p>建议大小:20M以内</p>
<p>仅支持MP4格式</p>
<P>视频名称必须包含3个下划线:举例(YQ_01_02_03.mp4)</P>
</div>
</el-upload>
<el-progress :text-inside="true" :stroke-width="16" :percentage="uploadProgress" status="success" class="video-progress"
v-show="uploadProgress>0&&uploadProgress<100">
</el-progress>
<el-button class="dl-video" icon="el-icon-delete" circle @click="deleteVideo" v-if="videoList.length == 1"></el-button>
</el-form-item>
<el-form-item label="业务类型" prop="businessCategoryId">
<el-select
v-model="formData3.businessCategoryId"
placeholder="请选择业务类型"
size="small"
>
<el-option
v-for="item in businessCategoryList"
:key="item.id"
:label="item.categoryName"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="商品类型" prop="goodsType"> <el-form-item label="商品类型" prop="goodsType">
<el-select <el-select
v-model="formData.goodsType" v-model="formData3.goodsType"
placeholder="请选择商品类型" placeholder="请选择商品类型"
size="small" size="small"
:disabled="isEdit" :disabled="isEdit"
@change="getGoodsTypes(formData.goodsType,2)"> @change="getGoodsTypes(formData3.goodsType,2)">
<el-option <el-option
v-for="(item,index) in oneLever" v-for="(item,index) in oneLever"
:key="item.categoryName+'-'+index" :key="item.categoryName+'-'+index"
...@@ -93,8 +140,10 @@ ...@@ -93,8 +140,10 @@
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="是否支持售后" prop="expressLimitFlag" v-if="storeType < 3"> <el-form-item label="是否支持售后" prop="expressLimitFlag" v-if="storeType < 3">
<el-radio-group v-model="formData.expressLimitFlag" :disabled="!hasRepoFlag"> <el-radio-group v-model="formData3.expressLimitFlag" :disabled="!hasRepoFlag">
<el-radio :label="1"></el-radio> <el-radio :label="1"></el-radio>
<el-radio :label="0"></el-radio> <el-radio :label="0"></el-radio>
</el-radio-group> </el-radio-group>
...@@ -118,7 +167,7 @@ ...@@ -118,7 +167,7 @@
<el-form-item label="条形码" prop="barCode"> <el-form-item label="条形码" prop="barCode">
<el-col :span="18"> <el-col :span="18">
<el-input <el-input
:disabled="barAndGoodsFlag" :disabled="barAndGoodsFlag || idMedicEdit"
size="small" size="small"
v-model="formData1.barCode" v-model="formData1.barCode"
placeholder="请输入条形码" placeholder="请输入条形码"
...@@ -133,6 +182,7 @@ ...@@ -133,6 +182,7 @@
<el-input <el-input
size="small" size="small"
v-model="formData1.approvalNumber" v-model="formData1.approvalNumber"
:disabled="idMedicEdit"
placeholder="请输入批准文号" placeholder="请输入批准文号"
style="width:50%;" style="width:50%;"
></el-input> ></el-input>
...@@ -142,7 +192,7 @@ ...@@ -142,7 +192,7 @@
<el-form-item label="通用名称" prop="medicCommonName"> <el-form-item label="通用名称" prop="medicCommonName">
<el-col :span="13"> <el-col :span="13">
<el-input <el-input
:disabled="goodDisabled || barAndGoodsFlag" :disabled="goodDisabled || barAndGoodsFlag || idMedicEdit"
size="small" size="small"
v-model="formData1.medicCommonName" v-model="formData1.medicCommonName"
placeholder="请输入通用名称" placeholder="请输入通用名称"
...@@ -160,7 +210,7 @@ ...@@ -160,7 +210,7 @@
size="small" size="small"
v-model="formData1.medicGoodsName" v-model="formData1.medicGoodsName"
placeholder="请输入商品名称" placeholder="请输入商品名称"
:disabled="idMedicEdit"
maxlength="60" maxlength="60"
show-word-limit show-word-limit
></el-input> ></el-input>
...@@ -174,6 +224,7 @@ ...@@ -174,6 +224,7 @@
size="small" size="small"
v-model="formData1.size" v-model="formData1.size"
placeholder="请输入规格" placeholder="请输入规格"
:disabled="idMedicEdit"
style="width:70%;" style="width:70%;"
></el-input> ></el-input>
...@@ -183,8 +234,8 @@ ...@@ -183,8 +234,8 @@
<div class="inline"> <div class="inline">
<el-form-item label="是否是处方药" prop="otc1"> <el-form-item label="是否是处方药" prop="otc1">
<el-col :span="24"> <el-col :span="24">
<el-radio size="mini" v-model="formData1.otc1" label="1">处方药</el-radio> <el-radio size="mini" v-model="formData1.otc1" label="1" :disabled="idMedicEdit">处方药</el-radio>
<el-radio v-model="formData1.otc1" label="0">非处方药</el-radio> <el-radio v-model="formData1.otc1" label="0" :disabled="idMedicEdit">非处方药</el-radio>
</el-col> </el-col>
</el-form-item> </el-form-item>
<el-form-item label="剂型" prop="dosageId"> <el-form-item label="剂型" prop="dosageId">
...@@ -192,6 +243,7 @@ ...@@ -192,6 +243,7 @@
v-model="formData1.dosageId" v-model="formData1.dosageId"
placeholder="请选择药品剂型" placeholder="请选择药品剂型"
size="small" size="small"
:disabled="idMedicEdit"
clearable> clearable>
<el-option <el-option
v-for="(item,index) in doseAll" v-for="(item,index) in doseAll"
...@@ -209,6 +261,7 @@ ...@@ -209,6 +261,7 @@
v-model="formData1.usage" v-model="formData1.usage"
placeholder="请输入用法用量" placeholder="请输入用法用量"
style="width:70%;" style="width:70%;"
:disabled="idMedicEdit"
></el-input> ></el-input>
<span class="word-num">例如:每次一袋 每天1-2次</span> <span class="word-num">例如:每次一袋 每天1-2次</span>
...@@ -284,6 +337,7 @@ ...@@ -284,6 +337,7 @@
v-model="formData1.manufacturer" v-model="formData1.manufacturer"
placeholder="请输入生产厂家" placeholder="请输入生产厂家"
style="width:70%;" style="width:70%;"
:disabled="idMedicEdit"
></el-input> ></el-input>
<span class="word-num"></span> <span class="word-num"></span>
...@@ -295,6 +349,7 @@ ...@@ -295,6 +349,7 @@
size="small" size="small"
v-model="formData1.department" v-model="formData1.department"
placeholder="请输入适用科室" placeholder="请输入适用科室"
:disabled="idMedicEdit"
></el-input> ></el-input>
<!-- <el-select <!-- <el-select
...@@ -317,6 +372,7 @@ ...@@ -317,6 +372,7 @@
size="small" size="small"
v-model="formData1.treatDisease" v-model="formData1.treatDisease"
placeholder="请输入治疗疾病" placeholder="请输入治疗疾病"
:disabled="idMedicEdit"
></el-input> ></el-input>
...@@ -332,6 +388,7 @@ ...@@ -332,6 +388,7 @@
v-model="formData1.expiredTime" v-model="formData1.expiredTime"
placeholder="请输入有效期" placeholder="请输入有效期"
style="width:70%;" style="width:70%;"
:disabled="idMedicEdit"
></el-input> ></el-input>
<!-- <el-date-picker <!-- <el-date-picker
v-model="formData.expiredTime" v-model="formData.expiredTime"
...@@ -352,6 +409,7 @@ ...@@ -352,6 +409,7 @@
v-model="formData1.modelNo" v-model="formData1.modelNo"
placeholder="请输入型号" placeholder="请输入型号"
style="width:70%;" style="width:70%;"
:disabled="idMedicEdit"
></el-input> ></el-input>
<span class="word-num"></span> <span class="word-num"></span>
</el-col> </el-col>
...@@ -363,6 +421,7 @@ ...@@ -363,6 +421,7 @@
v-model="formData1.standardNo" v-model="formData1.standardNo"
placeholder="请输入执行标准号" placeholder="请输入执行标准号"
style="width:70%;" style="width:70%;"
:disabled="idMedicEdit"
></el-input> ></el-input>
<span class="word-num"></span> <span class="word-num"></span>
</el-col> </el-col>
...@@ -583,18 +642,6 @@ ...@@ -583,18 +642,6 @@
format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd HH:mm:ss"
></el-date-picker> ></el-date-picker>
</el-form-item> </el-form-item>
<!-- <el-form-item label="商品使用日期" prop="endTime">
<el-col :span="13">
<el-input
size="small"
v-model="formData2.endTime"
placeholder="请输入商品使用日期"
style="width:70%;"
></el-input>
<span class="word-num"></span>
</el-col>
</el-form-item> -->
<el-form-item label="检测说明" > <el-form-item label="检测说明" >
<el-upload <el-upload
:file-list="goodsCheckList" :file-list="goodsCheckList"
...@@ -662,48 +709,30 @@ ...@@ -662,48 +709,30 @@
<el-radio :label="1">零售</el-radio> <el-radio :label="1">零售</el-radio>
<el-radio :label="2" :disabled="commissionFlag == 1">批发</el-radio> <el-radio :label="2" :disabled="commissionFlag == 1">批发</el-radio>
</el-radio-group> </el-radio-group>
<!-- <el-select-->
<!-- v-model="formData.saleType"-->
<!-- placeholder="请选择销售方式"-->
<!-- size="small"-->
<!-- @change="getSaleType(formData.saleType,2)">-->
<!-- <el-option-->
<!-- v-for="item in saleTypeList"-->
<!-- :key="item.value"-->
<!-- :label="item.label"-->
<!-- :value="item.value"-->
<!-- ></el-option>-->
<!-- </el-select>-->
</el-form-item> </el-form-item>
</div> </div>
<div class="inline" v-if="formData.saleType == 1"> <div class="inline" v-if="formData.saleType == 1">
<el-form-item label="零售价" prop="optPrice"> <el-form-item label="零售价" prop="optPrice">
<el-col :span="20"> <el-col :span="20">
<!-- <el-input-->
<!-- @input="$forceUpdate();"-->
<!-- size="small"-->
<!-- v-model="formData.optPrice"-->
<!-- placeholder="请输入零售价"-->
<!-- ></el-input>-->
<el-input-number class="stock-com" @input="$forceUpdate();" v-model="formData.optPrice" size="small" :precision="2" :min="0.00" :max="99999.99"></el-input-number> <el-input-number class="stock-com" @input="$forceUpdate();" v-model="formData.optPrice" size="small" :precision="2" :min="0.00" :max="99999.99"></el-input-number>
<!-- <span class="word-num">{{(formData.name).replace(/\s+/g,"").length}}/60</span> -->
</el-col> </el-col>
</el-form-item> </el-form-item>
</div> </div>
<div class="inline" v-if="formData.saleType == 2"> <div class="inline" v-if="formData.saleType == 2">
<el-form-item label="批发价" prop="optPrice"> <el-form-item label="批发价" prop="optPrice">
<el-col :span="20"> <el-col :span="20">
<!-- <el-input-->
<!-- @input="$forceUpdate();"-->
<!-- size="small"-->
<!-- v-model="formData.optPrice"-->
<!-- placeholder="请输入批发价"></el-input>-->
<el-input-number class="stock-com" @input="$forceUpdate();" v-model="formData.optPrice" size="small" :precision="2" :min="0" :max="99999.99"></el-input-number> <el-input-number class="stock-com" @input="$forceUpdate();" v-model="formData.optPrice" size="small" :precision="2" :min="0" :max="99999.99"></el-input-number>
</el-col> </el-col>
</el-form-item> </el-form-item>
</div> </div>
<div class="inline" v-if="formData.saleType == 1">
<el-form-item label="绩效分值">
<el-col :span="20">
<el-input-number class="stock-com" @input="$forceUpdate();" v-model="formData.scorePerformance" size="small" :precision="2" :min="0.00" :max="999999.99"></el-input-number>
</el-col>
</el-form-item>
</div>
<div class="inline"> <div class="inline">
<el-form-item label="库存" prop="stock" class="required-label"> <el-form-item label="库存" prop="stock" class="required-label">
<el-col :span="20"> <el-col :span="20">
...@@ -713,14 +742,6 @@ ...@@ -713,14 +742,6 @@
<span class="sp sp-r" @click="changeStock(2)"><i class="el-icon-plus"></i></span> <span class="sp sp-r" @click="changeStock(2)"><i class="el-icon-plus"></i></span>
</div> </div>
<p class="error-message" v-if="!isgoodStock">库存不能为0</p> <p class="error-message" v-if="!isgoodStock">库存不能为0</p>
<!-- <el-input
size="small"
v-model="formData.name"
placeholder="请输入库存"
></el-input> -->
<!-- <el-input-number readonly size="small" v-model="formData.stock"></el-input-number> -->
<!-- <span class="word-num">{{(formData.name).replace(/\s+/g,"").length}}/60</span> -->
</el-col> </el-col>
</el-form-item> </el-form-item>
</div> </div>
...@@ -730,9 +751,6 @@ ...@@ -730,9 +751,6 @@
<el-col :span="20"> <el-col :span="20">
<div class="stock-com" style="width: 500px;display:flex"> <div class="stock-com" style="width: 500px;display:flex">
<el-input-number class="stock-com" @input="$forceUpdate();" v-model="formData.leastCount" size="small" :precision="0" :min="0" :max="9999"></el-input-number> <el-input-number class="stock-com" @input="$forceUpdate();" v-model="formData.leastCount" size="small" :precision="0" :min="0" :max="9999"></el-input-number>
<!-- <span class="sp sp-l" @click="minusCount(1)"><i class="el-icon-minus"></i></span>
<span class="sp sp-c">{{formData.leastCount}}</span>
<span class="sp sp-r" @click="plusCount(1)"><i class="el-icon-plus"></i></span> -->
<span class="word-num" style="margin-left: 10px;">最高9999件哦</span> <span class="word-num" style="margin-left: 10px;">最高9999件哦</span>
</div> </div>
<p class="error-message" v-if="formData.leastCount <= 0">最小起购件数不能为0</p> <p class="error-message" v-if="formData.leastCount <= 0">最小起购件数不能为0</p>
...@@ -754,18 +772,12 @@ ...@@ -754,18 +772,12 @@
<el-col :span="20" style="width: 300%;"> <el-col :span="20" style="width: 300%;">
<div class="stock-com" style="width: 500px;display:flex"> <div class="stock-com" style="width: 500px;display:flex">
<el-input-number class="stock-com" @input="$forceUpdate();" v-model="formData.mostCount" size="small" :precision="0" :min="-1" :max="9999"></el-input-number> <el-input-number class="stock-com" @input="$forceUpdate();" v-model="formData.mostCount" size="small" :precision="0" :min="-1" :max="9999"></el-input-number>
<!-- <span class="sp sp-l" @click="minusCount(2)"><i class="el-icon-minus"></i></span>
<span class="sp sp-c">{{formData.mostCount}}</span>
<span class="sp sp-r" @click="plusCount(2)"><i class="el-icon-plus"></i></span> -->
<span class="word-num" style="margin-left: 10px;">数值为-1时,代表单次购买上限已无限制(最高9999件哦)</span> <span class="word-num" style="margin-left: 10px;">数值为-1时,代表单次购买上限已无限制(最高9999件哦)</span>
</div> </div>
<p class="error-message" v-if="formData.mostCount === 0">单次购买上限不能为0</p> <p class="error-message" v-if="formData.mostCount === 0">单次购买上限不能为0</p>
<!-- <p class="error-message" v-if="formData.mostCount <= -1">单次购买上限已无限制</p>-->
</el-col> </el-col>
</el-form-item> </el-form-item>
</div> </div>
<div class="inline" v-if="formData.saleType == 1"> <div class="inline" v-if="formData.saleType == 1">
<el-form-item label="第三方商品编码"> <el-form-item label="第三方商品编码">
<el-col :span="20"> <el-col :span="20">
...@@ -791,16 +803,6 @@ ...@@ -791,16 +803,6 @@
</div> </div>
</div> </div>
<!-- </el-form>-->
<!-- <el-form-->
<!-- ref="formData"-->
<!-- :model="formData"-->
<!-- :rules="rules"-->
<!-- label-width="150px"-->
<!-- label-suffix=":"-->
<!-- class="basic-form"-->
<!-- >-->
<div class="basic-item-icon" v-if="formData.saleType == 1"> <div class="basic-item-icon" v-if="formData.saleType == 1">
<div class="part-tit">限购条件</div> <div class="part-tit">限购条件</div>
<div v-for="(item, index) in buyLimitDtoList" :key="index" > <div v-for="(item, index) in buyLimitDtoList" :key="index" >
...@@ -856,7 +858,6 @@ ...@@ -856,7 +858,6 @@
</div> </div>
<span slot="footer" class="dialog-footer" style="text-align: right;"> <span slot="footer" class="dialog-footer" style="text-align: right;">
<!-- <el-button @click="centerDialogVisible = false">取 消</el-button> -->
<el-button type="primary" @click="updateStock">完成</el-button> <el-button type="primary" @click="updateStock">完成</el-button>
</span> </span>
</el-dialog> </el-dialog>
...@@ -867,12 +868,13 @@ ...@@ -867,12 +868,13 @@
import BreadCrumb from "@/components/breadcrumb.vue"; import BreadCrumb from "@/components/breadcrumb.vue";
let vm = null; let vm = null;
import { openLoading, closeLoading } from "../../utils/utils"; import { openLoading, closeLoading } from "../../utils/utils";
import { doUpload, getFilePath } from "../../utils/qiniu-util"; import { isEmptyUtils } from "@/utils/index";
import { updateGoods ,updateStock,dosageAll,getDeparts,getGoodsList, getGoodDetails, updateGoodsV2, getHospitalInfoByStoreId, getCheckPackageIdList, getTypeCodeList } from '@/utils/goods'; import { doUpload, getFilePath, createFilePath } from "../../utils/qiniu-util";
import { updateGoods ,updateStock,dosageAll,getDeparts,getGoodsList, getGoodDetails, updateGoodsV2, getHospitalInfoByStoreId, getCheckPackageIdList, getTypeCodeList,getBusinessCategory } from '@/utils/goods';
import { getStoreAdressRepot } from "@/utils/shop"; import { getStoreAdressRepot } from "@/utils/shop";
import Cropper from '@/components/common/cropper.vue' import Cropper from '@/components/common/cropper.vue'
import { originRules1, originRules2, originRules } from './rules'; import { originRules1, originRules2, originRules, originRules3 } from './rules';
import { originForm1, originForm2, originForm } from './forms'; import { originForm1, originForm2, originForm, originForm3 } from './forms';
export default { export default {
components: { components: {
...@@ -964,6 +966,7 @@ ...@@ -964,6 +966,7 @@
formData: JSON.parse(JSON.stringify(originForm)), // 通用信息 formData: JSON.parse(JSON.stringify(originForm)), // 通用信息
formData1: JSON.parse(JSON.stringify(originForm1)), // 基本信息 formData1: JSON.parse(JSON.stringify(originForm1)), // 基本信息
formData2: JSON.parse(JSON.stringify(originForm2)), formData2: JSON.parse(JSON.stringify(originForm2)),
formData3: JSON.parse(JSON.stringify(originForm3)),
buyLimitDtoList:[], buyLimitDtoList:[],
rules: {}, rules: {},
rules1: {}, rules1: {},
...@@ -1003,7 +1006,19 @@ ...@@ -1003,7 +1006,19 @@
title:"限购条件" title:"限购条件"
}, },
storeType: 1, //1: "供货商",2: "小药房",3: "医生小店" storeType: 1, //1: "供货商",2: "小药房",3: "医生小店"
hasRepoFlag: 0 //店铺是否有退货地址 hasRepoFlag: 0, //店铺是否有退货地址
videoList: [],//视频上传文件列表
videoModel:{
videoFullPath: ''
},
businessCategoryList:[],
sumFile: 0,
uploadProgress:0, // 上传视频进度条
}
},
computed: {
idMedicEdit() {
return this.isEdit && !this.isCheckServe;;
} }
}, },
created() { created() {
...@@ -1020,6 +1035,7 @@ ...@@ -1020,6 +1035,7 @@
this.rules = originRules; this.rules = originRules;
this.rules1 = originRules1; this.rules1 = originRules1;
this.rules2 = originRules2; this.rules2 = originRules2;
this.rules3 = originRules3
// this.rules2.barCode = originRules.barCode; // this.rules2.barCode = originRules.barCode;
this.jumPathThird = '/goods-manage?storeId=' + storeId +'&commissionFlag=' + this.commissionFlag +'&storeType=' + this.storeType; this.jumPathThird = '/goods-manage?storeId=' + storeId +'&commissionFlag=' + this.commissionFlag +'&storeType=' + this.storeType;
...@@ -1029,6 +1045,7 @@ ...@@ -1029,6 +1045,7 @@
this.curmbThird = this.title; this.curmbThird = this.title;
this.formData.storeId = Number(storeId) || ''; this.formData.storeId = Number(storeId) || '';
this.getTypeCodeList(); this.getTypeCodeList();
this.getBusinessCategory();
this.getLever(0,1) this.getLever(0,1)
dosageAll().then((res)=>{ dosageAll().then((res)=>{
this.doseAll = res.data this.doseAll = res.data
...@@ -1061,6 +1078,27 @@ ...@@ -1061,6 +1078,27 @@
} }
}, },
methods: { methods: {
// 获取业务类型
getBusinessCategory(){
getBusinessCategory().then((res) => {
if (res.code == '000000') {
this.businessCategoryList=res.data
}
}).catch((err)=>{})
},
// 判断imgurl是否有效
checkImgExists(imgurl) {
return new Promise(function(resolve, reject) {
var ImgObj = new Image()
ImgObj.src = imgurl
ImgObj.onload = function(res) {
resolve(res)
}
ImgObj.onerror = function(err) {
reject(err)
}
})
},
// 获取适用人群 // 获取适用人群
getTypeCodeList() { getTypeCodeList() {
return getTypeCodeList().then((res) => { return getTypeCodeList().then((res) => {
...@@ -1097,18 +1135,34 @@ ...@@ -1097,18 +1135,34 @@
}; };
const { goodsInfo, medicalService, buyLimitDtoList, hasRepoFlag} = res.data; const { goodsInfo, medicalService, buyLimitDtoList, hasRepoFlag} = res.data;
const { goodsName, goodsDescription, goodsType,businessCategoryId, expressLimitFlag,goodsHeaderImages=[], goodsVideoList=[] } = goodsInfo;
this.formData = {...this.formData, ...goodsInfo}; this.formData = {...this.formData, ...goodsInfo};
this.formData2 = medicalService; this.formData2 = medicalService;
this.formData = { ...this.formData, ...this.formData2 }; this.formData = { ...this.formData, ...this.formData2 };
this.formData3 = { goodsName, goodsDescription, goodsHeaderImages, goodsVideoList, goodsType,businessCategoryId, expressLimitFlag };
this.buyLimitDtoList = buyLimitDtoList; this.buyLimitDtoList = buyLimitDtoList;
this.hasRepoFlag = hasRepoFlag; this.hasRepoFlag = hasRepoFlag;
this.$set(this.formData2, 'suitableArr', this.formData.suitable.split(',')); this.$set(this.formData2, 'suitableArr', this.formData.suitable.split(','));
this.$set(this.formData, 'suitableArr', this.formData.suitable.split(',')); this.$set(this.formData, 'suitableArr', this.formData.suitable.split(','));
this.formData.optPrice = this.formData.costPrice/100;
this.formData.stock = this.formData.goodsStock; this.formData.stock = this.formData.goodsStock;
this.formData.scorePerformance = this.formData.scorePerformance/100;
this.formData.optPrice = this.formData.costPrice/100;
this.fileGoodsList = this.getImges(goodsInfo.goodsHeaderImages,1); this.fileGoodsList = this.getImges(goodsInfo.goodsHeaderImages,1);
this.goodsCheckList = this.getImges(medicalService.goodsCheckImages, goodsType); this.goodsCheckList = this.getImges(medicalService.goodsCheckImages, goodsType);
if (goodsInfo.goodsVideoList.length > 0) {
this.videoList.push(goodsInfo.goodsVideoList[0]);
this.videoModel.videoFullPath = this.videoList[0].goodsImgUrl;
}
let newImgList = [];
this.fileGoodsList.map((item,index) => {
this.checkImgExists(item.imageUrl).then(()=> {
newImgList.push(item)
}).catch(()=> {
newImgList = this.fileGoodsList.splice(index,1);
})
})
this.fileGoodsList = newImgList;
this.rules = { this.rules = {
...this.rules, ...this.rules,
...@@ -1138,15 +1192,31 @@ ...@@ -1138,15 +1192,31 @@
}); });
} }
const {goodsList, hasRepoFlag } = res.data; const {goodsList, hasRepoFlag } = res.data;
const { goodsName, goodsDescription, goodsType, businessCategoryId,expressLimitFlag, goodsHeaderImages=[], goodsVideoList=[] } = goodsList[0];
this.formData1 = goodsList[0]; this.formData1 = goodsList[0];
this.formData = goodsList[0]; this.formData = goodsList[0];
this.formData3 = { goodsName, goodsDescription, goodsHeaderImages, goodsVideoList, goodsType,businessCategoryId, expressLimitFlag };
this.hasRepoFlag = hasRepoFlag; this.hasRepoFlag = hasRepoFlag;
this.buyLimitDtoList = this.formData.buyLimitDtoList; this.buyLimitDtoList = this.formData.buyLimitDtoList;
this.formData.optPrice = this.formData.costPrice/100; this.formData.optPrice = this.formData.costPrice/100;
this.formData.scorePerformance = this.formData.scorePerformance/100;
this.fileGoodsList = this.getImges(goodsList[0].goodsImgList,1); this.fileGoodsList = this.getImges(goodsList[0].goodsImgList,1);
this.fileIntrList = this.getImges(goodsList[0].medicImgList,2); this.fileIntrList = this.getImges(goodsList[0].medicImgList,2);
this.formData.stock = this.formData.goodsStock; this.formData.stock = this.formData.goodsStock;
this.formData.otc1 = this.formData.otc ? '1' : '0'; this.formData.otc1 = this.formData.otc ? '1' : '0';
if (goodsList[0].goodsVideoList.length > 0) {
this.videoList.push(goodsList[0].goodsVideoList[0]);
this.videoModel.videoFullPath = this.videoList[0].goodsImgUrl;
}
let newImgList = [];
this.fileGoodsList.map((item,index) => {
this.checkImgExists(item.imageUrl).then(()=> {
newImgList.push(item)
}).catch(()=> {
newImgList = this.fileGoodsList.splice(index,1);
})
})
this.fileGoodsList = newImgList;
if(this.isMedic){ if(this.isMedic){
this.getLever(5,2,1) this.getLever(5,2,1)
}else{ }else{
...@@ -1268,31 +1338,9 @@ ...@@ -1268,31 +1338,9 @@
}); });
}, },
// 销售方式
getSaleType(saleType, type){
},
getGoodsTypes(goodsType,type){ getGoodsTypes(goodsType,type){
this.goodsType = goodsType; this.goodsType = goodsType;
// if(goodsType == 5){
// this.isMedic = true;
// this.isCheckServe = false;
// this.getLever(goodsType,type);
// } else if(goodsType == 337){
// this.isMedic = false;
// this.isCheckServe = true;
// getHospitalInfoByStoreId(this.storeId).then(({code,message,data})=>{
// this.formData2.hospitalName = data.hospital;
// })
// getCheckPackageIdList().then(res=>{
// console.log(`getCheckPackageIdList`, res);
// this.checkPackageIdList = res.data;
// })
// }else{
// this.isMedic = false;
// this.isCheckServe = false;
// };
if(goodsType == 337){ if(goodsType == 337){
this.isMedic = false; this.isMedic = false;
this.isCheckServe = true; this.isCheckServe = true;
...@@ -1416,15 +1464,16 @@ ...@@ -1416,15 +1464,16 @@
complete() { complete() {
this.formData1.leastCount = this.formData.leastCount; this.formData1.leastCount = this.formData.leastCount;
this.formData1.mostCount = this.formData.mostCount; this.formData1.mostCount = this.formData.mostCount;
let formNameList = ['formData', 'formData1', 'formData2']; let formNameList = ['formData', 'formData1', 'formData2', 'formData3'];
// let formName = "formData"; // let formName = "formData";
if(this.goodsType == 337 ){ if(this.goodsType == 337 ){
formNameList = ['formData', 'formData2']; formNameList = ['formData', 'formData2', 'formData3'];
this.formData = { ...this.formData, ...this.formData2 }; this.formData = { ...this.formData, ...this.formData3,...this.formData2 };
}else{ }else{
formNameList = ['formData', 'formData1'];
this.formData = { ...this.formData, ...this.formData1 }; formNameList = ['formData', 'formData1', 'formData3'];
this.formData = { ...this.formData,...this.formData1,...this.formData3};
} }
for(let i=0;i<this.fileGoodsList.length;i++){ for(let i=0;i<this.fileGoodsList.length;i++){
this.fileGoodsList[i].imageSort = i+1 this.fileGoodsList[i].imageSort = i+1
...@@ -1432,7 +1481,6 @@ ...@@ -1432,7 +1481,6 @@
for(let j=0;j<this.fileIntrList.length;j++){ for(let j=0;j<this.fileIntrList.length;j++){
this.fileIntrList[j].imageSort = j+1 this.fileIntrList[j].imageSort = j+1
} }
this.formData.categoryId = this.formData.goodsType this.formData.categoryId = this.formData.goodsType
this.formData.otc = this.formData.otc1 == 1 ? true : false this.formData.otc = this.formData.otc1 == 1 ? true : false
this.isgoodStock = this.formData.stock > 0 ? true : false this.isgoodStock = this.formData.stock > 0 ? true : false
...@@ -1440,15 +1488,17 @@ ...@@ -1440,15 +1488,17 @@
// console.log(this.isgoodStock); // console.log(this.isgoodStock);
this.formData.goodsImages = this.fileGoodsList; this.formData.goodsImages = this.fileGoodsList;
this.formData.goodsHeaderImages = this.fileGoodsList; this.formData.goodsHeaderImages = this.fileGoodsList;
this.formData.goodsVideoList = this.videoList;
this.formData.specificationImages = this.fileIntrList; this.formData.specificationImages = this.fileIntrList;
this.formData.buyLimitDtoList = this.buyLimitDtoList; this.formData.buyLimitDtoList = this.buyLimitDtoList;
this.isgoodsImages = this.formData.goodsImages.length == 0 ? false :true; this.isgoodsImages = this.formData.goodsImages.length == 0 ? false :true;
// 如果是【药品】类型的商品 // 如果是【药品】类型的商品
if(this.isMedic){ // if(this.isMedic){
if(!this.isgoodsImages){ if(!this.isgoodsImages){
return; return;
} }
} // }
// 如果是【检测服务】类型的商品 // 如果是【检测服务】类型的商品
if(this.isCheckServe){ if(this.isCheckServe){
this.formData.goodsCheckImages = this.goodsCheckList; this.formData.goodsCheckImages = this.goodsCheckList;
...@@ -1483,7 +1533,6 @@ ...@@ -1483,7 +1533,6 @@
return; return;
} }
} }
if(!isTrue){ if(!isTrue){
return false; return false;
}else{ }else{
...@@ -1507,9 +1556,11 @@ ...@@ -1507,9 +1556,11 @@
}, },
//更新商品 //更新商品
updateGoodsInfo(){ updateGoodsInfo(){
console.log('提交值',this.formData); console.log('提交值',JSON.parse(JSON.stringify(this.formData)));
const submieFn = this.isCheckServe ? updateGoodsV2 : updateGoods; const submieFn = this.isCheckServe ? updateGoodsV2 : updateGoods;
submieFn(this.formData).then((res)=>{ let params = JSON.parse(JSON.stringify(this.formData))
params.scorePerformance = params.scorePerformance * 100;
submieFn(params).then((res)=>{
if (res.code !== '000000') { if (res.code !== '000000') {
return this.$message({ return this.$message({
message: res.message, message: res.message,
...@@ -1528,11 +1579,17 @@ ...@@ -1528,11 +1579,17 @@
}) })
}) })
}, },
imgExceed(file) {
if (file.length > 6) {
this.$message.error("最多只能上传6张图片");
};
},
//上传商品头图 //上传商品头图
beforeUploadPic(file) { beforeUploadPic(file) {
if(this.fileGoodsList.length > 10){ // if(this.fileGoodsList.length > 6){
return ; // this.$message.error("最多只能上传6张图片");
} // return ;
// }
let vm = this; let vm = this;
let picTypes = ['image/jpeg','image/png'] let picTypes = ['image/jpeg','image/png']
...@@ -1549,7 +1606,10 @@ ...@@ -1549,7 +1606,10 @@
vm.slide2.oriUrl = theFile.target.result; vm.slide2.oriUrl = theFile.target.result;
image.onload = function () { image.onload = function () {
let _this = this; let _this = this;
console.log(_this.width,_this.height) if (_this.width !== 750 || _this.height !== 750) {
vm.$message.error("图片长宽尺寸必须为750*750");
return;
};
openLoading(vm); openLoading(vm);
doUpload(vm, file, getFilePath(file, null), "preview4", "progress1", 1).then(function (path) { doUpload(vm, file, getFilePath(file, null), "preview4", "progress1", 1).then(function (path) {
closeLoading(vm); closeLoading(vm);
...@@ -1826,6 +1886,109 @@ ...@@ -1826,6 +1886,109 @@
} }
}) })
}, },
// 视频
deleteVideo(videoList) {
console.log(videoList,'item,fileGoodsListitem,fileGoodsListv')
this.videoList = [];
this.videoModel.videoFullPath='';
},
beforeVideoUpload(file) {
const video2M = file.size / 1024 /1024 < 20;
console.log(file.size, 'video2Mvideo2Mvideo2M')
if (!video2M) {
this.$message.error('上传视频大小不能超过20M!');
}
else {
this.doVideoUpload(file, 1);
}
},
handleRemoveVideo(file, videoList) {
//console.log(this.videoList);
for (let i = 0; i < this.videoList.length; i++) {
if (this.videoList[i].name == file.name) {
this.videoList.splice(i, 1);
console.log("删除" + i);
}
}
},
checkUpdate(name) {
let flag = true;
for(let i=0;i<this.videoList.length;i++) {
if(this.videoList[i].name == name) {
flag = false;
this.$message.warning('上传文件重发');
}
}
console.log('name',name,'',this.videoList)
return flag;
},
doVideoUpload(file, index) {
console.log('file',file);
//console.log('videoList项目列表:',this.videoList);
this.videoModel.videoFullPath = '';
if(file.name.indexOf(' ') != -1){
this.$message.warning('文件名不能包含空格');
return;
}
let updateFlag = this.checkUpdate(file.name);
if(updateFlag == false) {
return;
}
var ext = file.type
var arr = ext.split('/');
var filety = "." + arr[1];
/*if (filety.indexOf(".pdf") < 0 && filety.indexOf(".jpeg") < 0 && filety.indexOf(".jpg") < 0
&& filety.indexOf(".png") < 0 && filety.indexOf(".mp4") < 0) {
this.$message.warning('文件格式错误');
return
}*/
let self = this;
//如果没有选择文件,返回
if (isEmptyUtils(file)) {
return;
}
console.log('file.type', file.type)
if(filety != ".mp4"){
// if (file.type !== 'video/mp4') {
self.$message.error('仅支持上传mp4格式视频');
return;
}
var arr = file.name.split('_');
if(arr.length != 4){
self.$message.error('上传视频文件名格式不正确:举例(GXY_001_02_03.mp4)');
return;
}
self.$message.info('开始上传');
self.videoModel.videoPath = createFilePath(file,file.name)
// let videoPath = createFilePath(file,file.name)
doUpload(self,file,self.videoModel.videoPath,"preview4",
"uploadProgress1",
"").then(function (result) {
console.log('成功result',result);
self.videoModel.videoFullPath = result.fullPath;
// self.model.size = result.size;
// self.model.ext = result.ext;
// self.model.name = self.model.videoPath;
let fileItem = {
goodsImgUrl: result.fullPath,
uid: '',
imageUrl: result.fullPath,
imageType: 9,
goodsId: self.formData.goodsId,
id: null,
deleteFlag: 0
}
self.videoList.push(fileItem);
self.$message.success('上传成功');
console.log('sumFile',self.sumFile,'videoList',self.videoList);
return false;
});
},
}, },
} }
</script> </script>
...@@ -1844,6 +2007,9 @@ ...@@ -1844,6 +2007,9 @@
color: #449284; color: #449284;
} }
} }
.word-tip {
color: #e6af7a;
}
} }
.suitableList-select { .suitableList-select {
width: 445px; width: 445px;
...@@ -2065,4 +2231,29 @@ ...@@ -2065,4 +2231,29 @@
.el-icon-minus { .el-icon-minus {
color:#ffffff; color:#ffffff;
} }
#introVideoLecture {
height: 140px;
}
.video-progress {
width: 20%;
}
.el-upload-list {
width: 30%;
}
.label-video {
position: relative;
.el-button:focus, .el-button:hover {
color: #449284;
border-color: #449284;
background-color: #ecf5ff;
}
.dl-video {
position: absolute;
top: 50%;
left: 35%;
transform: translate(-50%,-50%);
}
}
</style> </style>
...@@ -58,6 +58,7 @@ const form = { ...@@ -58,6 +58,7 @@ const form = {
incrStock: "", //增加库存 incrStock: "", //增加库存
storeId: "", storeId: "",
optPrice: "", optPrice: "",
scorePerformance: 0,
goodsStock: 0, goodsStock: 0,
stock: 0, stock: 0,
externalGoodsCode: "", externalGoodsCode: "",
...@@ -69,7 +70,18 @@ const form = { ...@@ -69,7 +70,18 @@ const form = {
expressLimitFlag: 0, //是否支持退货退款 expressLimitFlag: 0, //是否支持退货退款
}; };
const form3 = {
goodsName: "",
goodsDescription: "",
goodsHeaderImages: [],
goodsVideoList: [],
goodsType: "",
businessCategoryId:"",
expressLimitFlag: 0, //是否支持退货退款
};
export const originForm1 = form1; export const originForm1 = form1;
export const originForm2 = form2; export const originForm2 = form2;
export const originForm3 = form3;
export const originForm = form; export const originForm = form;
...@@ -94,8 +94,8 @@ ...@@ -94,8 +94,8 @@
</el-col> </el-col>
<el-col :span="12" style="text-align: right"> <el-col :span="12" style="text-align: right">
<el-button v-if="commissionFlag == 2" type="primary" size="small" @click="batchSetPrice()">批量设置分佣</el-button> <el-button v-if="commissionFlag == 2" type="primary" size="small" @click="batchSetPrice()" :disabled="tableData.length == 0">批量设置分佣</el-button>
<el-button type="primary" size="small" @click="exportOpt">批量导出商品</el-button> <el-button type="primary" size="small" @click="exportOpt" :disabled="tableData.length == 0">批量导出商品</el-button>
<el-button v-if="isSSO" type="primary" size="small" @click="batchOpt(3)">批量导入商品</el-button> <el-button v-if="isSSO" type="primary" size="small" @click="batchOpt(3)">批量导入商品</el-button>
<el-button type="primary" size="small" @click="edit('add')">新建单个商品</el-button> <el-button type="primary" size="small" @click="edit('add')">新建单个商品</el-button>
</el-col> </el-col>
...@@ -121,6 +121,7 @@ ...@@ -121,6 +121,7 @@
<span>{{ scope.row.goodsStatus | rangeStatus }}</span> <span>{{ scope.row.goodsStatus | rangeStatus }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="goodsHisStock" label="商品总库存" width="100" align="center"></el-table-column>
<el-table-column prop="quantityOfSale" label="有效销量" width="120" align="center"> <el-table-column prop="quantityOfSale" label="有效销量" width="120" align="center">
</el-table-column> </el-table-column>
...@@ -161,6 +162,16 @@ ...@@ -161,6 +162,16 @@
</el-table-column> </el-table-column>
<el-table-column prop="saleTime" label="发布时间" width="170" align="center"> <el-table-column prop="saleTime" label="发布时间" width="170" align="center">
</el-table-column> </el-table-column>
<el-table-column prop="modifiedIdStr" label="最近操作人" width="170" align="center">
<template slot-scope="scope">
<span>{{ scope.row.modifiedIdStr || '--' }}</span>
</template>
</el-table-column>
<el-table-column prop="modifiedTime" label="最近操作时间" width="170" align="center">
<template slot-scope="scope">
<span>{{ scope.row.modifiedTime || '--' }}</span>
</template>
</el-table-column>
<el-table-column label="操作" width="200" align="center" fixed="right"> <el-table-column label="操作" width="200" align="center" fixed="right">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="scope.row.commissionFlag == 2"> <div v-if="scope.row.commissionFlag == 2">
...@@ -552,7 +563,6 @@ ...@@ -552,7 +563,6 @@
handleRemove(){}, handleRemove(){},
beforeRemove(){}, beforeRemove(){},
handleSelectionChange(val){ handleSelectionChange(val){
console.log(val)
this.selectList = val this.selectList = val
}, },
...@@ -622,8 +632,10 @@ ...@@ -622,8 +632,10 @@
reader.readAsDataURL(file); reader.readAsDataURL(file);
}, },
uploadTemp(){ uploadTemp(){
// let url = "https://file.yunqueyi.com/trade/store/goods_import_template.xlsx" // let url = "https://file.yunqueyi.com/trade/store/goods_import_template.xlsx 'https://file.yunqueyi.com/trade/store/20210129/goods_import_template.xlsx'"
const url = 'https://file.yunqueyi.com/trade/store/20210129/goods_import_template.xlsx'; // const url = 'https://files.yunqueyi.com/template/goods_import_template_1.xlsx';
const url = 'https://files.yunqueyi.com/application/vnd.openxmlformats-officedocument.spreadsheetml.sheet/common/20211105150219553.xlsx';
window.location.href = url window.location.href = url
}, },
getLever(id=0){ getLever(id=0){
...@@ -821,7 +833,6 @@ ...@@ -821,7 +833,6 @@
}, },
exportOpt() { exportOpt() {
const { goodsIdList, goodsType, goodsName, storeId, saleType } = this.searchForm; const { goodsIdList, goodsType, goodsName, storeId, saleType } = this.searchForm;
getGoodsExportUrl({ goodsIdList, goodsType, goodsName, storeId, saleType }).then(res => { getGoodsExportUrl({ goodsIdList, goodsType, goodsName, storeId, saleType }).then(res => {
if (res.code != '000000') { if (res.code != '000000') {
this.$message({ message: res.message, type: 'error' }); this.$message({ message: res.message, type: 'error' });
......
...@@ -27,18 +27,18 @@ const rules1 = { ...@@ -27,18 +27,18 @@ const rules1 = {
{ required: true, message: "请输入条形码", trigger: "submit" }, { required: true, message: "请输入条形码", trigger: "submit" },
{ validator: checkBarcode, trigger: "submit" } { validator: checkBarcode, trigger: "submit" }
], ],
medicCommonName:[ // medicCommonName:[
{ required: true, message: "请输入商品通用名称", trigger: "blur" } // { required: true, message: "请输入商品通用名称", trigger: "blur" }
], // ],
// size:[ // size:[
// { required: true, message: "请输入商品规格", trigger: "blur" } // { required: true, message: "请输入商品规格", trigger: "blur" }
// ], // ],
// manufacturer:[ // manufacturer:[
// { required: true, message: "请输入生产厂家", trigger: "blur" } // { required: true, message: "请输入生产厂家", trigger: "blur" }
// ], // ],
approvalNumber:[ // approvalNumber:[
{ required: true, message: "请输入批准文号", trigger: "blur" } // { required: true, message: "请输入批准文号", trigger: "blur" }
], // ],
// dosageId:[ // dosageId:[
// { required: true, message: "请选择剂型", trigger: "change" } // { required: true, message: "请选择剂型", trigger: "change" }
// ], // ],
...@@ -89,19 +89,6 @@ const rules = { ...@@ -89,19 +89,6 @@ const rules = {
{ required: true, message: "请输入条形码", trigger: "submit" }, { required: true, message: "请输入条形码", trigger: "submit" },
{ validator: checkBarcode, trigger: "submit" } { validator: checkBarcode, trigger: "submit" }
], ],
goodsName: [
{ required: true, message: "请输入商品名称", trigger: "submit" },
{ validator: checkProjectStr, trigger: "submit" }
],
goodsHeaderImages: [
{ required: true, message: "请上传商品头图", trigger: "blur" }
],
goodsType:[
{ required: true, message: "请选择商品类型", trigger: "change" }
],
hcd:[
{ required: true, message: "请选择是否支持退货退款", trigger: "change" }
],
optPrice: [ optPrice: [
{ required: true, message: "请输入价格", trigger: "blur" }, { required: true, message: "请输入价格", trigger: "blur" },
], ],
...@@ -126,8 +113,24 @@ const rules = { ...@@ -126,8 +113,24 @@ const rules = {
// ], // ],
} }
const rules3 = {
goodsName: [
{ required: true, message: "请输入商品名称", trigger: "submit" },
{ validator: checkProjectStr, trigger: "submit" },
],
goodsDescription: [
{ required: true, message: "请输入商品介绍", trigger: "submit" },
],
goodsHeaderImages: [
{ required: true, message: "请上传商品头图", trigger: "blur" },
],
businessCategoryId: [{ required: true, message: "请选择业务类型", trigger: "change" }],
goodsType: [{ required: true, message: "请选择商品类型", trigger: "change" }],
};
export const originRules1 = rules1; export const originRules1 = rules1;
export const originRules2 = rules2; export const originRules2 = rules2;
export const originRules3 = rules3;
export const originRules = rules; export const originRules = rules;
...@@ -841,8 +841,8 @@ export default { ...@@ -841,8 +841,8 @@ export default {
if(vm.dataType == 0) { if(vm.dataType == 0) {
cardData[0].value = parseFloat((data.hospitalRate*100).toFixed(1)) + '%'; cardData[0].value = parseFloat((data.hospitalRate*100).toFixed(1)) + '%';
cardData[0].hasNum = data.joinCount; cardData[0].hasNum = data.hospitalJoinCount; //hospitalCount
cardData[0].shouldNum = data.finishCount; cardData[0].shouldNum = data.hospitalCount; //hospitalJoinCount
vm.cardData = cardData; vm.cardData = cardData;
} else if(vm.dataType == 1) { } else if(vm.dataType == 1) {
...@@ -1100,7 +1100,6 @@ export default { ...@@ -1100,7 +1100,6 @@ export default {
}, },
//机构人员分页 //机构人员分页
handleSizeChange(val) { handleSizeChange(val) {
console.log(`每页 ${val} 条`);
vm.formTable.pageSize = val; vm.formTable.pageSize = val;
vm.formTable.pageNo = 1; vm.formTable.pageNo = 1;
if(vm.downloadId == null) { if(vm.downloadId == null) {
...@@ -1251,7 +1250,7 @@ export default { ...@@ -1251,7 +1250,7 @@ export default {
} }
} }
.box-card2 { .box-card2 {
width: 49%; width: 32%;
margin-right: 2%; margin-right: 2%;
} }
.box-last { .box-last {
......
<template>
<el-dialog
title="提示"
:visible.sync="hidden"
width="80%"
:before-close="handleClose"
>
<el-table :data="gridData">
<el-table-column property="date" label="审核时间"></el-table-column>
<el-table-column property="name" label="审核人"></el-table-column>
<el-table-column property="address" label="审核结果"></el-table-column>
<el-table-column property="address" label="失败原因" width="200">
<template class=""> </template>
</el-table-column>
<el-table-column property="address" label="操作">
<template>
<el-button
@click="goDetail(scope.row)"
class="c0D9078"
type="text"
size="small"
>查看详情</el-button
>
</template>
</el-table-column>
</el-table>
<div class="pagination">
<el-pagination
background
@size-change="handleSizeChange"
@current-change="handleNumChange"
:current-page="pageNo"
:page-sizes="[10, 30, 50, 100]"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
></el-pagination>
</div>
</el-dialog>
</template>
<script>
import { getCertifyHistory } from "@/utils/qualification";
export default {
props: {
hidden: {
type: Boolean,
default: () => {
return false;
},
},
id: {
type: Number,
default: () => {
return 0;
},
},
},
data() {
return {
pageNo: 0,
pageSize: 10,
total: 100,
gridData: [],
};
},
created() {},
methods: {
init() {
const params = {
certificateInfoId: this.id,
pageNo: this.pageNo,
pageSize: this.pageSize,
};
getCertifyHistory(params).then((res) => {
this.gridData = res.data.contentList;
});
},
handleSizeChange(value) {
this.pageSize = value;
this.init();
},
handleNumChange(value) {
this.pageNo = value;
},
goDetail() {
},
show() {},
handleClose() {
this.pageSize = 10;
this.pageNo = 1;
this.gridData = [];
this.$emit("close");
},
},
};
</script>
<style lang='less' scoped>
</style>
<template>
<el-dialog
title="拒绝原因"
:visible.sync="dialogVisible"
width="40%"
:before-close="handleClose"
>
<div class="refuse-dialog">
<el-radio
class="radio"
v-model="checkId"
v-for="item in list"
:key="item.id"
:label="item.id"
>{{ item.name }}</el-radio
>
<el-radio class="radio" v-model="checkId" :label="-1">手动输入</el-radio>
<el-input
v-if="checkId === -1"
type="textarea"
placeholder="请输入拒绝原因"
v-model="refuse"
maxlength="30"
show-word-limit
/>
</div>
<div class="btn">
<el-button type="default" size="small" @click="handleClose"
>取消</el-button
>
<el-button type="primary" size="small" @click="confirm">确认</el-button>
</div>
</el-dialog>
</template>
<script>
import { getRefuseTemplate } from "@/utils/qualification";
export default {
props: {},
data() {
return {
dialogVisible: false,
checkId: -1,
refuse: "",
list: [],
type: "",
typeData: {
1: "公司信息",
2: "营业执照",
3: "上一年年度报告",
4: "委托人身份证照片",
5: "委托书",
6: "法人身份证照片",
7: "药品经营许可证",
8: "药品经营质量管理规范认证证书",
9: "食品经营许可证",
10: "医疗器械经营许可证",
11: "二级医疗器械经营备案凭证",
12: "事业单位法人证",
},
};
},
created() {},
methods: {
init() {
getRefuseTemplate(this.type).then((res) => {
console.log(res);
this.list = res.data || [];
});
},
show(type) {
console.log(type);
this.type = type;
this.init(type);
this.dialogVisible = true;
},
handleClose() {
this.list = [];
this.refuse = "";
this.checkId = -1;
this.dialogVisible = false;
},
confirm() {
const params = {
refuseTemplateNo: this.checkId,
infoType: this.type,
infoTypeName:this.typeData[this.type]
};
if (this.checkId === -1) {
params.refuseContent = this.refuse;
} else {
params.refuseContent = this.list.filter((v) => {
return v.id === this.checkId;
})[0].name;
}
this.handleClose();
this.$emit("confirm", params);
},
},
};
</script>
<style lang='less' scoped>
.refuse-dialog {
display: flex;
flex-direction: column;
margin-bottom: 20px;
}
.radio {
margin-bottom: 10px;
}
.btn {
text-align: right;
}
</style>
<template>
<div class="qualification-detail" ref="qualificationDetail">
<bread-crumb :curmbFirst="curmbFirst"></bread-crumb>
<div class="qualification-content screenSet" id="screenSet">
<div class="head">
<div class="top space-between">
<div class="flex-c">
<div class="name">审核状态</div>
<div class="type" :class="typeState">{{ typeStateText }}</div>
<div class="history cp" @click="showHistoryDialog">
<i class="el-icon-document"></i>
查看审核历史
</div>
</div>
<div class="flex-c fs14">
<div class="mLR10">审核人:{{ detail.auditName }}</div>
<div>审核时间:{{ detail.auditTime }}</div>
</div>
</div>
<div class="hr"></div>
<div class="bottom" v-if="$route.query.source === 'ghs'">
<div>店铺名称:{{ detail.storeName }}</div>
<div>
管理员姓名:{{ detail.adminName }}
<span class="c0D9078 cp" @click="copyTxt">复制</span>
</div>
<div>管理员手机号:{{ detail.adminMobile }}</div>
</div>
<div class="bottom" v-if="$route.query.source === 'pf'">
<div>医生姓名:{{ detail.doctorName }}</div>
<div>
医生ID:{{ detail.doctorId }}
<span class="c0D9078 cp" @click="copyTxt">复制</span>
</div>
<div>申请时间:{{ detail.applyTime }}</div>
</div>
</div>
</div>
<div class="company" ref="company">
<div class="tit">
<div class="mr5">公司信息</div>
<div class="c0D9078 cp" @click="refuse(1)">
<i class="el-icon-edit-outline"></i>
拒绝原因
</div>
</div>
<div class="refuse-info">拒绝原因:{{ reasonRejection(1) }}</div>
<div class="info">
<div>
<div>企业类型:{{ detail.orgType }}</div>
<div>联系人:{{ detail.contactName }}</div>
</div>
<div>
<div>企业地区:{{ detail.areaStr }}</div>
<div>联系电话:{{ detail.contactPhone }}</div>
</div>
<div>详情地址:{{ detail.orgAddress }}</div>
</div>
</div>
<div class="business">
<div class="tit">
<div>工商信息</div>
</div>
<div class="refuse-info">拒绝原因:{{ reasonRejection(2) }}</div>
<div class="">
<div class="flex-c fs12">
<div class="mr5">营业执照</div>
<div class="c0D9078 cp" @click="refuse(2)">
<i class="el-icon-edit-outline"></i>拒绝原因
</div>
</div>
<div class="img">
<el-image
:src="detail.businessLicenseUrl"
:preview-src-list="[
'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg',
]"
/>
</div>
<div class="space-between flex-c">
<div>企业名称:{{ detail.orgName }}</div>
<div>信用代码:{{ detail.creditCode }}</div>
<div>
有效日期:{{ detail.licenseValidDateBegin }}
{{ detail.licenseValidDateEnd }}
</div>
</div>
</div>
<el-divider></el-divider>
<div>
<div class="flex-c fs12">
<div class="mr5">上一年度报告</div>
<div class="c0D9078 cp" @click="refuse(3)">
<i class="el-icon-edit-outline"></i>拒绝原因
</div>
</div>
<div class="refuse-info">拒绝原因:{{ reasonRejection(3) }}</div>
<div class="img">
<el-image
src="https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg"
:preview-src-list="[
'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg',
]"
/>
</div>
<div>有效日期:</div>
</div>
<el-divider></el-divider>
<div>
<div class="flex-c fs12">
<div class="mr5">委托人身份证照片</div>
<div class="c0D9078 cp" @click="refuse(4)">
<i class="el-icon-edit-outline"></i>拒绝原因
</div>
</div>
<div class="refuse-info">拒绝原因:{{ reasonRejection(4) }}</div>
<div class="img">
<el-image
:src="detail.assignorCertBackUrl"
:preview-src-list="[
'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg',
]"
/>
</div>
<div class="img">
<el-image
:src="detail.assignorCertFrontUrl"
:preview-src-list="[
'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg',
]"
/>
</div>
<div class="space-between flex-c">
<div>委托人姓名:{{ detail.assignorName }}</div>
<div>委托人身份证号:{{ detail.assignorCertNo }}</div>
<div>
委托人身份证有效日期:{{ detail.assignorValidDateBegin }}{{
detail.assignorValidDateEnd
}}
</div>
</div>
</div>
<el-divider></el-divider>
<div>
<div class="flex-c fs12">
<div class="mr5">委托书</div>
<div class="c0D9078 cp" @click="refuse(5)">
<i class="el-icon-edit-outline"></i>拒绝原因
</div>
</div>
<div class="refuse-info">拒绝原因:{{ reasonRejection(5) }}</div>
<div class="img">
<el-image
:src="detail.assignorCertBackUrl"
:preview-src-list="[
'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg',
]"
/>
</div>
</div>
<el-divider></el-divider>
<div>
<div class="flex-c fs12">
<div class="mr5">法人身份证照片</div>
<div class="c0D9078 cp" @click="refuse(6)">
<i class="el-icon-edit-outline"></i>拒绝原因
</div>
</div>
<div class="refuse-info">拒绝原因:{{ reasonRejection(6) }}</div>
<div class="img">
<el-image
:src="detail.legalCertBackUrl"
:preview-src-list="[
'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg',
]"
/>
</div>
<div class="img">
<el-image
:src="detail.legalCertFrontUrl"
:preview-src-list="[
'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg',
]"
/>
</div>
<div class="space-between flex-c">
<div>法人人姓名:{{ detail.legalName }}</div>
<div>法人身份证号:{{ detail.legalCertNo }}</div>
<div>
法人身份证有效日期:{{ detail.legalValidDateBegin }}
{{ detail.legalValidDateEnd }}
</div>
</div>
</div>
<div>
<div class="tit">
<div>资质信息</div>
</div>
<div class="flex-start">
<div class="">经营范围:</div>
<div class="flex1">{{ detail.bizScope }}</div>
</div>
<div v-for="item in 4" :key="item" class="item">
<div class="flex-c fs12">
<div class="mr5">药品经营许可证</div>
<div class="c0D9078 cp" @click="refuse(7)">
<i class="el-icon-edit-outline"></i>拒绝原因
</div>
</div>
<div class="refuse-info">拒绝原因:{{ reasonRejection(7) }}</div>
<div class="img">
<el-image
src="https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg"
:preview-src-list="[
'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg',
]"
/>
</div>
<div>有效日期:沙发沙发沙发沙发</div>
</div>
</div>
</div>
<history-dialog :hidden="historyDialogHidden" @close="historyDialogClose" />
<refuse-dialog ref="refuseDialog" @confirm="refuseConfirm" />
<footer>
<el-button type="primary" size="small" @click="confirm"
>审核通过</el-button
>
<el-button type="default" size="small" @click="handleClose"
>审核不通过</el-button
>
</footer>
</div>
</template>
<script>
import { openLoading, closeLoading } from "../../utils/utils";
import BreadCrumb from "@/components/breadcrumb.vue";
import historyDialog from "./components/historyDialog.vue";
import refuseDialog from "./components/refuseDialog.vue";
import { getCertifyDetail, postCertifyAudit } from "@/utils/qualification";
import Footer from "../layout/footer.vue";
export default {
components: {
BreadCrumb,
historyDialog,
refuseDialog,
Footer,
},
filters: {},
computed: {
typeState() {
const reviewType = ["tobe-reviewed", "success-reviewed", "no-reviewed"];
return reviewType[this.$route.query.status];
},
typeStateText() {
const reviewType = ["待审核", "审核成功", "审核不通过"];
return reviewType[this.$route.query.status];
},
},
filters: {
},
data() {
return {
curmbFirst: "批发资质详情",
historyDialogHidden: false,
detail: {},
certifyValidDtoList: [], //认证审核校验描述
certifyLicenseImgList: [], //认证图片list:资质信息类
certifyReportImgList: [], //认证图片list 年度报告类
};
},
created() {
this.init();
},
methods: {
init() {
getCertifyDetail(this.id).then((res) => {
const {
certifyValidDtoList = [],
certifyLicenseImgList = [],
certifyReportImgList = [],
} = res.data;
console.log(this.certifyValidDtoList);
this.certifyValidDtoList = certifyValidDtoList;
this.certifyLicenseImgList = certifyLicenseImgList;
this.certifyReportImgList = certifyReportImgList;
this.detail = res.data;
});
},
showHistoryDialog() {
this.historyDialogHidden = true;
},
historyDialogClose() {
this.historyDialogHidden = false;
},
reasonRejection(type) {
const value = this.certifyValidDtoList.filter(v => {
return v.infoType === type
})[0] || {};
return value.refuseContent || '' ;
},
// copy
copyTxt(text) {
var type = "text/plain";
var blob = new Blob([text], { type });
var data = [new ClipboardItem({ [type]: blob })];
navigator.clipboard.write(data).then(
() => {
/* success */
this.$message.success("复制成功");
},
() => {
/* failure */
this.$message.error("复制失败");
}
);
},
confirm() {
const params = {
certificateInfoId:1,
certifyStatus:3,
certifyValidDtoList:this.certifyValidDtoList
}
if(this.certifyValidDtoList.length) {
this.$confirm("部分内容你已经标记拒绝,不可通过审核,请返回查看", "确认通过审核吗?", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
console.log(document.querySelector('#body-content').scrollTop);
console.log(this.$refs.company.scrollHeight,document.scrollTop);
document.querySelector('#body-content').scrollTop = this.$refs.company.scrollHeight
})
.catch(() => {});
return;
}
this.$confirm('', "确认通过审核吗?", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
postCertifyAudit(params).then(res => {
console.log(res);
document.querySelector('#body-content').scrollTop = 0;
this.init();
})
})
.catch(() => {});
},
handleClose() {
const params = {
certificateInfoId:1,
certifyStatus:4,
certifyValidDtoList:this.certifyValidDtoList
}
if(this.certifyValidDtoList.length) {
this.$confirm('', "确认通过审核不通过吗?", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
document.body.scrollTop = 0;
})
.catch(() => {});
return;
}
this.$confirm('未检测到有标记拒绝原因的项目,请返回查看', "确认通过审核不通过吗?", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
})
.catch(() => {});
},
refuseConfirm(params) {
console.log(params);
this.certifyValidDtoList.push(params)
},
refuse(type) {
console.log(type);
this.$refs.refuseDialog.show(type);
switch (type) {
case 1:
break;
}
},
},
};
</script>
<style lang="scss" scope>
.hr {
background-color: #dcdfe6;
position: relative;
display: block;
height: 1px;
width: 100%;
margin: 10px 0;
}
.mr5 {
margin-right: 5px;
}
.qualification-detail {
.qualification-content {
background: #fff;
padding: 10px;
.head {
.top {
display: flex;
align-items: center;
.name {
font-weight: bold;
font-size: 16px;
}
.type {
border: 1px solid #ccc;
padding: 2px 5px;
font-size: 14px;
border-radius: 5px;
margin: 0 5px;
&.tobe-reviewed {
color: #fac94d;
border: 1px solid #fac94d;
}
&.success-reviewed {
color: #71d60a;
border: 1px solid #71d60a;
}
&.no-reviewed {
color: #e2292a;
border: 1px solid #e2292a;
}
}
.history {
color: #0d9078;
font-size: 12px;
}
}
.bottom {
display: flex;
justify-content: space-between;
}
}
}
.company {
background-color: #fff;
margin: 10px 30px;
padding: 20px;
.c0D9078 {
margin-left: 5px;
font-size: 12px;
}
.info {
display: flex;
justify-content: space-between;
flex-wrap: nowrap;
line-height: 40px;
div {
}
}
}
.business {
background-color: #fff;
margin: 10px 30px;
padding: 20px;
font-size: 12px;
.img {
width: 80px;
height: 150px;
}
.item {
margin-bottom: 10px;
}
.flex-c {
margin-bottom: 10px;
}
.flex-start {
margin-bottom: 20px;
}
}
.tit {
display: flex;
align-items: center;
position: relative;
font-size: 16px;
margin-bottom: 20px;
> :first-child {
font-weight: bold;
}
&::before {
content: "";
width: 2px;
height: 70%;
position: absolute;
left: -5px;
background-color: #0d9078;
}
}
footer {
position: fixed;
bottom: 0;
right: 0;
background-color: #fff;
width: calc(100% - 255px);
text-align: right;
padding: 10px 20px;
}
.refuse-info {
font-size: 12px;
color: #e54543;
}
}
</style>
<template>
<div class="qualification-list">
<bread-crumb :curmbFirst="curmbFirst"></bread-crumb>
<div class="qualification-content screenSet" id="screenSet">
<el-form
ref="searchForm"
:model="searchForm"
label-width="100px"
label-suffix=":"
:inline="true"
>
<template v-if="$route.query.source === 'ghs'">
<el-form-item label="店铺名称">
<el-input
v-model="searchForm.storeNameStr"
size="small"
style="width: 200px"
placeholder="请输入店铺名称,用‘、’隔开"
></el-input>
</el-form-item>
<el-form-item label="管理员姓名">
<el-input
v-model="searchForm.adminNameStr"
size="small"
style="width: 220px"
placeholder="请输入管理员姓名,用‘、’隔开"
></el-input>
</el-form-item>
<el-form-item label="管理员手机号">
<el-input
v-model="searchForm.adminMobileStr"
size="small"
style="width: 220px"
placeholder="亲输入管理员手机号,用‘、’隔开"
></el-input>
</el-form-item>
<el-form-item label="企业类型">
<el-select
v-model="searchForm.orgType"
placeholder="请选择"
size="small"
clearable
>
<el-option
v-for="(item, index) in orgList"
:key="index"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
</template>
<template v-if="$route.query.source === 'pf'">
<el-form-item label="医生ID">
<el-input
v-model="searchForm.doctorIdStr"
size="small"
style="width: 200px"
placeholder="请输入医生ID,用‘、’隔开"
></el-input>
</el-form-item>
<el-form-item label="医生姓名">
<el-input
v-model="searchForm.doctorNameStr"
size="small"
style="width: 200px"
placeholder="请输入医生姓名,用‘、’隔开"
></el-input>
</el-form-item>
<el-form-item label="企业名称">
<el-input
v-model="searchForm.orgNameStr"
size="small"
style="width: 200px"
placeholder="亲输入企业名称,用‘、’隔开"
></el-input>
</el-form-item>
</template>
<!-- <el-form-item label="审核状态">
<el-select
v-model="searchForm.status"
placeholder="请选择"
size="small"
>
<el-option
v-for="(item, index) in statusList"
:key="index"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item> -->
</el-form>
<div class="form-btn">
<el-button type="primary" size="small" @click="submitForm"
>查询</el-button
>
<el-button type="default" size="small" @click="resetForm"
>重制</el-button
>
</div>
</div>
<div class="table">
<div class="tab">
<span
:class="{ checked: item.id === searchForm.status }"
v-for="item in tabList"
:key="item.id"
@click="checkTab(item)"
>{{ item.name }}</span
>
</div>
<el-table
:data="tableData"
align="left"
class="item-table"
style="width: 100%; margin-top: 10px"
>
<el-table-column
prop="id"
label="申请ID"
min-width="100"
align="center"
>
<template slot-scope="scope">
<span>{{ scope.row.id }}</span>
</template>
</el-table-column>
<template v-if="$route.query.source === 'ghs'">
<el-table-column
prop="storeName"
label="店铺名称"
min-width="100"
align="center"
show-overflow-tooltip
>
<template slot-scope="scope">
<span>{{ scope.row.storeName }}</span>
</template>
</el-table-column>
<el-table-column
prop="adminName"
label="管理员姓名"
min-width="100"
align="center"
>
</el-table-column>
<el-table-column
prop="adminMobile"
label="管理员手机号"
min-width="100"
align="center"
>
</el-table-column>
</template>
<template v-if="$route.query.source === 'pf'">
<el-table-column
prop="storeName"
label="医生ID"
min-width="100"
align="center"
show-overflow-tooltip
>
<template slot-scope="scope">
<span>{{ scope.row.storeName }}</span>
</template>
</el-table-column>
<el-table-column
prop="applyName"
label="医生姓名"
min-width="100"
align="center"
>
</el-table-column>
</template>
<el-table-column
prop="orgName"
label="企业姓名"
min-width="100"
align="center"
>
</el-table-column>
<el-table-column
prop="orgType"
label="企业类型"
min-width="120"
align="center"
>
<template slot-scope="scope">
<span>{{ scope.row.orgType }}</span>
</template>
</el-table-column>
<el-table-column
prop="status"
label="审核状态"
min-width="120"
align="center"
>
<template slot-scope="scope">
<span :class="scope.row.status | typeState">{{
scope.row.status | examineType
}}</span>
<el-tooltip
class="item"
effect="dark"
content="Top Left 提示文字"
placement="top-start"
>
<i class="el-icon-warning-outline no-reviewed"></i>
</el-tooltip>
</template>
</el-table-column>
<el-table-column
prop="applyTime"
label="申请时间"
width="120"
align="center"
>
</el-table-column>
<el-table-column
prop="auditName"
label="审核人"
width="120"
align="center"
>
</el-table-column>
<el-table-column
prop="auditTime"
label="审核时间"
width="120"
align="center"
>
</el-table-column>
<el-table-column
label="操作"
min-width="230"
align="center"
fixed="right"
>
<template slot-scope="scope">
<div class="operation">
<el-button @click="editDetail(scope.row)" type="text" size="small"
>审核</el-button
>
<el-button @click="lookDetail(scope.row)" type="text" size="small"
>查看详情</el-button
>
</div>
</template>
</el-table-column>
</el-table>
<div class="pagination">
<el-pagination
background
@size-change="handleSizeChange"
@current-change="handleNumChange"
:current-page="searchForm.pageNo"
:page-sizes="[10, 30, 50, 100]"
:page-size="searchForm.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="totalRows"
></el-pagination>
</div>
</div>
</div>
</template>
<script>
import { openLoading, closeLoading } from "../../utils/utils";
import BreadCrumb from "@/components/breadcrumb.vue";
import { getCertifyList } from "@/utils/qualification";
export default {
components: {
BreadCrumb,
},
filters: {
examineType(type) {
const obj = {
0: "待审核",
1: "审核通过",
2: "审核不通过",
};
return obj[type];
},
typeState(type) {
const reviewType = ["tobe-reviewed", "success-reviewed", "no-reviewed"];
return reviewType[type];
},
},
data() {
return {
curmbFirst: "首营资质审核",
tabList: [
{ id: 0, name: "全部" },
{ id: 2, name: "待审核" },
{ id: 3, name: "审核成功" },
{ id: 4, name: "审核失败" },
{ id: 5, name: "作废" },
],
searchForm: {
adminMobileStr: "",
adminNameStr: "",
doctorIdStr: "",
doctorNameStr: "",
orgNameStr: "",
orgType: "",
pageNo: 1,
pageSize: 10,
status: 0,
storeNameStr: "",
},
orgList: [
{ id: 1, name: "医疗机构(非营利性)" },
{ id: 2, name: "医疗机构(营利性)" },
{ id: 3, name: "零售-单体药店" },
{ id: 4, name: "零售-连锁药店" },
],
tableData: [
{
id: 1,
storeName: "11",
storeType: 2,
storeStatus: 2,
count: 2,
createdTime: 2,
commissionType: 2,
},
],
pageNo: 1,
pageSize: 10,
totalRows: 0,
};
},
created() {
this.init();
},
methods: {
init() {
const params = {
pageSize: this.pageSize,
pageNo: this.pageNo,
type: Number(this.$route.query.type || 1),
...this.searchForm,
};
getCertifyList(params).then((res) => {
console.log(res);
const { contentList, total } = res.data;
this.tableData = contentList;
this.totalRows = total;
});
},
submitForm() {
this.init();
},
editDetail() {
this.$router.push({path:'/qualification-detail',query:{source:this.$route.query.source}})
},
lookDetail() {},
resetForm() {
(this.searchForm = {
adminMobileStr: "",
adminNameStr: "",
doctorIdStr: "",
doctorNameStr: "",
orgNameStr: "",
orgType: "",
pageNo: this.pageNo,
pageSize: this.pageSize,
status: this.searchForm.status,
storeNameStr: "",
}),
this.init();
},
handleSizeChange(value) {
this.pageSize = value;
this.pageNo = 1;
this.init();
},
handleNumChange(value) {
this.pageNo = value;
this.init();
},
checkTab(item) {
this.searchForm.status = item.id;
this.init();
},
},
};
</script>
<style lang="scss" scope>
.qualification-list {
.qualification-content {
background: #fff;
padding: 10px;
}
.form-btn {
text-align: right;
}
.table {
background-color: #fff;
margin: 10px 30px;
padding: 20px;
.tobe-reviewed {
color: #fac94d;
}
.success-reviewed {
color: #71d60a;
}
.no-reviewed {
color: #e2292a;
}
.tab {
span {
font-weight: bold;
font-size: 18px;
margin-right: 30px;
cursor: pointer;
&.checked {
color: #0d9078;
}
}
}
.operation {
span {
color: #0d9078;
}
}
}
}
</style>
...@@ -7,14 +7,19 @@ ...@@ -7,14 +7,19 @@
<div class="create-shop-content screenSet" id="screenSet"> <div class="create-shop-content screenSet" id="screenSet">
<el-row class="step-content"> <el-row class="step-content">
<el-col :span="20"> <el-col :span="20">
<p class="title">{{curmbSecond}}</p> <p class="title">
<span>
{{curmbSecond}}
</span>
<span v-if="certifyStatus >= 1" class="verify-status" :class="certifyStatusColor" style="margin-left: 20px">{{ certifyStatus | storeStatusFormat}}</span>
</p>
</el-col> </el-col>
<el-col :span="4" style="text-align: right"> <el-col :span="4" style="text-align: right">
<el-button <el-button
size="small" size="small"
type="primary" type="primary"
:disabled="storeData && storeData.tradeStore.storeType == 3" :disabled="disabledFORM || storeData && storeData.tradeStore.storeType == 3"
@click="complete" @click="completeWholeForm"
>完成</el-button >完成</el-button
> >
<el-button size="small" type="primary" @click="back">返回</el-button> <el-button size="small" type="primary" @click="back">返回</el-button>
...@@ -28,7 +33,12 @@ ...@@ -28,7 +33,12 @@
label-suffix=":" label-suffix=":"
class="basic-form" class="basic-form"
style="margin-top: 15px" style="margin-top: 15px"
:disabled="disabledFORM"
inline-message
> >
<div>
<el-tabs v-model="activeTabName" @tab-click="handleTabName">
<el-tab-pane label="基本信息" name="first">
<div class="basic-item-icon"> <div class="basic-item-icon">
<el-form-item label="店铺LOGO" class="required-label"> <el-form-item label="店铺LOGO" class="required-label">
<el-upload <el-upload
...@@ -96,7 +106,7 @@ ...@@ -96,7 +106,7 @@
></el-input> ></el-input>
<span class="word-num" <span class="word-num"
>{{ >{{
formData.storeDescription.replace(/\s+/g, "").length formData.storeDescription ? formData.storeDescription.replace(/\s+/g, "").length : ''
}}/400</span }}/400</span
> >
</el-col> </el-col>
...@@ -108,6 +118,7 @@ ...@@ -108,6 +118,7 @@
size="small" size="small"
clearable clearable
:disabled="isDisabled" :disabled="isDisabled"
@change="storeTypeChange"
style="width: 35%" style="width: 35%"
> >
<el-option <el-option
...@@ -118,7 +129,18 @@ ...@@ -118,7 +129,18 @@
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item>
<el-button class="ml" size="small" type="primary" @click="nextStepFirst('second')">下一步</el-button>
</el-form-item>
</el-tab-pane>
<el-tab-pane label="资质信息" name="second">
<div> <div>
<div v-if="certifyValidDtoList(1)">
<el-form-item>
<div class="red">{{certifyValidDtoList(1)}}</div>
</el-form-item>
</div>
<div v-if="formData.storeType == 1"> <div v-if="formData.storeType == 1">
<el-row> <el-row>
<el-col :span="10"> <el-col :span="10">
...@@ -220,105 +242,6 @@ ...@@ -220,105 +242,6 @@
</el-col> </el-col>
</el-row> </el-row>
</div> </div>
<el-form-item label="营业证明">
<p class="p-tips">
若填写的联系人注册不是法定代表人,请上传委托书<br />
仅支持jpg、png图片文件,且文件小于3M<br />
上传的证件图片内,必须是加盖过红色公章和法人章,否则视为无效
</p>
<div style="display: flex">
<div class="flex-upload">
<el-upload
v-model="formData.imgUrlP1"
class="bg-uploader"
action="#"
:show-file-list="false"
:before-upload="beforeUploadProve1"
>
<img
v-if="formData.imgUrlP1"
:src="formData.imgUrlP1"
@mouseover.stop="imgMouseOverP1 = true"
class="bg-img"
/>
<img
v-if="!formData.imgUrlP1"
class="bg-img"
src="../../assets/image/small.png"
/>
<div
class="img-delete add-left-18"
v-show="imgMouseOverP1"
@click.stop="deleteImg('imgUrlP1')"
@mouseout.stop="imgMouseOverP1 = false"
>
<i class="el-icon-delete"></i>
</div>
</el-upload>
<p class="tips">营业执照</p>
</div>
<div class="flex-upload">
<el-upload
v-model="formData.imgUrlP2"
class="bg-uploader"
action="#"
:show-file-list="false"
:before-upload="beforeUploadProve2"
>
<img
v-if="formData.imgUrlP2"
:src="formData.imgUrlP2"
@mouseover.stop="imgMouseOverP2 = true"
class="bg-img"
/>
<img
v-if="!formData.imgUrlP2"
class="bg-img"
src="../../assets/image/small.png"
/>
<div
class="img-delete add-left-18"
v-show="imgMouseOverP2"
@click.stop="deleteImg('imgUrlP2')"
@mouseout.stop="imgMouseOverP2 = false"
>
<i class="el-icon-delete"></i>
</div>
</el-upload>
<p class="tips">药品经营许可证</p>
</div>
<div class="flex-upload">
<el-upload
v-model="formData.imgUrlP3"
class="bg-uploader"
action="#"
:show-file-list="false"
:before-upload="beforeUploadProve3"
>
<img
v-if="formData.imgUrlP3"
:src="formData.imgUrlP3"
@mouseover.stop="imgMouseOverP3 = true"
class="bg-img"
/>
<img
v-if="!formData.imgUrlP3"
class="bg-img"
src="../../assets/image/small.png"
/>
<div
class="img-delete add-left-18"
v-show="imgMouseOverP3"
@click.stop="deleteImg('imgUrlP3')"
@mouseout.stop="imgMouseOverP3 = false"
>
<i class="el-icon-delete"></i>
</div>
</el-upload>
<p class="tips">委托书</p>
</div>
</div>
</el-form-item>
</div> </div>
<div v-if="formData.storeType == 3"> <div v-if="formData.storeType == 3">
<el-form-item <el-form-item
...@@ -396,35 +319,121 @@ ...@@ -396,35 +319,121 @@
></el-input> ></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24"> </el-row>
<el-form-item label="营业证明"> <!-- <el-form-item-->
<!-- label="医疗资质"-->
<!-- prop="storeQualityUrl"-->
<!-- >-->
<!-- <el-input-->
<!-- size="small"-->
<!-- v-model="formData.storeQualityUrl"-->
<!-- placeholder="请填写URL,仅对批发商品生效"-->
<!-- style="width: 35%"-->
<!-- ></el-input>-->
<!-- </el-form-item>-->
</div>
</div>
<el-form-item
v-if="formData.storeType == 1"
class="required-label"
label="企业类型"
prop="certifyReq.orgType"
>
<el-select
v-model="formData.certifyReq.orgType"
placeholder="请选择企业类型类型"
size="small"
clearable
style="width: 35%"
>
<el-option
v-for="(item, index) in orgLIST"
:key="index"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item
v-if="formData.storeType == 1"
label="企业地区"
class="required-label"
>
<el-cascader
class="regionCascader"
ref="regionCascader"
style="width:35%"
size="small"
:options="optionsRegion"
:props="propsRegion"
@change="handleRegionChange"
:placeholder="orgRegionValueFirst"
></el-cascader>
</el-form-item>
<el-form-item
v-if="formData.storeType == 1"
label="详细地址"
class="required-label"
prop="certifyReq.orgAddress"
>
<el-input
size="small"
v-model="formData.certifyReq.orgAddress"
placeholder="请填写详细地址"
maxlength="100"
style="width: 35%"
></el-input>
</el-form-item>
<el-form-item
v-if="formData.storeType == 1"
label="经营范围"
class="required-label"
prop="certifyReq.bizScope"
>
<el-cascader
v-model="bizScopeCasValue"
ref="cascaderBizScope"
style="width: 360px"
size="small"
:options="orgScopeLIST"
@change="orgScopeLISTChange"
:props="{value: 'id', label: 'name',children: 'list', multiple: true, checkStrictly: false}"
>
</el-cascader>
</el-form-item>
<el-form-item v-if="formData.storeType != 3" class="required-label" label="营业证明">
<p v-if="certifyValidDtoList(2)" class="red">{{certifyValidDtoList(2)}}</p>
<p class="tips">营业执照</p>
<p class="p-tips"> <p class="p-tips">
若填写的联系人注册不是法定代表人,请上传委托书<br /> 仅支持jpg、png图片文件,且文件小于2M<br />
仅支持jpg、png图片文件,且文件小于3M<br />
上传的证件图片内,必须是加盖过红色公章和法人章,否则视为无效 上传的证件图片内,必须是加盖过红色公章和法人章,否则视为无效
</p> </p>
<div style="display: flex"> <div>
<div class="flex-upload"> <div>
<el-form-item prop="imgUrlC1" ref="imgUrlC1">
<el-upload <el-upload
v-model="formData.imgUrlC1" v-model="formData.imgUrlC1"
:disabled="Boolean(formData.imgUrlC1)"
class="bg-uploader" class="bg-uploader"
action="#" action="#"
:show-file-list="false" :show-file-list="false"
:before-upload="beforeUploadC1" :before-upload="(file) => {this.beforeUploadOrg(file, 'imgUrlC1')}"
> >
<img <el-image
class="bg-img"
v-if="formData.imgUrlC1" v-if="formData.imgUrlC1"
:src="formData.imgUrlC1" :src="formData.imgUrlC1"
@mouseover.stop="imgMouseOverC1 = true" @mouseover.stop="imgMouseOverC1 = true"
class="bg-img" :preview-src-list="[formData.imgUrlC1]">
/> </el-image>
<img <img
v-if="!formData.imgUrlC1" v-if="!formData.imgUrlC1"
class="bg-img" class="bg-img"
src="../../assets/image/small.png" src="../../assets/image/small.png"
/> />
<div <div
class="img-delete add-left-18" class="img-delete"
v-show="imgMouseOverC1" v-show="imgMouseOverC1"
@click.stop="deleteImg('imgUrlC1')" @click.stop="deleteImg('imgUrlC1')"
@mouseout.stop="imgMouseOverC1 = false" @mouseout.stop="imgMouseOverC1 = false"
...@@ -432,88 +441,718 @@ ...@@ -432,88 +441,718 @@
<i class="el-icon-delete"></i> <i class="el-icon-delete"></i>
</div> </div>
</el-upload> </el-upload>
<p class="tips">营业执照</p> </el-form-item>
<div v-if="formData.storeType == 1" class="img-data">
<el-form-item
label="企业名称"
label-width="100px"
prop="certifyReq.orgName"
>
<el-input
size="small"
placeholder="请输入"
v-model="formData.certifyReq.orgName"
></el-input>
</el-form-item>
<el-form-item
label="信用代码"
prop="certifyReq.creditCode"
>
<el-input
size="small"
placeholder="请输入"
v-model="formData.certifyReq.creditCode"
></el-input>
</el-form-item>
<el-form-item
label="有效日期"
prop="imgUrlC1Date"
>
<el-date-picker
v-model="formData.imgUrlC1Date"
@change="(v) => {this.orgDate(v, 'imgUrlC1')}"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
</div> </div>
<div class="flex-upload"> </div>
<el-form-item v-if="formData.storeType == 1" label="认证类型" label-width="100px">
<el-radio-group v-model="formData.certifyReq.certType" >
<el-radio :label="1">法人认证</el-radio>
<el-radio :label="2">委托人认证</el-radio>
</el-radio-group>
</el-form-item>
<div v-if="formData.certifyReq.certType == 2">
<p v-if="certifyValidDtoList(4)" class="red">{{certifyValidDtoList(4)}}</p>
<div v-if="formData.storeType == 1">
<div>委托人身份证</div>
<div class="flex-wrap">
<el-form-item prop="imgUrlC4" ref="fIdCard">
<el-upload <el-upload
v-model="formData.imgUrlC2" v-model="formData.imgUrlC4"
:disabled="Boolean(formData.imgUrlC4)"
class="bg-uploader"
action="#"
:show-file-list="false"
:before-upload="(file) => {this.beforeUploadOrg(file, 'imgUrlC4')}"
>
<el-image
class="bg-img"
v-if="formData.imgUrlC4"
:src="formData.imgUrlC4"
@mouseover.stop="imgMouseOverC4 = true"
:preview-src-list="[formData.imgUrlC4]">
</el-image>
<img
v-if="!formData.imgUrlC4"
class="bg-img"
src="../../assets/image/small.png"
/>
<div
class="img-delete"
v-show="imgMouseOverC4"
@click.stop="deleteImg('imgUrlC4')"
@mouseout.stop="imgMouseOverC4 = false"
>
<i class="el-icon-delete"></i>
</div>
</el-upload>
</el-form-item>
<el-form-item prop="imgUrlC5" ref="fIdCardBack">
<el-upload
:disabled="Boolean(formData.imgUrlC5)"
v-model="formData.imgUrlC5"
class="bg-uploader"
action="#"
:show-file-list="false"
:before-upload="(file) => {this.beforeUploadOrg(file, 'imgUrlC5')}"
>
<el-image
class="bg-img"
v-if="formData.imgUrlC5"
:src="formData.imgUrlC5"
@mouseover.stop="imgMouseOverC5 = true"
:preview-src-list="[formData.imgUrlC5]">
</el-image>
<img
v-if="!formData.imgUrlC5"
class="bg-img"
src="../../assets/image/small.png"
/>
<div
class="img-delete"
v-show="imgMouseOverC5"
@click.stop="deleteImg('imgUrlC5')"
@mouseout.stop="imgMouseOverC5 = false"
>
<i class="el-icon-delete"></i>
</div>
</el-upload>
</el-form-item>
</div>
<div class="img-data">
<el-form-item
label="委托人姓名"
label-width="100px"
prop="certifyReq.assignorName"
>
<el-input
v-model="formData.certifyReq.assignorName"
size="small"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item
label="证件号码"
prop="certifyReq.assignorCertNo"
>
<el-input
size="small"
placeholder="请输入"
v-model="formData.certifyReq.assignorCertNo"
></el-input>
</el-form-item>
<el-form-item
label="有效日期"
prop="imgUrlC5Date"
>
<el-date-picker
v-model="formData.imgUrlC5Date"
@change="(v) => {this.orgDate(v, 'imgUrlC5')}"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
</div>
</div>
</div>
<div v-if="formData.certifyReq.certType == 2|| formData.storeType == 2 " class="flex-upload">
<p v-if="certifyValidDtoList(5)" class="red">{{certifyValidDtoList(5)}}</p>
<div class="required-star" >委托书</div>
<el-form-item prop="imgUrlP5" ref="pIdCardBack">
<el-upload
:disabled="Boolean(formData.imgUrlP5)"
v-model="formData.imgUrlP5"
class="bg-uploader" class="bg-uploader"
action="#" action="#"
:show-file-list="false" :show-file-list="false"
:before-upload="beforeUploadC2" :before-upload="(file) => {this.beforeUploadProve(file, 'imgUrlP5')}"
> >
<el-image
class="bg-img"
v-if="formData.imgUrlP5"
:src="formData.imgUrlP5"
@mouseover.stop="imgMouseOverP5 = true"
:preview-src-list="[formData.imgUrlP5]">
</el-image>
<img <img
v-if="!formData.imgUrlP5"
class="bg-img"
src="../../assets/image/small.png"
/>
<div
class="img-delete"
v-show="imgMouseOverP5"
@click.stop="deleteImg('imgUrlP5')"
@mouseout.stop="imgMouseOverP5 = false"
>
<i class="el-icon-delete"></i>
</div>
</el-upload>
</el-form-item>
</div>
<div v-if="formData.storeType == 1 && formData.certifyReq.certType === 1">
<p v-if="certifyValidDtoList(6)" class="red">{{certifyValidDtoList(6)}}</p>
<div>法人身份证</div>
<div class="flex-wrap">
<el-form-item prop="imgUrlC2" ref="idCard">
<el-upload
:disabled="Boolean(formData.imgUrlC2)"
v-model="formData.imgUrlC2"
class="bg-uploader"
action="#"
:show-file-list="false"
:before-upload="(file) => {this.beforeUploadOrg(file, 'imgUrlC2')}"
>
<el-image
class="bg-img"
v-if="formData.imgUrlC2" v-if="formData.imgUrlC2"
:src="formData.imgUrlC2" :src="formData.imgUrlC2"
@mouseover.stop="imgMouseOverC2 = true" @mouseover.stop="imgMouseOverC2 = true"
:preview-src-list="[formData.imgUrlC2]">
</el-image>
<img
v-if="!formData.imgUrlC2"
class="bg-img" class="bg-img"
src="../../assets/image/small.png"
/> />
<div
class="img-delete"
v-show="imgMouseOverC2"
@click.stop="deleteImg('imgUrlC2')"
@mouseout.stop="imgMouseOverC2 = false"
>
<i class="el-icon-delete"></i>
</div>
<div>身份证正面</div>
</el-upload>
</el-form-item>
<el-form-item prop="imgUrlC3" ref="idCardBack">
<el-upload
:disabled="Boolean(formData.imgUrlC3)"
v-model="formData.imgUrlC3"
class="bg-uploader"
action="#"
:show-file-list="false"
:before-upload="(file) => {this.beforeUploadOrg(file, 'imgUrlC3')}"
>
<el-image
class="bg-img"
v-if="formData.imgUrlC3"
:src="formData.imgUrlC3"
@mouseover.stop="imgMouseOverC3 = true"
:preview-src-list="[formData.imgUrlC3]">
</el-image>
<img
v-if="!formData.imgUrlC3"
class="bg-img"
src="../../assets/image/small.png"
/>
<div
class="img-delete"
v-show="imgMouseOverC3"
@click.stop="deleteImg('imgUrlC3')"
@mouseout.stop="imgMouseOverC3 = false"
>
<i class="el-icon-delete"></i>
</div>
<div>身份证反面</div>
</el-upload>
</el-form-item>
<el-form-item>
<div v-show="idCardError" style="color:#F56C6C">身份证内容识别失败,请手动输入</div>
</el-form-item>
</div>
<div class="img-data">
<el-form-item
label="法人姓名"
label-width="100px"
prop="certifyReq.legalName"
>
<el-input
size="small"
placeholder="请输入"
v-model="formData.certifyReq.legalName"
></el-input>
</el-form-item>
<el-form-item
label="证件号码"
prop="certifyReq.legalCertNo"
>
<el-input
size="small"
placeholder="请输入"
v-model="formData.certifyReq.legalCertNo"
></el-input>
</el-form-item>
<el-form-item
label="有效日期"
prop="imgUrlC3Date"
>
<el-date-picker
v-model="formData.imgUrlC3Date"
@change="(v) => {this.orgDate(v, 'imgUrlC3')}"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
</div>
</div>
<div v-if="formData.storeType == 1 && formData.certifyReq.certType === 2">
<p v-if="certifyValidDtoList(6)" class="red">{{certifyValidDtoList(6)}}</p>
<div>法人身份证</div>
<div class="flex-wrap">
<el-form-item ref="idCard">
<el-upload
:disabled="Boolean(formData.imgUrlC2)"
v-model="formData.imgUrlC2"
class="bg-uploader"
action="#"
:show-file-list="false"
:before-upload="(file) => {this.beforeUploadOrg(file, 'imgUrlC2')}"
>
<el-image
class="bg-img"
v-if="formData.imgUrlC2"
:src="formData.imgUrlC2"
@mouseover.stop="imgMouseOverC2 = true"
:preview-src-list="[formData.imgUrlC2]">
</el-image>
<img <img
v-if="!formData.imgUrlC2" v-if="!formData.imgUrlC2"
class="bg-img" class="bg-img"
src="../../assets/image/small.png" src="../../assets/image/small.png"
/> />
<div <div
class="img-delete add-left-18" class="img-delete"
v-show="imgMouseOverC2" v-show="imgMouseOverC2"
@click.stop="deleteImg('imgUrlC2')" @click.stop="deleteImg('imgUrlC2')"
@mouseout.stop="imgMouseOverC2 = false" @mouseout.stop="imgMouseOverC2 = false"
> >
<i class="el-icon-delete"></i> <i class="el-icon-delete"></i>
</div> </div>
<div>身份证正面</div>
</el-upload> </el-upload>
</el-form-item>
<el-form-item ref="idCardBack">
<el-upload
:disabled="Boolean(formData.imgUrlC3)"
v-model="formData.imgUrlC3"
class="bg-uploader"
action="#"
:show-file-list="false"
:before-upload="(file) => {this.beforeUploadOrg(file, 'imgUrlC3')}"
>
<el-image
class="bg-img"
v-if="formData.imgUrlC3"
:src="formData.imgUrlC3"
@mouseover.stop="imgMouseOverC3 = true"
:preview-src-list="[formData.imgUrlC3]">
</el-image>
<img
v-if="!formData.imgUrlC3"
class="bg-img"
src="../../assets/image/small.png"
/>
<div
class="img-delete"
v-show="imgMouseOverC3"
@click.stop="deleteImg('imgUrlC3')"
@mouseout.stop="imgMouseOverC3 = false"
>
<i class="el-icon-delete"></i>
</div>
<div>身份证反面</div>
</el-upload>
</el-form-item>
<el-form-item>
<div v-show="idCardError" style="color:#F56C6C">身份证内容识别失败,请手动输入</div>
</el-form-item>
</div>
<div class="img-data">
<el-form-item
label="法人姓名"
label-width="100px"
>
<el-input
size="small"
placeholder="请输入"
v-model="formData.certifyReq.legalName"
></el-input>
</el-form-item>
<el-form-item
label="证件号码"
>
<el-input
size="small"
placeholder="请输入"
v-model="formData.certifyReq.legalCertNo"
></el-input>
</el-form-item>
<el-form-item
label="有效日期"
>
<el-date-picker
v-model="formData.imgUrlC3Date"
@change="(v) => {this.orgDate(v, 'imgUrlC3')}"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
</div>
</div>
<div class="line-section"></div>
</div>
</el-form-item>
<el-form-item label="资质信息" class="required-label" v-if="formData.storeType < 3">
<div v-if="controlLicense.filter((i => { return String(i).charAt(0) == '1'; })).length > 0 || formData.storeType == 2">
<p v-if="certifyValidDtoList(7)" class="red">{{certifyValidDtoList(7)}}</p>
<p class="tips">药品经营许可证</p> <p class="tips">药品经营许可证</p>
<el-form-item prop="imgUrlP7">
<el-upload
:disabled="Boolean(formData.imgUrlP7)"
v-model="formData.imgUrlP7"
class="bg-uploader"
action="#"
:show-file-list="false"
:before-upload="(file) => {this.beforeUploadProve(file, 'imgUrlP7')}"
>
<el-image
class="bg-img"
v-if="formData.imgUrlP7"
:src="formData.imgUrlP7"
@mouseover.stop="imgMouseOverP7 = true"
:preview-src-list="[formData.imgUrlP7]">
</el-image>
<img
v-if="!formData.imgUrlP7"
class="bg-img"
src="../../assets/image/small.png"
/>
<div
class="img-delete"
v-show="imgMouseOverP7"
@click.stop="deleteImg('imgUrlP7')"
@mouseout.stop="imgMouseOverP7 = false"
>
<i class="el-icon-delete"></i>
</div>
</el-upload>
</el-form-item>
<el-form-item
v-if="formData.storeType == 1"
label="有效日期"
label-width="100px"
prop="imgUrlP7Date"
>
<el-date-picker
v-model="formData.imgUrlP7Date"
@change="(v) => {this.orgDate(v, 'imgUrlP7')}"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
</div>
<!-- <div v-if="controlLicense.includes('1')">-->
<!-- <p v-if="certifyValidDtoList(8)" class="red">{{certifyValidDtoList(8)}}</p>-->
<!-- <p class="tips">药品经营质量管理规范认证证书</p>-->
<!-- <el-form-item prop="imgUrlP8">-->
<!-- <el-upload-->
<!-- :disabled="Boolean(formData.imgUrlP8)"-->
<!-- v-model="formData.imgUrlP8"-->
<!-- class="bg-uploader"-->
<!-- action="#"-->
<!-- :show-file-list="false"-->
<!-- :before-upload="(file) => {this.beforeUploadProve(file, 'imgUrlP8')}"-->
<!-- >-->
<!-- <el-image-->
<!-- class="bg-img"-->
<!-- v-if="formData.imgUrlP8"-->
<!-- :src="formData.imgUrlP8"-->
<!-- @mouseover.stop="imgMouseOverP8 = true"-->
<!-- :preview-src-list="[formData.imgUrlP8]">-->
<!-- </el-image>-->
<!-- <img-->
<!-- v-if="!formData.imgUrlP8"-->
<!-- class="bg-img"-->
<!-- src="../../assets/image/small.png"-->
<!-- />-->
<!-- <div-->
<!-- class="img-delete"-->
<!-- v-show="imgMouseOverP8"-->
<!-- @click.stop="deleteImg('imgUrlP8')"-->
<!-- @mouseout.stop="imgMouseOverP8 = false"-->
<!-- >-->
<!-- <i class="el-icon-delete"></i>-->
<!-- </div>-->
<!-- </el-upload>-->
<!-- </el-form-item>-->
<!-- <el-form-item-->
<!-- label="有效日期"-->
<!-- label-width="100px"-->
<!-- prop="imgUrlP8Date"-->
<!-- >-->
<!-- <el-date-picker-->
<!-- v-model="formData.imgUrlP8Date"-->
<!-- @change="(v) => {this.orgDate(v, 'imgUrlP8')}"-->
<!-- type="daterange"-->
<!-- range-separator="至"-->
<!-- start-placeholder="开始日期"-->
<!-- end-placeholder="结束日期">-->
<!-- </el-date-picker>-->
<!-- </el-form-item>-->
<!-- </div>-->
<div v-if="controlLicense.filter((i => { return String(i).charAt(0) == '3'; })).length > 0">
<p v-if="certifyValidDtoList(9)" class="red">{{certifyValidDtoList(9)}}</p>
<p class="tips">食品经营(流通)许可证</p>
<el-form-item prop="imgUrlP9">
<el-upload
:disabled="Boolean(formData.imgUrlP9)"
v-model="formData.imgUrlP9"
class="bg-uploader"
action="#"
:show-file-list="false"
:before-upload="(file) => {this.beforeUploadProve(file, 'imgUrlP9')}"
>
<el-image
class="bg-img"
v-if="formData.imgUrlP9"
:src="formData.imgUrlP9"
@mouseover.stop="imgMouseOverP9 = true"
:preview-src-list="[formData.imgUrlP9]">
</el-image>
<img
v-if="!formData.imgUrlP9"
class="bg-img"
src="../../assets/image/small.png"
/>
<div
class="img-delete"
v-show="imgMouseOverP9"
@click.stop="deleteImg('imgUrlP9')"
@mouseout.stop="imgMouseOverP9 = false"
>
<i class="el-icon-delete"></i>
</div>
</el-upload>
</el-form-item>
<el-form-item
label="有效日期"
label-width="100px"
prop="imgUrlP9Date"
>
<el-date-picker
v-model="formData.imgUrlP9Date"
@change="(v) => {this.orgDate(v, 'imgUrlP9')}"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
</div>
<div v-if="controlLicense.filter((i => { return String(i).charAt(0) == '2'; })).length > 0">
<p v-if="certifyValidDtoList(10)" class="red">{{certifyValidDtoList(10)}}</p>
<p class="tips">医疗器械经营许可证</p>
<el-form-item prop="imgUrlP10">
<el-upload
:disabled="Boolean(formData.imgUrlP10)"
v-model="formData.imgUrlP10"
class="bg-uploader"
action="#"
:show-file-list="false"
:before-upload="(file) => {this.beforeUploadProve(file, 'imgUrlP10')}"
>
<el-image
class="bg-img"
v-if="formData.imgUrlP10"
:src="formData.imgUrlP10"
@mouseover.stop="imgMouseOverP10 = true"
:preview-src-list="[formData.imgUrlP10]">
</el-image>
<img
v-if="!formData.imgUrlP10"
class="bg-img"
src="../../assets/image/small.png"
/>
<div
class="img-delete"
v-show="imgMouseOverP10"
@click.stop="deleteImg('imgUrlP10')"
@mouseout.stop="imgMouseOverP10 = false"
>
<i class="el-icon-delete"></i>
</div>
</el-upload>
</el-form-item>
<el-form-item
label="有效日期"
label-width="100px"
prop="imgUrlP10Date"
>
<el-date-picker
v-model="formData.imgUrlP10Date"
@change="(v) => {this.orgDate(v, 'imgUrlP10')}"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
</div>
<div v-if="controlLicense.filter((i => { return String(i).charAt(0) == '2' && String(i).charAt(3) == '3'; })).length > 0">
<p class="tips">医疗器械网络销售备案</p>
<el-form-item prop="imgUrlP13">
<el-upload
:disabled="Boolean(formData.imgUrlP13)"
v-model="formData.imgUrlP13"
class="bg-uploader"
action="#"
:show-file-list="false"
:before-upload="(file) => {this.beforeUploadProve(file, 'imgUrlP13')}"
>
<el-image
class="bg-img"
v-if="formData.imgUrlP13"
:src="formData.imgUrlP13"
@mouseover.stop="imgMouseOverP13 = true"
:preview-src-list="[formData.imgUrlP13]">
</el-image>
<img
v-if="!formData.imgUrlP13"
class="bg-img"
src="../../assets/image/small.png"
/>
<div
class="img-delete"
v-show="imgMouseOverP13"
@click.stop="deleteImg('imgUrlP13')"
@mouseout.stop="imgMouseOverP13 = false"
>
<i class="el-icon-delete"></i>
</div>
</el-upload>
</el-form-item>
<el-form-item
label="有效日期"
label-width="100px"
prop="imgUrlP13Date"
>
<el-date-picker
v-model="formData.imgUrlP13Date"
@change="(v) => {this.orgDate(v, 'imgUrlP13')}"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
</div> </div>
<div class="flex-upload"> <div v-if="controlLicense.filter((i => { return String(i).charAt(0) == '2' && String(i).charAt(3) == '2'; })).length > 0">
<p v-if="certifyValidDtoList(11)" class="red">{{certifyValidDtoList(11)}}</p>
<p class="tips">二类医疗器械经营备案凭证</p>
<el-form-item prop="imgUrlP11">
<el-upload <el-upload
v-model="formData.imgUrlC3" :disabled="Boolean(formData.imgUrlP11)"
v-model="formData.imgUrlP11"
class="bg-uploader" class="bg-uploader"
action="#" action="#"
:show-file-list="false" :show-file-list="false"
:before-upload="beforeUploadC3" :before-upload="(file) => {this.beforeUploadProve(file, 'imgUrlP11')}"
> >
<img <el-image
v-if="formData.imgUrlC3"
:src="formData.imgUrlC3"
@mouseover.stop="imgMouseOverC3 = true"
class="bg-img" class="bg-img"
/> v-if="formData.imgUrlP11"
:src="formData.imgUrlP11"
@mouseover.stop="imgMouseOverP11 = true"
:preview-src-list="[formData.imgUrlP11]">
</el-image>
<img <img
v-if="!formData.imgUrlC3" v-if="!formData.imgUrlP11"
class="bg-img" class="bg-img"
src="../../assets/image/small.png" src="../../assets/image/small.png"
/> />
<div <div
class="img-delete add-left-18" class="img-delete"
v-show="imgMouseOverC3" v-show="imgMouseOverP11"
@click.stop="deleteImg('imgUrlC3')" @click.stop="deleteImg('imgUrlP11')"
@mouseout.stop="imgMouseOverC3 = false" @mouseout.stop="imgMouseOverP11 = false"
> >
<i class="el-icon-delete"></i> <i class="el-icon-delete"></i>
</div> </div>
</el-upload> </el-upload>
<p class="tips">委托书</p>
</div>
</div>
</el-form-item> </el-form-item>
</el-col>
</el-row>
</div>
</div>
<el-form-item <el-form-item
label="医疗资质" label="有效日期"
prop="storeQualityUrl" label-width="100px"
prop="imgUrlP11Date"
> >
<el-input <el-date-picker
size="small" v-model="formData.imgUrlP11Date"
v-model="formData.storeQualityUrl" @change="(v) => {this.orgDate(v, 'imgUrlP11')}"
placeholder="请填写URL,仅对批发商品生效" type="daterange"
style="width: 35%" range-separator="至"
></el-input> start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
</div>
</el-form-item> </el-form-item>
<el-form-item label="" prop="storeType">
<el-button class="ml" size="small" @click="nextStepFirst('first')">上一步</el-button>
<el-button class="ml" size="small" type="primary" @click="nextStepFirst('third')">下一步</el-button>
</el-form-item>
</el-tab-pane>
<el-tab-pane v-if="formData.storeType != 3" label="其他设置" name="third">
<el-form-item label="仓库地址管理" prop="selectedKey" class="required-label warehouseAdress-wrap" v-if="formData.storeType < 3"> <el-form-item label="仓库地址管理" prop="selectedKey" class="required-label warehouseAdress-wrap" v-if="formData.storeType < 3">
<p class="warehouseAdress-tip">(该地址用于买家退货时退回地址,请准确填写)</p> <p class="warehouseAdress-tip">(该地址用于买家退货时退回地址,请准确填写)</p>
<el-button type="success" plain class="warehouseAdress-add" size="small" @click="createAdress(0)">+新增地址</el-button> <el-button type="success" class="warehouseAdress-add" size="small" @click="createAdress(0)">+新增地址</el-button>
<el-radio-group v-model="formData.selectedKey" class="warehouseAdress-list"> <el-radio-group v-model="formData.selectedKey" class="warehouseAdress-list">
<el-radio :label="addressItem.key" class="warehouseAdress-item" v-for="(addressItem, index) of formData.repotList" :key="index"> <el-radio :label="addressItem.key" class="warehouseAdress-item" v-for="(addressItem, index) of formData.repotList" :key="index">
<span>默认</span> <span>默认</span>
...@@ -523,7 +1162,8 @@ ...@@ -523,7 +1162,8 @@
<span class="warehouseAdress-msg">{{setAddress(addressItem)}}</span> <span class="warehouseAdress-msg">{{setAddress(addressItem)}}</span>
</span> </span>
<span class="warehouseAdress-do"> <span class="warehouseAdress-do">
<span @click.prevent="createAdress(1,index)">编辑</span><span @click.prevent="deleteAdress(index)">删除</span> <el-button class="btn-small" @click.prevent="createAdress(1,index)">编辑</el-button>
<el-button class="btn-small" @click.prevent="deleteAdress(index)">删除</el-button>
</span> </span>
</el-radio> </el-radio>
</el-radio-group> </el-radio-group>
...@@ -566,6 +1206,12 @@ ...@@ -566,6 +1206,12 @@
</el-row> </el-row>
<p class="p-tips"><i class="el-icon-warning-outline"></i>该文字会在云鹊医App买家退货处显示</p> <p class="p-tips"><i class="el-icon-warning-outline"></i>该文字会在云鹊医App买家退货处显示</p>
</el-form-item> </el-form-item>
<el-form-item label="" prop="storeType">
<el-button class="ml" size="small" @click="nextStepFirst('second')">上一步</el-button>
</el-form-item>
</el-tab-pane>
</el-tabs>
</div>
</el-form> </el-form>
<!-- 图片裁剪弹框 --> <!-- 图片裁剪弹框 -->
<el-dialog <el-dialog
...@@ -681,13 +1327,17 @@ ...@@ -681,13 +1327,17 @@
</template> </template>
<script> <script>
import BreadCrumb from "@/components/breadcrumb.vue"; import BreadCrumb from "@/components/breadcrumb.vue";
let vm = null; import dayjs from 'dayjs';
import { openLoading, closeLoading } from "../../utils/utils"; import { openLoading, closeLoading, deepCopy} from "../../utils/utils";
import { doUpload, getFilePath } from "../../utils/qiniu-util"; import { doUpload, getFilePath } from "../../utils/qiniu-util";
import Cropper from "@/components/common/cropper.vue"; import Cropper from "@/components/common/cropper.vue";
import { saveStore, queryStore, getLgCompanyList, getStoreAdressRepot } from "@/utils/shop"; import { saveStore, queryStore, getLgCompanyList, getStoreAdressRepot, OCRStore, idCardOcr, orgOptionList, orgScopeOptionList} from "@/utils/shop";
import { getProvinces, getCities, getCounties, getTowns } from '@/utils/base/baseApi'; import { getProvinces, getCities, getCounties, getTowns } from '@/utils/base/baseApi';
import { checkMobile } from "@/utils/patients/checkValid"; import { checkMobile } from "@/utils/patients/checkValid";
import * as operationData from "../../utils/operation";
import storejs from 'storejs'
let vm = null;
// 图片type:1: 公司信息,2:营业执照,3:上一年年度报告,4:委托人身份证照片,5:委托书,6:法人身份证照片,7:药品经营许可证,8:药品经营质量管理规范认证证书,9:食品经营许可证,10:医疗器械经营许可证,11:二级医疗器械经营备案凭证,12:事业单位法人证")
export default { export default {
components: { components: {
BreadCrumb, BreadCrumb,
...@@ -704,6 +1354,10 @@ export default { ...@@ -704,6 +1354,10 @@ export default {
} }
}; };
return { return {
bizScopeCasValue: [],
disabledFORM: false,
controlLicense: [],
activeTabName:'first',
curmbFirst: "云鹊店铺", curmbFirst: "云鹊店铺",
curmbSecond: "新建店铺", curmbSecond: "新建店铺",
isDisabled: false, isDisabled: false,
...@@ -722,6 +1376,8 @@ export default { ...@@ -722,6 +1376,8 @@ export default {
value: 3, value: 3,
}, },
], ],
licenseDate: '',
orgRegionValueFirst: '请选择地区',
formData: { formData: {
storeId: null, storeId: null,
userId: null, userId: null,
...@@ -742,9 +1398,14 @@ export default { ...@@ -742,9 +1398,14 @@ export default {
], //供货商-管理员信息 ], //供货商-管理员信息
compainName: "", //供货商-入驻企业名称 compainName: "", //供货商-入驻企业名称
phoneNum: "", //供货商-联系电话 phoneNum: "", //供货商-联系电话
imgUrlP1: "", //证明图1 imgUrlP5: "", //证明图1
imgUrlP2: "", //证明图2 imgUrlP8: "", //证明图2
imgUrlP3: "", //证明图3 imgUrlP9: "", //证明图3
imgUrlP10: "", //证明图4
imgUrlP11: "", //证明图5
imgUrlP13: "", //证明图5
imgUrlP6: "", //证明图6
imgUrlP7: "", //证明图7
docName: "", //医生小店-医生姓名 docName: "", //医生小店-医生姓名
docPhone: "", //医生小店-联系电话 docPhone: "", //医生小店-联系电话
drugstoreName: "", //小药房-药店名称 drugstoreName: "", //小药房-药店名称
...@@ -752,24 +1413,43 @@ export default { ...@@ -752,24 +1413,43 @@ export default {
imgUrlC1: "", //证明图1 imgUrlC1: "", //证明图1
imgUrlC2: "", //证明图2 imgUrlC2: "", //证明图2
imgUrlC3: "", //证明图3 imgUrlC3: "", //证明图3
imgUrlC4: "",
imgUrlC5: "",
imgUrlP5Date: '',
imgUrlP6Date: '',
imgUrlP11Date: '',
imgUrlP13Date: '',
imgUrlP10Date: '',
imgUrlP9Date: '',
imgUrlP8Date: '',
imgUrlP7Date: '',
imgUrlC3Date:'',
imgUrlC5Date:'',
imgUrlC1Date:'',
repotList:[//仓库地址 repotList:[//仓库地址
// {
// addr: "asdasd",
// cityId: 130300000000,
// cityName: "秦皇岛市",
// countyId: 130306000000,
// countyName: "抚宁县",
// key: 0,
// provinceId: 130,
// provinceName: "河北省",
// receiver: "河北省河北省河北省河北省河北省河北省河北省河北省河北省河北省河北省河北省",
// receiverMobile: "13889873718"
// }
], ],
selectedKey: '', //默认收货地址 selectedKey: '', //默认收货地址
expressLimitFlag: 0, //是否限制物流公司 expressLimitFlag: 0, //是否限制物流公司
repotExpressList:[], //支持的物流公司 repotExpressList:[], //支持的物流公司
expressDesc: '' //退款说明 expressDesc: '', //退款说明
certifyReq:{
areaStr: [],
orgType: '',
orgName:'',
legalName:'',
licenseUrl:'',
legalCertNo:'',
licenseValidDateBegin:'',
licenseValidDateEnd:'',
licenseType: 1,
certType: 1,
creditCode:'',
assignorLetterUrl:'',
bizScope:'',
certifyLicenseImgList: [],
assignorName:'',
assignorCertNo:''
},
}, },
cpmList: [], //所有的物流公司 cpmList: [], //所有的物流公司
warehouseAdressType: 0, // 0为新建地址,1为编辑地址 warehouseAdressType: 0, // 0为新建地址,1为编辑地址
...@@ -915,43 +1595,219 @@ export default { ...@@ -915,43 +1595,219 @@ export default {
repotExpressList: [ repotExpressList: [
{ required: true, message: "请选择物流公司名称", trigger: "change" }, { required: true, message: "请选择物流公司名称", trigger: "change" },
], ],
'certifyReq.orgType':[{required: true, message: '请填企业类型', trigger: 'blur'}], //有多条校验条件的时候可以放个ob
'certifyReq.orgAddress':[{type: "string", required: true, message: '请填写详细地址', trigger: 'blur'}],
'certifyReq.bizScope':[{type: "array", required: true, message: '请选择经营范围', trigger: 'change'}],
'certifyReq.orgName':[{type: "string", required: true, message: '请输入企业名称', trigger: 'change'}],
'certifyReq.creditCode':[{type: "string", required: true, message: '请输入信用代码', trigger: 'change'}],
imgUrlC1Date:[{type: "array", required: true, message: '请选择有效日期', trigger: 'blur'}],
'certifyReq.assignorName':[{type: "string", required: true, message: '请输入委托人姓名', trigger: 'change'}],
'certifyReq.assignorCertNo':[{type: "string", required: true, message: '请输入证件号码', trigger: 'change'}],
imgUrlC5Date:[{type: "array", required: true, message: '请选择有效日期', trigger: 'change'}],
'certifyReq.legalName':[{type: "string", required: true, message: '请输入法人姓名', trigger: 'change'}],
'certifyReq.legalCertNo':[{type: "string", required: true, message: '请输入证件号码', trigger: 'change'}],
imgUrlC3Date:[{type: "array", required: true, message: '请选择有效日期', trigger: 'change'}],
imgUrlP5:[{type: "string", required: true, message: '请上传图片', trigger: 'change'}],
imgUrlP5Date:[{type: "array", required: true, message: '请选择有效日期', trigger: 'change'}],
imgUrlP8:[{type: "string", required: true, message: '请上传图片', trigger: 'change'}],
imgUrlP9:[{type: "string", required: true, message: '请上传图片', trigger: 'change'}],
imgUrlP10:[{type: "string", required: true, message: '请上传图片', trigger: 'change'}],
imgUrlP11:[{type: "string", required: true, message: '请上传图片', trigger: 'change'}],
imgUrlP13:[{type: "string", required: true, message: '请上传图片', trigger: 'change'}],
imgUrlP6:[{type: "string", required: true, message: '请上传图片', trigger: 'change'}],
imgUrlP7:[{type: "string", required: true, message: '请上传图片', trigger: 'change'}],
imgUrlC1:[{type: "string", required: true, message: '请上传图片', trigger: 'change'}],
imgUrlC2:[{type: "string", required: true, message: '请上传图片', trigger: 'change'}],
imgUrlC3:[{type: "string", required: true, message: '请上传图片', trigger: 'change'}],
imgUrlC4:[{type: "string", required: true, message: '请上传图片', trigger: 'change'}],
imgUrlC5:[{type: "string", required: true, message: '请上传图片', trigger: 'change'}],
imgUrlP8Date:[{type: "array", required: true, message: '请选择有效日期', trigger: 'change'}],
imgUrlP9Date:[{type: "array", required: true, message: '请选择有效日期', trigger: 'change'}],
imgUrlP10Date:[{type: "array", required: true, message: '请选择有效日期', trigger: 'change'}],
imgUrlP11Date:[{type: "array", required: true, message: '请选择有效日期', trigger: 'change'}],
imgUrlP13Date:[{type: "array", required: true, message: '请选择有效日期', trigger: 'change'}],
imgUrlP6Date:[{type: "array", required: true, message: '请选择有效日期', trigger: 'change'}],
imgUrlP7Date:[{type: "array", required: true, message: '请选择有效日期', trigger: 'change'}],
}, },
imgMouseOver1: false, imgMouseOver1: false,
uploadImgMessage1: false, //未上传图片,校验提示语 uploadImgMessage1: false, //未上传图片,校验提示语
imgMouseOverP1: false, imgMouseOverP5: false,
imgMouseOverP2: false, imgMouseOverP8: false,
imgMouseOverP3: false, imgMouseOverP9: false,
imgMouseOverP10: false,
imgMouseOverP11: false,
imgMouseOverP13: false,
imgMouseOverP6: false,
imgMouseOverP7: false,
imgMouseOverC1: false, imgMouseOverC1: false,
imgMouseOverC2: false, imgMouseOverC2: false,
imgMouseOverC3: false, imgMouseOverC3: false,
addItemFlag: true, imgMouseOverC4: false,
enterType: 1, imgMouseOverC5: false,
optionsRegion: [],
propsRegion: {
lazy: true,
lazyLoad(node, resolve) {
console.log("node", node);
if (node.level == 1) {
let req = {
provinceId: node.data.value
};
vm.GET("basic-data/position/cities", req).then(res => {
let newData = vm.setMoreOption(res.data.cityList, "cities");
resolve(newData);
});
} else if (node.level == 2) {
let req = {
cityId: node.data.value
};
vm.GET("basic-data/position/counties", req).then(res => {
let newData = vm.setMoreOption(res.data.countyList, "counties");
resolve(newData);
});
} else if (node.level == 3) {
let req = {
countyId: node.data.value
};
vm.GET("basic-data/position/towns", req).then(res => {
let newData = vm.setMoreOption(res.data.townList, "towns");
resolve(newData);
});
}
}
},
orgLIST: [
{
id: 5,
intro: "生产企业",
name: "生产企业",
},
{
id: 6,
intro: "商业公司",
name: "商业公司",
}
],
orgScopeLIST:[],
certifyStatus: '',
idCardError:false,
}; };
}, },
watch: {}, computed: {
certifyStatusColor () {
return `certifyStatusColor${this.certifyStatus}`;
}
},
watch: {
},
created() { created() {
vm = this; vm = this;
this.formData.storeId = this.$route.query.storeId || null; this.activeTabName = this.$route.query.currentTab || 'first';
// this.storeData = this.$route.query.storeData || null; this.certifyStatus = this.$route.query.certifyStatus || null;
this.getProvincesList(); this.disabledFORM = this.$route.query.disabled == 'false' ? false : true;
this.getCompanyList(); this.getCompanyList();
if (this.formData.storeId) { this.initDataLoading();
},
methods: {
async initDataLoading () {
const q = await this.getProvincesList();
const w = await this.getRegionOption();
const e = await this.orgOptionList();
if(q && w && e){
const storeId = this.$route.query.storeId || null;
const s = storejs.get('store_info');
if(storeId){
// 编辑 详情
this.curmbSecond = "编辑店铺"; this.curmbSecond = "编辑店铺";
this.isDisabled = true; this.isDisabled = true;
if(this.disabledFORM){
this.formData.storeId = storeId;
storejs.remove('store_info');
this.initInfo(); this.initInfo();
this.getDetail(); this.getDetail();
} else { }else{
if(s && s.storeId == storeId){
this.formData = s;
const {areaStr} = s.certifyReq;
const v = areaStr.map(i => {return i.label;}).join('/');
this.orgRegionValueFirst = v;
this.orgDateReverse();
this.resetImgUrl();
}else{
this.formData.storeId = storeId;
storejs.remove('store_info');
this.initInfo();
this.getDetail();
}
}
}else{
// 新建店铺
storejs.remove('store_info');
this.curmbSecond = "新建店铺"; this.curmbSecond = "新建店铺";
this.isDisabled = false; this.isDisabled = false;
} }
}
},
//日期 设置
orgDateReverse () {
const {licenseValidDateBegin,licenseValidDateEnd,legalValidDateBegin, legalValidDateEnd, assignorValidDateBegin, assignorValidDateEnd} = this.formData.certifyReq;
const {certifyLicenseImgList, certifyReportImgList, bizScope} = this.formData.certifyReq;
this.formData.imgUrlC1Date = [licenseValidDateBegin, licenseValidDateEnd];
this.formData.imgUrlC5Date = [assignorValidDateBegin, assignorValidDateEnd];
this.formData.imgUrlC3Date = [legalValidDateBegin, legalValidDateEnd];
// imgUrlC3Date
const cl = certifyLicenseImgList || [];
(certifyReportImgList || []).concat(cl).map(i => {
const n = `imgUrlP${i.imageType}Date`;
const m = `imgUrlP${i.imageType}`;
this.formData[n] = [i.validDateBegin, i.validDateEnd];
this.formData[m] = i.url;
});
if(bizScope){
const j = [];
bizScope.map( i => {
i.type && j.push(String(i.type) + '__' + i.id,)
})
this.controlLicense = j;
}
},
resetImgUrl () {
// 营业执照 legalCertBackUrl legalCertFrontUrl
const s = this.formData.certifyReq;
this.formData.imgUrlC3 = s.legalCertBackUrl;
this.formData.imgUrlC2 = s.legalCertFrontUrl;
this.formData.imgUrlC1 = s.licenseUrl;
this.formData.imgUrlC5 = s.assignorCertBackUrl;
this.formData.imgUrlC4 = s.assignorCertFrontUrl;
this.formData.imgUrlP5 = s.assignorLetterUrl;
// 反显 经营范围
const f = s.bizScope && s.bizScope.map( d => {
if(d && d.type){
return [String(d.type), d.id];
}
});
this.bizScopeCasValue = f;
}, },
methods: {
getDetail() { getDetail() {
getStoreAdressRepot(this.formData.storeId).then(res => { getStoreAdressRepot(this.formData.storeId).then(res => {
if (res.code == "000000") { if (res.code == "000000" && res.data) {
Object.assign(this.formData,res.data) const l = res.data;
} else { const {areaStr, bizScope} = l.certifyReq;
this.$message.error(res.message); if(areaStr && bizScope){
l.certifyReq.areaStr = JSON.parse(areaStr);
l.certifyReq.bizScope = JSON.parse(bizScope);
Object.assign(this.formData, l);
const v = JSON.parse(areaStr).map(i => {return i.label;}).join('/');
this.orgRegionValueFirst = v;
}
this.orgDateReverse();
this.resetImgUrl();
} }
}) })
}, },
...@@ -972,7 +1828,6 @@ export default { ...@@ -972,7 +1828,6 @@ export default {
this.formData.storeQualityUrl=storeQualityUrl; this.formData.storeQualityUrl=storeQualityUrl;
this.formData.storeDescription = storeDescription; this.formData.storeDescription = storeDescription;
this.formData.storeType = storeType; this.formData.storeType = storeType;
if (storeType == 1) { if (storeType == 1) {
this.formData.compainName = storeOwner; this.formData.compainName = storeOwner;
this.formData.phoneNum = storePhone; this.formData.phoneNum = storePhone;
...@@ -980,19 +1835,24 @@ export default { ...@@ -980,19 +1835,24 @@ export default {
this.storeData.imageList.map((item) => { this.storeData.imageList.map((item) => {
if (item.imageSort == 1) { if (item.imageSort == 1) {
this.supplierImg1 = item; this.supplierImg1 = item;
this.formData.imgUrlP1 = item.imageUrl; this.formData.imgUrlP5 = item.imageUrl;
} else if (item.imageSort == 2) { } else if (item.imageSort == 2) {
this.supplierImg2 = item; this.supplierImg2 = item;
this.formData.imgUrlP2 = item.imageUrl; this.formData.imgUrlP8 = item.imageUrl;
} else if (item.imageSort == 3) { } else if (item.imageSort == 3) {
this.supplierImg3 = item; this.supplierImg3 = item;
this.formData.imgUrlP3 = item.imageUrl; this.formData.imgUrlP9 = item.imageUrl;
} }
}); });
} else { } else {
this.formData.imgUrlP1 = ""; this.formData.imgUrlP5 = "";
this.formData.imgUrlP2 = ""; this.formData.imgUrlP8 = "";
this.formData.imgUrlP3 = ""; this.formData.imgUrlP9 = "";
this.formData.imgUrlP10 = "";
this.formData.imgUrlP11 = "";
this.formData.imgUrlP13 = "";
this.formData.imgUrlP6 = "";
this.formData.imgUrlP7 = "";
} }
//处理管理员数据 //处理管理员数据
if (this.storeData.adminList && this.storeData.adminList.length) { if (this.storeData.adminList && this.storeData.adminList.length) {
...@@ -1012,6 +1872,7 @@ export default { ...@@ -1012,6 +1872,7 @@ export default {
} else if (storeType == 2) { } else if (storeType == 2) {
this.formData.drugstoreName = storeOwner; this.formData.drugstoreName = storeOwner;
this.formData.drugstorePhone = storePhone; this.formData.drugstorePhone = storePhone;
this.formData.certifyReq.certType = 2;
if (this.storeData.imageList && this.storeData.imageList.length) { if (this.storeData.imageList && this.storeData.imageList.length) {
this.storeData.imageList.map((item) => { this.storeData.imageList.map((item) => {
if (item.imageSort == 1) { if (item.imageSort == 1) {
...@@ -1029,6 +1890,8 @@ export default { ...@@ -1029,6 +1890,8 @@ export default {
this.formData.imgUrlC1 = ""; this.formData.imgUrlC1 = "";
this.formData.imgUrlC2 = ""; this.formData.imgUrlC2 = "";
this.formData.imgUrlC3 = ""; this.formData.imgUrlC3 = "";
this.formData.imgUrlC4 = "";
this.formData.imgUrlC5 = "";
} }
} }
}, },
...@@ -1047,26 +1910,49 @@ export default { ...@@ -1047,26 +1910,49 @@ export default {
} }
}); });
}, },
complete() { completeWholeForm() {
let flag = this.submitForm(); let flag = this.submitForm();
if (flag) { if (flag && this.certifyStatus == 3) {
// let para = { this.$confirm('您的店铺已经审核通过,重新提交后需要重新审核。', '确认重新提交店铺信息吗?', {
// storeId: this.formData.storeId, confirmButtonText: '确定',
// userId: this.formData.userId, cancelButtonText: '取消',
// storeLogo: this.formData.storeLogo,//店铺logo type: 'error'
// storeName: this.formData.storeName, }).then(() => {
// storeDescription: this.formData.storeDescription, this.formData.storeType = Number(this.formData.storeType);
// storeType: Number(this.formData.storeType), this.formData.storeEntry = "PCKAIDIAN"; // 添加店铺渠道
// storeOwner:this.formData.storeOwner, const {bizScope, areaStr} = this.formData.certifyReq;
// storePhone: this.formData.storePhone, const result = deepCopy(this.formData);
// imageList: this.formData.imageList, result.certifyReq.bizScope = JSON.stringify(bizScope);
// adminList:this.formData.adminList, result.certifyReq.areaStr = JSON.stringify(areaStr);
// } console.log("提交的数据", result);
saveStore(result).then((res) => {
if (res.code == "000000") {
storejs.remove('store_info');
this.$message.success("操作成功");
this.$router.push({
path: "/shop-list",
});
} else {
this.$message.error(res.message);
}
});
}).catch(() => {
this.$message({
type: 'info',
message: '已取消'
});
});
}else if(flag) {
this.formData.storeType = Number(this.formData.storeType); this.formData.storeType = Number(this.formData.storeType);
this.formData.storeEntry = "PCKAIDIAN"; // 添加店铺渠道 this.formData.storeEntry = "PCKAIDIAN"; // 添加店铺渠道
console.log("提交的数据", this.formData); const {bizScope, areaStr} = this.formData.certifyReq;
saveStore(this.formData).then((res) => { const result = deepCopy(this.formData);
result.certifyReq.areaStr = JSON.stringify(areaStr);
result.certifyReq.bizScope = JSON.stringify(bizScope);
console.log("提交的数据", result);
saveStore(result).then((res) => {
if (res.code == "000000") { if (res.code == "000000") {
storejs.remove('store_info');
this.$message.success("操作成功"); this.$message.success("操作成功");
this.$router.push({ this.$router.push({
path: "/shop-list", path: "/shop-list",
...@@ -1079,16 +1965,17 @@ export default { ...@@ -1079,16 +1965,17 @@ export default {
}, },
// 返回 // 返回
back() { back() {
this.$confirm('返回后您填写的信息将不会被保存。', '确认要返回吗?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'error'
}).then(() => {
this.$router.push({ this.$router.push({
path: "/shop-list", path: "/shop-list",
}); });
}).catch(() => { // this.$confirm('返回后您填写的信息将不会被保存。', '确认要返回吗?', {
}); // confirmButtonText: '确定',
// cancelButtonText: '取消',
// type: 'error'
// }).then(() => {
//
// }).catch(() => {
// });
}, },
checkPhone(val) { checkPhone(val) {
if (!/^1[3456789]\d{9}$/.test(val)) { if (!/^1[3456789]\d{9}$/.test(val)) {
...@@ -1102,16 +1989,16 @@ export default { ...@@ -1102,16 +1989,16 @@ export default {
if (type == 1) { if (type == 1) {
this.formData.storeOwner = this.formData.compainName; this.formData.storeOwner = this.formData.compainName;
this.formData.storePhone = this.formData.phoneNum; this.formData.storePhone = this.formData.phoneNum;
if (this.formData.imgUrlP1) { if (this.formData.imgUrlP5) {
this.supplierImg1.imageUrl = this.formData.imgUrlP1; this.supplierImg1.imageUrl = this.formData.imgUrlP5;
this.formData.imageList.push(this.supplierImg1); this.formData.imageList.push(this.supplierImg1);
} }
if (this.formData.imgUrlP2) { if (this.formData.imgUrlP8) {
this.supplierImg2.imageUrl = this.formData.imgUrlP2; this.supplierImg2.imageUrl = this.formData.imgUrlP8;
this.formData.imageList.push(this.supplierImg2); this.formData.imageList.push(this.supplierImg2);
} }
if (this.formData.imgUrlP3) { if (this.formData.imgUrlP9) {
this.supplierImg3.imageUrl = this.formData.imgUrlP3; this.supplierImg3.imageUrl = this.formData.imgUrlP9;
this.formData.imageList.push(this.supplierImg3); this.formData.imageList.push(this.supplierImg3);
} }
} else if (type == 3) { } else if (type == 3) {
...@@ -1210,7 +2097,7 @@ export default { ...@@ -1210,7 +2097,7 @@ export default {
submitForm() { submitForm() {
let formName = "formData"; let formName = "formData";
let submitFlag = false; let submitFlag = false;
console.log('--this.formData', this.formData);
if (!this.formData.storeLogo) { if (!this.formData.storeLogo) {
this.uploadImgMessage1 = true; this.uploadImgMessage1 = true;
return; return;
...@@ -1226,6 +2113,7 @@ export default { ...@@ -1226,6 +2113,7 @@ export default {
submitFlag = true; submitFlag = true;
} else { } else {
submitFlag = false; submitFlag = false;
this.$message.warning("请完善必填信息!");
} }
}); });
return submitFlag; return submitFlag;
...@@ -1247,7 +2135,6 @@ export default { ...@@ -1247,7 +2135,6 @@ export default {
show: "uploadImgMessage1", show: "uploadImgMessage1",
}; };
this.beforeUploadLogo(file, fileLimit); this.beforeUploadLogo(file, fileLimit);
//this.beforeUpload1(file, fileLimit);
}, },
//上传logo add //上传logo add
beforeUploadLogo(file, fileLimit) { beforeUploadLogo(file, fileLimit) {
...@@ -1269,10 +2156,8 @@ export default { ...@@ -1269,10 +2156,8 @@ export default {
_img.onload = function (theFile) { _img.onload = function (theFile) {
let image = new Image(); let image = new Image();
image.src = theFile.target.result; image.src = theFile.target.result;
//vm.slide2.oriUrl = theFile.target.result;
image.onload = function () { image.onload = function () {
let _this = this; let _this = this;
// if (_this.width != fileLimit.width || _this.height != fileLimit.height) {
let l = _this.width / _this.height; let l = _this.width / _this.height;
if (l != 1) { if (l != 1) {
vm.$message.error("图片宽高比例请控制在1:1"); vm.$message.error("图片宽高比例请控制在1:1");
...@@ -1288,7 +2173,6 @@ export default { ...@@ -1288,7 +2173,6 @@ export default {
1 1
).then(function (path) { ).then(function (path) {
closeLoading(vm); closeLoading(vm);
vm.formData[fileLimit.key] = path.fullPath; vm.formData[fileLimit.key] = path.fullPath;
vm.formData[fileLimit.more] = { vm.formData[fileLimit.more] = {
attachmentName: path.storeName, attachmentName: path.storeName,
...@@ -1302,46 +2186,101 @@ export default { ...@@ -1302,46 +2186,101 @@ export default {
}; };
}, },
setOption(type) { setOption(type) {
// this.currentOption.aspectRatio = 1/1;
// this.currentOption.cropBoxResizable = true;
// this.currentOption.minCropBoxWidth = 160;
// this.currentOption.minCropBoxHeight = 160;
// this.currentOption.currentPic = type;
let fileLimit = { let fileLimit = {
width: "", width: "",
height: "", height: "",
size: 3, size: 3,
sizeText: "3M", sizeText: "3M",
key: type, key: type,
more: "imgUrlP1More", more: "imgUrlP7More",
}; };
return fileLimit; return fileLimit;
}, },
beforeUploadProve1(file) { //日期 设置
let fileLimit = this.setOption("imgUrlP1"); orgDate (v, type) {
this.beforeUpload(file, fileLimit); const b = dayjs(v[0]).format('YYYY-MM-DD');
}, const e = dayjs(v[1]).format('YYYY-MM-DD');
beforeUploadProve2(file) { const l = this.formData.certifyReq.certifyLicenseImgList;
let fileLimit = this.setOption("imgUrlP2"); const t = type.charAt(type.length-1);
this.beforeUpload(file, fileLimit); const t2 = type.charAt(type.length-2);
}, let last;
beforeUploadProve3(file) { if(isNaN(t2)){
let fileLimit = this.setOption("imgUrlP3"); last = t
this.beforeUpload(file, fileLimit); }else{
}, last = t2 + t;
beforeUploadC1(file) { }
let fileLimit = this.setOption("imgUrlC1"); switch (type) {
this.beforeUpload(file, fileLimit); case 'imgUrlC1':
// 营业执照
this.formData.certifyReq.licenseValidDateBegin = b;
this.formData.certifyReq.licenseValidDateEnd = e;
break;
case 'imgUrlC5':
// 委托人身份证
this.formData.certifyReq.assignorValidDateBegin = b;
this.formData.certifyReq.assignorValidDateEnd = e;
break;
case 'imgUrlC3':
// 法人身份证
this.formData.certifyReq.legalValidDateBegin = b;
this.formData.certifyReq.legalValidDateEnd = e;
break;
case 'imgUrlP7':
// 药品经营许可证
case 'imgUrlP8':
// 药品经营质量管理规范认证
case 'imgUrlP9':
// 食品经营(流通)许可证
case 'imgUrlP10':
// 医疗器械经营许可证
case 'imgUrlP11':
// 二类医疗器械经营备案凭证
case 'imgUrlP13':
// 二类医疗器械经营备案凭证
case 'imgUrlP6':
// 委托书
case 'imgUrlP5':
// 年度报告
const r = l.filter( i => {return i.imageType == last})[0] || {};
l.push(Object.assign(r, {validDateBegin: b, validDateEnd: e, imageType: last}));
this.formData.certifyReq.certifyLicenseImgList = this.clearRepeat(l, 'imageType');
break;
default:
return false;
break;
}
}, },
beforeUploadC2(file) { // 资质信息上传
let fileLimit = this.setOption("imgUrlC2"); beforeUploadProve(file, type) {
this.beforeUpload(file, fileLimit); let fileLimit = this.setOption(type);
this.beforeUploadCommon(file, fileLimit);
}, },
beforeUploadC3(file) { // 需要ocr 上传
let fileLimit = this.setOption("imgUrlC3"); beforeUploadOrg(file, type) {
this.beforeUpload(file, fileLimit); let fileLimit = this.setOption(type);
switch (type) {
case 'imgUrlC1':
this.beforeUploadCommon(file, fileLimit, 'licenseFileHandle');
break;
case 'imgUrlC2':
this.beforeUploadCommon(file, fileLimit, 'idCardFileHandle', 1, 'legal');
break;
case 'imgUrlC3':
this.beforeUploadCommon(file, fileLimit, 'idCardFileHandle', 2, 'legal');
break;
case 'imgUrlC4':
this.beforeUploadCommon(file, fileLimit, 'idCardFileHandle', 1, 'assignor');
break;
case 'imgUrlC5':
this.beforeUploadCommon(file, fileLimit, 'idCardFileHandle', 2, 'assignor');
break;
default:
return false;
break;
}
}, },
beforeUpload(file, fileLimit) {
beforeUploadCommon(file, fileLimit, needOCR, isFront, legal) {
let vm = this; let vm = this;
const isJPG = file.type === "image/jpeg"; const isJPG = file.type === "image/jpeg";
const isPNG = file.type === "image/png"; const isPNG = file.type === "image/png";
...@@ -1361,7 +2300,6 @@ export default { ...@@ -1361,7 +2300,6 @@ export default {
image.src = theFile.target.result; image.src = theFile.target.result;
vm.slide2.oriUrl = theFile.target.result; vm.slide2.oriUrl = theFile.target.result;
image.onload = function () { image.onload = function () {
let _this = this;
openLoading(vm); openLoading(vm);
doUpload( doUpload(
vm, vm,
...@@ -1372,108 +2310,193 @@ export default { ...@@ -1372,108 +2310,193 @@ export default {
1 1
).then(function (path) { ).then(function (path) {
closeLoading(vm); closeLoading(vm);
console.log('path--', path, fileLimit);
vm.formData[fileLimit.key] = path.fullPath; vm.formData[fileLimit.key] = path.fullPath;
vm.formData[fileLimit.more] = { vm.formData[fileLimit.more] = {
attachmentName: path.storeName, attachmentName: path.storeName,
attachmentExt: path.ext, attachmentExt: path.ext,
attachmentSize: path.size, attachmentSize: path.size,
}; };
console.log(vm.formData.imgUrlC2,'--------------');
vm.setImgUrl(path, fileLimit);
vm.$message.success("上传成功"); vm.$message.success("上传成功");
}); });
}; };
const fileContent = theFile.currentTarget.result.split('base64,');
const fD = {
file64Str: fileContent[1],
name:file.name
}; };
return isJPG && isLt2M;
}, if(needOCR && needOCR == 'licenseFileHandle'){
//上传图片 vm.licenseFileHandle(fD)
beforeUpload1(file, fileLimit) {
let vm = this;
const isJPG = file.type === "image/jpeg";
const isPNG = file.type === "image/png";
const isLt2M = file.size / 1024 / 1024 < fileLimit.size;
if (!isJPG && !isPNG) {
vm.$message.error("仅支持jpegpng格式");
// return;
}
// if (!isLt2M) {
// vm.$message.error("图片大小不符合规范,请根据规范上传图片 ");
// return;
// }
let _img = new FileReader();
_img.readAsDataURL(file);
_img.onload = function (theFile) {
let image = new Image();
image.src = theFile.target.result;
vm.slide2.oriUrl = theFile.target.result;
image.onload = function () {
let _this = this;
// if (_this.width != fileLimit.width || _this.height != fileLimit.height) {
if (
_this.width < fileLimit.width ||
_this.height < fileLimit.height
) {
vm.$message.error("图片尺寸不符合规范,请根据规范上传图片");
return;
} else if (
_this.width > fileLimit.width ||
_this.height > fileLimit.height
) {
vm.showCropper = true;
vm.currentOption.cvWidth = _this.width;
vm.currentOption.cvHeight = _this.height;
return;
} else {
openLoading(vm);
doUpload(
vm,
file,
getFilePath(file, null),
"preview4",
"progress1",
1
).then(function (path) {
closeLoading(vm);
if (fileLimit.show == "uploadImgMessage1") {
vm.uploadImgMessage1 = false;
} }
vm.formData[fileLimit.key] = path.fullPath; if(needOCR && needOCR == 'idCardFileHandle'){
vm.formData[fileLimit.more] = { vm.idCardFileHandle(fD, isFront, legal)
attachmentName: path.storeName,
attachmentExt: path.ext,
attachmentSize: path.size,
};
vm.$message.success("上传成功");
});
} }
}; };
};
return isJPG && isLt2M; return isJPG && isLt2M;
}, },
setImgUrl (path, fileLimit) {
const l = this.formData.certifyReq.certifyLicenseImgList;
const f = path.fullPath;
const imgName = fileLimit.key;
const u = this.formData[imgName];
const t = imgName.charAt(imgName.length-1);
const t2 = imgName.charAt(imgName.length-2);
let last;
if(isNaN(t2)){
last = t
}else{
last = t2 + t;
}
console.log('imgName', imgName, t, t2, last);
switch (imgName) {
case 'imgUrlC1':
// 营业执照
this.formData.certifyReq.licenseUrl = u;
break;
case 'imgUrlC4':
// 委托人身份证正面
this.formData.certifyReq.assignorCertFrontUrl = u;
break;
case 'imgUrlC5':
// 委托人身份证反面
this.formData.certifyReq.assignorCertBackUrl = u;
break;
case 'imgUrlC2':
// 法人身份证正面
this.formData.certifyReq.legalCertFrontUrl = u;
break;
case 'imgUrlC3':
// 法人身份证反面
this.formData.certifyReq.legalCertBackUrl = u;
break;
case 'imgUrlP5':
// 委托书
this.$refs.pIdCardBack.clearValidate();
this.formData.certifyReq.assignorLetterUrl = u;
break;
case 'imgUrlP7':
// 药品经营许可证
case 'imgUrlP8':
// 药品经营质量管理规范认证
case 'imgUrlP9':
// 食品经营(流通)许可证
case 'imgUrlP10':
// 医疗器械经营许可证
case 'imgUrlP11':
// 二类医疗器械经营备案凭证
case 'imgUrlP13':
// 二类医疗器械经营备案凭证
case 'imgUrlP6':
// 委托书
// 年度报告
const r = l.filter( i => {return i.imageType == last})[0] || {};
l.push(Object.assign(r, {url: f, imageType: last}));
this.formData.certifyReq.certifyLicenseImgList = this.clearRepeat(l, 'imageType');
break;
default:
return false;
break;
}
},
//删除图片 //删除图片
deleteImg(type) { deleteImg(type) {
if(this.disabledFORM){return false;}
vm.formData[type] = ""; vm.formData[type] = "";
const testMouse = new Map() const testMouse = new Map()
.set("storeLogo", "imgMouseOver1") .set("storeLogo", "imgMouseOver1")
.set("imgUrlP1", "imgMouseOverP1") .set("imgUrlP7", "imgMouseOverP7")
.set("imgUrlP2", "imgMouseOverP2") .set("imgUrlP8", "imgMouseOverP8")
.set("imgUrlP3", "imgMouseOverP3") .set("imgUrlP9", "imgMouseOverP9")
.set("imgUrlP10", "imgMouseOverP10")
.set("imgUrlP11", "imgMouseOverP11")
.set("imgUrlP13", "imgMouseOverP13")
.set("imgUrlP6", "imgMouseOverP6")
.set("imgUrlP7", "imgMouseOverP7")
.set("imgUrlC1", "imgMouseOverC1") .set("imgUrlC1", "imgMouseOverC1")
.set("imgUrlC2", "imgMouseOverC2") .set("imgUrlC2", "imgMouseOverC2")
.set("imgUrlC3", "imgMouseOverC3"); .set("imgUrlC3", "imgMouseOverC3")
.set("imgUrlC4", "imgMouseOverC4")
.set("imgUrlC5", "imgMouseOverC5");
function matchType(type) { function matchType(type) {
return testMouse.get(type) || ""; return testMouse.get(type) || "";
} }
let mark = matchType(type); let mark = matchType(type);
vm[mark] = false; vm[mark] = false;
/* if (type == 'storeLogo') { this.deleteImgFormData(type);
vm.imgMouseOver1 = false; },
}else if (type == 'imgUrlP1') { deleteImgFormData (type) {
vm.imgMouseOverP1 = false; const l = this.formData.certifyReq.certifyLicenseImgList;
}else if (type == 'imgUrlP2') { const t = type.charAt(type.length-1);
vm.imgMouseOverP2 = false; switch (type) {
}else if (type == 'imgUrlP3') { case 'imgUrlC1':
vm.imgMouseOverP3 = false; // 营业执照
}*/ this.formData.certifyReq.licenseUrl = '';
break;
case 'imgUrlC4':
// 委托人身份证正面
this.formData.certifyReq.assignorCertFrontUrl = '';
break;
case 'imgUrlC5':
// 委托人身份证反面
this.formData.certifyReq.assignorCertBackUrl = '';
break;
case 'imgUrlC2':
// 法人身份证正面
this.formData.certifyReq.legalCertFrontUrl = '';
break;
case 'imgUrlC3':
// 法人身份证反面
this.formData.certifyReq.legalCertBackUrl = '';
break;
case 'imgUrlP5':
this.formData.certifyReq.assignorLetterUrl = '';
// 委托书
break;
case 'imgUrlP7':
// 药品经营许可证
case 'imgUrlP8':
// 药品经营质量管理规范认证
case 'imgUrlP9':
// 食品经营(流通)许可证
case 'imgUrlP10':
// 医疗器械经营许可证
case 'imgUrlP11':
// 二类医疗器械经营备案凭证
case 'imgUrlP13':
// 二类医疗器械经营备案凭证
case 'imgUrlP6':
// 年度报告
const r = l.filter( i => {return i.imageType != t}) || [];
this.formData.certifyReq.certifyLicenseImgList = r;
break;
default:
return false;
break;
}
},
orgScopeLISTChange(v){
const that = this;
this.$nextTick(() => {
const c = that.$refs['cascaderBizScope'].getCheckedNodes();
const m = c.filter( i => {return !i.hasChildren;}).map(k => {return {...k.data}});
const j = [];
if(m) {
m.map( i => {
i.type && j.push(String(i.type) + '__' + i.id,)
})
this.controlLicense = j;
}
});
const checkedNodes = this.$refs['cascaderBizScope'].getCheckedNodes();
const n = checkedNodes.filter( i => {return !i.hasChildren;}).map(k => {return {...k.data}});
vm.formData.certifyReq.bizScope = n;
this.bizScopeCasValue = v;
}, },
// 获取裁剪的图片数据 // 获取裁剪的图片数据
getCropImg(argument) { getCropImg(argument) {
...@@ -1499,6 +2522,7 @@ export default { ...@@ -1499,6 +2522,7 @@ export default {
}, },
//新增管理员 //新增管理员
addItem(index) { addItem(index) {
if(this.disabledFORM){return false;}
if ( if (
this.formData.adminList != null && this.formData.adminList != null &&
this.formData.adminList.length >= 5 this.formData.adminList.length >= 5
...@@ -1515,6 +2539,7 @@ export default { ...@@ -1515,6 +2539,7 @@ export default {
}, },
//删除管理员 //删除管理员
deleteItem(index) { deleteItem(index) {
if(this.disabledFORM){return false;}
if (this.formData.adminList.length == 1 && index == 0) { if (this.formData.adminList.length == 1 && index == 0) {
this.$message.warning("最少需要1位管理员哦!"); this.$message.warning("最少需要1位管理员哦!");
return; return;
...@@ -1599,13 +2624,58 @@ export default { ...@@ -1599,13 +2624,58 @@ export default {
}, },
//获取省列表 //获取省列表
getProvincesList() { getProvincesList() {
getProvinces() return new Promise((resolve) => {
.then((res) => { getProvinces().then((res) => {
if (res.code == "000000") { if (res.code == "000000") {
this.provincesList = res.data.provinceList; this.provincesList = res.data.provinceList;
resolve(true);
} }
}) })
.catch({}); })
},
//获取地区
getRegionOption() {
return new Promise((resolve) => {
let req = {};
vm.GET("basic-data/position/provinces", req).then(res => {
closeLoading(vm);
if (res.code == "000000") {
const p = operationData.setRegionOption2(res.data.provinceList);
p.map(i => {
if(i.id == 0) {
i.disabled = true
}
});
vm.optionsRegion = p;
resolve(true);
}
});
})
},
orgOptionList () {
return new Promise((resolve) => {
orgOptionList().then(res => {
if(res.code == '000000') {
// this.orgLIST = res.data;
}
});
orgScopeOptionList().then( res => {
if(res.code == '000000') {
const m = [
{id: '1', name: '药品', list: []},
{id: '2', name: '医疗器械', list: []},
{id: '3', name: '食品', list: []},
{id: '4', name: '其他', list: []},
];
m.map(item => {
item.list = res.data.filter(v => v.type == item.id.charAt(0) );
});
this.orgScopeLIST = m;
console.log(this.orgScopeLIST);
}
});
resolve(true);
})
}, },
//获取市列表 //获取市列表
getCitiesList() { getCitiesList() {
...@@ -1734,6 +2804,189 @@ export default { ...@@ -1734,6 +2804,189 @@ export default {
} }
}); });
return Array.from(new Set(segs)); return Array.from(new Set(segs));
},
handleTabName() {
const {query} = this.$route;
storejs.set('store_info', this.formData);
const s = {...query, currentTab: this.activeTabName};
vm.$router.push({ path: "create-shop", query: s});
},
nextStepFirst(v) {
const {query} = this.$route;
storejs.set('store_info', this.formData);
this.activeTabName = v;
const s = {...query, currentTab: this.activeTabName};
vm.$router.push({ path: "create-shop", query: s});
},
handleRegionChange(v) {
const checkedNodes = this.$refs['regionCascader'].getCheckedNodes()[0];
const n = [];
checkedNodes.pathNodes.map(i => {
n.push({label: i.label, value: i.value});
});
// countyId provinceId townId cityId
this.formData.certifyReq.areaStr = n;
this.formData.certifyReq.provinceId = v[0] || '';
this.formData.certifyReq.cityId = v[1] || '';
this.formData.certifyReq.countyId = v[2] || '';
this.formData.certifyReq.townId = v[3] || '';
},
setMoreOption(data, type) {
let option = [];
for (let i = 0; i < data.length; i++) {
let obj = data[i];
if (type == "cities") {
obj.label = data[i].cityName;
obj.value = data[i].cityId;
} else if (type == "counties") {
obj.label = data[i].countyName;
obj.value = data[i].countyId;
// obj.leaf = true;
} else if (type == "towns") {
obj.label = data[i].townName;
obj.value = data[i].townId;
obj.leaf = true;
}
option.push(obj);
}
return option;
},
OCRStore () {},
// 企业执照OCR上传后的回调处理
licenseFileHandle(file) {
OCRStore(file).then((res) => {
const { code, data } = res;
if (code === '000000') {
console.log('res----', data.ocrCardDto);
const {wordsResult} = data.ocrCardDto;
if(wordsResult) {
const {creditCode, establishmentDate, orgName, validDate} = wordsResult;
this.$refs.imgUrlC1.clearValidate();
vm.formData.certifyReq.orgName = orgName;
vm.formData.certifyReq.creditCode = creditCode;
if(establishmentDate && validDate) {
vm.formData.imgUrlC1Date = [establishmentDate,validDate];
vm.formData.certifyReq.licenseValidDateBegin = establishmentDate;
vm.formData.certifyReq.licenseValidDateEnd = validDate;
}
console.log('-establishmentDate', establishmentDate, validDate);
}
} else {
console.log(res);
}
});
},
// 身份证正面/反面OCR上传后的回调处理
idCardFileHandle(file, type, legal) {
console.log(type);
file['cardSide'] = type;
console.log('---cardSide', file);
idCardOcr(file).then((res) => {
try {
const { code, data } = res;
if (code === '000000') {
console.log('---data', data);
if(!data.ocrCardDto.ocrStatus) {
this.$message.error(data.ocrCardDto.ocrMessage || '身份证识别失败,请重新上传');
if(type === 1){
console.log('上传身份证正面');
setTimeout(() => {
this.formData.imgUrlC2 = ''
this.formData.imgUrlC4 = ''
}, 500);
}
if(type === 2){
setTimeout(() => {
this.formData.imgUrlC3 = ''
this.formData.imgUrlC5 = ''
}, 500);
}
return;
}
if(data.ocrCardDto.wordsResultDto){
this.$refs.idCard.clearValidate();
const {cardNo,name} = data.ocrCardDto.wordsResultDto;
if(!cardNo || !name) { // 身份证内容识别失败
this.idCardError = true
}
if(legal == 'legal'){
vm.formData.certifyReq.legalName = name;
vm.formData.certifyReq.legalCertNo = cardNo;
}else {
this.$refs.fIdCard.clearValidate();
vm.formData.certifyReq.assignorName = name;
vm.formData.certifyReq.assignorCertNo = cardNo;
}
}
if(data.ocrCardDto.wordsResultBackDto){
console.log(this.$refs.idCardBack);
const {signYmd, endYmd} = data.ocrCardDto.wordsResultBackDto;
if(!signYmd || !endYmd) { // 身份证内容识别失败
this.idCardError = true
}
if(legal == 'legal'){
this.$refs.idCardBack.clearValidate();
vm.formData.imgUrlC3Date = [signYmd, endYmd];
vm.formData.certifyReq.legalValidDateBegin = signYmd;
vm.formData.certifyReq.legalValidDateEnd = endYmd;
}else {
this.$refs.fIdCardBack.clearValidate();
vm.formData.imgUrlC5Date = [signYmd, endYmd];
vm.formData.certifyReq.assignorValidDateBegin = signYmd;
vm.formData.certifyReq.assignorValidDateEnd = endYmd;
}
}
} else {
console.log(res);
}
} catch (e) {
console.log(e);
}
});
},
clearRepeat (arr,key) {
const m = new Map();
arr.map(item => {
m.set(item[key], item)
})
return [...m.values()];
},
certifyValidDtoList (v) {
const l = vm.formData.certifyReq.certifyValidDtoList || [];
const m = l.filter(i => {return i.infoType == v;})[0] || '';
return m ? m.refuseContent : '';
},
storeTypeChange (v) {
if(v != 1){
vm.formData.certifyReq.certifyValidDtoList = [];
vm.formData.certifyReq.bizScope = [];
}
console.log('--vm.formData', vm.formData);
}
},
filters: {
storeStatusFormat(v) {
let s = '';
switch (String(v)) {
case '1':
s = '信息待完善'
break;
case '2':
s = '待审核'
break;
case '3':
s = '审核成功'
break;
case '4':
s = '审核失败'
break;
default:
s =''
break;
}
return s;
} }
}, },
}; };
...@@ -1752,6 +3005,12 @@ export default { ...@@ -1752,6 +3005,12 @@ export default {
font-size: 13px; font-size: 13px;
color: #449284; color: #449284;
} }
.verify-status{
padding: 5px;
border: 1px solid;
text-align: center;
border-radius: 5px;
}
} }
} }
.el-button--text { .el-button--text {
...@@ -1821,7 +3080,7 @@ export default { ...@@ -1821,7 +3080,7 @@ export default {
} }
.bg-uploader { .bg-uploader {
position: relative; position: relative;
/*margin-right: 20px;*/ margin-right: 20px;
.bg-img { .bg-img {
float: left; float: left;
width: 84px; width: 84px;
...@@ -1829,20 +3088,17 @@ export default { ...@@ -1829,20 +3088,17 @@ export default {
} }
.img-delete { .img-delete {
position: absolute; position: absolute;
left: 0px; left: 60px;
top: 0px; top: 0px;
width: 84px; width: 20px;
height: 100px; height: 20px;
background: #000; background: #000;
opacity: 0.7; opacity: 0.7;
z-index: 999; z-index: 999;
&.add-left-18 {
left: 18px;
}
i { i {
position: relative;
top: -10px;
color: #fff; color: #fff;
margin-top: 39px;
margin-left: 0px;
} }
} }
.limit-text { .limit-text {
...@@ -1869,6 +3125,7 @@ export default { ...@@ -1869,6 +3125,7 @@ export default {
} }
} }
.p-tips { .p-tips {
display: inline-block;
font-size: 13px; font-size: 13px;
color: #8c8c8c; color: #8c8c8c;
line-height: 26px; line-height: 26px;
...@@ -1880,7 +3137,7 @@ export default { ...@@ -1880,7 +3137,7 @@ export default {
color: #8c8c8c; color: #8c8c8c;
} }
.warehouseAdress-add { .warehouseAdress-add {
color: #449284; color: #FFFFFF;
border-color: #449284; border-color: #449284;
} }
.warehouseAdress-list { .warehouseAdress-list {
...@@ -1924,12 +3181,64 @@ export default { ...@@ -1924,12 +3181,64 @@ export default {
color: #449284; color: #449284;
background: #fff; background: #fff;
padding: 0 10px 0 10px; padding: 0 10px 0 10px;
width: 100px; width: 130px;
.btn-small{
width: 50px;
text-align: center;
padding: 3px 0px;
margin: 0px;
}
} }
} }
} }
.warehouseAdress-input { .warehouseAdress-input {
width: 500px; width: 500px;
} }
.img-data{
width: 100%;
max-width: 1400px;
display: flex;
justify-content: space-between;
flex-wrap: wrap;
.el-range-editor{
width: 500px;
}
}
.flex-wrap{
display: flex;
}
.line-section{
height: 1px;
display: block;
width: 100%;
padding: 30px 0px;
border-bottom: 1px solid #C7C8C9;
}
.red{
color: #FF4B33;
}
.regionCascader{
input::-webkit-input-placeholder{
color: #606266;
}
}
.certifyStatusColor4{
color: #FF4B33;
}
.certifyStatusColor2{
color: #FF720C;
}
.certifyStatusColor3{
color: #f6ffed;
}
.el-range-editor{
width: 500px;
}
.required-star::before{
content: "*";
color: #f56c6c;
margin-right: 4px;
}
} }
</style> </style>
...@@ -65,6 +65,22 @@ ...@@ -65,6 +65,22 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6">
<el-form-item label="店铺状态">
<el-select
v-model="searchForm.certifyStatus"
placeholder="请选择"
size="small"
clearable>
<el-option
v-for="item in storeTypeList"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6" style="text-align: right"> <el-col :span="6" style="text-align: right">
<el-button type="primary" size="small" @click="searchList">查询</el-button> <el-button type="primary" size="small" @click="searchList">查询</el-button>
<el-button type="default" size="small" @click="resetForm" style="margin-left:0;">重置</el-button> <el-button type="default" size="small" @click="resetForm" style="margin-left:0;">重置</el-button>
...@@ -93,9 +109,23 @@ ...@@ -93,9 +109,23 @@
<span>{{ scope.row.tradeStore.storeType | storeTypeFormat}}</span> <span>{{ scope.row.tradeStore.storeType | storeTypeFormat}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="storeStatus" label="店铺状态" min-width="100" align="center"> <el-table-column prop="storeType" label="店铺状态" min-width="100" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ scope.row.tradeStore.storeStatus | statusFormat }}</span> <span v-if="scope.row.tradeStore.storeType != 2" :class="scope.row.tradeStore.certifyStatus == 4 ? 'red' : 'green'">
{{ scope.row.tradeStore.certifyStatus | storeStatusFormat}}
</span>
<span v-else>
上线
</span>
<el-popover
v-if="scope.row.tradeStore.storeType != 2"
placement="top-start"
width="200"
trigger="hover"
:content="certificateInfoRespContent(scope.row.certificateInfoResp)">
<i v-if="scope.row.tradeStore.certifyStatus == 4" slot="reference" class="el-icon-warning-outline red"></i>
</el-popover>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="count" label="已上架商品数" min-width="120" align="center"> <el-table-column prop="count" label="已上架商品数" min-width="120" align="center">
...@@ -132,14 +162,40 @@ ...@@ -132,14 +162,40 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" min-width="230" align="center" fixed="right"> <el-table-column label="操作" min-width="230" align="center" fixed="right">
<!-- <template slot-scope="scope">-->
<!-- <div>-->
<!-- <el-button v-if="scope.row.tradeStore.storeType == 1 && scope.row.tradeStore.certifyStatus == 3" @click="setPrice(scope.row, false)" type="text" size="small">设置分佣</el-button>-->
<!-- <el-button @click="editShop(scope.row, 'true')" type="text" size="small">查看</el-button>-->
<!-- <el-button v-if="scope.row.tradeStore.storeType == 1 && scope.row.tradeStore.certifyStatus > 2" @click="editShop(scope.row, 'false')" type="text" size="small">编辑</el-button>-->
<!-- <el-button v-if="checkIsEdit(scope.row)" @click="shopManage(scope.row)" type="text" size="small">商品管理</el-button>-->
<!-- <el-button v-if="checkIsEdit(scope.row)" @click="orderManage(scope.row)" type="text" size="small">订单管理</el-button>-->
<!-- <el-button v-if="scope.row.tradeStore.storeType == 1 && scope.row.tradeStore.certifyStatus == 3"@click="setFreight(scope.row)" type="text" size="small">运费配置</el-button>-->
<!-- <el-button v-if="scope.row.tradeStore.storeType == 3" @click="closeShopAction(scope.row)" type="text" size="small">关闭店铺</el-button>-->
<!-- </div>-->
<!-- </template>-->
<template slot-scope="scope"> <template slot-scope="scope">
<div> <div>
<el-button v-if="scope.row.tradeStore.commissionFlag == 2" @click="setPrice(scope.row, false)" type="text" size="small">设置分佣</el-button>
<el-button @click="editShop(scope.row)" type="text" size="small">{{scope.row.tradeStore.storeType == 3 ? '查看' : '编辑'}}</el-button> <el-button @click="editShop(scope.row, 'true')" type="text" size="small">查看</el-button>
<el-button @click="shopManage(scope.row)" type="text" size="small">商品管理</el-button>
<el-button @click="orderManage(scope.row)" type="text" size="small">订单管理</el-button> <el-button v-if="checkIsEdit(scope.row)" checkIsEdit @click="editShop(scope.row, 'false')" type="text" size="small">编辑</el-button>
<el-button v-if="scope.row.tradeStore.commissionFlag == 2" @click="setFreight(scope.row)" type="text" size="small">运费配置</el-button>
<el-button v-if="storageIdType == 1 && (scope.row.tradeStore.storeType == 3 && scope.row.tradeStore.storeStatus == 1)" @click="closeShopAction(scope.row)" type="text" size="small">关闭店铺</el-button> <el-button v-if="checkGoods(scope.row)" @click="shopManage(scope.row)" type="text" size="small">商品管理</el-button>
<el-button v-if="checkBills(scope.row)" @click="orderManage(scope.row)" type="text" size="small">订单管理</el-button>
<el-button v-if="checkSpe(scope.row)" @click="setPrice(scope.row, false)" type="text" size="small">设置分佣</el-button>
<el-button v-if="checkSpe(scope.row)" @click="setFreight(scope.row)" type="text" size="small">运费配置</el-button>
<el-button v-if="scope.row.tradeStore.storeType == 3 && isOutsideGetted == 'no'" @click="closeShopAction(scope.row)" type="text" size="small">关闭店铺</el-button>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
...@@ -209,8 +265,6 @@ ...@@ -209,8 +265,6 @@
<el-button type="primary" @click="confirmSetPrice">确 定</el-button> <el-button type="primary" @click="confirmSetPrice">确 定</el-button>
</span> </span>
</el-dialog> </el-dialog>
</div> </div>
</div> </div>
</template> </template>
...@@ -219,12 +273,14 @@ ...@@ -219,12 +273,14 @@
import { openLoading, closeLoading } from "../../utils/utils"; import { openLoading, closeLoading } from "../../utils/utils";
import BreadCrumb from "@/components/breadcrumb.vue"; import BreadCrumb from "@/components/breadcrumb.vue";
import { queryStore, queryShopAuth, closeShop } from '@/utils/shop'; import { queryStore, queryShopAuth, closeShop } from '@/utils/shop';
import { getUserTypeReq } from "@/utils/cme/cmeApi";
export default { export default {
components: { components: {
BreadCrumb BreadCrumb
}, },
data(){ data(){
return{ return{
isOutsideGetted: 'no',
curmbFirst: '云鹊店铺', curmbFirst: '云鹊店铺',
showAllFlag: false, showAllFlag: false,
showNewFlag: false, showNewFlag: false,
...@@ -237,21 +293,12 @@ ...@@ -237,21 +293,12 @@
id: null, id: null,
type: null, type: null,
commissionType: 0, commissionType: 0,
proxyCommissionType:0 proxyCommissionType:0,
certifyStatus:null
}, },
canAdd: false, canAdd: false,
totalRows: 0, totalRows: 0,
tableData: [ tableData: [
// {
// tradeStore: {
// id: 12,
// storeName: '康爱多',
// storeType: 1,
// storeStatus: 0,
// count: 2,
// createdTime: ''
// }
// }
], ],
typeList: [ typeList: [
{ {
...@@ -279,15 +326,27 @@ ...@@ -279,15 +326,27 @@
value: 2, value: 2,
label: "固定分佣" label: "固定分佣"
}], }],
storeTypeList: [
{
value: 1,
label: "待完善"
},
{
value: 2,
label: "待审核"
},
{
value: 3,
label: "审核通过"
},
{
value: 4,
label: "审核失败"
},
],
setPriceVisible: false, setPriceVisible: false,
setPriceForm:{ setPriceForm:{
// commissionType: 1,
// commissionPrice: '',
// commissionPrice1: '',
// commissionPrice2: '',
// storeId: '',
// goodsId: '',
// maxPrice: ''
adminCommissionGoodsRespList:[], adminCommissionGoodsRespList:[],
commission:{ commission:{
commissionKind: "", commissionKind: "",
...@@ -311,9 +370,6 @@ ...@@ -311,9 +370,6 @@
}, },
}, },
setPriceRules: { setPriceRules: {
// commissionType: [
// {required: true, message: "请选择分佣方式", trigger: 'blur'}
// ]
}, },
} }
}, },
...@@ -322,6 +378,7 @@ ...@@ -322,6 +378,7 @@
// this.idType = localStorage.getItem("storageIdType"); // this.idType = localStorage.getItem("storageIdType");
this.storageIdType = localStorage.getItem("storageIdType") - 0; this.storageIdType = localStorage.getItem("storageIdType") - 0;
console.log(this.storageIdType); console.log(this.storageIdType);
this.getUserTypeReq();
this.getAddAuth(); this.getAddAuth();
this.searchList(); this.searchList();
}, },
...@@ -334,6 +391,15 @@ ...@@ -334,6 +391,15 @@
} }
}) })
}, },
getUserTypeReq () {
getUserTypeReq().then(res => {
console.log('--res', res);
if(res.code == '000000'){
this.isOutsideGetted = res.data.code;
}
});
},
searchList() { searchList() {
openLoading(this); openLoading(this);
let params = this.searchForm; let params = this.searchForm;
...@@ -376,9 +442,8 @@ ...@@ -376,9 +442,8 @@
}, },
//新建店铺 //新建店铺
createShop() { createShop() {
this.$router.push({ let l = `${location.origin}#/create-shop?disabled=false`;
path: `/create-shop` window.open(l);
})
}, },
//店铺管理 //店铺管理
shopManage(row) { shopManage(row) {
...@@ -391,14 +456,6 @@ ...@@ -391,14 +456,6 @@
} }
}); });
window.open(routeData.href, '_blank'); window.open(routeData.href, '_blank');
// this.$router.push({
// path: '/goods-manage',
// query: {
// storeId: row.tradeStore.id,
// commissionFlag:row.tradeStore.commissionFlag
// }
// })
}, },
orderManage(row) { orderManage(row) {
let routeData = this.$router.resolve({ let routeData = this.$router.resolve({
...@@ -408,22 +465,11 @@ ...@@ -408,22 +465,11 @@
} }
}); });
window.open(routeData.href, '_blank'); window.open(routeData.href, '_blank');
// this.$router.push({
// path: '/order-manage',
// query: {
// storeId: row.tradeStore.id,
// }
// })
}, },
//编辑 //编辑
editShop(row) { editShop(row, disabled) {
this.$router.push({ let l = `${location.origin}#/create-shop?storeId=${row.tradeStore.id}&disabled=${disabled}&certifyStatus=${row.tradeStore.certifyStatus}`;
path: `/create-shop`, window.open(l);
query:{
storeId: row.tradeStore.id,
storeData: JSON.stringify(row),
}
})
}, },
handleSizeChange(val) { handleSizeChange(val) {
this.searchForm.pageSize = val; this.searchForm.pageSize = val;
...@@ -495,52 +541,6 @@ ...@@ -495,52 +541,6 @@
}); });
return; return;
} }
// for(let i = 0; i < this.setPriceForm.adminCommissionGoodsRespList.length; i++){
// if(this.setPriceForm.adminCommissionGoodsRespList[i].commissionKind == 1
// && (this.setPriceForm.adminCommissionGoodsRespList[i].commissionType == null || this.setPriceForm.adminCommissionGoodsRespList[i].commissionType == "")){
//
// this.$message({
// message: '请选择分佣方式',
// type: "warning"
// });
// return;
// }
//
// if(this.setPriceForm.adminCommissionGoodsRespList[i].commissionKind == 1
// && this.setPriceForm.adminCommissionGoodsRespList[i].commissionType == 1 && this.setPriceForm.adminCommissionGoodsRespList[i].commissionPrice1 == undefined ){
// this.$message({
// message: '请输入按比例分佣',
// type: "warning"
// });
// return;
// }
// else if(this.setPriceForm.adminCommissionGoodsRespList[i].commissionKind == 1
// && this.setPriceForm.adminCommissionGoodsRespList[i].commissionType == 1 && this.setPriceForm.adminCommissionGoodsRespList[i].commissionPrice1 > 100){
// this.$message({
// message: '请输入按比例分佣0-100',
// type: "warning"
// });
// return;
// }
// if(this.setPriceForm.adminCommissionGoodsRespList[i].commissionKind == 1
// && this.setPriceForm.adminCommissionGoodsRespList[i].commissionType == 2 && this.setPriceForm.adminCommissionGoodsRespList[i].commissionPrice2 == undefined ){
// this.$message({
// message: '请输入固定分佣金额',
// type: "warning"
// });
// return;
// }
//
// if(this.setPriceForm.adminCommissionGoodsRespList[i].commissionType == 1){
// this.setPriceForm.adminCommissionGoodsRespList[i].commissionPrice = this.setPriceForm.adminCommissionGoodsRespList[i].commissionPrice1 * 100;
// }
// else if(this.setPriceForm.adminCommissionGoodsRespList[i].commissionType == 2){
// this.setPriceForm.adminCommissionGoodsRespList[i].commissionPrice = this.setPriceForm.adminCommissionGoodsRespList[i].commissionPrice2 * 100;
// }
//
// }
let timeoutId = null let timeoutId = null
timeoutId && clearTimeout(timeoutId) timeoutId && clearTimeout(timeoutId)
timeoutId = setTimeout(() => { timeoutId = setTimeout(() => {
...@@ -567,13 +567,6 @@ ...@@ -567,13 +567,6 @@
} }
vm.setPriceForm.adminCommissionGoodsRespList[0] = vm.setPriceForm.commission; vm.setPriceForm.adminCommissionGoodsRespList[0] = vm.setPriceForm.commission;
vm.setPriceForm.adminCommissionGoodsRespList[1] = vm.setPriceForm.proxyCommission; vm.setPriceForm.adminCommissionGoodsRespList[1] = vm.setPriceForm.proxyCommission;
// if(vm.setPriceForm.commissionType == 1){
// vm.setPriceForm.commissionPriceStr = vm.setPriceForm.commissionPrice1;
// }
// else if(vm.setPriceForm.commissionType == 2){
// vm.setPriceForm.commissionPriceStr = vm.setPriceForm.commissionPrice2;
// }
// vm.setPriceForm.commissionPrice = vm.setPriceForm.commissionPriceStr * 100;
vm.POST('/store/commission/admin/store/save', vm.setPriceForm.adminCommissionGoodsRespList).then(res => { vm.POST('/store/commission/admin/store/save', vm.setPriceForm.adminCommissionGoodsRespList).then(res => {
vm.loading = false vm.loading = false
// closeLoading(this); // closeLoading(this);
...@@ -689,26 +682,7 @@ ...@@ -689,26 +682,7 @@
storeId: row.tradeStore.id, storeId: row.tradeStore.id,
}; };
} }
// this.batchUpdatePriceFlag = batchUpdatePriceFlag;
// this.setPriceForm.storeId = row.tradeStore.id;
// this.setPriceForm.goodsId = row.tradeStore.goodsId;
// this.setPriceForm.commissionType = "";
// this.setPriceForm.commissionPrice1 = undefined;
// this.setPriceForm.commissionPrice2 = undefined;
// this.setPriceForm.commissionType = row.tradeStore.commissionType;
// if(this.setPriceForm.commissionType == 1){
// this.setPriceForm.commissionPrice1 = row.tradeStore.commissionPrice/100;
// }
// else if(this.setPriceForm.commissionType == 2){
// this.setPriceForm.commissionPrice2 = row.tradeStore.commissionPrice/100;
// }
this.setPriceVisible = true; this.setPriceVisible = true;
// if(this.$refs.setPriceForm) {
// this.$refs.setPriceForm.resetFields()
// }
// this.getProfit(row);
}, },
// 运费配置 // 运费配置
setFreight(row) { setFreight(row) {
...@@ -721,7 +695,62 @@ ...@@ -721,7 +695,62 @@
}); });
window.open(routeData.href, '_blank'); window.open(routeData.href, '_blank');
}, },
certificateInfoRespContent (c) {
let v ='';
const b = c ? c.certifyValidDtoList : [];
if( b.length > 0) {
b.map( (i, j)=> {
if(j <= 3){
v = v + i.refuseContent;
}
});
}
return v;
},
checkIsEdit (row){
const {storeType, certifyStatus} = row.tradeStore;
if(storeType == 1 && Number(certifyStatus) > 2){
return true;
}else if(storeType == 2){
return true;
}else{
return false;
}
},
checkGoods(row) {
const {storeType, certifyStatus} = row.tradeStore;
if(storeType == 1 && Number(certifyStatus) === 3){
return true
}else if(storeType == 2){
return true
}else if(storeType == 3){
if(Number(certifyStatus) == 1 || Number(certifyStatus) == 3){
return true;
}else{
return false;
}
}else{
return false;
}
},
checkBills(row) {
const {storeType, certifyStatus} = row.tradeStore;
if(storeType == 1 && Number(certifyStatus) !== 3){
return false;
}else{
return true;
}
},
checkSpe(row) {
const {storeType, certifyStatus} = row.tradeStore;
if(storeType == 1 && Number(certifyStatus) == 3){
return true;
}else if(storeType == 2){
return true;
}else{
return false;
}
},
}, },
filters: { filters: {
storeTypeFormat: function(value){ storeTypeFormat: function(value){
...@@ -769,6 +798,27 @@ ...@@ -769,6 +798,27 @@
return value; return value;
} }
}, },
storeStatusFormat(v) {
let s = '';
switch (v) {
case 1:
s = '信息待完善'
break;
case 2:
s = '待审核'
break;
case 3:
s = '审核成功'
break;
case 4:
s = '审核失败'
break;
default:
s ='审核成功'
break;
}
return s;
}
}, },
} }
</script> </script>
...@@ -805,5 +855,11 @@ ...@@ -805,5 +855,11 @@
} }
} }
} }
.red{
color: #FF4B33;
}
.green{
color: #449284;
}
} }
</style> </style>
因为 它太大了无法显示 源差异 。您可以改为 查看blob
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册