parent
10300de07b
commit
1807c72b4c
|
@ -1,7 +1,7 @@
|
|||
# 前后端部署到同一域名的环境变量文件
|
||||
# 重命名成 .env.production.local 后
|
||||
# 复制后重命名成 .env.production.local
|
||||
# 运行打包命令 cnpm run build:prod
|
||||
# 把生成的 admin 文件夹复制到 yylAdmin/public 下
|
||||
# 把生成的 admin 文件夹复制到 yylAdmin/public
|
||||
# 浏览器访问yylAdmin项目 你的域名/admin 即可
|
||||
|
||||
# 正式环境
|
||||
|
|
33
README.md
33
README.md
|
@ -37,13 +37,13 @@ yylAdmin是一个基于ThinkPHP6和Vue2极简后台管理系统,只有登录
|
|||
|
||||
### 环境要求
|
||||
|
||||
- PHP >= 7.2.5
|
||||
- PHP >= 7.3.0
|
||||
安装 fileinfo、redis 扩展
|
||||
开启 putenv、proc_open 函数
|
||||
- MySQL >= 5.6
|
||||
- Redis
|
||||
- node >= 14.0.0
|
||||
- npm >= 6.9.0
|
||||
- MySQL >= 5.5
|
||||
- Redis >= 3.0
|
||||
- node = 12、14、16
|
||||
- npm >= 6.2.0
|
||||
|
||||
### 安装后端
|
||||
|
||||
|
@ -71,7 +71,7 @@ composer install
|
|||
```
|
||||
##### 修改配置
|
||||
```bash
|
||||
重命名.env.example成.env环境变量文件修改里面配置
|
||||
复制.env.example后重命名成.env环境变量文件修改里面配置
|
||||
```
|
||||
##### 环境配置(phpStudy)
|
||||
```bash
|
||||
|
@ -91,6 +91,8 @@ location / {
|
|||
}
|
||||
```
|
||||
###### Apache
|
||||
- httpd.conf 配置文件中加载 mod_rewrite.so 模块
|
||||
- AllowOverride None 将 None 改为 All
|
||||
```bash
|
||||
<IfModule mod_rewrite.c>
|
||||
Options +FollowSymlinks -Multiviews
|
||||
|
@ -98,7 +100,7 @@ location / {
|
|||
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
|
||||
RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
|
||||
</IfModule>
|
||||
```
|
||||
> 不设置伪静态接口文档无法访问
|
||||
|
@ -113,30 +115,27 @@ git clone https://gitee.com/skyselang/yylAdminWeb.git
|
|||
```bash
|
||||
cd yylAdminWeb
|
||||
```
|
||||
#### 使用 cnpm
|
||||
```bash
|
||||
npm install -g cnpm@6.2.0 --registry=https://registry.npmmirror.com
|
||||
```
|
||||
#### 安装依赖
|
||||
```bash
|
||||
cnpm install
|
||||
npm install
|
||||
```
|
||||
|
||||
#### 修改配置
|
||||
```bash
|
||||
在.env.xxx环境变量文件里面修改接口baseURL
|
||||
VUE_APP_BASE_URL = 'http://localhost:9526'
|
||||
复制.env.xxx后重命名成.env.xxx.local环境变量文件修改里面配置
|
||||
```
|
||||
#### 本地开发 启动项目
|
||||
```bash
|
||||
cnpm run dev
|
||||
npm run dev
|
||||
```
|
||||
> 也可以使用 cnpm、pnpm、yarn
|
||||
#### 开发完打包正式环境
|
||||
```bash
|
||||
cnpm run build:prod
|
||||
npm run build:prod
|
||||
```
|
||||
#### 开发完打包测试环境
|
||||
```bash
|
||||
cnpm run build:stage
|
||||
npm run build:stage
|
||||
```
|
||||
|
||||
### 访问后台
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1 +0,0 @@
|
|||
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-142f1268"],{"4cea":function(t,a,e){"use strict";e("7da7")},7880:function(t,a,e){"use strict";e.r(a);var s=function(){var t=this,a=t._self._c;return a("div",{staticClass:"app-container"},[a("el-row",[a("el-col",{attrs:{span:12,offset:6}},[a("el-result",{attrs:{icon:"error",title:"404","sub-title":"页面不存在"}})],1)],1),a("el-row",[a("el-col",{staticClass:"ya-center ya-top",attrs:{span:6,offset:6}},[a("el-button",{attrs:{icon:"el-icon-arrow-left"},on:{click:t.back}},[t._v("返回")])],1),a("el-col",{staticClass:"ya-center ya-top",attrs:{span:6}},[a("el-button",{attrs:{icon:"el-icon-s-home"},on:{click:t.dashboard}},[t._v("控制台")])],1)],1),a("el-row",[a("el-col",{staticClass:"ya-center ya-top",attrs:{span:12,offset:6}},[a("a",{attrs:{href:"https://gitee.com/skyselang/yylAdmin",target:"_blank",title:""}},[a("img",{attrs:{src:"https://gitee.com/skyselang/yylAdmin/widgets/widget_card.svg?colors=4183c4,ffffff,ffffff,e3e9ed,666666,9b9b9b",alt:"",srcset:""}})])])],1)],1)},o=[],r=(e("a717"),{name:"System404",data:function(){return{name:"404页面"}},methods:{back:function(){this.$route.query.noGoBack?this.$router.push({path:"/dashboard"}):this.$router.go(-1)},dashboard:function(){this.$router.push({path:"/dashboard"})}}}),n=r,c=(e("4cea"),e("e607")),l=Object(c["a"])(n,s,o,!1,null,"7b3ea164",null);a["default"]=l.exports},"7da7":function(t,a,e){}}]);
|
File diff suppressed because one or more lines are too long
|
@ -1 +1 @@
|
|||
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0d7805"],{"76a1":function(e,n,t){"use strict";t.r(n);t("7869"),t("8b7f");var r,a,u={name:"SystemRedirect",data:function(){return{name:"跳转页面"}},created:function(){var e=this.$route,n=e.params,t=e.query,r=n.path;this.$router.replace({path:"/"+r,query:t}).catch((function(){}))},render:function(e){return e()}},c=u,o=t("e607"),i=Object(o["a"])(c,r,a,!1,null,null,null);n["default"]=i.exports}}]);
|
||||
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0d7805"],{"76a1":function(e,n,t){"use strict";t.r(n);t("ac1f"),t("5319");var r,a,u={name:"SystemRedirect",data:function(){return{name:"跳转页面"}},created:function(){var e=this.$route,n=e.params,t=e.query,r=n.path;this.$router.replace({path:"/"+r,query:t}).catch((function(){}))},render:function(e){return e()}},c=u,o=t("2877"),i=Object(o["a"])(c,r,a,!1,null,null,null);n["default"]=i.exports}}]);
|
|
@ -0,0 +1 @@
|
|||
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-3850cfbb"],{a17d:function(t,s,e){"use strict";e.r(s);var a=function(){var t=this,s=t._self._c;return s("div",{staticClass:"app-container"},[s("el-row",[s("el-col",{attrs:{span:12,offset:6}},[s("el-result",{attrs:{icon:"warning",title:"401","sub-title":"没有权限访问"}})],1)],1),s("el-row",[s("el-col",{staticClass:"yyl-center yyl-top",attrs:{span:6,offset:6}},[s("el-button",{attrs:{icon:"el-icon-arrow-left"},on:{click:t.back}},[t._v("返回")])],1),s("el-col",{staticClass:"yyl-center yyl-top",attrs:{span:6}},[s("el-button",{attrs:{icon:"el-icon-s-home"},on:{click:t.dashboard}},[t._v("控制台")])],1)],1),s("el-row",[s("el-col",{staticClass:"yyl-center yyl-top",attrs:{span:12,offset:6}},[s("a",{attrs:{href:"https://gitee.com/skyselang/yylAdmin",target:"_blank",title:""}},[s("img",{attrs:{src:"https://gitee.com/skyselang/yylAdmin/widgets/widget_card.svg?colors=4183c4,ffffff,ffffff,e3e9ed,666666,9b9b9b",alt:"",srcset:""}})])])],1)],1)},o=[],c=(e("14d9"),{name:"System401",data:function(){return{name:"401页面"}},methods:{back:function(){this.$route.query.noGoBack?this.$router.push({path:"/dashboard"}):this.$router.go(-1)},dashboard:function(){this.$router.push({path:"/dashboard"})}}}),n=c,r=(e("f5cd"),e("2877")),l=Object(r["a"])(n,a,o,!1,null,"3f60b424",null);s["default"]=l.exports},cc54:function(t,s,e){},f5cd:function(t,s,e){"use strict";e("cc54")}}]);
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1 +0,0 @@
|
|||
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-50c5734b"],{"10ec":function(t,n,e){var o=e("31c1"),c=e("5653").values;o({target:"Object",stat:!0},{values:function(t){return c(t)}})},"2a80":function(t,n,e){"use strict";e.r(n),e.d(n,"excelExport",(function(){return c}));e("3a9d"),e("f209"),e("b0b8"),e("a717"),e("10ec"),e("6d69"),e("f6b8");var o=e("391f");function c(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"export-excel",c=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"xlsx",r=arguments.length>4&&void 0!==arguments[4]&&arguments[4];n.length||(n=Object.keys(t[0])),e||(e="export-excel"),c||(c="xlsx");var h=[],u=[];n.forEach((function(t){"string"===typeof t?(h.push(t),u.push(t)):(h.push(Object.values(t)[0]),u.push(Object.keys(t)[0]))}));var a=[];a.push(h),t.forEach((function(t){var n=[];u.forEach((function(e){n.push(t[e])})),a.push(n)}));var i=o["b"].book_new(),s=o["b"].aoa_to_sheet(a);if(r){for(var l=a.map((function(t){return t.map((function(t){return null==t?{wch:10}:t.toString().charCodeAt(0)>255?{wch:2*t.toString().length+2}:{wch:t.toString().length+3}}))})),f=l[0],p=1;p<l.length;p++)for(var v=0;v<l[p].length;v++)f[v]["wch"]<l[p][v]["wch"]&&(f[v]["wch"]=l[p][v]["wch"]);s["!cols"]=f}else{var g=[];h.forEach((function(t){var n={};null===t||void 0===t?n.wch=10:t.toString().charCodeAt(0)>255?n.wch=2*t.toString().length+2:n.wch=t.toString().length+2,g.push(n)})),s["!cols"]=g}o["b"].book_append_sheet(i,s,e),o["c"](i,e+"."+c)}},5653:function(t,n,e){var o=e("1966"),c=e("90ea"),r=e("6336"),h=e("7f47"),u=e("7a6f").f,a=c(u),i=c([].push),s=function(t){return function(n){var e,c=h(n),u=r(c),s=u.length,l=0,f=[];while(s>l)e=u[l++],o&&!a(c,e)||i(f,t?[e,c[e]]:c[e]);return f}};t.exports={entries:s(!0),values:s(!1)}}}]);
|
|
@ -0,0 +1 @@
|
|||
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-54912b74"],{"07ac":function(t,n,e){"use strict";var r=e("23e7"),c=e("6f53").values;r({target:"Object",stat:!0},{values:function(t){return c(t)}})},"2a80":function(t,n,e){"use strict";e.r(n),e.d(n,"excelExport",(function(){return c}));e("b64b"),e("d3b7"),e("159b"),e("14d9"),e("07ac"),e("d81d"),e("25f0");var r=e("25ca");function c(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"export-excel",c=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"xlsx",o=arguments.length>4&&void 0!==arguments[4]&&arguments[4];n.length||(n=Object.keys(t[0])),e||(e="export-excel"),c||(c="xlsx");var u=[],h=[];n.forEach((function(t){"string"===typeof t?(u.push(t),h.push(t)):(u.push(Object.values(t)[0]),h.push(Object.keys(t)[0]))}));var a=[];a.push(u),t.forEach((function(t){var n=[];h.forEach((function(e){n.push(t[e])})),a.push(n)}));var i=r["b"].book_new(),s=r["b"].aoa_to_sheet(a);if(o){for(var l=a.map((function(t){return t.map((function(t){return null==t?{wch:10}:t.toString().charCodeAt(0)>255?{wch:2*t.toString().length+2}:{wch:t.toString().length+3}}))})),f=l[0],p=1;p<l.length;p++)for(var v=0;v<l[p].length;v++)f[v]["wch"]<l[p][v]["wch"]&&(f[v]["wch"]=l[p][v]["wch"]);s["!cols"]=f}else{var g=[];u.forEach((function(t){var n={};null===t||void 0===t?n.wch=10:t.toString().charCodeAt(0)>255?n.wch=2*t.toString().length+2:n.wch=t.toString().length+2,g.push(n)})),s["!cols"]=g}r["b"].book_append_sheet(i,s,e),r["c"](i,e+"."+c)}},"6f53":function(t,n,e){"use strict";var r=e("83ab"),c=e("d039"),o=e("e330"),u=e("e163"),h=e("df75"),a=e("fc6a"),i=e("d1e7").f,s=o(i),l=o([].push),f=r&&c((function(){var t=Object.create(null);return t[2]=2,!s(t,2)})),p=function(t){return function(n){var e,c=a(n),o=h(c),i=f&&null===u(c),p=o.length,v=0,g=[];while(p>v)e=o[v++],r&&!(i?e in c:s(c,e))||l(g,t?[e,c[e]]:c[e]);return g}};t.exports={entries:p(!0),values:p(!1)}}}]);
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
|||
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-9f8c43b0"],{"4bd9":function(t,e,s){},"4cea":function(t,e,s){"use strict";s("4bd9")},7880:function(t,e,s){"use strict";s.r(e);var a=function(){var t=this,e=t._self._c;return e("div",{staticClass:"app-container"},[e("el-row",[e("el-col",{attrs:{span:12,offset:6}},[e("el-result",{attrs:{icon:"error",title:"404","sub-title":"页面不存在"}})],1)],1),e("el-row",[e("el-col",{staticClass:"ya-center ya-top",attrs:{span:6,offset:6}},[e("el-button",{attrs:{icon:"el-icon-arrow-left"},on:{click:t.back}},[t._v("返回")])],1),e("el-col",{staticClass:"ya-center ya-top",attrs:{span:6}},[e("el-button",{attrs:{icon:"el-icon-s-home"},on:{click:t.dashboard}},[t._v("控制台")])],1)],1),e("el-row",[e("el-col",{staticClass:"ya-center ya-top",attrs:{span:12,offset:6}},[e("a",{attrs:{href:"https://gitee.com/skyselang/yylAdmin",target:"_blank",title:""}},[e("img",{attrs:{src:"https://gitee.com/skyselang/yylAdmin/widgets/widget_card.svg?colors=4183c4,ffffff,ffffff,e3e9ed,666666,9b9b9b",alt:"",srcset:""}})])])],1)],1)},o=[],r=(s("14d9"),{name:"System404",data:function(){return{name:"404页面"}},methods:{back:function(){this.$route.query.noGoBack?this.$router.push({path:"/dashboard"}):this.$router.go(-1)},dashboard:function(){this.$router.push({path:"/dashboard"})}}}),n=r,c=(s("4cea"),s("2877")),l=Object(c["a"])(n,a,o,!1,null,"7b3ea164",null);e["default"]=l.exports}}]);
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1 +0,0 @@
|
|||
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-e38de44e"],{a17d:function(t,e,s){"use strict";s.r(e);var a=function(){var t=this,e=t._self._c;return e("div",{staticClass:"app-container"},[e("el-row",[e("el-col",{attrs:{span:12,offset:6}},[e("el-result",{attrs:{icon:"warning",title:"401","sub-title":"没有权限访问"}})],1)],1),e("el-row",[e("el-col",{staticClass:"yyl-center yyl-top",attrs:{span:6,offset:6}},[e("el-button",{attrs:{icon:"el-icon-arrow-left"},on:{click:t.back}},[t._v("返回")])],1),e("el-col",{staticClass:"yyl-center yyl-top",attrs:{span:6}},[e("el-button",{attrs:{icon:"el-icon-s-home"},on:{click:t.dashboard}},[t._v("控制台")])],1)],1),e("el-row",[e("el-col",{staticClass:"yyl-center yyl-top",attrs:{span:12,offset:6}},[e("a",{attrs:{href:"https://gitee.com/skyselang/yylAdmin",target:"_blank",title:""}},[e("img",{attrs:{src:"https://gitee.com/skyselang/yylAdmin/widgets/widget_card.svg?colors=4183c4,ffffff,ffffff,e3e9ed,666666,9b9b9b",alt:"",srcset:""}})])])],1)],1)},o=[],n=(s("a717"),{name:"System401",data:function(){return{name:"401页面"}},methods:{back:function(){this.$route.query.noGoBack?this.$router.push({path:"/dashboard"}):this.$router.go(-1)},dashboard:function(){this.$router.push({path:"/dashboard"})}}}),r=n,c=(s("f5cd"),s("e607")),l=Object(c["a"])(r,a,o,!1,null,"3f60b424",null);e["default"]=l.exports},f43b:function(t,e,s){},f5cd:function(t,e,s){"use strict";s("f43b")}}]);
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
19
package.json
19
package.json
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "yyladminweb",
|
||||
"version": "2.7.0",
|
||||
"version": "3.0.0",
|
||||
"description": "Minimalist background management system based on ThinkPHP6 and Vue2",
|
||||
"author": "https://github.com/skyselang/",
|
||||
"scripts": {
|
||||
|
@ -12,29 +12,26 @@
|
|||
"dependencies": {
|
||||
"axios": "0.27.2",
|
||||
"clipboard": "2.0.11",
|
||||
"core-js": "^3.23.5",
|
||||
"core-js": "^3.30.2",
|
||||
"crypto-js": "^4.1.1",
|
||||
"e-icon-picker": "^1.1.7",
|
||||
"echarts": "5.4.1",
|
||||
"echarts": "5.4.2",
|
||||
"element-ui": "2.15.12",
|
||||
"file-saver": "^2.0.5",
|
||||
"fuse.js": "3.6.1",
|
||||
"js-cookie": "3.0.1",
|
||||
"normalize.css": "8.0.1",
|
||||
"nprogress": "0.2.0",
|
||||
"path-to-regexp": "6.2.1",
|
||||
"qrcode.vue": "1.7.0",
|
||||
"screenfull": "5.2.0",
|
||||
"script-loader": "^0.7.2",
|
||||
"vue": "2.7.13",
|
||||
"vue-router": "3.5.4",
|
||||
"vue": "2.7.14",
|
||||
"vue-router": "3.6.5",
|
||||
"vuex": "3.6.2",
|
||||
"wangeditor": "4.7.15",
|
||||
"xlsx": "^0.18.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@vue/cli-plugin-babel": "4.5.18",
|
||||
"@vue/cli-service": "4.5.18",
|
||||
"@vue/cli-plugin-babel": "4.5.19",
|
||||
"@vue/cli-service": "4.5.19",
|
||||
"autoprefixer": "9.8.8",
|
||||
"babel-eslint": "10.1.0",
|
||||
"eslint": "7.32.0",
|
||||
|
@ -45,7 +42,7 @@
|
|||
"less": "4.1.2",
|
||||
"less-loader": "7.3.0",
|
||||
"lint-staged": "10.5.4",
|
||||
"node-sass": "5.0.0",
|
||||
"node-sass": "6.0.1",
|
||||
"sass": "1.32.13",
|
||||
"sass-loader": "10.2.1",
|
||||
"script-ext-html-webpack-plugin": "2.1.5",
|
||||
|
|
|
@ -122,3 +122,14 @@ export function disable(data) {
|
|||
data
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 内容发布时间
|
||||
* @param {array} data 请求数据
|
||||
*/
|
||||
export function release(data) {
|
||||
return request({
|
||||
url: url + 'release',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
|
|
@ -1,6 +1,28 @@
|
|||
import request from '@/utils/request'
|
||||
// 会员设置
|
||||
const url = '/admin/member.Setting/'
|
||||
/**
|
||||
* 会员设置信息
|
||||
* @param {array} params 请求参数
|
||||
*/
|
||||
export function memberInfo(params) {
|
||||
return request({
|
||||
url: url + 'memberInfo',
|
||||
method: 'get',
|
||||
params: params
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 会员设置修改
|
||||
* @param {array} data 请求数据
|
||||
*/
|
||||
export function memberEdit(data) {
|
||||
return request({
|
||||
url: url + 'memberEdit',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/**
|
||||
* Token设置信息
|
||||
* @param {array} params 请求参数
|
||||
|
@ -111,6 +133,28 @@ export function logregEdit(data) {
|
|||
data
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 第三方账号设置信息
|
||||
* @param {array} params 请求参数
|
||||
*/
|
||||
export function thirdInfo(params) {
|
||||
return request({
|
||||
url: url + 'thirdInfo',
|
||||
method: 'get',
|
||||
params: params
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 第三方账号设置修改
|
||||
* @param {array} data 请求数据
|
||||
*/
|
||||
export function thirdEdit(data) {
|
||||
return request({
|
||||
url: url + 'thirdEdit',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 自定义设置信息
|
||||
* @param {array} params 请求参数
|
||||
|
|
|
@ -0,0 +1,69 @@
|
|||
import request from '@/utils/request'
|
||||
// 会员第三方账号
|
||||
const url = '/admin/member.Third/'
|
||||
/**
|
||||
* 会员第三方账号列表
|
||||
* @param {array} params 请求参数
|
||||
*/
|
||||
export function list(params) {
|
||||
return request({
|
||||
url: url + 'list',
|
||||
method: 'get',
|
||||
params: params
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 会员第三方账号信息
|
||||
* @param {array} params 请求参数
|
||||
*/
|
||||
export function info(params) {
|
||||
return request({
|
||||
url: url + 'info',
|
||||
method: 'get',
|
||||
params: params
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 会员第三方账号添加
|
||||
* @param {array} data 请求数据
|
||||
*/
|
||||
export function add(data) {
|
||||
return request({
|
||||
url: url + 'add',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 会员第三方账号修改
|
||||
* @param {array} data 请求数据
|
||||
*/
|
||||
export function edit(data) {
|
||||
return request({
|
||||
url: url + 'edit',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 会员第三方账号删除
|
||||
* @param {array} data 请求数据
|
||||
*/
|
||||
export function dele(data) {
|
||||
return request({
|
||||
url: url + 'dele',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 会员第三方账号是否禁用
|
||||
* @param {array} data 请求数据
|
||||
*/
|
||||
export function disable(data) {
|
||||
return request({
|
||||
url: url + 'disable',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
|
@ -0,0 +1,80 @@
|
|||
import request from '@/utils/request'
|
||||
// 友链管理
|
||||
const url = '/admin/setting.Link/'
|
||||
/**
|
||||
* 友链列表
|
||||
* @param {array} params 请求参数
|
||||
*/
|
||||
export function list(params) {
|
||||
return request({
|
||||
url: url + 'list',
|
||||
method: 'get',
|
||||
params: params
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 友链信息
|
||||
* @param {array} params 请求参数
|
||||
*/
|
||||
export function info(params) {
|
||||
return request({
|
||||
url: url + 'info',
|
||||
method: 'get',
|
||||
params: params
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 友链添加
|
||||
* @param {array} data 请求数据
|
||||
*/
|
||||
export function add(data) {
|
||||
return request({
|
||||
url: url + 'add',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 友链修改
|
||||
* @param {array} data 请求数据
|
||||
*/
|
||||
export function edit(data) {
|
||||
return request({
|
||||
url: url + 'edit',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 友链删除
|
||||
* @param {array} data 请求数据
|
||||
*/
|
||||
export function dele(data) {
|
||||
return request({
|
||||
url: url + 'dele',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 友链是否禁用
|
||||
* @param {array} data 请求数据
|
||||
*/
|
||||
export function disable(data) {
|
||||
return request({
|
||||
url: url + 'disable',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 友链修改有效期
|
||||
* @param {array} data 请求数据
|
||||
*/
|
||||
export function expiration(data) {
|
||||
return request({
|
||||
url: url + 'expiration',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
|
@ -1,47 +0,0 @@
|
|||
import request from '@/utils/request'
|
||||
// 微信设置
|
||||
const url = '/admin/setting.Wechat/'
|
||||
/**
|
||||
* 公众号信息
|
||||
* @param {array} params 请求参数
|
||||
*/
|
||||
export function offiInfo(params) {
|
||||
return request({
|
||||
url: url + 'offiInfo',
|
||||
method: 'get',
|
||||
params: params
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 公众号修改
|
||||
* @param {array} data 请求数据
|
||||
*/
|
||||
export function offiEdit(data) {
|
||||
return request({
|
||||
url: url + 'offiEdit',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 小程序信息
|
||||
* @param {array} params 请求参数
|
||||
*/
|
||||
export function miniInfo(params) {
|
||||
return request({
|
||||
url: url + 'miniInfo',
|
||||
method: 'get',
|
||||
params: params
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 小程序修改
|
||||
* @param {array} data 请求数据
|
||||
*/
|
||||
export function miniEdit(data) {
|
||||
return request({
|
||||
url: url + 'miniEdit',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
|
@ -6,9 +6,11 @@
|
|||
<el-col>
|
||||
<el-select v-model="query.search_field" class="filter-item ya-search-field" placeholder="搜索字段">
|
||||
<el-option :value="idkey" label="ID" />
|
||||
<el-option value="unique" label="标识" />
|
||||
<el-option value="file_name" label="名称" />
|
||||
<el-option value="file_ext" label="后缀" />
|
||||
<el-option value="domain" label="域名" />
|
||||
<el-option value="remark" label="备注" />
|
||||
<el-option value="file_ext" label="后缀" />
|
||||
<el-option value="file_path" label="路径" />
|
||||
<el-option value="file_md5" label="MD5" />
|
||||
<el-option value="file_hash" label="散列" />
|
||||
|
@ -22,7 +24,7 @@
|
|||
<el-option value="update_time" label="修改时间" />
|
||||
<el-option v-if="recycle" value="delete_time" label="删除时间" />
|
||||
</el-select>
|
||||
<el-date-picker v-model="query.date_value" type="daterange" class="filter-item ya-date-value" value-format="yyyy-MM-dd" start-placeholder="开始日期" end-placeholder="结束日期" />
|
||||
<el-date-picker v-model="query.date_value" type="datetimerange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00','23:59:59']" value-format="yyyy-MM-dd HH:mm:ss" />
|
||||
<el-button class="filter-item" type="primary" title="查询/刷新" @click="search()">查询</el-button>
|
||||
<el-button class="filter-item" icon="el-icon-refresh" title="重置" @click="refresh()" />
|
||||
<el-button v-if="checkPermission(['admin/file.File/recycle'])" style="float:right" :type="recycle?'primary':''" @click="showRecycle">回收站</el-button>
|
||||
|
@ -48,6 +50,7 @@
|
|||
<el-upload v-else name="file" class="ya-upload" :limit="uploadLimit" :file-list="uploadFilelist" :multiple="true" :show-file-list="false" :auto-upload="true" :action="uploadAction" :headers="uploadHeaders" :data="uploadData" :accept="uploadAccept" :before-upload="uploadBefore" :on-success="uploadSuccess" :on-error="uploadError" :on-change="uploadChange" :on-exceed="uploadExceed">
|
||||
<el-button type="primary" title="上传文件" @click="uploadClear">上传</el-button>
|
||||
</el-upload>
|
||||
<!-- 排序 -->
|
||||
<el-select v-model="query.sort_field" class="filter-item ya-search-field ya-margin-left" filterable clearable placeholder="排序字段" @change="sort">
|
||||
<el-option :value="idkey" label="ID" />
|
||||
<el-option value="file_name" label="名称" />
|
||||
|
@ -55,6 +58,8 @@
|
|||
<el-option value="file_hash" label="散列" />
|
||||
<el-option value="file_ext" label="后缀" />
|
||||
<el-option value="file_size" label="大小" />
|
||||
<el-option value="is_disable" label="禁用" />
|
||||
<el-option value="sort" label="排序" />
|
||||
<el-option value="create_time" label="添加时间" />
|
||||
<el-option value="update_time" label="修改时间" />
|
||||
<el-option v-if="recycle" value="delete_time" label="删除时间" />
|
||||
|
@ -63,6 +68,7 @@
|
|||
<el-option value="asc" label="升序" />
|
||||
<el-option value="desc" label="降序" />
|
||||
</el-select>
|
||||
<!-- 分组筛选 -->
|
||||
<el-select v-model="query.group_id" class="filter-item ya-search-field ya-margin-left" filterable clearable placeholder="分组" @change="groupSelect">
|
||||
<el-option v-for="(item, index) in groupData" :key="index" :value="item.group_id" :label="item.group_name" />
|
||||
</el-select>
|
||||
|
@ -71,6 +77,7 @@
|
|||
<el-button type="text" icon="el-icon-edit" :title="'修改'+groupName" @click="groupEdit()" />
|
||||
<el-button type="text" icon="el-icon-delete" :title="'删除'+groupName" @click="groupDele()" />
|
||||
</el-button-group>
|
||||
<!-- 标签筛选 -->
|
||||
<el-select v-model="query.tag_ids" class="filter-item ya-margin-left" filterable clearable multiple collapse-tags placeholder="标签" @change="tagSelect">
|
||||
<el-option v-for="(item, index) in tagData" :key="index" :value="item.tag_id" :label="item.tag_name" />
|
||||
</el-select>
|
||||
|
@ -98,7 +105,7 @@
|
|||
</el-form-item>
|
||||
<el-form-item v-else-if="selectType==='edittype'" label="文件类型" prop="file_type">
|
||||
<el-select v-model="file_type">
|
||||
<el-option v-for="(item, index) in filetype" :key="index" :value="index" :label="item" />
|
||||
<el-option v-for="(item, index) in file_types" :key="index" :value="index" :label="item" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item v-else-if="selectType==='editdomain'" label="文件域名" prop="">
|
||||
|
@ -129,7 +136,10 @@
|
|||
<el-input v-model="groupModel.group_name" placeholder="请输入分组名称" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="描述" prop="group_desc">
|
||||
<el-input v-model="groupModel.group_desc" clearable />
|
||||
<el-input v-model="groupModel.group_desc" type="textarea" autosize clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="groupModel.remark" placeholder="" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="排序" prop="sort">
|
||||
<el-input v-model="groupModel.sort" type="number" />
|
||||
|
@ -147,7 +157,10 @@
|
|||
<el-input v-model="tagModel.tag_name" placeholder="请输入标签名称" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="描述" prop="tag_desc">
|
||||
<el-input v-model="tagModel.tag_desc" clearable />
|
||||
<el-input v-model="tagModel.tag_desc" type="textarea" autosize clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="tagModel.remark" placeholder="" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="排序" prop="sort">
|
||||
<el-input v-model="tagModel.sort" type="number" />
|
||||
|
@ -161,7 +174,7 @@
|
|||
<!-- 列表筛选 -->
|
||||
<el-row :gutter="3">
|
||||
<!-- 筛选 -->
|
||||
<el-col :span="3" class="dialog-body" :style="{height:height+'px'}">
|
||||
<el-col :span="2" class="dialog-body" :style="{height:height+'px'}">
|
||||
<!-- 类型筛选 -->
|
||||
<el-row>
|
||||
<el-col>
|
||||
|
@ -219,13 +232,13 @@
|
|||
</el-col>
|
||||
<!-- 卡片展示 -->
|
||||
<div v-if="showMode=='card'">
|
||||
<el-col v-if="count>0" :span="21" class="dialog-body" :style="{height:height+'px'}">
|
||||
<el-col v-if="count>0" :span="22" class="dialog-body" :style="{height:height+'px'}">
|
||||
<el-row v-loading="loading" :gutter="3" style="margin-top:6px">
|
||||
<el-checkbox-group v-model="selection" @change="select">
|
||||
<el-col v-for="(item, index) in data" :key="index" :span="4" style="margin-bottom:6px;text-align:center">
|
||||
<el-card class="ya-file-card" :body-style="{minWidth:'16.5%', height:(height-height*0.1)/3+'px', minHeight:'126px', padding:'0 6px'}">
|
||||
<div style="text-align:left">
|
||||
<el-checkbox :key="item[idkey]" :label="item[idkey]">{{ item[idkey] }} ({{ item.file_size }},{{ item.file_ext }})</el-checkbox>
|
||||
<el-checkbox :key="item[idkey]" :label="item[idkey]">{{ item[idkey] }} ({{ item.file_size }}, {{ item.file_ext }}</el-checkbox>
|
||||
</div>
|
||||
<div :style="{width:'100%', height:((height-height*0.1)/3)-((height-height*0.1)/3*0.5)+'px', minHeight:'62px'}">
|
||||
<el-image v-if="item.file_type==='image'" style="height:100%" fit="contain" :src="item.file_url" :preview-src-list="fileImgPre" title="点击看大图" lazy />
|
||||
|
@ -249,6 +262,7 @@
|
|||
<div :style="{paddingTop:'5px', minHeight:'50px'}">
|
||||
<span class="ya-file-name" :title="item.file_name+'.'+item.file_ext">{{ item.file_name }}.{{ item.file_ext }}</span>
|
||||
<div class="bottom clearfix">
|
||||
<el-button type="text" icon="el-icon-star-off" :title="'标识:'+item.unique+' (点击复制)'" @click="copy(item.unique, $event)" />
|
||||
<el-button v-if="item.is_disable" type="text" icon="el-icon-warning" title="已禁用,点击修改" @click="selectOpen('disable',[item.file_id])" />
|
||||
<el-button v-else type="text" icon="el-icon-warning-outline" title="已启用,点击修改" @click="selectOpen('disable',[item.file_id])" />
|
||||
<el-button type="text" icon="el-icon-download" title="下载文件" @click="fileDownload(item, $event)" />
|
||||
|
@ -261,16 +275,17 @@
|
|||
</el-checkbox-group>
|
||||
</el-row>
|
||||
</el-col>
|
||||
<el-col v-else :span="21">
|
||||
<el-col v-else :span="22">
|
||||
<el-empty :description="'暂无'+name" />
|
||||
</el-col>
|
||||
</div>
|
||||
<!-- 表格展示 -->
|
||||
<div v-else>
|
||||
<el-col :span="21" style="padding:0">
|
||||
<el-col :span="22" style="padding:0">
|
||||
<el-table ref="table" v-loading="loading" :data="data" :height="height" @sort-change="sort" @selection-change="select" @cell-dblclick="cellDbclick">
|
||||
<el-table-column type="selection" width="42" title="全选/反选" />
|
||||
<el-table-column :prop="idkey" label="ID" min-width="80" sortable="custom" />
|
||||
<el-table-column prop="unique" label="标识" min-width="80" show-overflow-tooltip />
|
||||
<el-table-column prop="file_url" label="文件" min-width="90">
|
||||
<template slot-scope="scope">
|
||||
<div style="height:30px">
|
||||
|
@ -296,19 +311,19 @@
|
|||
</el-table-column>
|
||||
<el-table-column prop="file_type_name" label="类型" min-width="55" />
|
||||
<el-table-column prop="file_name" label="名称" min-width="120" sortable="custom" show-overflow-tooltip />
|
||||
<el-table-column prop="file_ext" label="后缀" min-width="75" sortable="custom" />
|
||||
<el-table-column prop="file_ext" label="后缀" min-width="75" sortable="custom" show-overflow-tooltip />
|
||||
<el-table-column prop="file_size" label="大小" min-width="85" sortable="custom" show-overflow-tooltip />
|
||||
<el-table-column prop="group_name" label="分组" min-width="120" show-overflow-tooltip />
|
||||
<el-table-column prop="tag_names" label="标签" min-width="120" show-overflow-tooltip />
|
||||
<el-table-column prop="group_name" label="分组" min-width="116" show-overflow-tooltip />
|
||||
<el-table-column prop="tag_names" label="标签" min-width="116" show-overflow-tooltip />
|
||||
<el-table-column prop="is_disable" label="禁用" min-width="73" sortable="custom">
|
||||
<template slot-scope="scope">
|
||||
<el-switch v-model="scope.row.is_disable" :active-value="1" :inactive-value="0" @change="disable([scope.row])" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="sort" label="排序" min-width="73" sortable="custom" />
|
||||
<el-table-column prop="create_time" label="添加时间" min-width="152" sortable="custom" />
|
||||
<el-table-column v-if="recycle" prop="delete_time" label="删除时间" min-width="152" sortable="custom" />
|
||||
<el-table-column v-else prop="update_time" label="修改时间" min-width="152" sortable="custom" />
|
||||
<el-table-column prop="create_time" label="添加时间" width="152" sortable="custom" />
|
||||
<el-table-column v-if="recycle" prop="delete_time" label="删除时间" width="152" sortable="custom" />
|
||||
<el-table-column v-else prop="update_time" label="修改时间" width="152" sortable="custom" />
|
||||
<el-table-column label="操作" width="160">
|
||||
<template slot-scope="scope">
|
||||
<el-button v-if="recycle" type="text" size="mini" @click="selectOpen('reco',[scope.row])">恢复</el-button>
|
||||
|
@ -326,6 +341,9 @@
|
|||
<!-- 修改 -->
|
||||
<el-dialog :title="dialogTitle" :visible.sync="dialog" top="5vh" :before-close="cancel" append-to-body :close-on-click-modal="false" :close-on-press-escape="false">
|
||||
<el-form ref="ref" :rules="rules" :model="model" label-width="100px" class="dialog-body" :style="{height:height+'px'}">
|
||||
<el-form-item label="标识" prop="unique">
|
||||
<el-input v-model="model.unique" placeholder="请输入标识(唯一)" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model.file_id" label="文件" prop="file">
|
||||
<el-col :span="18">
|
||||
<div style="height:200px">
|
||||
|
@ -372,9 +390,6 @@
|
|||
<el-option v-for="(item, index) in file_types" :key="index" :value="index" :label="item" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="文件排序" prop="sort">
|
||||
<el-input v-model="model.sort" type="number" placeholder="250" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model.file_id" label="文件域名" prop="domain">
|
||||
<el-input v-model="model.domain" placeholder="请输入域名" clearable>
|
||||
<el-button slot="append" icon="el-icon-copy-document" title="复制" @click="copy(model.domain, $event)" />
|
||||
|
@ -395,6 +410,12 @@
|
|||
<el-option v-for="(item, index) in storages" :key="index" :value="index" :label="item" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="model.remark" placeholder="请输入备注" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="排序" prop="sort">
|
||||
<el-input v-model="model.sort" type="number" placeholder="250" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model.file_id" label="是否禁用" prop="is_disable">
|
||||
<el-switch v-model="model.is_disable" :active-value="1" :inactive-value="0" disabled />
|
||||
</el-form-item>
|
||||
|
@ -476,7 +497,9 @@ export default {
|
|||
is_disable: '',
|
||||
search_field: 'file_name',
|
||||
search_exp: 'like',
|
||||
date_field: 'create_time'
|
||||
date_field: 'create_time',
|
||||
sort_field: 'file_id',
|
||||
sort_value: ''
|
||||
},
|
||||
data: [],
|
||||
count: 0,
|
||||
|
@ -486,6 +509,7 @@ export default {
|
|||
model: {
|
||||
type: 'upl',
|
||||
file_id: '',
|
||||
unique: '',
|
||||
group_id: '',
|
||||
tag_ids: [],
|
||||
storage: 'local',
|
||||
|
@ -498,6 +522,7 @@ export default {
|
|||
file_size: '',
|
||||
file_ext: '',
|
||||
file_url: '',
|
||||
remark: '',
|
||||
sort: 250,
|
||||
is_front: 0,
|
||||
is_disable: 0,
|
||||
|
@ -540,6 +565,7 @@ export default {
|
|||
group_id: '',
|
||||
group_name: '',
|
||||
group_desc: '',
|
||||
remark: '',
|
||||
sort: 250
|
||||
},
|
||||
groupRules: {
|
||||
|
@ -554,6 +580,7 @@ export default {
|
|||
tag_id: '',
|
||||
tag_name: '',
|
||||
tag_desc: '',
|
||||
remark: '',
|
||||
sort: 250
|
||||
},
|
||||
tagRules: {
|
||||
|
@ -629,8 +656,8 @@ export default {
|
|||
this.groupData = data.group
|
||||
this.tagData = data.tag
|
||||
this.exps = data.exps
|
||||
this.loading = false
|
||||
this.imagePreview(data.list)
|
||||
this.loading = false
|
||||
},
|
||||
// 上传
|
||||
uploadBefore() {
|
||||
|
@ -671,7 +698,7 @@ export default {
|
|||
this.uploadNumber = this.uploadCount = 0
|
||||
this.uploadFilelist = []
|
||||
},
|
||||
// 添加、修改
|
||||
// 添加修改
|
||||
add() {
|
||||
this.dialog = true
|
||||
this.dialogTitle = this.name + '添加'
|
||||
|
|
|
@ -88,6 +88,8 @@
|
|||
cursor: pointer;
|
||||
background: #fff;
|
||||
color: #fff;
|
||||
appearance: none;
|
||||
-moz-appearance: none;
|
||||
-webkit-appearance: none;
|
||||
text-align: center;
|
||||
box-sizing: border-box;
|
||||
|
|
|
@ -7,10 +7,14 @@
|
|||
<el-col>
|
||||
<el-select v-model="query.search_field" class="filter-item ya-search-field" placeholder="查询字段">
|
||||
<el-option :value="idkey" label="ID" />
|
||||
<el-option value="category_name" label="名称" />
|
||||
<el-option value="category_unique" label="标识" />
|
||||
<el-option value="category_name" label="名称" />
|
||||
<el-option value="category_pid" label="上级" />
|
||||
<el-option value="is_disable" label="禁用" />
|
||||
<el-option value="title" label="标题" />
|
||||
<el-option value="keywords" label="关键词" />
|
||||
<el-option value="description" label="描述" />
|
||||
<el-option value="remark" label="备注" />
|
||||
</el-select>
|
||||
<el-select v-model="query.search_exp" class="filter-item ya-search-exp">
|
||||
<el-option v-for="exp in exps" :key="exp.exp" :value="exp.exp" :label="exp.name" />
|
||||
|
@ -25,7 +29,7 @@
|
|||
<el-option value="create_time" label="添加时间" />
|
||||
<el-option value="update_time" label="修改时间" />
|
||||
</el-select>
|
||||
<el-date-picker v-model="query.date_value" type="daterange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd" />
|
||||
<el-date-picker v-model="query.date_value" type="datetimerange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00','23:59:59']" value-format="yyyy-MM-dd HH:mm:ss" />
|
||||
<el-button class="filter-item" type="primary" @click="search()">查询</el-button>
|
||||
<el-button class="filter-item" @click="refresh()">刷新</el-button>
|
||||
</el-col>
|
||||
|
@ -69,10 +73,10 @@
|
|||
<el-table ref="table" v-loading="loading" :data="data" :height="height+50" :row-key="idkey" default-expand-all @selection-change="select">
|
||||
<el-table-column type="selection" width="42" title="全选/反选" />
|
||||
<el-table-column prop="category_name" label="名称" min-width="250" show-overflow-tooltip />
|
||||
<el-table-column prop="cover_url" label="封面" min-width="60">
|
||||
<el-table-column prop="image_url" label="图片" min-width="60">
|
||||
<template slot-scope="scope">
|
||||
<div style="height:30px">
|
||||
<el-image v-if="scope.row.cover_url" style="height:30px" fit="contain" :src="scope.row.cover_url" :preview-src-list="[scope.row.cover_url]" title="点击看大图">
|
||||
<el-image v-if="scope.row.image_url" style="height:30px" fit="contain" :src="scope.row.image_url" :preview-src-list="[scope.row.image_url]" title="点击看大图">
|
||||
<div slot="error" class="image-slot">
|
||||
<i class="el-icon-picture-outline" />
|
||||
</div>
|
||||
|
@ -88,8 +92,8 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="sort" label="排序" min-width="75" />
|
||||
<el-table-column prop="create_time" label="添加时间" min-width="155" />
|
||||
<el-table-column prop="update_time" label="修改时间" min-width="155" />
|
||||
<el-table-column prop="create_time" label="添加时间" width="155" />
|
||||
<el-table-column prop="update_time" label="修改时间" width="155" />
|
||||
<el-table-column label="操作" width="155">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" @click="contentShow(scope.row)">内容</el-button>
|
||||
|
@ -99,32 +103,37 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-row>
|
||||
<el-descriptions title="" :column="12" :colon="false" size="medium">
|
||||
<el-descriptions-item label="">共 {{ count }} 条</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-row>
|
||||
<!-- 添加修改 -->
|
||||
<el-dialog :title="dialogTitle" :visible.sync="dialog" top="5vh" :before-close="cancel" :close-on-click-modal="false" :close-on-press-escape="false" destroy-on-close>
|
||||
<el-form ref="ref" :rules="rules" :model="model" class="dialog-body" label-width="100px" :style="{height:height+'px'}">
|
||||
<el-form-item label="标识" prop="category_unique">
|
||||
<el-input v-model="model.category_unique" placeholder="请输入分类标识(唯一)" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="上级" prop="category_pid">
|
||||
<el-cascader v-model="model.category_pid" :options="trees" :props="props" style="width:100%" placeholder="一级分类" clearable filterable />
|
||||
</el-form-item>
|
||||
<el-form-item label="名称" prop="category_name">
|
||||
<el-input v-model="model.category_name" placeholder="请输入分类名称" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="封面" prop="cover_id">
|
||||
<el-form-item label="图片" prop="image_id">
|
||||
<el-col :span="12" style="height:100px">
|
||||
<el-image v-if="model.cover_url" style="height:100px" fit="contain" :src="model.cover_url" :preview-src-list="[model.cover_url]" title="点击看大图">
|
||||
<el-image v-if="model.image_url" style="height:100px" fit="contain" :src="model.image_url" :preview-src-list="[model.image_url]" title="点击看大图">
|
||||
<div slot="error" class="image-slot">
|
||||
<i class="el-icon-picture-outline" />
|
||||
</div>
|
||||
</el-image>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-button size="mini" @click="fileUpload('image', 'cover_id', '上传封面')">上传封面</el-button>
|
||||
<el-button size="mini" @click="fileDelete(0, 'cover_id')">删除</el-button>
|
||||
<el-button size="mini" @click="fileUpload('image', 'image_id', '上传图片')">上传图片</el-button>
|
||||
<el-button size="mini" @click="fileDelete(0, 'image_id')">删除</el-button>
|
||||
<p>图片小于 200 KB,jpg、png格式。</p>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="标识" prop="category_unique">
|
||||
<el-input v-model="model.category_unique" placeholder="请输入分类标识(唯一)" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="标题" prop="title">
|
||||
<el-input v-model="model.title" placeholder="title" clearable />
|
||||
</el-form-item>
|
||||
|
@ -132,18 +141,22 @@
|
|||
<el-input v-model="model.keywords" placeholder="keywords" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="描述" prop="description">
|
||||
<el-input v-model="model.description" type="textarea" placeholder="description" clearable />
|
||||
<el-input v-model="model.description" type="textarea" autosize placeholder="description" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="model.remark" placeholder="remark" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="排序" prop="sort">
|
||||
<el-input v-model="model.sort" placeholder="250" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="图片" prop="images">
|
||||
<el-form-item label="图片列表" prop="images">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-button size="mini" @click="fileUpload('image', 'images', '上传图片')">上传图片</el-button>
|
||||
<span>图片小于 250 KB,jpg、png格式。</span>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<span><el-button size="mini" @click="fileDelete('all', 'images')">全部删除</el-button>图片小于 250 KB,jpg、png格式。</span>
|
||||
<el-button size="mini" @click="fileDelete('all', 'images')">全部删除</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
|
@ -204,10 +217,10 @@
|
|||
<el-table ref="contentRef" v-loading="contentLoad" :data="contentData" :height="height-20" @sort-change="contentSort" @selection-change="contentSelect">
|
||||
<el-table-column type="selection" width="42" title="全选/反选" />
|
||||
<el-table-column :prop="contentPk" label="内容ID" min-width="80" sortable="custom" />
|
||||
<el-table-column prop="cover_url" label="封面" min-width="60">
|
||||
<el-table-column prop="image_url" label="图片" min-width="60">
|
||||
<template slot-scope="scope">
|
||||
<div style="height:30px">
|
||||
<el-image v-if="scope.row.cover_url" style="height:30px" fit="contain" :src="scope.row.cover_url" :preview-src-list="[scope.row.cover_url]" title="点击看大图">
|
||||
<el-image v-if="scope.row.image_url" style="height:30px" fit="contain" :src="scope.row.image_url" :preview-src-list="[scope.row.image_url]" title="点击看大图">
|
||||
<div slot="error" class="image-slot">
|
||||
<i class="el-icon-picture-outline" />
|
||||
</div>
|
||||
|
@ -269,22 +282,24 @@ export default {
|
|||
loading: false,
|
||||
idkey: 'category_id',
|
||||
query: { search_field: 'category_name', search_exp: 'like', date_field: 'create_time' },
|
||||
exps: [],
|
||||
exps: [{ exp: 'like', name: '包含' }],
|
||||
data: [],
|
||||
count: '',
|
||||
dialog: false,
|
||||
dialogTitle: '',
|
||||
model: {
|
||||
category_id: '',
|
||||
category_unique: '',
|
||||
category_pid: 0,
|
||||
category_name: '',
|
||||
category_unique: '',
|
||||
cover_id: 0,
|
||||
cover_url: '',
|
||||
image_id: 0,
|
||||
image_url: '',
|
||||
title: '',
|
||||
keywords: '',
|
||||
description: '',
|
||||
images: [],
|
||||
sort: 250
|
||||
remark: '',
|
||||
sort: 250,
|
||||
images: []
|
||||
},
|
||||
rules: {
|
||||
category_name: [{ required: true, message: '请输入分类名称', trigger: 'blur' }]
|
||||
|
@ -330,6 +345,7 @@ export default {
|
|||
this.data = res.data.list
|
||||
this.trees = res.data.tree
|
||||
this.exps = res.data.exps
|
||||
this.count = res.data.count
|
||||
this.isExpandAll = false
|
||||
this.loading = false
|
||||
}).catch(() => {
|
||||
|
@ -554,10 +570,10 @@ export default {
|
|||
const fileField = this.fileField
|
||||
const fileLength = fileList.length
|
||||
if (fileLength) {
|
||||
if (fileField === 'cover_id') {
|
||||
if (fileField === 'image_id') {
|
||||
const i = fileLength - 1
|
||||
this.model.cover_id = fileList[i]['file_id']
|
||||
this.model.cover_url = fileList[i]['file_url']
|
||||
this.model.image_id = fileList[i]['file_id']
|
||||
this.model.image_url = fileList[i]['file_url']
|
||||
} else {
|
||||
for (let i = 0; i < fileLength; i++) {
|
||||
if (fileField === 'images') {
|
||||
|
@ -592,9 +608,9 @@ export default {
|
|||
setTimeout(() => { window.open(file.file_url, '_blank') }, 500)
|
||||
},
|
||||
fileDelete(index, field = '') {
|
||||
if (field === 'cover_id') {
|
||||
this.model.cover_id = 0
|
||||
this.model.cover_url = ''
|
||||
if (field === 'image_id') {
|
||||
this.model.image_id = 0
|
||||
this.model.image_url = ''
|
||||
} else if (field === 'images') {
|
||||
if (index === 'all') {
|
||||
this.model.images = []
|
||||
|
|
|
@ -7,14 +7,18 @@
|
|||
<el-col>
|
||||
<el-select v-model="query.search_field" class="filter-item ya-search-field" placeholder="查询字段">
|
||||
<el-option :value="idkey" label="ID" />
|
||||
<el-option value="name" label="名称" />
|
||||
<el-option value="unique" label="标识" />
|
||||
<el-option value="name" label="名称" />
|
||||
<el-option value="category_ids" label="分类" />
|
||||
<el-option value="tag_ids" label="标签" />
|
||||
<el-option value="is_top" label="置顶" />
|
||||
<el-option value="is_hot" label="热门" />
|
||||
<el-option value="is_rec" label="推荐" />
|
||||
<el-option value="is_disable" label="禁用" />
|
||||
<el-option value="title" label="标题" />
|
||||
<el-option value="keywords" label="关键词" />
|
||||
<el-option value="description" label="描述" />
|
||||
<el-option value="remark" label="备注" />
|
||||
</el-select>
|
||||
<el-select v-model="query.search_exp" class="filter-item ya-search-exp">
|
||||
<el-option v-for="exp in exps" :key="exp.exp" :value="exp.exp" :label="exp.name" />
|
||||
|
@ -44,8 +48,9 @@
|
|||
<el-select v-model="query.date_field" class="filter-item ya-date-field" placeholder="时间类型">
|
||||
<el-option value="create_time" label="添加时间" />
|
||||
<el-option value="update_time" label="修改时间" />
|
||||
<el-option value="release_time" label="发布时间" />
|
||||
</el-select>
|
||||
<el-date-picker v-model="query.date_value" type="daterange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd" />
|
||||
<el-date-picker v-model="query.date_value" type="datetimerange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00','23:59:59']" value-format="yyyy-MM-dd HH:mm:ss" />
|
||||
<el-button class="filter-item" type="primary" title="查询/刷新" @click="search()">查询</el-button>
|
||||
<el-button class="filter-item" icon="el-icon-refresh" title="重置" @click="refresh()" />
|
||||
</el-col>
|
||||
|
@ -53,6 +58,7 @@
|
|||
<!-- 选中操作 -->
|
||||
<el-row>
|
||||
<el-col>
|
||||
<el-button title="发布时间" @click="selectOpen('release')">发布时间</el-button>
|
||||
<el-button title="修改分类" @click="selectOpen('editcate')">分类</el-button>
|
||||
<el-button title="修改标签" @click="selectOpen('edittag')">标签</el-button>
|
||||
<el-button title="是否置顶" @click="selectOpen('istop')">置顶</el-button>
|
||||
|
@ -88,6 +94,9 @@
|
|||
<el-form-item v-else-if="selectType === 'disable'" label="是否禁用" prop="">
|
||||
<el-switch v-model="is_disable" :active-value="1" :inactive-value="0" />
|
||||
</el-form-item>
|
||||
<el-form-item v-else-if="selectType === 'release'" label="发布时间" prop="">
|
||||
<el-date-picker v-model="release_time" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" />
|
||||
</el-form-item>
|
||||
<el-form-item v-else-if="selectType === 'dele'" label="" prop="">
|
||||
<span style="color:red">确定要删除选中的{{ name }}吗?</span>
|
||||
</el-form-item>
|
||||
|
@ -102,15 +111,16 @@
|
|||
<el-table ref="table" v-loading="loading" :data="data" :height="height" @sort-change="sort" @selection-change="select">
|
||||
<el-table-column type="selection" width="42" title="全选/反选" />
|
||||
<el-table-column :prop="idkey" label="ID" width="80" sortable="custom" />
|
||||
<el-table-column prop="cover_url" label="封面" min-width="60">
|
||||
<el-table-column prop="unique" label="标识" min-width="80" show-overflow-tooltip />
|
||||
<el-table-column prop="image_url" label="图片" min-width="60" show-overflow-tooltip>
|
||||
<template slot-scope="scope">
|
||||
<div style="height:30px">
|
||||
<el-image
|
||||
v-if="scope.row.cover_url"
|
||||
v-if="scope.row.image_url"
|
||||
style="height:30px"
|
||||
fit="contain"
|
||||
:src="scope.row.cover_url"
|
||||
:preview-src-list="[scope.row.cover_url]"
|
||||
:src="scope.row.image_url"
|
||||
:preview-src-list="[scope.row.image_url]"
|
||||
title="点击看大图"
|
||||
lazy
|
||||
scroll-container=".el-table__body-wrapper"
|
||||
|
@ -123,7 +133,6 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="name" label="名称" min-width="200" show-overflow-tooltip />
|
||||
<el-table-column prop="unique" label="标识" min-width="80" show-overflow-tooltip />
|
||||
<el-table-column prop="category_names" label="分类" min-width="120" show-overflow-tooltip />
|
||||
<el-table-column prop="tag_names" label="标签" min-width="120" show-overflow-tooltip />
|
||||
<el-table-column prop="is_top" label="置顶" min-width="72" sortable="custom">
|
||||
|
@ -146,10 +155,10 @@
|
|||
<el-switch v-model="scope.row.is_disable" :active-value="1" :inactive-value="0" @change="disable([scope.row])" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="hits" label="点击" min-width="72" sortable="custom" />
|
||||
<el-table-column prop="sort" label="排序" min-width="72" sortable="custom" />
|
||||
<el-table-column prop="create_time" label="添加时间" min-width="155" sortable="custom" />
|
||||
<el-table-column prop="update_time" label="修改时间" min-width="155" sortable="custom" />
|
||||
<el-table-column prop="hits" label="点击" min-width="72" show-overflow-tooltip sortable="custom" />
|
||||
<el-table-column prop="create_time" label="添加时间" width="155" sortable="custom" />
|
||||
<el-table-column prop="update_time" label="修改时间" width="155" sortable="custom" />
|
||||
<el-table-column prop="release_time" label="发布时间" width="155" sortable="custom" />
|
||||
<el-table-column label="操作" width="90">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" title="信息/修改" @click="edit(scope.row)">修改</el-button>
|
||||
|
@ -162,26 +171,26 @@
|
|||
<!-- 添加修改 -->
|
||||
<el-dialog :title="dialogTitle" :visible.sync="dialog" top="5vh" :before-close="cancel" :close-on-click-modal="false" :close-on-press-escape="false">
|
||||
<el-form ref="ref" :rules="rules" :model="model" label-width="100px" class="dialog-body" :style="{ height: height + 'px' }">
|
||||
<el-form-item label="封面" prop="cover_id">
|
||||
<el-form-item label="标识" prop="unique">
|
||||
<el-input v-model="model.unique" placeholder="请输入标识(唯一)" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="图片" prop="image_id">
|
||||
<el-col :span="12" style="height:100px">
|
||||
<el-image v-if="model.cover_url" style="height:100px" fit="contain" :src="model.cover_url" :preview-src-list="[model.cover_url]" title="点击看大图">
|
||||
<el-image v-if="model.image_url" style="height:100px" fit="contain" :src="model.image_url" :preview-src-list="[model.image_url]" title="点击看大图">
|
||||
<div slot="error" class="image-slot">
|
||||
<i class="el-icon-picture-outline" />
|
||||
</div>
|
||||
</el-image>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-button size="mini" @click="fileUpload('image', 'cover_id', '上传封面')">上传封面</el-button>
|
||||
<el-button size="mini" @click="fileDelete(0, 'cover_id')">删除</el-button>
|
||||
<el-button size="mini" @click="fileUpload('image', 'image_id', '上传图片')">上传图片</el-button>
|
||||
<el-button size="mini" @click="fileDelete(0, 'image_id')">删除</el-button>
|
||||
<p>图片小于 200 KB,jpg、png格式。</p>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="名称" prop="name">
|
||||
<el-input v-model="model.name" placeholder="请输入名称" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="标识" prop="unique">
|
||||
<el-input v-model="model.unique" placeholder="请输入标识(唯一)" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="分类" prop="category_ids">
|
||||
<el-cascader v-model="model.category_ids" :options="categoryData" :props="categoryProps" class="ya-width-100p" clearable filterable />
|
||||
</el-form-item>
|
||||
|
@ -197,7 +206,10 @@
|
|||
<el-input v-model="model.keywords" placeholder="keywords" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="描述" prop="description">
|
||||
<el-input v-model="model.description" type="textarea" placeholder="description" clearable />
|
||||
<el-input v-model="model.description" type="textarea" autosize placeholder="description" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="来源" prop="source">
|
||||
<el-input v-model="model.source" placeholder="source" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="作者" prop="author">
|
||||
<el-input v-model="model.author" placeholder="author" clearable />
|
||||
|
@ -205,10 +217,30 @@
|
|||
<el-form-item label="链接" prop="url">
|
||||
<el-input v-model="model.url" placeholder="url" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="model.remark" placeholder="remark" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="排序" prop="sort">
|
||||
<el-input v-model="model.sort" type="number" placeholder="sort" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="图片" prop="images">
|
||||
<el-form-item label="初始点击" prop="hits_initial">
|
||||
<el-col :span="6">
|
||||
<el-input v-model="model.hits_initial" type="number" placeholder="初始点击量" clearable />
|
||||
</el-col>
|
||||
<el-col :span="3" class="ya-center">
|
||||
真实点击
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-input v-model="model.hits" type="number" placeholder="真实点击量" disabled />
|
||||
</el-col>
|
||||
<el-col :span="3" class="ya-center">
|
||||
展示点击
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-input :value="parseFloat(model.hits_initial) + parseFloat(model.hits)" type="number" placeholder="初始点击量" disabled />
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="图片列表" prop="images">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-button size="mini" @click="fileUpload('image', 'images', '上传图片')">上传图片</el-button>
|
||||
|
@ -230,7 +262,7 @@
|
|||
</el-col>
|
||||
</el-row>
|
||||
</el-form-item>
|
||||
<el-form-item label="视频" prop="videos">
|
||||
<el-form-item label="视频列表" prop="videos">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-button size="mini" @click="fileUpload('video', 'videos', '上传视频')">上传视频</el-button>
|
||||
|
@ -259,7 +291,7 @@
|
|||
</el-col>
|
||||
</el-row>
|
||||
</el-form-item>
|
||||
<el-form-item label="音频" prop="audios">
|
||||
<el-form-item label="音频列表" prop="audios">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-button size="mini" @click="fileUpload('audio', 'audios', '上传音频')">上传音频</el-button>
|
||||
|
@ -285,7 +317,7 @@
|
|||
</el-col>
|
||||
</el-row>
|
||||
</el-form-item>
|
||||
<el-form-item label="文档" prop="words">
|
||||
<el-form-item label="文档列表" prop="words">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-button size="mini" @click="fileUpload('word', 'words', '上传文档')">上传文档</el-button>
|
||||
|
@ -307,7 +339,7 @@
|
|||
</el-col>
|
||||
</el-row>
|
||||
</el-form-item>
|
||||
<el-form-item label="其它" prop="others">
|
||||
<el-form-item label="其它列表" prop="others">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-button size="mini" @click="fileUpload('other', 'others', '上传其它')">上传其它</el-button>
|
||||
|
@ -365,7 +397,7 @@ import FileManage from '@/components/FileManage'
|
|||
import RichEditor from '@/components/RichEditor'
|
||||
import clip from '@/utils/clipboard'
|
||||
import { arrayColumn } from '@/utils/index'
|
||||
import { list, info, add, edit, dele, editcate, edittag, istop, ishot, isrec, disable } from '@/api/content/content'
|
||||
import { list, info, add, edit, dele, editcate, edittag, istop, ishot, isrec, disable, release } from '@/api/content/content'
|
||||
|
||||
export default {
|
||||
name: 'ContentContent',
|
||||
|
@ -377,7 +409,7 @@ export default {
|
|||
height: 680,
|
||||
loading: false,
|
||||
idkey: 'content_id',
|
||||
exps: [],
|
||||
exps: [{ exp: 'like', name: '包含' }],
|
||||
query: { page: 1, limit: 12, search_field: 'name', search_exp: 'like', date_field: 'create_time' },
|
||||
data: [],
|
||||
count: 0,
|
||||
|
@ -385,23 +417,28 @@ export default {
|
|||
dialogTitle: '',
|
||||
model: {
|
||||
content_id: '',
|
||||
unique: '',
|
||||
category_ids: [],
|
||||
tag_ids: [],
|
||||
cover_id: 0,
|
||||
cover_url: '',
|
||||
image_id: 0,
|
||||
image_url: '',
|
||||
name: '',
|
||||
title: '',
|
||||
keywords: '',
|
||||
description: '',
|
||||
content: '',
|
||||
source: '',
|
||||
author: '',
|
||||
url: '',
|
||||
remark: '',
|
||||
sort: 250,
|
||||
hits: 0,
|
||||
hits_initial: 0,
|
||||
images: [],
|
||||
videos: [],
|
||||
audios: [],
|
||||
words: [],
|
||||
others: [],
|
||||
sort: 250
|
||||
others: []
|
||||
},
|
||||
rules: {
|
||||
name: [{ required: true, message: '请输入名称', trigger: 'blur' }]
|
||||
|
@ -420,6 +457,7 @@ export default {
|
|||
is_hot: 0,
|
||||
is_rec: 0,
|
||||
is_disable: 0,
|
||||
release_time: '',
|
||||
fileDialog: false,
|
||||
fileTitle: '文件管理',
|
||||
fileType: 'image',
|
||||
|
@ -555,6 +593,8 @@ export default {
|
|||
this.selectTitle = this.name + '是否推荐'
|
||||
} else if (selectType === 'disable') {
|
||||
this.selectTitle = this.name + '是否禁用'
|
||||
} else if (selectType === 'release') {
|
||||
this.selectTitle = this.name + '发布时间'
|
||||
} else if (selectType === 'dele') {
|
||||
this.selectTitle = this.name + '删除'
|
||||
}
|
||||
|
@ -582,6 +622,8 @@ export default {
|
|||
this.isrec(this.selection, true)
|
||||
} else if (selectType === 'disable') {
|
||||
this.disable(this.selection, true)
|
||||
} else if (selectType === 'release') {
|
||||
this.release(this.selection, true)
|
||||
} else if (selectType === 'dele') {
|
||||
this.dele(this.selection)
|
||||
}
|
||||
|
@ -701,6 +743,23 @@ export default {
|
|||
})
|
||||
}
|
||||
},
|
||||
// 发布时间
|
||||
release(row, select = false) {
|
||||
if (!row.length) {
|
||||
this.selectAlert()
|
||||
} else {
|
||||
this.loading = true
|
||||
release({
|
||||
ids: this.selectGetIds(row),
|
||||
release_time: this.release_time
|
||||
}).then(res => {
|
||||
this.list()
|
||||
this.$message.success(res.msg)
|
||||
}).catch(() => {
|
||||
this.list()
|
||||
})
|
||||
}
|
||||
},
|
||||
// 删除
|
||||
dele(row) {
|
||||
if (!row.length) {
|
||||
|
@ -735,10 +794,10 @@ export default {
|
|||
const fileField = this.fileField
|
||||
const fileLength = fileList.length
|
||||
if (fileLength) {
|
||||
if (fileField === 'cover_id') {
|
||||
if (fileField === 'image_id') {
|
||||
const i = fileLength - 1
|
||||
this.model.cover_id = fileList[i]['file_id']
|
||||
this.model.cover_url = fileList[i]['file_url']
|
||||
this.model.image_id = fileList[i]['file_id']
|
||||
this.model.image_url = fileList[i]['file_url']
|
||||
} else {
|
||||
for (let i = 0; i < fileLength; i++) {
|
||||
if (fileField === 'images') {
|
||||
|
@ -781,9 +840,9 @@ export default {
|
|||
setTimeout(() => { window.open(file.file_url, '_blank') }, 500)
|
||||
},
|
||||
fileDelete(index, field = '') {
|
||||
if (field === 'cover_id') {
|
||||
this.model.cover_id = 0
|
||||
this.model.cover_url = ''
|
||||
if (field === 'image_id') {
|
||||
this.model.image_id = 0
|
||||
this.model.image_url = ''
|
||||
} else if (field === 'images') {
|
||||
if (index === 'all') {
|
||||
this.model.images = []
|
||||
|
|
|
@ -1,44 +1,130 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<!-- 内容设置 -->
|
||||
<el-card>
|
||||
<el-form ref="ref" :model="model" :rules="rules" label-width="120px">
|
||||
<el-tabs>
|
||||
<el-tab-pane label="内容设置" name="" class="dialog-body" :style="{height:height+'px'}">
|
||||
<el-form-item label="内容管理" prop="is_content">
|
||||
<el-col :span="3">
|
||||
<el-switch v-model="model.is_content" :active-value="1" :inactive-value="0" />
|
||||
</el-col>
|
||||
<el-col :span="21">
|
||||
<span>内容是否开启,关闭后前台无法访问内容。</span>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="自定义设置">
|
||||
<el-col :span="3">
|
||||
键名
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
键值
|
||||
<el-tab-pane label="基本信息" class="dialog-body" :style="{ height: height + 'px' }">
|
||||
<el-form-item label="favicon" prop="favicon_id">
|
||||
<el-col :span="6" style="height:100px">
|
||||
<el-image v-if="model.favicon_url" style="height:100px" fit="contain" :src="model.favicon_url" :preview-src-list="[model.favicon_url]" title="点击看大图">
|
||||
<div slot="error" class="image-slot">
|
||||
<i class="el-icon-picture-outline" />
|
||||
</div>
|
||||
</el-image>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
说明
|
||||
</el-col>
|
||||
<el-col :span="2">
|
||||
<el-button type="primary" @click="add()">增加</el-button>
|
||||
<el-button size="mini" @click="fileUpload('favicon', '上传favicon')">上传favicon</el-button>
|
||||
<el-button size="mini" @click="fileDelete('favicon')">删除</el-button>
|
||||
<p>图片小于 50 KB,jpg、png、ico格式,128 x 128。</p>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item v-for="(item, index) in model.diy_config" :key="index" label="">
|
||||
<el-col :span="3">
|
||||
<el-input v-model="item.config_key" clearable placeholder="请输入键名" />
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-input v-model="item.config_val" clearable placeholder="请输入键值" />
|
||||
<el-form-item label="logo" prop="logo_id">
|
||||
<el-col :span="6" style="height:100px">
|
||||
<el-image v-if="model.logo_url" style="height:100px" fit="contain" :src="model.logo_url" :preview-src-list="[model.logo_url]" title="点击看大图">
|
||||
<div slot="error" class="image-slot">
|
||||
<i class="el-icon-picture-outline" />
|
||||
</div>
|
||||
</el-image>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-input v-model="item.config_desc" clearable placeholder="请输入说明" />
|
||||
<el-button size="mini" @click="fileUpload('logo', '上传logo')">上传logo</el-button>
|
||||
<el-button size="mini" @click="fileDelete('logo')">删除</el-button>
|
||||
<p>图片小于 200 KB,jpg、png格式。</p>
|
||||
</el-col>
|
||||
<el-col :span="2">
|
||||
<el-button type="text" @click="dele(index)">删除</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item label="名称" prop="name">
|
||||
<el-col :span="12">
|
||||
<el-input v-model="model.name" placeholder="name" clearable />
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="标题" prop="title">
|
||||
<el-col :span="12">
|
||||
<el-input v-model="model.title" placeholder="title" clearable />
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="关键词" prop="keywords">
|
||||
<el-col :span="12">
|
||||
<el-input v-model="model.keywords" placeholder="keywords" clearable />
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="描述" prop="description">
|
||||
<el-col :span="12">
|
||||
<el-input v-model="model.description" type="textarea" :autosize="{ minRows: 2, maxRows: 20 }" placeholder="description" />
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="备案号" prop="icp">
|
||||
<el-col :span="12">
|
||||
<el-input v-model="model.icp" placeholder="icp" clearable />
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="版权" prop="copyright">
|
||||
<el-col :span="12">
|
||||
<el-input v-model="model.copyright" placeholder="copyright" clearable />
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="联系信息" class="dialog-body" :style="{ height: height + 'px' }">
|
||||
<el-form-item label="公众号码" prop="offi_id">
|
||||
<el-col :span="6" style="height:100px">
|
||||
<el-image v-if="model.offi_url" style="height:100px" fit="contain" :src="model.offi_url" :preview-src-list="[model.offi_url]" title="点击看大图">
|
||||
<div slot="error" class="image-slot">
|
||||
<i class="el-icon-picture-outline" />
|
||||
</div>
|
||||
</el-image>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-button size="mini" @click="fileUpload('offi', '上传公众号码')">上传公众号码</el-button>
|
||||
<el-button size="mini" @click="fileDelete('offi')">删除</el-button>
|
||||
<p>图片小于 200 KB,jpg、png格式。</p>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="小程序码" prop="mini_id">
|
||||
<el-col :span="6" style="height:100px">
|
||||
<el-image v-if="model.mini_url" style="height:100px" fit="contain" :src="model.mini_url" :preview-src-list="[model.mini_url]" title="点击看大图">
|
||||
<div slot="error" class="image-slot">
|
||||
<i class="el-icon-picture-outline" />
|
||||
</div>
|
||||
</el-image>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-button size="mini" @click="fileUpload('mini', '上传小程序码')">上传小程序码</el-button>
|
||||
<el-button size="mini" @click="fileDelete('mini')">删除</el-button>
|
||||
<p>图片小于 200 KB,jpg、png格式。</p>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="地址" prop="address">
|
||||
<el-col :span="12">
|
||||
<el-input v-model="model.address" placeholder="address" clearable />
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="电话" prop="tel">
|
||||
<el-col :span="12">
|
||||
<el-input v-model="model.tel" placeholder="tel" clearable />
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="传真" prop="fax">
|
||||
<el-col :span="12">
|
||||
<el-input v-model="model.fax" placeholder="fax" clearable />
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="手机" prop="mobile">
|
||||
<el-col :span="12">
|
||||
<el-input v-model="model.mobile" placeholder="mobile" clearable />
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="邮箱" prop="email">
|
||||
<el-col :span="12">
|
||||
<el-input v-model="model.email" placeholder="email" clearable />
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="微信" prop="wechat">
|
||||
<el-col :span="12">
|
||||
<el-input v-model="model.wechat" placeholder="wechat" clearable />
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="QQ" prop="qq">
|
||||
<el-col :span="12">
|
||||
<el-input v-model="model.qq" placeholder="qq" clearable />
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
</el-tab-pane>
|
||||
|
@ -49,26 +135,52 @@
|
|||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-dialog :title="fileTitle" :visible.sync="fileDialog" width="80%" top="1vh" :close-on-click-modal="false" :close-on-press-escape="false">
|
||||
<file-manage file-type="image" @fileCancel="fileCancel" @fileSubmit="fileSubmit" />
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import screenHeight from '@/utils/screen-height'
|
||||
import FileManage from '@/components/FileManage'
|
||||
import { info, edit } from '@/api/content/setting'
|
||||
|
||||
export default {
|
||||
name: 'ContentSetting',
|
||||
components: { },
|
||||
components: { FileManage },
|
||||
data() {
|
||||
return {
|
||||
name: '内容设置',
|
||||
height: 680,
|
||||
loading: false,
|
||||
model: {
|
||||
is_content: 1,
|
||||
diy_config: []
|
||||
favicon_id: 0,
|
||||
favicon_url: '',
|
||||
logo_id: 0,
|
||||
logo_url: '',
|
||||
name: '',
|
||||
title: '',
|
||||
keywords: '',
|
||||
description: '',
|
||||
icp: '',
|
||||
copyright: '',
|
||||
offi_id: 0,
|
||||
offi_url: '',
|
||||
mini_id: 0,
|
||||
mini_url: '',
|
||||
address: '',
|
||||
tel: '',
|
||||
fax: '',
|
||||
mobile: '',
|
||||
email: '',
|
||||
qq: '',
|
||||
wechat: ''
|
||||
},
|
||||
rules: {}
|
||||
rules: {},
|
||||
fileDialog: false,
|
||||
fileField: 'logo',
|
||||
fileTitle: '文件管理'
|
||||
}
|
||||
},
|
||||
created() {
|
||||
|
@ -82,20 +194,6 @@ export default {
|
|||
this.model = res.data
|
||||
})
|
||||
},
|
||||
// 增加
|
||||
add() {
|
||||
this.model.diy_config.push({ config_key: '', config_val: '', config_desc: '' })
|
||||
},
|
||||
// 删除
|
||||
dele(index) {
|
||||
this.$confirm('确定要删除吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.model.diy_config.splice(index, 1)
|
||||
}).catch(() => { })
|
||||
},
|
||||
// 刷新
|
||||
refresh() {
|
||||
this.loading = true
|
||||
|
@ -122,6 +220,51 @@ export default {
|
|||
this.$message.error('请完善必填项*')
|
||||
}
|
||||
})
|
||||
},
|
||||
// 上传图片
|
||||
fileUpload(field, title = '') {
|
||||
this.fileField = field
|
||||
this.fileTitle = title
|
||||
this.fileDialog = true
|
||||
},
|
||||
fileCancel() {
|
||||
this.fileDialog = false
|
||||
},
|
||||
fileSubmit(fileList) {
|
||||
this.fileDialog = false
|
||||
const fileField = this.fileField
|
||||
const fileLength = fileList.length
|
||||
if (fileLength) {
|
||||
const i = fileLength - 1
|
||||
if (fileField === 'favicon') {
|
||||
this.model.favicon_id = fileList[i]['file_id']
|
||||
this.model.favicon_url = fileList[i]['file_url']
|
||||
} else if (fileField === 'logo') {
|
||||
this.model.logo_id = fileList[i]['file_id']
|
||||
this.model.logo_url = fileList[i]['file_url']
|
||||
} else if (fileField === 'offi') {
|
||||
this.model.offi_id = fileList[i]['file_id']
|
||||
this.model.offi_url = fileList[i]['file_url']
|
||||
} else if (fileField === 'mini') {
|
||||
this.model.mini_id = fileList[i]['file_id']
|
||||
this.model.mini_url = fileList[i]['file_url']
|
||||
}
|
||||
}
|
||||
},
|
||||
fileDelete(field = '') {
|
||||
if (field === 'favicon') {
|
||||
this.model.favicon_id = 0
|
||||
this.model.favicon_url = ''
|
||||
} else if (field === 'logo') {
|
||||
this.model.logo_id = 0
|
||||
this.model.logo_url = ''
|
||||
} else if (field === 'offi') {
|
||||
this.model.offi_id = 0
|
||||
this.model.offi_url = ''
|
||||
} else if (field === 'mini') {
|
||||
this.model.mini_id = 0
|
||||
this.model.mini_url = ''
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,10 +7,13 @@
|
|||
<el-col>
|
||||
<el-select v-model="query.search_field" class="filter-item ya-search-field" placeholder="查询字段">
|
||||
<el-option :value="idkey" label="ID" />
|
||||
<el-option value="tag_name" label="名称" />
|
||||
<el-option value="tag_unique" label="标识" />
|
||||
<el-option value="tag_desc" label="描述" />
|
||||
<el-option value="tag_name" label="名称" />
|
||||
<el-option value="is_disable" label="禁用" />
|
||||
<el-option value="title" label="标题" />
|
||||
<el-option value="keywords" label="关键词" />
|
||||
<el-option value="description" label="描述" />
|
||||
<el-option value="remark" label="备注" />
|
||||
</el-select>
|
||||
<el-select v-model="query.search_exp" class="filter-item ya-search-exp">
|
||||
<el-option v-for="exp in exps" :key="exp.exp" :value="exp.exp" :label="exp.name" />
|
||||
|
@ -24,7 +27,7 @@
|
|||
<el-option value="create_time" label="添加时间" />
|
||||
<el-option value="update_time" label="修改时间" />
|
||||
</el-select>
|
||||
<el-date-picker v-model="query.date_value" type="daterange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd" />
|
||||
<el-date-picker v-model="query.date_value" type="datetimerange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00','23:59:59']" value-format="yyyy-MM-dd HH:mm:ss" />
|
||||
<el-button class="filter-item" type="primary" title="查询/刷新" @click="search()">查询</el-button>
|
||||
<el-button class="filter-item" icon="el-icon-refresh" title="重置" @click="refresh()" />
|
||||
</el-col>
|
||||
|
@ -63,17 +66,27 @@
|
|||
<el-table ref="table" v-loading="loading" :data="data" :height="height" @sort-change="sort" @selection-change="select">
|
||||
<el-table-column type="selection" width="42" title="全选/反选" />
|
||||
<el-table-column :prop="idkey" label="ID" width="80" sortable="custom" />
|
||||
<el-table-column prop="tag_name" label="名称" min-width="130" show-overflow-tooltip />
|
||||
<el-table-column prop="tag_unique" label="标识" min-width="80" show-overflow-tooltip />
|
||||
<el-table-column prop="tag_desc" label="描述" min-width="150" show-overflow-tooltip />
|
||||
<el-table-column prop="image_url" label="图片" min-width="60">
|
||||
<template slot-scope="scope">
|
||||
<div style="height:30px">
|
||||
<el-image v-if="scope.row.image_url" style="height:30px" fit="contain" :src="scope.row.image_url" :preview-src-list="[scope.row.image_url]" title="点击看大图">
|
||||
<div slot="error" class="image-slot">
|
||||
<i class="el-icon-picture-outline" />
|
||||
</div>
|
||||
</el-image>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="tag_name" label="名称" min-width="130" show-overflow-tooltip />
|
||||
<el-table-column prop="is_disable" label="禁用" min-width="75" sortable="custom">
|
||||
<template slot-scope="scope">
|
||||
<el-switch v-model="scope.row.is_disable" :active-value="1" :inactive-value="0" @change="disable([scope.row])" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="sort" label="排序" min-width="75" sortable="custom" />
|
||||
<el-table-column prop="create_time" label="添加时间" min-width="155" sortable="custom" />
|
||||
<el-table-column prop="update_time" label="修改时间" min-width="155" sortable="custom" />
|
||||
<el-table-column prop="create_time" label="添加时间" width="155" sortable="custom" />
|
||||
<el-table-column prop="update_time" label="修改时间" width="155" sortable="custom" />
|
||||
<el-table-column label="操作" width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" @click="contentShow(scope.row)">内容</el-button>
|
||||
|
@ -87,18 +100,64 @@
|
|||
<!-- 添加修改 -->
|
||||
<el-dialog :title="dialogTitle" :visible.sync="dialog" top="5vh" :before-close="cancel" :close-on-click-modal="false" :close-on-press-escape="false">
|
||||
<el-form ref="ref" :rules="rules" :model="model" label-width="100px" class="dialog-body" :style="{height:height+'px'}">
|
||||
<el-form-item label="名称" prop="tag_name">
|
||||
<el-input v-model="model.tag_name" placeholder="请输入名称" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="标识" prop="tag_unique">
|
||||
<el-input v-model="model.tag_unique" placeholder="请输入标识(唯一)" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="描述" prop="tag_desc">
|
||||
<el-input v-model="model.tag_desc" placeholder="请输入描述" clearable />
|
||||
<el-form-item label="名称" prop="tag_name">
|
||||
<el-input v-model="model.tag_name" placeholder="请输入名称" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="图片" prop="image_id">
|
||||
<el-col :span="12" style="height:100px">
|
||||
<el-image v-if="model.image_url" style="height:100px" fit="contain" :src="model.image_url" :preview-src-list="[model.image_url]" title="点击看大图">
|
||||
<div slot="error" class="image-slot">
|
||||
<i class="el-icon-picture-outline" />
|
||||
</div>
|
||||
</el-image>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-button size="mini" @click="fileUpload('image', 'image_id', '上传图片')">上传图片</el-button>
|
||||
<el-button size="mini" @click="fileDelete(0, 'image_id')">删除</el-button>
|
||||
<p>图片小于 200 KB,jpg、png格式。</p>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="标题" prop="title">
|
||||
<el-input v-model="model.title" placeholder="title" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="关键词" prop="keywords">
|
||||
<el-input v-model="model.keywords" placeholder="keywords" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="描述" prop="description">
|
||||
<el-input v-model="model.description" type="textarea" autosize placeholder="description" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="model.remark" placeholder="remark" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="排序" prop="sort">
|
||||
<el-input v-model="model.sort" type="number" />
|
||||
</el-form-item>
|
||||
<el-form-item label="图片列表" prop="images">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-button size="mini" @click="fileUpload('image', 'images', '上传图片')">上传图片</el-button>
|
||||
<span>图片小于 250 KB,jpg、png格式。</span>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-button size="mini" @click="fileDelete('all', 'images')">全部删除</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col v-for="(item, index) in model.images" :key="index" :span="6" class="ya-file">
|
||||
<el-image style="height:100px" fit="contain" :src="item.file_url" :preview-src-list="[item.file_url]" title="点击看大图" />
|
||||
<div>
|
||||
<span class="ya-file-name" :title="item.file_name+'.'+item.file_ext">{{ item.file_name }}.{{ item.file_ext }}</span>
|
||||
<el-button type="text" size="medium" icon="el-icon-d-arrow-left" title="向左移动" @click="fileRemoval(index, 'images', 'left')" />
|
||||
<el-button type="text" size="medium" icon="el-icon-d-arrow-right" title="向左移动" @click="fileRemoval(index, 'images', 'right')" />
|
||||
<el-button type="text" size="medium" icon="el-icon-download" title="下载" @click="fileDownload(item, $event)" />
|
||||
<el-button type="text" size="medium" icon="el-icon-delete" title="删除" @click="fileDelete(index, 'images')" />
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model[idkey]" label="添加时间" prop="create_time">
|
||||
<el-input v-model="model.create_time" disabled />
|
||||
</el-form-item>
|
||||
|
@ -114,6 +173,10 @@
|
|||
<el-button :loading="loading" type="primary" @click="submit">提交</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<!-- 文件管理 -->
|
||||
<el-dialog :title="fileTitle" :visible.sync="fileDialog" width="80%" top="1vh" :close-on-click-modal="false" :close-on-press-escape="false">
|
||||
<file-manage :file-type="fileType" @fileCancel="fileCancel" @fileSubmit="fileSubmit" />
|
||||
</el-dialog>
|
||||
<!-- 标签内容 -->
|
||||
<el-dialog :title="contentDialogTitle" :visible.sync="contentDialog" width="70%" top="5vh" :close-on-click-modal="false" :close-on-press-escape="false">
|
||||
<!-- 选中操作 -->
|
||||
|
@ -140,10 +203,10 @@
|
|||
<el-table ref="contentRef" v-loading="contentLoad" :data="contentData" :height="height-20" @sort-change="contentSort" @selection-change="contentSelect">
|
||||
<el-table-column type="selection" width="42" title="全选/反选" />
|
||||
<el-table-column :prop="contentPk" label="内容ID" min-width="80" sortable="custom" />
|
||||
<el-table-column prop="cover_url" label="封面" min-width="60">
|
||||
<el-table-column prop="image_url" label="图片" min-width="60">
|
||||
<template slot-scope="scope">
|
||||
<div style="height:30px">
|
||||
<el-image v-if="scope.row.cover_url" style="height:30px" fit="contain" :src="scope.row.cover_url" :preview-src-list="[scope.row.cover_url]" title="点击看大图">
|
||||
<el-image v-if="scope.row.image_url" style="height:30px" fit="contain" :src="scope.row.image_url" :preview-src-list="[scope.row.image_url]" title="点击看大图">
|
||||
<div slot="error" class="image-slot">
|
||||
<i class="el-icon-picture-outline" />
|
||||
</div>
|
||||
|
@ -188,20 +251,22 @@
|
|||
|
||||
<script>
|
||||
import screenHeight from '@/utils/screen-height'
|
||||
import FileManage from '@/components/FileManage'
|
||||
import Pagination from '@/components/Pagination'
|
||||
import clip from '@/utils/clipboard'
|
||||
import { arrayColumn } from '@/utils/index'
|
||||
import { list, info, add, edit, dele, disable, content, contentRemove } from '@/api/content/tag'
|
||||
|
||||
export default {
|
||||
name: 'ContentTag',
|
||||
components: { Pagination },
|
||||
components: { FileManage, Pagination },
|
||||
data() {
|
||||
return {
|
||||
name: '内容标签',
|
||||
height: 680,
|
||||
loading: false,
|
||||
idkey: 'tag_id',
|
||||
exps: [],
|
||||
exps: [{ exp: 'like', name: '包含' }],
|
||||
query: { page: 1, limit: 12, search_field: 'tag_name', search_exp: 'like', date_field: 'create_time' },
|
||||
data: [],
|
||||
count: 0,
|
||||
|
@ -211,8 +276,14 @@ export default {
|
|||
tag_id: '',
|
||||
tag_name: '',
|
||||
tag_unique: '',
|
||||
tag_desc: '',
|
||||
sort: 250
|
||||
image_id: 0,
|
||||
image_url: '',
|
||||
title: '',
|
||||
keywords: '',
|
||||
description: '',
|
||||
remark: '',
|
||||
sort: 250,
|
||||
images: []
|
||||
},
|
||||
rules: {
|
||||
tag_name: [{ required: true, message: '请输入名称', trigger: 'blur' }]
|
||||
|
@ -223,6 +294,10 @@ export default {
|
|||
selectDialog: false,
|
||||
selectType: '',
|
||||
is_disable: 0,
|
||||
fileDialog: false,
|
||||
fileTitle: '文件管理',
|
||||
fileType: 'image',
|
||||
fileField: '',
|
||||
contentPk: 'content_id',
|
||||
contentName: '内容',
|
||||
contentDialog: false,
|
||||
|
@ -439,6 +514,73 @@ export default {
|
|||
})
|
||||
}
|
||||
},
|
||||
// 上传图片
|
||||
fileUpload(fileType, fileField = '', fileTitle = '文件管理') {
|
||||
this.fileType = fileType
|
||||
this.fileField = fileField
|
||||
this.fileTitle = fileTitle
|
||||
this.fileDialog = true
|
||||
},
|
||||
fileCancel() {
|
||||
this.fileType = 'image'
|
||||
this.fileField = ''
|
||||
this.fileTitle = '文件管理'
|
||||
this.fileDialog = false
|
||||
},
|
||||
fileSubmit(fileList) {
|
||||
this.fileDialog = false
|
||||
const fileField = this.fileField
|
||||
const fileLength = fileList.length
|
||||
if (fileLength) {
|
||||
if (fileField === 'image_id') {
|
||||
const i = fileLength - 1
|
||||
this.model.image_id = fileList[i]['file_id']
|
||||
this.model.image_url = fileList[i]['file_url']
|
||||
} else {
|
||||
for (let i = 0; i < fileLength; i++) {
|
||||
if (fileField === 'images') {
|
||||
this.model.images.push(fileList[i])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
fileRemoval(index, field, direction) {
|
||||
const length = this.model[field].length
|
||||
var index1 = index
|
||||
if (direction === 'left') {
|
||||
if (index <= 0) {
|
||||
return false
|
||||
}
|
||||
--index1
|
||||
} else {
|
||||
if (index >= (length - 1)) {
|
||||
return false
|
||||
}
|
||||
++index1
|
||||
}
|
||||
const value = this.model[field][index]
|
||||
const value1 = this.model[field][index1]
|
||||
this.model[field][index] = value1
|
||||
this.model[field][index1] = value
|
||||
this.$forceUpdate()
|
||||
},
|
||||
fileDownload(file, event) {
|
||||
clip(file.file_name, event, '文件名复制成功')
|
||||
setTimeout(() => { window.open(file.file_url, '_blank') }, 500)
|
||||
},
|
||||
fileDelete(index, field = '') {
|
||||
if (field === 'image_id') {
|
||||
this.model.image_id = 0
|
||||
this.model.image_url = ''
|
||||
} else if (field === 'images') {
|
||||
if (index === 'all') {
|
||||
this.model.images = []
|
||||
} else {
|
||||
this.model.images.splice(index, 1)
|
||||
}
|
||||
}
|
||||
},
|
||||
// 标签内容显示
|
||||
contentShow(row) {
|
||||
this.contentDialog = true
|
||||
|
@ -533,4 +675,18 @@ export default {
|
|||
</script>
|
||||
|
||||
<style scoped>
|
||||
.ya-file {
|
||||
text-align: center;
|
||||
border: 1px solid #dcdfe6;
|
||||
}
|
||||
.ya-file-name {
|
||||
display: block;
|
||||
height: 24px;
|
||||
line-height: 24px;
|
||||
padding: 0 4px;
|
||||
font-size: 12px;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
<el-option :value="idkey" label="ID" />
|
||||
<el-option value="group_name" label="名称" />
|
||||
<el-option value="group_desc" label="描述" />
|
||||
<el-option value="remark" label="备注" />
|
||||
<el-option value="is_disable" label="禁用" />
|
||||
</el-select>
|
||||
<el-select v-model="query.search_exp" class="filter-item ya-search-exp">
|
||||
|
@ -23,7 +24,7 @@
|
|||
<el-option value="create_time" label="添加时间" />
|
||||
<el-option value="update_time" label="修改时间" />
|
||||
</el-select>
|
||||
<el-date-picker v-model="query.date_value" type="daterange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd" />
|
||||
<el-date-picker v-model="query.date_value" type="datetimerange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00','23:59:59']" value-format="yyyy-MM-dd HH:mm:ss" />
|
||||
<el-button class="filter-item" type="primary" title="查询/刷新" @click="search()">查询</el-button>
|
||||
<el-button class="filter-item" icon="el-icon-refresh" title="重置" @click="refresh()" />
|
||||
</el-col>
|
||||
|
@ -63,15 +64,16 @@
|
|||
<el-table-column type="selection" width="42" title="全选/反选" />
|
||||
<el-table-column :prop="idkey" label="ID" width="80" sortable="custom" />
|
||||
<el-table-column prop="group_name" label="名称" min-width="130" show-overflow-tooltip />
|
||||
<el-table-column prop="group_desc" label="描述" min-width="150" show-overflow-tooltip />
|
||||
<el-table-column prop="group_desc" label="描述" min-width="160" show-overflow-tooltip />
|
||||
<el-table-column prop="remark" label="备注" min-width="150" show-overflow-tooltip />
|
||||
<el-table-column prop="is_disable" label="禁用" min-width="75" sortable="custom">
|
||||
<template slot-scope="scope">
|
||||
<el-switch v-model="scope.row.is_disable" :active-value="1" :inactive-value="0" @change="disable([scope.row])" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="sort" label="排序" min-width="75" sortable="custom" />
|
||||
<el-table-column prop="create_time" label="添加时间" min-width="155" sortable="custom" />
|
||||
<el-table-column prop="update_time" label="修改时间" min-width="155" sortable="custom" />
|
||||
<el-table-column prop="create_time" label="添加时间" width="155" sortable="custom" />
|
||||
<el-table-column prop="update_time" label="修改时间" width="155" sortable="custom" />
|
||||
<el-table-column label="操作" width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" @click="fileShow(scope.row)">文件</el-button>
|
||||
|
@ -89,7 +91,10 @@
|
|||
<el-input v-model="model.group_name" placeholder="请输入名称" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="描述" prop="group_desc">
|
||||
<el-input v-model="model.group_desc" placeholder="请输入描述" clearable />
|
||||
<el-input v-model="model.group_desc" type="textarea" autosize placeholder="请输入描述" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="model.remark" placeholder="请输入备注" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="排序" prop="sort">
|
||||
<el-input v-model="model.sort" type="number" />
|
||||
|
@ -196,7 +201,7 @@ export default {
|
|||
height: 680,
|
||||
loading: false,
|
||||
idkey: 'group_id',
|
||||
exps: [],
|
||||
exps: [{ exp: 'like', name: '包含' }],
|
||||
query: { page: 1, limit: 12, search_field: 'group_name', search_exp: 'like', date_field: 'create_time' },
|
||||
data: [],
|
||||
count: 0,
|
||||
|
@ -206,6 +211,7 @@ export default {
|
|||
group_id: '',
|
||||
group_name: '',
|
||||
group_desc: '',
|
||||
remark: '',
|
||||
sort: 250
|
||||
},
|
||||
rules: {
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
<el-option :value="idkey" label="ID" />
|
||||
<el-option value="tag_name" label="名称" />
|
||||
<el-option value="tag_desc" label="描述" />
|
||||
<el-option value="remark" label="备注" />
|
||||
<el-option value="is_disable" label="禁用" />
|
||||
</el-select>
|
||||
<el-select v-model="query.search_exp" class="filter-item ya-search-exp">
|
||||
|
@ -23,7 +24,7 @@
|
|||
<el-option value="create_time" label="添加时间" />
|
||||
<el-option value="update_time" label="修改时间" />
|
||||
</el-select>
|
||||
<el-date-picker v-model="query.date_value" type="daterange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd" />
|
||||
<el-date-picker v-model="query.date_value" type="datetimerange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00','23:59:59']" value-format="yyyy-MM-dd HH:mm:ss" />
|
||||
<el-button class="filter-item" type="primary" title="查询/刷新" @click="search()">查询</el-button>
|
||||
<el-button class="filter-item" icon="el-icon-refresh" title="重置" @click="refresh()" />
|
||||
</el-col>
|
||||
|
@ -62,16 +63,17 @@
|
|||
<el-table ref="table" v-loading="loading" :data="data" :height="height" @sort-change="sort" @selection-change="select">
|
||||
<el-table-column type="selection" width="42" title="全选/反选" />
|
||||
<el-table-column :prop="idkey" label="ID" width="80" sortable="custom" />
|
||||
<el-table-column prop="tag_name" label="名称" min-width="120" show-overflow-tooltip />
|
||||
<el-table-column prop="tag_desc" label="描述" min-width="150" show-overflow-tooltip />
|
||||
<el-table-column prop="tag_name" label="名称" min-width="130" show-overflow-tooltip />
|
||||
<el-table-column prop="tag_desc" label="描述" min-width="160" show-overflow-tooltip />
|
||||
<el-table-column prop="remark" label="备注" min-width="150" show-overflow-tooltip />
|
||||
<el-table-column prop="is_disable" label="禁用" min-width="75" sortable="custom">
|
||||
<template slot-scope="scope">
|
||||
<el-switch v-model="scope.row.is_disable" :active-value="1" :inactive-value="0" @change="disable([scope.row])" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="sort" label="排序" min-width="75" sortable="custom" />
|
||||
<el-table-column prop="create_time" label="添加时间" min-width="155" sortable="custom" />
|
||||
<el-table-column prop="update_time" label="修改时间" min-width="155" sortable="custom" />
|
||||
<el-table-column prop="create_time" label="添加时间" width="155" sortable="custom" />
|
||||
<el-table-column prop="update_time" label="修改时间" width="155" sortable="custom" />
|
||||
<el-table-column label="操作" width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" @click="fileShow(scope.row)">文件</el-button>
|
||||
|
@ -89,7 +91,10 @@
|
|||
<el-input v-model="model.tag_name" placeholder="请输入名称" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="描述" prop="tag_desc">
|
||||
<el-input v-model="model.tag_desc" placeholder="请输入描述" clearable />
|
||||
<el-input v-model="model.tag_desc" type="textarea" autosize placeholder="请输入描述" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="model.remark" placeholder="请输入备注" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="排序" prop="sort">
|
||||
<el-input v-model="model.sort" type="number" placeholder="" />
|
||||
|
@ -196,7 +201,7 @@ export default {
|
|||
height: 680,
|
||||
loading: false,
|
||||
idkey: 'tag_id',
|
||||
exps: [],
|
||||
exps: [{ exp: 'like', name: '包含' }],
|
||||
query: { page: 1, limit: 12, search_field: 'tag_name', search_exp: 'like', date_field: 'create_time' },
|
||||
data: [],
|
||||
count: 0,
|
||||
|
@ -206,6 +211,7 @@ export default {
|
|||
tag_id: '',
|
||||
tag_name: '',
|
||||
tag_desc: '',
|
||||
remark: '',
|
||||
sort: 250
|
||||
},
|
||||
rules: {
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
<el-option value="create_time" label="添加时间" />
|
||||
<el-option value="update_time" label="修改时间" />
|
||||
</el-select>
|
||||
<el-date-picker v-model="query.date_value" type="daterange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd" />
|
||||
<el-date-picker v-model="query.date_value" type="datetimerange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00','23:59:59']" value-format="yyyy-MM-dd HH:mm:ss" />
|
||||
<el-button class="filter-item" type="primary" title="查询/刷新" @click="search()">查询</el-button>
|
||||
<el-button class="filter-item" icon="el-icon-refresh" title="重置" @click="refresh()" />
|
||||
</el-col>
|
||||
|
@ -123,6 +123,11 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-row>
|
||||
<el-descriptions title="" :column="12" :colon="false" size="medium">
|
||||
<el-descriptions-item label="">共 {{ count }} 条</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-row>
|
||||
<!-- 添加修改 -->
|
||||
<el-dialog :title="dialogTitle" :visible.sync="dialog" top="5vh" :before-close="cancel" :close-on-click-modal="false" :close-on-press-escape="false" destroy-on-close>
|
||||
<el-form ref="ref" :rules="rules" :model="model" label-width="100px" class="dialog-body" :style="{height:height-50+'px'}">
|
||||
|
@ -218,7 +223,7 @@ export default {
|
|||
height: 680,
|
||||
loading: false,
|
||||
idkey: 'api_id',
|
||||
exps: [],
|
||||
exps: [{ exp: 'like', name: '包含' }],
|
||||
query: { search_field: 'api_name', search_exp: 'like', date_field: 'create_time' },
|
||||
data: [],
|
||||
dialog: false,
|
||||
|
@ -260,7 +265,8 @@ export default {
|
|||
groupSelectIds: '',
|
||||
groupSelectTitle: '选中操作',
|
||||
groupSelectDialog: false,
|
||||
groupSelectType: ''
|
||||
groupSelectType: '',
|
||||
count: {}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
|
@ -275,6 +281,7 @@ export default {
|
|||
this.data = res.data.list
|
||||
this.trees = res.data.tree
|
||||
this.exps = res.data.exps
|
||||
this.count = res.data.count
|
||||
this.isExpandAll = false
|
||||
this.loading = false
|
||||
}).catch(() => {
|
||||
|
|
|
@ -1,29 +1,25 @@
|
|||
<template>
|
||||
<el-card class="dialog-body" :style="{height:height+'px'}">
|
||||
<el-row>
|
||||
<el-col :span="14">
|
||||
<el-col :span="16">
|
||||
<el-form ref="ref" :model="model" :rules="rules" label-width="120px">
|
||||
<el-form-item label="会员接口" prop="is_member_api">
|
||||
<el-col :span="24">
|
||||
<el-col :span="4">
|
||||
<el-switch v-model="model.is_member_api" :active-value="1" :inactive-value="0" />
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
关闭后,不再校验接口和权限,所有接口(免登除外)均需登录访问。
|
||||
<el-col :span="20">
|
||||
关闭后,不校验接口和权限,所有接口(免登除外)均需登录访问
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="接口速率">
|
||||
<el-col :span="8">
|
||||
<el-input v-model="model.api_rate_num" type="number" placeholder="次数">
|
||||
<template slot="append">次</template>
|
||||
</el-input>
|
||||
<el-col :span="4">
|
||||
<el-input v-model="model.api_rate_num" type="number" placeholder="次数" />
|
||||
</el-col>
|
||||
<el-col :span="1" style="text-align:center">/</el-col>
|
||||
<el-col :span="8">
|
||||
<el-input v-model="model.api_rate_time" type="number" placeholder="时间">
|
||||
<template slot="append">秒</template>
|
||||
</el-input>
|
||||
<el-col :span="4">
|
||||
<el-input v-model="model.api_rate_time" type="number" placeholder="时间" />
|
||||
</el-col>
|
||||
<el-col :span="24"> 3/1:3次1秒;次数 0 不限率。</el-col>
|
||||
<el-col :span="15"> 次/秒,次数 0 不限率</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button :loading="loading" @click="refresh()">刷新</el-button>
|
||||
|
|
|
@ -3,20 +3,24 @@
|
|||
<el-row>
|
||||
<el-col :span="14">
|
||||
<el-form ref="ref" :model="model" :rules="rules" label-width="120px">
|
||||
<el-form-item label="注册验证码" prop="captcha_register">
|
||||
<el-form-item label="验证码方式" prop="captcha_mode">
|
||||
<el-col :span="8">
|
||||
<el-switch v-model="model.captcha_register" :active-value="1" :inactive-value="0" />
|
||||
<el-select v-model="model.captcha_mode" placeholder="" @change="moldChange">
|
||||
<el-option v-for="item in mold" :key="item.value" :label="item.label" :value="item.value" />
|
||||
</el-select>
|
||||
</el-col>
|
||||
<el-col :span="16">
|
||||
开启后,会员注册需要输入验证码。
|
||||
字符:输入字符;行为:滑动或点选
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="登录验证码" prop="captcha_login">
|
||||
<el-form-item label="验证码类型" prop="captcha_type">
|
||||
<el-col :span="8">
|
||||
<el-switch v-model="model.captcha_login" :active-value="1" :inactive-value="0" />
|
||||
</el-col>
|
||||
<el-col :span="16">
|
||||
开启后,会员登录需要输入验证码。
|
||||
<el-select v-if="model.captcha_mode==1" v-model="model.captcha_type" placeholder="">
|
||||
<el-option v-for="item in typestr" :key="item.value" :label="item.label" :value="item.value" />
|
||||
</el-select>
|
||||
<el-select v-else v-model="model.captcha_type" placeholder="">
|
||||
<el-option v-for="item in typeaj" :key="item.value" :label="item.label" :value="item.value" />
|
||||
</el-select>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
|
@ -42,10 +46,25 @@ export default {
|
|||
height: 680,
|
||||
loading: false,
|
||||
model: {
|
||||
captcha_register: 0,
|
||||
captcha_login: 0
|
||||
captcha_mode: 1,
|
||||
captcha_type: 1
|
||||
},
|
||||
rules: {}
|
||||
rules: {},
|
||||
mold: [
|
||||
{ value: 1, label: '字符' },
|
||||
{ value: 2, label: '行为' }
|
||||
],
|
||||
typestr: [
|
||||
{ value: 1, label: '数字' },
|
||||
{ value: 2, label: '字母' },
|
||||
{ value: 3, label: '数字字母' },
|
||||
{ value: 4, label: '算术' },
|
||||
{ value: 5, label: '中文' }
|
||||
],
|
||||
typeaj: [
|
||||
{ value: 1, label: '滑动拼图' },
|
||||
{ value: 2, label: '点选文字' }
|
||||
]
|
||||
}
|
||||
},
|
||||
created() {
|
||||
|
@ -62,15 +81,13 @@ export default {
|
|||
// 刷新
|
||||
refresh() {
|
||||
this.loading = true
|
||||
captchaInfo()
|
||||
.then((res) => {
|
||||
this.model = res.data
|
||||
this.loading = false
|
||||
this.$message.success(res.msg)
|
||||
})
|
||||
.catch(() => {
|
||||
this.loading = false
|
||||
})
|
||||
captchaInfo().then((res) => {
|
||||
this.model = res.data
|
||||
this.loading = false
|
||||
this.$message.success(res.msg)
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
// 提交
|
||||
submit() {
|
||||
|
@ -78,7 +95,6 @@ export default {
|
|||
if (valid) {
|
||||
this.loading = true
|
||||
captchaEdit(this.model).then(res => {
|
||||
this.info()
|
||||
this.loading = false
|
||||
this.$message.success(res.msg)
|
||||
}).catch(() => {
|
||||
|
@ -86,6 +102,9 @@ export default {
|
|||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
moldChange(value) {
|
||||
this.model.captcha_type = 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,114 +0,0 @@
|
|||
<template>
|
||||
<el-card class="dialog-body" :style="{height:height+'px'}">
|
||||
<el-row>
|
||||
<el-col :span="16">
|
||||
<el-form ref="ref" :model="model" :rules="rules" label-width="120px">
|
||||
<el-form-item label="自定义设置" prop="">
|
||||
<el-col :span="5">
|
||||
键名
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
键值
|
||||
</el-col>
|
||||
<el-col :span="10">
|
||||
说明
|
||||
</el-col>
|
||||
<el-col :span="1">
|
||||
<el-button type="primary" @click="add()">增加</el-button>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item v-for="(item, index) in model.diy_config" :key="index" label="">
|
||||
<el-col :span="5">
|
||||
<el-input v-model="item.config_key" clearable placeholder="请输入键名" />
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-input v-model="item.config_val" clearable placeholder="请输入键值" />
|
||||
</el-col>
|
||||
<el-col :span="10">
|
||||
<el-input v-model="item.config_desc" clearable placeholder="请输入说明" />
|
||||
</el-col>
|
||||
<el-col :span="1">
|
||||
<el-button type="text" @click="dele(index)">删除</el-button>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button :loading="loading" @click="refresh()">刷新</el-button>
|
||||
<el-button :loading="loading" type="primary" @click="submit()">提交</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-card>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import screenHeight from '@/utils/screen-height'
|
||||
import { diyInfo, diyEdit } from '@/api/member/setting'
|
||||
|
||||
export default {
|
||||
name: 'MemberSettingDiy',
|
||||
components: {},
|
||||
data() {
|
||||
return {
|
||||
name: '自定义设置',
|
||||
height: 680,
|
||||
loading: false,
|
||||
model: {
|
||||
diy_config: []
|
||||
},
|
||||
rules: {}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.height = screenHeight(170)
|
||||
this.info()
|
||||
},
|
||||
methods: {
|
||||
// 信息
|
||||
info() {
|
||||
diyInfo().then(res => {
|
||||
this.model = res.data
|
||||
})
|
||||
},
|
||||
// 增加
|
||||
add() {
|
||||
this.model.diy_config.push({ config_key: '', config_val: '', config_desc: '' })
|
||||
},
|
||||
// 删除
|
||||
dele(index) {
|
||||
this.$confirm('确定要删除吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.model.diy_config.splice(index, 1)
|
||||
}).catch(() => {})
|
||||
},
|
||||
// 刷新
|
||||
refresh() {
|
||||
this.loading = true
|
||||
diyInfo().then((res) => {
|
||||
this.model = res.data
|
||||
this.loading = false
|
||||
this.$message.success(res.msg)
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
// 提交
|
||||
submit() {
|
||||
this.$refs['ref'].validate(valid => {
|
||||
if (valid) {
|
||||
this.loading = true
|
||||
diyEdit(this.model).then(res => {
|
||||
this.loading = false
|
||||
this.$message.success(res.msg)
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
|
@ -8,7 +8,7 @@
|
|||
<el-switch v-model="model.log_switch" :active-value="1" :inactive-value="0" />
|
||||
</el-col>
|
||||
<el-col :span="16">
|
||||
开启后,会记录会员日志。
|
||||
开启后,会记录会员日志
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="日志保留时间" prop="log_save_time">
|
||||
|
@ -18,7 +18,7 @@
|
|||
</el-input>
|
||||
</el-col>
|
||||
<el-col :span="16">
|
||||
会员日志保留天数,0永久保留。
|
||||
会员日志保留天数,0永久保留
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
|
|
|
@ -1,14 +1,30 @@
|
|||
<template>
|
||||
<el-card class="dialog-body" :style="{height:height+'px'}">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-col :span="14">
|
||||
<el-form ref="ref" :model="model" :rules="rules" label-width="120px">
|
||||
<el-form-item label="注册验证码" prop="is_captcha_register">
|
||||
<el-col :span="8">
|
||||
<el-switch v-model="model.is_captcha_register" :active-value="1" :inactive-value="0" />
|
||||
</el-col>
|
||||
<el-col :span="16">
|
||||
开启后,会员账号密码注册需要输入验证码
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="注册" prop="is_register">
|
||||
<el-col :span="8">
|
||||
<el-switch v-model="model.is_register" :active-value="1" :inactive-value="0" />
|
||||
</el-col>
|
||||
<el-col :span="16">
|
||||
关闭后,不能再注册(用户名、手机、邮箱)
|
||||
关闭后,不能使用账号密码注册
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="登录验证码" prop="is_captcha_login">
|
||||
<el-col :span="8">
|
||||
<el-switch v-model="model.is_captcha_login" :active-value="1" :inactive-value="0" />
|
||||
</el-col>
|
||||
<el-col :span="16">
|
||||
开启后,会员账号密码登录需要输入验证码
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="登录" prop="is_login">
|
||||
|
@ -16,39 +32,39 @@
|
|||
<el-switch v-model="model.is_login" :active-value="1" :inactive-value="0" />
|
||||
</el-col>
|
||||
<el-col :span="16">
|
||||
关闭后,不能再登录(用户名、手机、邮箱)
|
||||
关闭后,不能使用账号密码登录
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="公众号注册" prop="is_offi_register">
|
||||
<el-form-item label="手机验证码注册" prop="is_phone_register">
|
||||
<el-col :span="8">
|
||||
<el-switch v-model="model.is_offi_register" :active-value="1" :inactive-value="0" />
|
||||
<el-switch v-model="model.is_phone_register" :active-value="1" :inactive-value="0" />
|
||||
</el-col>
|
||||
<el-col :span="16">
|
||||
关闭后,不能再注册(公众号)
|
||||
关闭后,不能使用手机+验证码注册
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="公众号登录" prop="is_offi_login">
|
||||
<el-form-item label="手机验证码登录" prop="is_phone_login">
|
||||
<el-col :span="8">
|
||||
<el-switch v-model="model.is_offi_login" :active-value="1" :inactive-value="0" />
|
||||
<el-switch v-model="model.is_phone_login" :active-value="1" :inactive-value="0" />
|
||||
</el-col>
|
||||
<el-col :span="16">
|
||||
关闭后,不能再登录(公众号)
|
||||
关闭后,不能使用手机+验证码登录
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="小程序注册" prop="is_mini_register">
|
||||
<el-form-item label="邮箱验证码注册" prop="is_email_register">
|
||||
<el-col :span="8">
|
||||
<el-switch v-model="model.is_mini_register" :active-value="1" :inactive-value="0" />
|
||||
<el-switch v-model="model.is_email_register" :active-value="1" :inactive-value="0" />
|
||||
</el-col>
|
||||
<el-col :span="16">
|
||||
关闭后,不能再注册(小程序)
|
||||
关闭后,不能使用邮箱+验证码注册
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="小程序登录" prop="is_mini_login">
|
||||
<el-form-item label="邮箱验证码登录" prop="is_email_login">
|
||||
<el-col :span="8">
|
||||
<el-switch v-model="model.is_mini_login" :active-value="1" :inactive-value="0" />
|
||||
<el-switch v-model="model.is_email_login" :active-value="1" :inactive-value="0" />
|
||||
</el-col>
|
||||
<el-col :span="16">
|
||||
关闭后,不能再登录(小程序)
|
||||
关闭后,不能使用邮箱+验证码登录
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
|
@ -75,11 +91,13 @@ export default {
|
|||
loading: false,
|
||||
model: {
|
||||
is_register: 1,
|
||||
is_captcha_register: 0,
|
||||
is_login: 1,
|
||||
is_offi_register: 1,
|
||||
is_offi_login: 1,
|
||||
is_mini_register: 1,
|
||||
is_mini_login: 1
|
||||
is_captcha_login: 0,
|
||||
is_phone_register: 1,
|
||||
is_phone_login: 1,
|
||||
is_email_register: 1,
|
||||
is_email_login: 1
|
||||
},
|
||||
rules: {}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,121 @@
|
|||
<template>
|
||||
<el-card class="dialog-body" :style="{height:height+'px'}">
|
||||
<el-form ref="ref" :model="model" :rules="rules" label-width="120px">
|
||||
<el-form-item label="默认头像" prop="default_avatar_id">
|
||||
<el-col :span="6" style="height:100px">
|
||||
<el-image v-if="model.default_avatar_url" style="height:100px" fit="contain" :src="model.default_avatar_url" :preview-src-list="[model.default_avatar_url]" title="点击看大图">
|
||||
<div slot="error" class="image-slot">
|
||||
<i class="el-icon-picture-outline" />
|
||||
</div>
|
||||
</el-image>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-button size="mini" @click="fileUpload('default_avatar', '上传默认头像')">上传默认头像</el-button>
|
||||
<el-button size="mini" @click="fileDelete('default_avatar')">删除</el-button>
|
||||
<p>图片小于 50 KB,jpg、png、ico格式,128 x 128。</p>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button :loading="loading" @click="refresh()">刷新</el-button>
|
||||
<el-button :loading="loading" type="primary" @click="submit()">提交</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-dialog :title="fileTitle" :visible.sync="fileDialog" width="80%" top="1vh" :close-on-click-modal="false" :close-on-press-escape="false">
|
||||
<file-manage file-type="image" @fileCancel="fileCancel" @fileSubmit="fileSubmit" />
|
||||
</el-dialog>
|
||||
</el-card>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import screenHeight from '@/utils/screen-height'
|
||||
import FileManage from '@/components/FileManage'
|
||||
import { memberInfo, memberEdit } from '@/api/member/setting'
|
||||
|
||||
export default {
|
||||
name: 'SettingMember',
|
||||
components: { FileManage },
|
||||
data() {
|
||||
return {
|
||||
name: '会员设置',
|
||||
height: 680,
|
||||
loading: false,
|
||||
model: {
|
||||
default_avatar_id: 0,
|
||||
default_avatar_url: ''
|
||||
},
|
||||
rules: {},
|
||||
fileDialog: false,
|
||||
fileField: 'logo',
|
||||
fileTitle: '文件管理'
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.height = screenHeight(170)
|
||||
this.info()
|
||||
},
|
||||
methods: {
|
||||
// 信息
|
||||
info() {
|
||||
memberInfo().then((res) => {
|
||||
this.model = res.data
|
||||
})
|
||||
},
|
||||
// 刷新
|
||||
refresh() {
|
||||
this.loading = true
|
||||
memberInfo().then((res) => {
|
||||
this.model = res.data
|
||||
this.loading = false
|
||||
this.$message.success(res.msg)
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
// 提交
|
||||
submit() {
|
||||
this.$refs['ref'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.loading = true
|
||||
memberEdit(this.model).then((res) => {
|
||||
this.loading = false
|
||||
this.$message.success(res.msg)
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
// 上传图片
|
||||
fileUpload(field, title = '') {
|
||||
this.fileField = field
|
||||
this.fileTitle = title
|
||||
this.fileDialog = true
|
||||
},
|
||||
fileCancel() {
|
||||
this.fileDialog = false
|
||||
},
|
||||
fileSubmit(fileList) {
|
||||
this.fileDialog = false
|
||||
const fileField = this.fileField
|
||||
const fileLength = fileList.length
|
||||
if (fileLength) {
|
||||
const i = fileLength - 1
|
||||
if (fileField === 'default_avatar') {
|
||||
this.model.default_avatar_id = fileList[i]['file_id']
|
||||
this.model.default_avatar_url = fileList[i]['file_url']
|
||||
}
|
||||
}
|
||||
},
|
||||
fileDelete(field = '') {
|
||||
if (field === 'default_avatar') {
|
||||
this.model.default_avatar_id = 0
|
||||
this.model.default_avatar_url = ''
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
|
@ -0,0 +1,161 @@
|
|||
<template>
|
||||
<el-card class="dialog-body" :style="{height:height+'px'}">
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form ref="ref" label-width="120px">
|
||||
<el-form-item label="" prop="">
|
||||
<el-col :span="8">
|
||||
AppID
|
||||
</el-col>
|
||||
<el-col :span="9">
|
||||
AppSecret
|
||||
</el-col>
|
||||
<el-col :span="2">
|
||||
注册
|
||||
</el-col>
|
||||
<el-col :span="2">
|
||||
登录
|
||||
</el-col>
|
||||
<el-col :span="2">
|
||||
绑定
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-form ref="ref" :model="model" :rules="rules" label-width="120px">
|
||||
<el-form-item v-for="(item, index) in apps" :key="index" :label="apps[index]" prop="">
|
||||
<el-col :span="8">
|
||||
<el-input v-model="model[index+'_appid']" />
|
||||
</el-col>
|
||||
<el-col :span="9">
|
||||
<el-input v-model="model[index+'_appsecret']" />
|
||||
</el-col>
|
||||
<el-col :span="2">
|
||||
<el-switch v-model="model[index+'_register']" :active-value="1" :inactive-value="0" />
|
||||
</el-col>
|
||||
<el-col :span="2">
|
||||
<el-switch v-model="model[index+'_login']" :active-value="1" :inactive-value="0" />
|
||||
</el-col>
|
||||
<el-col :span="2">
|
||||
<el-switch v-model="model[index+'_bind']" :active-value="1" :inactive-value="0" />
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-form ref="ref" :model="model" :rules="rules" label-width="120px">
|
||||
<el-form-item>
|
||||
<el-button :loading="loading" @click="refresh()">刷新</el-button>
|
||||
<el-button :loading="loading" type="primary" @click="submit()">提交</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-dialog title="说明" :visible.sync="dialogFormVisible" label-width="0" center>
|
||||
<el-form :model="model">
|
||||
<el-form-item label="" prod="platform_desc">
|
||||
<div v-html="model.platform_desc" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="dialogFormVisible = false">关闭</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-card>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import screenHeight from '@/utils/screen-height'
|
||||
import { thirdInfo, thirdEdit } from '@/api/member/setting'
|
||||
|
||||
export default {
|
||||
name: 'MemberSettingThird',
|
||||
components: {},
|
||||
data() {
|
||||
return {
|
||||
name: '第三方账号设置',
|
||||
height: 680,
|
||||
loading: false,
|
||||
apps: { wx_miniapp: '微信小程序', wx_offiacc: '微信公众号', wx_website: '微信网站应用', wx_mobile: '微信移动应用', qq_miniapp: 'QQ小程序', qq_website: 'QQ网站应用', qq_mobile: 'QQ移动应用', wb_website: '微博网站应用' },
|
||||
model: {
|
||||
wx_miniapp_appid: '',
|
||||
wx_miniapp_appsecret: '',
|
||||
wx_miniapp_register: 1,
|
||||
wx_miniapp_login: 1,
|
||||
wx_miniapp_bind: 1,
|
||||
wx_offiacc_appid: '',
|
||||
wx_offiacc_appsecret: '',
|
||||
wx_offiacc_register: 1,
|
||||
wx_offiacc_login: 1,
|
||||
wx_offiacc_bind: 1,
|
||||
wx_website_appid: '',
|
||||
wx_website_appsecret: '',
|
||||
wx_owebsite_register: 1,
|
||||
wx_owebsite_login: 1,
|
||||
wx_owebsite_bind: 1,
|
||||
wx_mobile_appid: '',
|
||||
wx_mobile_appsecret: '',
|
||||
wx_mobile_register: 1,
|
||||
wx_mobile_login: 1,
|
||||
wx_mobile_bind: 1,
|
||||
qq_miniapp_appid: '',
|
||||
qq_miniapp_appsecret: '',
|
||||
qq_miniapp_register: 1,
|
||||
qq_miniapp_login: 1,
|
||||
qq_miniapp_bind: 1,
|
||||
qq_website_appid: '',
|
||||
qq_website_appsecret: '',
|
||||
qq_website_register: 1,
|
||||
qq_website_login: 1,
|
||||
qq_website_bind: 1,
|
||||
qq_mobile_appid: '',
|
||||
qq_mobile_appsecret: '',
|
||||
qq_mobile_register: 1,
|
||||
qq_mobile_login: 1,
|
||||
qq_mobile_bind: 1,
|
||||
wb_website_appid: '',
|
||||
wb_website_appsecret: '',
|
||||
wb_owebsite_register: 1,
|
||||
wb_owebsite_login: 1,
|
||||
wb_owebsite_bind: 1
|
||||
},
|
||||
rules: {},
|
||||
dialogFormVisible: false
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.height = screenHeight(170)
|
||||
this.info()
|
||||
},
|
||||
methods: {
|
||||
// 信息
|
||||
info() {
|
||||
thirdInfo().then(res => {
|
||||
this.model = res.data
|
||||
})
|
||||
},
|
||||
// 刷新
|
||||
refresh() {
|
||||
this.loading = true
|
||||
thirdInfo().then((res) => {
|
||||
this.model = res.data
|
||||
this.loading = false
|
||||
this.$message.success(res.msg)
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
// 提交
|
||||
submit() {
|
||||
this.$refs['ref'].validate(valid => {
|
||||
if (valid) {
|
||||
this.loading = true
|
||||
thirdEdit(this.model).then(res => {
|
||||
this.loading = false
|
||||
this.$message.success(res.msg)
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
|
@ -8,7 +8,7 @@
|
|||
<el-input v-model="model.token_key" type="text" clearable />
|
||||
</el-col>
|
||||
<el-col :span="16">
|
||||
修改后会员登录状态失效,需重新登录。
|
||||
修改后会员登录状态失效,需重新登录
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="Token有效时间" prop="token_exp">
|
||||
|
@ -16,7 +16,7 @@
|
|||
<el-input v-model="model.token_exp" type="number" />
|
||||
</el-col>
|
||||
<el-col :span="16">
|
||||
小时,登录后超过此时间,需重新登录。
|
||||
小时,登录后超过此时间,需重新登录
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="多端登录" prop="is_multi_login">
|
||||
|
@ -24,7 +24,7 @@
|
|||
<el-switch v-model="model.is_multi_login" :active-value="1" :inactive-value="0" />
|
||||
</el-col>
|
||||
<el-col :span="16">
|
||||
开启后可以在多个设备同时登录。
|
||||
开启后可以在多个设备同时登录
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
<el-option :value="idkey" label="ID" />
|
||||
<el-option value="group_name" label="名称" />
|
||||
<el-option value="group_desc" label="描述" />
|
||||
<el-option value="remark" label="备注" />
|
||||
<el-option value="is_default" label="默认" />
|
||||
<el-option value="is_disable" label="禁用" />
|
||||
</el-select>
|
||||
|
@ -24,7 +25,7 @@
|
|||
<el-option value="create_time" label="添加时间" />
|
||||
<el-option value="update_time" label="修改时间" />
|
||||
</el-select>
|
||||
<el-date-picker v-model="query.date_value" type="daterange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd" />
|
||||
<el-date-picker v-model="query.date_value" type="datetimerange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00','23:59:59']" value-format="yyyy-MM-dd HH:mm:ss" />
|
||||
<el-button class="filter-item" type="primary" title="查询/刷新" @click="search()">查询</el-button>
|
||||
<el-button class="filter-item" icon="el-icon-refresh" title="重置" @click="refresh()" />
|
||||
</el-col>
|
||||
|
@ -91,8 +92,9 @@
|
|||
<el-table ref="table" v-loading="loading" :data="data" :height="height" @sort-change="sort" @selection-change="select">
|
||||
<el-table-column type="selection" width="42" title="全选/反选" />
|
||||
<el-table-column :prop="idkey" label="ID" width="80" sortable="custom" />
|
||||
<el-table-column prop="group_name" label="名称" min-width="160" />
|
||||
<el-table-column prop="group_desc" label="描述" min-width="160" />
|
||||
<el-table-column prop="group_name" label="名称" min-width="160" show-overflow-tooltip />
|
||||
<el-table-column prop="group_desc" label="描述" min-width="220" show-overflow-tooltip />
|
||||
<el-table-column prop="remark" label="备注" min-width="150" show-overflow-tooltip />
|
||||
<el-table-column prop="is_default" label="默认" min-width="80" sortable="custom">
|
||||
<template slot-scope="scope">
|
||||
<el-switch v-model="scope.row.is_default" :active-value="1" :inactive-value="0" @change="defaults([scope.row])" />
|
||||
|
@ -104,8 +106,8 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="sort" label="排序" min-width="80" sortable="custom" />
|
||||
<el-table-column prop="create_time" label="添加时间" min-width="155" sortable="custom" />
|
||||
<el-table-column prop="update_time" label="修改时间" min-width="155" sortable="custom" />
|
||||
<el-table-column prop="create_time" label="添加时间" width="155" sortable="custom" />
|
||||
<el-table-column prop="update_time" label="修改时间" width="155" sortable="custom" />
|
||||
<el-table-column label="操作" width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" @click="memberShow(scope.row)">会员</el-button>
|
||||
|
@ -123,7 +125,10 @@
|
|||
<el-input v-model="model.group_name" placeholder="请输入名称" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="描述" prop="group_desc">
|
||||
<el-input v-model="model.group_desc" placeholder="请输入描述" clearable />
|
||||
<el-input v-model="model.group_desc" type="textarea" autosize placeholder="请输入描述" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="model.remark" placeholder="请输入备注" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="排序" prop="sort" placeholder="250">
|
||||
<el-input v-model="model.sort" type="number" />
|
||||
|
@ -234,7 +239,7 @@ export default {
|
|||
height: 680,
|
||||
loading: false,
|
||||
idkey: 'group_id',
|
||||
exps: [],
|
||||
exps: [{ exp: 'like', name: '包含' }],
|
||||
query: { page: 1, limit: 12, search_field: 'group_name', search_exp: 'like', date_field: 'create_time' },
|
||||
data: [],
|
||||
count: 0,
|
||||
|
@ -244,6 +249,7 @@ export default {
|
|||
group_id: '',
|
||||
group_name: '',
|
||||
group_desc: '',
|
||||
remark: '',
|
||||
sort: 250,
|
||||
api_ids: []
|
||||
},
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
<el-option v-for="(item, index) in logTypes" :key="index" :value="index" :label="item" />
|
||||
</el-select>
|
||||
<el-input v-else v-model="query.search_value" class="filter-item ya-search-value" placeholder="查询内容" clearable />
|
||||
<el-date-picker v-model="query.date_value" type="daterange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd" />
|
||||
<el-date-picker v-model="query.date_value" type="datetimerange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00','23:59:59']" value-format="yyyy-MM-dd HH:mm:ss" />
|
||||
<el-button class="filter-item" type="primary" title="查询/刷新" @click="search()">查询</el-button>
|
||||
<el-button class="filter-item" icon="el-icon-refresh" title="重置" @click="refresh()" />
|
||||
</el-col>
|
||||
|
@ -64,7 +64,7 @@
|
|||
<el-table-column prop="request_isp" label="请求ISP" min-width="105" show-overflow-tooltip />
|
||||
<el-table-column prop="response_code" label="返回码" min-width="80" show-overflow-tooltip />
|
||||
<el-table-column prop="response_msg" label="返回描述" min-width="120" show-overflow-tooltip />
|
||||
<el-table-column prop="create_time" label="请求时间" min-width="155" sortable="custom" />
|
||||
<el-table-column prop="create_time" label="请求时间" width="155" sortable="custom" />
|
||||
<el-table-column label="操作" width="85">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" @click="info(scope.row)">详情</el-button>
|
||||
|
@ -117,7 +117,7 @@
|
|||
<el-input v-model="model.response_msg" />
|
||||
</el-form-item>
|
||||
<el-form-item label="用户代理" prop="user_agent">
|
||||
<el-input v-model="model.user_agent" type="textarea" />
|
||||
<el-input v-model="model.user_agent" type="textarea" autosize />
|
||||
</el-form-item>
|
||||
<el-form-item label="请求参数" prop="request_param">
|
||||
<el-button type="text" icon="el-icon-copy-document" title="复制参数" @click="requestParamCopy($event)" />
|
||||
|
@ -149,7 +149,7 @@ export default {
|
|||
height: 680,
|
||||
loading: false,
|
||||
idkey: 'log_id',
|
||||
exps: [],
|
||||
exps: [{ exp: 'like', name: '包含' }],
|
||||
query: { page: 1, limit: 12, search_field: 'member_id', search_exp: 'like', date_field: 'create_time' },
|
||||
data: [],
|
||||
count: 0,
|
||||
|
|
|
@ -19,8 +19,8 @@
|
|||
<el-option value="name" label="姓名" />
|
||||
<el-option value="gender" label="性别" />
|
||||
<el-option value="region_id" label="所在地" />
|
||||
<el-option value="reg_channel" label="注册渠道" />
|
||||
<el-option value="reg_type" label="注册方式" />
|
||||
<el-option value="platform" label="注册平台" />
|
||||
<el-option value="application" label="注册应用" />
|
||||
</el-select>
|
||||
<el-select v-model="query.search_exp" class="filter-item ya-search-exp">
|
||||
<el-option v-for="exp in exps" :key="exp.exp" :value="exp.exp" :label="exp.name" />
|
||||
|
@ -35,12 +35,12 @@
|
|||
<el-option :value="1" label="是" />
|
||||
<el-option :value="0" label="否" />
|
||||
</el-select>
|
||||
<el-select v-else-if="query.search_field==='reg_channel'" v-model="query.search_value" class="filter-item ya-search-value" clearable>
|
||||
<el-option v-for="(item,index) in reg_channels" :key="index" :label="item" :value="index" />
|
||||
<el-select v-else-if="query.search_field==='application'" v-model="query.search_value" class="filter-item ya-search-value" clearable>
|
||||
<el-option v-for="(item,index) in applications" :key="index" :label="item" :value="index" />
|
||||
</el-select>
|
||||
<el-cascader v-else-if="query.search_field==='region_id'" v-model="query.search_value" class="filter-item ya-search-value" :options="regionData" :props="regionQueryProps" clearable filterable collapse-tags />
|
||||
<el-select v-else-if="query.search_field==='reg_type'" v-model="query.search_value" class="filter-item ya-search-value" clearable>
|
||||
<el-option v-for="(item,index) in reg_types" :key="index" :label="item" :value="index" />
|
||||
<el-select v-else-if="query.search_field==='platform'" v-model="query.search_value" class="filter-item ya-search-value" clearable>
|
||||
<el-option v-for="(item,index) in platforms" :key="index" :label="item" :value="index" />
|
||||
</el-select>
|
||||
<el-select v-else-if="query.search_field==='gender'" v-model="query.search_value" class="filter-item ya-search-value" clearable>
|
||||
<el-option v-for="(item,index) in genders" :key="index" :label="item" :value="index" />
|
||||
|
@ -51,7 +51,7 @@
|
|||
<el-option value="login_time" label="登录时间" />
|
||||
<el-option value="update_time" label="修改时间" />
|
||||
</el-select>
|
||||
<el-date-picker v-model="query.date_value" type="daterange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd" />
|
||||
<el-date-picker v-model="query.date_value" type="datetimerange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00','23:59:59']" value-format="yyyy-MM-dd HH:mm:ss" />
|
||||
<el-button class="filter-item" type="primary" title="查询/刷新" @click="search()">查询</el-button>
|
||||
<el-button class="filter-item" icon="el-icon-refresh" title="重置" @click="refresh()" />
|
||||
</el-col>
|
||||
|
@ -158,7 +158,7 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="sort" label="排序" width="75" sortable="custom" />
|
||||
<el-table-column prop="create_time" label="注册时间" min-width="155" sortable="custom" />
|
||||
<el-table-column prop="create_time" label="注册时间" width="155" sortable="custom" />
|
||||
<el-table-column label="操作" width="90">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" @click="edit(scope.row)">修改</el-button>
|
||||
|
@ -171,125 +171,181 @@
|
|||
<!-- 添加修改 -->
|
||||
<el-dialog :title="dialogTitle" :visible.sync="dialog" top="5vh" :before-close="cancel" :close-on-click-modal="false" :close-on-press-escape="false">
|
||||
<el-form ref="ref" :model="model" :rules="rules" label-width="100px" class="dialog-body" :style="{height:height+'px'}">
|
||||
<el-form-item label="头像" prop="avatar_url">
|
||||
<el-col :span="12" style="height:100px">
|
||||
<el-image style="width:100px;height:100px;border-radius:50%;" :src="model.avatar_url" :preview-src-list="[model.avatar_url]" fit="contain" title="点击看大图">
|
||||
<div slot="error" class="image-slot">
|
||||
<el-avatar :size="100" icon="el-icon-user-solid" />
|
||||
</div>
|
||||
</el-image>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-button size="mini" @click="fileUpload()">上传头像</el-button>
|
||||
<el-button size="mini" @click="fileDelete()">删除</el-button>
|
||||
<p>图片小于 200 KB,jpg、png格式。</p>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="昵称" prop="nickname">
|
||||
<el-input key="nickname" v-model="model.nickname" placeholder="请输入昵称" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.nickname, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="用户名" prop="username">
|
||||
<el-input key="username" v-model="model.username" placeholder="请输入用户名" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.username, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model.member_id==''" label="密码" prop="password">
|
||||
<el-input key="password" v-model="model.password" placeholder="请输入密码" clearable show-password />
|
||||
</el-form-item>
|
||||
<el-form-item label="手机" prop="phone">
|
||||
<el-input v-model="model.phone" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.phone, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="邮箱" prop="email">
|
||||
<el-input v-model="model.email" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.email, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="姓名" prop="name">
|
||||
<el-input v-model="model.name" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.name, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="性别" prop="gender">
|
||||
<el-select v-model="model.gender">
|
||||
<el-option v-for="(item,index) in genders" :key="index" :label="item" :value="index" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="标签" prop="tag_ids">
|
||||
<el-select v-model="model.tag_ids" class="ya-width-100p" multiple clearable filterable>
|
||||
<el-option v-for="item in tagData" :key="item.tag_id" :label="item.tag_name" :value="item.tag_id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="分组" prop="group_ids">
|
||||
<el-select v-model="model.group_ids" class="ya-width-100p" clearable filterable multiple>
|
||||
<el-option v-for="item in groupData" :key="item.group_id" :label="item.group_name" :value="item.group_id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="所在地" prop="region_id">
|
||||
<el-cascader v-model="model.region_id" class="ya-width-100p" :options="regionData" :props="regionProps" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="排序" prop="sort">
|
||||
<el-input v-model="model.sort" type="number" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="model.remark" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model[idkey]" label="openid" prop="openid">
|
||||
<el-input v-model="model.openid" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model[idkey]" label="unionid" prop="unionid">
|
||||
<el-input v-model="model.unionid" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model[idkey]" label="注册时间" prop="create_time">
|
||||
<el-input v-model="model.create_time" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model[idkey]" label="修改时间" prop="update_time">
|
||||
<el-input v-model="model.update_time" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model.delete_time" label="删除时间" prop="delete_time">
|
||||
<el-input v-model="model.delete_time" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model[idkey]" label="登录时间" prop="login_time">
|
||||
<el-input v-model="model.login_time" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model[idkey]" label="登录地区" prop="login_region">
|
||||
<el-input v-model="model.login_region" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model[idkey]" label="注册渠道" prop="reg_channel_name">
|
||||
<el-input v-model="model.reg_channel_name" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model[idkey]" label="注册方式" prop="reg_type_name">
|
||||
<el-input v-model="model.reg_type_name" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model[idkey]" label="接口(权限)" prop="api_ids">
|
||||
<span>
|
||||
<el-checkbox v-model="apiExpandAll" @change="apiExpandAllChange">展开</el-checkbox>
|
||||
</span>
|
||||
<el-tree ref="apiRef" :data="model.api_tree" :props="apiProps" :default-checked-keys="model.api_ids" :expand-on-click-node="true" :default-expand-all="false" :check-strictly="true" node-key="api_id" highlight-current>
|
||||
<span slot-scope="scope" class="custom-tree-node">
|
||||
<span>{{ scope.node.label }}<i v-if="scope.data.is_check" class="el-icon-check" style="color:#1890ff" title="已分配" /></span>
|
||||
<el-tabs>
|
||||
<el-tab-pane label="基础信息">
|
||||
<el-form-item label="头像" prop="avatar_url">
|
||||
<el-col :span="12" style="height:100px">
|
||||
<el-image style="width:100px;height:100px;border-radius:50%;" :src="model.avatar_url" :preview-src-list="[model.avatar_url]" fit="contain" title="点击看大图">
|
||||
<div slot="error" class="image-slot">
|
||||
<el-avatar :size="100" icon="el-icon-user-solid" />
|
||||
</div>
|
||||
</el-image>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-button size="mini" @click="fileUpload()">上传头像</el-button>
|
||||
<el-button size="mini" @click="fileDelete()">删除</el-button>
|
||||
<p>图片小于 200 KB,jpg、png格式。</p>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="昵称" prop="nickname">
|
||||
<el-input key="nickname" v-model="model.nickname" placeholder="请输入昵称" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.nickname, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="用户名" prop="username">
|
||||
<el-input key="username" v-model="model.username" placeholder="请输入用户名" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.username, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model.member_id==''" label="密码" prop="password">
|
||||
<el-input key="password" v-model="model.password" placeholder="请输入密码" clearable show-password />
|
||||
</el-form-item>
|
||||
<el-form-item label="手机" prop="phone">
|
||||
<el-input v-model="model.phone" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.phone, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="邮箱" prop="email">
|
||||
<el-input v-model="model.email" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.email, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="姓名" prop="name">
|
||||
<el-input v-model="model.name" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.name, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="性别" prop="gender">
|
||||
<el-select v-model="model.gender">
|
||||
<el-option v-for="(item,index) in genders" :key="index" :label="item" :value="index" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="所在地" prop="region_id">
|
||||
<el-cascader v-model="model.region_id" class="ya-width-100p" :options="regionData" :props="regionProps" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="排序" prop="sort">
|
||||
<el-input v-model="model.sort" type="number" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="model.remark" clearable />
|
||||
</el-form-item>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="权限信息">
|
||||
<el-form-item label="超会" prop="is_super">
|
||||
<el-switch v-model="model.is_super" :active-value="1" :inactive-value="0" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item label="禁用" prop="is_disable">
|
||||
<el-switch v-model="model.is_disable" :active-value="1" :inactive-value="0" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item label="标签" prop="tag_ids">
|
||||
<el-select v-model="model.tag_ids" class="ya-width-100p" multiple clearable filterable>
|
||||
<el-option v-for="item in tagData" :key="item.tag_id" :label="item.tag_name" :value="item.tag_id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="分组(角色)" prop="group_ids">
|
||||
<el-select v-model="model.group_ids" class="ya-width-100p" clearable filterable multiple>
|
||||
<el-option v-for="item in groupData" :key="item.group_id" :label="item.group_name" :value="item.group_id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model[idkey]" label="接口(权限)" prop="api_ids">
|
||||
<span>
|
||||
<i v-if="scope.data.api_url" class="el-icon-link" style="margin-left:10px" :title="scope.data.api_url" />
|
||||
<i v-else class="el-icon-link" style="margin-left:10px;color:#fff" />
|
||||
<i v-if="scope.data.is_group" class="el-icon-s-custom" style="margin-left:10px" title="分组" />
|
||||
<i v-else class="el-icon-s-custom" style="margin-left:10px;color:#fff" />
|
||||
<i v-if="scope.data.is_unauth" class="el-icon-unlock" style="margin-left:10px;" title="免权" />
|
||||
<i v-else class="el-icon-unlock" style="margin-left:10px;color:#fff" />
|
||||
<i v-if="scope.data.is_unlogin" class="el-icon-user" style="margin-left:10px;" title="免登" />
|
||||
<i v-else class="el-icon-user" style="margin-left:10px;color:#fff" />
|
||||
<el-checkbox v-model="apiExpandAll" @change="apiExpandAllChange">展开</el-checkbox>
|
||||
</span>
|
||||
</span>
|
||||
</el-tree>
|
||||
</el-form-item>
|
||||
<el-tree ref="apiRef" :data="model.api_tree" :props="apiProps" :default-checked-keys="model.api_ids" :expand-on-click-node="true" :default-expand-all="false" :check-strictly="true" node-key="api_id" highlight-current>
|
||||
<span slot-scope="scope" class="custom-tree-node">
|
||||
<span>{{ scope.node.label }}<i v-if="scope.data.is_check" class="el-icon-check" style="color:#1890ff" title="已分配" /></span>
|
||||
<span>
|
||||
<i v-if="scope.data.api_url" class="el-icon-link" style="margin-left:10px" :title="scope.data.api_url" />
|
||||
<i v-else class="el-icon-link" style="margin-left:10px;color:#fff" />
|
||||
<i v-if="scope.data.is_group" class="el-icon-s-custom" style="margin-left:10px" title="分组" />
|
||||
<i v-else class="el-icon-s-custom" style="margin-left:10px;color:#fff" />
|
||||
<i v-if="scope.data.is_unauth" class="el-icon-unlock" style="margin-left:10px;" title="免权" />
|
||||
<i v-else class="el-icon-unlock" style="margin-left:10px;color:#fff" />
|
||||
<i v-if="scope.data.is_unlogin" class="el-icon-user" style="margin-left:10px;" title="免登" />
|
||||
<i v-else class="el-icon-user" style="margin-left:10px;color:#fff" />
|
||||
</span>
|
||||
</span>
|
||||
</el-tree>
|
||||
</el-form-item>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="其它信息">
|
||||
<el-form-item v-if="model[idkey]" label="登录IP" prop="login_ip">
|
||||
<el-input v-model="model.login_ip" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model[idkey]" label="登录地区" prop="login_region">
|
||||
<el-input v-model="model.login_region" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model[idkey]" label="登录时间" prop="login_time">
|
||||
<el-input v-model="model.login_time" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model[idkey]" label="登录次数" prop="login_num">
|
||||
<el-input v-model="model.login_num" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model[idkey]" label="注册平台" prop="platform_name">
|
||||
<el-input v-model="model.platform_name" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model[idkey]" label="注册应用" prop="application_name">
|
||||
<el-input v-model="model.application_name" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model[idkey]" label="注册时间" prop="create_time">
|
||||
<el-input v-model="model.create_time" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model[idkey]" label="修改时间" prop="update_time">
|
||||
<el-input v-model="model.update_time" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model[idkey]" label="退出时间" prop="logout_time">
|
||||
<el-input v-model="model.logout_time" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model.delete_time" label="删除时间" prop="delete_time">
|
||||
<el-input v-model="model.delete_time" disabled />
|
||||
</el-form-item>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="第三方账号">
|
||||
<el-table v-if="model[idkey]" :data="model.thirds">
|
||||
<el-table-column prop="third_id" label="ID" width="80" />
|
||||
<el-table-column prop="headimgurl" label="头像" min-width="50">
|
||||
<template slot-scope="scope">
|
||||
<div style="height:25px">
|
||||
<el-image v-if="scope.row.headimgurl" style="width:25px;height:25px;border-radius:50%;" :src="scope.row.headimgurl" :preview-src-list="[scope.row.headimgurl]" fit="contain" title="点击看大图">
|
||||
<div slot="error" class="image-slot">
|
||||
<el-avatar :size="25" icon="el-icon-user-solid" />
|
||||
</div>
|
||||
</el-image>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="nickname" label="昵称" min-width="100" show-overflow-tooltip />
|
||||
<el-table-column prop="platform_name" label="平台" min-width="80" show-overflow-tooltip />
|
||||
<el-table-column prop="application_name" label="应用" min-width="110" show-overflow-tooltip />
|
||||
<el-table-column prop="is_disable" label="禁用" min-width="75">
|
||||
<template slot-scope="scope">
|
||||
<el-switch v-model="scope.row.is_disable" :loading="thirdUnbindLoad" :active-value="1" :inactive-value="0" @change="thirdDisable(scope.row)" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="create_time" label="添加/绑定时间" min-width="155" />
|
||||
<el-table-column prop="login_time" label="登录时间" width="155" />
|
||||
<el-table-column label="操作" width="75">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" @click="thirdUnbindBtn(scope.row)">解绑</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button :loading="loading" @click="cancel">取消</el-button>
|
||||
<el-button :loading="loading" type="primary" @click="submit">提交</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<!-- 第三方账号解绑 -->
|
||||
<el-dialog title="会员第三方账号解绑" :visible.sync="thirdUnbindDialog" width="25%" top="20vh">
|
||||
<span style="color:#ff0000">解绑后该会员无法再通过该第三方账号登录,确定要解绑吗?</span>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button :loading="thirdUnbindLoad" @click="thirdUnbindDialog=false">取消</el-button>
|
||||
<el-button :loading="thirdUnbindLoad" type="primary" @click="thirdUnbindSubmit">确定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
<!-- 文件管理 -->
|
||||
<el-dialog title="上传头像" :visible.sync="fileDialog" width="80%" top="1vh" :close-on-click-modal="false" :close-on-press-escape="false">
|
||||
<file-manage file-type="image" @fileCancel="fileCancel" @fileSubmit="fileSubmit" />
|
||||
|
@ -316,7 +372,7 @@ export default {
|
|||
height: 680,
|
||||
loading: false,
|
||||
idkey: 'member_id',
|
||||
exps: [],
|
||||
exps: [{ exp: 'like', name: '包含' }],
|
||||
query: { page: 1, limit: 12, search_field: 'nickname', search_exp: 'like', date_field: 'create_time' },
|
||||
data: [],
|
||||
count: 0,
|
||||
|
@ -338,7 +394,8 @@ export default {
|
|||
region_id: '',
|
||||
remark: '',
|
||||
sort: 250,
|
||||
api_ids: []
|
||||
api_ids: [],
|
||||
thirds: []
|
||||
},
|
||||
rules: {
|
||||
nickname: [{ required: true, message: '请输入昵称', trigger: 'blur' }],
|
||||
|
@ -346,8 +403,8 @@ export default {
|
|||
password: [{ required: true, message: '请输入密码', trigger: 'blur' }]
|
||||
},
|
||||
genders: [],
|
||||
reg_channels: [],
|
||||
reg_types: [],
|
||||
platforms: [],
|
||||
applications: [],
|
||||
regionData: [],
|
||||
regionProps: { checkStrictly: true, value: 'region_id', label: 'region_name', emitPath: false },
|
||||
regionQueryProps: { checkStrictly: true, value: 'region_id', label: 'region_name', multiple: true, emitPath: false },
|
||||
|
@ -370,7 +427,10 @@ export default {
|
|||
exportAutoWidth: false,
|
||||
apiProps: { label: 'api_name', children: 'children' },
|
||||
apiCheckAll: false,
|
||||
apiExpandAll: false
|
||||
apiExpandAll: false,
|
||||
thirdUnbindDialog: false,
|
||||
thirdUnbindModel: {},
|
||||
thirdUnbindLoad: false
|
||||
}
|
||||
},
|
||||
created() {
|
||||
|
@ -386,8 +446,8 @@ export default {
|
|||
this.data = res.data.list
|
||||
this.count = res.data.count
|
||||
this.genders = res.data.genders
|
||||
this.reg_channels = res.data.reg_channels
|
||||
this.reg_types = res.data.reg_types
|
||||
this.platforms = res.data.platforms
|
||||
this.applications = res.data.applications
|
||||
this.regionData = res.data.region
|
||||
this.tagData = res.data.tag
|
||||
this.groupData = res.data.group
|
||||
|
@ -420,6 +480,8 @@ export default {
|
|||
this.$refs['ref'].validate(valid => {
|
||||
if (valid) {
|
||||
this.loading = true
|
||||
this.model.api_tree = []
|
||||
this.model.thirds = []
|
||||
if (this.model[this.idkey]) {
|
||||
edit(this.model).then(res => {
|
||||
this.list()
|
||||
|
@ -652,7 +714,7 @@ export default {
|
|||
}
|
||||
},
|
||||
// 是否禁用
|
||||
disable(row, select = false) {
|
||||
disable(row, select = false, type = 'member') {
|
||||
if (!row.length) {
|
||||
this.selectAlert()
|
||||
} else {
|
||||
|
@ -747,6 +809,53 @@ export default {
|
|||
this.model.avatar_id = 0
|
||||
this.model.avatar_url = ''
|
||||
},
|
||||
// 解绑第三方账号
|
||||
thirdUnbindBtn(row) {
|
||||
this.thirdUnbindDialog = true
|
||||
this.thirdUnbindModel = row
|
||||
},
|
||||
thirdUnbindSubmit() {
|
||||
const row = this.thirdUnbindModel
|
||||
if (!row) {
|
||||
this.$alert('请选择需要操作的' + this.name + '第三方账号', '提示', { type: 'warning', callback: action => { } })
|
||||
} else {
|
||||
this.thirdUnbindLoad = true
|
||||
dele({
|
||||
ids: [row.third_id],
|
||||
type: 'third'
|
||||
}).then(res => {
|
||||
var id = {}
|
||||
id[this.idkey] = row[this.idkey]
|
||||
info(id).then(res => {
|
||||
this.model.thirds = res.data.thirds
|
||||
}).catch(() => { })
|
||||
this.thirdUnbindLoad = false
|
||||
this.thirdUnbindDialog = false
|
||||
this.$message.success(res.msg)
|
||||
}).catch(() => {
|
||||
this.thirdUnbindLoad = false
|
||||
})
|
||||
}
|
||||
},
|
||||
// 第三方账号是否禁用
|
||||
thirdDisable(row) {
|
||||
var id = {}
|
||||
id[this.idkey] = row[this.idkey]
|
||||
disable({
|
||||
ids: [row.third_id],
|
||||
is_disable: row.is_disable,
|
||||
type: 'third'
|
||||
}).then(res => {
|
||||
info(id).then(res => {
|
||||
this.model.thirds = res.data.thirds
|
||||
}).catch(() => { })
|
||||
this.$message.success(res.msg)
|
||||
}).catch(() => {
|
||||
info(id).then(res => {
|
||||
this.model.thirds = res.data.thirds
|
||||
}).catch(() => { })
|
||||
})
|
||||
},
|
||||
// 复制
|
||||
copy(text, event) {
|
||||
clip(text, event)
|
||||
|
|
|
@ -1,6 +1,15 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<el-tabs>
|
||||
<el-tab-pane v-if="checkPermission(['admin/member.Setting/memberInfo'])" label="会员设置" lazy>
|
||||
<setting-member />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane v-if="checkPermission(['admin/member.Setting/logregInfo'])" label="登录注册设置" lazy>
|
||||
<setting-logreg />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane v-if="checkPermission(['admin/member.Setting/thirdInfo'])" label="第三方账号设置" lazy>
|
||||
<setting-third />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane v-if="checkPermission(['admin/member.Setting/captchaInfo'])" label="验证码设置" lazy>
|
||||
<setting-captcha />
|
||||
</el-tab-pane>
|
||||
|
@ -13,28 +22,23 @@
|
|||
<el-tab-pane v-if="checkPermission(['admin/member.Setting/apiInfo'])" label="接口设置" lazy>
|
||||
<setting-api />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane v-if="checkPermission(['admin/member.Setting/logregInfo'])" label="登录注册设置" lazy>
|
||||
<setting-logreg />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane v-if="checkPermission(['admin/member.Setting/diyInfo'])" label="自定义设置" lazy>
|
||||
<setting-diy />
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import checkPermission from '@/utils/permission' // 权限判断函数
|
||||
import SettingToken from './components/SettingToken'
|
||||
import SettingApi from './components/SettingApi'
|
||||
import SettingCaptcha from './components/SettingCaptcha'
|
||||
import SettingLog from './components/SettingLog'
|
||||
import SettingApi from './components/SettingApi'
|
||||
import SettingLogreg from './components/SettingLogreg'
|
||||
import SettingDiy from './components/SettingDiy'
|
||||
import SettingMember from './components/SettingMember'
|
||||
import SettingThird from './components/SettingThird'
|
||||
import SettingToken from './components/SettingToken'
|
||||
|
||||
export default {
|
||||
name: 'MemberSetting',
|
||||
components: { SettingToken, SettingCaptcha, SettingLog, SettingApi, SettingLogreg, SettingDiy },
|
||||
components: { SettingApi, SettingCaptcha, SettingLog, SettingLogreg, SettingMember, SettingThird, SettingToken },
|
||||
data() {
|
||||
return {
|
||||
name: '会员设置'
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
<el-option :value="idkey" label="ID" />
|
||||
<el-option value="tag_name" label="名称" />
|
||||
<el-option value="tag_desc" label="描述" />
|
||||
<el-option value="remark" label="备注" />
|
||||
<el-option value="is_disable" label="禁用" />
|
||||
</el-select>
|
||||
<el-select v-model="query.search_exp" class="filter-item ya-search-exp">
|
||||
|
@ -23,7 +24,7 @@
|
|||
<el-option value="create_time" label="添加时间" />
|
||||
<el-option value="update_time" label="修改时间" />
|
||||
</el-select>
|
||||
<el-date-picker v-model="query.date_value" type="daterange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd" />
|
||||
<el-date-picker v-model="query.date_value" type="datetimerange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00','23:59:59']" value-format="yyyy-MM-dd HH:mm:ss" />
|
||||
<el-button class="filter-item" type="primary" title="查询/刷新" @click="search()">查询</el-button>
|
||||
<el-button class="filter-item" icon="el-icon-refresh" title="重置" @click="refresh()" />
|
||||
</el-col>
|
||||
|
@ -62,16 +63,17 @@
|
|||
<el-table ref="table" v-loading="loading" :data="data" :height="height" @sort-change="sort" @selection-change="select">
|
||||
<el-table-column type="selection" width="42" title="全选/反选" />
|
||||
<el-table-column :prop="idkey" label="ID" width="80" sortable="custom" />
|
||||
<el-table-column prop="tag_name" label="名称" min-width="200" show-overflow-tooltip />
|
||||
<el-table-column prop="tag_desc" label="描述" min-width="200" show-overflow-tooltip />
|
||||
<el-table-column prop="tag_name" label="名称" min-width="160" show-overflow-tooltip />
|
||||
<el-table-column prop="tag_desc" label="描述" min-width="220" show-overflow-tooltip />
|
||||
<el-table-column prop="remark" label="备注" min-width="150" show-overflow-tooltip />
|
||||
<el-table-column prop="is_disable" label="禁用" min-width="80" sortable="custom">
|
||||
<template slot-scope="scope">
|
||||
<el-switch v-model="scope.row.is_disable" :active-value="1" :inactive-value="0" @change="disable([scope.row])" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="sort" label="排序" min-width="80" sortable="custom" />
|
||||
<el-table-column prop="create_time" label="添加时间" min-width="155" sortable="custom" />
|
||||
<el-table-column prop="update_time" label="修改时间" min-width="155" sortable="custom" />
|
||||
<el-table-column prop="create_time" label="添加时间" width="155" sortable="custom" />
|
||||
<el-table-column prop="update_time" label="修改时间" width="155" sortable="custom" />
|
||||
<el-table-column label="操作" width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" @click="memberShow(scope.row)">会员</el-button>
|
||||
|
@ -89,7 +91,10 @@
|
|||
<el-input v-model="model.tag_name" placeholder="请输入名称" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="描述" prop="tag_desc">
|
||||
<el-input v-model="model.tag_desc" placeholder="请输入描述" clearable />
|
||||
<el-input v-model="model.tag_desc" type="textarea" autosize placeholder="请输入描述" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="model.remark" placeholder="请输入备注" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="排序" prop="sort">
|
||||
<el-input v-model="model.sort" type="number" />
|
||||
|
@ -178,7 +183,7 @@ export default {
|
|||
height: 680,
|
||||
loading: false,
|
||||
idkey: 'tag_id',
|
||||
exps: [],
|
||||
exps: [{ exp: 'like', name: '包含' }],
|
||||
query: { page: 1, limit: 12, search_field: 'tag_name', search_exp: 'like', date_field: 'create_time' },
|
||||
data: [],
|
||||
count: 0,
|
||||
|
@ -188,6 +193,7 @@ export default {
|
|||
tag_id: '',
|
||||
tag_name: '',
|
||||
tag_desc: '',
|
||||
remark: '',
|
||||
sort: 250
|
||||
},
|
||||
rules: {
|
||||
|
|
|
@ -0,0 +1,436 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<!-- 查询操作 -->
|
||||
<div class="filter-container">
|
||||
<!-- 查询 -->
|
||||
<el-row>
|
||||
<el-col>
|
||||
<el-select v-model="query.search_field" class="filter-item ya-search-field" placeholder="查询字段">
|
||||
<el-option :value="idkey" label="ID" />
|
||||
<el-option value="member_id" label="会员ID" />
|
||||
<el-option value="nickname" label="昵称" />
|
||||
<el-option value="platform" label="平台" />
|
||||
<el-option value="application" label="应用" />
|
||||
<el-option value="remark" label="备注" />
|
||||
<el-option value="is_disable" label="禁用" />
|
||||
<el-option value="unionid" label="unionid" />
|
||||
<el-option value="openid" label="openid" />
|
||||
</el-select>
|
||||
<el-select v-model="query.search_exp" class="filter-item ya-search-exp">
|
||||
<el-option v-for="exp in exps" :key="exp.exp" :value="exp.exp" :label="exp.name" />
|
||||
</el-select>
|
||||
<el-select v-if="query.search_field==='is_disable'" v-model="query.search_value" class="filter-item ya-search-value">
|
||||
<el-option :value="1" label="是" />
|
||||
<el-option :value="0" label="否" />
|
||||
</el-select>
|
||||
<el-select v-else-if="query.search_field==='platform'" v-model="query.search_value" class="filter-item ya-search-value">
|
||||
<el-option v-for="platform in platforms" :key="platform.value" :value="platform.value" :label="platform.label" />
|
||||
</el-select>
|
||||
<el-select v-else-if="query.search_field==='application'" v-model="query.search_value" class="filter-item ya-search-value">
|
||||
<el-option v-for="application in applications" :key="application.value" :value="application.value" :label="application.label" />
|
||||
</el-select>
|
||||
<el-input v-else v-model="query.search_value" class="filter-item ya-search-value" placeholder="查询内容" clearable />
|
||||
<el-select v-model="query.date_field" class="filter-item ya-date-field" placeholder="时间类型">
|
||||
<el-option value="create_time" label="添加时间" />
|
||||
<el-option value="update_time" label="修改时间" />
|
||||
<el-option value="login_time" label="登录时间" />
|
||||
</el-select>
|
||||
<el-date-picker v-model="query.date_value" type="datetimerange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00','23:59:59']" value-format="yyyy-MM-dd HH:mm:ss" />
|
||||
<el-button class="filter-item" type="primary" title="查询/刷新" @click="search()">查询</el-button>
|
||||
<el-button class="filter-item" icon="el-icon-refresh" title="重置" @click="refresh()" />
|
||||
</el-col>
|
||||
</el-row>
|
||||
<!-- 选中操作 -->
|
||||
<el-row>
|
||||
<el-col>
|
||||
<el-button title="是否禁用" @click="selectOpen('disable')">禁用</el-button>
|
||||
<el-button title="删除" @click="selectOpen('dele')">删除</el-button>
|
||||
<el-button type="primary" @click="add()">添加</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-dialog :title="selectTitle" :visible.sync="selectDialog" top="20vh" :close-on-click-modal="false" :close-on-press-escape="false">
|
||||
<el-form ref="selectRef" label-width="120px">
|
||||
<el-form-item :label="name+'ID'" prop="">
|
||||
<el-input v-model="selectIds" type="textarea" :autosize="{minRows: 5, maxRows: 12}" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="selectType==='disable'" label="是否禁用" prop="">
|
||||
<el-switch v-model="is_disable" :active-value="1" :inactive-value="0" />
|
||||
</el-form-item>
|
||||
<el-form-item v-else-if="selectType==='dele'" label="" prop="">
|
||||
<span style="color:red">确定要删除选中的{{ name }}吗?</span>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="selectCancel">取消</el-button>
|
||||
<el-button type="primary" @click="selectSubmit">提交</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
<!-- 列表 -->
|
||||
<el-table ref="table" v-loading="loading" :data="data" :height="height" @sort-change="sort" @selection-change="select">
|
||||
<el-table-column type="selection" width="42" title="全选/反选" />
|
||||
<el-table-column :prop="idkey" label="ID" width="80" sortable="custom" />
|
||||
<el-table-column prop="member_id" label="会员ID" width="100" sortable="custom" />
|
||||
<el-table-column prop="member_nickname" label="会员昵称" min-width="135" show-overflow-tooltip />
|
||||
<el-table-column prop="member_username" label="会员用户名" min-width="135" show-overflow-tooltip />
|
||||
<el-table-column prop="headimgurl" label="头像" min-width="50">
|
||||
<template slot-scope="scope">
|
||||
<div style="height:25px">
|
||||
<el-image v-if="scope.row.headimgurl" style="width:25px;height:25px;border-radius:50%;" :src="scope.row.headimgurl" :preview-src-list="[scope.row.headimgurl]" fit="contain" title="点击看大图">
|
||||
<div slot="error" class="image-slot">
|
||||
<el-avatar :size="25" icon="el-icon-user-solid" />
|
||||
</div>
|
||||
</el-image>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="nickname" label="昵称" min-width="135" show-overflow-tooltip />
|
||||
<el-table-column prop="platform_name" label="平台" min-width="80" show-overflow-tooltip />
|
||||
<el-table-column prop="application_name" label="应用" min-width="120" show-overflow-tooltip />
|
||||
<el-table-column prop="is_disable" label="禁用" min-width="75" sortable="custom">
|
||||
<template slot-scope="scope">
|
||||
<el-switch v-model="scope.row.is_disable" :active-value="1" :inactive-value="0" @change="disable([scope.row])" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="create_time" label="添加/绑定时间" min-width="155" />
|
||||
<el-table-column prop="update_time" label="修改时间" min-width="155" />
|
||||
<el-table-column prop="login_time" label="登录时间" width="155" />
|
||||
<el-table-column label="操作" width="90">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" @click="edit(scope.row)">修改</el-button>
|
||||
<el-button size="mini" type="text" title="解绑" @click="selectOpen('dele',scope.row)">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
<pagination v-show="count>0" :total="count" :page.sync="query.page" :limit.sync="query.limit" @pagination="list" />
|
||||
<!-- 添加修改 -->
|
||||
<el-dialog :title="dialogTitle" :visible.sync="dialog" top="5vh" :before-close="cancel" :close-on-click-modal="false" :close-on-press-escape="false">
|
||||
<el-form ref="ref" :rules="rules" :model="model" label-width="100px" class="dialog-body" :style="{height:height+'px'}">
|
||||
<el-form-item label="会员ID" prop="member_id">
|
||||
<el-input v-model="model.member_id" type="number" placeholder="请输入会员ID" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="平台" prop="platform">
|
||||
<el-select v-model="model.platform">
|
||||
<el-option v-for="platform in platforms" :key="platform.value" :value="platform.value" :label="platform.label" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="应用" prop="application">
|
||||
<el-select v-model="model.application">
|
||||
<el-option v-for="application in applications" :key="application.value" :value="application.value" :label="application.label" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="unionid" prop="unionid">
|
||||
<el-input v-model="model.unionid" placeholder="请输入unionid" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="openid" prop="openid">
|
||||
<el-input v-model="model.openid" placeholder="请输入openid" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="头像" prop="headimgurl">
|
||||
<el-input v-model="model.headimgurl" placeholder="请输入头像链接或上传头像" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="" prop="headimgurl">
|
||||
<el-col :span="12" style="height:100px">
|
||||
<el-image style="width:100px;height:100px;border-radius:50%;" :src="model.headimgurl" :preview-src-list="[model.headimgurl]" fit="contain" title="点击看大图">
|
||||
<div slot="error" class="image-slot">
|
||||
<el-avatar :size="100" icon="el-icon-user-solid" />
|
||||
</div>
|
||||
</el-image>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-button size="mini" @click="fileUpload()">上传头像</el-button>
|
||||
<el-button size="mini" @click="fileDelete()">删除</el-button>
|
||||
<p>图片小于 200 KB,jpg、png格式。</p>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="昵称" prop="nickname">
|
||||
<el-input v-model="model.nickname" placeholder="请输入昵称" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="model.remark" placeholder="请输入备注" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model[idkey]" label="登录IP" prop="login_ip">
|
||||
<el-input v-model="model.login_ip" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model[idkey]" label="登录地区" prop="login_region">
|
||||
<el-input v-model="model.login_region" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model[idkey]" label="登录时间" prop="login_time">
|
||||
<el-input v-model="model.login_time" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model[idkey]" label="登录次数" prop="login_num">
|
||||
<el-input v-model="model.login_num" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model[idkey]" label="添加/绑定时间" prop="create_time">
|
||||
<el-input v-model="model.create_time" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model[idkey]" label="修改时间" prop="update_time">
|
||||
<el-input v-model="model.update_time" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model.delete_time" label="删除时间" prop="delete_time">
|
||||
<el-input v-model="model.delete_time" disabled />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button :loading="loading" @click="cancel">取消</el-button>
|
||||
<el-button :loading="loading" type="primary" @click="submit">提交</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<!-- 文件管理 -->
|
||||
<el-dialog title="上传头像" :visible.sync="fileDialog" width="80%" top="1vh" :close-on-click-modal="false" :close-on-press-escape="false">
|
||||
<file-manage file-type="image" @fileCancel="fileCancel" @fileSubmit="fileSubmit" />
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import screenHeight from '@/utils/screen-height'
|
||||
import Pagination from '@/components/Pagination'
|
||||
import FileManage from '@/components/FileManage'
|
||||
import { arrayColumn } from '@/utils/index'
|
||||
import { list, info, add, edit, dele, disable } from '@/api/member/third'
|
||||
|
||||
export default {
|
||||
name: 'MemberThird',
|
||||
components: { Pagination, FileManage },
|
||||
data() {
|
||||
return {
|
||||
name: '会员第三方账号',
|
||||
height: 680,
|
||||
loading: false,
|
||||
idkey: 'third_id',
|
||||
exps: [{ exp: 'like', name: '包含' }],
|
||||
query: { page: 1, limit: 12, search_field: 'nickname', search_exp: 'like', date_field: 'create_time' },
|
||||
data: [],
|
||||
count: 0,
|
||||
platforms: [],
|
||||
applications: [],
|
||||
dialog: false,
|
||||
dialogTitle: '',
|
||||
model: {
|
||||
third_id: '',
|
||||
member_id: 0,
|
||||
platform: 20,
|
||||
application: 21,
|
||||
unionid: '',
|
||||
openid: '',
|
||||
headimgurl: '',
|
||||
nickname: '',
|
||||
remark: ''
|
||||
},
|
||||
rules: {
|
||||
member_id: [{ required: true, message: '请输入openid', trigger: 'blur' }],
|
||||
openid: [{ required: true, message: '请输入openid', trigger: 'blur' }]
|
||||
},
|
||||
selection: [],
|
||||
selectIds: '',
|
||||
selectTitle: '选中操作',
|
||||
selectDialog: false,
|
||||
selectType: '',
|
||||
is_disable: 0,
|
||||
fileDialog: false
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.height = screenHeight()
|
||||
this.list()
|
||||
},
|
||||
methods: {
|
||||
// 列表
|
||||
list() {
|
||||
this.loading = true
|
||||
list(this.query).then(res => {
|
||||
this.data = res.data.list
|
||||
this.count = res.data.count
|
||||
this.exps = res.data.exps
|
||||
this.platforms = res.data.platforms
|
||||
this.applications = res.data.applications
|
||||
this.loading = false
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
// 添加修改
|
||||
add() {
|
||||
this.dialog = true
|
||||
this.dialogTitle = this.name + '添加'
|
||||
this.reset()
|
||||
},
|
||||
edit(row) {
|
||||
this.dialog = true
|
||||
this.dialogTitle = this.name + '修改:' + row[this.idkey]
|
||||
var id = {}
|
||||
id[this.idkey] = row[this.idkey]
|
||||
info(id).then(res => {
|
||||
this.reset(res.data)
|
||||
}).catch(() => { })
|
||||
},
|
||||
cancel() {
|
||||
this.dialog = false
|
||||
this.reset()
|
||||
},
|
||||
submit() {
|
||||
this.$refs['ref'].validate(valid => {
|
||||
if (valid) {
|
||||
this.loading = true
|
||||
if (this.model[this.idkey]) {
|
||||
edit(this.model).then(res => {
|
||||
this.list()
|
||||
this.dialog = false
|
||||
this.$message.success(res.msg)
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
})
|
||||
} else {
|
||||
add(this.model).then(res => {
|
||||
this.list()
|
||||
this.dialog = false
|
||||
this.$message.success(res.msg)
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
// 重置
|
||||
reset(row) {
|
||||
if (row) {
|
||||
this.model = row
|
||||
} else {
|
||||
this.model = this.$options.data().model
|
||||
}
|
||||
if (this.$refs['ref'] !== undefined) {
|
||||
this.$refs['ref'].resetFields()
|
||||
this.$refs['ref'].clearValidate()
|
||||
}
|
||||
},
|
||||
// 查询
|
||||
search() {
|
||||
this.query.page = 1
|
||||
this.list()
|
||||
},
|
||||
// 刷新
|
||||
refresh() {
|
||||
const limit = this.query.limit
|
||||
this.query = this.$options.data().query
|
||||
this.$refs['table'].clearSort()
|
||||
this.query.limit = limit
|
||||
this.list()
|
||||
},
|
||||
// 排序
|
||||
sort(sort) {
|
||||
this.query.sort_field = sort.prop
|
||||
this.query.sort_value = ''
|
||||
if (sort.order === 'ascending') {
|
||||
this.query.sort_value = 'asc'
|
||||
this.list()
|
||||
}
|
||||
if (sort.order === 'descending') {
|
||||
this.query.sort_value = 'desc'
|
||||
this.list()
|
||||
}
|
||||
},
|
||||
// 选中操作
|
||||
select(selection) {
|
||||
this.selection = selection
|
||||
this.selectIds = this.selectGetIds(selection).toString()
|
||||
},
|
||||
selectGetIds(selection) {
|
||||
return arrayColumn(selection, this.idkey)
|
||||
},
|
||||
selectAlert() {
|
||||
this.$alert('请选择需要操作的' + this.name, '提示', { type: 'warning', callback: action => { } })
|
||||
},
|
||||
selectOpen(selectType, selectRow = '') {
|
||||
if (selectRow) {
|
||||
this.$refs['table'].clearSelection()
|
||||
this.$refs['table'].toggleRowSelection(selectRow)
|
||||
}
|
||||
if (!this.selection.length) {
|
||||
this.selectAlert()
|
||||
} else {
|
||||
this.selectTitle = '选中操作'
|
||||
if (selectType === 'disable') {
|
||||
this.selectTitle = this.name + '是否禁用'
|
||||
} else if (selectType === 'dele') {
|
||||
this.selectTitle = this.name + '删除'
|
||||
}
|
||||
this.selectDialog = true
|
||||
this.selectType = selectType
|
||||
}
|
||||
},
|
||||
selectCancel() {
|
||||
this.selectDialog = false
|
||||
},
|
||||
selectSubmit() {
|
||||
if (!this.selection.length) {
|
||||
this.selectAlert()
|
||||
} else {
|
||||
const selectType = this.selectType
|
||||
if (selectType === 'disable') {
|
||||
this.disable(this.selection, true)
|
||||
} else if (selectType === 'dele') {
|
||||
this.dele(this.selection, true)
|
||||
}
|
||||
this.selectDialog = false
|
||||
}
|
||||
},
|
||||
// 是否禁用
|
||||
disable(row, select = false) {
|
||||
if (!row.length) {
|
||||
this.selectAlert()
|
||||
} else {
|
||||
this.loading = true
|
||||
var is_disable = row[0].is_disable
|
||||
if (select) {
|
||||
is_disable = this.is_disable
|
||||
}
|
||||
disable({
|
||||
ids: this.selectGetIds(row),
|
||||
is_disable: is_disable
|
||||
}).then(res => {
|
||||
this.list()
|
||||
this.$message.success(res.msg)
|
||||
}).catch(() => {
|
||||
this.list()
|
||||
})
|
||||
}
|
||||
},
|
||||
// 删除
|
||||
dele(row) {
|
||||
if (!row.length) {
|
||||
this.selectAlert()
|
||||
} else {
|
||||
this.loading = true
|
||||
dele({
|
||||
ids: this.selectGetIds(row)
|
||||
}).then(res => {
|
||||
this.list()
|
||||
this.$message.success(res.msg)
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
})
|
||||
}
|
||||
},
|
||||
// 上传头像
|
||||
fileUpload() {
|
||||
this.fileDialog = true
|
||||
},
|
||||
fileCancel() {
|
||||
this.fileDialog = false
|
||||
},
|
||||
fileSubmit(fileList) {
|
||||
this.fileDialog = false
|
||||
const fileLength = fileList.length
|
||||
if (fileLength) {
|
||||
const i = fileLength - 1
|
||||
this.model.headimgurl = fileList[i]['file_url']
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
</style>
|
|
@ -7,8 +7,10 @@
|
|||
<el-col>
|
||||
<el-select v-model="query.search_field" class="filter-item ya-search-field" placeholder="查询字段">
|
||||
<el-option :value="idkey" label="ID" />
|
||||
<el-option value="name" label="名称" />
|
||||
<el-option value="unique" label="标识" />
|
||||
<el-option value="name" label="名称" />
|
||||
<el-option value="desc" label="描述" />
|
||||
<el-option value="remark" label="备注" />
|
||||
<el-option value="is_disable" label="禁用" />
|
||||
</el-select>
|
||||
<el-select v-model="query.search_exp" class="filter-item ya-search-exp">
|
||||
|
@ -23,7 +25,7 @@
|
|||
<el-option value="create_time" label="添加时间" />
|
||||
<el-option value="update_time" label="修改时间" />
|
||||
</el-select>
|
||||
<el-date-picker v-model="query.date_value" type="daterange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd" />
|
||||
<el-date-picker v-model="query.date_value" type="datetimerange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00','23:59:59']" value-format="yyyy-MM-dd HH:mm:ss" />
|
||||
<el-button class="filter-item" type="primary" title="查询/刷新" @click="search()">查询</el-button>
|
||||
<el-button class="filter-item" icon="el-icon-refresh" title="重置" @click="refresh()" />
|
||||
</el-col>
|
||||
|
@ -58,16 +60,18 @@
|
|||
<el-table ref="table" v-loading="loading" :data="data" :height="height" @sort-change="sort" @selection-change="select" @cell-dblclick="cellDbclick">
|
||||
<el-table-column type="selection" width="42" title="全选/反选" />
|
||||
<el-table-column :prop="idkey" label="ID" width="80" sortable="custom" />
|
||||
<el-table-column prop="name" label="名称" min-width="220" sortable="custom" show-overflow-tooltip />
|
||||
<el-table-column prop="unique" label="标识" min-width="120" sortable="custom" show-overflow-tooltip />
|
||||
<el-table-column prop="name" label="名称" min-width="120" sortable="custom" show-overflow-tooltip />
|
||||
<el-table-column prop="desc" label="描述" min-width="160" show-overflow-tooltip />
|
||||
<el-table-column prop="remark" label="备注" min-width="150" show-overflow-tooltip />
|
||||
<el-table-column prop="is_disable" label="禁用" min-width="75" sortable="custom">
|
||||
<template slot-scope="scope">
|
||||
<el-switch v-model="scope.row.is_disable" :active-value="1" :inactive-value="0" @change="disable([scope.row])" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="sort" label="排序" min-width="75" sortable="custom" />
|
||||
<el-table-column prop="create_time" label="添加时间" min-width="155" sortable="custom" />
|
||||
<el-table-column prop="update_time" label="修改时间" min-width="155" sortable="custom" />
|
||||
<el-table-column prop="create_time" label="添加时间" width="155" sortable="custom" />
|
||||
<el-table-column prop="update_time" label="修改时间" width="155" sortable="custom" />
|
||||
<el-table-column label="操作" width="90">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" @click="edit(scope.row)">修改</el-button>
|
||||
|
@ -80,15 +84,21 @@
|
|||
<!-- 添加修改 -->
|
||||
<el-dialog :title="dialogTitle" :visible.sync="dialog" top="5vh" :before-close="cancel" :close-on-click-modal="false" :close-on-press-escape="false" destroy-on-close>
|
||||
<el-form ref="ref" :rules="rules" :model="model" label-width="100px" class="dialog-body" :style="{height:height+'px'}">
|
||||
<el-form-item label="标识" prop="unique">
|
||||
<el-input v-model="model.unique" placeholder="请输入标识(唯一)" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" title="复制" @click="copy(model.unique, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="名称" prop="name">
|
||||
<el-input v-model="model.name" placeholder="请输入名称" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" title="复制" @click="copy(model.name, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="标识" prop="unique">
|
||||
<el-input v-model="model.unique" placeholder="请输入标识(唯一)" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" title="复制" @click="copy(model.unique, $event)" />
|
||||
</el-input>
|
||||
<el-form-item label="描述" prop="desc">
|
||||
<el-input v-model="model.desc" type="textarea" autosize placeholder="请输入描述" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="model.remark" placeholder="请输入备注" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="排序" prop="sort">
|
||||
<el-input v-model="model.sort" type="number" />
|
||||
|
@ -132,7 +142,7 @@ export default {
|
|||
height: 680,
|
||||
loading: false,
|
||||
idkey: 'accord_id',
|
||||
exps: [],
|
||||
exps: [{ exp: 'like', name: '包含' }],
|
||||
query: { page: 1, limit: 12, search_field: 'name', search_exp: 'like', date_field: 'create_time' },
|
||||
data: [],
|
||||
count: 0,
|
||||
|
@ -142,9 +152,10 @@ export default {
|
|||
accord_id: '',
|
||||
unique: '',
|
||||
name: '',
|
||||
desc: '',
|
||||
content: '',
|
||||
sort: 250,
|
||||
is_disable: 0
|
||||
remark: '',
|
||||
sort: 250
|
||||
},
|
||||
rules: {
|
||||
unique: [{ required: true, message: '请输入标识', trigger: 'blur' }],
|
||||
|
|
|
@ -7,10 +7,11 @@
|
|||
<el-col>
|
||||
<el-select v-model="query.search_field" class="filter-item ya-search-field" placeholder="查询字段">
|
||||
<el-option :value="idkey" label="ID" />
|
||||
<el-option value="title" label="标题" />
|
||||
<el-option value="unique" label="标识" />
|
||||
<el-option value="title" label="标题" />
|
||||
<el-option value="position" label="位置" />
|
||||
<el-option value="desc" label="描述" />
|
||||
<el-option value="remark" label="备注" />
|
||||
<el-option value="is_disable" label="禁用" />
|
||||
</el-select>
|
||||
<el-select v-model="query.search_exp" class="filter-item ya-search-exp">
|
||||
|
@ -25,7 +26,7 @@
|
|||
<el-option value="create_time" label="添加时间" />
|
||||
<el-option value="update_time" label="修改时间" />
|
||||
</el-select>
|
||||
<el-date-picker v-model="query.date_value" type="daterange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd" />
|
||||
<el-date-picker v-model="query.date_value" type="datetimerange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00','23:59:59']" value-format="yyyy-MM-dd HH:mm:ss" />
|
||||
<el-button class="filter-item" type="primary" title="查询/刷新" @click="search()">查询</el-button>
|
||||
<el-button class="filter-item" icon="el-icon-refresh" title="重置" @click="refresh()" />
|
||||
</el-col>
|
||||
|
@ -64,6 +65,7 @@
|
|||
<el-table ref="table" v-loading="loading" :data="data" :height="height" @sort-change="sort" @selection-change="select" @cell-dblclick="cellDbclick">
|
||||
<el-table-column type="selection" width="42" title="全选/反选" />
|
||||
<el-table-column :prop="idkey" label="ID" width="80" sortable="custom" />
|
||||
<el-table-column prop="unique" label="标识" min-width="100" sortable="custom" show-overflow-tooltip />
|
||||
<el-table-column prop="file_url" label="文件" min-width="130">
|
||||
<template slot-scope="scope">
|
||||
<div v-if="scope.row.file_url" style="height:30px">
|
||||
|
@ -95,18 +97,17 @@
|
|||
</el-table-column>
|
||||
<el-table-column prop="file_type_name" label="类型" min-width="75" />
|
||||
<el-table-column prop="title" label="标题" min-width="150" sortable="custom" show-overflow-tooltip />
|
||||
<el-table-column prop="unique" label="标识" min-width="100" sortable="custom" show-overflow-tooltip />
|
||||
<el-table-column prop="link" label="链接" min-width="180" sortable="custom" show-overflow-tooltip />
|
||||
<el-table-column prop="position" label="位置" min-width="120" sortable="custom" show-overflow-tooltip />
|
||||
<el-table-column prop="desc" label="描述" min-width="120" show-overflow-tooltip />
|
||||
<el-table-column prop="remark" label="备注" min-width="150" sortable="custom" show-overflow-tooltip />
|
||||
<el-table-column prop="is_disable" label="禁用" min-width="75" sortable="custom">
|
||||
<template slot-scope="scope">
|
||||
<el-switch v-model="scope.row.is_disable" :active-value="1" :inactive-value="0" @change="disable([scope.row])" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="sort" label="排序" min-width="75" sortable="custom" />
|
||||
<el-table-column prop="create_time" label="添加时间" min-width="155" sortable="custom" />
|
||||
<el-table-column prop="update_time" label="修改时间" min-width="155" sortable="custom" />
|
||||
<el-table-column prop="create_time" label="添加时间" width="155" sortable="custom" />
|
||||
<el-table-column prop="update_time" label="修改时间" width="155" sortable="custom" />
|
||||
<el-table-column label="操作" width="90">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" @click="edit(scope.row)">修改</el-button>
|
||||
|
@ -119,6 +120,11 @@
|
|||
<!-- 添加修改 -->
|
||||
<el-dialog :title="dialogTitle" :visible.sync="dialog" top="5vh" :before-close="cancel" :close-on-click-modal="false" :close-on-press-escape="false" destroy-on-close>
|
||||
<el-form ref="ref" :rules="rules" :model="model" label-width="100px" class="dialog-body" :style="{height:height+'px'}">
|
||||
<el-form-item label="标识" prop="unique">
|
||||
<el-input v-model="model.unique" placeholder="请输入标识(唯一)" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" title="复制" @click="copy(model.unique, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="文件" prop="file_id">
|
||||
<el-col :span="16">
|
||||
<div style="height:180px">
|
||||
|
@ -168,21 +174,16 @@
|
|||
<el-button slot="append" icon="el-icon-document-copy" title="复制" @click="copy(model.title, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="标识" prop="unique">
|
||||
<el-input v-model="model.unique" placeholder="请输入标识(唯一)" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" title="复制" @click="copy(model.unique, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="链接" prop="link">
|
||||
<el-input v-model="model.link" placeholder="请输入链接" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" title="复制" @click="copy(model.link, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="描述" prop="desc">
|
||||
<el-input v-model="model.desc" placeholder="请输入描述" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" title="复制" @click="copy(model.desc, $event)" />
|
||||
<el-input v-model="model.desc" type="textarea" autosize placeholder="请输入描述" clearable /></el-form-item>
|
||||
<el-form-item label="链接" prop="url">
|
||||
<el-input v-model="model.url" placeholder="请输入链接" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" title="复制" @click="copy(model.url, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="model.remark" placeholder="请输入备注" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="排序" prop="sort">
|
||||
<el-input v-model="model.sort" type="number" />
|
||||
</el-form-item>
|
||||
|
@ -271,7 +272,7 @@ export default {
|
|||
height: 680,
|
||||
loading: false,
|
||||
idkey: 'carousel_id',
|
||||
exps: [],
|
||||
exps: [{ exp: 'like', name: '包含' }],
|
||||
query: { page: 1, limit: 12, search_field: 'title', search_exp: 'like', date_field: 'create_time' },
|
||||
data: [],
|
||||
count: 0,
|
||||
|
@ -286,15 +287,14 @@ export default {
|
|||
file_name: '',
|
||||
file_ext: '',
|
||||
title: '',
|
||||
link: '',
|
||||
position: '',
|
||||
url: '',
|
||||
desc: '',
|
||||
remark: '',
|
||||
sort: 250,
|
||||
is_disable: 0,
|
||||
file_list: []
|
||||
},
|
||||
rules: {
|
||||
file_type: [{ required: true, message: '请选择类型', trigger: 'blur' }],
|
||||
title: [{ required: true, message: '请输入标题', trigger: 'blur' }]
|
||||
},
|
||||
selection: [],
|
||||
|
|
|
@ -1,155 +0,0 @@
|
|||
<template>
|
||||
<el-card>
|
||||
<el-form ref="ref" :model="model" :rules="rules" label-width="130px" class="dialog-body" :style="{height:height+'px'}">
|
||||
<el-form-item label="名称" prop="name">
|
||||
<el-col :span="12">
|
||||
<el-input v-model="model.name" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.name, $event)" />
|
||||
</el-input>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="原始ID" prop="origin_id">
|
||||
<el-col :span="12">
|
||||
<el-input v-model="model.origin_id" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.origin_id, $event)" />
|
||||
</el-input>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="小程序码" prop="qrcode_url">
|
||||
<el-col :span="6" style="height:100px">
|
||||
<el-image v-if="model.qrcode_url" style="height:100px" fit="contain" :src="model.qrcode_url" :preview-src-list="[model.qrcode_url]" title="点击看大图">
|
||||
<div slot="error" class="image-slot">
|
||||
<i class="el-icon-picture-outline" />
|
||||
</div>
|
||||
</el-image>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-button size="mini" @click="fileUpload()">上传小程序码</el-button>
|
||||
<el-button size="mini" @click="fileDelete()">删除</el-button>
|
||||
<p>图片小于 200 KB,jpg、png格式。</p>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="* AppID" prop="appid">
|
||||
<el-col :span="12">
|
||||
<el-input v-model="model.appid" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.appid, $event)" />
|
||||
</el-input>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="* AppSecret" prop="appsecret">
|
||||
<el-col :span="12">
|
||||
<el-input v-model="model.appsecret" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.appsecret, $event)" />
|
||||
</el-input>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-form ref="form" label-width="120px">
|
||||
<el-form-item>
|
||||
<el-button :loading="loading" @click="refresh()">刷新</el-button>
|
||||
<el-button :loading="loading" type="primary" @click="submit()">提交</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-dialog title="上传二维码" :visible.sync="fileDialog" width="80%" top="1vh" :close-on-click-modal="false" :close-on-press-escape="false">
|
||||
<file-manage file-type="image" @fileCancel="fileCancel" @fileSubmit="fileSubmit" />
|
||||
</el-dialog>
|
||||
</el-card>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import screenHeight from '@/utils/screen-height'
|
||||
import clip from '@/utils/clipboard'
|
||||
import FileManage from '@/components/FileManage'
|
||||
import { miniInfo, miniEdit } from '@/api/setting/wechat'
|
||||
|
||||
export default {
|
||||
name: 'SettingWechatMini',
|
||||
components: { FileManage },
|
||||
data() {
|
||||
return {
|
||||
name: '微信小程序',
|
||||
height: 680,
|
||||
loading: false,
|
||||
model: {
|
||||
name: '',
|
||||
origin_id: '',
|
||||
qrcode_id: 0,
|
||||
qrcode_url: '',
|
||||
appid: '',
|
||||
appsecret: ''
|
||||
},
|
||||
rules: {
|
||||
},
|
||||
fileDialog: false
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.height = screenHeight(270)
|
||||
this.info()
|
||||
},
|
||||
methods: {
|
||||
// 信息
|
||||
info() {
|
||||
miniInfo().then((res) => {
|
||||
this.model = res.data
|
||||
})
|
||||
},
|
||||
// 刷新
|
||||
refresh() {
|
||||
this.loading = true
|
||||
miniInfo().then((res) => {
|
||||
this.model = res.data
|
||||
this.loading = false
|
||||
this.$message.success(res.msg)
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
// 提交
|
||||
submit() {
|
||||
this.$refs['ref'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.loading = true
|
||||
miniEdit(this.model).then((res) => {
|
||||
this.loading = false
|
||||
this.$message.success(res.msg)
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
// 二维码
|
||||
fileUpload() {
|
||||
this.fileDialog = true
|
||||
},
|
||||
fileCancel() {
|
||||
this.fileDialog = false
|
||||
},
|
||||
fileSubmit(fileList) {
|
||||
this.fileDialog = false
|
||||
const fileLength = fileList.length
|
||||
if (fileLength) {
|
||||
const i = fileLength - 1
|
||||
this.model.qrcode_id = fileList[i]['file_id']
|
||||
this.model.qrcode_url = fileList[i]['file_url']
|
||||
}
|
||||
},
|
||||
fileDelete() {
|
||||
this.model.qrcode_id = 0
|
||||
this.model.qrcode_url = ''
|
||||
},
|
||||
// 复制
|
||||
copy(text, event) {
|
||||
if (text) {
|
||||
clip(text, event)
|
||||
} else {
|
||||
this.$message.error('内容为空')
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
</style>
|
|
@ -1,192 +0,0 @@
|
|||
<template>
|
||||
<el-card>
|
||||
<el-form ref="ref" :model="model" :rules="rules" label-width="130px" class="dialog-body" :style="{height:height+'px'}">
|
||||
<el-form-item label="名称" prop="name">
|
||||
<el-col :span="12">
|
||||
<el-input v-model="model.name" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.name, $event)" />
|
||||
</el-input>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="原始ID" prop="origin_id">
|
||||
<el-col :span="12">
|
||||
<el-input v-model="model.origin_id" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.origin_id, $event)" />
|
||||
</el-input>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="公众号码" prop="qrcode_url">
|
||||
<el-col :span="6" style="height:100px">
|
||||
<el-image v-if="model.qrcode_url" style="height:100px" fit="contain" :src="model.qrcode_url" :preview-src-list="[model.qrcode_url]" title="点击看大图">
|
||||
<div slot="error" class="image-slot">
|
||||
<i class="el-icon-picture-outline" />
|
||||
</div>
|
||||
</el-image>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-button size="mini" @click="fileUpload()">上传公众号码</el-button>
|
||||
<el-button size="mini" @click="fileDelete()">删除</el-button>
|
||||
<p>图片小于 200 KB,jpg、png格式。</p>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="* AppID" prop="appid">
|
||||
<el-col :span="12">
|
||||
<el-input v-model="model.appid" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.appid, $event)" />
|
||||
</el-input>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="* AppSecret" prop="appsecret">
|
||||
<el-col :span="12">
|
||||
<el-input v-model="model.appsecret" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.appsecret, $event)" />
|
||||
</el-input>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="服务器地址(URL)" prop="server_url">
|
||||
<el-col :span="12">
|
||||
<el-input v-model="model.server_url" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.server_url, $event)" />
|
||||
</el-input>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="令牌(Token)" prop="token">
|
||||
<el-col :span="12">
|
||||
<el-input v-model="model.token" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.token, $event)" />
|
||||
</el-input>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="消息加解密密钥" prop="encoding_aes_key">
|
||||
<el-col :span="12">
|
||||
<el-input v-model="model.encoding_aes_key" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" @click="copy(model.encoding_aes_key, $event)" />
|
||||
</el-input>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="消息加解密方式" prop="encoding_aes_type">
|
||||
<el-col :span="12">
|
||||
<el-radio-group v-model="model.encoding_aes_type">
|
||||
<el-radio v-for="item in encoding_aes_types" :key="item.value" :label="item.value">{{ item.label }}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-form ref="form" label-width="120px">
|
||||
<el-form-item>
|
||||
<el-button :loading="loading" @click="refresh()">刷新</el-button>
|
||||
<el-button :loading="loading" type="primary" @click="submit()">提交</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-dialog title="上传二维码" :visible.sync="fileDialog" width="80%" top="1vh" :close-on-click-modal="false" :close-on-press-escape="false">
|
||||
<file-manage file-type="image" @fileCancel="fileCancel" @fileSubmit="fileSubmit" />
|
||||
</el-dialog>
|
||||
</el-card>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import screenHeight from '@/utils/screen-height'
|
||||
import clip from '@/utils/clipboard'
|
||||
import FileManage from '@/components/FileManage'
|
||||
import { offiInfo, offiEdit } from '@/api/setting/wechat'
|
||||
|
||||
export default {
|
||||
name: 'SettingWechatOffi',
|
||||
components: { FileManage },
|
||||
data() {
|
||||
return {
|
||||
name: '微信公众号',
|
||||
height: 680,
|
||||
loading: false,
|
||||
model: {
|
||||
name: '',
|
||||
origin_id: '',
|
||||
qrcode_id: 0,
|
||||
qrcode_url: '',
|
||||
appid: '',
|
||||
appsecret: '',
|
||||
server_url: '',
|
||||
token: '',
|
||||
encoding_aes_key: '',
|
||||
encoding_aes_type: 1
|
||||
},
|
||||
rules: {
|
||||
},
|
||||
encoding_aes_types: [
|
||||
{ value: 1, label: '明文模式' },
|
||||
{ value: 2, label: '兼容模式' },
|
||||
{ value: 3, label: '安全模式' }
|
||||
],
|
||||
fileDialog: false
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.height = screenHeight(270)
|
||||
this.info()
|
||||
},
|
||||
methods: {
|
||||
// 信息
|
||||
info() {
|
||||
offiInfo().then((res) => {
|
||||
this.model = res.data
|
||||
})
|
||||
},
|
||||
// 刷新
|
||||
refresh() {
|
||||
this.loading = true
|
||||
offiInfo().then((res) => {
|
||||
this.model = res.data
|
||||
this.loading = false
|
||||
this.$message.success(res.msg)
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
// 提交
|
||||
submit() {
|
||||
this.$refs['ref'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.loading = true
|
||||
offiEdit(this.model).then((res) => {
|
||||
this.loading = false
|
||||
this.$message.success(res.msg)
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
// 二维码
|
||||
fileUpload() {
|
||||
this.fileDialog = true
|
||||
},
|
||||
fileCancel() {
|
||||
this.fileDialog = false
|
||||
},
|
||||
fileSubmit(fileList) {
|
||||
this.fileDialog = false
|
||||
const fileLength = fileList.length
|
||||
if (fileLength) {
|
||||
const i = fileLength - 1
|
||||
this.model.qrcode_id = fileList[i]['file_id']
|
||||
this.model.qrcode_url = fileList[i]['file_url']
|
||||
}
|
||||
},
|
||||
fileDelete() {
|
||||
this.model.qrcode_id = 0
|
||||
this.model.qrcode_url = ''
|
||||
},
|
||||
// 复制
|
||||
copy(text, event) {
|
||||
if (text) {
|
||||
clip(text, event)
|
||||
} else {
|
||||
this.$message.error('内容为空')
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
</style>
|
|
@ -13,6 +13,7 @@
|
|||
<el-option value="phone" label="手机" />
|
||||
<el-option value="email" label="邮箱" />
|
||||
<el-option value="receipt_no" label="回执" />
|
||||
<el-option value="remark" label="备注" />
|
||||
<el-option value="is_disable" label="禁用" />
|
||||
</el-select>
|
||||
<el-select v-model="query.search_exp" class="filter-item ya-search-exp">
|
||||
|
@ -33,7 +34,7 @@
|
|||
<el-option value="create_time" label="添加时间" />
|
||||
<el-option value="update_time" label="修改时间" />
|
||||
</el-select>
|
||||
<el-date-picker v-model="query.date_value" type="daterange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd" />
|
||||
<el-date-picker v-model="query.date_value" type="datetimerange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00','23:59:59']" value-format="yyyy-MM-dd HH:mm:ss" />
|
||||
<el-button class="filter-item" type="primary" title="查询/刷新" @click="search()">查询</el-button>
|
||||
<el-button class="filter-item" icon="el-icon-refresh" title="重置" @click="refresh()" />
|
||||
</el-col>
|
||||
|
@ -91,8 +92,8 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="receipt_no" label="回执编号" min-width="100" show-overflow-tooltip />
|
||||
<el-table-column prop="create_time" label="添加时间" min-width="155" sortable="custom" />
|
||||
<el-table-column prop="update_time" label="修改时间" min-width="155" sortable="custom" />
|
||||
<el-table-column prop="create_time" label="添加时间" width="155" sortable="custom" />
|
||||
<el-table-column prop="update_time" label="修改时间" width="155" sortable="custom" />
|
||||
<el-table-column label="操作" width="90">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" title="修改" @click="edit(scope.row)">修改</el-button>
|
||||
|
@ -106,11 +107,11 @@
|
|||
<el-dialog :title="dialogTitle" :visible.sync="dialog" top="5vh" :before-close="cancel" :close-on-click-modal="false" :close-on-press-escape="false">
|
||||
<el-form ref="ref" :rules="rules" :model="model" class="dialog-body" label-width="100px" :style="{ height: height + 'px' }">
|
||||
<el-form-item label="会员ID" prop="member_id">
|
||||
<el-col :span="10">
|
||||
<el-col :span="8">
|
||||
<el-input v-model="model.member_id" placeholder="请输入会员ID" clearable />
|
||||
</el-col>
|
||||
<el-col class="ya-center" :span="4">会员用户名</el-col>
|
||||
<el-col :span="10">
|
||||
<el-col :span="12">
|
||||
<el-input v-model="model.member_username" placeholder="" disabled />
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
|
@ -123,7 +124,7 @@
|
|||
<el-input v-model="model.title" placeholder="请输入标题" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="内容" prop="content">
|
||||
<el-input v-model="model.content" type="textarea" placeholder="请输入内容" clearable :autosize="{ minRows: 5, maxRows: 20 }" />
|
||||
<el-input v-model="model.content" type="textarea" :autosize="{ minRows: 5, maxRows: 20 }" placeholder="请输入内容" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="图片" prop="images">
|
||||
<el-row>
|
||||
|
@ -154,7 +155,7 @@
|
|||
<el-input v-model="model.email" placeholder="" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="回复" prop="reply">
|
||||
<el-input v-model="model.reply" type="textarea" placeholder="请输入回复" clearable :autosize="{ minRows: 5, maxRows: 20 }" />
|
||||
<el-input v-model="model.reply" type="textarea" :autosize="{ minRows: 5, maxRows: 20 }" placeholder="请输入回复" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="状态" prop="status">
|
||||
<el-select v-model="model.status">
|
||||
|
@ -207,7 +208,7 @@ export default {
|
|||
height: 680,
|
||||
loading: false,
|
||||
idkey: 'feedback_id',
|
||||
exps: [],
|
||||
exps: [{ exp: 'like', name: '包含' }],
|
||||
query: { page: 1, limit: 12, search_field: 'title', search_exp: 'like', date_field: 'create_time' },
|
||||
data: [],
|
||||
count: 0,
|
||||
|
|
|
@ -0,0 +1,451 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<!-- 查询操作 -->
|
||||
<div class="filter-container">
|
||||
<!-- 查询 -->
|
||||
<el-row>
|
||||
<el-col>
|
||||
<el-select v-model="query.search_field" class="filter-item ya-search-field" placeholder="查询字段">
|
||||
<el-option :value="idkey" label="ID" />
|
||||
<el-option value="unique" label="标识" />
|
||||
<el-option value="name" label="名称" />
|
||||
<el-option value="desc" label="描述" />
|
||||
<el-option value="remark" label="备注" />
|
||||
<el-option value="is_disable" label="禁用" />
|
||||
</el-select>
|
||||
<el-select v-model="query.search_exp" class="filter-item ya-search-exp">
|
||||
<el-option v-for="exp in exps" :key="exp.exp" :value="exp.exp" :label="exp.name" />
|
||||
</el-select>
|
||||
<el-select v-if="query.search_field==='is_disable'" v-model="query.search_value" class="filter-item ya-search-value">
|
||||
<el-option :value="1" label="是" />
|
||||
<el-option :value="0" label="否" />
|
||||
</el-select>
|
||||
<el-input v-else v-model="query.search_value" class="filter-item ya-search-value" placeholder="查询内容" clearable />
|
||||
<el-select v-model="query.date_field" class="filter-item ya-date-field" placeholder="时间字段">
|
||||
<el-option value="create_time" label="添加时间" />
|
||||
<el-option value="update_time" label="修改时间" />
|
||||
<el-option value="expiration_date" label="有效期" />
|
||||
</el-select>
|
||||
<el-date-picker v-model="query.date_value" type="datetimerange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00','23:59:59']" value-format="yyyy-MM-dd HH:mm:ss" />
|
||||
<el-button class="filter-item" type="primary" title="查询/刷新" @click="search()">查询</el-button>
|
||||
<el-button class="filter-item" icon="el-icon-refresh" title="重置" @click="refresh()" />
|
||||
</el-col>
|
||||
</el-row>
|
||||
<!-- 选中操作 -->
|
||||
<el-row>
|
||||
<el-col>
|
||||
<el-button title="修改有效期" @click="selectOpen('expiration')">有效期</el-button>
|
||||
<el-button title="是否禁用" @click="selectOpen('disable')">禁用</el-button>
|
||||
<el-button title="删除" @click="selectOpen('dele')">删除</el-button>
|
||||
<el-button type="primary" @click="add()">添加</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-dialog :title="selectTitle" :visible.sync="selectDialog" top="20vh" :close-on-click-modal="false" :close-on-press-escape="false">
|
||||
<el-form ref="selectRef" label-width="120px">
|
||||
<el-form-item :label="name+'ID'" prop="">
|
||||
<el-input v-model="selectIds" type="textarea" :autosize="{minRows: 5, maxRows: 12}" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="selectType==='expiration'" label="有效期" prop="">
|
||||
<el-date-picker v-model="expiration_date" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" default-time="23:59:59" placeholder="有效期" />
|
||||
</el-form-item>
|
||||
<el-form-item v-else-if="selectType==='disable'" label="是否禁用" prop="">
|
||||
<el-switch v-model="is_disable" :active-value="1" :inactive-value="0" />
|
||||
</el-form-item>
|
||||
<el-form-item v-else-if="selectType==='dele'" label="" prop="">
|
||||
<span style="color:red">确定要删除选中的{{ name }}吗?</span>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button :loading="loading" @click="selectCancel">取消</el-button>
|
||||
<el-button :loading="loading" type="primary" @click="selectSubmit">提交</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
<!-- 列表 -->
|
||||
<el-table ref="table" v-loading="loading" :data="data" :height="height" @sort-change="sort" @selection-change="select">
|
||||
<el-table-column type="selection" width="42" title="全选/反选" />
|
||||
<el-table-column :prop="idkey" label="ID" width="80" sortable="custom" />
|
||||
<el-table-column prop="unique" label="标识" min-width="90" show-overflow-tooltip />
|
||||
<el-table-column prop="image_id" label="图片" min-width="60">
|
||||
<template slot-scope="scope">
|
||||
<div style="height:30px">
|
||||
<el-image v-if="scope.row.image_url" style="height:30px" fit="contain" :src="scope.row.image_url" :preview-src-list="[scope.row.image_url]" title="点击看大图" lazy scroll-container=".el-table__body-wrapper">
|
||||
<div slot="error" class="image-slot">
|
||||
<i class="el-icon-picture-outline" />
|
||||
</div>
|
||||
</el-image>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="name" label="名称" min-width="120" show-overflow-tooltip>
|
||||
<template slot-scope="scope">
|
||||
<span :style="{'color':scope.row.name_color}">{{ scope.row.name }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="url" label="链接" min-width="200" show-overflow-tooltip />
|
||||
<el-table-column prop="desc" label="描述" width="180" show-overflow-tooltip />
|
||||
<el-table-column prop="is_disable" label="禁用" min-width="75" sortable="custom">
|
||||
<template slot-scope="scope">
|
||||
<el-switch v-model="scope.row.is_disable" :active-value="1" :inactive-value="0" @change="disable([scope.row])" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="sort" label="排序" min-width="75" sortable="custom" />
|
||||
<el-table-column prop="expiration_date" label="有效期" width="155" sortable="custom" />
|
||||
<el-table-column prop="create_time" label="添加时间" width="155" sortable="custom" />
|
||||
<el-table-column prop="update_time" label="修改时间" width="155" sortable="custom" />
|
||||
<el-table-column label="操作" width="90">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" @click="edit(scope.row)">修改</el-button>
|
||||
<el-button size="mini" type="text" @click="selectOpen('dele',scope.row)">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
<pagination v-show="count>0" :total="count" :page.sync="query.page" :limit.sync="query.limit" @pagination="list" />
|
||||
<!-- 添加修改 -->
|
||||
<el-dialog :title="dialogTitle" :visible.sync="dialog" top="5vh" :before-close="cancel" :close-on-click-modal="false" :close-on-press-escape="false">
|
||||
<el-form ref="ref" :model="model" :rules="rules" label-width="100px" class="dialog-body" :style="{height:height+'px'}">
|
||||
<el-form-item label="标识" prop="unique">
|
||||
<el-input v-model="model.unique" placeholder="请输入标识(唯一)" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="图片" prop="image_url">
|
||||
<el-col :span="12" style="height:100px">
|
||||
<el-image v-if="model.image_url" style="height:100px" fit="contain" :src="model.image_url" :preview-src-list="[model.image_url]" title="点击看大图">
|
||||
<div slot="error" class="image-slot">
|
||||
<i class="el-icon-picture-outline" />
|
||||
</div>
|
||||
</el-image>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-button size="mini" @click="fileUpload()">上传图片</el-button>
|
||||
<el-button size="mini" @click="fileDelete()">删除</el-button>
|
||||
<p>图片小于 200 KB,jpg、png格式。</p>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="名称" prop="name">
|
||||
<el-col :span="18">
|
||||
<el-input v-model="model.name" placeholder="请输入名称" clearable />
|
||||
</el-col>
|
||||
<el-col :span="3" style="text-align:center">名称颜色</el-col>
|
||||
<el-col :span="3">
|
||||
<el-color-picker v-model="model.name_color" />
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="链接" prop="url">
|
||||
<el-col :span="18">
|
||||
<el-input v-model="model.url" placeholder="请输入链接" clearable />
|
||||
</el-col>
|
||||
<el-col :span="3" style="text-align:center">下划线</el-col>
|
||||
<el-col :span="3">
|
||||
<el-switch v-model="model.underline" :active-value="1" :inactive-value="0" />
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="描述" prop="desc">
|
||||
<el-input v-model="model.desc" type="textarea" :autosize="{ minRows: 2, maxRows: 5}" placeholder="请输入描述" />
|
||||
</el-form-item>
|
||||
<el-form-item label="有效期" prop="expiration_date">
|
||||
<el-date-picker v-model="model.expiration_date" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" default-time="23:59:59" placeholder="有效期" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="model.remark" placeholder="" />
|
||||
</el-form-item>
|
||||
<el-form-item label="排序" prop="sort">
|
||||
<el-input v-model="model.sort" type="number" placeholder="请输入排序" />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model[idkey]" label="添加时间" prop="create_time">
|
||||
<el-input v-model="model.create_time" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model[idkey]" label="修改时间" prop="update_time">
|
||||
<el-input v-model="model.update_time" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model.delete_time" label="删除时间" prop="delete_time">
|
||||
<el-input v-model="model.delete_time" disabled />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button :loading="loading" @click="cancel">取消</el-button>
|
||||
<el-button :loading="loading" type="primary" @click="submit">提交</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<!-- 文件管理 -->
|
||||
<el-dialog title="上传图片" :visible.sync="fileDialog" width="80%" top="1vh" :close-on-click-modal="false" :close-on-press-escape="false">
|
||||
<file-manage file-type="image" @fileCancel="fileCancel" @fileSubmit="fileSubmit" />
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import screenHeight from '@/utils/screen-height'
|
||||
import Pagination from '@/components/Pagination'
|
||||
import FileManage from '@/components/FileManage'
|
||||
import { arrayColumn } from '@/utils/index'
|
||||
import { list, info, add, edit, dele, expiration, disable } from '@/api/setting/link'
|
||||
|
||||
export default {
|
||||
name: 'SettingLink',
|
||||
components: { Pagination, FileManage },
|
||||
data() {
|
||||
return {
|
||||
name: '友链',
|
||||
height: 680,
|
||||
loading: false,
|
||||
idkey: 'link_id',
|
||||
exps: [{ exp: 'like', name: '包含' }],
|
||||
query: { page: 1, limit: 12, search_field: 'name', search_exp: 'like', date_field: 'create_time' },
|
||||
data: [],
|
||||
count: 0,
|
||||
dialog: false,
|
||||
dialogTitle: '',
|
||||
model: {
|
||||
link_id: '',
|
||||
unique: '',
|
||||
image_id: 0,
|
||||
image_url: '',
|
||||
name: '',
|
||||
name_color: '#606266',
|
||||
url: '',
|
||||
desc: '',
|
||||
expiration_date: '2099-12-31 23:59:59',
|
||||
underline: 0,
|
||||
remark: '',
|
||||
sort: 250
|
||||
},
|
||||
rules: {
|
||||
name: [{ required: true, message: '请输入名称', trigger: 'blur' }],
|
||||
expiration_date: [{ required: true, message: '请输入有效期', trigger: 'blur' }]
|
||||
},
|
||||
types: [],
|
||||
selection: [],
|
||||
selectIds: '',
|
||||
selectTitle: '选中操作',
|
||||
selectDialog: false,
|
||||
selectType: '',
|
||||
expiration_date: '',
|
||||
is_disable: 0,
|
||||
fileDialog: false
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.height = screenHeight()
|
||||
this.list()
|
||||
},
|
||||
methods: {
|
||||
// 列表
|
||||
list() {
|
||||
this.loading = true
|
||||
list(this.query).then(res => {
|
||||
this.data = res.data.list
|
||||
this.count = res.data.count
|
||||
this.exps = res.data.exps
|
||||
this.loading = false
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
// 添加修改
|
||||
add() {
|
||||
this.dialog = true
|
||||
this.dialogTitle = this.name + '添加'
|
||||
this.reset()
|
||||
},
|
||||
edit(row) {
|
||||
this.dialog = true
|
||||
this.dialogTitle = this.name + '修改:' + row[this.idkey]
|
||||
var id = {}
|
||||
id[this.idkey] = row[this.idkey]
|
||||
info(id).then(res => {
|
||||
this.reset(res.data)
|
||||
}).catch(() => { })
|
||||
},
|
||||
cancel() {
|
||||
this.dialog = false
|
||||
this.reset()
|
||||
},
|
||||
submit() {
|
||||
this.$refs['ref'].validate(valid => {
|
||||
if (valid) {
|
||||
this.loading = true
|
||||
if (this.model[this.idkey]) {
|
||||
edit(this.model).then(res => {
|
||||
this.list()
|
||||
this.dialog = false
|
||||
this.$message.success(res.msg)
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
})
|
||||
} else {
|
||||
add(this.model).then(res => {
|
||||
this.list()
|
||||
this.dialog = false
|
||||
this.$message.success(res.msg)
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
// 重置
|
||||
reset(row) {
|
||||
if (row) {
|
||||
this.model = row
|
||||
} else {
|
||||
this.model = this.$options.data().model
|
||||
}
|
||||
if (this.$refs['ref'] !== undefined) {
|
||||
this.$refs['ref'].resetFields()
|
||||
this.$refs['ref'].clearValidate()
|
||||
}
|
||||
},
|
||||
// 查询
|
||||
search() {
|
||||
this.query.page = 1
|
||||
this.list()
|
||||
},
|
||||
// 刷新
|
||||
refresh() {
|
||||
const limit = this.query.limit
|
||||
this.query = this.$options.data().query
|
||||
this.$refs['table'].clearSort()
|
||||
this.query.limit = limit
|
||||
this.list()
|
||||
},
|
||||
// 排序
|
||||
sort(sort) {
|
||||
this.query.sort_field = sort.prop
|
||||
this.query.sort_value = ''
|
||||
if (sort.order === 'ascending') {
|
||||
this.query.sort_value = 'asc'
|
||||
this.list()
|
||||
}
|
||||
if (sort.order === 'descending') {
|
||||
this.query.sort_value = 'desc'
|
||||
this.list()
|
||||
}
|
||||
},
|
||||
// 选中操作
|
||||
select(selection) {
|
||||
this.selection = selection
|
||||
this.selectIds = this.selectGetIds(selection).toString()
|
||||
},
|
||||
selectGetIds(selection) {
|
||||
return arrayColumn(selection, this.idkey)
|
||||
},
|
||||
selectAlert() {
|
||||
this.$alert('请选择需要操作的' + this.name, '提示', { type: 'warning', callback: action => { } })
|
||||
},
|
||||
selectOpen(selectType, selectRow = '') {
|
||||
if (selectRow) {
|
||||
this.$refs['table'].clearSelection()
|
||||
this.$refs['table'].toggleRowSelection(selectRow)
|
||||
}
|
||||
if (!this.selection.length) {
|
||||
this.selectAlert()
|
||||
} else {
|
||||
this.selectTitle = '选中操作'
|
||||
if (selectType === 'dele') {
|
||||
this.selectTitle = this.name + '删除'
|
||||
} else if (selectType === 'disable') {
|
||||
this.selectTitle = this.name + '是否禁用'
|
||||
} else if (selectType === 'expiration') {
|
||||
this.selectTitle = this.name + '修改有效期'
|
||||
}
|
||||
this.selectDialog = true
|
||||
this.selectType = selectType
|
||||
}
|
||||
},
|
||||
selectCancel() {
|
||||
this.selectDialog = false
|
||||
},
|
||||
selectSubmit() {
|
||||
if (!this.selection.length) {
|
||||
this.selectAlert()
|
||||
} else {
|
||||
const selectType = this.selectType
|
||||
if (selectType === 'dele') {
|
||||
this.dele(this.selection)
|
||||
} else if (selectType === 'disable') {
|
||||
this.disable(this.selection, true)
|
||||
} else if (selectType === 'expiration') {
|
||||
this.expiration(this.selection)
|
||||
}
|
||||
this.selectDialog = false
|
||||
}
|
||||
},
|
||||
// 删除
|
||||
dele(row) {
|
||||
if (!row.length) {
|
||||
this.selectAlert()
|
||||
} else {
|
||||
dele({
|
||||
ids: this.selectGetIds(row)
|
||||
}).then(res => {
|
||||
this.list()
|
||||
this.$message.success(res.msg)
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
})
|
||||
}
|
||||
},
|
||||
// 是否禁用
|
||||
disable(row, select = false) {
|
||||
if (!row.length) {
|
||||
this.selectAlert()
|
||||
} else {
|
||||
this.loading = true
|
||||
var is_disable = row[0].is_disable
|
||||
if (select) {
|
||||
is_disable = this.is_disable
|
||||
}
|
||||
disable({
|
||||
ids: this.selectGetIds(row),
|
||||
is_disable: is_disable
|
||||
}).then(res => {
|
||||
this.list()
|
||||
this.$message.success(res.msg)
|
||||
}).catch(() => {
|
||||
this.list()
|
||||
})
|
||||
}
|
||||
},
|
||||
// 修改有效期
|
||||
expiration(row) {
|
||||
if (!row.length) {
|
||||
this.selectAlert()
|
||||
} else {
|
||||
this.loading = true
|
||||
expiration({
|
||||
ids: this.selectGetIds(row),
|
||||
expiration_date: this.expiration_date,
|
||||
end_time: this.end_time
|
||||
}).then(res => {
|
||||
this.list()
|
||||
this.$message.success(res.msg)
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
})
|
||||
}
|
||||
},
|
||||
// 上传图片
|
||||
fileUpload() {
|
||||
this.fileDialog = true
|
||||
},
|
||||
fileCancel() {
|
||||
this.fileDialog = false
|
||||
},
|
||||
fileSubmit(fileList) {
|
||||
this.fileDialog = false
|
||||
const fileLength = fileList.length
|
||||
if (fileLength) {
|
||||
const i = fileLength - 1
|
||||
this.model.image_id = fileList[i]['file_id']
|
||||
this.model.image_url = fileList[i]['file_url']
|
||||
}
|
||||
},
|
||||
fileDelete() {
|
||||
this.model.image_id = 0
|
||||
this.model.image_url = ''
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
|
@ -9,6 +9,8 @@
|
|||
<el-option :value="idkey" label="ID" />
|
||||
<el-option value="type" label="类型" />
|
||||
<el-option value="title" label="标题" />
|
||||
<el-option value="desc" label="描述" />
|
||||
<el-option value="remark" label="备注" />
|
||||
<el-option value="is_disable" label="禁用" />
|
||||
</el-select>
|
||||
<el-select v-model="query.search_exp" class="filter-item ya-search-exp">
|
||||
|
@ -28,7 +30,7 @@
|
|||
<el-option value="start_time" label="开始时间" />
|
||||
<el-option value="end_time" label="结束时间" />
|
||||
</el-select>
|
||||
<el-date-picker v-model="query.date_value" type="daterange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd" />
|
||||
<el-date-picker v-model="query.date_value" type="datetimerange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00','23:59:59']" value-format="yyyy-MM-dd HH:mm:ss" />
|
||||
<el-button class="filter-item" type="primary" title="查询/刷新" @click="search()">查询</el-button>
|
||||
<el-button class="filter-item" icon="el-icon-refresh" title="重置" @click="refresh()" />
|
||||
</el-col>
|
||||
|
@ -92,16 +94,16 @@
|
|||
<span :style="{'color':scope.row.title_color}">{{ scope.row.title }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="start_time" label="开始时间" min-width="160" sortable="custom" />
|
||||
<el-table-column prop="end_time" label="结束时间" min-width="160" sortable="custom" />
|
||||
<el-table-column prop="start_time" label="开始时间" width="155" sortable="custom" />
|
||||
<el-table-column prop="end_time" label="结束时间" width="155" sortable="custom" />
|
||||
<el-table-column prop="is_disable" label="禁用" min-width="75" sortable="custom">
|
||||
<template slot-scope="scope">
|
||||
<el-switch v-model="scope.row.is_disable" :active-value="1" :inactive-value="0" @change="disable([scope.row])" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="sort" label="排序" min-width="75" sortable="custom" />
|
||||
<el-table-column prop="create_time" label="添加时间" min-width="155" sortable="custom" />
|
||||
<el-table-column prop="update_time" label="修改时间" min-width="155" sortable="custom" />
|
||||
<el-table-column prop="create_time" label="添加时间" width="155" sortable="custom" />
|
||||
<el-table-column prop="update_time" label="修改时间" width="155" sortable="custom" />
|
||||
<el-table-column label="操作" width="90">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" @click="edit(scope.row)">修改</el-button>
|
||||
|
@ -134,19 +136,25 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="标题" prop="title">
|
||||
<el-input v-model="model.title" placeholder="请输入标题" clearable />
|
||||
<el-col :span="18">
|
||||
<el-input v-model="model.title" placeholder="请输入标题" clearable />
|
||||
</el-col>
|
||||
<el-col :span="3" class="ya-center">标题颜色</el-col>
|
||||
<el-col :span="3">
|
||||
<el-color-picker v-model="model.title_color" />
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="标题颜色" prop="title_color">
|
||||
<el-color-picker v-model="model.title_color" />
|
||||
</el-form-item>
|
||||
<el-form-item label="简介" prop="intro">
|
||||
<el-input v-model="model.intro" type="textarea" placeholder="请输入简介" :autosize="{ minRows: 2, maxRows: 5}" />
|
||||
<el-form-item label="描述" prop="desc">
|
||||
<el-input v-model="model.desc" type="textarea" autosize placeholder="请输入描述" />
|
||||
</el-form-item>
|
||||
<el-form-item label="开始时间" prop="start_time">
|
||||
<el-date-picker v-model="model.start_time" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" default-time="00:00:00" placeholder="禁用开始时间" />
|
||||
<el-date-picker v-model="model.start_time" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" default-time="00:00:00" placeholder="开始时间" />
|
||||
</el-form-item>
|
||||
<el-form-item label="结束时间" prop="end_time">
|
||||
<el-date-picker v-model="model.end_time" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" default-time="23:59:59" placeholder="禁用结束时间" />
|
||||
<el-date-picker v-model="model.end_time" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" default-time="23:59:59" placeholder="结束时间" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="model.remark" placeholder="请输入备注" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="排序" prop="sort">
|
||||
<el-input v-model="model.sort" type="number" placeholder="请输入排序" />
|
||||
|
@ -193,7 +201,7 @@ export default {
|
|||
height: 680,
|
||||
loading: false,
|
||||
idkey: 'notice_id',
|
||||
exps: [],
|
||||
exps: [{ exp: 'like', name: '包含' }],
|
||||
query: { page: 1, limit: 12, search_field: 'title', search_exp: 'like', date_field: 'create_time' },
|
||||
data: [],
|
||||
count: 0,
|
||||
|
@ -208,8 +216,9 @@ export default {
|
|||
title_color: '#606266',
|
||||
start_time: '',
|
||||
end_time: '',
|
||||
intro: '',
|
||||
desc: '',
|
||||
content: '',
|
||||
remark: '',
|
||||
sort: 250
|
||||
},
|
||||
rules: {
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
<el-option value="create_time" label="添加时间" />
|
||||
<el-option value="update_time" label="修改时间" />
|
||||
</el-select>
|
||||
<el-date-picker v-model="query.date_value" type="daterange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd" />
|
||||
<el-date-picker v-model="query.date_value" type="datetimerange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00','23:59:59']" value-format="yyyy-MM-dd HH:mm:ss" />
|
||||
<el-button class="filter-item" type="primary" title="查询/刷新" @click="search()">查询</el-button>
|
||||
<el-button class="filter-item" icon="el-icon-refresh" title="重置" @click="refresh()" />
|
||||
</el-col>
|
||||
|
@ -91,6 +91,11 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-row>
|
||||
<el-descriptions title="" :column="12" :colon="false" size="medium">
|
||||
<el-descriptions-item label="">共 {{ count }} 条</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-row>
|
||||
<!-- 添加修改 -->
|
||||
<el-dialog :title="dialogTitle" :visible.sync="dialog" top="5vh" :before-close="cancel" :close-on-click-modal="false" :close-on-press-escape="false">
|
||||
<el-form ref="ref" :rules="rules" :model="model" label-width="100px" class="dialog-body" :style="{height:height-50+'px'}">
|
||||
|
@ -128,12 +133,12 @@
|
|||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="经度" prop="region_longitude">
|
||||
<el-input v-model="model.region_longitude" placeholder="请输入经度,eg:116.403263" clearable>
|
||||
<el-input v-model="model.region_longitude" placeholder="请输入经度(高德),eg:116.403263" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" title="复制" @click="copy(model.region_longitude, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="纬度" prop="region_latitude">
|
||||
<el-input v-model="model.region_latitude" placeholder="请输入纬度,eg:39.915156" clearable>
|
||||
<el-input v-model="model.region_latitude" placeholder="请输入纬度(高德),eg:39.915156" clearable>
|
||||
<el-button slot="append" icon="el-icon-document-copy" title="复制" @click="copy(model.region_latitude, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
|
@ -142,6 +147,16 @@
|
|||
<el-button slot="append" icon="el-icon-document-copy" title="复制" @click="copy(model.sort, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model[idkey]" label="完整名称" prop="region_fullname">
|
||||
<el-input v-model="model.region_fullname" placeholder="" disabled>
|
||||
<el-button slot="append" icon="el-icon-document-copy" title="复制" @click="copy(model.region_fullname, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model[idkey]" label="完整拼音" prop="region_fullname_py">
|
||||
<el-input v-model="model.region_fullname_py" placeholder="" disabled>
|
||||
<el-button slot="append" icon="el-icon-document-copy" title="复制" @click="copy(model.region_fullname_py, $event)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model[idkey]" label="添加时间" prop="create_time">
|
||||
<el-input v-model="model.create_time" placeholder="" disabled />
|
||||
</el-form-item>
|
||||
|
@ -176,7 +191,7 @@ export default {
|
|||
loading: false,
|
||||
idkey: 'region_id',
|
||||
tbKey: 1,
|
||||
exps: [],
|
||||
exps: [{ exp: 'like', name: '包含' }],
|
||||
query: { search_field: 'region_name', search_exp: 'like', date_field: 'create_time' },
|
||||
data: [],
|
||||
dialog: false,
|
||||
|
@ -207,7 +222,8 @@ export default {
|
|||
region_pid: 0,
|
||||
region_citycode: '',
|
||||
region_zipcode: '',
|
||||
is_disable: 0
|
||||
is_disable: 0,
|
||||
count: ''
|
||||
}
|
||||
},
|
||||
created() {
|
||||
|
@ -222,6 +238,7 @@ export default {
|
|||
this.data = res.data.list
|
||||
this.trees = res.data.tree
|
||||
this.exps = res.data.exps
|
||||
this.count = res.data.count
|
||||
this.loading = false
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
|
|
|
@ -1,48 +1,9 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<!-- 内容设置 -->
|
||||
<el-card>
|
||||
<el-form ref="ref" :model="model" :rules="rules" label-width="120px">
|
||||
<el-tabs>
|
||||
<el-tab-pane label="设置管理" name="" class="dialog-body" :style="{ height: height + 'px' }">
|
||||
<el-form-item label="反馈管理" prop="is_feedback">
|
||||
<el-col :span="3">
|
||||
<el-switch v-model="model.is_feedback" :active-value="1" :inactive-value="0" />
|
||||
</el-col>
|
||||
<el-col :span="21">
|
||||
<span>反馈是否开启,关闭后前台无法提交反馈。</span>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="自定义设置">
|
||||
<el-col :span="3">
|
||||
键名
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
键值
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
说明
|
||||
</el-col>
|
||||
<el-col :span="2">
|
||||
<el-button type="primary" @click="add()">增加</el-button>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item v-for="(item, index) in model.diy_config" :key="index" label="">
|
||||
<el-col :span="3">
|
||||
<el-input v-model="item.config_key" clearable placeholder="请输入键名" />
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-input v-model="item.config_val" clearable placeholder="请输入键值" />
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-input v-model="item.config_desc" clearable placeholder="请输入说明" />
|
||||
</el-col>
|
||||
<el-col :span="2">
|
||||
<el-button type="text" @click="dele(index)">删除</el-button>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="基本信息" name="" class="dialog-body" :style="{ height: height + 'px' }">
|
||||
<el-tab-pane label="基本信息" class="dialog-body" :style="{ height: height + 'px' }">
|
||||
<el-form-item label="favicon" prop="favicon_id">
|
||||
<el-col :span="6" style="height:100px">
|
||||
<el-image v-if="model.favicon_url" style="height:100px" fit="contain" :src="model.favicon_url" :preview-src-list="[model.favicon_url]" title="点击看大图">
|
||||
|
@ -88,7 +49,7 @@
|
|||
</el-form-item>
|
||||
<el-form-item label="描述" prop="description">
|
||||
<el-col :span="12">
|
||||
<el-input v-model="model.description" type="textarea" placeholder="description" :autosize="{ minRows: 2, maxRows: 20 }" />
|
||||
<el-input v-model="model.description" type="textarea" :autosize="{ minRows: 2, maxRows: 20 }" placeholder="description" />
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="备案号" prop="icp">
|
||||
|
@ -102,7 +63,7 @@
|
|||
</el-col>
|
||||
</el-form-item>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="联系信息" name="" class="dialog-body" :style="{ height: height + 'px' }">
|
||||
<el-tab-pane label="联系信息" class="dialog-body" :style="{ height: height + 'px' }">
|
||||
<el-form-item label="公众号" prop="offi_id">
|
||||
<el-col :span="6" style="height:100px">
|
||||
<el-image v-if="model.offi_url" style="height:100px" fit="contain" :src="model.offi_url" :preview-src-list="[model.offi_url]" title="点击看大图">
|
||||
|
@ -174,7 +135,6 @@
|
|||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<!-- 文件管理 -->
|
||||
<el-dialog :title="fileTitle" :visible.sync="fileDialog" width="80%" top="1vh" :close-on-click-modal="false" :close-on-press-escape="false">
|
||||
<file-manage file-type="image" @fileCancel="fileCancel" @fileSubmit="fileSubmit" />
|
||||
</el-dialog>
|
||||
|
@ -215,10 +175,8 @@ export default {
|
|||
fax: '',
|
||||
mobile: '',
|
||||
email: '',
|
||||
qq: '',
|
||||
wechat: '',
|
||||
is_feedback: 1,
|
||||
diy_config: []
|
||||
qq: ''
|
||||
},
|
||||
rules: {},
|
||||
fileDialog: false,
|
||||
|
@ -237,20 +195,6 @@ export default {
|
|||
this.model = res.data
|
||||
})
|
||||
},
|
||||
// 增加
|
||||
add() {
|
||||
this.model.diy_config.push({ config_key: '', config_val: '', config_desc: '' })
|
||||
},
|
||||
// 删除
|
||||
dele(index) {
|
||||
this.$confirm('确定要删除吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.model.diy_config.splice(index, 1)
|
||||
}).catch(() => { })
|
||||
},
|
||||
// 刷新
|
||||
refresh() {
|
||||
this.loading = true
|
||||
|
|
|
@ -1,33 +0,0 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<el-tabs>
|
||||
<el-tab-pane v-if="checkPermission(['admin/setting.Wechat/offiInfo'])" label="公众号" lazy>
|
||||
<wechat-offi />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane v-if="checkPermission(['admin/setting.Wechat/miniInfo'])" label="小程序" lazy>
|
||||
<wechat-mini />
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import checkPermission from '@/utils/permission' // 权限判断函数
|
||||
import WechatOffi from './components/WechatOffi'
|
||||
import WechatMini from './components/WechatMini'
|
||||
|
||||
export default {
|
||||
name: 'SettingWechat',
|
||||
components: { WechatOffi, WechatMini },
|
||||
data() {
|
||||
return {
|
||||
name: '微信设置'
|
||||
}
|
||||
},
|
||||
created() {
|
||||
},
|
||||
methods: {
|
||||
checkPermission
|
||||
}
|
||||
}
|
||||
</script>
|
|
@ -93,7 +93,7 @@ export default {
|
|||
idkey: 'notice_id',
|
||||
query: { page: 1, limit: 10 },
|
||||
data: [],
|
||||
exps: [],
|
||||
exps: [{ exp: 'like', name: '包含' }],
|
||||
count: 0,
|
||||
dialog: false,
|
||||
dialogTitle: '公告',
|
||||
|
|
|
@ -58,7 +58,7 @@
|
|||
<el-input v-model="model.email_test" type="text" clearable />
|
||||
</el-col>
|
||||
<el-col :span="16">
|
||||
<el-button :loading="loading" type="primary" title="先提交再发送" @click="test()">发送测试邮件</el-button>
|
||||
<el-button :loading="loading" type="text" title="先提交再发送" @click="test()">发送测试邮件</el-button>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
|
|
|
@ -2,7 +2,10 @@
|
|||
<el-card class="dialog-body" :style="{ height: height + 'px' }">
|
||||
<el-row :gutter="8">
|
||||
<el-col :span="12">
|
||||
<el-form :model="model" label-width="150px">
|
||||
<el-form :model="model" label-width="150px" size="small">
|
||||
<el-form-item label="ThinkPHP">
|
||||
<el-input v-model="model.thinkphp" />
|
||||
</el-form-item>
|
||||
<el-form-item label="OS">
|
||||
<el-input v-model="model.system_info" />
|
||||
</el-form-item>
|
||||
|
@ -42,11 +45,11 @@
|
|||
</el-form>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form :model="model" label-width="150px">
|
||||
<el-form :model="model" label-width="150px" size="small">
|
||||
<el-form-item label="缓存类型" prop="type">
|
||||
<el-input v-model="model.type" />
|
||||
<el-input v-model="model.cache_type" />
|
||||
</el-form-item>
|
||||
<div v-if="model.type === 'redis'">
|
||||
<div v-if="model.cache_type === 'redis'">
|
||||
<el-form-item label="Redis" prop="">
|
||||
<el-input v-model="model.redis_version" />
|
||||
</el-form-item>
|
||||
|
@ -83,7 +86,7 @@
|
|||
</el-form-item>
|
||||
</template>
|
||||
</div>
|
||||
<div v-else-if="model.type === 'memcache'">
|
||||
<div v-else-if="model.cache_type === 'memcache'">
|
||||
<el-form-item label="memcache" prop="">
|
||||
<el-input v-model="model.version" />
|
||||
</el-form-item>
|
||||
|
@ -118,7 +121,7 @@
|
|||
<el-input v-model="model.time" />
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div v-else-if="model.type === 'wincache'">
|
||||
<div v-else-if="model.cache_type === 'wincache'">
|
||||
<el-form-item label="缓存信息" prop="wincache_info">
|
||||
<pre>{{ model.wincache_info }}</pre>
|
||||
</el-form-item>
|
||||
|
@ -126,7 +129,7 @@
|
|||
</el-form>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form :model="model" label-width="150px">
|
||||
<el-form :model="model" label-width="150px" size="small">
|
||||
<el-form-item>
|
||||
<el-button :loading="loading" title="刷新" @click="refresh()">刷新</el-button>
|
||||
</el-form-item>
|
||||
|
@ -178,4 +181,7 @@ export default {
|
|||
</script>
|
||||
|
||||
<style scoped>
|
||||
.my-label {
|
||||
color: #303133;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
<el-option :value="2" label="操作日志" />
|
||||
</el-select>
|
||||
<el-input v-else v-model="query.search_value" class="filter-item ya-search-value" placeholder="查询内容" clearable />
|
||||
<el-date-picker v-model="query.date_value" type="daterange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd" />
|
||||
<el-date-picker v-model="query.date_value" type="datetimerange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00','23:59:59']" value-format="yyyy-MM-dd HH:mm:ss" />
|
||||
<el-button class="filter-item" type="primary" title="查询/刷新" @click="search()">查询</el-button>
|
||||
<el-button class="filter-item" icon="el-icon-refresh" title="重置" @click="refresh()" />
|
||||
</el-col>
|
||||
|
@ -57,11 +57,12 @@ export default {
|
|||
height: 680,
|
||||
loading: true,
|
||||
idkey: 'log_id',
|
||||
exps: [],
|
||||
exps: [{ exp: 'like', name: '包含' }],
|
||||
query: {
|
||||
page: 1,
|
||||
limit: 12,
|
||||
search_field: 'request_region',
|
||||
search_exp: 'like',
|
||||
date_field: 'create_time'
|
||||
},
|
||||
data: [],
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
<el-option value="dept_name" label="名称" />
|
||||
<el-option value="dept_abbr" label="简称" />
|
||||
<el-option value="dept_desc" label="描述" />
|
||||
<el-option value="remark" label="备注" />
|
||||
<el-option value="is_disable" label="禁用" />
|
||||
</el-select>
|
||||
<el-select v-model="query.search_exp" class="filter-item ya-search-exp">
|
||||
|
@ -26,7 +27,7 @@
|
|||
<el-option value="create_time" label="添加时间" />
|
||||
<el-option value="update_time" label="修改时间" />
|
||||
</el-select>
|
||||
<el-date-picker v-model="query.date_value" type="daterange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd" />
|
||||
<el-date-picker v-model="query.date_value" type="datetimerange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00','23:59:59']" value-format="yyyy-MM-dd HH:mm:ss" />
|
||||
<el-button class="filter-item" type="primary" title="查询/刷新" @click="search()">查询</el-button>
|
||||
<el-button class="filter-item" icon="el-icon-refresh" title="重置" @click="refresh()" />
|
||||
</el-col>
|
||||
|
@ -79,8 +80,8 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="sort" label="排序" min-width="75" />
|
||||
<el-table-column prop="create_time" label="添加时间" min-width="155" />
|
||||
<el-table-column prop="update_time" label="修改时间" min-width="155" />
|
||||
<el-table-column prop="create_time" label="添加时间" width="155" />
|
||||
<el-table-column prop="update_time" label="修改时间" width="155" />
|
||||
<el-table-column label="操作" width="155">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" @click="userShow(scope.row)">用户</el-button>
|
||||
|
@ -90,6 +91,11 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-row>
|
||||
<el-descriptions title="" :column="12" :colon="false" size="medium">
|
||||
<el-descriptions-item label="">共 {{ count }} 条</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-row>
|
||||
<!-- 添加修改 -->
|
||||
<el-dialog :title="dialogTitle" :visible.sync="dialog" top="5vh" :before-close="cancel" :close-on-click-modal="false" :close-on-press-escape="false" destroy-on-close>
|
||||
<el-form ref="ref" :rules="rules" :model="model" class="dialog-body" label-width="100px" :style="{height:height+'px'}">
|
||||
|
@ -103,7 +109,7 @@
|
|||
<el-input v-model="model.dept_abbr" placeholder="请输入部门简称" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="描述" prop="dept_desc">
|
||||
<el-input v-model="model.dept_desc" placeholder="请输入部门描述" clearable />
|
||||
<el-input v-model="model.dept_desc" type="textarea" autosize placeholder="请输入部门描述" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="电话" prop="dept_tel">
|
||||
<el-input v-model="model.dept_tel" placeholder="" clearable />
|
||||
|
@ -117,6 +123,9 @@
|
|||
<el-form-item label="地址" prop="dept_addr">
|
||||
<el-input v-model="model.dept_addr" placeholder="" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="model.remark" placeholder="" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="排序" prop="sort">
|
||||
<el-input v-model="model.sort" placeholder="250" clearable />
|
||||
</el-form-item>
|
||||
|
@ -202,7 +211,7 @@ export default {
|
|||
height: 680,
|
||||
loading: false,
|
||||
idkey: 'dept_id',
|
||||
exps: [],
|
||||
exps: [{ exp: 'like', name: '包含' }],
|
||||
query: { search_field: 'dept_name', search_exp: 'like', date_field: 'create_time' },
|
||||
data: [],
|
||||
dialog: false,
|
||||
|
@ -217,6 +226,7 @@ export default {
|
|||
dept_fax: '',
|
||||
dept_email: '',
|
||||
dept_addr: '',
|
||||
remark: '',
|
||||
sort: 250
|
||||
},
|
||||
rules: {
|
||||
|
@ -244,7 +254,8 @@ export default {
|
|||
userSelectIds: '',
|
||||
userSelectTitle: '选中操作',
|
||||
userSelectDialog: false,
|
||||
userSelectType: ''
|
||||
userSelectType: '',
|
||||
count: ''
|
||||
}
|
||||
},
|
||||
created() {
|
||||
|
@ -259,6 +270,7 @@ export default {
|
|||
this.data = res.data.list
|
||||
this.trees = res.data.tree
|
||||
this.exps = res.data.exps
|
||||
this.count = res.data.count
|
||||
this.isExpandAll = false
|
||||
this.loading = false
|
||||
}).catch(() => {
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
<el-option value="create_time" label="添加时间" />
|
||||
<el-option value="update_time" label="修改时间" />
|
||||
</el-select>
|
||||
<el-date-picker v-model="query.date_value" type="daterange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd" />
|
||||
<el-date-picker v-model="query.date_value" type="datetimerange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00','23:59:59']" value-format="yyyy-MM-dd HH:mm:ss" />
|
||||
<el-button class="filter-item" type="primary" title="查询/刷新" @click="search()">查询</el-button>
|
||||
<el-button class="filter-item" icon="el-icon-refresh" title="重置" @click="refresh()" />
|
||||
</el-col>
|
||||
|
@ -154,6 +154,11 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-row>
|
||||
<el-descriptions title="" :column="12" :colon="false" size="medium">
|
||||
<el-descriptions-item label="">共 {{ count }} 条</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-row>
|
||||
<!-- 添加修改 -->
|
||||
<el-dialog :title="dialogTitle" :visible.sync="dialog" top="5vh" :before-close="cancel" :close-on-click-modal="false" :close-on-press-escape="false">
|
||||
<el-form ref="ref" :rules="rules" :model="model" label-width="100px" class="dialog-body" :style="{height:height-50+'px'}">
|
||||
|
@ -250,6 +255,7 @@
|
|||
<el-checkbox v-model="model.add_add">添加</el-checkbox>
|
||||
<el-checkbox v-model="model.add_edit">修改</el-checkbox>
|
||||
<el-checkbox v-model="model.add_dele">删除</el-checkbox>
|
||||
<el-checkbox v-model="model.add_disable">禁用</el-checkbox>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model.menu_type===1" v-show="model[idkey]" label="快速修改" prop="edit">
|
||||
<el-button icon="el-icon-question" class="ya-margin-right" title="快速修改,需要输入菜单链接:应用/控制器/操作;区分大小写" />
|
||||
|
@ -257,6 +263,7 @@
|
|||
<el-checkbox v-model="model.edit_add">添加</el-checkbox>
|
||||
<el-checkbox v-model="model.edit_edit">修改</el-checkbox>
|
||||
<el-checkbox v-model="model.edit_dele">删除</el-checkbox>
|
||||
<el-checkbox v-model="model.edit_disable">禁用</el-checkbox>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="model[idkey]" label="添加时间" prop="create_time">
|
||||
<el-input v-model="model.create_time" disabled />
|
||||
|
@ -337,7 +344,7 @@ export default {
|
|||
height: 680,
|
||||
loading: false,
|
||||
idkey: 'menu_id',
|
||||
exps: [],
|
||||
exps: [{ exp: 'like', name: '包含' }],
|
||||
query: { search_field: 'menu_name', search_exp: 'like', date_field: 'create_time' },
|
||||
data: [],
|
||||
dialog: false,
|
||||
|
@ -359,10 +366,12 @@ export default {
|
|||
add_add: false,
|
||||
add_edit: false,
|
||||
add_dele: false,
|
||||
add_disable: false,
|
||||
edit_info: false,
|
||||
edit_add: false,
|
||||
edit_edit: false,
|
||||
edit_dele: false
|
||||
edit_dele: false,
|
||||
edit_disable: false
|
||||
},
|
||||
rules: {
|
||||
menu_name: [{ required: true, message: '请输入菜单名称', trigger: 'blur' }],
|
||||
|
@ -397,7 +406,8 @@ export default {
|
|||
roleSelectIds: '',
|
||||
roleSelectTitle: '选中操作',
|
||||
roleSelectDialog: false,
|
||||
roleSelectType: ''
|
||||
roleSelectType: '',
|
||||
count: ''
|
||||
}
|
||||
},
|
||||
created() {
|
||||
|
@ -412,6 +422,7 @@ export default {
|
|||
this.data = res.data.list
|
||||
this.trees = res.data.tree
|
||||
this.exps = res.data.exps
|
||||
this.count = res.data.count
|
||||
this.isExpandAll = false
|
||||
this.loading = false
|
||||
}).catch(() => {
|
||||
|
@ -475,8 +486,8 @@ export default {
|
|||
this.$refs['ref'].resetFields()
|
||||
this.$refs['ref'].clearValidate()
|
||||
}
|
||||
this.model.add_info = this.model.add_add = this.model.add_edit = this.model.add_dele = false
|
||||
this.model.edit_info = this.model.edit_add = this.model.edit_edit = this.model.edit_dele = false
|
||||
this.model.add_info = this.model.add_add = this.model.add_edit = this.model.add_dele = this.model.add_disable = false
|
||||
this.model.edit_info = this.model.edit_add = this.model.edit_edit = this.model.edit_dele = this.model.edit_disable = false
|
||||
},
|
||||
// 查询
|
||||
search() {
|
||||
|
|
|
@ -8,6 +8,8 @@
|
|||
<el-select v-model="query.search_field" class="filter-item ya-search-field" placeholder="查询字段">
|
||||
<el-option :value="idkey" label="ID" />
|
||||
<el-option value="title" label="标题" />
|
||||
<el-option value="desc" label="描述" />
|
||||
<el-option value="remark" label="备注" />
|
||||
<el-option value="is_disable" label="禁用" />
|
||||
</el-select>
|
||||
<el-select v-model="query.search_exp" class="filter-item ya-search-exp">
|
||||
|
@ -24,7 +26,7 @@
|
|||
<el-option value="start_time" label="开始时间" />
|
||||
<el-option value="end_time" label="结束时间" />
|
||||
</el-select>
|
||||
<el-date-picker v-model="query.date_value" type="daterange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd" />
|
||||
<el-date-picker v-model="query.date_value" type="datetimerange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00','23:59:59']" value-format="yyyy-MM-dd HH:mm:ss" />
|
||||
<el-button class="filter-item" type="primary" title="查询/刷新" @click="search()">查询</el-button>
|
||||
<el-button class="filter-item" icon="el-icon-refresh" title="重置" @click="refresh()" />
|
||||
</el-col>
|
||||
|
@ -81,16 +83,16 @@
|
|||
<span :style="{'color':scope.row.title_color}">{{ scope.row.title }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="start_time" label="开始时间" min-width="160" sortable="custom" />
|
||||
<el-table-column prop="end_time" label="结束时间" min-width="160" sortable="custom" />
|
||||
<el-table-column prop="start_time" label="开始时间" width="160" sortable="custom" />
|
||||
<el-table-column prop="end_time" label="结束时间" width="160" sortable="custom" />
|
||||
<el-table-column prop="is_disable" label="禁用" min-width="75" sortable="custom">
|
||||
<template slot-scope="scope">
|
||||
<el-switch v-model="scope.row.is_disable" :active-value="1" :inactive-value="0" @change="disable([scope.row])" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="sort" label="排序" min-width="75" sortable="custom" />
|
||||
<el-table-column prop="create_time" label="添加时间" min-width="155" sortable="custom" />
|
||||
<el-table-column prop="update_time" label="修改时间" min-width="155" sortable="custom" />
|
||||
<el-table-column prop="create_time" label="添加时间" width="155" sortable="custom" />
|
||||
<el-table-column prop="update_time" label="修改时间" width="155" sortable="custom" />
|
||||
<el-table-column label="操作" width="90">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" @click="edit(scope.row)">修改</el-button>
|
||||
|
@ -118,13 +120,16 @@
|
|||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="标题" prop="title">
|
||||
<el-input v-model="model.title" placeholder="请输入标题" clearable />
|
||||
<el-col :span="18">
|
||||
<el-input v-model="model.title" placeholder="请输入标题" clearable />
|
||||
</el-col>
|
||||
<el-col :span="3" style="text-align:center">标题颜色</el-col>
|
||||
<el-col :span="3">
|
||||
<el-color-picker v-model="model.title_color" />
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="标题颜色" prop="title_color">
|
||||
<el-color-picker v-model="model.title_color" />
|
||||
</el-form-item>
|
||||
<el-form-item label="简介" prop="intro">
|
||||
<el-input v-model="model.intro" type="textarea" placeholder="请输入简介" :autosize="{ minRows: 2, maxRows: 5}" />
|
||||
<el-form-item label="简介" prop="desc">
|
||||
<el-input v-model="model.desc" type="textarea" :autosize="{ minRows: 2, maxRows: 5}" placeholder="请输入简介" />
|
||||
</el-form-item>
|
||||
<el-form-item label="开始时间" prop="start_time">
|
||||
<el-date-picker v-model="model.start_time" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" default-time="00:00:00" placeholder="禁用开始时间" />
|
||||
|
@ -132,6 +137,9 @@
|
|||
<el-form-item label="结束时间" prop="end_time">
|
||||
<el-date-picker v-model="model.end_time" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" default-time="23:59:59" placeholder="禁用结束时间" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="model.remark" placeholder="请输入备注" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="排序" prop="sort">
|
||||
<el-input v-model="model.sort" type="number" />
|
||||
</el-form-item>
|
||||
|
@ -177,7 +185,7 @@ export default {
|
|||
height: 680,
|
||||
loading: false,
|
||||
idkey: 'notice_id',
|
||||
exps: [],
|
||||
exps: [{ exp: 'like', name: '包含' }],
|
||||
query: { page: 1, limit: 12, search_field: 'title', search_exp: 'like', date_field: 'create_time' },
|
||||
data: [],
|
||||
count: 0,
|
||||
|
@ -192,8 +200,9 @@ export default {
|
|||
title_color: '#606266',
|
||||
start_time: '',
|
||||
end_time: '',
|
||||
intro: '',
|
||||
desc: '',
|
||||
content: '',
|
||||
remark: '',
|
||||
sort: 250
|
||||
},
|
||||
rules: {
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
<el-option value="post_name" label="名称" />
|
||||
<el-option value="post_abbr" label="简称" />
|
||||
<el-option value="post_desc" label="描述" />
|
||||
<el-option value="remark" label="备注" />
|
||||
<el-option value="is_disable" label="禁用" />
|
||||
</el-select>
|
||||
<el-select v-model="query.search_exp" class="filter-item ya-search-exp">
|
||||
|
@ -26,7 +27,7 @@
|
|||
<el-option value="create_time" label="添加时间" />
|
||||
<el-option value="update_time" label="修改时间" />
|
||||
</el-select>
|
||||
<el-date-picker v-model="query.date_value" type="daterange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd" />
|
||||
<el-date-picker v-model="query.date_value" type="datetimerange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00','23:59:59']" value-format="yyyy-MM-dd HH:mm:ss" />
|
||||
<el-button class="filter-item" type="primary" title="查询/刷新" @click="search()">查询</el-button>
|
||||
<el-button class="filter-item" icon="el-icon-refresh" title="重置" @click="refresh()" />
|
||||
</el-col>
|
||||
|
@ -79,8 +80,8 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="sort" label="排序" min-width="75" />
|
||||
<el-table-column prop="create_time" label="添加时间" min-width="155" sortable="custom" />
|
||||
<el-table-column prop="update_time" label="修改时间" min-width="155" sortable="custom" />
|
||||
<el-table-column prop="create_time" label="添加时间" width="155" sortable="custom" />
|
||||
<el-table-column prop="update_time" label="修改时间" width="155" sortable="custom" />
|
||||
<el-table-column label="操作" width="155">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" @click="userShow(scope.row)">用户</el-button>
|
||||
|
@ -90,6 +91,11 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-row>
|
||||
<el-descriptions title="" :column="12" :colon="false" size="medium">
|
||||
<el-descriptions-item label="">共 {{ count }} 条</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-row>
|
||||
<!-- 添加修改 -->
|
||||
<el-dialog :title="dialogTitle" :visible.sync="dialog" top="5vh" :before-close="cancel" :close-on-click-modal="false" :close-on-press-escape="false">
|
||||
<el-form ref="ref" :rules="rules" :model="model" label-width="100px" class="dialog-body" :style="{height:height+'px'}">
|
||||
|
@ -103,7 +109,10 @@
|
|||
<el-input v-model="model.post_abbr" placeholder="请输入简称" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="描述" prop="post_desc">
|
||||
<el-input v-model="model.post_desc" placeholder="请输入描述" clearable />
|
||||
<el-input v-model="model.post_desc" type="textarea" autosize placeholder="请输入描述" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="model.remark" placeholder="" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="排序" prop="sort">
|
||||
<el-input v-model="model.sort" type="number" />
|
||||
|
@ -189,16 +198,18 @@ export default {
|
|||
height: 680,
|
||||
loading: false,
|
||||
idkey: 'post_id',
|
||||
exps: [],
|
||||
exps: [{ exp: 'like', name: '包含' }],
|
||||
query: { search_field: 'post_name', search_exp: 'like', date_field: 'create_time' },
|
||||
data: [],
|
||||
dialog: false,
|
||||
dialogTitle: '',
|
||||
model: {
|
||||
post_id: '',
|
||||
post_pid: '',
|
||||
post_name: '',
|
||||
post_abbr: '',
|
||||
post_desc: '',
|
||||
remark: '',
|
||||
sort: 250
|
||||
},
|
||||
rules: {
|
||||
|
@ -226,7 +237,8 @@ export default {
|
|||
userSelectIds: '',
|
||||
userSelectTitle: '选中操作',
|
||||
userSelectDialog: false,
|
||||
userSelectType: ''
|
||||
userSelectType: '',
|
||||
count: ''
|
||||
}
|
||||
},
|
||||
created() {
|
||||
|
@ -241,6 +253,7 @@ export default {
|
|||
this.data = res.data.list
|
||||
this.trees = res.data.tree
|
||||
this.exps = res.data.exps
|
||||
this.count = res.data.count
|
||||
this.loading = false
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
<el-option :value="idkey" label="ID" />
|
||||
<el-option value="role_name" label="名称" />
|
||||
<el-option value="role_desc" label="描述" />
|
||||
<el-option value="remark" label="备注" />
|
||||
<el-option value="is_disable" label="禁用" />
|
||||
</el-select>
|
||||
<el-select v-model="query.search_exp" class="filter-item ya-search-exp">
|
||||
|
@ -23,7 +24,7 @@
|
|||
<el-option value="create_time" label="添加时间" />
|
||||
<el-option value="update_time" label="修改时间" />
|
||||
</el-select>
|
||||
<el-date-picker v-model="query.date_value" type="daterange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd" />
|
||||
<el-date-picker v-model="query.date_value" type="datetimerange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00','23:59:59']" value-format="yyyy-MM-dd HH:mm:ss" />
|
||||
<el-button class="filter-item" type="primary" title="查询/刷新" @click="search()">查询</el-button>
|
||||
<el-button class="filter-item" icon="el-icon-refresh" title="重置" @click="refresh()" />
|
||||
</el-col>
|
||||
|
@ -85,16 +86,17 @@
|
|||
<el-table ref="table" v-loading="loading" :data="data" :height="height" @sort-change="sort" @selection-change="select">
|
||||
<el-table-column type="selection" width="42" title="全选/反选" />
|
||||
<el-table-column :prop="idkey" label="ID" width="80" sortable="custom" />
|
||||
<el-table-column prop="role_name" label="名称" min-width="150" show-overflow-tooltip />
|
||||
<el-table-column prop="role_desc" label="描述" min-width="150" show-overflow-tooltip />
|
||||
<el-table-column prop="role_name" label="名称" min-width="120" show-overflow-tooltip />
|
||||
<el-table-column prop="role_desc" label="描述" min-width="160" show-overflow-tooltip />
|
||||
<el-table-column prop="remark" label="备注" min-width="150" show-overflow-tooltip />
|
||||
<el-table-column prop="is_disable" label="禁用" min-width="80" sortable="custom">
|
||||
<template slot-scope="scope">
|
||||
<el-switch v-model="scope.row.is_disable" :active-value="1" :inactive-value="0" @change="disable([scope.row])" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="sort" label="排序" min-width="80" sortable="custom" />
|
||||
<el-table-column prop="create_time" label="添加时间" min-width="155" sortable="custom" />
|
||||
<el-table-column prop="update_time" label="修改时间" min-width="155" sortable="custom" />
|
||||
<el-table-column prop="create_time" label="添加时间" width="155" sortable="custom" />
|
||||
<el-table-column prop="update_time" label="修改时间" width="155" sortable="custom" />
|
||||
<el-table-column label="操作" width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" @click="userShow(scope.row)">用户</el-button>
|
||||
|
@ -112,7 +114,10 @@
|
|||
<el-input v-model="model.role_name" placeholder="请输入名称" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="描述" prop="role_desc">
|
||||
<el-input v-model="model.role_desc" placeholder="请输入描述" clearable />
|
||||
<el-input v-model="model.role_desc" type="textarea" autosize placeholder="请输入描述" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="model.remark" placeholder="请输入备注" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="排序" prop="sort" placeholder="250">
|
||||
<el-input v-model="model.sort" type="number" />
|
||||
|
@ -220,7 +225,7 @@ export default {
|
|||
height: 680,
|
||||
loading: false,
|
||||
idkey: 'role_id',
|
||||
exps: [],
|
||||
exps: [{ exp: 'like', name: '包含' }],
|
||||
query: { page: 1, limit: 12, search_field: 'role_name', search_exp: 'like', date_field: 'create_time' },
|
||||
data: [],
|
||||
count: 0,
|
||||
|
@ -232,6 +237,7 @@ export default {
|
|||
menu_ids: [],
|
||||
role_name: '',
|
||||
role_desc: '',
|
||||
remark: '',
|
||||
sort: 250
|
||||
},
|
||||
rules: {
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
<el-option value="request_region" label="请求地区" />
|
||||
<el-option value="request_isp" label="请求ISP" />
|
||||
<el-option value="response_code" label="返回码" />
|
||||
<el-option value="response_msg" label="返回描述" />
|
||||
<el-option value="log_type" label="日志类型" />
|
||||
</el-select>
|
||||
<el-select v-model="query.search_exp" class="filter-item ya-search-exp">
|
||||
|
@ -48,7 +49,7 @@
|
|||
<el-option v-for="(item, index) in logTypes" :key="index" :value="index" :label="item" />
|
||||
</el-select>
|
||||
<el-input v-else v-model="query.search_value" class="filter-item ya-search-value" placeholder="查询内容" clearable />
|
||||
<el-date-picker v-model="query.date_value" type="daterange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd" />
|
||||
<el-date-picker v-model="query.date_value" type="datetimerange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00','23:59:59']" value-format="yyyy-MM-dd HH:mm:ss" />
|
||||
<el-button class="filter-item" type="primary" title="查询/刷新" @click="search()">查询</el-button>
|
||||
<el-button class="filter-item" icon="el-icon-refresh" title="重置" @click="refresh()" />
|
||||
</el-col>
|
||||
|
@ -90,7 +91,7 @@
|
|||
<el-table-column prop="request_isp" label="请求ISP" min-width="105" show-overflow-tooltip />
|
||||
<el-table-column prop="response_code" label="返回码" min-width="80" show-overflow-tooltip />
|
||||
<el-table-column prop="response_msg" label="返回描述" min-width="120" show-overflow-tooltip />
|
||||
<el-table-column prop="create_time" label="请求时间" min-width="155" sortable="custom" />
|
||||
<el-table-column prop="create_time" label="请求时间" width="155" sortable="custom" />
|
||||
<el-table-column label="操作" width="85">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" @click="info(scope.row)">详情</el-button>
|
||||
|
@ -143,7 +144,7 @@
|
|||
<el-input v-model="model.response_msg" type="textarea" />
|
||||
</el-form-item>
|
||||
<el-form-item label="用户代理" prop="user_agent">
|
||||
<el-input v-model="model.user_agent" type="textarea" />
|
||||
<el-input v-model="model.user_agent" type="textarea" autosize />
|
||||
</el-form-item>
|
||||
<el-form-item label="请求参数" prop="request_param">
|
||||
<el-button type="text" icon="el-icon-copy-document" title="复制参数" @click="requestParamCopy($event)" />
|
||||
|
@ -175,7 +176,7 @@ export default {
|
|||
height: 680,
|
||||
loading: false,
|
||||
idkey: 'log_id',
|
||||
exps: [],
|
||||
exps: [{ exp: 'like', name: '包含' }],
|
||||
query: { page: 1, limit: 12, search_field: 'user_id', search_exp: 'like', date_field: 'create_time' },
|
||||
data: [],
|
||||
count: 0,
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
<el-col>
|
||||
<el-select v-model="query.search_field" class="filter-item ya-search-field" placeholder="查询字段">
|
||||
<el-option :value="idkey" label="ID" />
|
||||
<el-option value="number" label="编号" />
|
||||
<el-option value="nickname" label="昵称" />
|
||||
<el-option value="username" label="账号" />
|
||||
<el-option value="phone" label="手机" />
|
||||
|
@ -15,6 +16,7 @@
|
|||
<el-option value="post_ids" label="职位" />
|
||||
<el-option value="role_ids" label="角色" />
|
||||
<el-option value="is_super" label="超管" />
|
||||
<el-option value="remark" label="备注" />
|
||||
<el-option value="is_disable" label="禁用" />
|
||||
</el-select>
|
||||
<el-select v-model="query.search_exp" class="filter-item ya-search-exp">
|
||||
|
@ -36,7 +38,7 @@
|
|||
<el-option value="login_time" label="登录时间" />
|
||||
<el-option value="logout_time" label="退出时间" />
|
||||
</el-select>
|
||||
<el-date-picker v-model="query.date_value" type="daterange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd" />
|
||||
<el-date-picker v-model="query.date_value" type="datetimerange" class="filter-item ya-date-value" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00','23:59:59']" value-format="yyyy-MM-dd HH:mm:ss" />
|
||||
<el-button class="filter-item" type="primary" title="查询/刷新" @click="search()">查询</el-button>
|
||||
<el-button class="filter-item" icon="el-icon-refresh" title="重置" @click="refresh()" />
|
||||
</el-col>
|
||||
|
@ -104,11 +106,12 @@
|
|||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="number" label="编号" min-width="73" sortable="custom" show-overflow-tooltip />
|
||||
<el-table-column prop="nickname" label="昵称" min-width="105" sortable="custom" show-overflow-tooltip />
|
||||
<el-table-column prop="username" label="账号" min-width="105" sortable="custom" show-overflow-tooltip />
|
||||
<el-table-column prop="dept_names" label="部门" min-width="155" show-overflow-tooltip />
|
||||
<el-table-column prop="post_names" label="职位" min-width="155" show-overflow-tooltip />
|
||||
<el-table-column prop="role_names" label="角色" min-width="155" show-overflow-tooltip />
|
||||
<el-table-column prop="dept_names" label="部门" min-width="150" show-overflow-tooltip />
|
||||
<el-table-column prop="post_names" label="职位" min-width="150" show-overflow-tooltip />
|
||||
<el-table-column prop="role_names" label="角色" min-width="150" show-overflow-tooltip />
|
||||
<el-table-column prop="is_super" label="超管" min-width="73" sortable="custom">
|
||||
<template slot-scope="scope">
|
||||
<el-switch v-model="scope.row.is_super" :active-value="1" :inactive-value="0" @change="issuper([scope.row])" />
|
||||
|
@ -120,9 +123,9 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="sort" label="排序" min-width="73" sortable="custom" />
|
||||
<el-table-column prop="create_time" label="添加时间" min-width="155" sortable="custom" />
|
||||
<el-table-column prop="update_time" label="修改时间" min-width="155" sortable="custom" />
|
||||
<el-table-column prop="login_time" label="登录时间" min-width="155" sortable="custom" />
|
||||
<el-table-column prop="create_time" label="添加时间" width="155" sortable="custom" />
|
||||
<el-table-column prop="update_time" label="修改时间" width="155" sortable="custom" />
|
||||
<el-table-column prop="login_time" label="登录时间" width="155" sortable="custom" />
|
||||
<el-table-column label="操作" width="86">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" title="信息/修改" @click="edit(scope.row)">修改</el-button>
|
||||
|
@ -146,6 +149,9 @@
|
|||
<p>图片小于 200 KB,jpg、png格式。</p>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="编号" prop="number">
|
||||
<el-input key="number" v-model="model.number" placeholder="请输入编号(工号)" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="昵称" prop="nickname">
|
||||
<el-input key="nickname" v-model="model.nickname" placeholder="请输入昵称(姓名)" clearable />
|
||||
</el-form-item>
|
||||
|
@ -247,7 +253,7 @@ export default {
|
|||
height: 680,
|
||||
loading: false,
|
||||
idkey: 'user_id',
|
||||
exps: [],
|
||||
exps: [{ exp: 'like', name: '包含' }],
|
||||
query: { page: 1, limit: 12, search_field: 'username', search_exp: 'like', date_field: 'create_time' },
|
||||
data: [],
|
||||
count: 0,
|
||||
|
@ -255,6 +261,7 @@ export default {
|
|||
dialogTitle: '',
|
||||
model: {
|
||||
user_id: '',
|
||||
number: '',
|
||||
avatar_id: 0,
|
||||
avatar_url: '',
|
||||
nickname: '',
|
||||
|
|
Loading…
Reference in New Issue