diff --git a/package.json b/package.json index 0215818..4272530 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ }, "dependencies": { "@element-plus/icons-vue": "2.1.0", + "@smallwei/avue": "^3.2.22", "@tinymce/tinymce-vue": "^5.1.0", "axios": "1.3.4", "big.js": "6.2.1", diff --git a/src/crud/admin/form.js b/src/crud/admin/form.js new file mode 100644 index 0000000..728b735 --- /dev/null +++ b/src/crud/admin/form.js @@ -0,0 +1,70 @@ +export const tableOption = { + searchMenuSpan: 6, + columnBtn: false, + border: true, + selection: true, + index: false, + indexLabel: '序号', + stripe: true, + menuAlign: 'center', + menuWidth: 350, + align: 'center', + refreshBtn: true, + searchSize: 'mini', + addBtn: false, + editBtn: false, + delBtn: false, + viewBtn: false, + props: { + label: 'label', + value: 'value' + }, + column: [{ + label: '表单名称', + prop: 'formName', + search: true + }, { + label: '按钮文本', + prop: 'buttonName', + search: true + }, { + label: '提交次数', + prop: 'submitNum', + type: 'select', + dicData: [ + { + label: '不做限制', + value: 0 + }, { + label: '每个IP限填一次', + value: 1 + } + ] + }, { + label: '开启验证', + prop: 'needValidation', + type: 'select', + dicData: [ + { + label: '不需要', + value: 0 + }, { + label: '需要', + value: 1 + } + ] + }, { + label: '提交权限', + prop: 'submitPerm', + type: 'select', + dicData: [ + { + label: '所有人', + value: 0 + }, { + label: '仅会员可提交', + value: 1 + } + ] + }] +} diff --git a/src/crud/admin/indexImg.js b/src/crud/admin/indexImg.js new file mode 100644 index 0000000..942e582 --- /dev/null +++ b/src/crud/admin/indexImg.js @@ -0,0 +1,47 @@ +export const tableOption = { + searchMenuSpan: 6, + columnBtn: false, + border: true, + selection: true, + index: false, + indexLabel: '序号', + stripe: true, + menuAlign: 'center', + menuWidth: 350, + align: 'center', + refreshBtn: true, + searchSize: 'mini', + addBtn: false, + editBtn: false, + delBtn: false, + viewBtn: false, + props: { + label: 'label', + value: 'value' + }, + column: [{ + label: '轮播图片', + prop: 'imgUrl', + type: 'upload', + slot: true, + listType: 'picture-img' + }, { + label: '顺序', + prop: 'seq' + }, { + width: 150, + label: '状态', + prop: 'status', + search: true, + type: 'select', + dicData: [ + { + label: '禁用', + value: 0 + }, { + label: '正常', + value: 1 + } + ] + }] +} diff --git a/src/crud/admin/message.js b/src/crud/admin/message.js new file mode 100644 index 0000000..ea9b033 --- /dev/null +++ b/src/crud/admin/message.js @@ -0,0 +1,52 @@ +export const tableOption = { + searchMenuSpan: 6, + columnBtn: false, + border: true, + index: false, + indexLabel: '序号', + selection: true, + stripe: true, + menuAlign: 'center', + menuWidth: 350, + align: 'center', + refreshBtn: true, + searchSize: 'mini', + addBtn: false, + editBtn: false, + delBtn: false, + viewBtn: false, + props: { + label: 'label', + value: 'value' + }, + column: [{ + label: '创建时间', + prop: 'createTime' + }, + { + label: '姓名', + prop: 'userName', + search: true + }, { + label: '邮箱', + prop: 'email' + }, { + label: '联系方式', + prop: 'contact' + }, { + label: '审核', + prop: 'status', + search: true, + slot: true, + type: 'select', + dicData: [ + { + label: '未审核', + value: 0 + }, { + label: '审核通过', + value: 1 + } + ] + }] +} diff --git a/src/crud/prod/prodComm.js b/src/crud/prod/prodComm.js new file mode 100644 index 0000000..81b776f --- /dev/null +++ b/src/crud/prod/prodComm.js @@ -0,0 +1,77 @@ +export const tableOption = { + searchMenuSpan: 6, + columnBtn: false, + border: true, + index: true, + indexLabel: '序号', + stripe: true, + menuAlign: 'center', + align: 'center', + addBtn: false, + editBtn: false, + delBtn: false, + column: [ + { + label: '商品名', + prop: 'prodName', + search: true + }, + { + label: '用户昵称', + prop: 'nickName', + slot: true + }, + { + label: '记录时间', + prop: 'recTime', + width: '200' + }, + { + label: '回复时间', + slot: true, + prop: 'replyTime', + width: '200', + dicData: [ + { + label: '无', + value: '' + } + ] + }, + { + label: '评价得分', + prop: 'score' + }, + { + label: '是否匿名', + prop: 'isAnonymous', + dicData: [ + { + label: '否', + value: 0 + }, { + label: '是', + value: 1 + } + ] + }, + { + prop: 'status', + label: '审核状态', + search: true, + type: 'select', + dicData: [ + { + label: '待审核', + value: 0 + }, { + label: '审核通过', + value: 1 + }, { + label: '审核未通过', + value: -1 + } + ] + } + ] +} diff --git a/src/crud/prod/prodList.js b/src/crud/prod/prodList.js new file mode 100644 index 0000000..b2e3c4a --- /dev/null +++ b/src/crud/prod/prodList.js @@ -0,0 +1,59 @@ +export const tableOption = { + searchMenuSpan: 6, + columnBtn: false, + border: true, + selection: true, + index: false, + indexLabel: '序号', + stripe: true, + menuAlign: 'center', + menuWidth: 350, + align: 'center', + refreshBtn: true, + searchSize: 'mini', + addBtn: false, + editBtn: false, + delBtn: false, + viewBtn: false, + props: { + label: 'label', + value: 'value' + }, + column: [{ + label: '产品名字', + prop: 'prodName', + search: true + }, { + label: '商品原价', + prop: 'oriPrice' + }, { + label: '商品现价', + prop: 'price' + }, { + label: '商品库存', + prop: 'totalStocks' + }, { + label: '产品图片', + prop: 'pic', + type: 'upload', + width: 150, + listType: 'picture-img' + + }, { + width: 150, + label: '状态', + prop: 'status', + search: true, + slot: true, + type: 'select', + dicData: [ + { + label: '未上架', + value: 0 + }, { + label: '上架', + value: 1 + } + ] + }] +} diff --git a/src/crud/prod/prodTag.js b/src/crud/prod/prodTag.js new file mode 100644 index 0000000..fadb3c7 --- /dev/null +++ b/src/crud/prod/prodTag.js @@ -0,0 +1,46 @@ +export const tableOption = { + searchMenuSpan: 6, + columnBtn: false, + border: true, + index: true, + indexLabel: '序号', + stripe: true, + menuAlign: 'center', + align: 'center', + addBtn: false, + editBtn: false, + delBtn: false, + column: [ + { + label: '标签名称', + prop: 'title', + search: true, + slot: true + }, + { + label: '状态', + prop: 'status', + type: 'select', + slot: true, + search: true, + dicData: [ + { + label: '禁用', + value: 0 + }, { + label: '正常', + value: 1 + } + ] + }, + { + label: '默认类型', + prop: 'isDfault', + slot: true + }, + { + label: '排序', + prop: 'seq' + } + ] +} diff --git a/src/crud/prod/spec.js b/src/crud/prod/spec.js new file mode 100644 index 0000000..06790c6 --- /dev/null +++ b/src/crud/prod/spec.js @@ -0,0 +1,30 @@ +export const tableOption = { + searchMenuSpan: 6, + columnBtn: false, + border: true, + index: true, + indexLabel: '序号', + stripe: true, + menuAlign: 'center', + menuWidth: 350, + align: 'center', + refreshBtn: true, + searchSize: 'mini', + addBtn: false, + editBtn: false, + viewBtn: false, + delBtn: false, + props: { + label: 'label', + value: 'value' + }, + column: [{ + label: '属性名称', + prop: 'propName', + search: true + }, { + label: '属性值', + prop: 'prodPropValues', + slot: true + }] +} diff --git a/src/crud/shop/hotSearch.js b/src/crud/shop/hotSearch.js new file mode 100644 index 0000000..a7bf942 --- /dev/null +++ b/src/crud/shop/hotSearch.js @@ -0,0 +1,52 @@ +export const tableOption = { + searchMenuSpan: 6, + columnBtn: false, + border: true, + index: false, + selection: true, + indexLabel: '序号', + stripe: true, + menuAlign: 'center', + align: 'center', + addBtn: false, + editBtn: false, + delBtn: false, + column: [ + { + label: '热搜标题', + prop: 'title', + search: true + }, + { + label: '热搜内容', + prop: 'content', + search: true + }, + { + label: '录入时间', + prop: 'recDate', + sortable: true + }, + { + label: '顺序', + prop: 'seq', + sortable: true + }, + { + label: '启用状态', + prop: 'status', + type: 'select', + slot: true, + search: true, + dicData: [ + { + label: '未启用', + value: 0 + }, { + label: '启用', + value: 1 + } + ] + } + ] +} diff --git a/src/crud/shop/notice.js b/src/crud/shop/notice.js new file mode 100644 index 0000000..6284d24 --- /dev/null +++ b/src/crud/shop/notice.js @@ -0,0 +1,52 @@ +export const tableOption = { + searchMenuSpan: 6, + columnBtn: false, + border: true, + index: true, + indexLabel: '序号', + stripe: true, + menuAlign: 'center', + align: 'center', + addBtn: false, + editBtn: false, + delBtn: false, + column: [ + { + label: '公告内容', + prop: 'title', + search: true + }, + { + label: '状态', + prop: 'status', + search: true, + slot: true, + type: 'select', + dicData: [ + { + label: '撤销', + value: 0 + }, { + label: '公布', + value: 1 + } + ] + }, + { + label: '是否置顶', + prop: 'isTop', + search: true, + slot: true, + type: 'select', + dicData: [ + { + label: '否', + value: 0 + }, { + label: '是', + value: 1 + } + ] + } + ] +} diff --git a/src/crud/shop/pickAddr.js b/src/crud/shop/pickAddr.js new file mode 100644 index 0000000..d884de6 --- /dev/null +++ b/src/crud/shop/pickAddr.js @@ -0,0 +1,43 @@ +export const tableOption = { + searchMenuSpan: 6, + columnBtn: false, + border: true, + index: false, + selection: true, + indexLabel: '序号', + stripe: true, + menuAlign: 'center', + menuWidth: 350, + align: 'center', + refreshBtn: true, + searchSize: 'mini', + addBtn: false, + editBtn: false, + viewBtn: false, + delBtn: false, + props: { + label: 'label', + value: 'value' + }, + column: [ + { + label: '自提点名称', + prop: 'addrName', + search: true + }, { + label: '手机号', + prop: 'mobile' + }, { + label: '省份', + prop: 'province' + }, { + label: '城市', + prop: 'city' + }, { + label: '区/县', + prop: 'area' + }, { + label: '地址', + prop: 'addr' + }] +} diff --git a/src/crud/shop/transport.js b/src/crud/shop/transport.js new file mode 100644 index 0000000..7a02c0b --- /dev/null +++ b/src/crud/shop/transport.js @@ -0,0 +1,27 @@ +export const tableOption = { + searchMenuSpan: 6, + columnBtn: false, + border: true, + index: false, + selection: true, + indexLabel: '序号', + stripe: true, + menuAlign: 'center', + menuWidth: 350, + align: 'center', + refreshBtn: true, + searchSize: 'mini', + addBtn: false, + editBtn: false, + delBtn: false, + viewBtn: false, + props: { + label: 'label', + value: 'value' + }, + column: [{ + label: '模板名称', + prop: 'transName', + search: true + }] +} diff --git a/src/crud/sys/area.js b/src/crud/sys/area.js new file mode 100644 index 0000000..027da3d --- /dev/null +++ b/src/crud/sys/area.js @@ -0,0 +1,30 @@ +export const tableOption = { + searchMenuSpan: 6, + columnBtn: false, + border: true, + index: true, + indexLabel: '序号', + stripe: true, + menuAlign: 'center', + align: 'center', + addBtn: false, + editBtn: false, + column: [ + { + label: '', + prop: 'areaId' + }, + { + label: '', + prop: 'areaName' + }, + { + label: '', + prop: 'parentId' + }, + { + label: '', + prop: 'level' + } + ] +} diff --git a/src/crud/sys/config.js b/src/crud/sys/config.js new file mode 100644 index 0000000..eb807f7 --- /dev/null +++ b/src/crud/sys/config.js @@ -0,0 +1,33 @@ +export const tableOption = { + searchMenuSpan: 6, + columnBtn: false, + border: true, + selection: true, + index: false, + indexLabel: '序号', + stripe: true, + menuAlign: 'center', + menuWidth: 350, + align: 'center', + refreshBtn: true, + searchSize: 'mini', + addBtn: false, + editBtn: false, + delBtn: false, + viewBtn: false, + props: { + label: 'label', + value: 'value' + }, + column: [{ + label: '参数名', + prop: 'paramKey', + search: true + }, { + label: '参数值', + prop: 'paramValue' + }, { + label: '备注', + prop: 'remark' + }] +} diff --git a/src/crud/sys/log.js b/src/crud/sys/log.js new file mode 100644 index 0000000..e9d3081 --- /dev/null +++ b/src/crud/sys/log.js @@ -0,0 +1,47 @@ +export const tableOption = { + searchMenuSpan: 6, + columnBtn: false, + border: true, + menu: false, // 移除操作栏 + selection: true, + index: false, + indexLabel: '序号', + stripe: true, + menuAlign: 'center', + menuWidth: 350, + align: 'center', + refreshBtn: true, + searchSize: 'mini', + addBtn: false, + editBtn: false, + delBtn: false, + viewBtn: false, + props: { + label: 'label', + value: 'value' + }, + column: [{ + label: '用户名', + prop: 'username', + search: true + }, { + label: '用户操作', + prop: 'operation', + search: true + }, { + label: '请求方法', + prop: 'method' + }, { + label: '请求参数', + prop: 'params' + }, { + label: '执行时长(毫秒)', + prop: 'time' + }, { + label: 'IP地址', + prop: 'ip' + }, { + label: '创建时间', + prop: 'createDate' + }] +} diff --git a/src/crud/sys/role.js b/src/crud/sys/role.js new file mode 100644 index 0000000..682aef0 --- /dev/null +++ b/src/crud/sys/role.js @@ -0,0 +1,33 @@ +export const tableOption = { + searchMenuSpan: 6, + columnBtn: false, + border: true, + selection: true, + index: false, + indexLabel: '序号', + stripe: true, + menuAlign: 'center', + menuWidth: 350, + align: 'center', + refreshBtn: true, + searchSize: 'mini', + addBtn: false, + editBtn: false, + delBtn: false, + viewBtn: false, + props: { + label: 'label', + value: 'value' + }, + column: [{ + label: '角色名称', + prop: 'roleName', + search: true + }, { + label: '备注', + prop: 'remark' + }, { + label: '创建时间', + prop: 'createTime' + }] +} diff --git a/src/crud/sys/user.js b/src/crud/sys/user.js new file mode 100644 index 0000000..a2a61a3 --- /dev/null +++ b/src/crud/sys/user.js @@ -0,0 +1,50 @@ +export const tableOption = { + searchMenuSpan: 6, + columnBtn: false, + border: true, + selection: true, + index: false, + indexLabel: '序号', + stripe: true, + menuAlign: 'center', + menuWidth: 350, + align: 'center', + refreshBtn: true, + searchSize: 'mini', + addBtn: false, + editBtn: false, + delBtn: false, + viewBtn: false, + props: { + label: 'label', + value: 'value' + }, + column: [{ + label: '用户名', + prop: 'username', + search: true + }, { + label: '邮箱', + prop: 'email' + }, { + label: '手机号', + prop: 'mobile' + }, { + label: '创建时间', + prop: 'createTime' + }, { + label: '状态', + prop: 'status', + type: 'select', + dicData: [ + { + label: '禁用', + value: 0 + }, { + label: '正常', + value: 1 + } + ] + + }] +} diff --git a/src/crud/user/addr.js b/src/crud/user/addr.js new file mode 100644 index 0000000..8d62154 --- /dev/null +++ b/src/crud/user/addr.js @@ -0,0 +1,80 @@ +export const tableOption = { + searchMenuSpan: 6, + columnBtn: false, + border: true, + index: true, + indexLabel: '序号', + stripe: true, + menuAlign: 'center', + align: 'center', + addBtn: false, + editBtn: false, + delBtn: false, + viewBtn: false, + column: [ + { + label: '收货人名称', + prop: 'receiver' + }, + { + label: '省', + prop: 'province' + }, + { + label: '城市', + prop: 'city' + }, + { + label: '区', + prop: 'area' + }, + { + label: '地址', + prop: 'addr' + }, + { + label: '邮编', + prop: 'postCode' + }, + { + label: '手机', + prop: 'mobile' + }, + { + label: '状态', + prop: 'status', + search: true, + type: 'select', + dicData: [ + { + label: '无效', + value: 0 + }, { + label: '正常', + value: 1 + } + ] + }, + { + label: '默认地址', + prop: 'commonAddr', + dicData: [ + { + label: '否', + value: 0 + }, { + label: '是', + value: 1 + } + ] + }, + { + label: '建立时间', + prop: 'createTime' + }, + { + label: '更新时间', + prop: 'updateTime' + } + ] +} diff --git a/src/crud/user/user.js b/src/crud/user/user.js new file mode 100644 index 0000000..29049e3 --- /dev/null +++ b/src/crud/user/user.js @@ -0,0 +1,53 @@ +export const tableOption = { + searchMenuSpan: 6, + columnBtn: false, + border: true, + // selection: true, + index: false, + indexLabel: '序号', + stripe: true, + menuAlign: 'center', + menuWidth: 350, + align: 'center', + refreshBtn: true, + searchSize: 'mini', + addBtn: false, + editBtn: false, + delBtn: false, + viewBtn: false, + props: { + label: 'label', + value: 'value' + }, + column: [{ + label: '用户昵称', + prop: 'nickName', + search: true + }, { + label: '用户头像', + prop: 'pic', + type: 'upload', + imgWidth: 150, + listType: 'picture-img', + slot: true + }, { + label: '状态', + prop: 'status', + search: true, + type: 'select', + slot: true, + dicData: [ + { + label: '禁用', + value: 0 + }, { + label: '正常', + value: 1 + } + ] + }, { + label: '注册时间', + prop: 'userRegtime', + imgWidth: 150 + }] +} diff --git a/src/main.js b/src/main.js index fc2a0b9..7ec1935 100644 --- a/src/main.js +++ b/src/main.js @@ -6,6 +6,10 @@ import moment from 'moment' import 'element-plus/dist/index.css' import * as ElementPlusIconsVue from '@element-plus/icons-vue' import router from '@/router' +import locale from 'element-plus/lib/locale/lang/zh-cn' +import Avue from '@smallwei/avue' +import '@smallwei/avue/lib/index.css' + // 全局样式 import '@/styles/index.scss' // svg @@ -34,8 +38,10 @@ app.use(pinia) app.component('SvgIcon', svgIcon) +// Avue +app.use(Avue) // element-plus -app.use(ElementPlus) +app.use(ElementPlus, { locale }) for (const [key, component] of Object.entries(ElementPlusIconsVue)) { app.component(key, component) } diff --git a/src/views/modules/sys/area/add-or-update.vue b/src/views/modules/sys/area/add-or-update.vue new file mode 100644 index 0000000..559cda3 --- /dev/null +++ b/src/views/modules/sys/area/add-or-update.vue @@ -0,0 +1,147 @@ + + + diff --git a/src/views/modules/sys/area/index.vue b/src/views/modules/sys/area/index.vue new file mode 100644 index 0000000..fb2583a --- /dev/null +++ b/src/views/modules/sys/area/index.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/src/views/modules/sys/config/add-or-update.vue b/src/views/modules/sys/config/add-or-update.vue new file mode 100644 index 0000000..d35e5db --- /dev/null +++ b/src/views/modules/sys/config/add-or-update.vue @@ -0,0 +1,124 @@ + + + diff --git a/src/views/modules/sys/config/index.vue b/src/views/modules/sys/config/index.vue new file mode 100644 index 0000000..89edc3a --- /dev/null +++ b/src/views/modules/sys/config/index.vue @@ -0,0 +1,144 @@ + + + diff --git a/src/views/modules/sys/log/index.vue b/src/views/modules/sys/log/index.vue new file mode 100644 index 0000000..721d9a2 --- /dev/null +++ b/src/views/modules/sys/log/index.vue @@ -0,0 +1,57 @@ + + + diff --git a/src/views/modules/sys/menu/add-or-update.vue b/src/views/modules/sys/menu/add-or-update.vue index c6594b1..4a65f89 100644 --- a/src/views/modules/sys/menu/add-or-update.vue +++ b/src/views/modules/sys/menu/add-or-update.vue @@ -197,7 +197,9 @@ onMounted(() => { onLoadIcons() }) const iconList = [] -// 加载图标 +/** + * 加载图标 + */ const onLoadIcons = () => { const icons = import.meta.glob('@/icons/svg/*.svg') for (const icon in icons) { @@ -251,11 +253,16 @@ defineExpose({ init }) const handleSelectMenuChange = (val) => { dataForm.parentId = val[val.length - 1] } -// 图标选中 +/** + * 图标选中 + * @param iconName + */ const iconActiveHandle = (iconName) => { dataForm.icon = iconName } -// 表单提交 +/** + * 表单提交 + */ const onSubmit = Debounce(() => { dataFormRef.value?.validate((valid) => { if (valid) { diff --git a/src/views/modules/sys/role/add-or-update.vue b/src/views/modules/sys/role/add-or-update.vue new file mode 100644 index 0000000..1a8695d --- /dev/null +++ b/src/views/modules/sys/role/add-or-update.vue @@ -0,0 +1,151 @@ + + + diff --git a/src/views/modules/sys/role/index.vue b/src/views/modules/sys/role/index.vue new file mode 100644 index 0000000..e8f90c3 --- /dev/null +++ b/src/views/modules/sys/role/index.vue @@ -0,0 +1,153 @@ + + + diff --git a/src/views/modules/sys/user/add-or-update.vue b/src/views/modules/sys/user/add-or-update.vue new file mode 100644 index 0000000..848a06a --- /dev/null +++ b/src/views/modules/sys/user/add-or-update.vue @@ -0,0 +1,245 @@ + + + diff --git a/src/views/modules/sys/user/index.vue b/src/views/modules/sys/user/index.vue new file mode 100644 index 0000000..9bfe742 --- /dev/null +++ b/src/views/modules/sys/user/index.vue @@ -0,0 +1,155 @@ + + +