This commit is contained in:
2023-06-30 17:15:25 +08:00
parent 680d6876ba
commit cf3fed6448
3 changed files with 388 additions and 375 deletions

View File

@ -113,3 +113,17 @@ export const tenantStatusDict = [
elTagType: "warning", elTagType: "warning",
}, },
]; ];
// 初始化状态
export const initStatusDict = [
{
label: "否",
value: "0",
elTagType: "warning",
},
{
label: "是",
value: "1",
elTagType: "success",
},
];

View File

@ -86,7 +86,7 @@
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
:disabled="single" :disabled="single || ids[0].initialized === '1'"
icon="Refresh" icon="Refresh"
plain plain
type="primary" type="primary"
@ -105,10 +105,10 @@
:data="tenantList" :data="tenantList"
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
> >
<el-table-column align="center" type="selection" width="55"/> <el-table-column align="center" type="selection" width="55" />
<el-table-column align="center" label="公司名称" prop="companyName"/> <el-table-column align="center" label="公司名称" prop="companyName" />
<el-table-column align="center" label="联系人名称" prop="contactName"/> <el-table-column align="center" label="联系人名称" prop="contactName" />
<el-table-column align="center" label="联系人电话" prop="contactPhone"/> <el-table-column align="center" label="联系人电话" prop="contactPhone" />
<el-table-column <el-table-column
align="center" align="center"
label="过期时间" label="过期时间"
@ -119,22 +119,23 @@
<span>{{ parseTime(scope.row.expireTime, "{y}-{m}-{d}") }}</span> <span>{{ parseTime(scope.row.expireTime, "{y}-{m}-{d}") }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" label="用户数量" prop="accountCount"/> <el-table-column align="center" label="用户数量" prop="accountCount" />
<el-table-column align="center" label="状态"> <el-table-column align="center" label="状态">
<template #default="{ row }"> <template #default="{ row }">
<dict-tag :options="tenantStatusDict" :value="row.status"/> <dict-tag :options="tenantStatusDict" :value="row.status" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" label="初始化状态"> <el-table-column align="center" label="初始化状态">
<template #default="{ row }"> <template #default="{ row }">
<el-tag :type="row.initialized === '1' ? 'success' : 'warning'" <!-- <el-tag :type="row.initialized === '1' ? 'success' : 'warning'"-->
>{{ row.initialized === "1" ? "是" : "否" }} <!-- >{{ row.initialized === "1" ? "是" : "否" }}-->
</el-tag> <!-- </el-tag>-->
<dict-tag :options="initStatusDict" :value="row.initialized" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" label="模式"> <el-table-column align="center" label="模式">
<template #default="{ row }"> <template #default="{ row }">
<dict-tag :options="tenantModeDict" :value="row.mode"/> <dict-tag :options="tenantModeDict" :value="row.mode" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
@ -206,10 +207,10 @@
> >
<el-form ref="tenantRef" :model="form" :rules="rules" label-width="130px"> <el-form ref="tenantRef" :model="form" :rules="rules" label-width="130px">
<el-form-item label="公司名称" prop="companyName"> <el-form-item label="公司名称" prop="companyName">
<el-input v-model="form.companyName" placeholder="请输入公司名称"/> <el-input v-model="form.companyName" placeholder="请输入公司名称" />
</el-form-item> </el-form-item>
<el-form-item label="联系人名称" prop="contactName"> <el-form-item label="联系人名称" prop="contactName">
<el-input v-model="form.contactName" placeholder="请输入联系人名称"/> <el-input v-model="form.contactName" placeholder="请输入联系人名称" />
</el-form-item> </el-form-item>
<el-form-item label="联系人电话" prop="contactPhone"> <el-form-item label="联系人电话" prop="contactPhone">
<el-input <el-input
@ -218,7 +219,7 @@
/> />
</el-form-item> </el-form-item>
<el-form-item label="公司地址" prop="address"> <el-form-item label="公司地址" prop="address">
<el-input v-model="form.address" placeholder="请输入公司地址"/> <el-input v-model="form.address" placeholder="请输入公司地址" />
</el-form-item> </el-form-item>
<el-form-item label="公司简介" prop="profile"> <el-form-item label="公司简介" prop="profile">
<el-input <el-input
@ -244,7 +245,7 @@
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="用户数量" prop="accountCount"> <el-form-item label="用户数量" prop="accountCount">
<el-input v-model="form.accountCount" placeholder="请输入用户数量"/> <el-input v-model="form.accountCount" placeholder="请输入用户数量" />
</el-form-item> </el-form-item>
<el-form-item label="备注" prop="remark"> <el-form-item label="备注" prop="remark">
<el-input <el-input
@ -325,7 +326,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="数据库IP" prop="ip"> <el-form-item label="数据库IP" prop="ip">
<el-input v-model="dataSourceForm.ip"/> <el-input v-model="dataSourceForm.ip" />
</el-form-item> </el-form-item>
<el-form-item label="数据库端口" prop="port"> <el-form-item label="数据库端口" prop="port">
<el-input-number <el-input-number
@ -335,7 +336,7 @@
/> />
</el-form-item> </el-form-item>
<el-form-item label="数据库名称" prop="dbName"> <el-form-item label="数据库名称" prop="dbName">
<el-input v-model="dataSourceForm.dbName"/> <el-input v-model="dataSourceForm.dbName" />
</el-form-item> </el-form-item>
<!-- schemaName 模式名称 仅当数据库类型不是Mysql时显示 --> <!-- schemaName 模式名称 仅当数据库类型不是Mysql时显示 -->
<el-form-item <el-form-item
@ -343,13 +344,13 @@
label="模式名称" label="模式名称"
prop="schemaName" prop="schemaName"
> >
<el-input v-model="dataSourceForm.schemaName"/> <el-input v-model="dataSourceForm.schemaName" />
</el-form-item> </el-form-item>
<el-form-item label="数据库账号" prop="username"> <el-form-item label="数据库账号" prop="username">
<el-input v-model="dataSourceForm.username"/> <el-input v-model="dataSourceForm.username" />
</el-form-item> </el-form-item>
<el-form-item label="数据库密码" prop="password"> <el-form-item label="数据库密码" prop="password">
<el-input v-model="dataSourceForm.password"/> <el-input v-model="dataSourceForm.password" />
</el-form-item> </el-form-item>
<el-form-item label="使用" prop="isPrimary"> <el-form-item label="使用" prop="isPrimary">
<el-switch <el-switch
@ -369,7 +370,7 @@
showDatasourceAdvanced ? 90 : 0 showDatasourceAdvanced ? 90 : 0
}deg);transition: all 0.3s;`" }deg);transition: all 0.3s;`"
> >
<ArrowRight/> <ArrowRight />
</el-icon> </el-icon>
<span> <span>
<!-- 显示或隐藏高级选项 --> <!-- 显示或隐藏高级选项 -->
@ -381,22 +382,13 @@
<div v-if="showDatasourceAdvanced"> <div v-if="showDatasourceAdvanced">
<!-- initCount minCount maxCount --> <!-- initCount minCount maxCount -->
<el-form-item label="初始化连接数" prop="initCount"> <el-form-item label="初始化连接数" prop="initCount">
<el-input-number <el-input-number v-model="dataSourceForm.initCount" :min="0" />
v-model="dataSourceForm.initCount"
:min="0"
/>
</el-form-item> </el-form-item>
<el-form-item label="最小连接数" prop="minCount"> <el-form-item label="最小连接数" prop="minCount">
<el-input-number <el-input-number v-model="dataSourceForm.minCount" :min="0" />
v-model="dataSourceForm.minCount"
:min="0"
/>
</el-form-item> </el-form-item>
<el-form-item label="最大连接数" prop="maxCount"> <el-form-item label="最大连接数" prop="maxCount">
<el-input-number <el-input-number v-model="dataSourceForm.maxCount" :min="0" />
v-model="dataSourceForm.maxCount"
:min="0"
/>
</el-form-item> </el-form-item>
</div> </div>
</Transition> </Transition>
@ -499,15 +491,20 @@ import {
updateDatasource, updateDatasource,
updateTenant, updateTenant,
} from "@/api/tenant/tenant"; } from "@/api/tenant/tenant";
import {getCurrentInstance, reactive, ref, toRefs} from "vue"; import { getCurrentInstance, reactive, ref, toRefs } from "vue";
import {ElMessage, ElMessageBox} from "element-plus"; import { ElMessage, ElMessageBox } from "element-plus";
import {database_type_dict, tenantModeDict, tenantStatusDict,} from "@/constant/dict"; import {
database_type_dict,
initStatusDict,
tenantModeDict,
tenantStatusDict,
} from "@/constant/dict";
import DictTag from "@/components/DictTag/index.vue"; import DictTag from "@/components/DictTag/index.vue";
import {cloneDeep} from "lodash-es"; import { cloneDeep } from "lodash-es";
import {ArrowRight} from "@element-plus/icons-vue"; import { ArrowRight } from "@element-plus/icons-vue";
import {useRouter} from "vue-router"; import { useRouter } from "vue-router";
const {proxy} = getCurrentInstance(); const { proxy } = getCurrentInstance();
const router = useRouter(); const router = useRouter();
const tenantList = ref([]); const tenantList = ref([]);
@ -546,7 +543,7 @@ const data = reactive({
}, },
rules: { rules: {
companyName: [ companyName: [
{required: true, message: "公司名称不能为空", trigger: "blur"}, { required: true, message: "公司名称不能为空", trigger: "blur" },
], ],
}, },
tenantSettingForm: {}, tenantSettingForm: {},
@ -857,8 +854,7 @@ function handleDelete(row) {
getList(); getList();
proxy.$modal.msgSuccess("删除成功"); proxy.$modal.msgSuccess("删除成功");
}) })
.catch(() => { .catch(() => {});
});
} }
/** 导出按钮操作 */ /** 导出按钮操作 */

View File

@ -13,10 +13,10 @@
class="init-steps" class="init-steps"
finish-status="success" finish-status="success"
> >
<el-step title="开始"/> <el-step title="开始" />
<el-step title="检查"/> <el-step title="检查" />
<el-step title="步骤2"/> <el-step title="步骤2" />
<el-step title="步骤3"/> <el-step title="步骤3" />
</el-steps> </el-steps>
<!-- 错误提示 --> <!-- 错误提示 -->
@ -143,7 +143,7 @@
<el-col :span="1.5"> <el-col :span="1.5">
<div class="btn-loading"> <div class="btn-loading">
<el-icon size="80"> <el-icon size="80">
<refresh/> <refresh />
</el-icon> </el-icon>
</div> </div>
</el-col> </el-col>
@ -221,11 +221,11 @@
</div> </div>
</template> </template>
<script setup> <script setup>
import {onMounted, reactive, ref, toRefs, watchEffect} from "vue"; import { onMounted, reactive, ref, toRefs, watchEffect } from "vue";
import {check, createTables, initData} from "@/api/tenant/init"; import { check, createTables, initData } from "@/api/tenant/init";
import {useRoute, useRouter} from "vue-router"; import { useRoute, useRouter } from "vue-router";
import {tenantModeDict} from "@/constant/dict"; import { tenantModeDict } from "@/constant/dict";
import {Refresh} from "@element-plus/icons-vue"; import { Refresh } from "@element-plus/icons-vue";
const route = useRoute(); const route = useRoute();
const router = useRouter(); const router = useRouter();
@ -236,7 +236,7 @@ const loading = ref(false);
if (route.query.id) { if (route.query.id) {
tenantId.value = route.query.id; tenantId.value = route.query.id;
} else { } else {
router.push({path: "/tenant/tenant"}); router.push({ path: "/tenant/tenant" });
} }
const data = reactive({ const data = reactive({
@ -245,7 +245,7 @@ const data = reactive({
initDataResult: {}, initDataResult: {},
}); });
const {tenantInitCheckResult, createTablesResult, initDataResult} = const { tenantInitCheckResult, createTablesResult, initDataResult } =
toRefs(data); toRefs(data);
const initTenant = async () => { const initTenant = async () => {
@ -270,7 +270,8 @@ const tenantInitCheck = () => {
currentStepStatus.value = 2; currentStepStatus.value = 2;
activeStep.value = 0; activeStep.value = 0;
throw new Error("租户初始化检查失败"); throw new Error("租户初始化检查失败");
}).then((resp) => { })
.then((resp) => {
tenantInitCheckResult.value = resp; tenantInitCheckResult.value = resp;
if (resp.result === 200) { if (resp.result === 200) {
currentStepStatus.value = 2; currentStepStatus.value = 2;
@ -278,7 +279,7 @@ const tenantInitCheck = () => {
currentStepStatus.value = 0; currentStepStatus.value = 0;
throw new Error("租户初始化检查失败"); throw new Error("租户初始化检查失败");
} }
}) });
}; };
// 第二步: 创建数据库 // 第二步: 创建数据库
@ -291,7 +292,8 @@ const createDatabase = () => {
currentStepStatus.value = 2; currentStepStatus.value = 2;
activeStep.value = 1; activeStep.value = 1;
throw new Error("创建数据库失败"); throw new Error("创建数据库失败");
}).then((resp) => { })
.then((resp) => {
createTablesResult.value = resp; createTablesResult.value = resp;
if (resp.result === 200) { if (resp.result === 200) {
currentStepStatus.value = 2; currentStepStatus.value = 2;
@ -299,7 +301,7 @@ const createDatabase = () => {
currentStepStatus.value = 0; currentStepStatus.value = 0;
throw new Error("创建数据库失败"); throw new Error("创建数据库失败");
} }
}) });
}; };
// 第三步,导入数据 // 第三步,导入数据
@ -312,7 +314,8 @@ const importData = () => {
currentStepStatus.value = 2; currentStepStatus.value = 2;
activeStep.value = 2; activeStep.value = 2;
throw new Error("导入数据失败"); throw new Error("导入数据失败");
}).then((resp) => { })
.then((resp) => {
initDataResult.value = resp; initDataResult.value = resp;
if (resp.result === 200) { if (resp.result === 200) {
currentStepStatus.value = 2; currentStepStatus.value = 2;
@ -320,7 +323,7 @@ const importData = () => {
currentStepStatus.value = 0; currentStepStatus.value = 0;
throw new Error("导入数据失败"); throw new Error("导入数据失败");
} }
}) });
}; };
onMounted(() => { onMounted(() => {