projects/mes-test #133

Merged
gtz217 merged 281 commits from projects/mes-test into projects/mes 2023-11-30 09:11:34 +08:00
36 changed files with 985 additions and 752 deletions
Showing only changes of commit 2b0579dc70 - Show all commits

View File

@ -1,7 +1,7 @@
###
# @Author: Do not edit
# @Date: 2023-08-29 09:40:39
# @LastEditTime: 2023-11-15 17:25:58
# @LastEditTime: 2023-11-16 14:07:34
# @LastEditors: DY
# @Description:
###
@ -18,7 +18,7 @@ VUE_APP_BASE_API = 'http://192.168.0.33:48082'
# VUE_APP_BASE_API = 'http://192.168.2.173:48080'
# VUE_APP_BASE_API = 'http://192.168.1.49:48080'
# VUE_APP_BASE_API = 'http://192.168.1.8:48080'
# VUE_APP_BASE_API = 'http://192.168.0.33:48082'
# VUE_APP_BASE_API = 'http://192.168.4.159:48080'
# VUE_APP_BASE_API = 'http://192.168.1.56:48080'
# VUE_APP_BASE_API = 'http://192.168.4.159:48080'
# 路由懒加载

Binary file not shown.

View File

@ -6,6 +6,7 @@
@import './btn.scss';
body {
// min-height: 1024px;
height: 100%;
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;

View File

@ -114,40 +114,61 @@ $buttonHeight: $buttonH * 1px;
}
}
.field {
// background: #ccc3;
position: relative;
padding-top: 196px;
margin-top: 8%;
flex: 1;
display: flex;
flex-direction: column;
// justify-content: center;
align-items: center;
.pc-title {
width: 100%;
text-align: center;
clear: both;
position: relative;
top: -36px;
height: 128px;
// h3.title {
// position: relative;
// &::before {
// content: '';
// background: url($cnbmLogo) 100% / 100% no-repeat;
// height: 48px;
// width: 48px;
// position: absolute;
// left: 0px;
// top: 4px;
// display: inline-block;
// }
// }
.title {
margin: 0;
margin-left: 32px;
font-weight: 400;
user-select: none;
color: #000;
font-size: 36px;
line-height: 54px;
letter-spacing: 2px;
}
}
.mobile-title,
.mobile-switch {
display: none;
}
.form-cont {
// height: 560px;
flex: 1;
overflow: hidden;
}
.footer {
user-select: none;
// 元素
margin: 12px 0;
height: 16px;
line-height: 16px;
font-size: 12px;
color: #8c8c8c;
a,
a:hover,
a:active {
color: inherit;
text-decoration: none;
}
}
.form {
margin-top: 32px;
box-sizing: border-box;
@ -283,24 +304,6 @@ $buttonHeight: $buttonH * 1px;
line-height: 14px;
}
}
.footer {
user-select: none;
// 元素
height: 16px;
line-height: 16px;
font-size: 12px;
color: #8c8c8c;
// 定位
position: absolute;
bottom: 30px;
a,
a:hover,
a:active {
color: inherit;
text-decoration: none;
}
}
}
// - - - - - PC 最小尺寸设置

View File

@ -9,7 +9,7 @@ import { isRelogin } from '@/utils/request'
NProgress.configure({ showSpinner: false })
// 增加三方登陆 update by 芋艿
const whiteList = ['/login', '/social-login', '/auth-redirect', '/bind', '/register', '/oauthLogin/gitee']
const whiteList = ['/login', '/social-login', '/auth-redirect', '/bind', '/register', '/oauthLogin/gitee', '/AGVBoard', '/coldBoard', '/processingBoard']
router.beforeEach((to, from, next) => {
NProgress.start()
@ -19,7 +19,12 @@ router.beforeEach((to, from, next) => {
if (to.path === '/login') {
next({ path: '/' })
NProgress.done()
} else {
}
// else if (to.path === '/AGVBoard') {
// next({ path: '/AGVBoard' })
// NProgress.done()
// }
else {
if (store.getters.roles.length === 0) {
isRelogin.show = true
// 获取字典数据 add by 芋艿

View File

@ -91,7 +91,7 @@ export const constantRoutes = [
{
path: '/AGVBoard',
name: 'AGVBoard',
component: Layout,
// component: Layout,
// route level code-splitting
// this generates a separate chunk (about.[hash].js) for this route
// which is lazy-loaded when the route is visited.

View File

@ -2,7 +2,7 @@
* @Author: zwq
* @Date: 2021-07-19 15:18:30
* @LastEditors: zhp
* @LastEditTime: 2023-11-14 10:46:52
* @LastEditTime: 2023-11-15 16:04:06
* @Description:
-->
<template>
@ -727,21 +727,21 @@ export default {
}
},
watch: {
clientWidth(val) {
if (!this.timer) {
this.clientWidth = val
this.beilv2 = this.clientWidth / 1920
this.timer = true
let _this = this
setTimeout(function () {
_this.timer = false
}, 500)
}
//
this.windowWidth(val);
}
},
// watch: {
// clientWidth(val) {
// if (!this.timer) {
// this.clientWidth = val
// this.beilv2 = this.clientWidth / 1920
// this.timer = true
// let _this = this
// setTimeout(function () {
// _this.timer = false
// }, 500)
// }
// //
// this.windowWidth(val);
// }
// },
created() {
// this.fetchList('exception-alarm')
// this.fetchList('inAndOutOfEachLine')

View File

@ -1021,7 +1021,7 @@ export default {
top: 2em;
}
.container-main {
// padding: 10px;
padding: 6px;
}
}

View File

@ -140,8 +140,8 @@ export default {
getDataList() {
this.dataListLoading = true;
this.urlOptions.getDataListURL(this.listQuery).then(response => {
// this.tableData = response.data.list;
this.getStatus(response.data.list)
this.tableData = response.data.list;
// this.getStatus(response.data.list)
this.listQuery.total = response.data.total;
this.dataListLoading = false;
});
@ -150,6 +150,7 @@ export default {
const ids = list.map((i) => {
return i.id;
});
console.log('111', ids)
getStatus(ids).then((response) => {
response.forEach((a) => {
list.forEach((b) => {

View File

@ -2,7 +2,7 @@
* @Author: zwq
* @Date: 2021-11-18 14:16:25
* @LastEditors: DY
* @LastEditTime: 2023-11-15 17:45:04
* @LastEditTime: 2023-11-16 09:14:35
* @Description:
-->
<template>
@ -41,12 +41,12 @@
<el-table-column prop="priority" label="优先级" />
<el-table-column prop="planAssignmentQuantity" label="计划分配数量" >
<template slot-scope="scope">
<el-input v-model="scope.row.planAssignmentQuantity"></el-input>
<el-input v-model="scope.row.planAssignmentQuantity" :disabled="scope.row.actualAssignmentQuantity"></el-input>
</template>
</el-table-column>
<el-table-column prop="actualAssignmentQuantity" label="实际分配数量">
<template slot-scope="scope">
<el-input v-model="scope.row.actualAssignmentQuantity"></el-input>
<el-input v-model="scope.row.actualAssignmentQuantity" :disabled="scope.row.actualAssignmentQuantity"></el-input>
</template>
</el-table-column>
<el-table-column label="操作">

View File

@ -2,7 +2,7 @@
* @Author: zwq
* @Date: 2021-11-18 14:16:25
* @LastEditors: DY
* @LastEditTime: 2023-11-15 14:18:38
* @LastEditTime: 2023-11-16 13:45:13
* @Description:
-->
<template>
@ -64,15 +64,15 @@
<div class="formContent">
<el-row :gutter="20">
<el-col :span="8">订单创建时间:
<span v-for="(item, index) in orderArray" :key="index" style="margin-right: 10px; white-space: normal">{{ item.createTime }}</span>
<span v-for="(item, index) in orderArray" :key="index" style="margin-right: 10px; white-space: pre-wrap">{{ parseTime(item.createTime) }}</span>
</el-col>
<el-col :span="8">计划开始时间:{{ dataForm.planStartTime }}</el-col>
<el-col :span="8">计划完成时间:{{ dataForm.planFinishTime }}</el-col>
<el-col :span="8">计划开始时间:{{ parseTime(dataForm.planStartTime) }}</el-col>
<el-col :span="8">计划完成时间:{{ parseTime(dataForm.planFinishTime) }}</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="8">预计结束时间:{{ dataForm.computeFinishTime }}</el-col>
<el-col :span="8">实际开始时间:{{ dataForm.startProduceTime }}</el-col>
<el-col :span="8">实际完成时间:{{ dataForm.finishProduceTime }}</el-col>
<el-col :span="8">预计结束时间:{{ parseTime(dataForm.computeFinishTime) }}</el-col>
<el-col :span="8">实际开始时间:{{ parseTime(dataForm.startProduceTime) }}</el-col>
<el-col :span="8">实际完成时间:{{ parseTime(dataForm.finishProduceTime) }}</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="8">工单状态:{{ fitlerS(dataForm.status) }}</el-col>
@ -147,6 +147,7 @@ import { orderList } from "@/api/base/orderManage";
import { getProcessFlowList } from '@/api/base/orderManage'
import SmallTitle from './SmallTitle';
import { publicFormatter } from "@/utils/dict";
import { parseTime } from '@/utils/ruoyi'
const tableBtn = [
{
@ -233,7 +234,7 @@ export default {
this.getDict()
},
mounted() {
if (this.$route.query.woIdString) {
if (this.$route.query.woIdString && this.$route.query.woIdString !== 'undefined') {
const idList = this.$route.query.woIdString.split(',')
getCoreWOListById(idList).then(res => {
this.workOrderButton = res.data.map(work => {

View File

@ -348,20 +348,25 @@ export default {
id: val.data.id,
status: undefined
}
let opration = ''
if (val.type === 'active') {
param.status = 2
opration = '激活'
}
if (val.type === 'pause') {
param.status = 3
opration = '暂停'
}
if (val.type === 'nullify') {
param.status = 9
opration = '报废'
}
if (val.type === 'finish') {
param.status = 4
opration = '完成'
}
console.log('22',val)
this.$confirm(`确定${'[工单名称=' + val.data.name + ']'}进行${val.type}操作?`, "提示", {
this.$confirm(`确定${opration}${'"工单' + val.data.name + '"'}?`, "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
@ -369,7 +374,7 @@ export default {
.then(() => {
statusChange(param).then(({ data }) => {
this.$message({
message: '操作成功!',
message: '操作成功!工单状态稍后将会更新!',
type: 'success',
duration: 1500,
onClose: () => {

View File

@ -1,5 +1,5 @@
<template>
<el-drawer :visible.sync="drawer" :append-to-body="true" size="80%">
<el-drawer :visible.sync="drawer" :append-to-body="true" size="80%" >
<small-title slot="title" :no-padding="true">
<!-- <template v-for="demo in demoList"> -->
<!-- <el-button :key="demo.name" :type="demo.name === curDemo ? 'primary' : ' '" @click="curDemo = demo.name"> -->
@ -29,24 +29,13 @@
<el-col :span="20">
<!-- 纸张设置 -->
<el-button-group style="margin:0 10px">
<el-button
v-for="(value,type) in paperTypes"
:key="type"
:type="curPaperType === type ? 'primary' : ' '"
@click="setPaper(type,value)"
>
<el-button v-for="(value,type) in paperTypes" :key="type" :type="curPaperType === type ? 'primary' : ' '"
@click="setPaper(type,value)">
{{ type }}
</el-button>
</el-button-group>
<el-input-number
style="margin:0 10px"
:value="scaleValue "
:precision="2"
:step="0.1"
:min="scaleMin"
:max="scaleMax"
@change="changeScale"
/>
<el-input-number style="margin:0 10px" :value="scaleValue " :precision="2" :step="0.1" :min="scaleMin"
:max="scaleMax" @change="changeScale" />
<el-popover v-model="paperPopVisible" placement="bottom" width="300" title="设置纸张宽高(mm)">
<div style="display: flex;align-items: center;justify-content: space-between;margin-bottom: 10px">
<el-input v-model="paperWidth" type="number" style=" width: 100px; text-align: center" place="宽mm" />~
@ -212,7 +201,7 @@ export default {
return type
}
},
mounted() {
created() {
this.init()
// console.log('aaaaaa')
// this.otherPaper()
@ -224,6 +213,9 @@ export default {
// handleClose() {
// $('.hiprintEpContainer').empty()
// },
closed() {
$('.hiprintEpContainer').empty()
},
init(data) {
this.drawer = true
this.modelData = data
@ -264,6 +256,7 @@ export default {
// console.log(this.modelData)
// console.log($('#hiprint-printTemplate').empty())
if (this.modelData) {
// console.log(this.modelData);
$('.hiprintEpContainer').empty()
hiprint.PrintElementTypeManager.build('.hiprintEpContainer', provider.value)
$('.hiprint-printTemplate').empty()
@ -278,7 +271,7 @@ export default {
$('.hiprint-printTemplate').empty()
// const templates = this.$ls.get('KEY_TEMPLATES', {})
const template = provider.value
console.log(template)
// console.log(template)
hiprintTemplate = new hiprint.PrintTemplate({
template: template,
settingContainer: '#PrintElementOptionSetting',
@ -287,6 +280,7 @@ export default {
}
// hiprintTemplate.design('#hiprint-printTemplate')
// console.log(hiprintTemplate)
console.log(hiprintTemplate);
hiprintTemplate.design('#hiprint-printTemplate', { grid: true })
// , zoomtrue
this.scaleValue = hiprintTemplate.editingPanel.scale || 1

View File

@ -80,7 +80,7 @@ export default {
type: 'datePicker',
label: '时间',
dateType: 'month',
format: 'yyyy-MM-dd',
format: 'yyyy-MM',
valueFormat: 'yyyy-MM-dd HH:mm:ss',
rangeSeparator: '-',
startPlaceholder: '开始时间',

View File

@ -44,7 +44,7 @@
border-radius: 100%;
background: #26b9de;
"></span>
产线生产监控系统
MES
</p>
</div>
<video
@ -67,18 +67,7 @@
<h3 class="title">中建材智能自动化研究院有限公司</h3>
</h2>
<h2 class="pc-title" style="">
<h3
class="title"
style="
margin: 0;
margin-left: 32px;
font-weight: 400;
user-select: none;
color: #000;
font-size: 36px;
line-height: 54px;
letter-spacing: 2px;
">
<h3 class="title" style="">
<img
src="../assets/logo/cnbm.png"
alt="cnbm_logo"
@ -103,7 +92,7 @@
line-height: 54px;
letter-spacing: 2px;
">
产线生产监控系统
MES
</h3>
</h2>
@ -219,12 +208,14 @@
</div>
<!-- 下方的登录按钮 -->
<el-form-item id="button-form-item" style="width: 100%; margin-top: 32px">
<el-form-item
id="button-form-item"
style="width: 100%; margin-top: 32px">
<el-button
:loading="loading"
size="medium"
type="primary"
style="width: 100%; height: 66px; font-size: 18px;"
style="width: 100%; height: 66px; font-size: 18px"
@click.native.prevent="getCode">
<span v-if="!loading"> </span>
<span v-else> 中...</span>
@ -358,6 +349,7 @@ export default {
};
},
created() {
document.body.style['min-height'] = '1024px';
//
this.tenantEnable = getTenantEnable();
if (this.tenantEnable) {
@ -377,6 +369,9 @@ export default {
: undefined;
this.getCookie();
},
destroyed() {
document.body.style['min-height'] = 'unset';
},
methods: {
getCode() {
//

View File

@ -1,6 +1,6 @@
<template>
<div class="app-container">
<doc-alert title="地区 & IP" url="https://doc.iocoder.cn/area-and-ip/" />
<!-- <doc-alert title="地区 & IP" url="https://doc.iocoder.cn/area-and-ip/" /> -->
<!-- 操作工具栏 -->
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">

View File

@ -1,6 +1,6 @@
<template>
<div class="app-container">
<doc-alert title="异常处理(错误码)" url="https://doc.iocoder.cn/exception/" />
<!-- <doc-alert title="异常处理(错误码)" url="https://doc.iocoder.cn/exception/" /> -->
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
<el-form-item label="错误码类型" prop="type">

View File

@ -1,6 +1,6 @@
<template>
<div class="app-container">
<doc-alert title="系统日志" url="https://doc.iocoder.cn/system-log/" />
<!-- <doc-alert title="系统日志" url="https://doc.iocoder.cn/system-log/" /> -->
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="登录地址" prop="userIp">

View File

@ -1,6 +1,6 @@
<template>
<div class="app-container">
<doc-alert title="邮件配置" url="https://doc.iocoder.cn/mail" />
<!-- <doc-alert title="邮件配置" url="https://doc.iocoder.cn/mail" /> -->
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">

View File

@ -1,6 +1,6 @@
<template>
<div class="app-container">
<doc-alert title="邮件配置" url="https://doc.iocoder.cn/mail" />
<!-- <doc-alert title="邮件配置" url="https://doc.iocoder.cn/mail" /> -->
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">

View File

@ -1,6 +1,6 @@
<template>
<div class="app-container">
<doc-alert title="邮件配置" url="https://doc.iocoder.cn/mail" />
<!-- <doc-alert title="邮件配置" url="https://doc.iocoder.cn/mail" /> -->
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">

View File

@ -1,7 +1,7 @@
<template>
<div class="app-container">
<doc-alert title="功能权限" url="https://doc.iocoder.cn/resource-permission" />
<doc-alert title="菜单路由" url="https://doc.iocoder.cn/vue2/route/" />
<!-- <doc-alert title="功能权限" url="https://doc.iocoder.cn/resource-permission" />
<doc-alert title="菜单路由" url="https://doc.iocoder.cn/vue2/route/" /> -->
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
<el-form-item label="菜单名称" prop="name">

View File

@ -1,6 +1,6 @@
<template>
<div class="app-container">
<doc-alert title="站内信配置" url="https://doc.iocoder.cn/notify/" />
<!-- <doc-alert title="站内信配置" url="https://doc.iocoder.cn/notify/" /> -->
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="用户编号" prop="userId">

View File

@ -1,6 +1,6 @@
<template>
<div class="app-container">
<doc-alert title="站内信配置" url="https://doc.iocoder.cn/notify/" />
<!-- <doc-alert title="站内信配置" url="https://doc.iocoder.cn/notify/" /> -->
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">

View File

@ -1,6 +1,6 @@
<template>
<div class="app-container">
<doc-alert title="站内信配置" url="https://doc.iocoder.cn/notify/" />
<!-- <doc-alert title="站内信配置" url="https://doc.iocoder.cn/notify/" /> -->
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">

View File

@ -1,6 +1,6 @@
<template>
<div class="app-container">
<doc-alert title="OAuth 2.0SSO 单点登录)" url="https://doc.iocoder.cn/oauth2/" />
<!-- <doc-alert title="OAuth 2.0SSO 单点登录)" url="https://doc.iocoder.cn/oauth2/" /> -->
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">

View File

@ -1,7 +1,7 @@
<template>
<div class="app-container">
<doc-alert title="OAuth 2.0SSO 单点登录)" url="https://doc.iocoder.cn/oauth2/" />
<doc-alert title="用户体系" url="https://doc.iocoder.cn/user-center/" />
<!-- <doc-alert title="OAuth 2.0SSO 单点登录)" url="https://doc.iocoder.cn/oauth2/" />
<doc-alert title="用户体系" url="https://doc.iocoder.cn/user-center/" /> -->
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="68px">

View File

@ -1,6 +1,6 @@
<template>
<div class="app-container">
<doc-alert title="系统日志" url="https://doc.iocoder.cn/system-log/" />
<!-- <doc-alert title="系统日志" url="https://doc.iocoder.cn/system-log/" /> -->
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="系统模块" prop="title">

View File

@ -1,7 +1,7 @@
<template>
<div class="app-container">
<doc-alert title="功能权限" url="https://doc.iocoder.cn/resource-permission" />
<doc-alert title="数据权限" url="https://doc.iocoder.cn/data-permission" />
<!-- <doc-alert title="功能权限" url="https://doc.iocoder.cn/resource-permission" />
<doc-alert title="数据权限" url="https://doc.iocoder.cn/data-permission" /> -->
<el-form :model="queryParams" ref="queryForm" v-show="showSearch" :inline="true">
<el-form-item label="角色名称" prop="name">
<el-input v-model="queryParams.name" placeholder="请输入角色名称" clearable size="small" style="width: 240px"

View File

@ -1,6 +1,6 @@
<template>
<div class="app-container">
<doc-alert title="敏感词" url="https://doc.iocoder.cn/sensitive-word" />
<!-- <doc-alert title="敏感词" url="https://doc.iocoder.cn/sensitive-word" /> -->
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="敏感词" prop="name">

View File

@ -1,6 +1,6 @@
<template>
<div class="app-container">
<doc-alert title="短信配置" url="https://doc.iocoder.cn/sms/" />
<!-- <doc-alert title="短信配置" url="https://doc.iocoder.cn/sms/" /> -->
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="短信签名" prop="signature">

View File

@ -1,6 +1,6 @@
<template>
<div class="app-container">
<doc-alert title="短信配置" url="https://doc.iocoder.cn/sms/" />
<!-- <doc-alert title="短信配置" url="https://doc.iocoder.cn/sms/" /> -->
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
<el-form-item label="手机号" prop="mobile">

View File

@ -1,6 +1,6 @@
<template>
<div class="app-container">
<doc-alert title="短信配置" url="https://doc.iocoder.cn/sms/" />
<!-- <doc-alert title="短信配置" url="https://doc.iocoder.cn/sms/" /> -->
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="150px">
<el-form-item label="短信类型" prop="type">

View File

@ -1,6 +1,6 @@
<template>
<div class="app-container">
<doc-alert title="SaaS 多租户" url="https://doc.iocoder.cn/saas-tenant/" />
<!-- <doc-alert title="SaaS 多租户" url="https://doc.iocoder.cn/saas-tenant/" /> -->
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="租户名" prop="name">

View File

@ -1,6 +1,6 @@
<template>
<div class="app-container">
<doc-alert title="SaaS 多租户" url="https://doc.iocoder.cn/saas-tenant/" />
<!-- <doc-alert title="SaaS 多租户" url="https://doc.iocoder.cn/saas-tenant/" /> -->
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="套餐名" prop="name">

File diff suppressed because it is too large Load Diff