Compare commits

...

5 Commits

Author SHA1 Message Date
wwl 5be5e65cac fix bug 2024-04-10 16:31:01 +08:00
wwl 8d5dfbc7b7 fix bug 2024-04-09 11:22:15 +08:00
wwl 56dbe18a6e fix bug 2024-04-01 11:51:05 +08:00
王文龙 821fda6982 update 2024-03-13 16:34:38 +08:00
王文龙 8928c7ac07 update 2024-03-11 16:39:52 +08:00
27 changed files with 648 additions and 1452 deletions

View File

@ -1,9 +1,10 @@
VUE_APP_IS_SAAS=false VUE_APP_IS_SAAS=false
VUE_APP_SYSTEM_NAME=platform VUE_APP_SYSTEM_NAME=standard
VUE_APP_PRODUCT_MODEL=platform VUE_APP_PRODUCT_MODEL=standard
# VUE_APP_BASE_API=https://ecshopx-shop.ex-sandbox.com/api # VUE_APP_BASE_API=https://ecshopx-shop.ex-sandbox.com/api
VUE_APP_BASE_API=/api VUE_APP_BASE_API=/api
VUE_APP_PROXY_API=http://47.103.169.154:8080/api # VUE_APP_PROXY_API=http://47.103.169.154:8080/api
VUE_APP_PROXY_API=https://slb.birkenstock.net.cn/api
# VUE_APP_PUBLIC_PATH=https://ecshopx-vshop.oss-cn-hangzhou.aliyuncs.com/ecshopx-admin # VUE_APP_PUBLIC_PATH=https://ecshopx-vshop.oss-cn-hangzhou.aliyuncs.com/ecshopx-admin
VUE_APP_PUBLIC_PATH=/ VUE_APP_PUBLIC_PATH=/
VUE_APP_WXIMG_URL= VUE_APP_WXIMG_URL=

View File

@ -1,8 +1,10 @@
VUE_APP_IS_SAAS=false VUE_APP_IS_SAAS=false
VUE_APP_SYSTEM_NAME=platform # VUE_APP_SYSTEM_NAME=platform
VUE_APP_PRODUCT_MODEL=platform # VUE_APP_PRODUCT_MODEL=platform
VUE_APP_SYSTEM_NAME=standard
VUE_APP_PRODUCT_MODEL=standard
# VUE_APP_BASE_API=https://ecshopx-shop.ex-sandbox.com/api # VUE_APP_BASE_API=https://ecshopx-shop.ex-sandbox.com/api
VUE_APP_BASE_API=http://47.103.169.154:8080/api VUE_APP_BASE_API=https://test.birkenstock.net.cn/api
# VUE_APP_PROXY_API=http://47.103.169.154:8080/api # VUE_APP_PROXY_API=http://47.103.169.154:8080/api
# VUE_APP_PUBLIC_PATH=https://ecshopx-vshop.oss-cn-hangzhou.aliyuncs.com/ecshopx-admin # VUE_APP_PUBLIC_PATH=https://ecshopx-vshop.oss-cn-hangzhou.aliyuncs.com/ecshopx-admin
VUE_APP_PUBLIC_PATH=/ VUE_APP_PUBLIC_PATH=/

16
.env.slb Executable file
View File

@ -0,0 +1,16 @@
NODE_ENV=production
VUE_APP_SLB_MODE=true
VUE_APP_IS_SAAS=false
VUE_APP_SYSTEM_NAME=platform
VUE_APP_PRODUCT_MODEL=platform
# VUE_APP_BASE_API=https://ecshopx-shop.ex-sandbox.com/api
VUE_APP_BASE_API=https://slb.birkenstock.net.cn/api
# VUE_APP_PROXY_API=http://47.103.169.154:8080/api
# VUE_APP_PUBLIC_PATH=https://ecshopx-vshop.oss-cn-hangzhou.aliyuncs.com/ecshopx-admin
VUE_APP_PUBLIC_PATH=/
VUE_APP_WXIMG_URL=
VUE_APP_WXAUTHCALL_Url=https://ecshopx-shop.ex-sandbox.com
VUE_APP_PREFIXES=
VUE_APP_QIANKUN_ENTRY=/newpc/
VUE_APP_OSS_CDN=false
VUE_APP_FREE=false

16
.env.test Executable file
View File

@ -0,0 +1,16 @@
NODE_ENV=production
VUE_APP_SLB_MODE=true
VUE_APP_IS_SAAS=false
VUE_APP_SYSTEM_NAME=platform
VUE_APP_PRODUCT_MODEL=platform
# VUE_APP_BASE_API=https://ecshopx-shop.ex-sandbox.com/api
VUE_APP_BASE_API=https://test.birkenstock.net.cn/api
# VUE_APP_PROXY_API=http://47.103.169.154:8080/api
# VUE_APP_PUBLIC_PATH=https://ecshopx-vshop.oss-cn-hangzhou.aliyuncs.com/ecshopx-admin
VUE_APP_PUBLIC_PATH=/
VUE_APP_WXIMG_URL=
VUE_APP_WXAUTHCALL_Url=https://ecshopx-shop.ex-sandbox.com
VUE_APP_PREFIXES=
VUE_APP_QIANKUN_ENTRY=/newpc/
VUE_APP_OSS_CDN=false
VUE_APP_FREE=false

2
.gitignore vendored
View File

@ -1,6 +1,8 @@
.DS_Store .DS_Store
node_modules/ node_modules/
dist/ dist/
dist-lsb.*
dist-test.*
npm-debug.log* npm-debug.log*
yarn-debug.log* yarn-debug.log*
yarn-error.log* yarn-error.log*

48
package-lock.json generated
View File

@ -9,7 +9,7 @@
"version": "3.13.10", "version": "3.13.10",
"dependencies": { "dependencies": {
"@riophae/vue-treeselect": "0.0.38", "@riophae/vue-treeselect": "0.0.38",
"@shopex/finder": "^1.0.50", "@shopex/finder": "^1.0.54",
"ali-oss": "^6.5.1", "ali-oss": "^6.5.1",
"aws-sdk": "^2.824.0", "aws-sdk": "^2.824.0",
"axios": "^0.19.2", "axios": "^0.19.2",
@ -65,7 +65,6 @@
"eslint-plugin-vue": "^6.2.2", "eslint-plugin-vue": "^6.2.2",
"exec-sh": "^0.4.0", "exec-sh": "^0.4.0",
"lint-staged": "^12.1.5", "lint-staged": "^12.1.5",
"node-sass-js-importer": "^4.0.2",
"prettier": "^2.5.1", "prettier": "^2.5.1",
"prettier-eslint": "^13.0.0", "prettier-eslint": "^13.0.0",
"prettier-eslint-cli": "^5.0.1", "prettier-eslint-cli": "^5.0.1",
@ -2424,9 +2423,9 @@
} }
}, },
"node_modules/@shopex/finder": { "node_modules/@shopex/finder": {
"version": "1.0.50", "version": "1.0.54",
"resolved": "http://registry.npm.ishopex.cn/@shopex%2ffinder/-/finder-1.0.50.tgz", "resolved": "http://registry.npm.ishopex.cn/@shopex%2ffinder/-/finder-1.0.54.tgz",
"integrity": "sha512-G+jIZXq2fvht4yKuX23zmmcejgtPi9S0oz+GuXuy6180d10LtfqkAkmM/aE4lrQVNnil0C4FXBuwUIhTte71Ow==", "integrity": "sha512-45suOmYWdAAp4tQjxdA7kj5eU+Ul562TipvnqzCf3igaSuQfHdHb6k5rQfF32VZJI5kvXE8CeYTvDfFbU4SE1Q==",
"dependencies": { "dependencies": {
"core-js": "^3.6.5", "core-js": "^3.6.5",
"element-ui": "^2.14.1", "element-ui": "^2.14.1",
@ -17240,22 +17239,6 @@
"dev": true, "dev": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/node-sass-js-importer": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/node-sass-js-importer/-/node-sass-js-importer-4.0.3.tgz",
"integrity": "sha512-ychArWXht7YsVjOsbazwi6D0zQyJsebjB23P2PNxi0hCF7mubm9LMKrGq1FVI++IaojYIeoof+iwYL6dPCfBgQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"is-plain-object": "^2.0.4"
},
"engines": {
"node": ">=6.0.0"
},
"peerDependencies": {
"node-sass": ">=3.5.3"
}
},
"node_modules/normalize-package-data": { "node_modules/normalize-package-data": {
"version": "2.5.0", "version": "2.5.0",
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
@ -25893,8 +25876,8 @@
}, },
"node_modules/vue-reactive-provide": { "node_modules/vue-reactive-provide": {
"version": "0.3.0", "version": "0.3.0",
"resolved": "https://registry.npmmirror.com/vue-reactive-provide/-/vue-reactive-provide-0.3.0.tgz", "resolved": "http://registry.npm.ishopex.cn/vue-reactive-provide/-/vue-reactive-provide-0.3.0.tgz",
"integrity": "sha512-hx2JtRPRvne9NY4s1r7ASsCaO8CIby30qwC1kGQRxsrWApO3he+rziGOzTDSfvmr852zWMb11n6qAwHCz6C/vw==", "integrity": "sha1-/Q6STz2wzlFJ3vzJjbrEw+l6v68=",
"peerDependencies": { "peerDependencies": {
"vue": ">=2.6" "vue": ">=2.6"
} }
@ -29139,9 +29122,9 @@
} }
}, },
"@shopex/finder": { "@shopex/finder": {
"version": "1.0.50", "version": "1.0.54",
"resolved": "http://registry.npm.ishopex.cn/@shopex%2ffinder/-/finder-1.0.50.tgz", "resolved": "http://registry.npm.ishopex.cn/@shopex%2ffinder/-/finder-1.0.54.tgz",
"integrity": "sha512-G+jIZXq2fvht4yKuX23zmmcejgtPi9S0oz+GuXuy6180d10LtfqkAkmM/aE4lrQVNnil0C4FXBuwUIhTte71Ow==", "integrity": "sha512-45suOmYWdAAp4tQjxdA7kj5eU+Ul562TipvnqzCf3igaSuQfHdHb6k5rQfF32VZJI5kvXE8CeYTvDfFbU4SE1Q==",
"requires": { "requires": {
"core-js": "^3.6.5", "core-js": "^3.6.5",
"element-ui": "^2.14.1", "element-ui": "^2.14.1",
@ -40031,15 +40014,6 @@
"integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==",
"dev": true "dev": true
}, },
"node-sass-js-importer": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/node-sass-js-importer/-/node-sass-js-importer-4.0.3.tgz",
"integrity": "sha512-ychArWXht7YsVjOsbazwi6D0zQyJsebjB23P2PNxi0hCF7mubm9LMKrGq1FVI++IaojYIeoof+iwYL6dPCfBgQ==",
"dev": true,
"requires": {
"is-plain-object": "^2.0.4"
}
},
"normalize-package-data": { "normalize-package-data": {
"version": "2.5.0", "version": "2.5.0",
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
@ -46433,8 +46407,8 @@
}, },
"vue-reactive-provide": { "vue-reactive-provide": {
"version": "0.3.0", "version": "0.3.0",
"resolved": "https://registry.npmmirror.com/vue-reactive-provide/-/vue-reactive-provide-0.3.0.tgz", "resolved": "http://registry.npm.ishopex.cn/vue-reactive-provide/-/vue-reactive-provide-0.3.0.tgz",
"integrity": "sha512-hx2JtRPRvne9NY4s1r7ASsCaO8CIby30qwC1kGQRxsrWApO3he+rziGOzTDSfvmr852zWMb11n6qAwHCz6C/vw==", "integrity": "sha1-/Q6STz2wzlFJ3vzJjbrEw+l6v68=",
"requires": {} "requires": {}
}, },
"vue-router": { "vue-router": {

View File

@ -6,14 +6,16 @@
"private": true, "private": true,
"repository": "https://git.ishopex.cn/ecshopx/ecshopx-admin.git", "repository": "https://git.ishopex.cn/ecshopx/ecshopx-admin.git",
"scripts": { "scripts": {
"build": "vue-cli-service build", "build": "vue-cli-service build --mode slb",
"build:slb": "vue-cli-service build --mode slb",
"build:test": "vue-cli-service build --mode test",
"dev": "vue-cli-service --model development serve", "dev": "vue-cli-service --model development serve",
"sh": "node ./cli.js", "sh": "node ./cli.js",
"lint": "prettier-eslint --write --list-different 'src/**/*.{js,vue}'" "lint": "prettier-eslint --write --list-different 'src/**/*.{js,vue}'"
}, },
"dependencies": { "dependencies": {
"@riophae/vue-treeselect": "0.0.38", "@riophae/vue-treeselect": "0.0.38",
"@shopex/finder": "^1.0.50", "@shopex/finder": "^1.0.54",
"ali-oss": "^6.5.1", "ali-oss": "^6.5.1",
"aws-sdk": "^2.824.0", "aws-sdk": "^2.824.0",
"axios": "^0.19.2", "axios": "^0.19.2",
@ -69,7 +71,6 @@
"eslint-plugin-vue": "^6.2.2", "eslint-plugin-vue": "^6.2.2",
"exec-sh": "^0.4.0", "exec-sh": "^0.4.0",
"lint-staged": "^12.1.5", "lint-staged": "^12.1.5",
"node-sass-js-importer": "^4.0.2",
"prettier": "^2.5.1", "prettier": "^2.5.1",
"prettier-eslint": "^13.0.0", "prettier-eslint": "^13.0.0",
"prettier-eslint-cli": "^5.0.1", "prettier-eslint-cli": "^5.0.1",

File diff suppressed because it is too large Load Diff

View File

@ -1,13 +1,13 @@
import fetch from '../utils/fetch' import fetch from '../utils/fetch'
export function getMembers(query) { export function getMembers (query) {
return fetch({ return fetch({
url: '/members', url: '/members',
method: 'get', method: 'get',
params: query params: query
}) })
} }
export function getMember(query) { export function getMember (query) {
return fetch({ return fetch({
url: '/member', url: '/member',
method: 'get', method: 'get',
@ -15,7 +15,7 @@ export function getMember(query) {
}) })
} }
export function setMemberRegisterSetting(query) { export function setMemberRegisterSetting (query) {
return fetch({ return fetch({
url: '/members/register/setting', url: '/members/register/setting',
method: 'post', method: 'post',
@ -23,7 +23,7 @@ export function setMemberRegisterSetting(query) {
}) })
} }
export function setMemberRegisterContentSetting(query) { export function setMemberRegisterContentSetting (query) {
return fetch({ return fetch({
url: '/members/register/setting', url: '/members/register/setting',
method: 'post', method: 'post',
@ -31,7 +31,7 @@ export function setMemberRegisterContentSetting(query) {
}) })
} }
export function setMemberanalysisrightsContent(query) { export function setMemberanalysisrightsContent (query) {
return fetch({ return fetch({
url: '/members/analysisrights/content', url: '/members/analysisrights/content',
method: 'post', method: 'post',
@ -39,21 +39,21 @@ export function setMemberanalysisrightsContent(query) {
}) })
} }
export function getMemberanalysisrightsContent() { export function getMemberanalysisrightsContent () {
return fetch({ return fetch({
url: '/members/analysisrights/content', url: '/members/analysisrights/content',
method: 'get' method: 'get'
}) })
} }
export function getMemberRegisterSetting() { export function getMemberRegisterSetting () {
return fetch({ return fetch({
url: '/members/register/setting', url: '/members/register/setting',
method: 'get' method: 'get'
}) })
} }
export function memberSmsSend(query) { export function memberSmsSend (query) {
return fetch({ return fetch({
url: '/member/smssend', url: '/member/smssend',
method: 'post', method: 'post',
@ -61,7 +61,7 @@ export function memberSmsSend(query) {
}) })
} }
export function saveTag(query) { export function saveTag (query) {
return fetch({ return fetch({
url: '/member/tag', url: '/member/tag',
method: 'post', method: 'post',
@ -69,7 +69,7 @@ export function saveTag(query) {
}) })
} }
export function getTagList(query) { export function getTagList (query) {
return fetch({ return fetch({
url: '/member/tag', url: '/member/tag',
method: 'get', method: 'get',
@ -77,7 +77,7 @@ export function getTagList(query) {
}) })
} }
export function updateMemberMobile(query) { export function updateMemberMobile (query) {
return fetch({ return fetch({
url: '/member', url: '/member',
method: 'put', method: 'put',
@ -85,7 +85,7 @@ export function updateMemberMobile(query) {
}) })
} }
export function setSindusersalespersonrel(query) { export function setSindusersalespersonrel (query) {
return fetch({ return fetch({
url: '/member/bindusersalespersonrel', url: '/member/bindusersalespersonrel',
method: 'post', method: 'post',
@ -93,7 +93,7 @@ export function setSindusersalespersonrel(query) {
}) })
} }
export function updateMemberGrade(query) { export function updateMemberGrade (query) {
return fetch({ return fetch({
url: '/member/grade', url: '/member/grade',
method: 'put', method: 'put',
@ -101,7 +101,7 @@ export function updateMemberGrade(query) {
}) })
} }
export function batchupdateMemberGrade(query) { export function batchupdateMemberGrade (query) {
return fetch({ return fetch({
url: '/member/grade', url: '/member/grade',
method: 'patch', method: 'patch',
@ -109,7 +109,7 @@ export function batchupdateMemberGrade(query) {
}) })
} }
export function updateMemberInfo(query) { export function updateMemberInfo (query) {
return fetch({ return fetch({
url: '/member', url: '/member',
method: 'patch', method: 'patch',
@ -117,7 +117,7 @@ export function updateMemberInfo(query) {
}) })
} }
export function getMemberOperateLog(query) { export function getMemberOperateLog (query) {
return fetch({ return fetch({
url: '/operate/loglist', url: '/operate/loglist',
method: 'get', method: 'get',
@ -125,14 +125,14 @@ export function getMemberOperateLog(query) {
}) })
} }
export function getTagInfo(tagId) { export function getTagInfo (tagId) {
return fetch({ return fetch({
url: '/member/tag/' + tagId, url: '/member/tag/' + tagId,
method: 'get' method: 'get'
}) })
} }
export function updateTag(query) { export function updateTag (query) {
return fetch({ return fetch({
url: '/member/tag', url: '/member/tag',
method: 'put', method: 'put',
@ -140,14 +140,14 @@ export function updateTag(query) {
}) })
} }
export function deleteTag(tagId) { export function deleteTag (tagId) {
return fetch({ return fetch({
url: '/member/tag/' + tagId, url: '/member/tag/' + tagId,
method: 'delete' method: 'delete'
}) })
} }
export function usersRelTagsDel(query) { export function usersRelTagsDel (query) {
return fetch({ return fetch({
url: '/member/reltagdel/', url: '/member/reltagdel/',
method: 'post', method: 'post',
@ -155,7 +155,7 @@ export function usersRelTagsDel(query) {
}) })
} }
export function tagSearchUser(query) { export function tagSearchUser (query) {
return fetch({ return fetch({
url: '/member/tagsearch', url: '/member/tagsearch',
method: 'GET', method: 'GET',
@ -163,7 +163,7 @@ export function tagSearchUser(query) {
}) })
} }
export function listVipGrade(query) { export function listVipGrade (query) {
return fetch({ return fetch({
url: '/vipgrade/order', url: '/vipgrade/order',
method: 'GET', method: 'GET',
@ -171,7 +171,7 @@ export function listVipGrade(query) {
}) })
} }
export function memberExport(query) { export function memberExport (query) {
return fetch({ return fetch({
url: '/member/export', url: '/member/export',
method: 'GET', method: 'GET',
@ -179,7 +179,7 @@ export function memberExport(query) {
}) })
} }
export function salespersonBindExport(query) { export function salespersonBindExport (query) {
return fetch({ return fetch({
url: '/salespersonbind/export', url: '/salespersonbind/export',
method: 'GET', method: 'GET',
@ -187,7 +187,7 @@ export function salespersonBindExport(query) {
}) })
} }
export function createTagCategory(query) { export function createTagCategory (query) {
return fetch({ return fetch({
url: '/member/tagcategory', url: '/member/tagcategory',
method: 'post', method: 'post',
@ -195,7 +195,7 @@ export function createTagCategory(query) {
}) })
} }
export function getTagCategoryList(query) { export function getTagCategoryList (query) {
return fetch({ return fetch({
url: '/member/tagcategory', url: '/member/tagcategory',
method: 'get', method: 'get',
@ -203,14 +203,14 @@ export function getTagCategoryList(query) {
}) })
} }
export function getTagCategoryInfo(categoryId) { export function getTagCategoryInfo (categoryId) {
return fetch({ return fetch({
url: '/member/tagcategory/' + categoryId, url: '/member/tagcategory/' + categoryId,
method: 'get' method: 'get'
}) })
} }
export function updateTagCategory(categoryId, query) { export function updateTagCategory (categoryId, query) {
return fetch({ return fetch({
url: '/member/tagcategory/' + categoryId, url: '/member/tagcategory/' + categoryId,
method: 'put', method: 'put',
@ -218,14 +218,14 @@ export function updateTagCategory(categoryId, query) {
}) })
} }
export function deleteTagCategory(categoryId) { export function deleteTagCategory (categoryId) {
return fetch({ return fetch({
url: '/member/tagcategory/' + categoryId, url: '/member/tagcategory/' + categoryId,
method: 'delete' method: 'delete'
}) })
} }
export function batchOperating(query) { export function batchOperating (query) {
return fetch({ return fetch({
url: '/member/batchOperating', url: '/member/batchOperating',
method: 'POST', method: 'POST',
@ -233,7 +233,16 @@ export function batchOperating(query) {
}) })
} }
export function updateMemberBasicInfo(query) { // 标记用户为内部人员
export function batchIsInternal (query) {
return fetch({
url: '/member/isInternal',
method: 'POST',
params: query
})
}
export function updateMemberBasicInfo (query) {
return fetch({ return fetch({
url: '/member/update', url: '/member/update',
method: 'put', method: 'put',
@ -241,7 +250,7 @@ export function updateMemberBasicInfo(query) {
}) })
} }
export function getMembersWhitelistList(query) { export function getMembersWhitelistList (query) {
return fetch({ return fetch({
url: '/members/whitelist/list', url: '/members/whitelist/list',
method: 'get', method: 'get',
@ -249,7 +258,7 @@ export function getMembersWhitelistList(query) {
}) })
} }
export function createMembersWhitelist(query) { export function createMembersWhitelist (query) {
return fetch({ return fetch({
url: '/members/whitelist', url: '/members/whitelist',
method: 'post', method: 'post',
@ -257,7 +266,7 @@ export function createMembersWhitelist(query) {
}) })
} }
export function updateMembersWhitelist(id, query) { export function updateMembersWhitelist (id, query) {
return fetch({ return fetch({
url: '/members/whitelist/' + id, url: '/members/whitelist/' + id,
method: 'post', method: 'post',
@ -265,14 +274,14 @@ export function updateMembersWhitelist(id, query) {
}) })
} }
export function deleteMembersWhitelist(id) { export function deleteMembersWhitelist (id) {
return fetch({ return fetch({
url: '/members/whitelist/' + id, url: '/members/whitelist/' + id,
method: 'delete' method: 'delete'
}) })
} }
export function getSubscribeList(query) { export function getSubscribeList (query) {
return fetch({ return fetch({
url: '/members/subscribe/list', url: '/members/subscribe/list',
method: 'get', method: 'get',
@ -281,7 +290,7 @@ export function getSubscribeList(query) {
} }
// 会员信息表单字段获取 // 会员信息表单字段获取
export function getRegForm(query) { export function getRegForm (query) {
return fetch({ return fetch({
url: '/espier/config/request_fields', url: '/espier/config/request_fields',
method: 'get', method: 'get',
@ -290,7 +299,7 @@ export function getRegForm(query) {
} }
// 会员信息表单字段更新 // 会员信息表单字段更新
export function updateRegForm(query) { export function updateRegForm (query) {
return fetch({ return fetch({
url: '/espier/config/request_fields/info', url: '/espier/config/request_fields/info',
method: 'put', method: 'put',
@ -299,7 +308,7 @@ export function updateRegForm(query) {
} }
// 会员信息表单字段删除 // 会员信息表单字段删除
export function deleteRegForm(query) { export function deleteRegForm (query) {
return fetch({ return fetch({
url: '/espier/config/request_fields', url: '/espier/config/request_fields',
method: 'delete', method: 'delete',
@ -308,7 +317,7 @@ export function deleteRegForm(query) {
} }
// 会员信息表单字段新增 // 会员信息表单字段新增
export function createRegForm(query) { export function createRegForm (query) {
return fetch({ return fetch({
url: '/espier/config/request_fields', url: '/espier/config/request_fields',
method: 'post', method: 'post',
@ -317,7 +326,7 @@ export function createRegForm(query) {
} }
// 会员信息表单状态切换 // 会员信息表单状态切换
export function toggleRegForm(query) { export function toggleRegForm (query) {
return fetch({ return fetch({
url: '/espier/config/request_fields/switch', url: '/espier/config/request_fields/switch',
method: 'put', method: 'put',
@ -325,7 +334,7 @@ export function toggleRegForm(query) {
}) })
} }
export function getMemberFieldSetting(query) { export function getMemberFieldSetting (query) {
return fetch({ return fetch({
url: '/espier/config/request_field_setting', url: '/espier/config/request_field_setting',
method: 'get', method: 'get',
@ -333,7 +342,7 @@ export function getMemberFieldSetting(query) {
}) })
} }
export function saveMemberFieldSetting(params) { export function saveMemberFieldSetting (params) {
return fetch({ return fetch({
url: 'espier/config/request_field_setting', url: 'espier/config/request_field_setting',
method: 'post', method: 'post',
@ -341,7 +350,7 @@ export function saveMemberFieldSetting(params) {
}) })
} }
export function setCheif(query) { export function setCheif (query) {
return fetch({ return fetch({
url: '/community/chief/setMemberCommunity', url: '/community/chief/setMemberCommunity',
method: 'post', method: 'post',
@ -350,7 +359,7 @@ export function setCheif(query) {
} }
// 获取内购企业列表 // 获取内购企业列表
export function getEnterpriseList(params) { export function getEnterpriseList (params) {
return fetch({ return fetch({
url: '/members/enterprise', url: '/members/enterprise',
method: 'get', method: 'get',
@ -359,7 +368,7 @@ export function getEnterpriseList(params) {
} }
// 新增内购企业 // 新增内购企业
export function addEnterpriseInfo(params) { export function addEnterpriseInfo (params) {
return fetch({ return fetch({
url: '/members/enterprise', url: '/members/enterprise',
method: 'post', method: 'post',
@ -368,7 +377,7 @@ export function addEnterpriseInfo(params) {
} }
// 获取内购企业详情 // 获取内购企业详情
export function getEnterpriseDetail(id) { export function getEnterpriseDetail (id) {
return fetch({ return fetch({
url: '/members/enterprise/' + id, url: '/members/enterprise/' + id,
method: 'get' method: 'get'
@ -376,7 +385,7 @@ export function getEnterpriseDetail(id) {
} }
// 更新内购企业 // 更新内购企业
export function updateEnterpriseInfo(id, params) { export function updateEnterpriseInfo (id, params) {
return fetch({ return fetch({
url: '/members/enterprise/' + id, url: '/members/enterprise/' + id,
method: 'put', method: 'put',
@ -385,7 +394,7 @@ export function updateEnterpriseInfo(id, params) {
} }
// 删内购企业 // 删内购企业
export function deteleEnterpriseInfo(id, params) { export function deteleEnterpriseInfo (id, params) {
return fetch({ return fetch({
url: '/members/enterprise' + id, url: '/members/enterprise' + id,
method: 'delete', method: 'delete',
@ -394,7 +403,7 @@ export function deteleEnterpriseInfo(id, params) {
} }
// 更新内购企业状态 // 更新内购企业状态
export function updateEnterpriseStaus(id, params) { export function updateEnterpriseStaus (id, params) {
return fetch({ return fetch({
url: '/members/enterprise/updateStatus/' + id, url: '/members/enterprise/updateStatus/' + id,
method: 'put', method: 'put',

View File

@ -277,6 +277,7 @@ export default {
_renderRichTextArr(item) { _renderRichTextArr(item) {
const { value, editorModules } = this const { value, editorModules } = this
const { key, disabled = false, options } = item const { key, disabled = false, options } = item
const length = value[key].length
const removeItem = (index) => { const removeItem = (index) => {
value[key].splice(index, 1) value[key].splice(index, 1)
// this.$set(this.value, key, richArr) // this.$set(this.value, key, richArr)
@ -285,6 +286,16 @@ export default {
value[key].push({ title: '', content: '' }) value[key].push({ title: '', content: '' })
// this.$set(this.value, key, richArr) // this.$set(this.value, key, richArr)
} }
const handlerMove = (index, type) => {
const _item = value[key][index]
if (type === 'up') {
value[key].splice(index, 1)
value[key].splice(index - 1, 0, _item)
} else {
value[key].splice(index, 1)
value[key].splice(index + 1, 0, _item)
}
}
return ( return (
<div> <div>
{value[key].map((item, index) => ( {value[key].map((item, index) => (
@ -304,6 +315,16 @@ export default {
</div> </div>
<SpRichText v-model={item.content} /> <SpRichText v-model={item.content} />
</div> </div>
<div style='display: flex;flex-direction:column;juctify-content:center;padding: 0px 20px; margin-left: 50px;'>
{index !== 0 && (
<el-tooltip class='item' effect='dark' content='向上移动' placement='top'>
<i
class='el-icon-top'
style='font-size: 30px; color: #000;margin-bottom: 10px'
onClick={() => handlerMove(index, 'up')}
/>
</el-tooltip>
)}
<el-popconfirm <el-popconfirm
confirm-button-type='danger' confirm-button-type='danger'
confirm-button-text='删除' confirm-button-text='删除'
@ -317,9 +338,19 @@ export default {
slot='reference' slot='reference'
class='iconfont icon-trash-alt1' class='iconfont icon-trash-alt1'
// onClick={() => removeItem(index)} // onClick={() => removeItem(index)}
style='font-size: 30px;padding: 0px 20px; margin-left: 50px; color: #F56C6C;' style='font-size: 30px; color: #F56C6C;'
/> />
</el-popconfirm> </el-popconfirm>
{index < length - 1 && (
<el-tooltip class='item' effect='dark' content='向下移动' placement='bottom'>
<i
class='el-icon-bottom'
style='font-size: 30px; color: #000;margin-top: 10px'
onClick={() => handlerMove(index, 'down')}
/>
</el-tooltip>
)}
</div>
</div> </div>
))} ))}
<el-button type='warning' size='small' onClick={addItem} style='margin:20px 0 0 20px;'> <el-button type='warning' size='small' onClick={addItem} style='margin:20px 0 0 20px;'>

View File

@ -70,6 +70,9 @@
/> />
</el-select> </el-select>
</SpFilterFormItem> </SpFilterFormItem>
<!-- <SpFilterFormItem prop="keywords">
<el-input v-model="formData.item_name_3" placeholder="输入内部货号" />
</SpFilterFormItem> -->
<SpFilterFormItem prop="category"> <SpFilterFormItem prop="category">
<el-cascader <el-cascader
v-model="formData.category" v-model="formData.category"
@ -117,8 +120,17 @@
} }
}) })
]), ]),
h('div', { class: 'item-name' }, row.itemName) h('div', { class: 'flex-col' }, [
h('div', { class: 'item-name' }, row.itemName),
h('div', { class: 'item-name' }, row.item_name_2)
]) ])
])
},
{
name: '内部货号',
key: 'item_name_3',
width: 100,
render: (h, { row }) => h('span', {}, row.item_name_3)
}, },
{ {
name: '价格(¥)', name: '价格(¥)',

View File

@ -90,8 +90,8 @@ export default {
size: 0, size: 0,
activeName: 'first', activeName: 'first',
form: { form: {
account: '15026786768', account: '',
checkPass: 'shopex666' checkPass: ''
}, },
loginType: 'admin', loginType: 'admin',
rules: { rules: {
@ -105,20 +105,29 @@ export default {
}, },
watch: { watch: {
activeName(val) { activeName(val) {
const isLab = process.env.VUE_APP_SLB_MODE
if (val == 'second') { if (val == 'second') {
this.loginType = 'staff' this.loginType = 'staff'
this.form = { this.form = {
account: '15026787266', account: isLab ? '' : '15026787266',
checkPass: '15026787266' checkPass: isLab ? '' : '15026787266'
} }
} else { } else {
this.loginType = 'admin' this.loginType = 'admin'
this.form = {
account: isLab ? '' : '15026786768',
checkPass: isLab ? '' : 'shopex666'
}
}
}
},
created() {
if (!process.env.VUE_APP_SLB_MODE) {
this.form = { this.form = {
account: '15026786768', account: '15026786768',
checkPass: 'shopex666' checkPass: 'shopex666'
} }
} }
}
}, },
mounted() { mounted() {
window.addEventListener('resize', this.fnSize()) window.addEventListener('resize', this.fnSize())

View File

@ -138,6 +138,7 @@ export default {
mate_description: '', // pc mate_description: '', // pc
mate_keywords: '', // pc mate_keywords: '', // pc
item_name_2: '', item_name_2: '',
item_name_3: '',
item_alias_name: '', // item_alias_name: '', //
pdp: '' pdp: ''
}, },
@ -181,6 +182,13 @@ export default {
type: 'input', type: 'input',
display: 'inline' display: 'inline'
}, },
{
label: '内部货号',
key: 'item_name_3',
type: 'input',
display: 'inline',
message: '请输入内部货号'
},
{ {
label: 'PDP标题', label: 'PDP标题',
key: 'item_name_2', key: 'item_name_2',
@ -592,6 +600,7 @@ export default {
item_params, item_params,
intro_list, intro_list,
item_name_2, item_name_2,
item_name_3,
item_alias_name, item_alias_name,
pdp pdp
} = await this.$api.goods.getItemsDetail(itemId) } = await this.$api.goods.getItemsDetail(itemId)
@ -611,6 +620,7 @@ export default {
this.form.isGift = is_gift this.form.isGift = is_gift
this.form.videos = videos this.form.videos = videos
this.form.item_name_2 = item_name_2 this.form.item_name_2 = item_name_2
this.form.item_name_3 = item_name_3
this.form.item_alias_name = item_alias_name this.form.item_alias_name = item_alias_name
this.form.isShowSpecimg = is_show_specimg this.form.isShowSpecimg = is_show_specimg
this.form.pdp = pdp this.form.pdp = pdp
@ -705,7 +715,7 @@ export default {
pageSize: 99 pageSize: 99
}) })
if (list.length > 0) { if (list.length > 0) {
this.formList[8].options = list.map((item) => { this.formList[9].options = list.map((item) => {
return { return {
value: item.template_id, value: item.template_id,
title: item.name title: item.name
@ -723,7 +733,7 @@ export default {
attribute_type: 'brand' attribute_type: 'brand'
// attribute_name: searchVal // attribute_name: searchVal
}) })
this.formList[9].options = list.map(({ attribute_id, attribute_name }) => { this.formList[10].options = list.map(({ attribute_id, attribute_name }) => {
return { return {
value: attribute_id, value: attribute_id,
title: attribute_name title: attribute_name
@ -843,6 +853,7 @@ export default {
paramsData, paramsData,
intro_list, intro_list,
item_name_2, item_name_2,
item_name_3,
item_alias_name, item_alias_name,
pdp pdp
} = this.form } = this.form
@ -891,6 +902,7 @@ export default {
intro: mode == 'component' ? JSON.stringify(content) : intro, intro: mode == 'component' ? JSON.stringify(content) : intro,
intro_list: JSON.parse(JSON.stringify(intro_list)), intro_list: JSON.parse(JSON.stringify(intro_list)),
item_name_2, item_name_2,
item_name_3,
item_alias_name, item_alias_name,
pdp pdp
} }

View File

@ -244,6 +244,7 @@
> >
<el-table-column type="selection" align="center" label="全选" /> <el-table-column type="selection" align="center" label="全选" />
<el-table-column prop="goods_id" label="商品ID" /> <el-table-column prop="goods_id" label="商品ID" />
<el-table-column prop="item_name_3" label="内部货号" />
<el-table-column prop="itemName" label="商品" width="300"> <el-table-column prop="itemName" label="商品" width="300">
<template slot-scope="scope"> <template slot-scope="scope">
<div class="goods-title"> <div class="goods-title">
@ -328,7 +329,7 @@
</el-button> </el-button>
<el-popover v-if="appID" placement="top" width="200" trigger="click"> <el-popover v-if="appID" placement="top" width="200" trigger="click">
<div> <div>
<img class="page-code" :src="appCodeUrl"> <img class="page-code" :src="appCodeUrl" />
<div class="page-btns"> <div class="page-btns">
<el-button <el-button
type="primary" type="primary"
@ -383,7 +384,7 @@
class="copy-btn" class="copy-btn"
type="text" type="text"
> >
<input v-model="scope.row.link" class="copy-link" type="text"> <input v-model="scope.row.link" class="copy-link" type="text" />复制链
</el-button> </el-button>
<el-button <el-button
v-if="scope.row.approve_status == 'onsale'" v-if="scope.row.approve_status == 'onsale'"

View File

@ -179,7 +179,7 @@
:name="item.value" :name="item.value"
/> />
<el-table v-loading="loading" border :data="tableList"> <el-table v-loading="loading" border :data="tableList">
<el-table-column width="220" prop="order_id" label="订单信息"> <el-table-column width="200" prop="order_id" label="订单信息">
<template slot-scope="scope"> <template slot-scope="scope">
<div class="order-num"> <div class="order-num">
{{ scope.row.order_id }} {{ scope.row.order_id }}
@ -205,13 +205,18 @@
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column width="100" label="商品货号">
<template slot-scope="{ row }">
<p v-for="item in row.items">{{ item.item_bn }}</p>
</template>
</el-table-column>
<el-table-column prop="item_name_3" width="100" label="内部货号"> </el-table-column>
<el-table-column prop="total_fee" width="120" label="订单金额(¥)"> <el-table-column prop="total_fee" width="120" label="订单金额(¥)">
<template slot-scope="scope"> <template slot-scope="scope">
{{ (scope.row.total_fee / 100).toFixed(2) }} {{ (scope.row.total_fee / 100).toFixed(2) }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column width="100" label="运费(¥)"> <el-table-column width="0" label="运费(¥)">
<template slot-scope="scope"> <template slot-scope="scope">
{{ (scope.row.freight_fee || 0) / 100 }} {{ (scope.row.freight_fee || 0) / 100 }}
</template> </template>

View File

@ -63,10 +63,12 @@ import CompRefundAmount from './comps/comp-refundAmount'
import CompRefundPoint from './comps/comp-refundPoint' import CompRefundPoint from './comps/comp-refundPoint'
const REASONS = [ const REASONS = [
{ title: '我不想要了', value: '5' },
{ title: '我不喜欢', value: '6' },
{ title: '收到残次品', value: '1' }, { title: '收到残次品', value: '1' },
{ title: '商品有污渍', value: '2' }, { title: '商品有污渍', value: '2' },
{ title: '包装破损导致商品损坏', value: '3' }, { title: '包装破损导致商品损坏', value: '3' }
{ title: '七天无理由退货', value: '4' } // { title: '退', value: '4' }
] ]
export default { export default {
name: '', name: '',

View File

@ -75,11 +75,16 @@
</el-tag> </el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="item_spec_desc" label="规格"> <el-table-column prop="item_spec_desc" width="120" label="规格">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.item_spec_desc ? scope.row.item_spec_desc : '单规格' }} {{ scope.row.item_spec_desc ? scope.row.item_spec_desc : '单规格' }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="item_spec_desc" width="100" label="商品货号">
<template slot-scope="{ row }">
<p>{{ row.item_bn }}</p>
</template>
</el-table-column>
<el-table-column prop="price" label="单价(¥)" width="100"> <el-table-column prop="price" label="单价(¥)" width="100">
<template slot-scope="scope"> <template slot-scope="scope">
{{ (scope.row.price / 100).toFixed(2) }} {{ (scope.row.price / 100).toFixed(2) }}

View File

@ -225,7 +225,13 @@
</el-card> </el-card>
<el-card shadow="never" header="适用规则"> <el-card shadow="never" header="适用规则">
<el-form-item label="前台直接领取"> <el-form-item label="前台直接领取">
<el-switch v-model="form.receive" active-color="#13ce66" inactive-color="#d2d4db" /> <el-switch
v-model="form.receive"
:active-value="true"
:inactiveValue="false"
active-color="#13ce66"
inactive-color="#d2d4db"
/>
</el-form-item> </el-form-item>
<el-form-item label="是否积分兑换"> <el-form-item label="是否积分兑换">
<el-switch <el-switch
@ -235,7 +241,10 @@
active-color="#13ce66" active-color="#13ce66"
inactive-color="#d2d4db" inactive-color="#d2d4db"
/> />
<div v-if="form.is_point_receive == 1" style="display: inline-flex; align-items: center; margin-left: 20px"> <div
v-if="form.is_point_receive == 1"
style="display: inline-flex; align-items: center; margin-left: 20px"
>
<span>积分:</span> <span>积分:</span>
<el-input <el-input
v-model="form.point" v-model="form.point"

View File

@ -179,9 +179,9 @@
<el-button type="primary" plain icon="el-plus-circle"> 导出 </el-button> <el-button type="primary" plain icon="el-plus-circle"> 导出 </el-button>
</export-tip> </export-tip>
<el-button v-if="!VERSION_IN_PURCHASE" type="primary" plain @click="chiefupload"> <!-- <el-button v-if="!VERSION_IN_PURCHASE" type="primary" plain @click="chiefupload">
团长导入 团长导入
</el-button> </el-button> -->
</div> </div>
<!-- <el-row> <!-- <el-row>
@ -234,7 +234,12 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column v-if="!VERSION_IN_PURCHASE" prop="is_chief" label="是否团长" width="80"> <el-table-column
v-if="!VERSION_IN_PURCHASE && false"
prop="is_chief"
label="是否团长"
width="80"
>
<template slot-scope="scope"> <template slot-scope="scope">
<el-switch <el-switch
v-model="scope.row.is_chief" v-model="scope.row.is_chief"
@ -305,7 +310,7 @@
<template slot-scope="scope"> <template slot-scope="scope">
<el-tooltip placement="top"> <el-tooltip placement="top">
<div slot="content"> <div slot="content">
注册时间<br>{{ scope.row.created | datetime('YYYY-MM-DD HH:mm:ss') }} 注册时间<br />{{ scope.row.created | datetime('YYYY-MM-DD HH:mm:ss') }}
</div> </div>
<span>{{ scope.row.created | datetime }}</span> <span>{{ scope.row.created | datetime }}</span>
</el-tooltip> </el-tooltip>
@ -769,6 +774,7 @@ import {
updateMemberGrade, updateMemberGrade,
batchupdateMemberGrade, batchupdateMemberGrade,
batchOperating, batchOperating,
batchIsInternal,
getMemberRegisterSetting, getMemberRegisterSetting,
updateMemberBasicInfo, updateMemberBasicInfo,
setCheif setCheif
@ -1359,6 +1365,13 @@ export default {
return return
} }
this.dialogIsShow = false this.dialogIsShow = false
if (this.user_id.length === 0) {
this.$message({
type: 'error',
message: '没有选中会员'
})
return
}
this.batchAction('是否给全部会员打标签?') this.batchAction('是否给全部会员打标签?')
}, },
clearParams() { clearParams() {
@ -1371,7 +1384,7 @@ export default {
if (this.user_id.length > 0) { if (this.user_id.length > 0) {
this.params.user_id = this.user_id this.params.user_id = this.user_id
let params = JSON.parse(JSON.stringify(this.params)) let params = JSON.parse(JSON.stringify(this.params))
console.log(this.params) console.log(params, 'params')
batchOperating(params).then((res) => { batchOperating(params).then((res) => {
if (res.data.data.status) { if (res.data.data.status) {
this.dialogIsShow = false this.dialogIsShow = false
@ -1384,6 +1397,8 @@ export default {
this.getMembers() this.getMembers()
} }
}) })
params.tag_ids?.includes('1') &&
batchIsInternal({ user_id: params.user_id, is_internal: 1 }).then((res) => {})
} else { } else {
this.$confirm(message, '提示', { this.$confirm(message, '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
@ -1593,6 +1608,7 @@ export default {
tag_id: tagId, tag_id: tagId,
user_id: userId user_id: userId
}) })
tagId == 1 && (await batchIsInternal({ user_id: userId, is_internal: 0 }))
this.$message({ type: 'success', message: '修改成功' }) this.$message({ type: 'success', message: '修改成功' })
this.getMembers() this.getMembers()
}, },

View File

@ -1,8 +1,6 @@
<template> <template>
<div class="section section-white"> <div class="section section-white">
<div class="section-header with-border"> <div class="section-header with-border">添加表单元素</div>
添加表单元素
</div>
<div class="section-body"> <div class="section-body">
<el-form <el-form
ref="form" ref="form"
@ -20,45 +18,27 @@
<el-input <el-input
v-model.trim="form.field_title" v-model.trim="form.field_title"
:maxlength="30" :maxlength="30"
placeholder="身高(cm)" placeholder="请输入标题"
@change="fieldTitleChange" @change="fieldTitleChange"
/> />
</el-col> </el-col>
</el-form-item> </el-form-item>
<el-form-item <el-form-item
v-if="false"
label="表单元素类型" label="表单元素类型"
prop="form_element" prop="form_element"
:rules="[{ required: true, message: '请选择表单元素', trigger: 'change' }]" :rules="[{ required: true, message: '请选择表单元素', trigger: 'change' }]"
> >
<el-col :span="15"> <el-col :span="15">
<el-radio-group <el-radio-group v-model="form.form_element" @change="ElementChange">
v-model="form.form_element" <el-radio label="text"> 单文本框 </el-radio>
@change="ElementChange" <el-radio label="number"> 数字(纯数字) </el-radio>
> <el-radio label="checkbox"> 复选框 </el-radio>
<el-radio label="text"> <el-radio label="select"> 下拉选择 </el-radio>
单文本框 <el-radio label="radio"> 单选按钮 </el-radio>
</el-radio> <el-radio label="textarea"> 多文本域 </el-radio>
<el-radio label="number"> <el-radio label="date"> 日期选择 </el-radio>
数字(纯数字) <el-radio label="area"> 地区选择 </el-radio>
</el-radio>
<el-radio label="checkbox">
复选框
</el-radio>
<el-radio label="select">
下拉选择
</el-radio>
<el-radio label="radio">
单选按钮
</el-radio>
<el-radio label="textarea">
多文本域
</el-radio>
<el-radio label="date">
日期选择
</el-radio>
<el-radio label="area">
地区选择
</el-radio>
</el-radio-group> </el-radio-group>
</el-col> </el-col>
</el-form-item> </el-form-item>
@ -81,18 +61,10 @@
> >
<el-row> <el-row>
<el-col :span="15"> <el-col :span="15">
<el-input <el-input v-model="domain.value" width="20" />
v-model="domain.value"
width="20"
/>
</el-col> </el-col>
<el-col <el-col v-if="index > 1" :span="5">
v-if="index > 1" <el-button @click.prevent="removeDomain(domain)"> 删除 </el-button>
:span="5"
>
<el-button @click.prevent="removeDomain(domain)">
删除
</el-button>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
@ -124,13 +96,7 @@
" "
> >
<el-col :span="15"> <el-col :span="15">
<el-button <el-button type="primary" circle @click="addOption"> </el-button>
type="primary"
circle
@click="addOption"
>
</el-button>
</el-col> </el-col>
</el-form-item> </el-form-item>
<!-- field_name{{form.field_name}} | defalutFileName:{{defalutFileName}} --> <!-- field_name{{form.field_name}} | defalutFileName:{{defalutFileName}} -->
@ -172,21 +138,12 @@
/> />
</el-col> </el-col>
</el-form-item> </el-form-item>
<el-form-item <el-form-item label="图片" prop="image_url" v-if="false">
label="图片"
prop="image_url"
>
<el-col :span="15"> <el-col :span="15">
<div> <div>
<imgBox <imgBox :img-url="wximageurl + form.image_url" inline @click="handleImgBChange" />
:img-url="wximageurl + form.image_url"
inline
@click="handleImgBChange"
/>
</div>
<div class="frm-tips">
只能上传jpg/png文件且不超过2M 建议尺寸400px * 450px
</div> </div>
<div class="frm-tips">只能上传jpg/png文件且不超过2M 建议尺寸400px * 450px</div>
<imgPicker <imgPicker
:dialog-visible="imgDialog" :dialog-visible="imgDialog"
:sc-status="isGetImage" :sc-status="isGetImage"
@ -196,15 +153,8 @@
</el-col> </el-col>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button @click.native="handleCancel"> <el-button @click.native="handleCancel"> 取消 </el-button>
取消 <el-button type="primary" @click="submitAction"> </el-button>
</el-button>
<el-button
type="primary"
@click="submitAction"
>
保存
</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
@ -223,7 +173,7 @@ export default {
imgPicker, imgPicker,
imgBox imgBox
}, },
data () { data() {
return { return {
form: { form: {
id: '', id: '',
@ -258,7 +208,7 @@ export default {
defalutFileName: 'username' defalutFileName: 'username'
} }
}, },
mounted () { mounted() {
if (this.$route.query.id) { if (this.$route.query.id) {
getSettingInfo(this.$route.query.id).then((res) => { getSettingInfo(this.$route.query.id).then((res) => {
this.form = res.data.data this.form = res.data.data
@ -273,10 +223,10 @@ export default {
} }
}, },
methods: { methods: {
handleOnChageCtrlFields (v) { handleOnChageCtrlFields(v) {
this.form.field_name = v this.form.field_name = v
}, },
ElementChange (value) { ElementChange(value) {
if (value == 'text' || value == 'textarea') { if (value == 'text' || value == 'textarea') {
this.form.options = [ this.form.options = [
{ value: '', image_url: '' }, { value: '', image_url: '' },
@ -284,26 +234,26 @@ export default {
] ]
} }
}, },
fieldTitleChange (value) { fieldTitleChange(value) {
this.formLable = value this.formLable = value
}, },
fieldNameChange (value) { fieldNameChange(value) {
this.formName = value this.formName = value
}, },
addOption () { addOption() {
let cope = { let cope = {
value: '', value: '',
key: Date.now() key: Date.now()
} }
this.form.options.push(cope) this.form.options.push(cope)
}, },
removeDomain (item) { removeDomain(item) {
var index = this.form.options.indexOf(item) var index = this.form.options.indexOf(item)
if (index !== -1) { if (index !== -1) {
this.form.options.splice(index, 1) this.form.options.splice(index, 1)
} }
}, },
submitAction () { submitAction() {
const that = this const that = this
this.$refs['form'].validate((valid) => { this.$refs['form'].validate((valid) => {
if (valid) { if (valid) {
@ -314,7 +264,7 @@ export default {
message: '更新成功', message: '更新成功',
type: 'success', type: 'success',
duration: 2 * 1000, duration: 2 * 1000,
onClose () { onClose() {
that.refresh() that.refresh()
that.$router.go(-1) that.$router.go(-1)
} }
@ -328,7 +278,7 @@ export default {
message: '添加成功', message: '添加成功',
type: 'success', type: 'success',
duration: 2 * 1000, duration: 2 * 1000,
onClose () { onClose() {
that.refresh() that.refresh()
that.$router.go(-1) that.$router.go(-1)
} }
@ -345,15 +295,15 @@ export default {
} }
}) })
}, },
handleCancel () { handleCancel() {
this.$router.go(-1) this.$router.go(-1)
}, },
handleImgChange (index) { handleImgChange(index) {
this.imgIndex = index this.imgIndex = index
this.imgDialog = true this.imgDialog = true
this.isGetImage = true this.isGetImage = true
}, },
pickImg (data) { pickImg(data) {
if (this.imgIndex == 'all') { if (this.imgIndex == 'all') {
this.form.image_url = data.url this.form.image_url = data.url
} else { } else {
@ -361,10 +311,10 @@ export default {
} }
this.imgDialog = false this.imgDialog = false
}, },
closeImgDialog () { closeImgDialog() {
this.imgDialog = false this.imgDialog = false
}, },
handleImgBChange () { handleImgBChange() {
this.imgIndex = 'all' this.imgIndex = 'all'
this.imgDialog = true this.imgDialog = true
this.isGetImage = true this.isGetImage = true

View File

@ -8,29 +8,14 @@
<div> <div>
<template v-if="$route.path.indexOf('detail') === -1 && $route.path.indexOf('editor') === -1"> <template v-if="$route.path.indexOf('detail') === -1 && $route.path.indexOf('editor') === -1">
<div class="action-container"> <div class="action-container">
<el-button <el-button type="primary" icon="iconfont icon-xinzengcaozuo-01" @click="addElement">
type="primary"
icon="iconfont icon-xinzengcaozuo-01"
@click="addElement"
>
表单元素添加 表单元素添加
</el-button> </el-button>
</div> </div>
<SpFilterForm <SpFilterForm :model="params" @onSearch="onSearch" @onReset="onReset">
:model="params" <SpFilterFormItem prop="form_element" label="表单元素:" v-if="false">
@onSearch="onSearch" <el-select v-model="params.form_element" placeholder="请选择表单元素" style="width: 100%">
@onReset="onReset"
>
<SpFilterFormItem
prop="form_element"
label="表单元素:"
>
<el-select
v-model="params.form_element"
placeholder="请选择表单元素"
style="width: 100%"
>
<el-option <el-option
v-for="item in formElement" v-for="item in formElement"
:key="item.value" :key="item.value"
@ -40,77 +25,37 @@
</el-select> </el-select>
</SpFilterFormItem> </SpFilterFormItem>
<SpFilterFormItem <SpFilterFormItem prop="field_title" label="标题:">
prop="field_title" <el-input v-model="params.field_title" placeholder="标题" style="width: 100%" />
label="标题:"
>
<el-input
v-model="params.field_title"
placeholder="标题"
style="width: 100%"
/>
</SpFilterFormItem> </SpFilterFormItem>
</SpFilterForm> </SpFilterForm>
<el-tabs <el-tabs v-model="params.is_valid" type="card" @tab-click="handleTabClick">
v-model="params.is_valid"
type="card"
@tab-click="handleTabClick"
>
<el-tab-pane <el-tab-pane
v-for="(item, index) in tabList" v-for="(item, index) in tabList"
:key="index" :key="index"
:label="item.name" :label="item.name"
:name="item.activeName" :name="item.activeName"
> >
<el-table <el-table v-loading="loading" border :data="tableList" :height="wheight - 280">
v-loading="loading" <el-table-column prop="id" label="ID" width="50" />
border <el-table-column prop="field_title" label="标题" width="250" />
:data="tableList" <el-table-column prop="field_name" label="唯一标示(纯字母)" width="200" />
:height="wheight - 280" <el-table-column prop="form_element" label="元素类型" width="100" />
> <!-- <el-table-column label="元素选择项">
<el-table-column
prop="id"
label="ID"
width="50"
/>
<el-table-column
prop="field_title"
label="标题"
width="250"
/>
<el-table-column
prop="field_name"
label="唯一标示(纯字母)"
width="200"
/>
<el-table-column
prop="form_element"
label="元素类型"
width="100"
/>
<el-table-column label="元素选择项">
<template slot-scope="scope"> <template slot-scope="scope">
<span <span v-for="(item, index) in scope.row.options" :key="index">
v-for="(item, index) in scope.row.options" {{ item.value }}</span
:key="index"
> >
{{ item.value }}</span>
</template> </template>
</el-table-column> </el-table-column> -->
<el-table-column <el-table-column label="操作" min-width="100">
label="操作"
width="100"
>
<template slot-scope="scope"> <template slot-scope="scope">
<router-link <router-link
class="iconfont icon-edit1" class="iconfont icon-edit1"
:to="{ path: matchHidePage('editor'), query: { id: scope.row.id } }" :to="{ path: matchHidePage('editor'), query: { id: scope.row.id } }"
/> />
<i <i class="iconfont icon-search-plus" @click="preview(scope.$index, scope.row)" />
class="iconfont icon-search-plus"
@click="preview(scope.$index, scope.row)"
/>
<i <i
v-if="scope.row.status == 1" v-if="scope.row.status == 1"
class="mark iconfont icon-trash-alt1" class="mark iconfont icon-trash-alt1"
@ -135,77 +80,31 @@
</el-tabs> </el-tabs>
<el-dialog :visible.sync="dialogVisible"> <el-dialog :visible.sync="dialogVisible">
<el-form <el-form ref="dataInfo" label-width="200px" label-position="left" class="demo-ruleForm">
ref="dataInfo"
label-width="200px"
label-position="left"
class="demo-ruleForm"
>
<el-form-item :label="dataInfo.field_title"> <el-form-item :label="dataInfo.field_title">
<el-col <el-col v-if="dataInfo.form_element == 'text'" :span="12">
v-if="dataInfo.form_element == 'text'"
:span="12"
>
<el-input placeholder="text预览" /> <el-input placeholder="text预览" />
</el-col> </el-col>
<el-col <el-col v-if="dataInfo.form_element == 'textarea'" :span="12">
v-if="dataInfo.form_element == 'textarea'" <el-input type="textarea" placeholder="textarea预览" />
:span="12"
>
<el-input
type="textarea"
placeholder="textarea预览"
/>
</el-col> </el-col>
<el-col <el-col v-if="dataInfo.form_element == 'number'" :span="12">
v-if="dataInfo.form_element == 'number'" <el-input-number type="textarea" placeholder="55.55" />
:span="12"
>
<el-input-number
type="textarea"
placeholder="55.55"
/>
</el-col> </el-col>
<el-col <el-col v-if="dataInfo.form_element == 'image'" :span="12">
v-if="dataInfo.form_element == 'image'" <el-upload class="avatar-uploader" action="" :show-file-list="false">
:span="12" <img v-if="imageUrl" :src="imageUrl" class="avatar" />
> <i v-else class="el-icon-plus avatar-uploader-icon" />
<el-upload
class="avatar-uploader"
action=""
:show-file-list="false"
>
<img
v-if="imageUrl"
:src="imageUrl"
class="avatar"
>
<i
v-else
class="el-icon-plus avatar-uploader-icon"
/>
</el-upload> </el-upload>
</el-col> </el-col>
<el-col <el-col v-if="dataInfo.form_element == 'radio'" :span="12">
v-if="dataInfo.form_element == 'radio'"
:span="12"
>
<el-radio-group> <el-radio-group>
<el-radio <el-radio v-for="(item, index) in dataInfo.options" :key="index" :label="3">
v-for="(item, index) in dataInfo.options" {{ item.value }}
:key="index"
:label="3"
>
{{
item.value
}}
</el-radio> </el-radio>
</el-radio-group> </el-radio-group>
</el-col> </el-col>
<el-col <el-col v-if="dataInfo.form_element == 'checkbox'" :span="12">
v-if="dataInfo.form_element == 'checkbox'"
:span="12"
>
<el-checkbox-group> <el-checkbox-group>
<el-checkbox <el-checkbox
v-for="(item, index) in dataInfo.options" v-for="(item, index) in dataInfo.options"
@ -216,10 +115,7 @@
</el-checkbox> </el-checkbox>
</el-checkbox-group> </el-checkbox-group>
</el-col> </el-col>
<el-col <el-col v-if="dataInfo.form_element == 'select'" :span="12">
v-if="dataInfo.form_element == 'select'"
:span="12"
>
<el-select placeholder="请选择"> <el-select placeholder="请选择">
<el-option <el-option
v-for="item in dataInfo.options" v-for="item in dataInfo.options"
@ -229,20 +125,10 @@
/> />
</el-select> </el-select>
</el-col> </el-col>
<el-col <el-col v-if="dataInfo.form_element == 'date'" :span="12">
v-if="dataInfo.form_element == 'date'" <el-date-picker v-model="value1" type="date" placeholder="选择日期" />
:span="12"
>
<el-date-picker
v-model="value1"
type="date"
placeholder="选择日期"
/>
</el-col> </el-col>
<el-col <el-col v-if="dataInfo.form_element == 'time'" :span="12">
v-if="dataInfo.form_element == 'time'"
:span="12"
>
<el-time-picker <el-time-picker
v-model="value2" v-model="value2"
arrow-control arrow-control
@ -252,10 +138,7 @@
placeholder="任意时间点" placeholder="任意时间点"
/> />
</el-col> </el-col>
<el-col <el-col v-if="dataInfo.form_element == 'area'" :span="12">
v-if="dataInfo.form_element == 'area'"
:span="12"
>
<el-cascader <el-cascader
v-model="value" v-model="value"
:options="options" :options="options"
@ -276,12 +159,12 @@ import { deleteSetting } from '@/api/selfhelpform'
import { pageMixin } from '@/mixins' import { pageMixin } from '@/mixins'
export default { export default {
mixins: [pageMixin], mixins: [pageMixin],
provide () { provide() {
return { return {
refresh: this.fetchList refresh: this.fetchList
} }
}, },
data () { data() {
const initialParams = { const initialParams = {
form_element: undefined, form_element: undefined,
field_title: undefined, field_title: undefined,
@ -339,46 +222,46 @@ export default {
...mapGetters(['wheight']) ...mapGetters(['wheight'])
}, },
watch: { watch: {
getStatus (val) { getStatus(val) {
if (val) { if (val) {
this.fetchList() this.fetchList()
} }
} }
}, },
mounted () { mounted() {
this.fetchList() this.fetchList()
}, },
methods: { methods: {
onSearch () { onSearch() {
this.page.pageIndex = 1 this.page.pageIndex = 1
this.$nextTick(() => { this.$nextTick(() => {
this.fetchList() this.fetchList()
}) })
}, },
onReset () { onReset() {
this.params = { ...this.initialParams } this.params = { ...this.initialParams }
this.onSearch() this.onSearch()
}, },
addElement () { addElement() {
// //
this.$router.push({ path: this.matchHidePage('editor') }) this.$router.push({ path: this.matchHidePage('editor') })
}, },
editAction (index, row) { editAction(index, row) {
// //
this.$router.push({ path: '/member/selfservice/formsettingadd/' + row.id }) this.$router.push({ path: '/member/selfservice/formsettingadd/' + row.id })
}, },
preview (index, row) { preview(index, row) {
// //
this.dialogVisible = true this.dialogVisible = true
this.dataInfo = row this.dataInfo = row
}, },
getParams () { getParams() {
let params = { let params = {
...this.params ...this.params
} }
return params return params
}, },
async fetchList () { async fetchList() {
this.loading = true this.loading = true
const { pageIndex: page, pageSize } = this.page const { pageIndex: page, pageSize } = this.page
let params = { let params = {
@ -392,7 +275,7 @@ export default {
this.loading = false this.loading = false
}, },
deleteAction (index, row) { deleteAction(index, row) {
this.$confirm('此操废弃该元素, 是否继续?', '提示', { this.$confirm('此操废弃该元素, 是否继续?', '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
@ -422,7 +305,7 @@ export default {
}) })
}) })
}, },
getTaskTime (strDate) { getTaskTime(strDate) {
let date = new Date(strDate) let date = new Date(strDate)
let y = date.getFullYear() let y = date.getFullYear()
let m = date.getMonth() + 1 let m = date.getMonth() + 1
@ -432,16 +315,21 @@ export default {
let str = y + '-' + m + '-' + d let str = y + '-' + m + '-' + d
return str return str
}, },
getTimeStr (date) { getTimeStr(date) {
return this.getTaskTime(new Date(parseInt(date) * 1000)) return this.getTaskTime(new Date(parseInt(date) * 1000))
}, },
handleTabClick (tab, event) { handleTabClick(tab, event) {
this.onSearch() this.onSearch()
} }
} }
} }
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
::v-deep .cell {
.iconfont {
padding: 0 10px;
}
}
.el-row { .el-row {
margin-bottom: 20px; margin-bottom: 20px;
&:last-child { &:last-child {

View File

@ -8,99 +8,47 @@
<div> <div>
<template v-if="$route.path.indexOf('detail') === -1 && $route.path.indexOf('editor') === -1"> <template v-if="$route.path.indexOf('detail') === -1 && $route.path.indexOf('editor') === -1">
<div class="action-container"> <div class="action-container">
<el-button <el-button type="primary" icon="iconfont icon-xinzengcaozuo-01" @click="addTemplate">
type="primary"
icon="iconfont icon-xinzengcaozuo-01"
@click="addTemplate"
>
添加模板 添加模板
</el-button> </el-button>
</div> </div>
<SpFilterForm <SpFilterForm :model="params" @onSearch="onSearch" @onReset="onReset">
:model="params" <SpFilterFormItem prop="tem_name" label="模板名称:">
@onSearch="onSearch" <el-input v-model="params.tem_name" placeholder="模板名称" />
@onReset="onReset"
>
<SpFilterFormItem
prop="tem_name"
label="模板名称:"
>
<el-input
v-model="params.tem_name"
placeholder="模板名称"
/>
</SpFilterFormItem> </SpFilterFormItem>
<SpFilterFormItem <SpFilterFormItem prop="tem_type" label="模板类型:">
prop="tem_type" <el-select v-model="params.tem_type" placeholder="模板类型" style="width: 100%">
label="模板类型:" <el-option key="basic_entry" label="基础录入" value="basic_entry" />
> <el-option key="ask_answer_paper" label="问卷调查" value="ask_answer_paper" />
<el-select
v-model="params.tem_type"
placeholder="模板类型"
style="width: 100%"
>
<el-option
key="basic_entry"
label="基础录入"
value="basic_entry"
/>
<el-option
key="ask_answer_paper"
label="问卷调查"
value="ask_answer_paper"
/>
</el-select> </el-select>
</SpFilterFormItem> </SpFilterFormItem>
</SpFilterForm> </SpFilterForm>
<el-tabs <el-tabs v-model="params.is_valid" type="card" @tab-click="handleTabClick">
v-model="params.is_valid"
type="card"
@tab-click="handleTabClick"
>
<el-tab-pane <el-tab-pane
v-for="(item, index) in tabList" v-for="(item, index) in tabList"
:key="index" :key="index"
:label="item.name" :label="item.name"
:name="item.activeName" :name="item.activeName"
> >
<el-table <el-table v-loading="loading" border :data="tableList" :height="wheight - 280">
v-loading="loading" <el-table-column prop="id" label="ID" width="50" />
border <el-table-column prop="tem_name" label="模板名称" min-width="300" />
:data="tableList" <el-table-column prop="tem_type" label="模板类型" min-width="100" />
:height="wheight - 280" <el-table-column prop="status" label="状态" min-width="100">
> <template slot-scope="scope">
<el-table-column <el-tag v-if="scope.row.status == 1" size="small" type="success"></el-tag>
prop="id" <el-tag v-else type="info" size="small">禁用</el-tag>
label="ID" </template>
width="100" </el-table-column>
/> <el-table-column label="操作" min-width="130">
<el-table-column
prop="tem_name"
label="模板名称"
width="300"
/>
<el-table-column
prop="tem_type"
label="模板类型"
width="300"
/>
<el-table-column
prop="status"
label="状态"
width="100"
/>
<el-table-column label="操作">
<template slot-scope="scope"> <template slot-scope="scope">
<router-link <router-link
class="iconfont icon-edit1" class="iconfont icon-edit1"
:to="{ path: matchHidePage('editor'), query: { id: scope.row.id } }" :to="{ path: matchHidePage('editor'), query: { id: scope.row.id } }"
/> />
<i <i class="iconfont icon-search-plus" @click="preview(scope.$index, scope.row)" />
class="iconfont icon-search-plus"
@click="preview(scope.$index, scope.row)"
/>
<i <i
v-if="scope.row.status == 1" v-if="scope.row.status == 1"
class="mark iconfont icon-trash-alt1" class="mark iconfont icon-trash-alt1"
@ -123,21 +71,9 @@
</div> </div>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
<el-dialog <el-dialog :visible.sync="dialogVisible" :title="dialogTitle" width="50">
:visible.sync="dialogVisible" <el-alert v-if="headerTitle" :title="headerTitle" type="info" :closable="false" /><br />
:title="dialogTitle" <el-card v-for="(carditem, index) in dialogContent" :key="index">
width="50"
>
<el-alert
v-if="headerTitle"
:title="headerTitle"
type="info"
:closable="false"
/><br>
<el-card
v-for="(carditem, index) in dialogContent"
:key="index"
>
<div slot="header"> <div slot="header">
{{ carditem.title }} {{ carditem.title }}
</div> </div>
@ -152,56 +88,24 @@
:key="index" :key="index"
:label="item.field_title" :label="item.field_title"
> >
<el-col <el-col v-if="item.form_element == 'text'" :span="12">
v-if="item.form_element == 'text'" <el-input placeholder="text预览" disabled />
:span="12"
>
<el-input
placeholder="text预览"
disabled
/>
</el-col> </el-col>
<el-col <el-col v-if="item.form_element == 'number'" :span="12">
v-if="item.form_element == 'number'" <el-input placeholder="1" size="mini" disabled style="width: 120px" />
:span="12"
>
<el-input
placeholder="1"
size="mini"
disabled
style="width: 120px"
/>
<span class="frm-tips"> (只能是数字)</span> <span class="frm-tips"> (只能是数字)</span>
</el-col> </el-col>
<el-col <el-col v-if="item.form_element == 'textarea'" :span="12">
v-if="item.form_element == 'textarea'" <el-input type="textarea" placeholder="textarea预览" disabled :rows="5" />
:span="12"
>
<el-input
type="textarea"
placeholder="textarea预览"
disabled
:rows="5"
/>
</el-col> </el-col>
<el-col <el-col v-if="item.form_element == 'radio'" :span="12">
v-if="item.form_element == 'radio'"
:span="12"
>
<el-radio-group disabled> <el-radio-group disabled>
<el-radio <el-radio v-for="(item, index) in item.options" :key="index" :label="3">
v-for="(item, index) in item.options"
:key="index"
:label="3"
>
{{ item.value }} {{ item.value }}
</el-radio> </el-radio>
</el-radio-group> </el-radio-group>
</el-col> </el-col>
<el-col <el-col v-if="item.form_element == 'checkbox'" :span="12">
v-if="item.form_element == 'checkbox'"
:span="12"
>
<el-checkbox-group disabled> <el-checkbox-group disabled>
<el-checkbox <el-checkbox
v-for="(item, index) in item.options" v-for="(item, index) in item.options"
@ -212,10 +116,7 @@
</el-checkbox> </el-checkbox>
</el-checkbox-group> </el-checkbox-group>
</el-col> </el-col>
<el-col <el-col v-if="item.form_element == 'select'" :span="12">
v-if="item.form_element == 'select'"
:span="12"
>
<el-select placeholder="请选择"> <el-select placeholder="请选择">
<el-option <el-option
v-for="item in item.options" v-for="item in item.options"
@ -229,18 +130,8 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-card> </el-card>
<el-alert <el-alert v-if="bottomTitle" :title="bottomTitle" type="info" :closable="false" />
v-if="bottomTitle" <el-button type="primary" disabled> 确认提交 </el-button>
:title="bottomTitle"
type="info"
:closable="false"
/>
<el-button
type="primary"
disabled
>
确认提交
</el-button>
</el-dialog> </el-dialog>
</template> </template>
<router-view /> <router-view />
@ -252,12 +143,12 @@ import { deleteTemplate } from '@/api/selfhelpform'
import { pageMixin } from '@/mixins' import { pageMixin } from '@/mixins'
export default { export default {
mixins: [pageMixin], mixins: [pageMixin],
provide () { provide() {
return { return {
refresh: this.fetchList refresh: this.fetchList
} }
}, },
data () { data() {
const initialParams = { const initialParams = {
tem_name: undefined, tem_name: undefined,
tem_type: undefined, tem_type: undefined,
@ -287,41 +178,41 @@ export default {
...mapGetters(['wheight']) ...mapGetters(['wheight'])
}, },
watch: { watch: {
getStatus (val) { getStatus(val) {
if (val) { if (val) {
this.fetchList() this.fetchList()
} }
} }
}, },
mounted () { mounted() {
this.fetchList() this.fetchList()
}, },
methods: { methods: {
onSearch () { onSearch() {
this.page.pageIndex = 1 this.page.pageIndex = 1
this.$nextTick(() => { this.$nextTick(() => {
this.fetchList() this.fetchList()
}) })
}, },
onReset () { onReset() {
this.params = { ...this.initialParams } this.params = { ...this.initialParams }
this.onSearch() this.onSearch()
}, },
getParams () { getParams() {
let params = { let params = {
...this.params ...this.params
} }
return params return params
}, },
addTemplate () { addTemplate() {
// //
this.$router.push({ path: this.matchHidePage('editor') }) this.$router.push({ path: this.matchHidePage('editor') })
}, },
editTemplateAction (index, row) { editTemplateAction(index, row) {
// //
this.$router.push({ path: '/member/selfservice/formtemplateadd/' + row.id }) this.$router.push({ path: '/member/selfservice/formtemplateadd/' + row.id })
}, },
preview (index, row) { preview(index, row) {
// //
this.dialogVisible = true this.dialogVisible = true
this.dialogTitle = row.tem_name + '( 预览模式 )' this.dialogTitle = row.tem_name + '( 预览模式 )'
@ -329,7 +220,7 @@ export default {
this.headerTitle = row.header_title this.headerTitle = row.header_title
this.bottomTitle = row.bottom_title this.bottomTitle = row.bottom_title
}, },
async fetchList () { async fetchList() {
this.loading = true this.loading = true
const { pageIndex: page, pageSize } = this.page const { pageIndex: page, pageSize } = this.page
let params = { let params = {
@ -342,7 +233,7 @@ export default {
this.page.total = total_count this.page.total = total_count
this.loading = false this.loading = false
}, },
deleteAction (index, row) { deleteAction(index, row) {
this.$confirm('此操作将废弃该模板, 是否继续?', '提示', { this.$confirm('此操作将废弃该模板, 是否继续?', '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
@ -372,7 +263,7 @@ export default {
}) })
}) })
}, },
getTaskTime (strDate) { getTaskTime(strDate) {
let date = new Date(strDate) let date = new Date(strDate)
let y = date.getFullYear() let y = date.getFullYear()
let m = date.getMonth() + 1 let m = date.getMonth() + 1
@ -382,16 +273,21 @@ export default {
let str = y + '-' + m + '-' + d let str = y + '-' + m + '-' + d
return str return str
}, },
getTimeStr (date) { getTimeStr(date) {
return this.getTaskTime(new Date(parseInt(date) * 1000)) return this.getTaskTime(new Date(parseInt(date) * 1000))
}, },
handleTabClick (tab, event) { handleTabClick(tab, event) {
this.onSearch() this.onSearch()
} }
} }
} }
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
::v-deep .cell {
.iconfont {
padding: 0 10px;
}
}
.el-row { .el-row {
margin-bottom: 20px; margin-bottom: 20px;
&:last-child { &:last-child {

View File

@ -19,14 +19,19 @@
</el-select> </el-select>
</SpFilterFormItem> </SpFilterFormItem>
<SpFilterFormItem prop="create_time" label="时间:"> <SpFilterFormItem prop="create_time" label="时间:">
<el-date-picker v-model="params.create_time" type="daterange" value-format="yyyy/MM/dd" placeholder="根据添加时间筛选" /> <el-date-picker
v-model="params.create_time"
type="daterange"
value-format="yyyy/MM/dd"
placeholder="根据添加时间筛选"
/>
</SpFilterFormItem> </SpFilterFormItem>
</SpFilterForm> </SpFilterForm>
<el-table v-loading="loading" border :data="tableList"> <el-table v-loading="loading" border :data="tableList">
<el-table-column prop="activity_id" label="编号" width="50" /> <el-table-column prop="activity_id" label="编号" width="50" />
<el-table-column prop="activity_name" label="活动名称" width="300" /> <el-table-column prop="activity_name" label="活动名称" min-width="300" />
<el-table-column prop="start_time" label="活动有效期" width="300"> <el-table-column prop="start_time" label="活动有效期" min-width="300">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.start_date }} ~ {{ scope.row.end_date }} {{ scope.row.start_date }} ~ {{ scope.row.end_date }}
</template> </template>
@ -36,34 +41,72 @@
{{ scope.row.total_join_num || 0 }} {{ scope.row.total_join_num || 0 }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作"> <el-table-column label="操作" min-width="130">
<template slot-scope="scope"> <template slot-scope="scope">
<router-link class="iconfont icon-edit1" <router-link
:to="{ path: matchHidePage('editor'), query: { id: scope.row.activity_id } }" /> class="iconfont icon-edit1"
:to="{ path: matchHidePage('editor'), query: { id: scope.row.activity_id } }"
/>
<i class="iconfont icon-search-plus" @click="preview(scope.$index, scope.row)" /> <i class="iconfont icon-search-plus" @click="preview(scope.$index, scope.row)" />
<i v-if="scope.row.status == 1" class="mark iconfont icon-trash-alt1" <!-- v-if="scope.row.status == 1" -->
@click="deleteAction(scope.$index, scope.row)" /> <i class="mark iconfont icon-trash-alt1" @click="deleteAction(scope.$index, scope.row)" />
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div class="content-center content-top-padded"> <div class="content-center content-top-padded">
<el-pagination background layout="total, sizes, prev, pager, next, jumper" :current-page.sync="page.pageIndex" <el-pagination
:page-sizes="[10, 20, 50]" :total="page.total" :page-size="page.pageSize" @current-change="onCurrentChange" background
@size-change="onSizeChange" /> layout="total, sizes, prev, pager, next, jumper"
:current-page.sync="page.pageIndex"
:page-sizes="[10, 20, 50]"
:total="page.total"
:page-size="page.pageSize"
@current-change="onCurrentChange"
@size-change="onSizeChange"
/>
</div> </div>
<el-dialog :visible.sync="dialogVisible" title="活动详情"> <el-dialog :visible.sync="dialogVisible" title="活动详情">
<el-descriptions :column="1"> <el-descriptions :column="1">
<el-descriptions-item label="活动名称">{{ dataInfo.activity_name }}</el-descriptions-item> <el-descriptions-item label="活动名称">{{ dataInfo.activity_name }}</el-descriptions-item>
<el-descriptions-item label="活动有效时间">{{ dataInfo.start_date }}-{{ dataInfo.end_date }}</el-descriptions-item> <el-descriptions-item label="活动有效时间"
>{{ dataInfo.start_date }}-{{ dataInfo.end_date }}</el-descriptions-item
>
<el-descriptions-item label="活动地址">
{{ dataInfo.address }}
</el-descriptions-item>
<el-descriptions-item label="封面">
<div v-if="dataInfo.pics" style="display: flex; flex-wrap: wrap">
<!-- <img
v-for="item in JSON.parse(dataInfo.pics)"
:src="item"
style="width: 100px; height: 100px"
/> -->
<el-image
v-for="item in JSON.parse(dataInfo.pics)"
:key="item"
class="img-content"
style="width: 100px; height: 100px"
:src="item"
fit="cover"
/>
</div>
</el-descriptions-item>
<el-descriptions-item label="活动介绍">
<div class="content-padded" v-html="dataInfo.intro"></div>
</el-descriptions-item>
<el-descriptions-item label="报名问卷模板"> <el-descriptions-item label="报名问卷模板">
{{ dataInfo.temp_id | formatterLable(temp_options) }} {{ dataInfo.temp_id | formatterLable(temp_options) }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="提交报名次数"> <el-descriptions-item label="提交报名次数">
{{ dataInfo.join_limit }} {{ dataInfo.join_limit }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="是否开启短信通知">{{ dataInfo.is_sms_notice==1?'是':'否' }}</el-descriptions-item> <el-descriptions-item label="是否开启短信通知">{{
<el-descriptions-item label="是否开启小程序通知">{{ dataInfo.is_wxapp_notice==1?'是':'否' }}</el-descriptions-item> dataInfo.is_sms_notice == 1 ? '是' : '否'
}}</el-descriptions-item>
<el-descriptions-item label="是否开启小程序通知">{{
dataInfo.is_wxapp_notice == 1 ? '是' : '否'
}}</el-descriptions-item>
</el-descriptions> </el-descriptions>
<!-- <el-form ref="dataInfo" label-width="200px" label-position="left" class="demo-ruleForm"> <!-- <el-form ref="dataInfo" label-width="200px" label-position="left" class="demo-ruleForm">
<el-form-item :label="dataInfo.field_title"> <el-form-item :label="dataInfo.field_title">
@ -142,7 +185,7 @@ import mixin, { pageMixin } from '@/mixins'
export default { export default {
filters: { filters: {
formatterLable(value, options) { formatterLable(value, options) {
return options.find(item => item.value == value)?.label return options.find((item) => item.value == value)?.label
} }
}, },
mixins: [mixin, pageMixin], mixins: [mixin, pageMixin],
@ -360,6 +403,26 @@ export default {
} }
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
::v-deep {
.cell {
.iconfont {
padding: 0 10px;
}
}
.el-descriptions-item__label {
min-width: 100px;
}
.content-padded {
padding: 0 10px;
width: 100%;
img {
width: 90%;
}
p {
margin: 0;
}
}
}
.el-row { .el-row {
margin-bottom: 20px; margin-bottom: 20px;
@ -426,7 +489,6 @@ export default {
</style> </style>
<style lang="scss"> <style lang="scss">
.grid-detail { .grid-detail {
table, table,
.detail-content-wrap, .detail-content-wrap,
.detail-content-item { .detail-content-item {

View File

@ -17,7 +17,7 @@
<el-col :span="15"> <el-col :span="15">
<el-input <el-input
v-model.trim="form.activity_name" v-model.trim="form.activity_name"
:maxlength="30" :maxlength="150"
placeholder="名称" placeholder="名称"
@change="fieldItemChange" @change="fieldItemChange"
/> />
@ -37,6 +37,32 @@
/> />
</el-col> </el-col>
</el-form-item> </el-form-item>
<el-form-item
label="活动地址"
prop="address"
:rules="[{ required: true, message: '请输入活动地址', trigger: 'blur' }]"
>
<el-col :span="15">
<el-input v-model.trim="form.address" :maxlength="150" placeholder="地址" />
</el-col>
</el-form-item>
<el-form-item
label="活动封面图"
prop="pics"
:rules="[{ required: true, message: '请上传活动封面图', trigger: 'change' }]"
>
<div :span="20">
<SpImagePicker v-model="form.pics" drag :max="9" />
<div class="frm-tips">只能上传jpg/png文件且不超过2M</div>
<!-- <imgPicker
:dialog-visible="imgDialog"
:sc-status="isGetImage"
@chooseImg="pickImg"
@closeImgDialog="closeImgDialog"
/> -->
</div>
</el-form-item>
<el-form-item <el-form-item
label="选择报名问卷模板" label="选择报名问卷模板"
prop="temp_id" prop="temp_id"
@ -67,6 +93,16 @@
/> />
</el-col> </el-col>
</el-form-item> </el-form-item>
<el-form-item
label="活动介绍"
prop="activity_name"
:rules="[{ required: true, message: '请输入活动介绍', trigger: 'blur' }]"
>
<el-col :span="20">
<SpRichText v-model="form.intro" />
</el-col>
</el-form-item>
<el-form-item label="是否开启短信通知" prop="is_sms_notice"> <el-form-item label="是否开启短信通知" prop="is_sms_notice">
<el-col :span="15"> <el-col :span="15">
<div class="clearfix"> <div class="clearfix">
@ -136,7 +172,10 @@ export default {
activity_time: '', activity_time: '',
start_time: '', start_time: '',
end_time: '', end_time: '',
join_limit: '' join_limit: '',
address: '',
pics: [],
intro: ''
}, },
templateParams: { templateParams: {
page: 1, page: 1,
@ -241,6 +280,11 @@ export default {
} }
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
::v-deep {
.el-col .sp-rich-text {
width: auto;
}
}
.text { .text {
font-size: 14px; font-size: 14px;
} }

View File

@ -7,28 +7,13 @@
<template> <template>
<div> <div>
<template v-if="$route.path.indexOf('detail') === -1 && $route.path.indexOf('editor') === -1"> <template v-if="$route.path.indexOf('detail') === -1 && $route.path.indexOf('editor') === -1">
<div class="action-container"> <!-- <div class="action-container">
<el-button <el-button type="primary" @click="editorLog()"> </el-button>
type="primary" </div> -->
@click="editorLog()"
>
上传日志
</el-button>
</div>
<SpFilterForm <SpFilterForm :model="params" @onSearch="onSearch" @onReset="onReset">
:model="params" <SpFilterFormItem prop="activity_id" label="活动:">
@onSearch="onSearch" <el-select v-model="params.activity_id" placeholder="请选择活动">
@onReset="onReset"
>
<SpFilterFormItem
prop="activity_id"
label="活动:"
>
<el-select
v-model="params.activity_id"
placeholder="请选择活动"
>
<el-option <el-option
v-for="item in activity_options" v-for="item in activity_options"
:key="item.value" :key="item.value"
@ -37,19 +22,10 @@
/> />
</el-select> </el-select>
</SpFilterFormItem> </SpFilterFormItem>
<SpFilterFormItem <SpFilterFormItem prop="mobile" label="手机号:">
prop="mobile" <el-input v-model="params.mobile" placeholder="手机号" />
label="手机号:"
>
<el-input
v-model="params.mobile"
placeholder="手机号"
/>
</SpFilterFormItem> </SpFilterFormItem>
<SpFilterFormItem <SpFilterFormItem prop="create_time" label="时间:">
prop="create_time"
label="时间:"
>
<el-date-picker <el-date-picker
v-model="params.create_time" v-model="params.create_time"
type="daterange" type="daterange"
@ -60,21 +36,10 @@
</SpFilterForm> </SpFilterForm>
<div class="action-container"> <div class="action-container">
<el-button <!-- <el-button plain type="primary" @click="uploadHandleTemplate()"> </el-button> -->
plain
type="primary"
@click="uploadHandleTemplate()"
>
下载模版
</el-button>
<export-tip @exportHandle="exportData"> <export-tip @exportHandle="exportData">
<el-button <el-button type="primary" plain> 导出Excel </el-button>
type="primary"
plain
>
导出
</el-button>
</export-tip> </export-tip>
<el-upload <el-upload
@ -84,76 +49,53 @@
:auto-upload="false" :auto-upload="false"
:show-file-list="false" :show-file-list="false"
> >
<el-button <el-button type="primary" plain> 点击上传CRM邀约名单 </el-button>
type="primary"
plain
>
点击上传
</el-button>
</el-upload> </el-upload>
</div> </div>
<el-tabs <el-tabs v-model="params.status" type="card" @tab-click="onSearch">
v-model="params.status"
type="card"
@tab-click="onSearch"
>
<el-tab-pane <el-tab-pane
v-for="(item, index) in tabList" v-for="(item, index) in tabList"
:key="index" :key="index"
:label="item.label" :label="item.label"
:name="item.name" :name="item.name"
> >
<el-table <el-table v-loading="loading" border :data="tableList" element-loading-text="数据加载中">
v-loading="loading" <el-table-column prop="record_id" label="报名编号" width="80" />
border <el-table-column prop="mobile" label="手机号" />
:data="tableList" <el-table-column prop="create_date" label="申请时间" />
element-loading-text="数据加载中" <el-table-column prop="status" label="状态">
>
<el-table-column
prop="record_id"
label="报名编号"
/>
<el-table-column
prop="mobile"
label="手机号"
/>
<el-table-column
prop="create_date"
label="申请时间"
/>
<el-table-column
prop="status"
label="状态"
>
<template slot-scope="scope"> <template slot-scope="scope">
<el-tag <el-tag v-if="scope.row.status == 'pending'" type="warning" size="mini">
v-if="scope.row.status == 'pending'"
type="warning"
size="mini"
>
待审核 待审核
</el-tag> </el-tag>
<el-tag <el-tag
v-if="scope.row.status == 'passed'" v-if="scope.row.status == 'passed' && scope.row.is_write_off == '0'"
type="success" type="success"
size="mini" size="mini"
> >
已通过 已通过
</el-tag> </el-tag>
<el-tag <el-tag
v-if="scope.row.status == 'rejected'" v-if="scope.row.status == 'passed' && scope.row.is_write_off == '1'"
type="danger" type="primary"
size="mini" size="mini"
> >
已签到
</el-tag>
<el-tag v-if="scope.row.status == 'rejected'" type="danger" size="mini">
已拒绝 已拒绝
</el-tag> </el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="status" width="120" label="是否CRM邀约">
prop="status" <template slot-scope="scope">
label="操作" <el-tag v-if="scope.row.is_crm != 1" type="warning" size="mini"> </el-tag>
> <el-tag v-if="scope.row.is_crm == 1" type="success" size="mini"> </el-tag>
</template>
</el-table-column>
<el-table-column prop="is_write_off_date_format" label="签到时间" />
<el-table-column prop="status" label="操作">
<template slot-scope="scope"> <template slot-scope="scope">
<router-link <router-link
v-if="scope.row.status == 'pending'" v-if="scope.row.status == 'pending'"
@ -195,7 +137,7 @@ import mixin, { pageMixin } from '@/mixins'
export default { export default {
mixins: [mixin, pageMixin], mixins: [mixin, pageMixin],
data () { data() {
const initialParams = { const initialParams = {
activity_id: undefined, activity_id: undefined,
mobile: undefined, mobile: undefined,
@ -209,9 +151,9 @@ export default {
}, },
tabList: [ tabList: [
{ label: '全部', name: 'all' }, { label: '全部', name: 'all' },
{ label: '待审核', name: 'pending' }, { label: '待审核', name: 'pending' }
{ label: '已通过', name: 'passed' }, // { label: '', name: 'passed' },
{ label: '已拒绝', name: 'rejected' } // { label: '', name: 'rejected' }
], ],
activityParams: { activityParams: {
page: 1, page: 1,
@ -222,7 +164,12 @@ export default {
activity_options: [] activity_options: []
} }
}, },
mounted () { beforeRouteUpdate(to, from, next) {
//
this.fetchList()
next()
},
mounted() {
if (this.$route.query.id) { if (this.$route.query.id) {
this.params.record_id = this.$route.query.id this.params.record_id = this.$route.query.id
} }
@ -230,17 +177,17 @@ export default {
this.fetchList() this.fetchList()
}, },
methods: { methods: {
onSearch () { onSearch() {
this.page.pageIndex = 1 this.page.pageIndex = 1
this.$nextTick(() => { this.$nextTick(() => {
this.fetchList() this.fetchList()
}) })
}, },
onReset () { onReset() {
this.params = { ...this.initialParams } this.params = { ...this.initialParams }
this.onSearch() this.onSearch()
}, },
getParams () { getParams() {
const time = {} const time = {}
const create_time = this.params.create_time const create_time = this.params.create_time
if (create_time.length) { if (create_time.length) {
@ -255,7 +202,7 @@ export default {
} }
return params return params
}, },
async fetchList () { async fetchList() {
this.loading = true this.loading = true
const { pageIndex: page, pageSize } = this.page const { pageIndex: page, pageSize } = this.page
let params = { let params = {
@ -270,11 +217,11 @@ export default {
this.loading = false this.loading = false
}, },
// tab // tab
handleClick (tab, event) { handleClick(tab, event) {
this.params.status = tab.name == 'all' ? '' : tab.name this.params.status = tab.name == 'all' ? '' : tab.name
this.onSearch() this.onSearch()
}, },
regActivityEasylists () { regActivityEasylists() {
this.loading = true this.loading = true
regActivityEasylist(this.activityParams).then((response) => { regActivityEasylist(this.activityParams).then((response) => {
response.data.data.list.map((item) => { response.data.data.list.map((item) => {
@ -287,10 +234,10 @@ export default {
this.loading = false this.loading = false
}) })
}, },
dateStrToTimeStamp (str) { dateStrToTimeStamp(str) {
return Date.parse(new Date(str)) / 1000 return Date.parse(new Date(str)) / 1000
}, },
uploadHandleTemplate () { uploadHandleTemplate() {
var fileName = '报名批量审核' var fileName = '报名批量审核'
let params = { file_type: 'selform_registration_record', file_name: fileName } let params = { file_type: 'selform_registration_record', file_name: fileName }
exportUploadTemplate(params).then((response) => { exportUploadTemplate(params).then((response) => {
@ -309,20 +256,29 @@ export default {
} }
}) })
}, },
uploadHandleChange (file, fileList) { uploadHandleChange(file, fileList) {
let params = { isUploadFile: true, file_type: 'selform_registration_record', file: file.raw } let params = {
isUploadFile: true,
file_type: 'selform_registration_crm_match',
should_queue: 0,
file: file.raw
}
handleUploadFile(params).then((response) => { handleUploadFile(params).then((response) => {
this.$message({ this.$message({
type: 'success', type: 'success',
message: '上传成功,等待处理' message: '上传成功,等待处理,请稍后手动刷新列表查看。',
duration: 3000
}) })
this.$router.push({ path: this.matchHidePage('editor') }) setTimeout(() => {
this.fetchList()
}, 1500)
// this.$router.push({ path: this.matchHidePage('editor') })
}) })
}, },
editorLog () { editorLog() {
this.$router.push({ path: this.matchHidePage('editor') }) this.$router.push({ path: this.matchHidePage('editor') })
}, },
exportData () { exportData() {
this.currentPage = 1 this.currentPage = 1
recordExport(this.params).then((response) => { recordExport(this.params).then((response) => {
if (response.data.data.status) { if (response.data.data.status) {

View File

@ -1,8 +1,6 @@
<template> <template>
<div class="section section-white"> <div class="section section-white">
<div class="section-header with-border"> <div class="section-header with-border">报名详情及审核</div>
报名详情及审核
</div>
<div class="section-body"> <div class="section-body">
<el-form <el-form
ref="recorddata" ref="recorddata"
@ -14,85 +12,45 @@
<el-form-item label="活动名称"> <el-form-item label="活动名称">
{{ recorddata.activity_name }} {{ recorddata.activity_name }}
</el-form-item> </el-form-item>
<el-form-item <el-form-item label="活动有效时间" prop="activity_time">
label="活动有效时间"
prop="activity_time"
>
{{ recorddata.start_date }} ~ {{ recorddata.end_date }} {{ recorddata.start_date }} ~ {{ recorddata.end_date }}
</el-form-item> </el-form-item>
<el-form-item <el-form-item label="审核结果" prop="status">
label="审核结果" <el-tag v-if="recorddata.status == 'pending'" type="warning" size="mini"> </el-tag>
prop="status" <el-tag v-if="recorddata.status == 'passed'" type="success" size="mini"> </el-tag>
> <el-tag v-if="recorddata.status == 'rejected'" type="danger" size="mini"> </el-tag>
<el-tag
v-if="recorddata.status == 'pending'"
type="warning"
size="mini"
>
待审核
</el-tag>
<el-tag
v-if="recorddata.status == 'passed'"
type="success"
size="mini"
>
已通过
</el-tag>
<el-tag
v-if="recorddata.status == 'rejected'"
type="danger"
size="mini"
>
已拒绝
</el-tag>
</el-form-item> </el-form-item>
<el-form-item label="报名问卷"> <el-form-item v-if="recorddata.status == 'passed'" label="签到状态" prop="is_write_off">
<el-card <el-tag v-if="recorddata.is_write_off == '0'" type="warning" size="mini"> </el-tag>
v-for="(item, index) in recorddata.content" <el-tag v-if="recorddata.is_write_off == '1'" type="success" size="mini"> </el-tag>
:key="index" </el-form-item>
class="box-card" <el-form-item label="签到时间" prop="is_write_off_date">
> {{ toTimeDate(recorddata.is_write_off_date) }}
<div </el-form-item>
slot="header" <el-form-item label="报名表单">
class="clearfix" <el-card v-for="(item, index) in recorddata.content" :key="index" class="box-card">
> <div slot="header" class="clearfix">
<span>{{ item.title }}</span> <span>{{ item.title }}</span>
</div> </div>
<div <div v-for="(item, key) in item.formdata" :key="key" class="text item">
v-for="(item, key) in item.formdata"
:key="key"
class="text item"
>
{{ item.field_title }}: {{ item.answer }} {{ item.field_title }}: {{ item.answer }}
</div> </div>
</el-card> </el-card>
</el-form-item> </el-form-item>
<el-form-item <el-form-item v-if="recorddata.status == 'pending'" label="是否同意">
v-if="recorddata.status == 'pending'"
label="是否同意"
>
<el-switch v-model="form.status" /> <el-switch v-model="form.status" />
</el-form-item> </el-form-item>
<el-form-item <el-form-item
v-if="form.status === false && recorddata.status == 'pending'" v-if="form.status === false && recorddata.status == 'pending'"
label="拒绝原因" label="拒绝原因"
> >
<el-input <el-input v-model="form.reason" type="textarea" />
v-model="form.reason"
type="textarea"
/>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button <el-button v-if="recorddata.status == 'pending'" type="primary" @click="submitAction">
v-if="recorddata.status == 'pending'"
type="primary"
@click="submitAction"
>
提交审核 提交审核
</el-button> </el-button>
<el-button @click="handleCancel"> <el-button @click="handleCancel"> </el-button>
取消
</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
@ -101,11 +59,12 @@
<script> <script>
import { Message } from 'element-ui' import { Message } from 'element-ui'
import dayjs from 'dayjs'
import { regActivityRecordinfo, registrationReview } from '@/api/selfhelpform' import { regActivityRecordinfo, registrationReview } from '@/api/selfhelpform'
export default { export default {
inject: ['refresh'], inject: ['refresh'],
data () { data() {
return { return {
activity_date: [], activity_date: [],
form: { form: {
@ -116,7 +75,7 @@ export default {
recorddata: {} recorddata: {}
} }
}, },
mounted () { mounted() {
if (this.$route.query.id) { if (this.$route.query.id) {
let filter = { record_id: this.$route.query.id } let filter = { record_id: this.$route.query.id }
regActivityRecordinfo(filter).then((res) => { regActivityRecordinfo(filter).then((res) => {
@ -126,7 +85,10 @@ export default {
} }
}, },
methods: { methods: {
submitAction () { toTimeDate(time) {
return time ? dayjs(time * 1000).format('YYYY-MM-DD HH:mm:ss') : ''
},
submitAction() {
const that = this const that = this
registrationReview(that.form).then((res) => { registrationReview(that.form).then((res) => {
if (res.data.data.status) { if (res.data.data.status) {
@ -134,7 +96,7 @@ export default {
} }
}) })
}, },
handleCancel () { handleCancel() {
this.$router.go(-1) this.$router.go(-1)
} }
} }

View File

@ -38,7 +38,7 @@ module.exports = {
} }
}, },
configureWebpack: config => { configureWebpack: config => {
if (process.env.NODE_ENV !== 'production') { if (process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'slb') {
config.devtool = 'eval-source-map' config.devtool = 'eval-source-map'
} }
if (process.env.VUE_APP_OSS_CDN == 'true') { if (process.env.VUE_APP_OSS_CDN == 'true') {