【模版目录】更新管理端页面源码

This commit is contained in:
吴昊天 2022-12-06 14:09:43 +08:00
parent 80df22986d
commit e179cc2688
16 changed files with 178 additions and 111 deletions

View File

@ -270,7 +270,7 @@ $ cd admin
$ npm install
# 启动项目(本地开发环境)
$ npm run serve
$ npm run dev
# 打包项目
$ npm run build

View File

@ -19560,6 +19560,14 @@
"resolved": "https://registry.npmjs.org/vue-awesome-swiper/-/vue-awesome-swiper-4.1.1.tgz",
"integrity": "sha512-50um10t6N+lJaORkpwSi1wWuMmBI1sgFc9Znsi5oUykw2cO5DzLaBHcO2JNX21R+Ue4TGoIJDhhxjBHtkFrTEQ=="
},
"vue-clipboard2": {
"version": "0.3.3",
"resolved": "https://registry.npmmirror.com/vue-clipboard2/-/vue-clipboard2-0.3.3.tgz",
"integrity": "sha512-aNWXIL2DKgJyY/1OOeITwAQz1fHaCIGvUFHf9h8UcoQBG5a74MkdhS/xqoYe7DNZdQmZRL+TAdIbtUs9OyVjbw==",
"requires": {
"clipboard": "^2.0.0"
}
},
"vue-codemirror": {
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/vue-codemirror/-/vue-codemirror-4.0.6.tgz",

View File

@ -56,6 +56,7 @@
"view-design": "^4.7.0",
"vue": "^2.5.10",
"vue-awesome-swiper": "^4.1.1",
"vue-clipboard2": "^0.3.3",
"vue-codemirror": "^4.0.6",
"vue-happy-scroll": "^2.1.1",
"vue-i18n": "^7.8.0",

View File

@ -28,7 +28,7 @@
}
.tag-nav-wrapper {
padding: 0;
height: 40px;
height: 42px;
background: #f0f0f0;
}
.content-wrapper {

View File

@ -29,7 +29,9 @@ export default {
created() {
this.defaults = this.configObj;
this.configData = this.configObj[this.configNme];
this.content = this.configData.val;
this.$nextTick((e) => {
this.content = this.configData.val;
});
},
watch: {
configObj: {

View File

@ -66,7 +66,11 @@ import timeOptions from '@/libs/timeOptions';
import scroll from '@/libs/loading';
import * as tools from '@/libs/tools';
import VueTreeList from 'vue-tree-list';
// 复制到粘贴板插件
import VueClipboard from 'vue-clipboard2'
VueClipboard.config.copyText = true
Vue.use(VueClipboard)
Vue.use(VueTreeList);
// 版本升级
import upgrade from '@/components/upGrade/index.vue';

View File

@ -82,13 +82,7 @@
</div>
<div class="lable">
<p class="txt">例如:{{ item.example }}</p>
<Button
size="small"
v-clipboard:copy="item.example"
v-clipboard:success="onCopy"
v-clipboard:error="onError"
>复制
</Button>
<Button size="small" @click="onCopy(item.example)">复制 </Button>
</div>
</div>
</div>
@ -348,7 +342,7 @@ export default {
};
this.$nextTick(() => {
this.$store.commit('mobildConfig/FOOTER', {
title: '是否自定义',
title: '专题页是否显示',
name: imgList,
});
this.arraySort();
@ -387,8 +381,14 @@ export default {
if (e.relatedContext.element.name == 'nav_bar') return false;
return true;
},
onCopy() {
this.$Message.success('复制成功');
onCopy(copyData) {
this.$copyText(copyData)
.then((message) => {
this.$Message.success('复制成功');
})
.catch((err) => {
this.$Message.error('复制失败');
});
},
onError() {
this.$Message.error('复制失败');

View File

@ -61,13 +61,7 @@
</div>
<div class="lable">
<p class="txt">例如:{{ item.example }}</p>
<Button
size="small"
v-clipboard:copy="item.example"
v-clipboard:success="onCopy"
v-clipboard:error="onError"
>复制
</Button>
<Button size="small" @click="onCopy(item.example)">复制 </Button>
</div>
</div>
</div>
@ -328,8 +322,14 @@ export default {
if (e.relatedContext.element.name == 'nav_bar') return false;
return true;
},
onCopy() {
this.$Message.success('复制成功');
onCopy(copyData) {
this.$copyText(copyData)
.then((message) => {
this.$Message.success('复制成功');
})
.catch((err) => {
this.$Message.error('复制失败');
});
},
onError() {
this.$Message.error('复制失败');

View File

@ -5,7 +5,7 @@
<div class="txt"><span>地址:</span>{{ item.url }}</div>
<div class="txt" v-if="item.parameter">
<p><span>参数:</span></p>
<span v-for="(val, key, index) in item.parameter"
<span v-for="(val, key, index) in item.parameter" :key="index"
>{{ key + '=' + val }}<i style="font-style: normal">&</i></span
>
</div>
@ -14,7 +14,7 @@
<!--<Button size="small" style="margin-left: 10px" v-clipboard:copy="item.example"-->
<!--v-clipboard:success="onCopy"-->
<!--v-clipboard:error="onError">复制</Button>-->
<span class="copy copy-data" :data-clipboard-text="item.example">复制</span>
<span class="copy copy-data" @click="onCopy(item.example)">复制</span>
</div>
</div>
</div>
@ -57,9 +57,15 @@ export default {
});
},
methods: {
// onCopy () {
// this.$Message.success('复制成功');
// },
onCopy(copyData) {
this.$copyText(copyData)
.then((message) => {
this.$Message.success('复制成功');
})
.catch((err) => {
this.$Message.error('复制失败');
});
},
// onError () {
// this.$Message.error('复制成功');
// }

View File

@ -13,7 +13,7 @@
<!--<Button size="small" style="margin-left: 10px" v-clipboard:copy="item.example"-->
<!--v-clipboard:success="onCopy"-->
<!--v-clipboard:error="onError">复制</Button>-->
<span class="copy copy-data" :data-clipboard-text="item.example">复制</span>
<span class="copy copy-data" @click="onCopy(item.example)">复制</span>
</div>
</div>
</div>
@ -61,9 +61,15 @@ export default {
this.clipboard.destroy();
},
methods: {
// onCopy () {
// this.$Message.success('复制成功');
// },
onCopy(copyData) {
this.$copyText(copyData)
.then((message) => {
this.$Message.success('复制成功');
})
.catch((err) => {
this.$Message.error('复制失败');
});
},
// onError () {
// this.$Message.error('复制成功');
// }

View File

@ -21,6 +21,12 @@
<img v-lazy="row.icon" />
</div>
</template>
<template slot-scope="{ row, index }" slot="language_name">
<div class="acea-row row-middle">
<span>{{row.language_name}}</span>
<Tag class="ml10" color="default" v-if="row.is_default">默认</Tag>
</div>
</template>
<template slot-scope="{ row, index }" slot="status">
<i-switch
v-model="row.status"
@ -70,7 +76,7 @@ export default {
},
{
title: '语言名称',
key: 'language_name',
slot: 'language_name',
minWidth: 200,
},
{

View File

@ -12,7 +12,7 @@
@on-cancel="handleReset"
@on-visible-change="visible"
>
<Form ref="formValidate" :model="formValidate" :label-width="110" :rules="ruleValidate" @submit.native.prevent>
<Form ref="formValidate" :model="formValidate" :label-width="110" @submit.native.prevent>
<Row type="flex" :gutter="24">
<Col span="24">
<FormItem label="类型:">
@ -31,7 +31,7 @@
<div class="add">
<Input v-model="formValidate.menu_name" :placeholder="!authType ? '请输入接口名称' : '请输入按钮名称'">
</Input>
<Button class="ml10 df" v-show="!authType" @click="getRuleList()" icon="ios-apps"> </Button>
<Button class="ml10 df" v-show="!authType" @click="getRuleList()" icon="ios-apps"></Button>
</div>
</FormItem>
</Col>
@ -179,40 +179,35 @@
</template>
<script>
import { addMenusApi, addMenus, getRuleList } from '@/api/systemMenus';
import icon from '@/utils/icon';
import { addMenusApi, addMenus, getRuleList } from "@/api/systemMenus";
import icon from "@/utils/icon";
export default {
name: 'menusFrom',
name: "menusFrom",
props: {
formValidate: {
type: Object,
default: null,
default: null
},
titleFrom: {
type: String,
default: '',
},
default: ""
}
},
data() {
return {
arrs: [],
searchRule: '',
iconVal: '',
searchRule: "",
iconVal: "",
grid: {
xl: 12,
lg: 12,
md: 12,
sm: 24,
xs: 24,
xs: 24
},
modals: false,
modal12: false,
ruleValidate: {
menu_name: [{ required: true, message: '请输入按钮名称', trigger: 'blur' }],
menu_path: [{ required: true, message: '请输入路由地址', trigger: 'blur' }],
methods: [{ required: true, message: '请选择接口请求方式', trigger: 'blur' }],
api_url: [{ required: true, message: '请填写接口请求地址', trigger: 'blur' }],
},
FromData: [],
valids: false,
list2: [],
@ -220,27 +215,28 @@ export default {
authType: true,
search: icon,
ruleModal: false,
ruleList: [],
ruleList: []
};
},
watch: {
'formValidate.header': function (n) {
"formValidate.header": function(n) {
this.formValidate.is_header = n ? 1 : 0;
},
'formValidate.auth_type': function (n) {
"formValidate.auth_type": function(n) {
if (n === undefined) {
n = 1;
}
this.authType = n === 1;
},
'formValidate.data': function (n) {},
"formValidate.data": function(n) {
}
},
computed: {
/* eslint-disable */
optionsList() {
let a = [];
this.FromData.map((item) => {
if ('pid' === item.field) {
if ("pid" === item.field) {
a = item.options;
}
});
@ -249,7 +245,7 @@ export default {
headerOptionsList() {
let a = [];
this.FromData.map((item) => {
if ('header' === item.field) {
if ("header" === item.field) {
a = item.options;
}
});
@ -258,7 +254,7 @@ export default {
optionsListmodule() {
let a = [];
this.FromData.map((item) => {
if ('module' === item.field) {
if ("module" === item.field) {
a = item.options;
}
});
@ -267,7 +263,7 @@ export default {
optionsRadio() {
let a = [];
this.FromData.map((item) => {
if ('auth_type' === item.field) {
if ("auth_type" === item.field) {
a = item.options;
}
});
@ -276,7 +272,7 @@ export default {
isheaderRadio() {
let a = [];
this.FromData.map((item) => {
if ('is_header' === item.field) {
if ("is_header" === item.field) {
a = item.options;
}
});
@ -285,7 +281,7 @@ export default {
isShowRadio() {
let a = [];
this.FromData.map((item) => {
if ('is_show' === item.field) {
if ("is_show" === item.field) {
a = item.options;
}
});
@ -294,7 +290,7 @@ export default {
isShowPathRadio() {
let a = [];
this.FromData.map((item) => {
if ('is_show_path' === item.field) {
if ("is_show_path" === item.field) {
a = item.options;
}
});
@ -303,12 +299,12 @@ export default {
menuList() {
let a = [];
this.FromData.map((item) => {
if ('menu_list' === item.field) {
if ("menu_list" === item.field) {
a = item.props.data;
}
});
return a;
},
}
},
methods: {
// 获取权限列表
@ -321,7 +317,7 @@ export default {
modalchange(type) {
if (!type) {
this.arrs = [];
this.ruleModal = '';
this.ruleModal = "";
this.ruleModal = false;
}
},
@ -331,7 +327,7 @@ export default {
}
},
selectRule(data) {
this.$emit('selectRule', data);
this.$emit("selectRule", data);
this.$nextTick((e) => {
this.ruleModal = false;
});
@ -363,13 +359,13 @@ export default {
}
},
init() {
this.searchRule = '';
this.searchRule = "";
this.arrs = [];
},
handleCreate1(val) {
this.headerOptionsList.push({
value: val,
label: val,
label: val
});
},
// 获取新增表单
@ -397,40 +393,53 @@ export default {
this.formValidate.pid = this.formValidate.path[length - 1] || 0;
}
let data = {
url: this.formValidate.id ? `/setting/menus/${this.formValidate.id}` : '/setting/menus',
method: this.formValidate.id ? 'put' : 'post',
datas: this.formValidate,
url: this.formValidate.id ? `/setting/menus/${this.formValidate.id}` : "/setting/menus",
method: this.formValidate.id ? "put" : "post",
datas: this.formValidate
};
this.$refs[name].validate((valid) => {
if (valid) {
this.valids = true;
addMenusApi(data)
.then(async (res) => {
this.$Message.success(res.msg);
this.modals = false;
this.$emit('getList');
this.getAddFrom();
this.$store.dispatch('admin/menus/getMenusNavList');
})
.catch((res) => {
this.$Message.error(res.msg);
});
} else {
if (!this.formValidate.menu_name) return this.$Message.error('请添加按钮名称!');
if (this.authType) {
if (!this.formValidate.menu_name) {
return this.$Message.warning("请填写按钮名称");
}
});
if (!this.formValidate.menu_path) {
return this.$Message.warning("请填写路由地址");
}
} else {
if (!this.formValidate.menu_name) {
return this.$Message.warning("请填写接口名称");
}
if (!this.formValidate.methods) {
return this.$Message.warning("请选择请求方式");
}
if (!this.formValidate.api_url) {
return this.$Message.warning("请选择接口地址");
}
}
this.valids = true;
addMenusApi(data)
.then(async (res) => {
this.$Message.success(res.msg);
this.modals = false;
this.$emit("getList");
this.getAddFrom();
this.$store.dispatch("admin/menus/getMenusNavList");
})
.catch((res) => {
this.valids = false;
this.$Message.error(res.msg);
});
},
handleReset() {
this.modals = false;
this.authType = true;
this.$refs['formValidate'].resetFields();
this.$emit('clearFrom');
},
this.$refs["formValidate"].resetFields();
this.$emit("clearFrom");
}
},
created() {
this.list = this.search;
this.getAddFrom();
},
}
};
</script>
@ -441,6 +450,7 @@ export default {
border-radius: 4px;
overflow: hidden;
}
.scollhide {
width: 100%;
height: 100%;
@ -449,6 +459,7 @@ export default {
padding: 10px 0 10px 0;
box-sizing: border-box;
}
.content {
font-size: 12px;
}
@ -471,21 +482,25 @@ export default {
position: relative;
padding-top: 10px;
}
.icons-item .ivu-icon {
font-size: 16px;
}
.search-rule {
display: flex;
align-items: center;
padding: 10px;
background-color: #f2f2f2;
}
.rule {
display: flex;
flex-wrap: wrap;
max-height: 700px;
overflow: scroll;
}
/*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/
.rule::-webkit-scrollbar {
width: 10px;
@ -504,6 +519,7 @@ export default {
border-radius: 4px;
background-color: #555;
}
.rule-list {
background-color: #f2f2f2;
width: 32%;
@ -514,19 +530,24 @@ export default {
cursor: pointer;
transition: all 0.1s;
}
.rule-list:hover {
background-color: #c5d1dd;
}
.rule-list div {
white-space: nowrap;
}
.select-rule {
background-color: #c5d1dd;
}
.add {
display: flex;
align-items: center;
}
.df {
display: flex;
justify-content: center;

View File

@ -210,10 +210,11 @@ export default {
method: 'DELETE',
ids: '',
};
this.$modalSure(delfromData)
.then((res) => {
this.$Message.success(res.msg);
// this.getData();
this.getData();
this.$store.dispatch('menus/getMenusNavList');
})
.catch((res) => {

View File

@ -892,7 +892,7 @@ export default {
.main-btn {}
.card-tree{
width: 270px;
height: calc(100vh - 290px);
height: calc(100vh - 190px);
overflow-y: scroll;
}
>>> .tree {
@ -981,7 +981,7 @@ export default {
}
.right-card {
flex: 1;
height: calc(100vh - 290px);
max-height: calc(100vh - 190px);
overflow-y: scroll;
}
@ -1034,7 +1034,7 @@ export default {
display: flex;
align-items: center;
justify-content: center;
min-height: 600px;
min-height: 800px;
.box:hover {
border: 1px solid pink;

View File

@ -1,7 +1,7 @@
<template>
<div>
<Card :bordered="false" dis-hover class="ivu-mt">
<Form ref="formValidate" :model="formValidate" :label-width="100" @submit.native.prevent>
<Form ref="formValidate" :model="formValidate" :label-width="80" @submit.native.prevent>
<Row :gutter="24" type="flex">
<Col span="24" class="ivu-text-left">
<FormItem label="核销日期:">
@ -54,9 +54,7 @@
</Col>
</Row>
</Form>
</Card>
<Card :bordered="false" dis-hover>
<Table
<Table
:columns="columns"
:data="orderList"
ref="table"
@ -160,7 +158,7 @@ export default {
{
title: '商品信息',
slot: 'info',
minWidth: 360,
minWidth: 300,
},
{
title: '实际支付',
@ -297,8 +295,15 @@ img {
display: flex;
align-items: center;
justify-content: center;}
.ivu-mt{
margin-bottom 12px
}
.ivu-mt a
color #515a6e
.ivu-mt a:hover
color: #2D8cF0;
.ivu-mt /deep/ .ivu-form-item{
padding 7px 0;
margin-bottom 0
}
</style>

View File

@ -19,19 +19,22 @@ export default {
};
},
mounted() {
let winwidth = this.$refs.picBox.clientWidth;
if (winwidth < 1018) {
this.pageLimit = 12;
} else if (winwidth < 1185) {
this.pageLimit = 21;
} else if (winwidth < 1327) {
this.pageLimit = 24;
} else if (winwidth < 1475) {
this.pageLimit = 27;
} else if (winwidth > 1483) {
this.pageLimit = 40;
}
console.log(this.$refs.picBox.clientWidth);
this.$nextTick(() => {
let winwidth = this.$refs.picBox.clientWidth;
console.log(winwidth);
if (winwidth < 1018) {
this.pageLimit = 18;
} else if (winwidth < 1185) {
this.pageLimit = 18;
} else if (winwidth < 1222) {
this.pageLimit = 24;
} else if (winwidth < 1327) {
this.pageLimit = 32;
} else if (winwidth > 1483) {
this.pageLimit = 40;
}
this.uploadShow = true;
});
},
@ -41,6 +44,10 @@ export default {
<style scoped lang="stylus">
.box {
width: 100%;
height 100%
background: #fff;
}
/deep/ .ivu-card-body{
min-height: 700px;
}
</style>