Merge remote-tracking branch 'origin/main'
This commit is contained in:
commit
c1bebd3493
@ -39,6 +39,7 @@ export function getBrandInfo(id) {
|
|||||||
method: "get",
|
method: "get",
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
//品牌启用停用
|
||||||
export function updateStatusBrand(data) {
|
export function updateStatusBrand(data) {
|
||||||
return request({
|
return request({
|
||||||
url: "brand/brandbase/updateStatus",
|
url: "brand/brandbase/updateStatus",
|
||||||
@ -79,3 +80,54 @@ export function applicationrenewalApprove(data) {
|
|||||||
data: data,
|
data: data,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 获取品牌使用管理列表
|
||||||
|
export function brandUsingList(query) {
|
||||||
|
return request({
|
||||||
|
url: "/brand/brandUsingSystem/page",
|
||||||
|
method: "get",
|
||||||
|
params: query,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// 新增品牌使用
|
||||||
|
export function addBrandUsing(data) {
|
||||||
|
return request({
|
||||||
|
url: "/brand/brandUsingSystem/save",
|
||||||
|
method: "post",
|
||||||
|
data: data,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑品牌使用
|
||||||
|
export function updateBrandUsing(data) {
|
||||||
|
return request({
|
||||||
|
url: "/brand/brandUsingSystem/update",
|
||||||
|
method: "post",
|
||||||
|
data: data,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取品牌使用管理详情(id)
|
||||||
|
export function getBrandUsing(id) {
|
||||||
|
return request({
|
||||||
|
url: `/brand/brandUsingSystem/detail/${id}`,
|
||||||
|
method: "get",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除品牌使用管理
|
||||||
|
export function deleteBrandUsing(id) {
|
||||||
|
return request({
|
||||||
|
url: '/brand/brandUsingSystem/del?ids=' + id,
|
||||||
|
method: "delete",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
//品牌使用管理启用停用
|
||||||
|
export function updateStatusBrandUsing(data) {
|
||||||
|
return request({
|
||||||
|
url: "/brand/brandUsingSystem/enable",
|
||||||
|
method: "post",
|
||||||
|
data: data,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="component-upload-image">
|
<div class="component-upload-image">
|
||||||
<div class="upload-tip">图片比例1:1,建议尺寸为800 * 800px,支持png、jpg、gif等格式,大小 {{ fileSize }} MB以内</div>
|
<div class="upload-tip">图片比例1:1,建议尺寸为800 * 800px,支持{{fileType.join(",")}}等格式,大小 {{ fileSize }} MB以内</div>
|
||||||
<el-upload multiple :disabled="disabled" :action="uploadImgUrl" list-type="picture-card"
|
<el-upload multiple :disabled="disabled" :action="uploadImgUrl" list-type="picture-card"
|
||||||
:on-success="handleUploadSuccess" :before-upload="handleBeforeUpload" :data="data" :limit="limit"
|
:on-success="handleUploadSuccess" :before-upload="handleBeforeUpload" :data="data" :limit="limit"
|
||||||
:on-error="handleUploadError" :on-exceed="handleExceed" ref="imageUpload" :before-remove="handleDelete"
|
:on-error="handleUploadError" :on-exceed="handleExceed" ref="imageUpload" :before-remove="handleDelete"
|
||||||
|
@ -190,7 +190,7 @@ const props = defineProps({
|
|||||||
// 自定义表头类名函数
|
// 自定义表头类名函数
|
||||||
headerCellClassName: {
|
headerCellClassName: {
|
||||||
type: Function,
|
type: Function,
|
||||||
default: () => "",
|
default: () => "custom-header",
|
||||||
},
|
},
|
||||||
// 自定义单元格类名函数
|
// 自定义单元格类名函数
|
||||||
cellClassName: {
|
cellClassName: {
|
||||||
|
@ -423,18 +423,18 @@ export const constantRoutes = [
|
|||||||
},
|
},
|
||||||
name: "renewal",
|
name: "renewal",
|
||||||
},
|
},
|
||||||
// {
|
{
|
||||||
// path: 'brand/management',
|
path: 'brand/management',
|
||||||
// component: () => import('@/views/brand/management/index'),
|
component: () => import('@/views/brand/management/index'),
|
||||||
// hidden: false,
|
hidden: false,
|
||||||
// meta: {
|
meta: {
|
||||||
// title: "品牌使用管理",
|
title: "品牌使用管理",
|
||||||
// icon: "",
|
icon: "",
|
||||||
// noCache: false,
|
noCache: false,
|
||||||
// link: null,
|
link: null,
|
||||||
// },
|
},
|
||||||
// name: "management",
|
name: "management",
|
||||||
// },
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -289,7 +289,18 @@ const handleSelectionChange = (selection) => {
|
|||||||
// 批量删除
|
// 批量删除
|
||||||
const batchDelete = async () => {
|
const batchDelete = async () => {
|
||||||
// deleteGoods(selectedIds.value.join(","));
|
// deleteGoods(selectedIds.value.join(","));
|
||||||
|
ElMessageBox.confirm("确定要删除选中的数据吗?", "提示", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning",
|
||||||
|
})
|
||||||
|
.then(async () => {
|
||||||
deleteGoods(selectedIds.value);
|
deleteGoods(selectedIds.value);
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
ElMessage.info("已取消删除");
|
||||||
|
})
|
||||||
|
|
||||||
};
|
};
|
||||||
const deleteGoods = async (param) => {
|
const deleteGoods = async (param) => {
|
||||||
console.log("批量删除参数:", param);
|
console.log("批量删除参数:", param);
|
||||||
|
@ -111,7 +111,8 @@
|
|||||||
<template #action="slotProps">
|
<template #action="slotProps">
|
||||||
<el-button v-if="slotProps.row.status == 0" text class="el-button-custom" @click="startStop(slotProps.row)">启用</el-button>
|
<el-button v-if="slotProps.row.status == 0" text class="el-button-custom" @click="startStop(slotProps.row)">启用</el-button>
|
||||||
<el-button v-if="slotProps.row.status == 1" text class="el-button-custom" @click="startStop(slotProps.row)">停用</el-button>
|
<el-button v-if="slotProps.row.status == 1" text class="el-button-custom" @click="startStop(slotProps.row)">停用</el-button>
|
||||||
<el-button text class="el-button-custom" @click="handleEdit(slotProps.row)">编辑</el-button>
|
<el-button text class="el-button-custom" @click="handleEdit(slotProps.row,'edit')">编辑</el-button>
|
||||||
|
<el-button text class="el-button-custom" @click="handleEdit(slotProps.row,'details')">查看</el-button>
|
||||||
<el-button text class="el-button-delete" @click="handleDelete(slotProps.row)">删除</el-button>
|
<el-button text class="el-button-delete" @click="handleDelete(slotProps.row)">删除</el-button>
|
||||||
</template>
|
</template>
|
||||||
</tableComponent>
|
</tableComponent>
|
||||||
@ -119,12 +120,32 @@
|
|||||||
</div>
|
</div>
|
||||||
<!-- 添加/编辑商品 -->
|
<!-- 添加/编辑商品 -->
|
||||||
<el-dialog v-model="dialogFormVisible" :title="dialogTitle" width="500" :close-on-click-modal="false">
|
<el-dialog v-model="dialogFormVisible" :title="dialogTitle" width="500" :close-on-click-modal="false">
|
||||||
<el-form :model="dialogForm" :label-width="'80'" :rules="dialogFormRules" ref="dialogRef">
|
<el-form :disabled="isDetails" :model="dialogForm" :label-width="'80'" :rules="dialogFormRules" ref="dialogRef">
|
||||||
<el-form-item label="品牌名称" prop="title">
|
<el-form-item label="制度名称" prop="title">
|
||||||
<el-input v-model="dialogForm.title" autocomplete="off" placeholder="请输入品牌名称" />
|
<el-input v-model="dialogForm.title" autocomplete="off" placeholder="请输入品牌名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="品牌图片" prop="imgPath">
|
<el-form-item label="上传文件" prop="files">
|
||||||
<myUploadImage v-model="dialogForm.imgPath" :limit="1" ></myUploadImage>
|
<!-- <myUploadFile v-model="dialogForm.files"></myUploadFile> -->
|
||||||
|
<el-upload
|
||||||
|
v-model:file-list="dialogForm.files"
|
||||||
|
:before-upload="handleBeforeUpload"
|
||||||
|
class="upload-demo"
|
||||||
|
:action="uploadFileUrl"
|
||||||
|
multiple
|
||||||
|
:on-preview="handlePreview"
|
||||||
|
:on-remove="handleRemove"
|
||||||
|
:before-remove="beforeRemove"
|
||||||
|
:limit="limit"
|
||||||
|
:on-exceed="handleExceed"
|
||||||
|
:headers="headers"
|
||||||
|
>
|
||||||
|
<el-button type="primary">上传文件</el-button>
|
||||||
|
<template #tip>
|
||||||
|
<div class="el-upload__tip">
|
||||||
|
只允许上传"doc", "docx", "pdf"文件且文件大小需小于 {{fileSize}}MB.
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-upload>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
@ -141,11 +162,19 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { ref, reactive, computed, onMounted, onBeforeUnmount } from "vue";
|
import { ref, reactive, computed, onMounted, onBeforeUnmount } from "vue";
|
||||||
import tableComponent from "@/components/tableComponent.vue";
|
import tableComponent from "@/components/tableComponent.vue";
|
||||||
import myUploadImage from "@/components/myUploadImage.vue";
|
|
||||||
import Mock from "mockjs";
|
import Mock from "mockjs";
|
||||||
import {getBrandbaseList,addBrand,updateBrand,deleteBrand,getBrandInfo,updateStatusBrand} from "@/api/brand/index";
|
import {brandUsingList,addBrandUsing,updateBrandUsing,deleteBrandUsing,getBrandUsing,updateStatusBrandUsing} from "@/api/brand/index";
|
||||||
import { id } from "element-plus/es/locales.mjs";
|
import { id } from "element-plus/es/locales.mjs";
|
||||||
import { ElMessage,ElMessageBox } from "element-plus";
|
import { ElMessage,ElMessageBox } from "element-plus";
|
||||||
|
import { getToken } from "@/utils/auth"
|
||||||
|
|
||||||
|
const action = "/uploadApis/upload"; // 上传文件接口地址
|
||||||
|
const uploadFileUrl = ref(import.meta.env.VITE_APP_BASE_API + action) // 上传文件服务器地址
|
||||||
|
const headers = ref({ Authorization: "Bearer " + getToken() })
|
||||||
|
|
||||||
|
const fileSize = ref(10); // 文件大小限制,单位为MB
|
||||||
|
const fileType = ref(["doc", "docx", "pdf"]);
|
||||||
|
const limit = ref(5); // 文件上传数量限制
|
||||||
|
|
||||||
const formInline = reactive({
|
const formInline = reactive({
|
||||||
id: "",
|
id: "",
|
||||||
@ -161,6 +190,7 @@ const formInline = reactive({
|
|||||||
size: 10,
|
size: 10,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
let isDetails = ref(true);
|
||||||
let isADD = ref(true);
|
let isADD = ref(true);
|
||||||
const dialogFormVisible = ref(false);
|
const dialogFormVisible = ref(false);
|
||||||
const dialogRef = ref(null);
|
const dialogRef = ref(null);
|
||||||
@ -168,13 +198,16 @@ const dialogTitle = ref("添加品牌");
|
|||||||
let dialogForm = reactive({
|
let dialogForm = reactive({
|
||||||
id: "",
|
id: "",
|
||||||
title: "",
|
title: "",
|
||||||
imgPath:"",
|
files:[],
|
||||||
|
|
||||||
});
|
});
|
||||||
const dialogFormRules = ref({
|
const dialogFormRules = ref({
|
||||||
title: [
|
title: [
|
||||||
{ required: true, message: "请输入品牌名称", trigger: "blur" },
|
{ required: true, message: "请输入品牌名称", trigger: "blur" },
|
||||||
]
|
],
|
||||||
|
files: [
|
||||||
|
{ required: true, message: "请上传文件", trigger: "blur" },
|
||||||
|
],
|
||||||
});
|
});
|
||||||
|
|
||||||
const statusList = ref([
|
const statusList = ref([
|
||||||
@ -208,7 +241,7 @@ const loadData = async () => {
|
|||||||
try {
|
try {
|
||||||
prams.startDate = formInline.startDate ? formInline.startDate + " 00:00:00" : "";
|
prams.startDate = formInline.startDate ? formInline.startDate + " 00:00:00" : "";
|
||||||
prams.endDate = formInline.endDate ? formInline.endDate + " 23:59:59" : "";
|
prams.endDate = formInline.endDate ? formInline.endDate + " 23:59:59" : "";
|
||||||
let response = await getBrandbaseList(prams);
|
let response = await brandUsingList(prams);
|
||||||
if (response.code == 200) {
|
if (response.code == 200) {
|
||||||
tableData.value = response.data.records;
|
tableData.value = response.data.records;
|
||||||
tableTotal.value = response.data.total;
|
tableTotal.value = response.data.total;
|
||||||
@ -243,7 +276,7 @@ let nowClickRow = ref({});
|
|||||||
const columns = ref([
|
const columns = ref([
|
||||||
{ prop: "id", label: "ID" },
|
{ prop: "id", label: "ID" },
|
||||||
{ prop: "title", label: "制度名称" },
|
{ prop: "title", label: "制度名称" },
|
||||||
// { prop: "code", label: "品牌编码", width: "120" },
|
// { prop: "code", label: "品牌编码", width: "120" },
|
||||||
{ prop: "createTime", label: "提交时间" },
|
{ prop: "createTime", label: "提交时间" },
|
||||||
// { prop: "applicationNum", label: "申请数量" },
|
// { prop: "applicationNum", label: "申请数量" },
|
||||||
// { prop: "useNum", label: "使用数量" },
|
// { prop: "useNum", label: "使用数量" },
|
||||||
@ -257,6 +290,8 @@ const getHeaderClass = ({ column }) => {
|
|||||||
// 分页变化
|
// 分页变化
|
||||||
const handlePaginationChange = ({ page, pageSize }) => {
|
const handlePaginationChange = ({ page, pageSize }) => {
|
||||||
console.log("分页变化:", page, pageSize);
|
console.log("分页变化:", page, pageSize);
|
||||||
|
formInline.current = page;
|
||||||
|
formInline.size = pageSize;
|
||||||
// 这里可以调用API获取新数据
|
// 这里可以调用API获取新数据
|
||||||
loadData();
|
loadData();
|
||||||
};
|
};
|
||||||
@ -272,14 +307,25 @@ const handleSelectionChange = (selection) => {
|
|||||||
// 批量删除
|
// 批量删除
|
||||||
const batchDelete = async () => {
|
const batchDelete = async () => {
|
||||||
// deleteGoods(selectedIds.value.join(","));
|
// deleteGoods(selectedIds.value.join(","));
|
||||||
|
ElMessageBox.confirm("确定要删除选中的数据吗?", "提示", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning",
|
||||||
|
})
|
||||||
|
.then(async () => {
|
||||||
deleteGoods(selectedIds.value);
|
deleteGoods(selectedIds.value);
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
ElMessage.info("已取消删除");
|
||||||
|
})
|
||||||
|
|
||||||
};
|
};
|
||||||
const deleteGoods = async (param) => {
|
const deleteGoods = async (param) => {
|
||||||
console.log("批量删除参数:", param);
|
console.log("批量删除参数:", param);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
tableLoading.value = true;
|
tableLoading.value = true;
|
||||||
let res = await deleteBrand(param);
|
let res = await deleteBrandUsing(param);
|
||||||
tableLoading.value = false;
|
tableLoading.value = false;
|
||||||
if (res.code == 200) {
|
if (res.code == 200) {
|
||||||
ElMessage.success("删除成功");
|
ElMessage.success("删除成功");
|
||||||
@ -294,6 +340,7 @@ const deleteGoods = async (param) => {
|
|||||||
|
|
||||||
// 添加商品
|
// 添加商品
|
||||||
const handleAdd = () => {
|
const handleAdd = () => {
|
||||||
|
isDetails.value = false;
|
||||||
resetDlg();
|
resetDlg();
|
||||||
dialogTitle.value = "添加品牌";
|
dialogTitle.value = "添加品牌";
|
||||||
isADD.value = true;
|
isADD.value = true;
|
||||||
@ -302,10 +349,20 @@ resetDlg();
|
|||||||
};
|
};
|
||||||
//提交保存
|
//提交保存
|
||||||
const onSaveCategory = async () => {
|
const onSaveCategory = async () => {
|
||||||
|
console.log('dialogForm',dialogForm);
|
||||||
|
|
||||||
|
//处理dialogForm.files
|
||||||
|
dialogForm.files.forEach((item, index) => {
|
||||||
|
item.fileName = item.name;
|
||||||
|
item.fileUrl = item.response.data.url;
|
||||||
|
})
|
||||||
|
console.log('dialogForm.files',dialogForm.files);
|
||||||
|
|
||||||
|
|
||||||
dialogRef.value.validate(async (valid) => {
|
dialogRef.value.validate(async (valid) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
if(isADD.value){
|
if(isADD.value){
|
||||||
let response = await addBrand(dialogForm);
|
let response = await addBrandUsing(dialogForm);
|
||||||
if (response.code === 200) {
|
if (response.code === 200) {
|
||||||
dialogFormVisible.value = false;
|
dialogFormVisible.value = false;
|
||||||
ElMessage.success("新增成功!");
|
ElMessage.success("新增成功!");
|
||||||
@ -315,7 +372,7 @@ const onSaveCategory = async () => {
|
|||||||
ElMessage.error(response.message);
|
ElMessage.error(response.message);
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
let response = await updateBrand(dialogForm);
|
let response = await updateBrandUsing(dialogForm);
|
||||||
if (response.code === 200) {
|
if (response.code === 200) {
|
||||||
dialogFormVisible.value = false;
|
dialogFormVisible.value = false;
|
||||||
ElMessage.success("编辑成功!");
|
ElMessage.success("编辑成功!");
|
||||||
@ -333,7 +390,7 @@ const onSaveCategory = async () => {
|
|||||||
const startStop = async (row) => {
|
const startStop = async (row) => {
|
||||||
let status = row.status == 1 ? 0 : 1;
|
let status = row.status == 1 ? 0 : 1;
|
||||||
let params = { id: row.id, status: status };
|
let params = { id: row.id, status: status };
|
||||||
let response = await updateStatusBrand(params);
|
let response = await updateStatusBrandUsing(params);
|
||||||
if (response.code === 200) {
|
if (response.code === 200) {
|
||||||
ElMessage.success("操作成功!");
|
ElMessage.success("操作成功!");
|
||||||
loadData();
|
loadData();
|
||||||
@ -343,12 +400,24 @@ const startStop = async (row) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// 编辑操作
|
// 编辑操作
|
||||||
const handleEdit = async(row) => {
|
const handleEdit = async(row,type) => {
|
||||||
|
if(type == 'details'){
|
||||||
|
isDetails.value = true;
|
||||||
|
}else{
|
||||||
|
isDetails.value = false;
|
||||||
|
}
|
||||||
resetDlg();
|
resetDlg();
|
||||||
isADD.value = false;
|
isADD.value = false;
|
||||||
dialogFormVisible.value = true;
|
dialogFormVisible.value = true;
|
||||||
let response = await getBrandInfo(row.id);
|
let response = await getBrandUsing(row.id);
|
||||||
if (response.code === 200) {
|
if (response.code === 200) {
|
||||||
|
let temList = response.data;
|
||||||
|
temList.files = temList.files.map((item) => {
|
||||||
|
return {
|
||||||
|
name: item.fileName,
|
||||||
|
url: item.fileUrl,
|
||||||
|
};
|
||||||
|
})
|
||||||
Object.assign(dialogForm, response.data); // 保持响应性
|
Object.assign(dialogForm, response.data); // 保持响应性
|
||||||
dialogTitle.value = "编辑品牌";
|
dialogTitle.value = "编辑品牌";
|
||||||
} else {
|
} else {
|
||||||
@ -364,7 +433,7 @@ const handleDelete = async(row) => {
|
|||||||
type: "warning",
|
type: "warning",
|
||||||
})
|
})
|
||||||
.then(async () => {
|
.then(async () => {
|
||||||
let response = await deleteBrand(row.id);
|
let response = await deleteBrandUsing(row.id);
|
||||||
if (response.code === 200) {
|
if (response.code === 200) {
|
||||||
ElMessage.success("品牌删除成功!");
|
ElMessage.success("品牌删除成功!");
|
||||||
loadData();
|
loadData();
|
||||||
@ -387,12 +456,53 @@ const resetDlg= () => {
|
|||||||
Object.assign(dialogForm, { // 保持响应性,手动清空字段
|
Object.assign(dialogForm, { // 保持响应性,手动清空字段
|
||||||
id: "",
|
id: "",
|
||||||
title: "",
|
title: "",
|
||||||
imgPath: "",
|
files: [],
|
||||||
code: ""
|
code: ""
|
||||||
});
|
});
|
||||||
dialogFormVisible.value = false;
|
dialogFormVisible.value = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 上传前校检格式和大小
|
||||||
|
const handleBeforeUpload = (file) => {
|
||||||
|
// 校检文件类型
|
||||||
|
if (fileType.value.length) {
|
||||||
|
const fileName = file.name.split('.')
|
||||||
|
const fileExt = fileName[fileName.length - 1]
|
||||||
|
const isTypeOk = fileType.value.indexOf(fileExt) >= 0
|
||||||
|
if (!isTypeOk) {
|
||||||
|
ElMessage.error(`文件格式不正确,请上传${fileType.value.join("/")}格式文件!`)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 校检文件名是否包含特殊字符
|
||||||
|
if (file.name.includes(',')) {
|
||||||
|
proxy.$modal.msgError('文件名不正确,不能包含英文逗号!')
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
// 校检文件大小
|
||||||
|
if (fileSize.value) {
|
||||||
|
const isLt = file.size / 1024 / 1024 < fileSize.value
|
||||||
|
if (!isLt) {
|
||||||
|
ElMessage.error(`上传文件大小不能超过 ${fileSize.value} MB!`)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
// 文件个数超出
|
||||||
|
function handleExceed() {
|
||||||
|
// proxy.$modal.msgError(`上传文件数量不能超过 ${limit.value} 个!`)
|
||||||
|
ElMessage.error(`上传文件数量不能超过 ${limit.value} 个!`)
|
||||||
|
}
|
||||||
|
|
||||||
|
//点击上传的文件
|
||||||
|
const handlePreview = (file) => {
|
||||||
|
// console.log(file.url);
|
||||||
|
if (!file.url) return;
|
||||||
|
window.open(file.url, '_blank');
|
||||||
|
}
|
||||||
|
|
||||||
const titleRef = ref(null);
|
const titleRef = ref(null);
|
||||||
const searchBarRef = ref(null);
|
const searchBarRef = ref(null);
|
||||||
const tableViewportHeight = ref(0);
|
const tableViewportHeight = ref(0);
|
||||||
@ -442,4 +552,7 @@ onBeforeUnmount(() => {
|
|||||||
justify-content: end;
|
justify-content: end;
|
||||||
padding: 14px 16px 0 0;
|
padding: 14px 16px 0 0;
|
||||||
}
|
}
|
||||||
|
:deep(.el-upload-list--text){
|
||||||
|
width: 375px !important;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -233,7 +233,7 @@ const generateMockData = () => {
|
|||||||
"id|+1": 10000,
|
"id|+1": 10000,
|
||||||
nickname: () => generateFoodNickname(), //昵称
|
nickname: () => generateFoodNickname(), //昵称
|
||||||
userName: "@cname", //姓名
|
userName: "@cname", //姓名
|
||||||
accountNumber: Mock.mock("@id").toString().slice(0, 10), //账号
|
accountNumber: "@integer(1000000000, 9999999999)", //账号
|
||||||
phoneNumber: "@integer(13000000000, 18999999999)", //手机号
|
phoneNumber: "@integer(13000000000, 18999999999)", //手机号
|
||||||
sex: '@pick(["男", "女"])', //性别
|
sex: '@pick(["男", "女"])', //性别
|
||||||
"userStatus|1": [0, 1], //0异常 1正常
|
"userStatus|1": [0, 1], //0异常 1正常
|
||||||
|
@ -218,7 +218,7 @@ const generateMockData = () => {
|
|||||||
"id|+1": 10000,
|
"id|+1": 10000,
|
||||||
nickname: () => generateFoodNickname(), //昵称
|
nickname: () => generateFoodNickname(), //昵称
|
||||||
userName: "@cname", //姓名
|
userName: "@cname", //姓名
|
||||||
accountNumber: Mock.mock("@id").toString().slice(0, 10), //账号
|
accountNumber: "@integer(1000000000, 9999999999)", //账号
|
||||||
phoneNumber: "@integer(13000000000, 18999999999)", //手机号
|
phoneNumber: "@integer(13000000000, 18999999999)", //手机号
|
||||||
sex: '@pick(["男", "女"])', //性别
|
sex: '@pick(["男", "女"])', //性别
|
||||||
"userStatus|1": [0, 1], //0异常 1正常
|
"userStatus|1": [0, 1], //0异常 1正常
|
||||||
|
@ -147,7 +147,6 @@ const onSubmit = () => {
|
|||||||
ElMessage.warning("请选择开始日期!");
|
ElMessage.warning("请选择开始日期!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
console.log(formInline);
|
|
||||||
loadData();
|
loadData();
|
||||||
};
|
};
|
||||||
const resetForm = () => {
|
const resetForm = () => {
|
||||||
@ -268,12 +267,24 @@ const enableAndDisable = async (row, num) => {
|
|||||||
tableLoading.value = false;
|
tableLoading.value = false;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
// 编辑操作
|
// 添加分类
|
||||||
const handleEdit = (row) => {
|
const addCategory = () => {
|
||||||
nowClickRow.value = row;
|
dialogTitle.value = "添加分类";
|
||||||
console.log("要编辑的行:", row);
|
getGoodTypeList();
|
||||||
dialogTitle.value = "编辑分类";
|
Object.assign(dialogForm, { // 保持响应性,手动清空字段
|
||||||
|
id: "",
|
||||||
|
type: 1,
|
||||||
|
name: "",
|
||||||
|
level: "",
|
||||||
|
parentId: "",
|
||||||
|
status: "1",
|
||||||
|
});
|
||||||
dialogFormVisible.value = true;
|
dialogFormVisible.value = true;
|
||||||
|
};
|
||||||
|
// 编辑操作
|
||||||
|
const handleEdit = async (row) => {
|
||||||
|
nowClickRow.value = row;
|
||||||
|
dialogTitle.value = "编辑分类";
|
||||||
getGoodTypeList();
|
getGoodTypeList();
|
||||||
dialogForm.id = row.id;
|
dialogForm.id = row.id;
|
||||||
dialogForm.type = row.type;
|
dialogForm.type = row.type;
|
||||||
@ -281,15 +292,16 @@ const handleEdit = (row) => {
|
|||||||
dialogForm.level = row.level;
|
dialogForm.level = row.level;
|
||||||
dialogForm.parentId = row.parentId;
|
dialogForm.parentId = row.parentId;
|
||||||
dialogForm.status = row.status?.toString() ?? '1';
|
dialogForm.status = row.status?.toString() ?? '1';
|
||||||
|
|
||||||
|
dialogForm.selectedNode = findNodeById(goodsOptions.value, row.parentId);
|
||||||
|
dialogFormVisible.value = true;
|
||||||
};
|
};
|
||||||
// 删除操作
|
// 删除操作
|
||||||
const handleDelete = (row) => {
|
const handleDelete = (row) => {
|
||||||
console.log("要删除的行:", row);
|
|
||||||
deleteGoods(row.id);
|
deleteGoods(row.id);
|
||||||
};
|
};
|
||||||
// 批量删除
|
// 批量删除
|
||||||
const batchDelete = () => {
|
const batchDelete = () => {
|
||||||
console.log("要删除的行:", selectedIds.value);
|
|
||||||
deleteGoods(selectedIds.value.join(","));
|
deleteGoods(selectedIds.value.join(","));
|
||||||
};
|
};
|
||||||
const deleteGoods = async (ids) => {
|
const deleteGoods = async (ids) => {
|
||||||
@ -371,22 +383,22 @@ const onSaveCategory = () => {
|
|||||||
try {
|
try {
|
||||||
proxy.$modal.loading("正在保存...");
|
proxy.$modal.loading("正在保存...");
|
||||||
let param = { ...dialogForm };
|
let param = { ...dialogForm };
|
||||||
param.level = dialogForm.selectedNode.level;
|
param.level = dialogForm.selectedNode.level ?? "";
|
||||||
param.type = dialogForm.selectedNode.type;
|
param.type = dialogForm.selectedNode.type ?? "";
|
||||||
let response;
|
let response;
|
||||||
if (dialogTitle.value == "编辑分类") {
|
if (dialogTitle.value == "添加分类") {
|
||||||
response = await categoryEdit(param);
|
|
||||||
} else {
|
|
||||||
response = await categoryAdd(param);
|
response = await categoryAdd(param);
|
||||||
|
} else {
|
||||||
|
response = await categoryEdit(param);
|
||||||
}
|
}
|
||||||
proxy.$modal.closeLoading();
|
proxy.$modal.closeLoading();
|
||||||
if (response.code == 200) {
|
if (response.code == 200) {
|
||||||
cancelDialog();
|
cancelDialog();
|
||||||
onSubmit();
|
onSubmit();
|
||||||
if (dialogTitle.value == "编辑分类") {
|
if (dialogTitle.value == "添加分类") {
|
||||||
ElMessage.success("编辑成功!");
|
|
||||||
} else {
|
|
||||||
ElMessage.success("添加成功!");
|
ElMessage.success("添加成功!");
|
||||||
|
} else {
|
||||||
|
ElMessage.success("编辑成功!");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ElMessage.error(response.msg);
|
ElMessage.error(response.msg);
|
||||||
@ -397,20 +409,6 @@ const onSaveCategory = () => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
// 添加分类
|
|
||||||
const addCategory = () => {
|
|
||||||
dialogTitle.value = "添加分类";
|
|
||||||
getGoodTypeList();
|
|
||||||
Object.assign(dialogForm, { // 保持响应性,手动清空字段
|
|
||||||
id: "",
|
|
||||||
type: 1,
|
|
||||||
name: "",
|
|
||||||
level: "",
|
|
||||||
parentId: "",
|
|
||||||
status: "1",
|
|
||||||
});
|
|
||||||
dialogFormVisible.value = true;
|
|
||||||
};
|
|
||||||
const cancelDialog = () => {
|
const cancelDialog = () => {
|
||||||
Object.assign(dialogForm, { // 保持响应性,手动清空字段
|
Object.assign(dialogForm, { // 保持响应性,手动清空字段
|
||||||
id: "",
|
id: "",
|
||||||
|
@ -467,6 +467,8 @@ const send = async () => {};
|
|||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.order-list-warp {
|
.order-list-warp {
|
||||||
|
height: 75vh;
|
||||||
|
overflow-y: scroll;
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
padding: 10px 20px;
|
padding: 10px 20px;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
@ -542,7 +544,7 @@ const send = async () => {};
|
|||||||
line-height: 40px;
|
line-height: 40px;
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
// background-color: #409eff;
|
background-color: #25bf82;
|
||||||
}
|
}
|
||||||
.button-bottoms {
|
.button-bottoms {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
@ -249,6 +249,8 @@ const send = async () => {
|
|||||||
height: 60px;
|
height: 60px;
|
||||||
}
|
}
|
||||||
.table-cont {
|
.table-cont {
|
||||||
|
height: 85vh;
|
||||||
|
overflow-y: scroll !important;
|
||||||
background-color: #f5f5f5 !important;
|
background-color: #f5f5f5 !important;
|
||||||
}
|
}
|
||||||
.sendGoods {
|
.sendGoods {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user