Commit c3a373c3 authored by liwenhong's avatar liwenhong

Merge branch 'master' into lwh/head-distribution

# Conflicts:
#	server/controllers/user.js
#	server/router.js
#	src/pages/Groupmeal/components/PageHeader/config.js
#	src/router/Groupmeal/index.js
parents 7f46b0fe 0e2efed7
# EditorConfig is awesome: https://EditorConfig.org
# top-most EditorConfig file
root = true
[*]
indent_style = space
indent_size = 4
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = false
insert_final_newline = false
\ No newline at end of file
...@@ -7,4 +7,3 @@ public ...@@ -7,4 +7,3 @@ public
dist dist
.prettierrc.js .prettierrc.js
.eslintrc.js .eslintrc.js
server/
...@@ -3,23 +3,15 @@ module.exports = { ...@@ -3,23 +3,15 @@ module.exports = {
env: { env: {
node: true, node: true,
}, },
extends: ['plugin:vue/vue3-essential', 'eslint:recommended', '@vue/prettier'], extends: ["plugin:vue/vue3-essential", "eslint:recommended", "@vue/prettier"],
parserOptions: { parserOptions: {
parser: 'babel-eslint', parser: "babel-eslint",
}, },
rules: { rules: {
'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', "no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off', "no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",
"prettier/prettier": "error",
"vue/script-setup-uses-vars": "off",
"no-unused-vars": "off",
}, },
overrides: [
{
files: [
'**/__tests__/*.{j,t}s?(x)',
'**/tests/unit/**/*.spec.{j,t}s?(x)',
],
env: {
jest: true,
},
},
],
}; };
...@@ -7,7 +7,6 @@ dist ...@@ -7,7 +7,6 @@ dist
# Editor directories and files # Editor directories and files
.idea .idea
.vscode
*.suo *.suo
*.ntvs* *.ntvs*
*.njsproj *.njsproj
......
// https://prettier.io/docs/en/options.html
module.exports = {
printWidth: 150,
tabWidth: 4,
semi: true,
singleQuote: false,
trailingComma: "all",
bracketSpacing: true,
jsxBracketSameLine: false,
htmlWhitespaceSensitivity: "ignore",
endOfLine: "auto",
vueIndentScriptAndStyle: true,
};
{
// 保存自动格式化
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
// For ESLint
"source.fixAll.eslint": true
},
"eslint.validate": [
"vue",
"javascript",
"javascriptreact"
],
// 设置全部语言的默认格式化程序为prettier
"editor.defaultFormatter": "esbenp.prettier-vscode",
"[json]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[jsonc]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[vue]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[html]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[markdown]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescriptreact]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[css]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[less]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
}
module.exports = { module.exports = {
presets: ['@vue/cli-plugin-babel/preset'], presets: ["@vue/cli-plugin-babel/preset"],
}; };
This diff is collapsed.
...@@ -11,11 +11,11 @@ ...@@ -11,11 +11,11 @@
"web-dev": "cross-env NODE_ENV=development vue-cli-service serve", "web-dev": "cross-env NODE_ENV=development vue-cli-service serve",
"web-test": "cross-env NODE_ENV=test vue-cli-service build", "web-test": "cross-env NODE_ENV=test vue-cli-service build",
"web-build": "cross-env NODE_ENV=production vue-cli-service build", "web-build": "cross-env NODE_ENV=production vue-cli-service build",
"web-build-report": "cross-env NODE_ENV=production vue-cli-service build --report",
"test:unit": "vue-cli-service test:unit", "test:unit": "vue-cli-service test:unit",
"lint": "vue-cli-service lint" "lint": "vue-cli-service lint"
}, },
"dependencies": { "dependencies": {
"@types/qr-image": "^3.2.4",
"axios": "^0.21.1", "axios": "^0.21.1",
"core-js": "^3.6.5", "core-js": "^3.6.5",
"dayjs": "^1.10.6", "dayjs": "^1.10.6",
...@@ -31,34 +31,28 @@ ...@@ -31,34 +31,28 @@
"moment": "^2.29.1", "moment": "^2.29.1",
"qr-image": "^3.2.0", "qr-image": "^3.2.0",
"request": "^2.88.2", "request": "^2.88.2",
"uglifyjs-webpack-plugin": "^2.2.0",
"uuid": "^8.3.2", "uuid": "^8.3.2",
"vue": "3.0.11", "vue": "3.0.11",
"vue-router": "^4.0.0-beta.12", "vue-router": "^4.0.0-beta.12",
"vuex": "^4.0.0-beta.4" "vuex": "^4.0.0-beta.4"
}, },
"devDependencies": { "devDependencies": {
"@testing-library/vue": "^6.4.2",
"@vue/cli-plugin-babel": "^4.5.6", "@vue/cli-plugin-babel": "^4.5.6",
"@vue/cli-plugin-eslint": "^4.5.6", "@vue/cli-plugin-eslint": "~4.5.0",
"@vue/cli-plugin-unit-jest": "^4.5.6",
"@vue/cli-service": "^4.5.6", "@vue/cli-service": "^4.5.6",
"@vue/compiler-sfc": "^3.0.0-beta.1", "@vue/compiler-sfc": "^3.0.0-beta.1",
"@vue/eslint-config-prettier": "^6.0.0", "@vue/eslint-config-prettier": "^6.0.0",
"@vue/test-utils": "^2.0.0-alpha.1",
"babel-eslint": "^10.1.0", "babel-eslint": "^10.1.0",
"babel-jest": "^27.0.6",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"eslint": "^6.7.2", "eslint": "^6.7.2",
"eslint-plugin-prettier": "^3.1.3", "eslint-plugin-prettier": "^3.3.1",
"eslint-plugin-vue": "^7.0.0-alpha.0", "eslint-plugin-vue": "^7.17.0",
"jest": "^27.0.6",
"less": "^3.0.4", "less": "^3.0.4",
"less-loader": "^5.0.0", "less-loader": "^5.0.0",
"lint-staged": "^11.1.2",
"nodemon": "^2.0.7", "nodemon": "^2.0.7",
"pm2": "3.5.1", "pm2": "3.5.1",
"prettier": "^1.19.1", "prettier": "^2.2.1"
"vue3-jest": "^27.0.0-alpha.1"
}, },
"browserslist": [ "browserslist": [
"> 1%", "> 1%",
...@@ -67,5 +61,16 @@ ...@@ -67,5 +61,16 @@
"iOS >= 8", "iOS >= 8",
"Android >= 4.1" "Android >= 4.1"
], ],
"license": "YIDIAN" "license": "YIDIAN",
"gitHooks": {
"pre-commit": "lint-staged"
},
"lint-staged": {
"src/**/*.{js,vue}": [
"eslint --fix"
],
"server/**/*.js": [
"eslint --fix"
]
}
} }
const env = process.env.NODE_ENV || "development"; const env = process.env.NODE_ENV || "development";
const port = process.env.PORT || 8055; const port = process.env.PORT || 8055;
const API_YD_LOGIN = 'http://web-rest.int.yidian-inc.com/api/v1/pandora/auth' const API_YD_LOGIN = "http://web-rest.int.yidian-inc.com/api/v1/pandora/auth";
const PANDORA_URI = { const PANDORA_URI = {
development: "http://pandora.yidian-inc.com", development: "http://pandora.yidian-inc.com",
test: "http://pandora.yidian-inc.com", test: "http://pandora.yidian-inc.com",
production: "http://pandora.yidian-inc.com" production: "http://pandora.yidian-inc.com",
}; };
const API_INTERNAL_URI = { const API_INTERNAL_URI = {
test: "http://bp-dev.ini.yidian-inc.com", test: "http://bp-dev.ini.yidian-inc.com",
development: "http://bp-test.ini.yidian-inc.com", development: "http://bp-test.ini.yidian-inc.com",
production: "http://bp.int.yidian-inc.com" production: "http://bp.int.yidian-inc.com",
}; };
module.exports = { module.exports = {
...@@ -24,5 +24,5 @@ module.exports = { ...@@ -24,5 +24,5 @@ module.exports = {
GROUPMEAL_URI: API_INTERNAL_URI[env], GROUPMEAL_URI: API_INTERNAL_URI[env],
ACTIVITY_URI: API_INTERNAL_URI[env], ACTIVITY_URI: API_INTERNAL_URI[env],
WITHDRAWAL_URI: API_INTERNAL_URI[env], WITHDRAWAL_URI: API_INTERNAL_URI[env],
API_YD_LOGIN API_YD_LOGIN,
}; };
...@@ -2,183 +2,183 @@ const ACTIVITY_URI = require("../config.js").ACTIVITY_URI; ...@@ -2,183 +2,183 @@ const ACTIVITY_URI = require("../config.js").ACTIVITY_URI;
const req = require("../utils/request").httpReq; const req = require("../utils/request").httpReq;
// 获取商家列表 // 获取商家列表
exports.getBusinessList = async ctx => { exports.getBusinessList = async (ctx) => {
const url = `${ACTIVITY_URI}/goods/background/ota_list`; const url = `${ACTIVITY_URI}/goods/background/ota_list`;
const opts = { const opts = {
url, url,
method: "GET" method: "GET",
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 添加商品 // 添加商品
exports.addGoods = async ctx => { exports.addGoods = async (ctx) => {
const url = `${ACTIVITY_URI}/goods/background/add_goods`; const url = `${ACTIVITY_URI}/goods/background/add_goods`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 商品库列表 // 商品库列表
exports.pindanGoods = async ctx => { exports.pindanGoods = async (ctx) => {
const url = `${ACTIVITY_URI}/goods/background/pindan_goods`; const url = `${ACTIVITY_URI}/goods/background/pindan_goods`;
const opts = { const opts = {
url, url,
method: "GET" method: "GET",
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 查看商品详情 // 查看商品详情
exports.markGoodsInfo = async ctx => { exports.markGoodsInfo = async (ctx) => {
const url = `${ACTIVITY_URI}/goods/background/marketing_goods_info`; const url = `${ACTIVITY_URI}/goods/background/marketing_goods_info`;
const opts = { const opts = {
url, url,
method: "GET" method: "GET",
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 编辑商品 // 编辑商品
exports.editGoods = async ctx => { exports.editGoods = async (ctx) => {
const url = `${ACTIVITY_URI}/goods/background/edit_goods`; const url = `${ACTIVITY_URI}/goods/background/edit_goods`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 获取活动过列表 // 获取活动过列表
exports.getActivityList = async ctx => { exports.getActivityList = async (ctx) => {
const url = `${ACTIVITY_URI}/marketing/background/marketing_list`; const url = `${ACTIVITY_URI}/marketing/background/marketing_list`;
const opts = { const opts = {
url, url,
method: "GET" method: "GET",
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 修改商品 // 修改商品
exports.editGoodsDetail = async ctx => { exports.editGoodsDetail = async (ctx) => {
const url = `${ACTIVITY_URI}/goods/background/edit_goods`; const url = `${ACTIVITY_URI}/goods/background/edit_goods`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 添加营销活动 // 添加营销活动
exports.addMarketing = async ctx => { exports.addMarketing = async (ctx) => {
const url = `${ACTIVITY_URI}/marketing/background/add_marketing`; const url = `${ACTIVITY_URI}/marketing/background/add_marketing`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 编辑营销活动 // 编辑营销活动
exports.updateMarketing = async ctx => { exports.updateMarketing = async (ctx) => {
const url = `${ACTIVITY_URI}/marketing/background/update_marketing`; const url = `${ACTIVITY_URI}/marketing/background/update_marketing`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 营销活动详情 // 营销活动详情
exports.marketingInfo = async ctx => { exports.marketingInfo = async (ctx) => {
const url = `${ACTIVITY_URI}/marketing/background/marketing_info`; const url = `${ACTIVITY_URI}/marketing/background/marketing_info`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 关闭/开启 活动 // 关闭/开启 活动
exports.updateActivity = async ctx => { exports.updateActivity = async (ctx) => {
const url = `${ACTIVITY_URI}/marketing/background/update_marketing_online_status`; const url = `${ACTIVITY_URI}/marketing/background/update_marketing_online_status`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 查看活动订单 // 查看活动订单
exports.checkActivityDetail = async ctx => { exports.checkActivityDetail = async (ctx) => {
const url = `${ACTIVITY_URI}/marketing/background/marketing_info`; const url = `${ACTIVITY_URI}/marketing/background/marketing_info`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 查看活动订单 // 查看活动订单
exports.checkActivityDetailInfo = async ctx => { exports.checkActivityDetailInfo = async (ctx) => {
const url = `${ACTIVITY_URI}/order/background/pindan_marketing_info_data_statistics`; const url = `${ACTIVITY_URI}/order/background/pindan_marketing_info_data_statistics`;
const opts = { const opts = {
url, url,
method: "GET", method: "GET",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 获取自提点列表 // 获取自提点列表
exports.getPlaceList = async ctx => { exports.getPlaceList = async (ctx) => {
const url = `${ACTIVITY_URI}/marketing/background/take_place_list`; const url = `${ACTIVITY_URI}/marketing/background/take_place_list`;
const opts = { const opts = {
url, url,
method: "GET" method: "GET",
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 添加自提点 // 添加自提点
exports.addPlace = async ctx => { exports.addPlace = async (ctx) => {
const url = `${ACTIVITY_URI}/marketing/background/add_take_place`; const url = `${ACTIVITY_URI}/marketing/background/add_take_place`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
//删除自提点 //删除自提点
exports.deletePlace = async ctx => { exports.deletePlace = async (ctx) => {
const url = `${ACTIVITY_URI}/marketing/background/delete_take_place`; const url = `${ACTIVITY_URI}/marketing/background/delete_take_place`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
...@@ -3,49 +3,49 @@ const req = require("../utils/request").httpReq; ...@@ -3,49 +3,49 @@ const req = require("../utils/request").httpReq;
const controller_utils = require("./utils"); const controller_utils = require("./utils");
// 获取企业信息列表 // 获取企业信息列表
exports.auditList = async ctx => { exports.auditList = async (ctx) => {
const url = `${API_INTERNAL_URI}/merchant/inner/audit_list`; const url = `${API_INTERNAL_URI}/merchant/inner/audit_list`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
ctx.body = JSON.stringify(await req(ctx, opts)); ctx.body = JSON.stringify(await req(ctx, opts));
}; };
// 企业认证获取验证码 // 企业认证获取验证码
exports.sendCode = async ctx => { exports.sendCode = async (ctx) => {
const url = `${API_INTERNAL_URI}/merchant/lifeinner/send_code`; const url = `${API_INTERNAL_URI}/merchant/lifeinner/send_code`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 企业认证校验验证码 // 企业认证校验验证码
exports.checkCode = async ctx => { exports.checkCode = async (ctx) => {
const url = `${API_INTERNAL_URI}/merchant/lifeinner/check_code`; const url = `${API_INTERNAL_URI}/merchant/lifeinner/check_code`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 审核列表详情页回显信息列表 // 审核列表详情页回显信息列表
exports.getRecordInfo = async ctx => { exports.getRecordInfo = async (ctx) => {
const url = `${API_INTERNAL_URI}/merchant/inner/get_record_info`; const url = `${API_INTERNAL_URI}/merchant/inner/get_record_info`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
let permission = await controller_utils.getUserPermission(ctx); let permission = await controller_utils.getUserPermission(ctx);
permission = JSON.parse(permission); permission = JSON.parse(permission);
...@@ -71,60 +71,60 @@ exports.getRecordInfo = async ctx => { ...@@ -71,60 +71,60 @@ exports.getRecordInfo = async ctx => {
}; };
// 历史提交审核日志详情页 // 历史提交审核日志详情页
exports.getLog = async ctx => { exports.getLog = async (ctx) => {
const url = `${API_INTERNAL_URI}/merchant/inner/get_log`; const url = `${API_INTERNAL_URI}/merchant/inner/get_log`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 企业资料审核 // 企业资料审核
exports.postAudit = async ctx => { exports.postAudit = async (ctx) => {
const url = `${API_INTERNAL_URI}/merchant/inner/audit`; const url = `${API_INTERNAL_URI}/merchant/inner/audit`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 企业资料修改 // 企业资料修改
exports.opBusinessUpdate = async ctx => { exports.opBusinessUpdate = async (ctx) => {
const url = `${API_INTERNAL_URI}/merchant/inner/op_business_update`; const url = `${API_INTERNAL_URI}/merchant/inner/op_business_update`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
} };
// 商户上传营业执照信息 // 商户上传营业执照信息
exports.postBusiness = async ctx => { exports.postBusiness = async (ctx) => {
const url = `${API_INTERNAL_URI}/merchant/inner/op_business_commit`; const url = `${API_INTERNAL_URI}/merchant/inner/op_business_commit`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 商户信息代提交(op后台) // 商户信息代提交(op后台)
exports.opCommit = async ctx => { exports.opCommit = async (ctx) => {
const url = `${API_INTERNAL_URI}/merchant/inner/op_commit`; const url = `${API_INTERNAL_URI}/merchant/inner/op_commit`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
...@@ -16,302 +16,299 @@ const req = require("../utils/request").httpReq; ...@@ -16,302 +16,299 @@ const req = require("../utils/request").httpReq;
* }; * };
*/ */
// 获取分类 // 获取分类
exports.getCategoryList = async ctx => { exports.getCategoryList = async (ctx) => {
const url = `${GOODS_URI}/goods/background/get_goods_category_list`; const url = `${GOODS_URI}/goods/background/get_goods_category_list`;
const opts = { const opts = {
url, url,
method: "GET" method: "GET",
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 获取商品列表 // 获取商品列表
exports.getList = async ctx => { exports.getList = async (ctx) => {
const url = `${GOODS_URI}/goods/background/get_goods_list`; const url = `${GOODS_URI}/goods/background/get_goods_list`;
const opts = { const opts = {
url, url,
method: "GET", method: "GET",
qs: ctx.request.query qs: ctx.request.query,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 商品上架 // 商品上架
exports.putOnline = async ctx => { exports.putOnline = async (ctx) => {
const url = `${GOODS_URI}/goods/background/online`; const url = `${GOODS_URI}/goods/background/online`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 商品下架 // 商品下架
exports.putOffline = async ctx => { exports.putOffline = async (ctx) => {
const url = `${GOODS_URI}/goods/background/offline`; const url = `${GOODS_URI}/goods/background/offline`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 获取商品详情列表 // 获取商品详情列表
exports.getGoodsInfo = async ctx => { exports.getGoodsInfo = async (ctx) => {
const url = `${GOODS_URI}/goods/background/get_goods_info`; const url = `${GOODS_URI}/goods/background/get_goods_info`;
const opts = { const opts = {
url, url,
method: "GET", method: "GET",
qs: ctx.request.query qs: ctx.request.query,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 商品审核通过 // 商品审核通过
exports.postSuccess = async ctx => { exports.postSuccess = async (ctx) => {
const opts = { const opts = {
url: `${GOODS_URI}/goods/background/audit_pass`, url: `${GOODS_URI}/goods/background/audit_pass`,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 营销活动列表 // 营销活动列表
exports.getMarketingList = async ctx => { exports.getMarketingList = async (ctx) => {
const url = `${GOODS_URI}/marketing/background/marketing_list`; const url = `${GOODS_URI}/marketing/background/marketing_list`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 检查商品名称是否被占用 // 检查商品名称是否被占用
exports.checkGoodsName = async ctx => { exports.checkGoodsName = async (ctx) => {
const opts = { const opts = {
url: `${GOODS_URI}/goods/background/check_goods_name`, url: `${GOODS_URI}/goods/background/check_goods_name`,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 获取查询活动列表 // 获取查询活动列表
exports.getFindGoodsList = async ctx => { exports.getFindGoodsList = async (ctx) => {
const url = `${GOODS_URI}/marketing/background/goods_list`; const url = `${GOODS_URI}/marketing/background/goods_list`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 审核拒绝 // 审核拒绝
exports.auditReject = async ctx => { exports.auditReject = async (ctx) => {
const opts = { const opts = {
url: `${GOODS_URI}/goods/background/audit_reject`, url: `${GOODS_URI}/goods/background/audit_reject`,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
} };
// 添加活动列表 // 添加活动列表
exports.getAddMarketingList = async ctx => { exports.getAddMarketingList = async (ctx) => {
const url = `${GOODS_URI}/marketing/background/add_marketing`; const url = `${GOODS_URI}/marketing/background/add_marketing`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 获取门店列表 // 获取门店列表
exports.getShopsList = async ctx => { exports.getShopsList = async (ctx) => {
const opts = { const opts = {
url: `${GOODS_URI}/shop/background/shop_list`, url: `${GOODS_URI}/shop/background/shop_list`,
method: "GET", method: "GET",
qs: ctx.request.query qs: ctx.request.query,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 添加门店 // 添加门店
exports.addShop = async ctx => { exports.addShop = async (ctx) => {
const opts = { const opts = {
url: `${GOODS_URI}/shop/background/add_shop`, url: `${GOODS_URI}/shop/background/add_shop`,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
} };
// 查看列表详情 // 查看列表详情
exports.getMarketingInfo = async ctx => { exports.getMarketingInfo = async (ctx) => {
const url = `${GOODS_URI}/marketing/background/marketing_info`; const url = `${GOODS_URI}/marketing/background/marketing_info`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 修改商品 // 修改商品
exports.editGoods = async ctx => { exports.editGoods = async (ctx) => {
const opts = { const opts = {
url: `${GOODS_URI}/goods/background/edit_goods`, url: `${GOODS_URI}/goods/background/edit_goods`,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
} };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 开启关闭状态 // 开启关闭状态
exports.updateMarketingList = async ctx => { exports.updateMarketingList = async (ctx) => {
const url = `${GOODS_URI}/marketing/background/update_marketing`; const url = `${GOODS_URI}/marketing/background/update_marketing`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
const res = await req(ctx, opts); const res = await req(ctx, opts);
ctx.body = res; ctx.body = res;
}; };
//团长列表 //团长列表
exports.coloneList = async ctx => { exports.coloneList = async (ctx) => {
const url = `${GOODS_URI}/marketing/background/colonel_list`; const url = `${GOODS_URI}/marketing/background/colonel_list`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
const res = await req(ctx, opts); const res = await req(ctx, opts);
ctx.body = res; ctx.body = res;
}; };
//团长申请列表 //团长申请列表
exports.coloneApplyList = async ctx => { exports.coloneApplyList = async (ctx) => {
const url = `${GOODS_URI}/marketing/background/colonel_apply_list`; const url = `${GOODS_URI}/marketing/background/colonel_apply_list`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
const res = await req(ctx, opts); const res = await req(ctx, opts);
ctx.body = res; ctx.body = res;
}; };
//团长申请操作 //团长申请操作
exports.colonelAudit = async ctx => { exports.colonelAudit = async (ctx) => {
const url = `${GOODS_URI}/marketing/background/colonel_audit`; const url = `${GOODS_URI}/marketing/background/colonel_audit`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
const res = await req(ctx, opts); const res = await req(ctx, opts);
ctx.body = res; ctx.body = res;
}; };
//团长获取自提点信息 //团长获取自提点信息
exports.colonelApplyPoint = async ctx => { exports.colonelApplyPoint = async (ctx) => {
const url = `${GOODS_URI}/marketing/background/colonel_show_apply_point`; const url = `${GOODS_URI}/marketing/background/colonel_show_apply_point`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
const res = await req(ctx, opts); const res = await req(ctx, opts);
ctx.body = res; ctx.body = res;
}; };
//团长添加自提点 //团长添加自提点
exports.colonelAddApplyPoint = async ctx => { exports.colonelAddApplyPoint = async (ctx) => {
const url = `${GOODS_URI}/marketing/background/colonel_add_apply_point`; const url = `${GOODS_URI}/marketing/background/colonel_add_apply_point`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
const res = await req(ctx, opts); const res = await req(ctx, opts);
ctx.body = res; ctx.body = res;
}; };
//营销中心-活动列表 //营销中心-活动列表
exports.yingxiaoList = async ctx => { exports.yingxiaoList = async (ctx) => {
const url = `${GOODS_URI}/marketing/background/yingxiao_list`; const url = `${GOODS_URI}/marketing/background/yingxiao_list`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
const res = await req(ctx, opts); const res = await req(ctx, opts);
ctx.body = res; ctx.body = res;
}; };
//营销中心-活动列表 //营销中心-活动列表
exports.toogleYingxiaoOnlineStatus = async ctx => { exports.toogleYingxiaoOnlineStatus = async (ctx) => {
const url = `${GOODS_URI}/marketing/background/toogle_yingxiao_online_status`; const url = `${GOODS_URI}/marketing/background/toogle_yingxiao_online_status`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
const res = await req(ctx, opts); const res = await req(ctx, opts);
ctx.body = res; ctx.body = res;
}; };
//营销中心-充值 //营销中心-充值
exports.addAmount = async ctx => { exports.addAmount = async (ctx) => {
const url = `${GOODS_URI}/coupon/background/add_amount`; const url = `${GOODS_URI}/coupon/background/add_amount`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
const res = await req(ctx, opts); const res = await req(ctx, opts);
ctx.body = res; ctx.body = res;
}; };
//营销中心-查看活动配置 //营销中心-查看活动配置
exports.yingxiaoConfig = async ctx => { exports.yingxiaoConfig = async (ctx) => {
const url = `${GOODS_URI}/marketing/background/yingxiao_config`; const url = `${GOODS_URI}/marketing/background/yingxiao_config`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
const res = await req(ctx, opts); const res = await req(ctx, opts);
ctx.body = res; ctx.body = res;
}; };
//营销中心-修改活动配置 //营销中心-修改活动配置
exports.yingxiaoSaveConfig = async ctx => { exports.yingxiaoSaveConfig = async (ctx) => {
const url = `${GOODS_URI}/marketing/background/yingxiao_save_config`; const url = `${GOODS_URI}/marketing/background/yingxiao_save_config`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
const res = await req(ctx, opts); const res = await req(ctx, opts);
ctx.body = res; ctx.body = res;
}; };
...@@ -2,62 +2,62 @@ const GROUPMEAL_URI = require("../config.js").GROUPMEAL_URI; ...@@ -2,62 +2,62 @@ const GROUPMEAL_URI = require("../config.js").GROUPMEAL_URI;
const req = require("../utils/request").httpReq; const req = require("../utils/request").httpReq;
// 获取主页配送列表 // 获取主页配送列表
exports.getList = async ctx => { exports.getList = async (ctx) => {
const opts = { const opts = {
url: `${GROUPMEAL_URI}/order/deliverer/list_day_deliverer_conf`, url: `${GROUPMEAL_URI}/order/deliverer/list_day_deliverer_conf`,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 获取配送列表 // 获取配送列表
exports.getDelivererList = async ctx => { exports.getDelivererList = async (ctx) => {
const opts = { const opts = {
url: `${GROUPMEAL_URI}/order/deliverer/list_day_deliverer`, url: `${GROUPMEAL_URI}/order/deliverer/list_day_deliverer`,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 添加骑手 // 添加骑手
exports.getAddDeliverer = async ctx => { exports.getAddDeliverer = async (ctx) => {
const opts = { const opts = {
url: `${GROUPMEAL_URI}/order/deliverer/add_deliverer`, url: `${GROUPMEAL_URI}/order/deliverer/add_deliverer`,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 分配骑手 // 分配骑手
exports.getSaveDeliverer = async ctx => { exports.getSaveDeliverer = async (ctx) => {
const opts = { const opts = {
url: `${GROUPMEAL_URI}/order/deliverer/save_day_deliverer`, url: `${GROUPMEAL_URI}/order/deliverer/save_day_deliverer`,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 下载配送路线 -lh // 下载配送路线 -lh
exports.getDeliveryRoutes = async ctx => { exports.getDeliveryRoutes = async (ctx) => {
const opts = { const opts = {
url: `${GROUPMEAL_URI}/order/deliverer/build_plan`, url: `${GROUPMEAL_URI}/order/deliverer/build_plan`,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 查看下载配送路线记录 -lh // 查看下载配送路线记录 -lh
exports.getEmailRecords = async ctx => { exports.getEmailRecords = async (ctx) => {
const opts = { const opts = {
url: `${GROUPMEAL_URI}/order/deliverer/plan_down_log`, url: `${GROUPMEAL_URI}/order/deliverer/plan_down_log`,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
...@@ -65,93 +65,93 @@ exports.getEmailRecords = async ctx => { ...@@ -65,93 +65,93 @@ exports.getEmailRecords = async ctx => {
// 老订单管理 // 老订单管理
// 获取订单管理列表 // 获取订单管理列表
exports.getOrderList = async ctx => { exports.getOrderList = async (ctx) => {
const url = `${GROUPMEAL_URI}/order/oldbackground/order_list`; const url = `${GROUPMEAL_URI}/order/oldbackground/order_list`;
const opts = { const opts = {
url, url,
method: "GET" method: "GET",
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 获取活动名称 // 获取活动名称
exports.getMarketingList = async ctx => { exports.getMarketingList = async (ctx) => {
const url = `${GROUPMEAL_URI}/order/oldbackground/marketing_list`; const url = `${GROUPMEAL_URI}/order/oldbackground/marketing_list`;
const opts = { const opts = {
url, url,
method: "GET" method: "GET",
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 获取商品名称 // 获取商品名称
exports.getGoodsList = async ctx => { exports.getGoodsList = async (ctx) => {
const url = `${GROUPMEAL_URI}/order/oldbackground/goods_list`; const url = `${GROUPMEAL_URI}/order/oldbackground/goods_list`;
const opts = { const opts = {
url, url,
method: "GET" method: "GET",
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 获取自提点 // 获取自提点
exports.getSubShopList = async ctx => { exports.getSubShopList = async (ctx) => {
const url = `${GROUPMEAL_URI}/order/oldbackground/sub_shop_list`; const url = `${GROUPMEAL_URI}/order/oldbackground/sub_shop_list`;
const opts = { const opts = {
url, url,
method: "GET" method: "GET",
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 导出订单 // 导出订单
exports.orderExport = async ctx => { exports.orderExport = async (ctx) => {
const url = `${GROUPMEAL_URI}/order/oldbackground/order_export`; const url = `${GROUPMEAL_URI}/order/oldbackground/order_export`;
const opts = { const opts = {
url, url,
method: "GET" method: "GET",
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 打印订单 // 打印订单
exports.orderPrint = async ctx => { exports.orderPrint = async (ctx) => {
const url = `${GROUPMEAL_URI}/order/oldbackground/order_print`; const url = `${GROUPMEAL_URI}/order/oldbackground/order_print`;
const opts = { const opts = {
url, url,
method: "GET" method: "GET",
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 订单退款列表 // 订单退款列表
exports.orderItemList = async ctx => { exports.orderItemList = async (ctx) => {
const url = `${GROUPMEAL_URI}/order/oldbackground/order_item_list`; const url = `${GROUPMEAL_URI}/order/oldbackground/order_item_list`;
const opts = { const opts = {
url, url,
method: "GET" method: "GET",
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 订单退款列表 // 订单退款列表
exports.orderRefund = async ctx => { exports.orderRefund = async (ctx) => {
const url = `${GROUPMEAL_URI}/order/oldbackground/order_refund`; const url = `${GROUPMEAL_URI}/order/oldbackground/order_refund`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 订单驳回 // 订单驳回
exports.orderRefundReject = async ctx => { exports.orderRefundReject = async (ctx) => {
const url = `${GROUPMEAL_URI}/order/oldbackground/order_refund_reject`; const url = `${GROUPMEAL_URI}/order/oldbackground/order_refund_reject`;
const opts = { const opts = {
url, url,
method: "GET" method: "GET",
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
...@@ -159,93 +159,94 @@ exports.orderRefundReject = async ctx => { ...@@ -159,93 +159,94 @@ exports.orderRefundReject = async ctx => {
// 新订单管理 // 新订单管理
// 获取订单管理列表 // 获取订单管理列表
exports.newGetOrderList = async ctx => { exports.newGetOrderList = async (ctx) => {
const url = `${GROUPMEAL_URI}/order/background/order_list`; const url = `${GROUPMEAL_URI}/order/background/order_list`;
const opts = { const opts = {
url, url,
method: "GET" method: "GET",
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 获取活动名称 // 获取活动名称
exports.newGetMarketingList = async ctx => { exports.newGetMarketingList = async (ctx) => {
const url = `${GROUPMEAL_URI}/order/background/order_condition_marketing_list`; const url = `${GROUPMEAL_URI}/order/background/order_condition_marketing_list`;
const opts = { const opts = {
url, url,
method: "GET" method: "GET",
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 获取商品名称 // 获取商品名称
exports.newGetGoodsList = async ctx => { exports.newGetGoodsList = async (ctx) => {
const url = `${GROUPMEAL_URI}/order/background/order_condition_goods_list`; const url = `${GROUPMEAL_URI}/order/background/order_condition_goods_list`;
const opts = { const opts = {
url, url,
method: "GET" method: "GET",
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 获取自提点 // 获取自提点
exports.newGetSubShopList = async ctx => { exports.newGetSubShopList = async (ctx) => {
const url = `${GROUPMEAL_URI}/order/background/order_condition_take_place_list`; const url = `${GROUPMEAL_URI}/order/background/order_condition_take_place_list`;
const opts = { const opts = {
url, url,
method: "GET" method: "GET",
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 导出订单 // 导出订单
exports.newOrderExport = async ctx => { exports.newOrderExport = async (ctx) => {
const url = `${GROUPMEAL_URI}/order/background/order_export`; const url = `${GROUPMEAL_URI}/order/background/order_export`;
const opts = { const opts = {
url, url,
method: "GET" method: "GET",
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 打印订单 // 打印订单
exports.newOrderPrint = async ctx => { exports.newOrderPrint = async (ctx) => {
const url = `${GROUPMEAL_URI}/order/background/order_print`; const url = `${GROUPMEAL_URI}/order/background/order_print`;
const opts = { const opts = {
url, url,
method: "GET" method: "GET",
timeout: 30000,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 订单退款列表 // 订单退款列表
exports.newOrderItemList = async ctx => { exports.newOrderItemList = async (ctx) => {
const url = `${GROUPMEAL_URI}/order/background/order_item_list`; const url = `${GROUPMEAL_URI}/order/background/order_item_list`;
const opts = { const opts = {
url, url,
method: "GET" method: "GET",
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 订单退款列表 // 订单退款列表
exports.newOrderRefund = async ctx => { exports.newOrderRefund = async (ctx) => {
const url = `${GROUPMEAL_URI}/order/background/order_refund`; const url = `${GROUPMEAL_URI}/order/background/order_refund`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 订单驳回 // 订单驳回
exports.newOrderRefundReject = async ctx => { exports.newOrderRefundReject = async (ctx) => {
const url = `${GROUPMEAL_URI}/order/background/order_refund_reject`; const url = `${GROUPMEAL_URI}/order/background/order_refund_reject`;
const opts = { const opts = {
url, url,
method: "GET" method: "GET",
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
const API_INTERNAL_URI = require('../config.js').API_INTERNAL_URI const API_INTERNAL_URI = require("../config.js").API_INTERNAL_URI;
//生活号列表 //生活号列表
const req = require('../utils/request').httpReq const req = require("../utils/request").httpReq;
exports.get_life_list = async (ctx, next) => { exports.get_life_list = async (ctx, next) => {
var url = `${API_INTERNAL_URI}/merchant/lifeinner/life_list`; var url = `${API_INTERNAL_URI}/merchant/lifeinner/life_list`;
var opts = { var opts = {
url: url, url: url,
method: 'GET', method: "GET",
qs: ctx.request.query qs: ctx.request.query,
} };
ctx.body = await req(ctx, opts) ctx.body = await req(ctx, opts);
} };
//生活号详情 //生活号详情
exports.get_life_info = async (ctx, next) => { exports.get_life_info = async (ctx, next) => {
var url = `${API_INTERNAL_URI}/merchant/lifeinner/life_info`; var url = `${API_INTERNAL_URI}/merchant/lifeinner/life_info`;
var opts = { var opts = {
url: url, url: url,
method: 'POST', method: "POST",
json: true, json: true,
timeout: 8000, timeout: 8000,
body: ctx.request.body body: ctx.request.body,
} };
ctx.body = await req(ctx, opts) ctx.body = await req(ctx, opts);
} };
const qr = require('qr-image'); const qr = require("qr-image");
exports.gen_qr_code = async (ctx) => { exports.gen_qr_code = async (ctx) => {
const url = ctx.query.url; const url = ctx.query.url;
try { try {
let img = qr.image(decodeURIComponent(url)); let img = qr.image(decodeURIComponent(url));
ctx.type= 'image/png'; ctx.type = "image/png";
ctx.body = img; ctx.body = img;
} catch (e) { } catch (e) {
ctx.type='text/html;charset=utf-8'; ctx.type = "text/html;charset=utf-8";
ctx.body='<h1>414 Request-URI Too Large</h1>'; ctx.body = "<h1>414 Request-URI Too Large</h1>";
} }
}; };
const API_INTERNAL_URI = require('../config.js').API_INTERNAL_URI const API_INTERNAL_URI = require("../config.js").API_INTERNAL_URI;
const req = require('../utils/request').httpReq const req = require("../utils/request").httpReq;
const controller_utils = require('./utils') const controller_utils = require("./utils");
exports.getAll_role_list = async (ctx, next) => { exports.getAll_role_list = async (ctx, next) => {
ctx.body = await controller_utils.getUserPermission(ctx); ctx.body = await controller_utils.getUserPermission(ctx);
} };
exports.getRole_list = async (ctx, next) => { exports.getRole_list = async (ctx, next) => {
var url = `${API_INTERNAL_URI}/merchant/authority/role_list`; var url = `${API_INTERNAL_URI}/merchant/authority/role_list`;
var opts = { var opts = {
url: url, url: url,
method: 'POST', method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
} };
ctx.body = await req(ctx, opts) ctx.body = await req(ctx, opts);
} };
exports.getAdd_role = async (ctx, next) => { exports.getAdd_role = async (ctx, next) => {
var url = `${API_INTERNAL_URI}/merchant/authority/add_role`; var url = `${API_INTERNAL_URI}/merchant/authority/add_role`;
var opts = { var opts = {
url: url, url: url,
method: 'POST', method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
} };
ctx.body = await req(ctx, opts) ctx.body = await req(ctx, opts);
} };
exports.get_role_info = async (ctx, next) => { exports.get_role_info = async (ctx, next) => {
var url = `${API_INTERNAL_URI}/merchant/authority/get_role_info`; var url = `${API_INTERNAL_URI}/merchant/authority/get_role_info`;
var opts = { var opts = {
url: url, url: url,
method: 'POST', method: "POST",
json: true, json: true,
timeout: 8000, timeout: 8000,
body: ctx.request.body body: ctx.request.body,
} };
ctx.body = await req(ctx, opts) ctx.body = await req(ctx, opts);
} };
exports.getUpdate_role = async (ctx, next) => { exports.getUpdate_role = async (ctx, next) => {
var url = `${API_INTERNAL_URI}/merchant/authority/update_role`; var url = `${API_INTERNAL_URI}/merchant/authority/update_role`;
var opts = { var opts = {
url: url, url: url,
method: 'POST', method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
} };
ctx.body = await req(ctx, opts) ctx.body = await req(ctx, opts);
} };
exports.getDelete_role = async (ctx, next) => { exports.getDelete_role = async (ctx, next) => {
var url = `${API_INTERNAL_URI}/merchant/authority/delete_role`; var url = `${API_INTERNAL_URI}/merchant/authority/delete_role`;
var opts = { var opts = {
url: url, url: url,
method: 'POST', method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
} };
ctx.body = await req(ctx, opts) ctx.body = await req(ctx, opts);
} };
...@@ -11,15 +11,22 @@ exports.index = (ctx, next) => { ...@@ -11,15 +11,22 @@ exports.index = (ctx, next) => {
const hostname = ctx.hostname; const hostname = ctx.hostname;
const pathArr = ctx.path.substring(1).split("/"); const pathArr = ctx.path.substring(1).split("/");
// console.log(hostname); console.log(hostname);
// console.log(pathArr); console.log(pathArr);
if (hostname === "opservice.yidianzixun.com" || hostname === "www.opservice.yidianzixun.com") { // 外网域名
if (pathArr[1] !== "activity" && pathArr[1] !== "groupmeal") { const hostNameArr = ["127.0.0.1", "opservice.yidianzixun.com", "test-opservice.yidianzixun.com", "preprod-opservice.yidianzixun.com"];
// 允许访问的模块
const allowModuleArr = ["activity", "groupmeal"];
// 不允许访问的模块
const noAllowModuleArr = ["goods", "enterprise", "withdrawal"];
if (hostNameArr.includes(hostname) && noAllowModuleArr.includes(pathArr[1])) {
ctx.body = "权限不足"; ctx.body = "权限不足";
return; return;
} }
}
if (!cachePage) { if (!cachePage) {
cachePage = fs.readFileSync(path.join(__dirname, "../../public/dist/index.html"), { encoding: "utf-8" }); cachePage = fs.readFileSync(path.join(__dirname, "../../public/dist/index.html"), { encoding: "utf-8" });
......
...@@ -2,15 +2,14 @@ const PANDORA_URI = require("../config.js").PANDORA_URI; ...@@ -2,15 +2,14 @@ const PANDORA_URI = require("../config.js").PANDORA_URI;
const req = require("../utils/request").httpReq; const req = require("../utils/request").httpReq;
const { API_INTERNAL_URI, API_YD_LOGIN } = require("../config.js"); const { API_INTERNAL_URI, API_YD_LOGIN } = require("../config.js");
exports.fetch_user = async (ctx, next) => { exports.fetch_user = async (ctx, next) => {
const url = `${PANDORA_URI}/api/user/getuser`; const url = `${PANDORA_URI}/api/user/getuser`;
const opts = { const opts = {
url: url, url: url,
method: "GET", method: "GET",
headers: { headers: {
Cookie: ctx.request.header.cookie Cookie: ctx.request.header.cookie,
} },
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
...@@ -19,20 +18,20 @@ exports.J_login = async (ctx, next) => { ...@@ -19,20 +18,20 @@ exports.J_login = async (ctx, next) => {
var url = `${API_INTERNAL_URI}/merchant/authority/login`; var url = `${API_INTERNAL_URI}/merchant/authority/login`;
var opts = { var opts = {
url: url, url: url,
method: 'POST', method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
} };
ctx.body = await req(ctx, opts) ctx.body = await req(ctx, opts);
} };
exports.YD_login = async (ctx, next) => { exports.YD_login = async (ctx, next) => {
var url = API_YD_LOGIN; var url = API_YD_LOGIN;
var opts = { var opts = {
url: url, url: url,
method: 'POST', method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
} };
ctx.body = await req(ctx, opts) ctx.body = await req(ctx, opts);
} };
const API_INTERNAL_URI = require('../config.js').API_INTERNAL_URI const API_INTERNAL_URI = require("../config.js").API_INTERNAL_URI;
const req = require('../utils/request').httpReq const req = require("../utils/request").httpReq;
const controller_utils = require('./utils') const controller_utils = require("./utils");
//用户详情 //用户详情
exports.getUser_detail = async (ctx, next) => { exports.getUser_detail = async (ctx, next) => {
var url = `${API_INTERNAL_URI}/merchant/authority/get_user_info`; var url = `${API_INTERNAL_URI}/merchant/authority/get_user_info`;
var opts = { var opts = {
url: url, url: url,
method: 'POST', method: "POST",
json: true, json: true,
timeout: 8000, timeout: 8000,
body: ctx.request.body body: ctx.request.body,
} };
ctx.body = await req(ctx, opts) ctx.body = await req(ctx, opts);
} };
var query = { var query = {
async get_permissions (ctx) { async get_permissions(ctx) {
ctx.body = await controller_utils.getUserPermission(ctx); ctx.body = await controller_utils.getUserPermission(ctx);
} },
}; };
exports.query = async (ctx, next) => { exports.query = async (ctx, next) => {
var type = ctx.params.type; var type = ctx.params.type;
if (query[type]) { if (query[type]) {
...@@ -34,7 +33,7 @@ exports.query = async (ctx, next) => { ...@@ -34,7 +33,7 @@ exports.query = async (ctx, next) => {
} else { } else {
ctx.body = { ctx.body = {
status: "failed", status: "failed",
reason: "Invalid type param" reason: "Invalid type param",
}; };
} }
}; };
...@@ -104,6 +103,3 @@ exports.couponGrant = async (ctx, next) => { ...@@ -104,6 +103,3 @@ exports.couponGrant = async (ctx, next) => {
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
const API_INTERNAL_URI = require('../config.js').API_INTERNAL_URI const API_INTERNAL_URI = require("../config.js").API_INTERNAL_URI;
const req = require('../utils/request').httpReq const req = require("../utils/request").httpReq;
exports.getUserPermission = async (ctx) => { exports.getUserPermission = async (ctx) => {
const url = `${API_INTERNAL_URI}/merchant/authority/get_role_list`; const url = `${API_INTERNAL_URI}/merchant/authority/get_role_list`;
...@@ -10,8 +10,8 @@ exports.getUserPermission = async (ctx) => { ...@@ -10,8 +10,8 @@ exports.getUserPermission = async (ctx) => {
method: "GET", method: "GET",
qs: { qs: {
// user_email: "jianghaiming@126.com" // user_email: "jianghaiming@126.com"
user_email: user user_email: user,
} },
}; };
return await req(ctx, opts); return await req(ctx, opts);
} };
\ No newline at end of file
...@@ -17,124 +17,124 @@ const req = require("../utils/request").httpReq; ...@@ -17,124 +17,124 @@ const req = require("../utils/request").httpReq;
* }; * };
*/ */
// 获取提现审核列表 // 获取提现审核列表
exports.getApplyList = async ctx => { exports.getApplyList = async (ctx) => {
const url = `${WITHDRAWAL_URI}/wallet/background/apply_list`; const url = `${WITHDRAWAL_URI}/wallet/background/apply_list`;
const opts = { const opts = {
url, url,
method: "GET", method: "GET",
qs: ctx.request.query qs: ctx.request.query,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 获取黑名单冻结账户 // 获取黑名单冻结账户
exports.getBlackList = async ctx => { exports.getBlackList = async (ctx) => {
const url = `${WITHDRAWAL_URI}/wallet/background/blacklist`; const url = `${WITHDRAWAL_URI}/wallet/background/blacklist`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 获取通过、拒绝订单审核 // 获取通过、拒绝订单审核
exports.getWithdrawAudit = async ctx => { exports.getWithdrawAudit = async (ctx) => {
const url = `${WITHDRAWAL_URI}/wallet/background/withdraw_audit`; const url = `${WITHDRAWAL_URI}/wallet/background/withdraw_audit`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body, body: ctx.request.body,
timeout: 10000 timeout: 10000,
} };
ctx.body = await req(ctx, opts) ctx.body = await req(ctx, opts);
} };
// 获取提现失败冻结 // 获取提现失败冻结
exports.getFreezingFund = async ctx => { exports.getFreezingFund = async (ctx) => {
const url = `${WITHDRAWAL_URI}/wallet/background/back_freezing_fund`; const url = `${WITHDRAWAL_URI}/wallet/background/back_freezing_fund`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
} };
ctx.body = await req(ctx, opts) ctx.body = await req(ctx, opts);
} };
// 获取提现审核详情 // 获取提现审核详情
exports.getApplyDetail = async ctx => { exports.getApplyDetail = async (ctx) => {
const url = `${WITHDRAWAL_URI}/wallet/background/apply_detail`; const url = `${WITHDRAWAL_URI}/wallet/background/apply_detail`;
const opts = { const opts = {
url, url,
method: "GET", method: "GET",
qs: ctx.request.query qs: ctx.request.query,
} };
ctx.body = await req(ctx, opts) ctx.body = await req(ctx, opts);
} };
// 提现审核迭代 // 提现审核迭代
// 获取钱包账户列表 // 获取钱包账户列表
exports.getAccountList = async ctx => { exports.getAccountList = async (ctx) => {
const url = `${WITHDRAWAL_URI}/wallet/background/account_list`; const url = `${WITHDRAWAL_URI}/wallet/background/account_list`;
const opts = { const opts = {
url, url,
method: "GET", method: "GET",
qs: ctx.request.query qs: ctx.request.query,
} };
ctx.body = await req(ctx, opts) ctx.body = await req(ctx, opts);
} };
// 获取钱包账户流水列表 // 获取钱包账户流水列表
exports.getRecordList = async ctx => { exports.getRecordList = async (ctx) => {
const url = `${WITHDRAWAL_URI}/wallet/background/record_list`; const url = `${WITHDRAWAL_URI}/wallet/background/record_list`;
const opts = { const opts = {
url, url,
method: "GET", method: "GET",
qs: ctx.request.query qs: ctx.request.query,
} };
ctx.body = await req(ctx, opts) ctx.body = await req(ctx, opts);
} };
// 钱包账户黑名单 // 钱包账户黑名单
exports.getAccountBlackList = async ctx => { exports.getAccountBlackList = async (ctx) => {
const url = `${WITHDRAWAL_URI}/wallet/background/blacklist`; const url = `${WITHDRAWAL_URI}/wallet/background/blacklist`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
} };
ctx.body = await req(ctx, opts) ctx.body = await req(ctx, opts);
} };
// 钱包账户释放 // 钱包账户释放
exports.getReblackList = async ctx => { exports.getReblackList = async (ctx) => {
const url = `${WITHDRAWAL_URI}/wallet/background/reblacklist`; const url = `${WITHDRAWAL_URI}/wallet/background/reblacklist`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body,
} };
ctx.body = await req(ctx, opts) ctx.body = await req(ctx, opts);
} };
// 获取钱包账户余额状态 // 获取钱包账户余额状态
exports.getWalletAccountStatus = async ctx=>{ exports.getWalletAccountStatus = async (ctx) => {
const url = `${WITHDRAWAL_URI}/wallet/background/get_wallet_account_status`; const url = `${WITHDRAWAL_URI}/wallet/background/get_wallet_account_status`;
const opts = { const opts = {
url, url,
method: "GET", method: "GET",
qs: ctx.request.query qs: ctx.request.query,
} };
ctx.body = await req(ctx,opts) ctx.body = await req(ctx, opts);
} };
// 钱包账户余额状态 // 钱包账户余额状态
exports.resetAccountStatus = async ctx=>{ exports.resetAccountStatus = async (ctx) => {
const url = `${WITHDRAWAL_URI}/wallet/background/reset_wallet_account_status`; const url = `${WITHDRAWAL_URI}/wallet/background/reset_wallet_account_status`;
const opts = { const opts = {
url, url,
method:"POST", method: "POST",
json:true, json: true,
body:ctx.request.body body: ctx.request.body,
} };
ctx.body = await req(ctx,opts) ctx.body = await req(ctx, opts);
} };
const getUserPermission = async (ctx) => { const getUserPermission = async (ctx) => {
const url = `${WITHDRAWAL_URI}/merchant/authority/get_role_list`; const url = `${WITHDRAWAL_URI}/merchant/authority/get_role_list`;
...@@ -145,11 +145,11 @@ const getUserPermission = async (ctx) => { ...@@ -145,11 +145,11 @@ const getUserPermission = async (ctx) => {
method: "GET", method: "GET",
qs: { qs: {
// user_email: "jianghaiming@126.com" // user_email: "jianghaiming@126.com"
user_email: user user_email: user,
} },
}; };
return await req(ctx, opts); return await req(ctx, opts);
} };
exports.getAll_role_list = async (ctx, next) => { exports.getAll_role_list = async (ctx, next) => {
ctx.body = await getUserPermission(ctx); ctx.body = await getUserPermission(ctx);
} };
\ No newline at end of file
This diff is collapsed.
...@@ -11,17 +11,13 @@ exports.httpReq = (ctx, opts) => { ...@@ -11,17 +11,13 @@ exports.httpReq = (ctx, opts) => {
version: "999999", version: "999999",
distribution: "op", distribution: "op",
net: "wifi", net: "wifi",
platform: "2" platform: "2",
}; };
opts.qs = { ...defaultQs, ...ctx.request.query, ...opts.qs }; opts.qs = { ...defaultQs, ...ctx.request.query, ...opts.qs };
request(opts, (err, res, body) => { request(opts, (err, res, body) => {
console.info( console.info(`[Api] httpReq (${opts.url}, user:[${opts.qs.op_cur_user}]) spent: ${+new Date() - time_start}ms`);
`[Api] httpReq (${opts.url}, user:[${
opts.qs.op_cur_user
}]) spent: ${+new Date() - time_start}ms`
);
if (!err) { if (!err) {
resolve(body); resolve(body);
......
...@@ -10,27 +10,27 @@ ...@@ -10,27 +10,27 @@
</template> </template>
<script> <script>
import { getCookie, redirectToLogin } from '@/utils/util'; import { getCookie, redirectToLogin } from "@/utils/util";
import { fetchCurrentUser } from './service/user'; import { fetchCurrentUser } from "./service/user";
export default { export default {
async mounted() { async mounted() {
if (this.$store.state.permissions && this.$store.state.userInfo) return; if (this.$store.state.permissions && this.$store.state.userInfo) return;
if (!getCookie('username') && window.location.pathname != '/op/login') { if (!getCookie("username") && window.location.pathname != "/op/login") {
this.$message('请先登录'); this.$message("请先登录");
return redirectToLogin(); return redirectToLogin();
} }
if (!this.$store.state.permissions) { if (!this.$store.state.permissions) {
const { status, user } = await fetchCurrentUser(); const { status, user } = await fetchCurrentUser();
if (status === 'success') { if (status === "success") {
this.$store.commit('updateUserInfo', user); this.$store.commit("updateUserInfo", user);
await this.$store.dispatch('updateUserPermission', { email: user.email }); await this.$store.dispatch("updateUserPermission", { email: user.email });
this.$store.dispatch('fetchPermission', { this.$store.dispatch("fetchPermission", {
appId: 'merchant-op-auditing' appId: "merchant-op-auditing",
}); });
} }
} }
} },
}; };
</script> </script>
......
...@@ -14,15 +14,8 @@ ...@@ -14,15 +14,8 @@
<slot></slot> <slot></slot>
<template #footer> <template #footer>
<span class="dialog-footer"> <span class="dialog-footer">
<el-button v-show="isShowCancelButton" @click="cancel">{{ <el-button v-show="isShowCancelButton" @click="cancel">{{ cancelButtonText }}</el-button>
cancelButtonText <el-button v-show="isShowConfirmButton" type="primary" @click="cofirm">{{ confirmButtonText }}</el-button>
}}</el-button>
<el-button
v-show="isShowConfirmButton"
type="primary"
@click="cofirm"
>{{ confirmButtonText }}</el-button
>
</span> </span>
</template> </template>
</el-dialog> </el-dialog>
...@@ -30,94 +23,94 @@ ...@@ -30,94 +23,94 @@
</template> </template>
<script> <script>
export default { export default {
props: { props: {
// 标题 // 标题
dialogTitle: { dialogTitle: {
type: String, type: String,
default: "标题" default: "标题",
}, },
// dialog 显示控制 // dialog 显示控制
myDialogVisible: { myDialogVisible: {
type: Boolean, type: Boolean,
default: false default: false,
}, },
// 确认button文案 // 确认button文案
confirmButtonText: { confirmButtonText: {
type: String, type: String,
default: "确 定" default: "确 定",
}, },
// 取消button文案 // 取消button文案
cancelButtonText: { cancelButtonText: {
type: String, type: String,
default: "取 消" default: "取 消",
}, },
// 宽度 // 宽度
dialogWidth: { dialogWidth: {
type: String, type: String,
default: "50%" default: "50%",
}, },
// 距离顶部的margin // 距离顶部的margin
dialogMarginTop: { dialogMarginTop: {
type: String, type: String,
default: "15vh" default: "15vh",
}, },
// 是否需要遮罩层 // 是否需要遮罩层
dialogModel: { dialogModel: {
type: Boolean, type: Boolean,
default: true default: true,
}, },
// 点击遮罩层是否关闭dialog // 点击遮罩层是否关闭dialog
dialogCloseOnClickModal: { dialogCloseOnClickModal: {
type: Boolean, type: Boolean,
default: false default: false,
}, },
// 是否显示关闭(右上角X) // 是否显示关闭(右上角X)
showDialogClose: { showDialogClose: {
type: Boolean, type: Boolean,
default: false default: false,
}, },
// 是否展示确定按钮 // 是否展示确定按钮
isShowConfirmButton: { isShowConfirmButton: {
type: Boolean, type: Boolean,
default: true default: true,
}, },
// 是否展示取消按钮 // 是否展示取消按钮
isShowCancelButton: { isShowCancelButton: {
type: Boolean, type: Boolean,
default: true default: true,
}, },
// 点击esc是否关闭 // 点击esc是否关闭
dialogCloseOnPressEscape: { dialogCloseOnPressEscape: {
type: Boolean, type: Boolean,
default: false default: false,
}, },
// 底部按钮是否居中显示 // 底部按钮是否居中显示
dialogCenter: { dialogCenter: {
type: Boolean, type: Boolean,
default: false default: false,
}, },
// cancelDialog 方法名称 // cancelDialog 方法名称
cancelDialogMethodName: { cancelDialogMethodName: {
type: String, type: String,
default: "dialogCancel" default: "dialogCancel",
}, },
// confirmDialog 方法名称 // confirmDialog 方法名称
confirmDialogMethodName: { confirmDialogMethodName: {
type: String, type: String,
default: "dialogConfirm" default: "dialogConfirm",
} },
}, },
data() { data() {
return { return {
dialogVisible: this.myDialogVisible dialogVisible: this.myDialogVisible,
}; };
}, },
watch: { watch: {
myDialogVisible(newVal) { myDialogVisible(newVal) {
this.dialogVisible = newVal; this.dialogVisible = newVal;
} },
}, },
methods: { methods: {
cancel() { cancel() {
...@@ -125,8 +118,8 @@ export default { ...@@ -125,8 +118,8 @@ export default {
}, },
cofirm() { cofirm() {
this.$emit(this.confirmDialogMethodName); this.$emit(this.confirmDialogMethodName);
} },
} },
}; };
</script> </script>
<style lang="less" scoped></style> <style lang="less" scoped></style>
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
</template> </template>
<script> <script>
export default {}; export default {};
</script> </script>
<style></style> <style></style>
<template> <template>
<el-dropdown> <el-dropdown>
<div class="user-info"> <div class="user-info">
<el-avatar <el-avatar :src="userInfo.avatar || DEFAULT_AVATAR" size="small"></el-avatar>
:src="userInfo.avatar || DEFAULT_AVATAR" <span class="user-name">{{ userInfo.name }}</span>
size="small"
></el-avatar>
<span class="user-name">{{userInfo.name}}</span>
</div> </div>
<template #dropdown> <template #dropdown>
<el-dropdown-menu trigger="hover"> <el-dropdown-menu trigger="hover">
<el-dropdown-item> <el-dropdown-item>
{{ userEmail }} {{ userEmail }}
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item @click="$emit('logout')"> <el-dropdown-item @click="$emit('logout')">退出登录</el-dropdown-item>
退出登录
</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</template> </template>
</el-dropdown> </el-dropdown>
</template> </template>
<script> <script>
import { mapState } from 'vuex' import { mapState } from "vuex";
import { HEADER_CONFIG } from '@/config/pageconfig'; import { HEADER_CONFIG } from "@/config/pageconfig";
import { getCookie } from "@/utils/util"; import { getCookie } from "@/utils/util";
export default { export default {
computed: mapState({ computed: mapState({
userInfo: state => (state.userInfo || {}), userInfo: (state) => state.userInfo || {},
}), }),
data () { data() {
return { return {
DEFAULT_AVATAR: HEADER_CONFIG.miscellaneous.defaultAvatar, DEFAULT_AVATAR: HEADER_CONFIG.miscellaneous.defaultAvatar,
userEmail: '' userEmail: "",
}; };
}, },
mounted() { mounted() {
this.userEmail = getCookie('username') || '' this.userEmail = getCookie("username") || "";
} },
}; };
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.user-info { .user-info {
display: flex; display: flex;
align-items: center; align-items: center;
} }
.user-name { .user-name {
margin-left: 12px; margin-left: 12px;
color: #fff; color: #fff;
} }
</style> </style>
const headerConfig = { const headerConfig = {
appName: 'OP运营管理后台', appName: "OP运营管理后台",
logo: 'http://si1.go2yd.com/get-image/0ZAJxXeZ6iu', logo: "http://si1.go2yd.com/get-image/0ZAJxXeZ6iu",
menuItems: [ menuItems: [
{ {
path: '/enterprise/certification', path: "/enterprise/certification",
name: '企业认证管理' name: "企业认证管理",
}, },
{ {
path: '/lifeNo', path: "/lifeNo",
name: '生活号管理' name: "生活号管理",
}, },
{ {
path: '/role', path: "/role",
name: '角色管理' name: "角色管理",
}, },
{ {
path: '/user', path: "/user",
name: '用户管理' name: "用户管理",
} },
], ],
miscellaneous: { miscellaneous: {
// 配置当用户头像不存在时使用的fallback头像图URL // 配置当用户头像不存在时使用的fallback头像图URL
defaultAvatar: '//s.go2yd.com/a/thead_meiguoduizhang.png', defaultAvatar: "//s.go2yd.com/a/thead_meiguoduizhang.png",
}, },
}; };
......
...@@ -8,11 +8,7 @@ ...@@ -8,11 +8,7 @@
active-text-color="#ffd04b" active-text-color="#ffd04b"
mode="horizontal" mode="horizontal"
> >
<el-menu-item <el-menu-item v-for="item in menuItemsWithAuth" :index="item.path" :key="item.name">
v-for="item in menuItemsWithAuth"
:index="item.path"
:key="item.name"
>
{{ item.name }} {{ item.name }}
</el-menu-item> </el-menu-item>
<el-menu-item key="usermenu" class="user-menu"> <el-menu-item key="usermenu" class="user-menu">
...@@ -23,51 +19,50 @@ ...@@ -23,51 +19,50 @@
</template> </template>
<script> <script>
import { HEADER_CONFIG } from "@/config/pageconfig"; import { HEADER_CONFIG } from "@/config/pageconfig";
import User from './User.vue'; import User from "./User.vue";
import { createNamespacedHelpers } from 'vuex' import { createNamespacedHelpers } from "vuex";
const { mapActions } = createNamespacedHelpers('login') const { mapActions } = createNamespacedHelpers("login");
const { menuItems } = HEADER_CONFIG; const { menuItems } = HEADER_CONFIG;
export default { export default {
name: "PageHeader", name: "PageHeader",
components: { components: {
User, User,
}, },
data () { data() {
return { return {
menuItems, menuItems,
}; };
}, },
computed: { computed: {
menuItemsWithAuth: function () { menuItemsWithAuth: function () {
const keys = Object.keys(this.$store.getters.subPermissions) const keys = Object.keys(this.$store.getters.subPermissions);
return this.menuItems.filter(ele => keys.includes(ele.key)) return this.menuItems.filter((ele) => keys.includes(ele.key));
}, },
activeMenu: function () { activeMenu: function () {
return this.$route.path; return this.$route.path;
}, },
}, },
beforeMount () { beforeMount() {},
},
methods: { methods: {
...mapActions(['logout']), ...mapActions(["logout"]),
handleLogout() { handleLogout() {
this.logout() this.logout();
}, },
}, },
}; };
</script> </script>
<style lang="less"> <style lang="less">
.menu-router { .menu-router {
display: inline-block; display: inline-block;
line-height: 60px; line-height: 60px;
width: 100%; width: 100%;
} }
.user-menu { .user-menu {
float: right !important; float: right !important;
margin-right: 20px; margin-right: 20px;
} }
</style> </style>
...@@ -7,40 +7,38 @@ ...@@ -7,40 +7,38 @@
:page-size="pageSize" :page-size="pageSize"
layout=" total,prev, pager, next" layout=" total,prev, pager, next"
:total="totalNum" :total="totalNum"
> ></el-pagination>
</el-pagination>
</div> </div>
</template> </template>
<script> <script>
export default { export default {
props: { props: {
data: Object, data: Object,
totalNum: Number, totalNum: Number,
pageSize: { pageSize: {
type: Number, type: Number,
default: 20, default: 20,
}
}, },
data () { },
data() {
return { return {
currentPage: 1 currentPage: 1,
} };
}, },
methods: { methods: {
handleSizeChange (size) { handleSizeChange(size) {
console.log(`每页 ${size} 条`); console.log(`每页 ${size} 条`);
this.$emit('update', { pageSize: size, }) this.$emit("update", { pageSize: size });
}, },
handleCurrentChange (pageIndex) { handleCurrentChange(pageIndex) {
console.log(`当前页: ${pageIndex}`); console.log(`当前页: ${pageIndex}`);
this.$emit('update', { page: pageIndex }) this.$emit("update", { page: pageIndex });
} },
}, },
} };
</script> </script>
<style lang="less"> <style lang="less">
.block { .block {
margin-top: 50px; margin-top: 50px;
} }
</style> </style>
<template> <template>
<div class="user-detail"> <div class="user-detail">
<el-page-header @back="goBack" content="角色详情页面"> </el-page-header> <el-page-header @back="goBack" content="角色详情页面"></el-page-header>
<el-card class="management"> <el-card class="management">
<h5 style="margin-bottom: 10px">角色信息</h5> <h5 style="margin-bottom: 10px">角色信息</h5>
<el-descriptions class="margin-top" :column="2" border> <el-descriptions class="margin-top" :column="2" border>
<el-descriptions-item> <el-descriptions-item>
<template #label> ID </template> <template #label>ID</template>
{{ roleId }} {{ roleId }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> 角色状态 </template> <template #label>角色状态</template>
{{ {{ role_info_detail.role_status == 1 ? "正常" : role_info_detail.role_status == 2 ? "禁用" : "删除" }}
role_info_detail.role_status == 1
? "正常"
: role_info_detail.role_status == 2
? "禁用"
: "删除"
}}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> 角色名称 </template> <template #label>角色名称</template>
{{ role_info_detail.role_name }} {{ role_info_detail.role_name }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> 创建人账号 </template> <template #label>创建人账号</template>
{{ role_info_detail.create_user_name }} {{ role_info_detail.create_user_name }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> 创建时间 </template> <template #label>创建时间</template>
{{ role_info_detail.create_time }} {{ role_info_detail.create_time }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> 最后修改人账号 </template> <template #label>最后修改人账号</template>
{{ role_info_detail.update_user_name }} {{ role_info_detail.update_user_name }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> 最后修改时间 </template> <template #label>最后修改时间</template>
{{ role_info_detail.update_time }} {{ role_info_detail.update_time }}
</el-descriptions-item> </el-descriptions-item>
</el-descriptions> </el-descriptions>
...@@ -55,11 +49,7 @@ ...@@ -55,11 +49,7 @@
<div v-if="role_info_detail.role_account_list.length"> <div v-if="role_info_detail.role_account_list.length">
<h5 style="margin: 10px 0">角色账号</h5> <h5 style="margin: 10px 0">角色账号</h5>
<div class="roleList"> <div class="roleList">
<div <div class="role_account_list" v-for="(item, index) in role_info_detail.role_account_list" :key="index">
class="role_account_list"
v-for="(item, index) in role_info_detail.role_account_list"
:key="index"
>
{{ item }} {{ item }}
</div> </div>
</div> </div>
...@@ -68,11 +58,8 @@ ...@@ -68,11 +58,8 @@
</div> </div>
</template> </template>
<script> <script>
import { import { get_role_info as reqGet_role_info, getAll_role_list as reqGetAll_role_list } from "../../service/role";
get_role_info as reqGet_role_info, export default {
getAll_role_list as reqGetAll_role_list,
} from "../../service/role";
export default {
name: "RoleDetail", name: "RoleDetail",
props: ["appId"], props: ["appId"],
data() { data() {
...@@ -106,16 +93,8 @@ export default { ...@@ -106,16 +93,8 @@ export default {
this.permissionsAll = res.permissions; this.permissionsAll = res.permissions;
}); });
reqGet_role_info(this.roleId, this.appId).then((res) => { reqGet_role_info(this.roleId, this.appId).then((res) => {
const { const { role_name, role_status, update_time, update_user_name, create_time, create_user_name, role_account_list, permissions } =
role_name, res.result;
role_status,
update_time,
update_user_name,
create_time,
create_user_name,
role_account_list,
permissions,
} = res.result;
this.role_info_detail = { this.role_info_detail = {
role_name, role_name,
role_status, role_status,
...@@ -147,10 +126,10 @@ export default { ...@@ -147,10 +126,10 @@ export default {
this.selectedOptions = selectData; this.selectedOptions = selectData;
}, },
}, },
}; };
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.user-detail { .user-detail {
margin: 50px; margin: 50px;
.role_account_list { .role_account_list {
padding: 10px; padding: 10px;
...@@ -170,5 +149,5 @@ export default { ...@@ -170,5 +149,5 @@ export default {
// border: 1px solid #ebeef5; // border: 1px solid #ebeef5;
margin-top: 20px; margin-top: 20px;
} }
} }
</style> </style>
...@@ -7,10 +7,7 @@ ...@@ -7,10 +7,7 @@
<el-input v-model="searchForm.roleName"></el-input> <el-input v-model="searchForm.roleName"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="状态"> <el-form-item label="状态">
<el-select <el-select v-model="searchForm.roleStatus" placeholder="请选择角色状态">
v-model="searchForm.roleStatus"
placeholder="请选择角色状态"
>
<el-option label="正常" :value="1"></el-option> <el-option label="正常" :value="1"></el-option>
<el-option label="禁用" :value="2"></el-option> <el-option label="禁用" :value="2"></el-option>
<el-option label="删除" :value="3"></el-option> <el-option label="删除" :value="3"></el-option>
...@@ -23,86 +20,32 @@ ...@@ -23,86 +20,32 @@
</el-form> </el-form>
<el-form> <el-form>
<el-form-item> <el-form-item>
<el-button <el-button type="primary" :disabled="!permission.get('create')" @click="onCreateRole">创建角色</el-button>
type="primary"
:disabled="!permission.get('create')"
@click="onCreateRole"
>创建角色</el-button
>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
<!-- 角色搜索列表 --> <!-- 角色搜索列表 -->
<el-table border :data="managementList"> <el-table border :data="managementList">
<el-table-column <el-table-column label="ID" width="200px" prop="role_id" align="center"></el-table-column>
label="ID" <el-table-column label="角色名称" prop="role_name" align="center"></el-table-column>
width="200px" <el-table-column label="状态" width="200px" :formatter="hasStatusFormat" align="center"></el-table-column>
prop="role_id" <el-table-column label="最后修改日期" prop="update_time" align="center"></el-table-column>
align="center" <el-table-column label="最后修改人账号" prop="update_user_name" align="center"></el-table-column>
></el-table-column>
<el-table-column
label="角色名称"
prop="role_name"
align="center"
></el-table-column>
<el-table-column
label="状态"
width="200px"
:formatter="hasStatusFormat"
align="center"
>
</el-table-column>
<el-table-column
label="最后修改日期"
prop="update_time"
align="center"
></el-table-column>
<el-table-column
label="最后修改人账号"
prop="update_user_name"
align="center"
></el-table-column>
<el-table-column label="操作" align="center"> <el-table-column label="操作" align="center">
<template #default="scope"> <template #default="scope">
<el-button <el-button
:disabled=" :disabled="!permission.get('edit') || scope.row.role_status == 2 || scope.row.role_status == 3"
!permission.get('edit') ||
scope.row.role_status == 2 ||
scope.row.role_status == 3
"
@click.stop="handelModify(scope.row)" @click.stop="handelModify(scope.row)"
type="text" type="text"
size="mini" size="mini"
>修改</el-button
>
<el-button
:disabled="!permission.get('delete')"
@click.stop="handelDelete(scope.row)"
size="mini"
type="text"
>删除</el-button
>
<el-button
:disabled="!permission.get('disable')"
@click.stop="handelDisable(scope.row)"
size="mini"
type="text"
>禁用</el-button
>
<el-button
:disabled="!permission.get('enable')"
@click.stop="handelEnable(scope.row)"
size="mini"
type="text"
>启用</el-button
>
<el-button
@click.stop="toRoleDetail(scope.row)"
size="mini"
type="text"
>查看详情</el-button
> >
修改
</el-button>
<el-button :disabled="!permission.get('delete')" @click.stop="handelDelete(scope.row)" size="mini" type="text">删除</el-button>
<el-button :disabled="!permission.get('disable')" @click.stop="handelDisable(scope.row)" size="mini" type="text">禁用</el-button>
<el-button :disabled="!permission.get('enable')" @click.stop="handelEnable(scope.row)" size="mini" type="text">启用</el-button>
<el-button @click.stop="toRoleDetail(scope.row)" size="mini" type="text">查看详情</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -134,16 +77,16 @@ ...@@ -134,16 +77,16 @@
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
import page from "../Pagination"; import page from "../Pagination";
import { import {
getRole_list as reqGetRole_list, getRole_list as reqGetRole_list,
getAll_role_list as reqGetAll_role_list, getAll_role_list as reqGetAll_role_list,
getUpdate_role as reqGetUpdate_role, getUpdate_role as reqGetUpdate_role,
get_role_info as reqGet_role_info, get_role_info as reqGet_role_info,
getDelete_role as reqGetDelete_role, getDelete_role as reqGetDelete_role,
getAdd_role as reqGetAdd_role, getAdd_role as reqGetAdd_role,
} from "../../service/role"; } from "../../service/role";
export default { export default {
name: "RoleList", name: "RoleList",
props: ["appId", "detailPath", "rolePermissionId"], props: ["appId", "detailPath", "rolePermissionId"],
components: { components: {
...@@ -153,9 +96,8 @@ export default { ...@@ -153,9 +96,8 @@ export default {
permission() { permission() {
let rolePermissionId = this.rolePermissionId || "role"; let rolePermissionId = this.rolePermissionId || "role";
let appId = this.appId || ""; let appId = this.appId || "";
const modulePermissions = const modulePermissions = this.$store.getters.moduleSubPermissions(rolePermissionId, appId) || [];
this.$store.getters.moduleSubPermissions(rolePermissionId, appId) || []; console.log("modulePermissions", modulePermissions);
console.log('modulePermissions', modulePermissions)
return new Map(modulePermissions.map((ele) => [ele.name, true])); return new Map(modulePermissions.map((ele) => [ele.name, true]));
}, },
}, },
...@@ -380,9 +322,7 @@ export default { ...@@ -380,9 +322,7 @@ export default {
//确认修改 //确认修改
confirm() { confirm() {
let checkRolePrivilege = []; let checkRolePrivilege = [];
this.edit this.edit ? (checkRolePrivilege = this.currentRolePrivilege) : (checkRolePrivilege = this.currenPermissionsUpdate);
? (checkRolePrivilege = this.currentRolePrivilege)
: (checkRolePrivilege = this.currenPermissionsUpdate);
if (!(this.roleName && checkRolePrivilege.length > 0)) { if (!(this.roleName && checkRolePrivilege.length > 0)) {
this.$message({ this.$message({
type: "error", type: "error",
...@@ -400,12 +340,7 @@ export default { ...@@ -400,12 +340,7 @@ export default {
getEditRole() { getEditRole() {
let { role_id } = this.role_info_detail; let { role_id } = this.role_info_detail;
let role_status = ""; let role_status = "";
this.getUpdate_role( this.getUpdate_role(this.roleName, role_id, role_status, this.currentRolePrivilege);
this.roleName,
role_id,
role_status,
this.currentRolePrivilege
);
}, },
//新增角色 //新增角色
getAdd_role() { getAdd_role() {
...@@ -450,10 +385,7 @@ export default { ...@@ -450,10 +385,7 @@ export default {
} else { } else {
newData.forEach((el) => { newData.forEach((el) => {
if (el.id === oldDataRule[i].id) { if (el.id === oldDataRule[i].id) {
el.sub_permissions = [ el.sub_permissions = [...el.sub_permissions, ...oldDataRule[i].sub_permissions];
...el.sub_permissions,
...oldDataRule[i].sub_permissions,
];
} }
}); });
} }
...@@ -462,17 +394,17 @@ export default { ...@@ -462,17 +394,17 @@ export default {
this.currenPermissionsUpdate = newData; this.currenPermissionsUpdate = newData;
}, },
}, },
}; };
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.creatRole { .creatRole {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
} }
.role_management { .role_management {
padding: 20px; padding: 20px;
} }
.role_management .el-button { .role_management .el-button {
margin: 0 2px; margin: 0 2px;
} }
</style> </style>
...@@ -3,12 +3,7 @@ ...@@ -3,12 +3,7 @@
<el-dialog title="编辑用户" v-model="modalVisable" :before-close="cancel"> <el-dialog title="编辑用户" v-model="modalVisable" :before-close="cancel">
<el-form :model="userInfo"> <el-form :model="userInfo">
<el-form-item label="用户ID" :label-width="formLabelWidth"> <el-form-item label="用户ID" :label-width="formLabelWidth">
<el-input <el-input class="form-val" v-model="userInfo.user_id" size="medium" disabled></el-input>
class="form-val"
v-model="userInfo.user_id"
size="medium"
disabled
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="状态" :label-width="formLabelWidth"> <el-form-item label="状态" :label-width="formLabelWidth">
<!-- <el-input class="form-val">{{data.user_status===1?'启用':'禁用'}}</el-input> --> <!-- <el-input class="form-val">{{data.user_status===1?'启用':'禁用'}}</el-input> -->
...@@ -19,51 +14,23 @@ ...@@ -19,51 +14,23 @@
inactive-value="2" inactive-value="2"
active-text="启用" active-text="启用"
inactive-text="禁用" inactive-text="禁用"
> ></el-switch>
</el-switch>
</el-form-item> </el-form-item>
<el-form-item label="姓名" :label-width="formLabelWidth"> <el-form-item label="姓名" :label-width="formLabelWidth">
<el-input <el-input class="form-val" v-model="userInfo.user_name" disabled></el-input>
class="form-val"
v-model="userInfo.user_name"
disabled
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="邮箱" :label-width="formLabelWidth" required> <el-form-item label="邮箱" :label-width="formLabelWidth" required>
<el-input <el-input class="form-val" v-model="userInfo.user_email" disabled></el-input>
class="form-val"
v-model="userInfo.user_email"
disabled
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="手机号" :label-width="formLabelWidth"> <el-form-item label="手机号" :label-width="formLabelWidth">
<el-input class="form-val" v-model="userInfo.user_mobile"></el-input> <el-input class="form-val" v-model="userInfo.user_mobile"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="所属组织" :label-width="formLabelWidth"> <el-form-item label="所属组织" :label-width="formLabelWidth">
<el-input <el-input class="form-val" v-model="userInfo.organization" disabled></el-input>
class="form-val"
v-model="userInfo.organization"
disabled
></el-input>
</el-form-item> </el-form-item>
<el-form-item <el-form-item label="授权角色信息" :label-width="formLabelWidth" required>
label="授权角色信息" <el-select v-model="userInfo.roles" multiple placeholder="请选择" class="form-val">
:label-width="formLabelWidth" <el-option v-for="item in roles" :key="item.role_id" :label="item.role_name" :value="item.role_id"></el-option>
required
>
<el-select
v-model="userInfo.roles"
multiple
placeholder="请选择"
class="form-val"
>
<el-option
v-for="item in roles"
:key="item.role_id"
:label="item.role_name"
:value="item.role_id"
>
</el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="敏感词权限" :label-width="formLabelWidth"> <el-form-item label="敏感词权限" :label-width="formLabelWidth">
...@@ -74,8 +41,7 @@ ...@@ -74,8 +41,7 @@
inactive-value="2" inactive-value="2"
active-text="开启" active-text="开启"
inactive-text="关闭" inactive-text="关闭"
> ></el-switch>
</el-switch>
</el-form-item> </el-form-item>
</el-form> </el-form>
<template #footer> <template #footer>
...@@ -88,48 +54,45 @@ ...@@ -88,48 +54,45 @@
</div> </div>
</template> </template>
<script> <script>
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
import { getRole_list as reqGetRoles } from "@/service/role"; import { getRole_list as reqGetRoles } from "@/service/role";
export default { export default {
name: "UserInfoEditModal", name: "UserInfoEditModal",
props: { props: {
data: Object, data: Object,
visable: { visable: {
type: Boolean, type: Boolean,
default: false default: false,
}, },
appId: String appId: String,
}, },
data() { data() {
return { return {
formLabelWidth: "120px", formLabelWidth: "120px",
userInfo: {}, userInfo: {},
roles: [], roles: [],
modalVisable: false modalVisable: false,
}; };
}, },
watch: { watch: {
data(val) { data(val) {
this.userInfo = JSON.parse(JSON.stringify(val)); this.userInfo = JSON.parse(JSON.stringify(val));
this.userInfo.roles = val.roles.map(ele => ele.role_id); this.userInfo.roles = val.roles.map((ele) => ele.role_id);
this.userInfo.user_status = val.user_status.toString(); this.userInfo.user_status = val.user_status.toString();
this.userInfo.is_sensitive_authority = val.is_sensitive_authority.toString(); this.userInfo.is_sensitive_authority = val.is_sensitive_authority.toString();
}, },
visable(val) { visable(val) {
this.modalVisable = val; this.modalVisable = val;
} },
}, },
beforeMount() { beforeMount() {
this.getRoles(); this.getRoles();
}, },
methods: { methods: {
async getRoles() { async getRoles() {
const { code, result } = await reqGetRoles( const { code, result } = await reqGetRoles({ page_size: 2000, page: 1 }, this.appId);
{ page_size: 2000, page: 1 },
this.appId
);
if (code !== 0) { if (code !== 0) {
ElMessage.error("获取角色列表出错!"); ElMessage.error("获取角色列表出错!");
return; return;
...@@ -139,13 +102,13 @@ export default { ...@@ -139,13 +102,13 @@ export default {
confirm() { confirm() {
const checkConditions = { const checkConditions = {
user_email: { user_email: {
check: val => val.trim() !== "", check: (val) => val.trim() !== "",
tip: "请输入邮箱!" tip: "请输入邮箱!",
}, },
roles: { roles: {
check: val => val.length !== 0, check: (val) => val.length !== 0,
tip: "请添加角色!" tip: "请添加角色!",
} },
}; };
const keys = Object.keys(checkConditions); const keys = Object.keys(checkConditions);
...@@ -161,16 +124,16 @@ export default { ...@@ -161,16 +124,16 @@ export default {
}, },
cancel() { cancel() {
this.$emit("cancel"); this.$emit("cancel");
} },
} },
}; };
</script> </script>
<style lang="less"> <style lang="less">
.form-val { .form-val {
margin-left: 20px; margin-left: 20px;
width: 300px; width: 300px;
} }
.form-val.el-input { .form-val.el-input {
width: 80%; width: 80%;
} }
</style> </style>
...@@ -6,9 +6,7 @@ ...@@ -6,9 +6,7 @@
<text class="form-val">{{ data.user_id }}</text> <text class="form-val">{{ data.user_id }}</text>
</el-form-item> </el-form-item>
<el-form-item label="状态" :label-width="formLabelWidth"> <el-form-item label="状态" :label-width="formLabelWidth">
<text class="form-val">{{ <text class="form-val">{{ data.user_status == 1 ? "启用" : "禁用" }}</text>
data.user_status == 1 ? "启用" : "禁用"
}}</text>
</el-form-item> </el-form-item>
<el-form-item label="姓名" :label-width="formLabelWidth"> <el-form-item label="姓名" :label-width="formLabelWidth">
<text class="form-val">{{ data.user_name }}</text> <text class="form-val">{{ data.user_name }}</text>
...@@ -36,57 +34,53 @@ ...@@ -36,57 +34,53 @@
</el-form-item> </el-form-item>
<el-form-item label="授权角色信息" :label-width="formLabelWidth"> <el-form-item label="授权角色信息" :label-width="formLabelWidth">
<text class="form-val">{{ <text class="form-val">{{ data.roles.map((ele) => ele.role_name).join(",") }}</text>
data.roles.map(ele => ele.role_name).join(",")
}}</text>
</el-form-item> </el-form-item>
<el-form-item label="敏感词权限" :label-width="formLabelWidth"> <el-form-item label="敏感词权限" :label-width="formLabelWidth">
<text class="form-val">{{ <text class="form-val">{{ data.is_sensitive_authority === 1 ? "是" : "否" }}</text>
data.is_sensitive_authority === 1 ? "是" : "否"
}}</text>
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
<script> <script>
export default { export default {
name: "UserInfoModal", name: "UserInfoModal",
props: { props: {
mode: { mode: {
type: String, type: String,
default: "check" default: "check",
}, },
data: Object, data: Object,
title: { title: {
type: String, type: String,
default: "用户信息" default: "用户信息",
}, },
visable: { visable: {
type: Boolean, type: Boolean,
default: false default: false,
} },
}, },
data() { data() {
return { return {
formLabelWidth: "180px", formLabelWidth: "180px",
modalVisable: false modalVisable: false,
}; };
}, },
watch: { watch: {
visable(val) { visable(val) {
this.modalVisable = val; this.modalVisable = val;
} },
}, },
methods: { methods: {
cancel: function() { cancel: function () {
this.$emit("cancel"); this.$emit("cancel");
} },
} },
}; };
</script> </script>
<style lang="less"> <style lang="less">
.form-val { .form-val {
margin-left: 20px; margin-left: 20px;
} }
</style> </style>
...@@ -11,8 +11,7 @@ ...@@ -11,8 +11,7 @@
inactive-value="2" inactive-value="2"
active-text="启用" active-text="启用"
inactive-text="禁用" inactive-text="禁用"
> ></el-switch>
</el-switch>
</el-form-item> </el-form-item>
<el-form-item label="姓名" :label-width="formLabelWidth"> <el-form-item label="姓名" :label-width="formLabelWidth">
<el-input class="form-val" v-model="userInfo.user_name"></el-input> <el-input class="form-val" v-model="userInfo.user_name"></el-input>
...@@ -27,19 +26,8 @@ ...@@ -27,19 +26,8 @@
<el-input class="form-val" v-model="userInfo.organization"></el-input> <el-input class="form-val" v-model="userInfo.organization"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="授权角色" :label-width="formLabelWidth" required> <el-form-item label="授权角色" :label-width="formLabelWidth" required>
<el-select <el-select v-model="userInfo.roles" multiple placeholder="请选择" class="form-val">
v-model="userInfo.roles" <el-option v-for="item in roles" :key="item.role_id" :label="item.role_name" :value="item.role_id"></el-option>
multiple
placeholder="请选择"
class="form-val"
>
<el-option
v-for="item in roles"
:key="item.role_id"
:label="item.role_name"
:value="item.role_id"
>
</el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="敏感词权限" :label-width="formLabelWidth"> <el-form-item label="敏感词权限" :label-width="formLabelWidth">
...@@ -50,8 +38,7 @@ ...@@ -50,8 +38,7 @@
inactive-value="2" inactive-value="2"
active-text="开启" active-text="开启"
inactive-text="关闭" inactive-text="关闭"
> ></el-switch>
</el-switch>
</el-form-item> </el-form-item>
</el-form> </el-form>
<template #footer> <template #footer>
...@@ -64,18 +51,18 @@ ...@@ -64,18 +51,18 @@
</div> </div>
</template> </template>
<script> <script>
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
import { getRole_list as reqGetRoles } from "@/service/role"; import { getRole_list as reqGetRoles } from "@/service/role";
export default { export default {
name: "UserInfoEditModal", name: "UserInfoEditModal",
props: { props: {
visable: { visable: {
type: Boolean, type: Boolean,
default: false default: false,
}, },
appId: String appId: String,
}, },
data() { data() {
return { return {
...@@ -87,10 +74,10 @@ export default { ...@@ -87,10 +74,10 @@ export default {
user_mobile: "", user_mobile: "",
roles: [], roles: [],
user_status: "1", user_status: "1",
organization: "" organization: "",
}, },
roles: [], roles: [],
modalVisable: false modalVisable: false,
}; };
}, },
watch: { watch: {
...@@ -104,20 +91,17 @@ export default { ...@@ -104,20 +91,17 @@ export default {
user_mobile: "", user_mobile: "",
roles: [], roles: [],
user_status: "1", user_status: "1",
organization: "" organization: "",
}; };
} }
} },
}, },
beforeMount() { beforeMount() {
this.getRoles(); this.getRoles();
}, },
methods: { methods: {
async getRoles() { async getRoles() {
const { code, result } = await reqGetRoles( const { code, result } = await reqGetRoles({ page_size: 2000, page: 1 }, this.appId);
{ page_size: 2000, page: 1 },
this.appId
);
if (code !== 0) { if (code !== 0) {
ElMessage.error("获取角色列表出错!"); ElMessage.error("获取角色列表出错!");
return; return;
...@@ -127,13 +111,13 @@ export default { ...@@ -127,13 +111,13 @@ export default {
confirm() { confirm() {
const checkConditions = { const checkConditions = {
user_email: { user_email: {
check: val => val.trim() !== "", check: (val) => val.trim() !== "",
tip: "请输入邮箱!" tip: "请输入邮箱!",
}, },
roles: { roles: {
check: val => val.length !== 0, check: (val) => val.length !== 0,
tip: "请添加角色!" tip: "请添加角色!",
} },
}; };
const keys = Object.keys(checkConditions); const keys = Object.keys(checkConditions);
...@@ -149,16 +133,16 @@ export default { ...@@ -149,16 +133,16 @@ export default {
}, },
cancel() { cancel() {
this.$emit("cancel"); this.$emit("cancel");
} },
} },
}; };
</script> </script>
<style lang="less"> <style lang="less">
.form-val { .form-val {
margin-left: 20px; margin-left: 20px;
width: 300px; width: 300px;
} }
.form-val.el-input { .form-val.el-input {
width: 80%; width: 80%;
} }
</style> </style>
...@@ -2,23 +2,13 @@ ...@@ -2,23 +2,13 @@
<div class="user"> <div class="user">
<el-form :inline="true" :model="pageParams" class="demo-form-inline"> <el-form :inline="true" :model="pageParams" class="demo-form-inline">
<el-form-item label="用户姓名"> <el-form-item label="用户姓名">
<el-input <el-input maxlength="15" v-model="pageParams.user_name" placeholder="用户姓名"></el-input>
maxlength="15"
v-model="pageParams.user_name"
placeholder="用户姓名"
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="用户账号"> <el-form-item label="用户账号">
<el-input <el-input v-model="pageParams.user_email" placeholder="用户账号"></el-input>
v-model="pageParams.user_email"
placeholder="用户账号"
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="手机号"> <el-form-item label="手机号">
<el-input <el-input v-model="pageParams.user_mobile" placeholder="手机号"></el-input>
v-model="pageParams.user_mobile"
placeholder="手机号"
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="状态"> <el-form-item label="状态">
<el-select v-model="pageParams.user_status" placeholder="状态"> <el-select v-model="pageParams.user_status" placeholder="状态">
...@@ -29,66 +19,46 @@ ...@@ -29,66 +19,46 @@
<el-form-item class="func-btn"> <el-form-item class="func-btn">
<el-button type="primary" @click="getUserList">查询</el-button> <el-button type="primary" @click="getUserList">查询</el-button>
<el-button @click="onReset">重置</el-button> <el-button @click="onReset">重置</el-button>
<el-button @click="createUser" :disabled="!permission.get('create')" <el-button @click="createUser" :disabled="!permission.get('create')">新建用户</el-button>
>新建用户</el-button
>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-table :data="renderUserList" border style="width: 100%"> <el-table :data="renderUserList" border style="width: 100%">
<el-table-column prop="user_id" label="用户ID" width="70"> <el-table-column prop="user_id" label="用户ID" width="70"></el-table-column>
</el-table-column> <el-table-column prop="user_name" label="用户姓名"></el-table-column>
<el-table-column prop="user_name" label="用户姓名"> </el-table-column> <el-table-column prop="user_email" label="用户账号"></el-table-column>
<el-table-column prop="user_email" label="用户账号"> </el-table-column> <el-table-column prop="user_status" label="状态"></el-table-column>
<el-table-column prop="user_status" label="状态"> </el-table-column> <el-table-column prop="user_mobile" label="手机号"></el-table-column>
<el-table-column prop="user_mobile" label="手机号"> </el-table-column> <el-table-column prop="update_time" label="最后修改日期"></el-table-column>
<el-table-column prop="update_time" label="最后修改日期"> <el-table-column prop="update_user_name" label="最后修改人账号"></el-table-column>
</el-table-column>
<el-table-column prop="update_user_name" label="最后修改人账号">
</el-table-column>
<el-table-column fixed="right" label="操作" width="140"> <el-table-column fixed="right" label="操作" width="140">
<template #default="scope"> <template #default="scope">
<el-button type="text" size="small" @click="checkUser(scope.row)" <el-button type="text" size="small" @click="checkUser(scope.row)">查看</el-button>
>查看</el-button <el-button @click="editUser(scope.row)" type="text" size="small" :disabled="!permission.get('edit')">修改</el-button>
>
<el-button
@click="editUser(scope.row)"
type="text"
size="small"
:disabled="!permission.get('edit')"
>修改</el-button
>
<el-button <el-button
v-if="scope.row.user_status === '启用'" v-if="scope.row.user_status === '启用'"
type="text" type="text"
size="small" size="small"
@click="disableUser(scope.row)" @click="disableUser(scope.row)"
:disabled="!permission.get('enable')" :disabled="!permission.get('enable')"
>禁用</el-button
> >
禁用
</el-button>
<el-button <el-button
v-if="scope.row.user_status === '禁用'" v-if="scope.row.user_status === '禁用'"
type="text" type="text"
size="small" size="small"
@click="enableUser(scope.row)" @click="enableUser(scope.row)"
:disabled="!permission.get('disable')" :disabled="!permission.get('disable')"
>启用</el-button
> >
启用
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<page <page :totalNum="totalNum" :pageSize="pageParams.size" @update="updatePage" />
:totalNum="totalNum"
:pageSize="pageParams.size"
@update="updatePage"
/>
</div> </div>
<user-info-modal <user-info-modal :data="curUserInfo" :visable="modalVisable.info" @cancel="cancelModal('info')" :appId="appId"></user-info-modal>
:data="curUserInfo"
:visable="modalVisable.info"
@cancel="cancelModal('info')"
:appId="appId"
></user-info-modal>
<user-info-edit-modal <user-info-edit-modal
:data="curUserInfo" :data="curUserInfo"
:visable="modalVisable.edit" :visable="modalVisable.edit"
...@@ -96,28 +66,23 @@ ...@@ -96,28 +66,23 @@
@cancel="cancelModal('edit')" @cancel="cancelModal('edit')"
:appId="appId" :appId="appId"
></user-info-edit-modal> ></user-info-edit-modal>
<user-info-new-modal <user-info-new-modal :visable="modalVisable.new" @confirm="confirmEditModal" @cancel="cancelModal('new')" :appId="appId"></user-info-new-modal>
:visable="modalVisable.new"
@confirm="confirmEditModal"
@cancel="cancelModal('new')"
:appId="appId"
></user-info-new-modal>
</template> </template>
<script> <script>
import page from "@/components/Pagination"; import page from "@/components/Pagination";
import UserInfoModal from "./components/UserInfoModal"; import UserInfoModal from "./components/UserInfoModal";
import UserInfoEditModal from "./components/UserInfoEditModal"; import UserInfoEditModal from "./components/UserInfoEditModal";
import UserInfoNewModal from "./components/UserInfoNewModal"; import UserInfoNewModal from "./components/UserInfoNewModal";
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
import { import {
getUserList as reqGetUserList, getUserList as reqGetUserList,
getUserDetail as reqGetUserDetail, getUserDetail as reqGetUserDetail,
editUser as reqEditUser, editUser as reqEditUser,
createUser as reqCreateUser, createUser as reqCreateUser,
} from "@/service/user"; } from "@/service/user";
export default { export default {
name: "UserList", name: "UserList",
props: ["appId", "userPermissionId"], props: ["appId", "userPermissionId"],
components: { components: {
...@@ -152,8 +117,7 @@ export default { ...@@ -152,8 +117,7 @@ export default {
permission() { permission() {
const appId = this.appId || ""; const appId = this.appId || "";
const userPermissionId = this.userPermissionId || "user"; const userPermissionId = this.userPermissionId || "user";
const modulePermissions = const modulePermissions = this.$store.getters.moduleSubPermissions(userPermissionId, appId) || [];
this.$store.getters.moduleSubPermissions(userPermissionId, appId) || [];
console.log("Current page func-permissions:", modulePermissions); console.log("Current page func-permissions:", modulePermissions);
return new Map(modulePermissions.map((ele) => [ele.name, true])); return new Map(modulePermissions.map((ele) => [ele.name, true]));
}, },
...@@ -222,16 +186,7 @@ export default { ...@@ -222,16 +186,7 @@ export default {
}, },
async confirmEditModal(userInfo) { async confirmEditModal(userInfo) {
const { const { user_id, user_name, user_email, is_sensitive_authority, user_mobile, roles, user_status, organization } = userInfo;
user_id,
user_name,
user_email,
is_sensitive_authority,
user_mobile,
roles,
user_status,
organization,
} = userInfo;
let res = {}; let res = {};
...@@ -305,7 +260,7 @@ export default { ...@@ -305,7 +260,7 @@ export default {
user_status: 1, user_status: 1,
user_id, user_id,
}, },
this.appId this.appId,
); );
if (code === 0) { if (code === 0) {
ElMessage.success("启用成功!"); ElMessage.success("启用成功!");
...@@ -322,7 +277,7 @@ export default { ...@@ -322,7 +277,7 @@ export default {
user_status: 2, user_status: 2,
user_id, user_id,
}, },
this.appId this.appId,
); );
if (code === 0) { if (code === 0) {
ElMessage.success("禁用成功!"); ElMessage.success("禁用成功!");
...@@ -332,10 +287,10 @@ export default { ...@@ -332,10 +287,10 @@ export default {
} }
}, },
}, },
}; };
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.user { .user {
padding: 50px; padding: 50px;
.search_life { .search_life {
width: 280px; width: 280px;
...@@ -344,5 +299,5 @@ export default { ...@@ -344,5 +299,5 @@ export default {
.func-btn { .func-btn {
float: right; float: right;
} }
} }
</style> </style>
<template> <template>
<el-dialog <el-dialog title="提示" v-model="dialogVisible" width="30%" :before-close="handleClose">
title="提示"
v-model="dialogVisible"
width="30%"
:before-close="handleClose"
>
<span>这是一段信息</span> <span>这是一段信息</span>
<template #footer> <template #footer>
<span class="dialog-footer"> <span class="dialog-footer">
<el-button @click="dialogVisible = false">取 消</el-button> <el-button @click="dialogVisible = false">取 消</el-button>
<el-button type="primary" @click="dialogVisible = false" <el-button type="primary" @click="dialogVisible = false">确 定</el-button>
>确 定</el-button
>
</span> </span>
</template> </template>
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
export default { export default {
components: {}, components: {},
props: {}, props: {},
data() { data() {
return { return {
dialogVisible: true dialogVisible: true,
}; };
}, },
watch: {}, watch: {},
computed: {}, computed: {},
methods: {}, methods: {},
created() {}, created() {},
mounted() {} mounted() {},
}; };
</script> </script>
<style lang="less" scoped></style> <style lang="less" scoped></style>
const currEnv = "prod" const currEnv = "prod";
const API_URI = { const API_URI = {
'dev': "XXX", dev: "XXX",
'test': "XXX", test: "XXX",
'prod': "XXX" prod: "XXX",
} };
export default { export default {
API_URI: API_URI[currEnv], API_URI: API_URI[currEnv],
} };
\ No newline at end of file
exports.KS3_CONST = { exports.KS3_CONST = {
AccessKeyID: 'AKLTTpZx6fNBQsGSKe5chqHdXA', AccessKeyID: "AKLTTpZx6fNBQsGSKe5chqHdXA",
AccessKeySecret: 'OG9Bk93RUHwaH71U9K+OtWkvx44AdMheywjFlifILikvh96jNGgznJm+AyR5l4wPhw==', AccessKeySecret: "OG9Bk93RUHwaH71U9K+OtWkvx44AdMheywjFlifILikvh96jNGgznJm+AyR5l4wPhw==",
DOMAIN: 'ks3-cn-beijing.ksyun.com' DOMAIN: "ks3-cn-beijing.ksyun.com",
} };
\ No newline at end of file
// 系统顶栏header展示项 // 系统顶栏header展示项
export const HEADER_CONFIG = { export const HEADER_CONFIG = {
appName: 'OP运营管理后台', appName: "OP运营管理后台",
logo: 'http://si1.go2yd.com/get-image/0ZAJxXeZ6iu', logo: "http://si1.go2yd.com/get-image/0ZAJxXeZ6iu",
menuItems: [ menuItems: [
{ {
path: '/op/enterprise/certification', path: "/op/enterprise/certification",
name: '企业认证管理', name: "企业认证管理",
key: 'enterprise', key: "enterprise",
}, },
{ {
path: '/op/lifeNo', path: "/op/lifeNo",
name: '生活号管理', name: "生活号管理",
key: 'lifeNo', key: "lifeNo",
}, },
{ {
path: '/op/roleManageRole', path: "/op/roleManageRole",
name: '角色管理', name: "角色管理",
key: 'role', key: "role",
}, },
{ {
path: '/op/user', path: "/op/user",
name: '用户管理', name: "用户管理",
key: 'user', key: "user",
} },
], ],
miscellaneous: { miscellaneous: {
// 配置当用户头像不存在时使用的fallback头像图URL // 配置当用户头像不存在时使用的fallback头像图URL
defaultAvatar: '//s.go2yd.com/a/thead_meiguoduizhang.png', defaultAvatar: "//s.go2yd.com/a/thead_meiguoduizhang.png",
}, },
}; };
...@@ -35,29 +35,29 @@ export const HEADER_CONFIG = { ...@@ -35,29 +35,29 @@ export const HEADER_CONFIG = {
* key需要与 「HEADER_CONFIG」 中的key对应。 * key需要与 「HEADER_CONFIG」 中的key对应。
*/ */
export const PAGEMODULE_PERMISSIONNAME = { export const PAGEMODULE_PERMISSIONNAME = {
enterprise: 'enterprise_certification_management', enterprise: "enterprise_certification_management",
lifeNo: 'life_official_account_management', lifeNo: "life_official_account_management",
role: 'role_management', role: "role_management",
user: 'user_management' user: "user_management",
} };
export const PERMISSIONNAME_PAGEMODULE = (function () { export const PERMISSIONNAME_PAGEMODULE = (function () {
const obj = {} const obj = {};
for (let ele in PAGEMODULE_PERMISSIONNAME) { for (let ele in PAGEMODULE_PERMISSIONNAME) {
obj[PAGEMODULE_PERMISSIONNAME[ele]] = ele obj[PAGEMODULE_PERMISSIONNAME[ele]] = ele;
} }
return obj; return obj;
})() })();
/** /**
* 页面路由对应的权限名称。 * 页面路由对应的权限名称。
* router 用该配置做路由权限拦截。需要增加权限拦截的路由,需在此添加配置。 * router 用该配置做路由权限拦截。需要增加权限拦截的路由,需在此添加配置。
*/ */
export const PATH_PERMISSION_NAME = { export const PATH_PERMISSION_NAME = {
'/op/enterprise/certification': 'enterprise_certification_management', "/op/enterprise/certification": "enterprise_certification_management",
'/op/enterprise/audit': 'enterprise_certification_management.audit', "/op/enterprise/audit": "enterprise_certification_management.audit",
'/op/enterprise/establish': 'enterprise_certification_management.create', "/op/enterprise/establish": "enterprise_certification_management.create",
'/op/lifeNo': 'life_official_account_management', "/op/lifeNo": "life_official_account_management",
'/op/roleManageRole': 'role_management', "/op/roleManageRole": "role_management",
'/op/user': 'user_management' "/op/user": "user_management",
} };
\ No newline at end of file
@import './styles/reset.less'; @import "./styles/reset.less";
@import './styles/loading.less'; @import "./styles/loading.less";
html, html,
body, body,
#root, #root,
#app { #app {
height: 100%; height: 100%;
} }
body { body {
margin: 0; margin: 0;
} }
...@@ -13,15 +13,15 @@ ...@@ -13,15 +13,15 @@
</div> </div>
</template> </template>
<script> <script>
import PageHeader from '@/components/PageHeader'; import PageHeader from "@/components/PageHeader";
// import PageFooter from '@/components/PageFooter'; // import PageFooter from '@/components/PageFooter';
export default { export default {
components: { components: {
PageHeader, PageHeader,
// PageFooter, // PageFooter,
}, },
}; };
</script> </script>
<style lang="less" src="./index.less"></style> <style lang="less" src="./index.less"></style>
...@@ -50,8 +50,4 @@ router.beforeResolve(async (to, from, next) => { ...@@ -50,8 +50,4 @@ router.beforeResolve(async (to, from, next) => {
} }
}); });
createApp(App) createApp(App).use(router).use(store).use(ElementPlus, { locale }).mount("#app");
.use(router)
.use(store)
.use(ElementPlus, { locale })
.mount("#app");
...@@ -44,9 +44,9 @@ ...@@ -44,9 +44,9 @@
<h3>{{ marketingInfo.marketing_name }}</h3> <h3>{{ marketingInfo.marketing_name }}</h3>
<!-- 查看参与字段待确认 --> <!-- 查看参与字段待确认 -->
<p> <p>
<span>{{ detailInfo.lookUserCount }}人查看</span><span <span>{{ detailInfo.lookUserCount }}人查看</span>
>{{ detailInfo.haveBuyGoodsUserCount }}人参与</span
> <span>{{ detailInfo.haveBuyGoodsUserCount }}人参与</span>
</p> </p>
<p class="endTime">{{ showTimer }}</p> <p class="endTime">{{ showTimer }}</p>
</div> </div>
...@@ -82,11 +82,7 @@ ...@@ -82,11 +82,7 @@
></el-image> ></el-image>
</el-card> </el-card>
<el-card class="activities box-card"> <el-card class="activities box-card">
<div <div v-for="goodsItem in goodsList" :key="goodsItem.goods_sku_id" class="activityItem">
v-for="goodsItem in goodsList"
:key="goodsItem.goods_sku_id"
class="activityItem"
>
<el-image <el-image
class="activityImage" class="activityImage"
style="width: 100px; height: 100px" style="width: 100px; height: 100px"
...@@ -97,15 +93,9 @@ ...@@ -97,15 +93,9 @@
<p>{{ goodsItem.goods_name }}</p> <p>{{ goodsItem.goods_name }}</p>
<p class="price"> <p class="price">
<span class="nowPrice">{{ `¥${goodsItem.price}` }}</span> <span class="nowPrice">{{ `¥${goodsItem.price}` }}</span>
<span class="originPrice">{{ <span class="originPrice">{{ `¥${goodsItem.original_price} ` }}</span>
`¥${goodsItem.original_price} ` <span class="sold" v-if="goodsItem.inventory_rest == 0">抢光了</span>
}}</span> <span class="sold" v-else>已售{{ goodsItem.all_have_buy_goods_count }}</span>
<span class="sold" v-if="goodsItem.inventory_rest == 0"
>抢光了</span
>
<span class="sold" v-else
>已售{{ goodsItem.all_have_buy_goods_count }}</span
>
</p> </p>
</div> </div>
</div> </div>
...@@ -113,23 +103,17 @@ ...@@ -113,23 +103,17 @@
</section> </section>
</div> </div>
<div class="button-close"> <div class="button-close">
<el-button <el-button class="button-block" size="medium" type="primary" @click="closePage"> </el-button>
class="button-block"
size="medium"
type="primary"
@click="closePage"
> </el-button
>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import ActivityService from "@/service/Activity/index"; import ActivityService from "@/service/Activity/index";
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
import dayJs from "dayjs"; import dayJs from "dayjs";
export default { export default {
props: {}, props: {},
data() { data() {
return { return {
...@@ -138,7 +122,7 @@ export default { ...@@ -138,7 +122,7 @@ export default {
marketingInfo: {}, marketingInfo: {},
endTime: "", endTime: "",
showTimer: "", showTimer: "",
detailInfo: {} detailInfo: {},
}; };
}, },
watch: {}, watch: {},
...@@ -150,11 +134,11 @@ export default { ...@@ -150,11 +134,11 @@ export default {
let dataArr = await Promise.all([ let dataArr = await Promise.all([
ActivityService.checkActivityDetail({ ActivityService.checkActivityDetail({
marketing_id: this.$route.query.marketing_id, marketing_id: this.$route.query.marketing_id,
marketing_type: this.$route.query.marketing_type marketing_type: this.$route.query.marketing_type,
}), }),
ActivityService.checkActivityDetailInfo({ ActivityService.checkActivityDetailInfo({
marketing_id: this.$route.query.marketing_id marketing_id: this.$route.query.marketing_id,
}) }),
]); ]);
this.pageLoading = false; this.pageLoading = false;
this.goodsList = dataArr[0].result.goods_list; this.goodsList = dataArr[0].result.goods_list;
...@@ -171,21 +155,10 @@ export default { ...@@ -171,21 +155,10 @@ export default {
getTimeout(timeCount) { getTimeout(timeCount) {
if (timeCount > 0) { if (timeCount > 0) {
var days = parseInt(timeCount / (1000 * 60 * 60 * 24)); var days = parseInt(timeCount / (1000 * 60 * 60 * 24));
var hours = parseInt( var hours = parseInt((timeCount % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
(timeCount % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)
);
var minutes = parseInt((timeCount % (1000 * 60 * 60)) / (1000 * 60)); var minutes = parseInt((timeCount % (1000 * 60 * 60)) / (1000 * 60));
var seconds = parseInt((timeCount % (1000 * 60)) / 1000); var seconds = parseInt((timeCount % (1000 * 60)) / 1000);
this.showTimer = this.showTimer = "距结束:" + days + " 天 " + hours + " 小时 " + minutes + " 分钟 " + seconds + " 秒 ";
"距结束:" +
days +
" 天 " +
hours +
" 小时 " +
minutes +
" 分钟 " +
seconds +
" 秒 ";
} else { } else {
this.showTimer = "已结束"; this.showTimer = "已结束";
} }
...@@ -206,7 +179,7 @@ export default { ...@@ -206,7 +179,7 @@ export default {
closePage() { closePage() {
this.$router.go(-1); this.$router.go(-1);
} },
}, },
async created() { async created() {
await this.checkActivityDetail(); await this.checkActivityDetail();
...@@ -214,11 +187,11 @@ export default { ...@@ -214,11 +187,11 @@ export default {
}, },
beforeUnmount() { beforeUnmount() {
clearInterval(this.timer); clearInterval(this.timer);
} },
}; };
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.wrapper { .wrapper {
height: 100%; height: 100%;
display: flex; display: flex;
overflow-y: scroll; overflow-y: scroll;
...@@ -324,5 +297,5 @@ export default { ...@@ -324,5 +297,5 @@ export default {
width: 200px; width: 200px;
} }
} }
} }
</style> </style>
This diff is collapsed.
<template> <template>
<div class="infoEditing"> <div class="infoEditing">
<el-form <el-form ref="infoEditForm" :model="infoEditForm" label-width="80px" @submit.prevent>
ref="infoEditForm"
:model="infoEditForm"
label-width="80px"
@submit.prevent
>
<el-form-item label="标题:"> <el-form-item label="标题:">
<el-input v-model="infoEditForm.title" maxlength="30"></el-input> <el-input v-model="infoEditForm.title" maxlength="30"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="介绍:"> <el-form-item label="介绍:">
<el-input <el-input type="textarea" v-model="infoEditForm.desc" maxlength="1000" rows="4"></el-input>
type="textarea"
v-model="infoEditForm.desc"
maxlength="1000"
rows="4"
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="图片:"> <el-form-item label="图片:">
<el-upload <el-upload
...@@ -47,18 +37,18 @@ ...@@ -47,18 +37,18 @@
</template> </template>
<script> <script>
import { GOODS_URI } from "../../../../../server/config"; import { GOODS_URI } from "../../../../../server/config";
export default { export default {
props: { props: {
infoEditArr: { infoEditArr: {
type: Object, type: Object,
default: () => { default: () => {
return { return {
pindan_pic_url: [] pindan_pic_url: [],
}; };
}, },
require: true require: true,
} },
}, },
data() { data() {
return { return {
...@@ -66,38 +56,38 @@ export default { ...@@ -66,38 +56,38 @@ export default {
title: "", // 标题 title: "", // 标题
desc: "", // 介绍 desc: "", // 介绍
picUploadList: [], // 上传详情图片列表 picUploadList: [], // 上传详情图片列表
picUrlList: [] // 图片回显列表 picUrlList: [], // 图片回显列表
}, },
picSubmitList: [], // 发布功能需要的图片列表 picSubmitList: [], // 发布功能需要的图片列表
propData: {}, propData: {},
isShowPopver: false, // 是否展示图片框 isShowPopver: false, // 是否展示图片框
uploadUrl: `${GOODS_URI}/ksy/ks3apiunencrypt/ks3api_upload`, // 金山云上传地址 uploadUrl: `${GOODS_URI}/ksy/ks3apiunencrypt/ks3api_upload`, // 金山云上传地址
hideUpload: false, hideUpload: false,
limitCount: 9 limitCount: 9,
}; };
}, },
watch: { watch: {
infoEditArr: { infoEditArr: {
// 监听props属性 展示自提点列表 // 监听props属性 展示自提点列表
handler: function(newVal) { handler: function (newVal) {
if (this.$route.query.marketing_id) { if (this.$route.query.marketing_id) {
this.propData = newVal; this.propData = newVal;
this.infoEditForm.title = this.propData.marketing_name; this.infoEditForm.title = this.propData.marketing_name;
this.infoEditForm.desc = this.propData.pindan_desc; this.infoEditForm.desc = this.propData.pindan_desc;
for (var i in this.propData.pindan_pic_url) { for (var i in this.propData.pindan_pic_url) {
this.infoEditForm.picUrlList.push({ this.infoEditForm.picUrlList.push({
url: this.propData.pindan_pic_url[i] url: this.propData.pindan_pic_url[i],
}); });
this.picSubmitList.push({ this.picSubmitList.push({
url: this.propData.pindan_pic_url[i] url: this.propData.pindan_pic_url[i],
}); });
} }
this.hideUpload = this.picSubmitList.length >= this.limitCount; // 大于9 隐藏 this.hideUpload = this.picSubmitList.length >= this.limitCount; // 大于9 隐藏
} }
}, },
deep: true, deep: true,
immediate: true immediate: true,
} },
}, },
methods: { methods: {
// 展示商品大图 // 展示商品大图
...@@ -115,7 +105,7 @@ export default { ...@@ -115,7 +105,7 @@ export default {
this.infoEditForm.picUploadList.push(res.result.image_id); // 上传成功图片的id this.infoEditForm.picUploadList.push(res.result.image_id); // 上传成功图片的id
this.picSubmitList.push({ this.picSubmitList.push({
// 发布功能需要的图片列表 // 发布功能需要的图片列表
url: res.result.url url: res.result.url,
}); });
this.hideUpload = this.picSubmitList.length >= this.limitCount; this.hideUpload = this.picSubmitList.length >= this.limitCount;
}, },
...@@ -141,23 +131,23 @@ export default { ...@@ -141,23 +131,23 @@ export default {
this.infoEditForm.desc = this.propData.pindan_desc; this.infoEditForm.desc = this.propData.pindan_desc;
for (var i in this.propData.pindan_pic_url) { for (var i in this.propData.pindan_pic_url) {
this.infoEditForm.picUrlList.push({ this.infoEditForm.picUrlList.push({
url: this.propData.pindan_pic_url[i] url: this.propData.pindan_pic_url[i],
}); });
} }
} },
}, },
created() { created() {
// this.marketingInfoMet(); // this.marketingInfoMet();
} },
}; };
</script> </script>
<style scoped> <style scoped>
.infoEditing { .infoEditing {
width: 64%; width: 64%;
margin: 0 auto; margin: 0 auto;
} }
.hide /deep/ .el-upload--picture-card { .hide /deep/ .el-upload--picture-card {
display: none; display: none;
} }
</style> </style>
...@@ -5,42 +5,39 @@ ...@@ -5,42 +5,39 @@
<el-form ref="form" @submit.prevent> <el-form ref="form" @submit.prevent>
<el-form-item label-position="left"> <el-form-item label-position="left">
<el-button @click="handleSearch">搜索</el-button> <el-button @click="handleSearch">搜索</el-button>
<el-input <el-input class="dialog-input" v-model="searchKey" placeholder="请输入关键字" autocomplete="on">
class="dialog-input"
v-model="searchKey"
placeholder="请输入关键字"
autocomplete="on"
>
<template #suffix> <template #suffix>
<i <i @click="searchKey = ''" class="el-input__icon el-icon-close"></i>
@click="searchKey = ''"
class="el-input__icon el-icon-close"
></i>
</template> </template>
</el-input> </el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div id="js-result" v-show="searchKey" class="result"></div> <div id="js-result" v-show="searchKey" class="result"></div>
</div> </div>
<div id="js-container" class="myMap"> <div id="js-container" class="myMap">正在加载数据 ...</div>
正在加载数据 ...
</div>
</div> </div>
<div class="mapInfo"> <div class="mapInfo">
<div class="infoAll"> <div class="infoAll">
<h3 class="title">拖拽选址</h3> <h3 class="title">拖拽选址</h3>
<ul class="info"> <ul class="info">
<li><span>经度:</span>{{ dragData.lng }}</li> <li>
<li><span>纬度:</span>{{ dragData.lat }}</li> <span>经度:</span>
<li><span>地址:</span>{{ dragData.address }}</li> {{ dragData.lng }}
</li>
<li>
<span>纬度:</span>
{{ dragData.lat }}
</li>
<li>
<span>地址:</span>
{{ dragData.address }}
</li>
</ul> </ul>
</div> </div>
<div class="confirmButton"> <div class="confirmButton">
<el-button class="button_pre" @click="cancel">取 消</el-button> <el-button class="button_pre" @click="cancel">取 消</el-button>
<el-button class="button_next" type="primary" @click="confirm" <el-button class="button_next" type="primary" @click="confirm">确 定</el-button>
>确 定</el-button
>
</div> </div>
</div> </div>
<!-- <div class="confirmButton"> <!-- <div class="confirmButton">
...@@ -51,8 +48,8 @@ ...@@ -51,8 +48,8 @@
</template> </template>
<script> <script>
import remoteLoad from "@/utils/remoteLoad.js"; import remoteLoad from "@/utils/remoteLoad.js";
export default { export default {
name: "app", name: "app",
data() { data() {
return { return {
...@@ -65,8 +62,8 @@ export default { ...@@ -65,8 +62,8 @@ export default {
address: null, address: null,
nearestJunction: null, nearestJunction: null,
nearestRoad: null, nearestRoad: null,
nearestPOI: null nearestPOI: null,
} },
}; };
}, },
methods: { methods: {
...@@ -92,7 +89,7 @@ export default { ...@@ -92,7 +89,7 @@ export default {
address: data.address, address: data.address,
province: data.regeocode.addressComponent.province, province: data.regeocode.addressComponent.province,
city: data.regeocode.addressComponent.city, city: data.regeocode.addressComponent.city,
area: data.regeocode.addressComponent.district area: data.regeocode.addressComponent.district,
}; };
}, },
...@@ -102,9 +99,9 @@ export default { ...@@ -102,9 +99,9 @@ export default {
let AMapUI = (this.AMapUI = window.AMapUI); let AMapUI = (this.AMapUI = window.AMapUI);
let AMap = (this.AMap = window.AMap); let AMap = (this.AMap = window.AMap);
AMapUI.loadUI(["misc/PositionPicker"], PositionPicker => { AMapUI.loadUI(["misc/PositionPicker"], (PositionPicker) => {
let mapConfig = { let mapConfig = {
zoom: 16 zoom: 16,
// cityName: this.MapCityName // cityName: this.MapCityName
}; };
if (this.lat && this.lng) { if (this.lat && this.lng) {
...@@ -120,21 +117,21 @@ export default { ...@@ -120,21 +117,21 @@ export default {
citylimit: true, citylimit: true,
// city: this.MapCityName, // city: this.MapCityName,
map: map, map: map,
panel: "js-result" panel: "js-result",
}); });
}); });
// 启用工具条 // 启用工具条
AMap.plugin(["AMap.ToolBar"], function() { AMap.plugin(["AMap.ToolBar"], function () {
map.addControl( map.addControl(
new AMap.ToolBar({ new AMap.ToolBar({
position: "RB" position: "RB",
}) }),
); );
}); });
// 地图地图定位 // 地图地图定位
AMap.plugin("AMap.Geolocation", function() { AMap.plugin("AMap.Geolocation", function () {
var geolocation = new AMap.Geolocation({ var geolocation = new AMap.Geolocation({
// 是否使用高精度定位,默认:true // 是否使用高精度定位,默认:true
enableHighAccuracy: true, enableHighAccuracy: true,
...@@ -145,7 +142,7 @@ export default { ...@@ -145,7 +142,7 @@ export default {
// 定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false // 定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false
zoomToAccuracy: true, zoomToAccuracy: true,
// 定位按钮的排放位置, RB表示右下 // 定位按钮的排放位置, RB表示右下
buttonPosition: "RB" buttonPosition: "RB",
}); });
map.addControl(geolocation); map.addControl(geolocation);
geolocation.getCurrentPosition(); geolocation.getCurrentPosition();
...@@ -171,18 +168,18 @@ export default { ...@@ -171,18 +168,18 @@ export default {
//自定义外观 //自定义外观
url: "//webapi.amap.com/ui/1.0/assets/position-picker2.png", //图片地址 url: "//webapi.amap.com/ui/1.0/assets/position-picker2.png", //图片地址
size: [50, 50], //要显示的点大小,将缩放图片 size: [50, 50], //要显示的点大小,将缩放图片
ancher: [24, 40] //锚点的位置,即被size缩放之后,图片的什么位置作为选中的位置 ancher: [24, 40], //锚点的位置,即被size缩放之后,图片的什么位置作为选中的位置
} },
}); });
// 拖拽完成发送自定义 drag 事件 // 拖拽完成发送自定义 drag 事件
positionPicker.on("success", positionResult => { positionPicker.on("success", (positionResult) => {
this.dragMap(positionResult); this.dragMap(positionResult);
}); });
// 启动拖放 // 启动拖放
positionPicker.start(); positionPicker.start();
}); });
} },
}, },
async mounted() { async mounted() {
// 已载入高德地图API,则直接初始化地图 // 已载入高德地图API,则直接初始化地图
...@@ -190,18 +187,16 @@ export default { ...@@ -190,18 +187,16 @@ export default {
this.initMap(); this.initMap();
// 未载入高德地图API,则先载入API再初始化 // 未载入高德地图API,则先载入API再初始化
} else { } else {
await remoteLoad( await remoteLoad(`http://webapi.amap.com/maps?v=1.3&key=bb057625545d8cf77df1379e7aaae0b5`);
`http://webapi.amap.com/maps?v=1.3&key=bb057625545d8cf77df1379e7aaae0b5`
);
await remoteLoad("http://webapi.amap.com/ui/1.0/main.js"); await remoteLoad("http://webapi.amap.com/ui/1.0/main.js");
this.initMap(); this.initMap();
} }
} },
}; };
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.mapContainer { .mapContainer {
height: 100%; height: 100%;
width: 100%; width: 100%;
// display: flex; // display: flex;
...@@ -250,19 +245,19 @@ export default { ...@@ -250,19 +245,19 @@ export default {
} }
} }
} }
} }
.m-map .search { .m-map .search {
position: absolute; position: absolute;
top: 10px; top: 10px;
left: 10px; left: 10px;
width: 285px; width: 285px;
z-index: 1; z-index: 1;
} }
.m-map .search input { .m-map .search input {
width: 180px; width: 180px;
border: 1px solid #ccc; border: 1px solid #ccc;
line-height: 20px; line-height: 20px;
padding: 5px; padding: 5px;
outline: none; outline: none;
} }
</style> </style>
This diff is collapsed.
<template> <template>
<div> <div>没有权限!</div>
没有权限!
</div>
</template> </template>
<script> <script>
export default { export default {};
};
</script> </script>
<style lang="less"> <style lang="less"></style>
</style>
<template> <template>
<div> <div>
<layout> <layout>页面不存在!</layout>
页面不存在!
</layout>
</div> </div>
</template> </template>
<script> <script>
import Layout from '@/layouts'; import Layout from "@/layouts";
export default { export default {
components: { components: {
Layout, Layout,
...@@ -15,5 +13,4 @@ ...@@ -15,5 +13,4 @@
}; };
</script> </script>
<style lang="less"> <style lang="less"></style>
</style>
This diff is collapsed.
<template> <template>
<layout> <layout>
<!-- 标题 --> <!-- 标题 -->
<el-page-header <el-page-header class="title" content="企业信息提交" @back="goBack"></el-page-header>
class="title"
content="企业信息提交"
@back="goBack"
></el-page-header>
<enterprise-form :type="'SUBMIT'"></enterprise-form> <enterprise-form :type="'SUBMIT'"></enterprise-form>
</layout> </layout>
...@@ -14,24 +10,23 @@ ...@@ -14,24 +10,23 @@
<style lang="less" src="./index.less" scope></style> <style lang="less" src="./index.less" scope></style>
<script> <script>
import Layout from "@/layouts"; import Layout from "@/layouts";
import EnterpriseForm from "../components/enterpriseForm.vue"; import EnterpriseForm from "../components/enterpriseForm.vue";
export default { export default {
name: "Establish", name: "Establish",
components: { Layout, EnterpriseForm }, components: { Layout, EnterpriseForm },
created () { created() {},
},
data () { data() {
return {}; return {};
}, },
methods: { methods: {
// 返回 // 返回
goBack () { goBack() {
this.$router.replace({ name: "Certification" }); this.$router.replace({ name: "Certification" });
}, },
} },
}; };
</script> </script>
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
<template> <template>
<el-dropdown> <el-dropdown>
<div class="user-info"> <div class="user-info">
<el-avatar <el-avatar :src="userInfo.avatar || DEFAULT_AVATAR" size="small"></el-avatar>
:src="userInfo.avatar || DEFAULT_AVATAR" <span class="user-name">{{ userInfo.name }}</span>
size="small"
></el-avatar>
<span class="user-name">{{userInfo.name}}</span>
</div> </div>
<template #dropdown> <template #dropdown>
<el-dropdown-menu> <el-dropdown-menu>
<el-dropdown-item> <el-dropdown-item>
{{ userEmail }} {{ userEmail }}
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item @click="$emit('logout')"> <el-dropdown-item @click="$emit('logout')">退出登录</el-dropdown-item>
退出登录
</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</template> </template>
</el-dropdown> </el-dropdown>
</template> </template>
<script> <script>
import { mapState } from 'vuex' import { mapState } from "vuex";
import { HEADER_CONFIG } from '@/config/pageconfig'; import { HEADER_CONFIG } from "@/config/pageconfig";
import { getCookie } from "@/utils/util"; import { getCookie } from "@/utils/util";
export default { export default {
computed: mapState({ computed: mapState({
userInfo: state => (state.userInfo || {}), userInfo: (state) => state.userInfo || {},
}), }),
data () { data() {
return { return {
DEFAULT_AVATAR: HEADER_CONFIG.miscellaneous.defaultAvatar, DEFAULT_AVATAR: HEADER_CONFIG.miscellaneous.defaultAvatar,
userEmail: '' userEmail: "",
}; };
}, },
mounted() { mounted() {
this.userEmail = getCookie('username') || '' this.userEmail = getCookie("username") || "";
} },
}; };
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.user-info { .user-info {
display: flex; display: flex;
align-items: center; align-items: center;
} }
.user-name { .user-name {
margin-left: 12px; margin-left: 12px;
color: #fff; color: #fff;
} }
</style> </style>
const headerConfig = [ const headerConfig = [
{ {
name: "商品管理", name: "商品管理",
path: "/op/goods/list" path: "/op/goods/list",
}, },
{ {
name: "分销", name: "分销",
path: "/op/goods/retail" path: "/op/goods/retail",
}, },
]; ];
export default headerConfig; export default headerConfig;
...@@ -10,11 +10,11 @@ ...@@ -10,11 +10,11 @@
</div> </div>
</template> </template>
<script> <script>
import PageHeader from "../components/PageHeader"; import PageHeader from "../components/PageHeader";
export default { export default {
components: { PageHeader } components: { PageHeader },
}; };
</script> </script>
<style lang="less" src="./index.less"></style> <style lang="less" src="./index.less"></style>
// 检测内容是否带表情符号 // 检测内容是否带表情符号
function checkString (strings) { function checkString(strings) {
const checkKey = /[^\u0020-\u007E\u00A0-\u00BE\u2E80-\uA4CF\uF900-\uFAFF\uFE30-\uFE4F\uFF00-\uFFEF\u0080-\u009F\u2000-\u201f\u2026\u2022\u20ac\r\n]/g; const checkKey =
/[^\u0020-\u007E\u00A0-\u00BE\u2E80-\uA4CF\uF900-\uFAFF\uFE30-\uFE4F\uFF00-\uFFEF\u0080-\u009F\u2000-\u201f\u2026\u2022\u20ac\r\n]/g;
if (checkKey.test(strings)) { if (checkKey.test(strings)) {
return false; return false;
} else { } else {
return true; return true;
}; }
}; }
export default { checkString } export default { checkString };
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment