file upload and export
This commit is contained in:
@ -1,4 +1,5 @@
|
|||||||
import { defineStore } from "pinia";
|
import { defineStore } from "pinia";
|
||||||
|
import { tenantSelect } from "@/api/subPlatform/tenant";
|
||||||
|
|
||||||
const useDataStore = defineStore("data", {
|
const useDataStore = defineStore("data", {
|
||||||
state: () => ({
|
state: () => ({
|
||||||
@ -11,8 +12,12 @@ const useDataStore = defineStore("data", {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
actions: {
|
actions: {
|
||||||
setSiteList(list) {
|
async setSiteList(list) {
|
||||||
this.siteList = list;
|
if (this.siteList.length !== 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const { rows } = await tenantSelect();
|
||||||
|
this.siteList = rows;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -3,13 +3,13 @@
|
|||||||
:model-value="modelValue"
|
:model-value="modelValue"
|
||||||
placeholder="请选择,支持搜索"
|
placeholder="请选择,支持搜索"
|
||||||
size="default"
|
size="default"
|
||||||
:loading="siteList.length === 0"
|
:loading="dataStore.siteList.length === 0"
|
||||||
@change="valueChanged"
|
@change="valueChanged"
|
||||||
filterable
|
filterable
|
||||||
clearable
|
clearable
|
||||||
>
|
>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in siteList"
|
v-for="item in dataStore.siteList"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
:label="item.name"
|
:label="item.name"
|
||||||
:value="item.id"
|
:value="item.id"
|
||||||
@ -17,7 +17,6 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</template>
|
</template>
|
||||||
<script setup name="SiteOptions">
|
<script setup name="SiteOptions">
|
||||||
import { tenantSelect } from "@/api/subPlatform/tenant";
|
|
||||||
import useDataStore from "@/store/modules/data";
|
import useDataStore from "@/store/modules/data";
|
||||||
import { ref, toRefs } from "vue";
|
import { ref, toRefs } from "vue";
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
@ -25,24 +24,25 @@ const props = defineProps({
|
|||||||
type: [Number, String],
|
type: [Number, String],
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const { modelValue } = toRefs(props);
|
const { modelValue } = toRefs(props);
|
||||||
const dataStore = useDataStore();
|
const dataStore = useDataStore();
|
||||||
const siteList = ref([]);
|
dataStore.setSiteList();
|
||||||
|
// const siteList = ref([]);
|
||||||
|
|
||||||
const emit = defineEmits(["update:modelValue"]);
|
const emit = defineEmits(["update:modelValue"]);
|
||||||
|
|
||||||
// 获取站点列表
|
// // 获取站点列表
|
||||||
const getSiteList = async () => {
|
// const getSiteList = async () => {
|
||||||
const { rows } = await tenantSelect();
|
// const { rows } = await tenantSelect();
|
||||||
siteList.value = rows;
|
// siteList.value = rows;
|
||||||
dataStore.setSiteList(rows);
|
// dataStore.setSiteList(rows);
|
||||||
};
|
// };
|
||||||
|
|
||||||
const valueChanged = (val) => {
|
const valueChanged = (val) => {
|
||||||
console.log("changed");
|
console.log("changed");
|
||||||
emit("update:modelValue", val);
|
emit("update:modelValue", val);
|
||||||
};
|
};
|
||||||
|
|
||||||
getSiteList();
|
// getSiteList();
|
||||||
|
dataStore.setSiteList();
|
||||||
</script>
|
</script>
|
||||||
|
@ -61,7 +61,12 @@
|
|||||||
>
|
>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-button type="info" plain icon="upload" size="default" @click=""
|
<el-button
|
||||||
|
type="info"
|
||||||
|
plain
|
||||||
|
icon="upload"
|
||||||
|
size="default"
|
||||||
|
@click="handleImport"
|
||||||
>导入</el-button
|
>导入</el-button
|
||||||
>
|
>
|
||||||
</el-col>
|
</el-col>
|
||||||
@ -135,6 +140,53 @@
|
|||||||
v-model:limit="queryParams.page_size"
|
v-model:limit="queryParams.page_size"
|
||||||
@pagination="getList"
|
@pagination="getList"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<!-- 用户导入对话框 -->
|
||||||
|
<el-dialog
|
||||||
|
:title="upload.title"
|
||||||
|
v-model="upload.open"
|
||||||
|
width="400px"
|
||||||
|
append-to-body
|
||||||
|
>
|
||||||
|
<el-upload
|
||||||
|
ref="uploadRef"
|
||||||
|
:limit="1"
|
||||||
|
accept=".xlsx, .xls"
|
||||||
|
:headers="upload.headers"
|
||||||
|
:action="upload.url"
|
||||||
|
:disabled="upload.isUploading"
|
||||||
|
:on-progress="handleFileUploadProgress"
|
||||||
|
:on-success="handleFileSuccess"
|
||||||
|
:auto-upload="false"
|
||||||
|
drag
|
||||||
|
>
|
||||||
|
<el-icon class="el-icon--upload"><upload-filled /></el-icon>
|
||||||
|
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
|
||||||
|
<template #tip>
|
||||||
|
<div class="el-upload__tip text-center">
|
||||||
|
<!-- <div class="el-upload__tip">
|
||||||
|
<el-checkbox
|
||||||
|
v-model="upload.updateSupport"
|
||||||
|
/>是否更新已经存在的用户数据
|
||||||
|
</div> -->
|
||||||
|
<span>仅允许导入xls、xlsx格式文件。</span>
|
||||||
|
<!-- <el-link
|
||||||
|
type="primary"
|
||||||
|
:underline="false"
|
||||||
|
style="font-size: 12px; vertical-align: baseline"
|
||||||
|
@click="importTemplate"
|
||||||
|
>下载模板</el-link
|
||||||
|
> -->
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-upload>
|
||||||
|
<template #footer>
|
||||||
|
<div class="dialog-footer">
|
||||||
|
<el-button type="primary" @click="submitFileForm">确 定</el-button>
|
||||||
|
<el-button @click="upload.open = false">取 消</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -144,13 +196,20 @@ import {
|
|||||||
companyExport,
|
companyExport,
|
||||||
companyDelete,
|
companyDelete,
|
||||||
} from "@/api/dataList/enterprise";
|
} from "@/api/dataList/enterprise";
|
||||||
import { download } from "@/utils/request";
|
import { getToken } from "@/utils/auth";
|
||||||
import dayjs from "dayjs";
|
import axios from "axios";
|
||||||
|
// import { download } from "@/utils/request";
|
||||||
|
// import dayjs from "dayjs";
|
||||||
|
import { tansParams, blobValidate } from "@/utils/ruoyi";
|
||||||
|
import { saveAs } from "file-saver";
|
||||||
import { tenantSelect } from "@/api/subPlatform/tenant";
|
import { tenantSelect } from "@/api/subPlatform/tenant";
|
||||||
import { reactive, ref, toRefs } from "vue";
|
import { reactive, ref, toRefs } from "vue";
|
||||||
import { useRouter } from "vue-router";
|
import { useRouter } from "vue-router";
|
||||||
import { enterpriseOptions } from "@/utils/parameter";
|
import { enterpriseOptions } from "@/utils/parameter";
|
||||||
import { ElMessageBox } from "element-plus";
|
import { ElLoading, ElMessageBox } from "element-plus";
|
||||||
|
import request from "@/utils/request";
|
||||||
|
import dayjs from "dayjs";
|
||||||
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const data = reactive({
|
const data = reactive({
|
||||||
queryParams: {
|
queryParams: {
|
||||||
@ -161,6 +220,23 @@ const data = reactive({
|
|||||||
tenantId: undefined,
|
tenantId: undefined,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/*** 用户导入参数 */
|
||||||
|
const upload = reactive({
|
||||||
|
// 是否显示弹出层(用户导入)
|
||||||
|
open: false,
|
||||||
|
// 弹出层标题(用户导入)
|
||||||
|
title: "",
|
||||||
|
// 是否禁用上传
|
||||||
|
isUploading: false,
|
||||||
|
// 是否更新已经存在的用户数据
|
||||||
|
// updateSupport: 0,
|
||||||
|
// 设置上传的请求头部
|
||||||
|
headers: { Authorization: "Bearer " + getToken() },
|
||||||
|
// 上传的地址
|
||||||
|
url: import.meta.env.VITE_APP_BASE_API + "/business/enterprise/importData",
|
||||||
|
});
|
||||||
|
|
||||||
const { queryParams } = toRefs(data);
|
const { queryParams } = toRefs(data);
|
||||||
const showSearch = ref(true);
|
const showSearch = ref(true);
|
||||||
const siteList = ref([]);
|
const siteList = ref([]);
|
||||||
@ -205,6 +281,42 @@ const handleDetail = (id) => {
|
|||||||
query: { id },
|
query: { id },
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
const uploadRef = ref(null);
|
||||||
|
/** 导入按钮操作 */
|
||||||
|
function handleImport() {
|
||||||
|
upload.title = "用户导入";
|
||||||
|
upload.open = true;
|
||||||
|
}
|
||||||
|
/** 下载模板操作 */
|
||||||
|
function importTemplate() {
|
||||||
|
proxy.download(
|
||||||
|
"system/user/importTemplate",
|
||||||
|
{},
|
||||||
|
`user_template_${new Date().getTime()}.xlsx`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
/**文件上传中处理 */
|
||||||
|
const handleFileUploadProgress = (event, file, fileList) => {
|
||||||
|
upload.isUploading = true;
|
||||||
|
};
|
||||||
|
/** 文件上传成功处理 */
|
||||||
|
const handleFileSuccess = (response, file, fileList) => {
|
||||||
|
upload.open = false;
|
||||||
|
upload.isUploading = false;
|
||||||
|
uploadRef.value.handleRemove(file);
|
||||||
|
ElMessageBox.alert(
|
||||||
|
"<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
|
||||||
|
response.msg +
|
||||||
|
"</div>",
|
||||||
|
"导入结果",
|
||||||
|
{ dangerouslyUseHTMLString: true }
|
||||||
|
);
|
||||||
|
getList();
|
||||||
|
};
|
||||||
|
/** 提交上传文件 */
|
||||||
|
function submitFileForm() {
|
||||||
|
uploadRef.value.submit();
|
||||||
|
}
|
||||||
const handleDelete = async (id) => {
|
const handleDelete = async (id) => {
|
||||||
ElMessageBox.confirm(`是否确认删除编号为${id}的数据项?`)
|
ElMessageBox.confirm(`是否确认删除编号为${id}的数据项?`)
|
||||||
.then(async () => {
|
.then(async () => {
|
||||||
@ -214,13 +326,51 @@ const handleDelete = async (id) => {
|
|||||||
})
|
})
|
||||||
.catch(() => {});
|
.catch(() => {});
|
||||||
};
|
};
|
||||||
const handleExport = () => {
|
|
||||||
ElMessageBox.confirm(`是否确认企业列表?`)
|
let downloadLoadingInstance;
|
||||||
.then(() => {
|
const download = (url, filename) => {
|
||||||
download("/business/enterprise/export", {}, "res.xls");
|
downloadLoadingInstance = ElLoading.service({
|
||||||
// companyExport();
|
text: "正在下载数据,请稍候",
|
||||||
|
background: "rgba(0, 0, 0, 0.7)",
|
||||||
|
});
|
||||||
|
return request
|
||||||
|
.get(url, {
|
||||||
|
// transformRequest: [
|
||||||
|
// (params) => {
|
||||||
|
// return tansParams(params);
|
||||||
|
// },
|
||||||
|
// ],
|
||||||
|
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
||||||
|
responseType: "blob",
|
||||||
})
|
})
|
||||||
.catch(() => {});
|
.then(async (data) => {
|
||||||
|
const isLogin = await blobValidate(data);
|
||||||
|
if (isLogin) {
|
||||||
|
const blob = new Blob([data]);
|
||||||
|
saveAs(blob, filename);
|
||||||
|
} else {
|
||||||
|
const resText = await data.text();
|
||||||
|
const rspObj = JSON.parse(resText);
|
||||||
|
const errMsg =
|
||||||
|
errorCode[rspObj.code] || rspObj.msg || errorCode["default"];
|
||||||
|
ElMessage.error(errMsg);
|
||||||
|
}
|
||||||
|
downloadLoadingInstance.close();
|
||||||
|
})
|
||||||
|
.catch((r) => {
|
||||||
|
console.error(r);
|
||||||
|
ElMessage.error("下载文件出现错误,请联系管理员!");
|
||||||
|
downloadLoadingInstance.close();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleExport = () => {
|
||||||
|
ElMessageBox.confirm(`是否确认企业列表?`).then(() => {
|
||||||
|
download(
|
||||||
|
`/business/enterprise/export`,
|
||||||
|
`企业信息(${dayjs().format("YYYYMMDDHHmmss")}).xlsx`
|
||||||
|
);
|
||||||
|
});
|
||||||
};
|
};
|
||||||
getList();
|
getList();
|
||||||
getSiteList();
|
getSiteList();
|
||||||
|
@ -8,7 +8,8 @@
|
|||||||
@submit.native.prevent
|
@submit.native.prevent
|
||||||
>
|
>
|
||||||
<el-form-item label="所属站点" prop="tenantId">
|
<el-form-item label="所属站点" prop="tenantId">
|
||||||
<el-select
|
<SiteOptions v-model="queryParams.tenantId" />
|
||||||
|
<!-- <el-select
|
||||||
v-model="queryParams.tenantId"
|
v-model="queryParams.tenantId"
|
||||||
placeholder="请选择,支持搜索"
|
placeholder="请选择,支持搜索"
|
||||||
size="default"
|
size="default"
|
||||||
@ -20,7 +21,7 @@
|
|||||||
:label="item.name"
|
:label="item.name"
|
||||||
:value="item.id"
|
:value="item.id"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select> -->
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button
|
<el-button
|
||||||
@ -59,14 +60,14 @@
|
|||||||
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
|
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
|
||||||
>
|
>
|
||||||
<el-table-column prop="title" label="导航名称"></el-table-column>
|
<el-table-column prop="title" label="导航名称"></el-table-column>
|
||||||
<el-table-column
|
<el-table-column prop="area" label="站点" align="center">
|
||||||
prop="area"
|
|
||||||
label="站点"
|
|
||||||
align="center"
|
|
||||||
></el-table-column>
|
|
||||||
<el-table-column prop="updated_at" label="更新时间" align="center">
|
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<span>{{ row.updated_at }}</span>
|
{{ dataStore.getSiteName(row.tenantId) }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="更新时间" align="center">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<span>{{ row.updateTime }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
@ -111,7 +112,8 @@
|
|||||||
>
|
>
|
||||||
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
|
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
|
||||||
<el-form-item label="所属站点:" prop="tenantId">
|
<el-form-item label="所属站点:" prop="tenantId">
|
||||||
<el-select
|
<SiteOptions v-model="form.tenantId" />
|
||||||
|
<!-- <el-select
|
||||||
v-model="form.tenantId"
|
v-model="form.tenantId"
|
||||||
placeholder="请选择,支持搜索"
|
placeholder="请选择,支持搜索"
|
||||||
size="default"
|
size="default"
|
||||||
@ -123,7 +125,7 @@
|
|||||||
:label="item.name"
|
:label="item.name"
|
||||||
:value="item.id"
|
:value="item.id"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select> -->
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="上级导航" prop="parentId">
|
<el-form-item label="上级导航" prop="parentId">
|
||||||
<TreeSelect
|
<TreeSelect
|
||||||
@ -164,6 +166,10 @@ import { cloneDeep } from "lodash";
|
|||||||
import { tenantSelect } from "@/api/subPlatform/tenant";
|
import { tenantSelect } from "@/api/subPlatform/tenant";
|
||||||
import { ElMessage, ElMessageBox } from "element-plus";
|
import { ElMessage, ElMessageBox } from "element-plus";
|
||||||
import WangEditor from "@/components/WangEditor/index.vue";
|
import WangEditor from "@/components/WangEditor/index.vue";
|
||||||
|
import SiteOptions from "@/views/components/SiteOptions";
|
||||||
|
import useDataStore from "@/store/modules/data";
|
||||||
|
const dataStore = useDataStore();
|
||||||
|
dataStore.setSiteList();
|
||||||
const queryFormRef = ref(null);
|
const queryFormRef = ref(null);
|
||||||
const dataList = ref([]);
|
const dataList = ref([]);
|
||||||
const loading = ref(true);
|
const loading = ref(true);
|
||||||
|
@ -8,21 +8,9 @@
|
|||||||
@submit.native.prevent
|
@submit.native.prevent
|
||||||
>
|
>
|
||||||
<el-form-item label="所属站点" prop="tenantId">
|
<el-form-item label="所属站点" prop="tenantId">
|
||||||
<!-- <SiteOptions v-model="queryParams" /> -->
|
<SiteOptions v-model="queryParams.tenantId" />
|
||||||
<el-select
|
|
||||||
v-model="queryParams.tenantId"
|
|
||||||
placeholder="请选择,支持搜索"
|
|
||||||
size="default"
|
|
||||||
filterable
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="item in siteList"
|
|
||||||
:key="item.id"
|
|
||||||
:label="item.name"
|
|
||||||
:value="item.id"
|
|
||||||
/>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button
|
<el-button
|
||||||
type="primary"
|
type="primary"
|
||||||
@ -59,7 +47,8 @@
|
|||||||
<el-table-column label="导航名称" prop="title" width="120" />
|
<el-table-column label="导航名称" prop="title" width="120" />
|
||||||
<el-table-column label="所属站点" align="center">
|
<el-table-column label="所属站点" align="center">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
{{ siteList.find((el) => el.id === row.tenantId)?.name || "无" }}
|
{{ dataStore.getSiteName(row.tenantId) }}
|
||||||
|
<!-- {{ siteList.find((el) => el.id === row.tenantId)?.name || "无" }} -->
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="创建时间" align="center">
|
<el-table-column label="创建时间" align="center">
|
||||||
@ -103,7 +92,8 @@
|
|||||||
<el-dialog :title="title" v-model="showEditDialog" width="500px">
|
<el-dialog :title="title" v-model="showEditDialog" width="500px">
|
||||||
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
|
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
|
||||||
<el-form-item label="所属站点" prop="tenantId">
|
<el-form-item label="所属站点" prop="tenantId">
|
||||||
<el-select
|
<SiteOptions v-model="form.tenantId" />
|
||||||
|
<!-- <el-select
|
||||||
v-model="form.tenantId"
|
v-model="form.tenantId"
|
||||||
placeholder="请选择,支持搜索"
|
placeholder="请选择,支持搜索"
|
||||||
size="default"
|
size="default"
|
||||||
@ -115,7 +105,7 @@
|
|||||||
:label="item.name"
|
:label="item.name"
|
||||||
:value="item.id"
|
:value="item.id"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select> -->
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="导航名称:" prop="title">
|
<el-form-item label="导航名称:" prop="title">
|
||||||
<el-input v-model="form.title" placeholder="请输入导航名称" />
|
<el-input v-model="form.title" placeholder="请输入导航名称" />
|
||||||
@ -139,13 +129,17 @@ import {
|
|||||||
import { cloneDeep } from "lodash";
|
import { cloneDeep } from "lodash";
|
||||||
import { ElMessage, ElMessageBox } from "element-plus";
|
import { ElMessage, ElMessageBox } from "element-plus";
|
||||||
import { tenantSelect } from "@/api/subPlatform/tenant";
|
import { tenantSelect } from "@/api/subPlatform/tenant";
|
||||||
|
import SiteOptions from "@/views/components/SiteOptions";
|
||||||
|
import useDataStore from "@/store/modules/data";
|
||||||
|
const dataStore = useDataStore();
|
||||||
|
dataStore.setSiteList();
|
||||||
const queryFormRef = ref(null);
|
const queryFormRef = ref(null);
|
||||||
const dataList = ref([]);
|
const dataList = ref([]);
|
||||||
const loading = ref(true);
|
const loading = ref(true);
|
||||||
const total = ref(0);
|
const total = ref(0);
|
||||||
const showEditDialog = ref(false);
|
const showEditDialog = ref(false);
|
||||||
const formRef = ref(null);
|
const formRef = ref(null);
|
||||||
const siteList = ref([]); // 站点列表
|
// const siteList = ref([]); // 站点列表
|
||||||
const showSearch = ref(true);
|
const showSearch = ref(true);
|
||||||
const title = ref("");
|
const title = ref("");
|
||||||
|
|
||||||
@ -191,10 +185,10 @@ const getList = async () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// 获取站点列表
|
// 获取站点列表
|
||||||
const getSiteList = async () => {
|
// const getSiteList = async () => {
|
||||||
const resp = await tenantSelect();
|
// const resp = await tenantSelect();
|
||||||
siteList.value = resp.rows;
|
// siteList.value = resp.rows;
|
||||||
};
|
// };
|
||||||
|
|
||||||
// const getSiteName = (tenantId) => {
|
// const getSiteName = (tenantId) => {
|
||||||
// const item = siteList.value.find((el) => {
|
// const item = siteList.value.find((el) => {
|
||||||
@ -255,5 +249,5 @@ const handleDelete = (row) => {
|
|||||||
.catch(() => {});
|
.catch(() => {});
|
||||||
};
|
};
|
||||||
getList();
|
getList();
|
||||||
getSiteList();
|
// getSiteList();
|
||||||
</script>
|
</script>
|
||||||
|
@ -8,7 +8,8 @@
|
|||||||
@submit.native.prevent
|
@submit.native.prevent
|
||||||
>
|
>
|
||||||
<el-form-item label="导航名称:" prop="categoryId">
|
<el-form-item label="导航名称:" prop="categoryId">
|
||||||
<el-select
|
<SiteOptions v-model="queryParams.tenantId" />
|
||||||
|
<!-- <el-select
|
||||||
v-model="queryParams.categoryId"
|
v-model="queryParams.categoryId"
|
||||||
placeholder="请选择"
|
placeholder="请选择"
|
||||||
size="default"
|
size="default"
|
||||||
@ -22,7 +23,7 @@
|
|||||||
:value="item.id"
|
:value="item.id"
|
||||||
>
|
>
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select> -->
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button
|
<el-button
|
||||||
@ -65,7 +66,8 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="所属站点" align="center">
|
<el-table-column label="所属站点" align="center">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
{{ siteList.find((el) => el.id === row.tenantId)?.name || "无" }}
|
<!-- {{ siteList.find((el) => el.id === row.tenantId)?.name || "无" }} -->
|
||||||
|
{{ dataStore.getSiteName(row.tenantId) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="创建时间" align="center">
|
<el-table-column label="创建时间" align="center">
|
||||||
@ -112,7 +114,8 @@
|
|||||||
>
|
>
|
||||||
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
|
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
|
||||||
<el-form-item label="所属站点" prop="tenantId">
|
<el-form-item label="所属站点" prop="tenantId">
|
||||||
<el-select
|
<SiteOptions v-model="form.tenantId" />
|
||||||
|
<!-- <el-select
|
||||||
v-model="form.tenantId"
|
v-model="form.tenantId"
|
||||||
placeholder="请选择,支持搜索"
|
placeholder="请选择,支持搜索"
|
||||||
size="default"
|
size="default"
|
||||||
@ -124,7 +127,7 @@
|
|||||||
:label="item.name"
|
:label="item.name"
|
||||||
:value="item.id"
|
:value="item.id"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select> -->
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="归属导航:" prop="categoryId">
|
<el-form-item label="归属导航:" prop="categoryId">
|
||||||
<el-select v-model="form.categoryId" placeholder="请选择">
|
<el-select v-model="form.categoryId" placeholder="请选择">
|
||||||
@ -169,16 +172,18 @@ import {
|
|||||||
navigationList,
|
navigationList,
|
||||||
} from "@/api/website/innovate";
|
} from "@/api/website/innovate";
|
||||||
|
|
||||||
import { tenantSelect } from "@/api/subPlatform/tenant";
|
|
||||||
import WangEditor from "@/components/WangEditor/index.vue";
|
import WangEditor from "@/components/WangEditor/index.vue";
|
||||||
import { ElMessage, ElMessageBox } from "element-plus";
|
import { ElMessage, ElMessageBox } from "element-plus";
|
||||||
import { reactive, ref } from "vue";
|
import { reactive, ref } from "vue";
|
||||||
|
import SiteOptions from "@/views/components/SiteOptions";
|
||||||
|
import useDataStore from "@/store/modules/data";
|
||||||
|
const dataStore = useDataStore();
|
||||||
|
dataStore.setSiteList();
|
||||||
const loading = ref(true); // 是否正在加载
|
const loading = ref(true); // 是否正在加载
|
||||||
const showSearch = ref(true); // 是否显示搜索栏
|
const showSearch = ref(true); // 是否显示搜索栏
|
||||||
const categoryList = ref([]); //导航列表
|
const categoryList = ref([]); //导航列表
|
||||||
const queryFormRef = ref(null);
|
const queryFormRef = ref(null);
|
||||||
const formRef = ref(null);
|
const formRef = ref(null);
|
||||||
const siteList = ref([]);
|
|
||||||
const total = ref(0);
|
const total = ref(0);
|
||||||
const dataList = ref([]);
|
const dataList = ref([]);
|
||||||
|
|
||||||
@ -235,20 +240,6 @@ const getList = async () => {
|
|||||||
loading.value = false;
|
loading.value = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
// 获取站点列表
|
|
||||||
const getSiteList = async () => {
|
|
||||||
const resp = await tenantSelect();
|
|
||||||
siteList.value = resp.rows;
|
|
||||||
};
|
|
||||||
|
|
||||||
// // 获取站点名称
|
|
||||||
// const getSiteName = (tenantId) => {
|
|
||||||
// const item = siteList.value.find((el) => {
|
|
||||||
// return el.id === tenantId;
|
|
||||||
// });
|
|
||||||
// return item ? item.name : "无";
|
|
||||||
// };
|
|
||||||
|
|
||||||
// 获取分类名称
|
// 获取分类名称
|
||||||
const getCategoryName = (categoryId) => {
|
const getCategoryName = (categoryId) => {
|
||||||
const item = categoryList.value.find((el) => {
|
const item = categoryList.value.find((el) => {
|
||||||
@ -327,35 +318,5 @@ const handleDelete = (row) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
getList();
|
getList();
|
||||||
getSiteList();
|
|
||||||
getcategoryList();
|
getcategoryList();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<!-- <script>
|
|
||||||
import {
|
|
||||||
serviceList,
|
|
||||||
serviceAdd,
|
|
||||||
serviceDetail,
|
|
||||||
serviceEdit,
|
|
||||||
serviceDelete,
|
|
||||||
navigationSelect,
|
|
||||||
} from "@/api/website/innovate";
|
|
||||||
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
is_super: this.$store.getters.is_super,
|
|
||||||
loading: true,
|
|
||||||
showSearch: true,
|
|
||||||
categoryLists: [],
|
|
||||||
};
|
|
||||||
},
|
|
||||||
methods: {},
|
|
||||||
created() {
|
|
||||||
this.getList();
|
|
||||||
navigationSelect().then((res) => {
|
|
||||||
this.categoryLists = res.data;
|
|
||||||
});
|
|
||||||
},
|
|
||||||
};
|
|
||||||
</script> -->
|
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
v-model="queryParams.name"
|
v-model="queryParams.name"
|
||||||
placeholder="请输入姓名"
|
placeholder="请输入姓名"
|
||||||
clearable
|
clearable
|
||||||
size="small"
|
size="default"
|
||||||
style="width: 240px"
|
style="width: 240px"
|
||||||
@keyup.enter.native="handleQuery"
|
@keyup.enter.native="handleQuery"
|
||||||
/>
|
/>
|
||||||
@ -21,7 +21,7 @@
|
|||||||
v-model="queryParams.status"
|
v-model="queryParams.status"
|
||||||
placeholder="用户状态"
|
placeholder="用户状态"
|
||||||
clearable
|
clearable
|
||||||
size="small"
|
size="default"
|
||||||
style="width: 240px"
|
style="width: 240px"
|
||||||
@clear="delete queryParams.status"
|
@clear="delete queryParams.status"
|
||||||
>
|
>
|
||||||
@ -38,7 +38,7 @@
|
|||||||
v-model="queryParams.content"
|
v-model="queryParams.content"
|
||||||
placeholder="请输入需求内容"
|
placeholder="请输入需求内容"
|
||||||
clearable
|
clearable
|
||||||
size="small"
|
size="default"
|
||||||
style="width: 240px"
|
style="width: 240px"
|
||||||
@keyup.enter.native="handleQuery"
|
@keyup.enter.native="handleQuery"
|
||||||
/>
|
/>
|
||||||
@ -47,11 +47,11 @@
|
|||||||
<el-button
|
<el-button
|
||||||
type="primary"
|
type="primary"
|
||||||
icon="search"
|
icon="search"
|
||||||
size="small"
|
size="default"
|
||||||
@click="handleQuery"
|
@click="handleQuery"
|
||||||
>搜索</el-button
|
>搜索</el-button
|
||||||
>
|
>
|
||||||
<el-button icon="refresh" size="small" @click="resetQuery"
|
<el-button icon="refresh" size="default" @click="resetQuery"
|
||||||
>重置</el-button
|
>重置</el-button
|
||||||
>
|
>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -88,7 +88,7 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
label="处理结果"
|
label="处理结果"
|
||||||
prop="handle_content"
|
prop="handleContent"
|
||||||
align="center"
|
align="center"
|
||||||
show-overflow-tooltip
|
show-overflow-tooltip
|
||||||
/>
|
/>
|
||||||
@ -100,6 +100,7 @@
|
|||||||
<el-table-column
|
<el-table-column
|
||||||
label="操作"
|
label="操作"
|
||||||
align="center"
|
align="center"
|
||||||
|
width="120"
|
||||||
class-name="small-padding fixed-width"
|
class-name="small-padding fixed-width"
|
||||||
>
|
>
|
||||||
<template #default="props">
|
<template #default="props">
|
||||||
@ -108,7 +109,7 @@
|
|||||||
size="small"
|
size="small"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-view"
|
icon="el-icon-view"
|
||||||
@click="(form = props.row), (open = true)"
|
@click="(form = props.row), (showEditDialog = true)"
|
||||||
>查看</el-button
|
>查看</el-button
|
||||||
>
|
>
|
||||||
<el-button
|
<el-button
|
||||||
@ -138,6 +139,50 @@
|
|||||||
v-model:limit="queryParams.pageSize"
|
v-model:limit="queryParams.pageSize"
|
||||||
@pagination="getList"
|
@pagination="getList"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<el-dialog title="查看" v-model="showEditDialog" width="500px">
|
||||||
|
<el-form ref="form" :model="form" label-width="100px" disabled>
|
||||||
|
<el-form-item label="姓名:">
|
||||||
|
<el-input v-model="form.name" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="单位:">
|
||||||
|
<el-input v-model="form.company" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="联系方式:">
|
||||||
|
<el-input v-model="form.mobile" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="邮箱:">
|
||||||
|
<el-input v-model="form.email" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="网页地址:">
|
||||||
|
<el-input v-model="form.areaDomain" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="需求内容:">
|
||||||
|
<el-input
|
||||||
|
v-model="form.content"
|
||||||
|
type="textarea"
|
||||||
|
:autosize="{ minRows: 2, maxRows: 6 }"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="处理状态:">
|
||||||
|
<el-select v-model="form.status">
|
||||||
|
<el-option
|
||||||
|
v-for="item in statusOptions"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="处理结果:">
|
||||||
|
<el-input
|
||||||
|
v-model="form.handleContent"
|
||||||
|
type="textarea"
|
||||||
|
:autosize="{ minRows: 2, maxRows: 6 }"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
@ -151,7 +196,7 @@ import {
|
|||||||
} from "@/api/website/message";
|
} from "@/api/website/message";
|
||||||
|
|
||||||
// import { formatTime } from "@/utils/index.js";
|
// import { formatTime } from "@/utils/index.js";
|
||||||
|
const showEditDialog = ref(false);
|
||||||
const queryFormRef = ref(null); // 搜索表单ref
|
const queryFormRef = ref(null); // 搜索表单ref
|
||||||
const loading = ref(true); // 是否正在加载
|
const loading = ref(true); // 是否正在加载
|
||||||
const dataList = ref([]); // 数据列表
|
const dataList = ref([]); // 数据列表
|
||||||
|
@ -69,7 +69,7 @@
|
|||||||
{{ siteList.find((el) => el.id === row.tenantId)?.name || "无" }}
|
{{ siteList.find((el) => el.id === row.tenantId)?.name || "无" }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="updated_at" label="更新时间" align="center">
|
<el-table-column label="更新时间" align="center">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<span>{{ row.updateTime }}</span>
|
<span>{{ row.updateTime }}</span>
|
||||||
</template>
|
</template>
|
||||||
|
@ -206,8 +206,9 @@ import {
|
|||||||
import { ElMessage, ElMessageBox } from "element-plus";
|
import { ElMessage, ElMessageBox } from "element-plus";
|
||||||
import { cloneDeep } from "lodash";
|
import { cloneDeep } from "lodash";
|
||||||
import SiteOptions from "@/views/components/SiteOptions";
|
import SiteOptions from "@/views/components/SiteOptions";
|
||||||
import useDataStore from "../../../../store/modules/data";
|
import useDataStore from "@/store/modules/data";
|
||||||
const dataStore = useDataStore();
|
const dataStore = useDataStore();
|
||||||
|
dataStore.setSiteList();
|
||||||
const dataList = ref([]);
|
const dataList = ref([]);
|
||||||
// TODO:isSuper
|
// TODO:isSuper
|
||||||
// const is_super = this.$store.getters.is_super;
|
// const is_super = this.$store.getters.is_super;
|
||||||
|
@ -206,6 +206,7 @@ import useDataStore from "@/store/modules/data";
|
|||||||
import SiteOptions from "@/views/components/SiteOptions";
|
import SiteOptions from "@/views/components/SiteOptions";
|
||||||
// import SiteOptions from "../../../components/SiteOptions/index.vue";
|
// import SiteOptions from "../../../components/SiteOptions/index.vue";
|
||||||
const dataStore = useDataStore();
|
const dataStore = useDataStore();
|
||||||
|
dataStore.setSiteList();
|
||||||
// import SiteOptions from "@/components/SiteOptions";
|
// import SiteOptions from "@/components/SiteOptions";
|
||||||
const dataList = ref([]);
|
const dataList = ref([]);
|
||||||
const loading = ref(true);
|
const loading = ref(true);
|
||||||
|
Reference in New Issue
Block a user