常用单位完成,商品分类查询’新增‘详情

This commit is contained in:
duan
2025-02-14 15:35:59 +08:00
parent b6df8c5d21
commit 90e1bdaf78
20 changed files with 1195 additions and 110 deletions

View File

@@ -401,8 +401,8 @@ const pagination = reactive(
);
// 分页相关的请求参数
const request = props.contentConfig.request ?? {
pageName: "pageNum",
limitName: "pageSize",
pageName: "page",
limitName: "size",
};
const tableRef = ref<TableInstance>();
@@ -791,10 +791,10 @@ function fetchPageData(formData: IObject = {}, isRestart = false) {
if (props.contentConfig.parseData) {
data = props.contentConfig.parseData(data);
}
pagination.total = !props.contentConfig.resultListKey ? data.length : data.totalRow * 1;
pagination.total = props.contentConfig.resultListKey ? data.records.length : data.totalRow * 1;
pageData.value = props.contentConfig.resultListKey
? data[props.contentConfig.resultListKey]
: data;
: data.records;
} else {
pageData.value = data;
}
@@ -803,7 +803,7 @@ function fetchPageData(formData: IObject = {}, isRestart = false) {
loading.value = false;
});
}
fetchPageData();
fetchPageData(props.contentConfig.indexActionData);
// 导出Excel
function exportPageData(formData: IObject = {}) {

View File

@@ -67,6 +67,7 @@
<template v-else-if="item.type === 'date-picker'">
<el-date-picker v-model="formData[item.prop]" v-bind="item.attrs" />
</template>
<!-- Text 文本 -->
<template v-else-if="item.type === 'text'">
<el-text v-bind="item.attrs">
@@ -168,6 +169,10 @@
{{ formData[item.prop] }}
</el-text>
</template>
<!-- 图片上传 -->
<template v-else-if="item.type === 'UpImage'">
<SingleImageUpload v-model="formData[item.prop]" />
</template>
<!-- 自定义 -->
<template v-else-if="item.type === 'custom'">
<slot :name="item.slotName ?? item.prop" :prop="item.prop" :formData="formData"
@@ -195,7 +200,7 @@ import { useThrottleFn } from "@vueuse/core";
import type { FormInstance, FormRules } from "element-plus";
import { nextTick, reactive, ref, watch, watchEffect } from "vue";
import type { IModalConfig, IObject } from "./types";
// import SingleImageUpload from "@/components/Upload/SingleImageUpload.vue";
// 定义接收的属性
const props = defineProps<{
modalConfig: IModalConfig;
@@ -204,7 +209,7 @@ const props = defineProps<{
const emit = defineEmits<{
submitClick: [];
}>();
console.log(props.modalConfig, '全部')
const pk = props.modalConfig.pk ?? "id";
const modalVisible = ref(false);
const formRef = ref<FormInstance>();

View File

@@ -62,13 +62,13 @@ export interface IContentConfig<T = any> {
table?: Omit<TableProps<any>, "data">;
// pagination组件属性
pagination?:
| boolean
| Partial<
Omit<
PaginationProps,
"v-model:page-size" | "v-model:current-page" | "total" | "currentPage"
>
>;
| boolean
| Partial<
Omit<
PaginationProps,
"v-model:page-size" | "v-model:current-page" | "total" | "currentPage"
>
>;
// 列表的网络请求函数(需返回promise)
indexAction: (queryParams: T) => Promise<any>;
// 默认的分页相关的请求参数
@@ -82,6 +82,8 @@ export interface IContentConfig<T = any> {
list: IObject[];
[key: string]: any;
};
// 请求数据的参数
indexActionData: object | any,
// 修改属性的网络请求函数(需返回promise)
modifyAction?: (data: {
[key: string]: any;
@@ -109,12 +111,12 @@ export interface IContentConfig<T = any> {
| "import"
| "export"
| {
auth: string;
icon?: string;
name: string;
text: string;
type?: "primary" | "success" | "warning" | "danger" | "info";
}
auth: string;
icon?: string;
name: string;
text: string;
type?: "primary" | "success" | "warning" | "danger" | "info";
}
>;
// 表格工具栏右侧图标
defaultToolbar?: Array<
@@ -124,11 +126,11 @@ export interface IContentConfig<T = any> {
| "exports"
| "search"
| {
name: string;
icon: string;
title?: string;
auth?: string;
}
name: string;
icon: string;
title?: string;
auth?: string;
}
>;
// table组件列属性(额外的属性templet,operat,slotName)
cols: Array<{
@@ -143,17 +145,17 @@ export interface IContentConfig<T = any> {
show?: boolean;
// 模板
templet?:
| "image"
| "list"
| "url"
| "switch"
| "input"
| "price"
| "percent"
| "icon"
| "date"
| "tool"
| "custom";
| "image"
| "list"
| "url"
| "switch"
| "input"
| "price"
| "percent"
| "icon"
| "date"
| "tool"
| "custom";
// image模板相关参数
imageWidth?: number;
imageHeight?: number;
@@ -175,13 +177,13 @@ export interface IContentConfig<T = any> {
| "edit"
| "delete"
| {
auth?: string;
icon?: string;
name: string;
text: string;
type?: "primary" | "success" | "warning" | "danger" | "info";
render?: (row: IObject) => boolean;
}
auth?: string;
icon?: string;
name: string;
text: string;
type?: "primary" | "success" | "warning" | "danger" | "info";
render?: (row: IObject) => boolean;
}
>;
// filter值拼接符
filterJoin?: string;
@@ -218,17 +220,18 @@ export type IForm = Partial<Omit<FormProps, "model" | "rules">>;
export type IFormItems<T = any> = Array<{
// 组件类型(如input,select,radio,custom等默认input)
type?:
| "input"
| "textarea"
| "select"
| "radio"
| "switch"
| "checkbox"
| "tree-select"
| "date-picker"
| "input-number"
| "text"
| "custom";
| "input"
| "textarea"
| "select"
| "radio"
| "switch"
| "checkbox"
| "tree-select"
| "date-picker"
| "input-number"
| "text"
| "UpImage"
| "custom";
// 组件属性
attrs?: IObject;
// 组件可选项(适用于select,radio,checkbox组件)

View File

@@ -1,17 +1,8 @@
<!-- 单图上传组件 -->
<template>
<el-upload
v-model="modelValue"
class="single-upload"
list-type="picture-card"
:show-file-list="false"
:accept="props.accept"
:before-upload="handleBeforeUpload"
:http-request="handleUpload"
:on-success="onSuccess"
:on-error="onError"
multiple
>
<el-upload v-model="modelValue" class="single-upload" list-type="picture-card" :show-file-list="false"
:accept="props.accept" :before-upload="handleBeforeUpload" :http-request="handleUpload" :on-success="onSuccess"
:on-error="onError" multiple>
<template #default>
<el-image v-if="modelValue" :src="modelValue" />
<el-icon v-if="modelValue" class="single-upload__delete-btn" @click.stop="handleDelete">