Compare commits
3 Commits
f829df79f8
...
492a3e8163
| Author | SHA1 | Date |
|---|---|---|
|
|
492a3e8163 | |
|
|
85a4ee0ef6 | |
|
|
eb306eab72 |
|
|
@ -7,8 +7,12 @@ VITE_PUBLIC_PATH = /
|
||||||
# 开发环境路由历史模式(Hash模式传"hash"、HTML5模式传"h5"、Hash模式带base参数传"hash,base参数"、HTML5模式带base参数传"h5,base参数")
|
# 开发环境路由历史模式(Hash模式传"hash"、HTML5模式传"h5"、Hash模式带base参数传"hash,base参数"、HTML5模式带base参数传"h5,base参数")
|
||||||
VITE_ROUTER_HISTORY = "hash"
|
VITE_ROUTER_HISTORY = "hash"
|
||||||
|
|
||||||
VITE_API_BASEURL = "http://192.168.2.33:5199/api"
|
|
||||||
# 接口地址
|
# 接口地址
|
||||||
# VITE_API_BASEURL = "http://localhost:5199/api"
|
VITE_API_BASEURL = "http://192.168.2.33:5199/api"
|
||||||
#数据中心后台地址
|
#数据中心后台地址
|
||||||
VITE_API_USERCENTER_URL = "https://dca.w.23544.com:8843/api"
|
VITE_API_USERCENTER_URL = "https://dca.w.23544.com:8843/api"
|
||||||
|
|
||||||
|
# # 接口地址
|
||||||
|
# VITE_API_BASEURL = "https://learn-archives-admin-dev.23544.com/api"
|
||||||
|
# #数据中心后台地址
|
||||||
|
# VITE_API_USERCENTER_URL = "https://dca.w.23544.com:8843/api"
|
||||||
|
|
|
||||||
|
|
@ -93,13 +93,18 @@ export enum ConditionalType {
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 字段设置项 */
|
/** 字段设置项 */
|
||||||
export interface FieldSetting {
|
export class FieldSetting {
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
this.datasource = [];
|
||||||
|
this.mapValue= "value",
|
||||||
|
this.maplabel= "text"
|
||||||
|
|
||||||
|
}
|
||||||
/**map 时Value的取值的属性 */
|
/**map 时Value的取值的属性 */
|
||||||
mapValue?: string;
|
mapValue?: string;
|
||||||
/**map 时label的取值的属性 */
|
/**map 时label的取值的属性 */
|
||||||
maplabel?: string;
|
maplabel?: string;
|
||||||
/** 数据源 请求方式 */
|
|
||||||
datasourceStr?: string;
|
|
||||||
/**
|
/**
|
||||||
* 图片地址 获取方式
|
* 图片地址 获取方式
|
||||||
* @param value 当前值
|
* @param value 当前值
|
||||||
|
|
@ -116,44 +121,152 @@ export interface ComboModel {
|
||||||
value: any;
|
value: any;
|
||||||
text: string;
|
text: string;
|
||||||
}
|
}
|
||||||
/** 表格列配置 */
|
/** 新增修改的配置 */
|
||||||
export interface TableColumn {
|
export class TableColumnEdit {
|
||||||
/** 显示标签 */
|
/**
|
||||||
label: string;
|
*
|
||||||
/** 是否可搜索 */
|
* @param add 字段可以添加
|
||||||
search: boolean;
|
* @param edit 字段可以修改
|
||||||
/** 搜索类型 */
|
* @param multiple [type=dropdown]是否多选
|
||||||
searchType?: ConditionalType;
|
* @param editShow 编辑时显示列
|
||||||
|
* @param editRows [type=textarea]编辑时的行数
|
||||||
|
* @param rules 校验规则
|
||||||
|
*/
|
||||||
|
constructor(
|
||||||
|
add: boolean = false,
|
||||||
|
edit: boolean = false,
|
||||||
|
multiple: boolean = false,
|
||||||
|
editShow: boolean = true,
|
||||||
|
editRows: number = 3,
|
||||||
|
editDefault: any = "",
|
||||||
|
rules: any | Array<any> = null,
|
||||||
|
change: () => void = null
|
||||||
|
) {
|
||||||
|
this.add = add;
|
||||||
|
this.edit = edit;
|
||||||
|
this.multiple = multiple;
|
||||||
|
this.editShow = editShow;
|
||||||
|
this.editRows = editRows;
|
||||||
|
this.editDefault = editDefault;
|
||||||
|
this.rules = rules;
|
||||||
|
this.change = change;
|
||||||
|
}
|
||||||
/** 是否允许添加 [false]*/
|
/** 是否允许添加 [false]*/
|
||||||
add?: boolean;
|
add?: boolean;
|
||||||
/** 是否允许修改 [false]*/
|
/** 是否允许修改 [false]*/
|
||||||
edit?: boolean;
|
edit?: boolean;
|
||||||
/** 列宽度 [auto]*/
|
/** [type=dropdown]是否多选 */
|
||||||
width?: string;
|
|
||||||
/** 字段类型 */
|
|
||||||
type?: "string" | "dropdown" | "switch" | "img" | "datetime" | "textarea";
|
|
||||||
/** 是否多选 */
|
|
||||||
multiple?: boolean;
|
multiple?: boolean;
|
||||||
/** 编辑时显示列 */
|
/** 编辑时显示列 */
|
||||||
editShow?: boolean;
|
editShow?: boolean;
|
||||||
/**校验规则 */
|
/**校验规则 */
|
||||||
rules?: any | Array<any>;
|
rules?: any | Array<any>;
|
||||||
/** 显示列 */
|
/** [type=textarea]编辑时的行数 */
|
||||||
|
editRows?: number;
|
||||||
|
|
||||||
|
/** 新增编辑时的缓存值 */
|
||||||
|
valueE?: Array<string> | string | number | boolean | Date;
|
||||||
|
/** 新增编辑时的默认 */
|
||||||
|
editDefault?: Array<string> | string | number | boolean | Date;
|
||||||
|
|
||||||
|
/**编辑时值发生变化 */
|
||||||
|
change?: () => void;
|
||||||
|
}
|
||||||
|
/** 查询的配置 */
|
||||||
|
export class TableColumnSearch {
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param yes 列是否可以查询
|
||||||
|
* @param sort 列是否可以排序
|
||||||
|
* @param searchType 查询时候的值比较类型
|
||||||
|
*/
|
||||||
|
constructor(yes: boolean = false,
|
||||||
|
searchType: ConditionalType = ConditionalType.Like,sort: boolean = false){
|
||||||
|
this.yes = yes;
|
||||||
|
this.sort = sort;
|
||||||
|
this.searchType = searchType;
|
||||||
|
}
|
||||||
|
/**可以查询 [false] */
|
||||||
|
yes?: boolean;
|
||||||
|
/** 可以排序 [false]*/
|
||||||
|
sort?: boolean;
|
||||||
|
/** 搜索类型 */
|
||||||
|
searchType?: ConditionalType;
|
||||||
|
/** 查询缓存值 */
|
||||||
|
value?: Array<string> | string | number | boolean | Date;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 表格列配置 */
|
||||||
|
export class TableColumn {
|
||||||
|
constructor(
|
||||||
|
) {
|
||||||
|
|
||||||
|
this.type = "string";
|
||||||
|
this.show = true;
|
||||||
|
this.search = new TableColumnSearch();
|
||||||
|
this.edit = new TableColumnEdit();
|
||||||
|
this.setting = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 显示标签 */
|
||||||
|
label: string;
|
||||||
|
/** 查询配置 */
|
||||||
|
search?: TableColumnSearch;
|
||||||
|
/** 编辑配置 */
|
||||||
|
edit?: TableColumnEdit;
|
||||||
|
/** Table中展示宽度 [auto]*/
|
||||||
|
width?: string;
|
||||||
|
/** 字段类型 */
|
||||||
|
type?: "string" | "dropdown" | "switch" | "img" | "datetime" | "textarea";
|
||||||
|
/** 显示列 [不会动态计算]*/
|
||||||
show?: boolean;
|
show?: boolean;
|
||||||
/** 字段设置 */
|
/** 字段设置 */
|
||||||
setting?: FieldSetting;
|
setting?: FieldSetting;
|
||||||
/** 修改时的编辑值 */
|
|
||||||
valueE?: Array<string> | string | number | boolean | Date;
|
|
||||||
/** 查询值 */
|
|
||||||
value?: Array<string> | string | number | boolean | Date;
|
|
||||||
/** textarea编辑时的行数 */
|
|
||||||
editRows?: number;
|
|
||||||
/**编辑时值发生变化 */
|
|
||||||
change?: () => void;
|
|
||||||
/**列值初始化时 如何获取默认取对应列*/
|
/**列值初始化时 如何获取默认取对应列*/
|
||||||
custom?: (row: any) => string;
|
custom?: (row: any) => string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/** 表格列配置 */
|
||||||
|
// export interface TableColumn {
|
||||||
|
// /** 显示标签 */
|
||||||
|
// label: string;
|
||||||
|
|
||||||
|
// /** 是否可搜索 */
|
||||||
|
// search: boolean;
|
||||||
|
// /** 搜索类型 */
|
||||||
|
// searchType?: ConditionalType;
|
||||||
|
// /** 是否允许添加 [false]*/
|
||||||
|
// add?: boolean;
|
||||||
|
// /** 是否允许修改 [false]*/
|
||||||
|
// edit?: boolean;
|
||||||
|
// /** Table中展示宽度 [auto]*/
|
||||||
|
// width?: string;
|
||||||
|
// /** 字段类型 */
|
||||||
|
// type?: "string" | "dropdown" | "switch" | "img" | "datetime" | "textarea";
|
||||||
|
// /** 是否多选 */
|
||||||
|
// multiple?: boolean;
|
||||||
|
// /** 编辑时显示列 */
|
||||||
|
// editShow?: boolean;
|
||||||
|
// /**校验规则 */
|
||||||
|
// rules?: any | Array<any>;
|
||||||
|
// /** 显示列 */
|
||||||
|
// show?: boolean;
|
||||||
|
// /** 字段设置 */
|
||||||
|
// setting?: FieldSetting;
|
||||||
|
// /** 修改时的编辑值 */
|
||||||
|
// valueE?: Array<string> | string | number | boolean | Date;
|
||||||
|
// /** 查询值 */
|
||||||
|
// value?: Array<string> | string | number | boolean | Date;
|
||||||
|
// /** textarea编辑时的行数 */
|
||||||
|
// editRows?: number;
|
||||||
|
// /**编辑时值发生变化 */
|
||||||
|
// change?: () => void;
|
||||||
|
// /**列值初始化时 如何获取默认取对应列*/
|
||||||
|
// custom?: (row: any) => string;
|
||||||
|
// }
|
||||||
|
|
||||||
/** 分页数据 */
|
/** 分页数据 */
|
||||||
export interface PageData {
|
export interface PageData {
|
||||||
/** 总条数 */
|
/** 总条数 */
|
||||||
|
|
@ -224,3 +337,49 @@ export interface TableConfig {
|
||||||
/**是否显示 */
|
/**是否显示 */
|
||||||
show?: boolean;
|
show?: boolean;
|
||||||
}
|
}
|
||||||
|
/** 初始化表格数据 */
|
||||||
|
export function intTableData(tValue: TableConfig): TableConfig {
|
||||||
|
if (!tValue.data) tValue.data = [];
|
||||||
|
if (!tValue.selectRows) tValue.selectRows = [];
|
||||||
|
if (tValue.border == null) tValue.border = true;
|
||||||
|
if (!tValue.pageData) tValue.pageData = { total: 0 };
|
||||||
|
if (tValue.operationTop === undefined) tValue.operationTop = true;
|
||||||
|
|
||||||
|
// 处理 column 的属性
|
||||||
|
for (const key in tValue.column) {
|
||||||
|
tValue.column[key] = { ...new TableColumn(), ...tValue.column[key] };
|
||||||
|
const element = tValue.column[key];
|
||||||
|
|
||||||
|
element.edit = { ...new TableColumnEdit(), ...element.edit };
|
||||||
|
element.search = { ...new TableColumnSearch(), ...element.search };
|
||||||
|
element.setting = { ...new FieldSetting(), ...element.setting };
|
||||||
|
|
||||||
|
if (
|
||||||
|
element.custom == undefined &&
|
||||||
|
(element.type === "switch" ||
|
||||||
|
element.type === "dropdown" ||
|
||||||
|
element.type === "string" ||
|
||||||
|
element.type === undefined)
|
||||||
|
) {
|
||||||
|
if (element.type === "string" || element.type === undefined)
|
||||||
|
element.custom = row => row[key];
|
||||||
|
else {
|
||||||
|
element.custom = row => {
|
||||||
|
let sc = element.setting.datasource.find(
|
||||||
|
s => s[element.setting.mapValue] + "" == row[key] + ""
|
||||||
|
);
|
||||||
|
return !sc ? row[key] : sc[element.setting.maplabel];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
} else if (element.custom == undefined) {
|
||||||
|
element.custom = row => row[key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 处理 operationColumnData 的属性
|
||||||
|
for (const key in tValue.operationColumnData) {
|
||||||
|
const element = tValue.operationColumnData[key];
|
||||||
|
if (element.show === undefined) element.show = true;
|
||||||
|
}
|
||||||
|
return tValue;
|
||||||
|
}
|
||||||
|
|
@ -55,11 +55,11 @@ function intiColumn() {
|
||||||
for (const key in editData.value.table.column) {
|
for (const key in editData.value.table.column) {
|
||||||
const element = editData.value.table.column[key];
|
const element = editData.value.table.column[key];
|
||||||
if (editData.value.isedit) {
|
if (editData.value.isedit) {
|
||||||
if (element.edit) {
|
if (element.edit.edit) {
|
||||||
column.value[key] = element;
|
column.value[key] = element;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (element.add) {
|
if (element.edit.add) {
|
||||||
column.value[key] = element;
|
column.value[key] = element;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -81,8 +81,8 @@ function handleSubmitForm() {
|
||||||
} else form.id = 0;
|
} else form.id = 0;
|
||||||
for (const key in column.value) {
|
for (const key in column.value) {
|
||||||
const element = column.value[key];
|
const element = column.value[key];
|
||||||
if (element.valueE !== null && element.valueE !== "") {
|
if (element.edit.valueE !== null && element.edit.valueE !== "") {
|
||||||
form[key] = element.valueE;
|
form[key] = element.edit.valueE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (editData.value.table.editCallback) {
|
if (editData.value.table.editCallback) {
|
||||||
|
|
@ -102,14 +102,15 @@ function handleSubmitForm() {
|
||||||
function handleResetForm() {
|
function handleResetForm() {
|
||||||
for (const key in column.value) {
|
for (const key in column.value) {
|
||||||
let item = column.value[key];
|
let item = column.value[key];
|
||||||
if (Array.isArray(item.valueE)) {
|
if (item.edit.editDefault != null) item.edit.valueE = item.edit.editDefault;
|
||||||
item.valueE = [];
|
else if (Array.isArray(item.edit.valueE)) {
|
||||||
} else if (typeof item.valueE === "number") {
|
item.edit.valueE = [];
|
||||||
item.valueE = "";
|
} else if (typeof item.edit.valueE === "number") {
|
||||||
} else if (typeof item.valueE === "boolean") {
|
item.edit.valueE = "";
|
||||||
item.valueE = false;
|
} else if (typeof item.edit.valueE === "boolean") {
|
||||||
|
item.edit.valueE = false;
|
||||||
} else {
|
} else {
|
||||||
item.valueE = "";
|
item.edit.valueE = "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -123,7 +124,7 @@ function fetchFormData() {
|
||||||
editData.value.frorm = res.data;
|
editData.value.frorm = res.data;
|
||||||
for (const key in column.value) {
|
for (const key in column.value) {
|
||||||
const element = column.value[key];
|
const element = column.value[key];
|
||||||
element.valueE = res.data[key];
|
element.edit.valueE = res.data[key];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
editData.value.loading = true;
|
editData.value.loading = true;
|
||||||
|
|
@ -145,32 +146,32 @@ function fetchFormData() {
|
||||||
>
|
>
|
||||||
<el-form-item
|
<el-form-item
|
||||||
v-for="(o, k, i) in column"
|
v-for="(o, k, i) in column"
|
||||||
v-show="execute(o['editShow'], o)"
|
v-show="execute(o.edit['editShow'], o)"
|
||||||
:key="i"
|
:key="i"
|
||||||
:rules="o.rules"
|
:rules="o.edit.rules"
|
||||||
:prop="'' + k + '.valueE'"
|
:prop="'' + k + '.edit.valueE'"
|
||||||
:label="o.label"
|
:label="o.label"
|
||||||
>
|
>
|
||||||
<div v-if="o.type.trim() == 'datetime'">
|
<div v-if="o.type.trim() == 'datetime'">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="o.valueE as Date"
|
v-model="o.edit.valueE as Date"
|
||||||
type="date"
|
type="date"
|
||||||
format="YYYY-MM-DD"
|
format="YYYY-MM-DD"
|
||||||
value-format="YYYY-MM-DD"
|
value-format="YYYY-MM-DD"
|
||||||
:placeholder="o.label"
|
:placeholder="o.label"
|
||||||
class="elWidth"
|
class="elWidth"
|
||||||
@change="o.change"
|
@change="o.edit.change"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div v-else-if="o.type.trim() == 'dropdown'">
|
<div v-else-if="o.type.trim() == 'dropdown'">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="o.valueE"
|
v-model="o.edit.valueE"
|
||||||
:multiple="o.multiple"
|
:multiple="o.edit.multiple"
|
||||||
clearable
|
clearable
|
||||||
filterable
|
filterable
|
||||||
:placeholder="o.label"
|
:placeholder="o.label"
|
||||||
class="elWidth"
|
class="elWidth"
|
||||||
@change="o.change"
|
@change="o.edit.change"
|
||||||
>
|
>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in o.setting.datasource"
|
v-for="item in o.setting.datasource"
|
||||||
|
|
@ -183,25 +184,29 @@ function fetchFormData() {
|
||||||
</div>
|
</div>
|
||||||
<div v-else-if="o.type.trim() == 'textarea'">
|
<div v-else-if="o.type.trim() == 'textarea'">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="o.valueE as string"
|
v-model="o.edit.valueE as string"
|
||||||
:rows="o.editRows || 4"
|
:rows="o.edit.editRows || 4"
|
||||||
type="textarea"
|
type="textarea"
|
||||||
:placeholder="o.label"
|
:placeholder="o.label"
|
||||||
class="elWidth"
|
class="elWidth"
|
||||||
@change="o.change"
|
@change="o.edit.change"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div v-else-if="o.type.trim() == 'switch'">
|
<div v-else-if="o.type.trim() == 'switch'">
|
||||||
<el-switch
|
<el-switch
|
||||||
v-model="o.valueE as boolean"
|
v-model="o.edit.valueE as boolean"
|
||||||
active-text="启用"
|
active-text="启用"
|
||||||
inactive-text="禁用"
|
inactive-text="禁用"
|
||||||
class="elWidth"
|
class="elWidth"
|
||||||
@change="o.change"
|
@change="o.edit.change"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div v-else>
|
<div v-else>
|
||||||
<el-input v-model="o.valueE as string" class="elWidth" :placeholder="o.label" />
|
<el-input
|
||||||
|
v-model="o.edit.valueE as string"
|
||||||
|
class="elWidth"
|
||||||
|
:placeholder="o.label"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,13 +15,16 @@ import {
|
||||||
} from "vue";
|
} from "vue";
|
||||||
|
|
||||||
import { Search } from "@element-plus/icons-vue";
|
import { Search } from "@element-plus/icons-vue";
|
||||||
import { ElMessage, ElMessageBox } from "element-plus";
|
import { ElMessage, ElMessageBox, TableColumnCtx } from "element-plus";
|
||||||
import { defineAsyncComponent, AsyncComponentLoader } from "vue";
|
import { defineAsyncComponent, AsyncComponentLoader } from "vue";
|
||||||
import {
|
import {
|
||||||
ButtonCustomConfig,
|
ButtonCustomConfig,
|
||||||
ConditionalType,
|
ConditionalType,
|
||||||
Dialog,
|
Dialog,
|
||||||
|
intTableData,
|
||||||
TableColumn,
|
TableColumn,
|
||||||
|
TableColumnEdit,
|
||||||
|
TableColumnSearch,
|
||||||
TableConfig,
|
TableConfig,
|
||||||
} from "./hTable";
|
} from "./hTable";
|
||||||
import hTableEdit from "./hTableEdit.vue";
|
import hTableEdit from "./hTableEdit.vue";
|
||||||
|
|
@ -74,6 +77,7 @@ let Api: hTableAPI = null;
|
||||||
|
|
||||||
const init = ref(false);
|
const init = ref(false);
|
||||||
const tableHeight = ref(0);
|
const tableHeight = ref(0);
|
||||||
|
let defaultOrderBy = null;
|
||||||
|
|
||||||
const dialog = ref<Dialog>({
|
const dialog = ref<Dialog>({
|
||||||
visible: false,
|
visible: false,
|
||||||
|
|
@ -107,36 +111,7 @@ function appStyle() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function intdata() {
|
function intdata() {
|
||||||
if (!table.value.data) table.value.data = [];
|
intTableData(table.value);
|
||||||
if (!table.value.selectRows) table.value.selectRows = [];
|
|
||||||
if (table.value.border == null) table.value.border = true;
|
|
||||||
if (!table.value.pageData) table.value.pageData = { total: 0 };
|
|
||||||
if (table.value.operationTop === undefined) table.value.operationTop = true;
|
|
||||||
|
|
||||||
// 处理 column 的属性
|
|
||||||
for (const key in table.value.column) {
|
|
||||||
const element = table.value.column[key];
|
|
||||||
if (element.add === undefined) element.add = false;
|
|
||||||
if (element.edit === undefined) element.edit = false;
|
|
||||||
// Vue 3 中直接赋值即可,不需要 $set
|
|
||||||
if (element.valueE === undefined) element.valueE = element.multiple ? [] : "";
|
|
||||||
if (element.value === undefined) element.value = element.multiple ? [] : "";
|
|
||||||
if (!element.type) element.type = "string";
|
|
||||||
if (element.show === undefined) element.show = true;
|
|
||||||
if (element.editShow === undefined) element.editShow = true;
|
|
||||||
if (!element.setting)
|
|
||||||
element.setting = { datasource: [], mapValue: "value", maplabel: "text" };
|
|
||||||
if (!element.setting.mapValue) element.setting.mapValue = "value";
|
|
||||||
if (!element.setting.maplabel) element.setting.maplabel = "text";
|
|
||||||
|
|
||||||
if (!element.change) element.change = () => {};
|
|
||||||
}
|
|
||||||
|
|
||||||
// 处理 operationColumnData 的属性
|
|
||||||
for (const key in table.value.operationColumnData) {
|
|
||||||
const element = table.value.operationColumnData[key];
|
|
||||||
if (element.show === undefined) element.show = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function rowKeyFun(row) {
|
function rowKeyFun(row) {
|
||||||
|
|
@ -256,13 +231,13 @@ function handleAddCallback() {
|
||||||
function handleResetForm() {
|
function handleResetForm() {
|
||||||
for (const key in table.value.column) {
|
for (const key in table.value.column) {
|
||||||
let item = table.value.column[key];
|
let item = table.value.column[key];
|
||||||
if (Array.isArray(item.valueE)) {
|
if (Array.isArray(item.edit.valueE)) {
|
||||||
item.valueE = [];
|
item.edit.valueE = [];
|
||||||
} else if (typeof item.valueE === "number") {
|
} else if (typeof item.edit.valueE === "number") {
|
||||||
item.valueE = "";
|
item.edit.valueE = "";
|
||||||
} else if (typeof item.valueE === "boolean") {
|
} else if (typeof item.edit.valueE === "boolean") {
|
||||||
} else {
|
} else {
|
||||||
item.valueE = "";
|
item.edit.valueE = "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -277,6 +252,21 @@ function pageIndexChange(o) {
|
||||||
table.value.search.PageIndex = o - 1;
|
table.value.search.PageIndex = o - 1;
|
||||||
fetchPagedData();
|
fetchPagedData();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 排序变化时
|
||||||
|
* @param selection
|
||||||
|
*/
|
||||||
|
function sortChange(data: { column: TableColumnCtx<any>; prop: string; order: any }) {
|
||||||
|
if (data.order == undefined) {
|
||||||
|
table.value.search.OrderBy = defaultOrderBy.OrderBy;
|
||||||
|
table.value.search.OrderByType = defaultOrderBy.OrderByType;
|
||||||
|
} else {
|
||||||
|
table.value.search.OrderBy = data.prop;
|
||||||
|
table.value.search.OrderByType = data.order === "ascending" ? 1 : 0;
|
||||||
|
}
|
||||||
|
handleReloadPaged();
|
||||||
|
}
|
||||||
// 勾选
|
// 勾选
|
||||||
function handleSelectionChange(selection) {
|
function handleSelectionChange(selection) {
|
||||||
console.log("selection-change", selection);
|
console.log("selection-change", selection);
|
||||||
|
|
@ -287,17 +277,23 @@ function searchReload() {
|
||||||
for (let name in table.value.column) {
|
for (let name in table.value.column) {
|
||||||
if (
|
if (
|
||||||
!table.value.column[name].search ||
|
!table.value.column[name].search ||
|
||||||
table.value.column[name].value === undefined ||
|
table.value.column[name].search.value === undefined ||
|
||||||
table.value.column[name].value === null ||
|
table.value.column[name].search.value === null ||
|
||||||
table.value.column[name].value === ""
|
table.value.column[name].search.value === ""
|
||||||
) {
|
) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
table.value.column[name].value = "";
|
table.value.column[name].search.value = "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 查询
|
// 查询
|
||||||
function handleReloadPaged(reload = true) {
|
function handleReloadPaged(reload = true) {
|
||||||
|
if (defaultOrderBy == null) {
|
||||||
|
defaultOrderBy = {
|
||||||
|
OrderBy: table.value.search.OrderBy,
|
||||||
|
OrderByType: table.value.search.OrderByType,
|
||||||
|
};
|
||||||
|
}
|
||||||
if (table.value.search === undefined || table.value.search.PageIndex === undefined) {
|
if (table.value.search === undefined || table.value.search.PageIndex === undefined) {
|
||||||
table.value.search.PageIndex = 0;
|
table.value.search.PageIndex = 0;
|
||||||
table.value.search.PageSize = 20;
|
table.value.search.PageSize = 20;
|
||||||
|
|
@ -306,9 +302,9 @@ function handleReloadPaged(reload = true) {
|
||||||
for (let name in table.value.column) {
|
for (let name in table.value.column) {
|
||||||
if (
|
if (
|
||||||
!table.value.column[name].search ||
|
!table.value.column[name].search ||
|
||||||
table.value.column[name].value === undefined ||
|
table.value.column[name].search.value === undefined ||
|
||||||
table.value.column[name].value === null ||
|
table.value.column[name].search.value === null ||
|
||||||
table.value.column[name].value === ""
|
table.value.column[name].search.value === ""
|
||||||
) {
|
) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
@ -323,10 +319,10 @@ function handleReloadPaged(reload = true) {
|
||||||
} else data.ConditionalType = ConditionalType.Equal;
|
} else data.ConditionalType = ConditionalType.Equal;
|
||||||
|
|
||||||
data.FieldName = name.charAt(0).toUpperCase() + name.slice(1);
|
data.FieldName = name.charAt(0).toUpperCase() + name.slice(1);
|
||||||
data.FieldValue = table.value.column[name].value.toString();
|
data.FieldValue = table.value.column[name].search.value.toString();
|
||||||
|
|
||||||
if (table.value.column[name].searchType != undefined) {
|
if (table.value.column[name].search.searchType != undefined) {
|
||||||
let v: number = table.value.column[name].searchType || 0;
|
let v: number = table.value.column[name].search.searchType || 0;
|
||||||
data.ConditionalType = v;
|
data.ConditionalType = v;
|
||||||
}
|
}
|
||||||
table.value.search.Conditions.push(data);
|
table.value.search.Conditions.push(data);
|
||||||
|
|
@ -342,37 +338,6 @@ function handleReloadPaged(reload = true) {
|
||||||
}
|
}
|
||||||
// 加载前置数据(如查询条件的下拉选择数据)
|
// 加载前置数据(如查询条件的下拉选择数据)
|
||||||
async function fetchInitData() {
|
async function fetchInitData() {
|
||||||
for (const key in table.value.column) {
|
|
||||||
const element = table.value.column[key];
|
|
||||||
if (element.type === "dropdown") {
|
|
||||||
if (!element.setting.datasource) {
|
|
||||||
// 不安全取消 存在值就不处理
|
|
||||||
// let rdata = await eval(element.setting.datasourceStr);
|
|
||||||
// element.setting.datasource = rdata.data;
|
|
||||||
// console.log(key + " " + element.setting.datasourceStr, rdata);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (
|
|
||||||
element.custom == undefined &&
|
|
||||||
(element.type === "switch" ||
|
|
||||||
element.type === "dropdown" ||
|
|
||||||
element.type === "string" ||
|
|
||||||
element.type === undefined)
|
|
||||||
) {
|
|
||||||
if (element.type === "string" || element.type === undefined)
|
|
||||||
element.custom = (row) => row[key];
|
|
||||||
else {
|
|
||||||
element.custom = (row) => {
|
|
||||||
let sc = element.setting.datasource.find(
|
|
||||||
(s) => s[element.setting.mapValue] + "" == row[key] + ""
|
|
||||||
);
|
|
||||||
return !sc ? row[key] : sc[element.setting.maplabel];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
} else if (element.custom == undefined) {
|
|
||||||
element.custom = (row) => row[key];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
init.value = true;
|
init.value = true;
|
||||||
appStyle();
|
appStyle();
|
||||||
|
|
@ -415,10 +380,10 @@ function fetchPagedData() {
|
||||||
<div ref="appB_S" class="search-container1">
|
<div ref="appB_S" class="search-container1">
|
||||||
<!-- 搜索项目 -->
|
<!-- 搜索项目 -->
|
||||||
<el-form v-if="table.search.show" :inline="true" :model="table.search">
|
<el-form v-if="table.search.show" :inline="true" :model="table.search">
|
||||||
<el-form-item v-for="(o, n, i) in table.column" v-show="o.search" :key="i">
|
<el-form-item v-for="(o, n, i) in table.column" v-show="o.search.yes" :key="i">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-if="o.type.trim() == 'datetime'"
|
v-if="o.type.trim() == 'datetime'"
|
||||||
v-model="o.value as Date"
|
v-model="o.search.value as Date"
|
||||||
type="date"
|
type="date"
|
||||||
format="YYYY-MM-DD"
|
format="YYYY-MM-DD"
|
||||||
value-format="YYYY-MM-DD"
|
value-format="YYYY-MM-DD"
|
||||||
|
|
@ -427,8 +392,8 @@ function fetchPagedData() {
|
||||||
/>
|
/>
|
||||||
<el-select
|
<el-select
|
||||||
v-else-if="o.type.trim() == 'dropdown'"
|
v-else-if="o.type.trim() == 'dropdown'"
|
||||||
v-model="o.value"
|
v-model="o.search.value"
|
||||||
:multiple="o.multiple"
|
:multiple="o.edit.multiple"
|
||||||
clearable
|
clearable
|
||||||
filterable
|
filterable
|
||||||
:placeholder="o.label"
|
:placeholder="o.label"
|
||||||
|
|
@ -444,7 +409,7 @@ function fetchPagedData() {
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-select
|
<el-select
|
||||||
v-else-if="o.type.trim() == 'switch'"
|
v-else-if="o.type.trim() == 'switch'"
|
||||||
v-model="o.value"
|
v-model="o.search.value"
|
||||||
clearable
|
clearable
|
||||||
filterable
|
filterable
|
||||||
:placeholder="o.label"
|
:placeholder="o.label"
|
||||||
|
|
@ -454,7 +419,7 @@ function fetchPagedData() {
|
||||||
<el-option autocomplete="off" :label="'禁用'" :value="false" />
|
<el-option autocomplete="off" :label="'禁用'" :value="false" />
|
||||||
</el-select>
|
</el-select>
|
||||||
<div v-else-if="o.type.trim() == 'img'" v-show="false" />
|
<div v-else-if="o.type.trim() == 'img'" v-show="false" />
|
||||||
<el-input v-else v-model="o.value as string" :placeholder="o.label" />
|
<el-input v-else v-model="o.search.value as string" :placeholder="o.label" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" :icon="Search" @click="handleReloadPaged(false)"
|
<el-button type="primary" :icon="Search" @click="handleReloadPaged(false)"
|
||||||
|
|
@ -522,6 +487,7 @@ function fetchPagedData() {
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
:row-key="rowKeyFun"
|
:row-key="rowKeyFun"
|
||||||
@selection-change="handleSelectionChange"
|
@selection-change="handleSelectionChange"
|
||||||
|
@sort-change="sortChange"
|
||||||
>
|
>
|
||||||
<el-table-column v-if="table.selectColumn" type="selection" width="40" />
|
<el-table-column v-if="table.selectColumn" type="selection" width="40" />
|
||||||
<el-table-column
|
<el-table-column
|
||||||
|
|
@ -557,6 +523,7 @@ function fetchPagedData() {
|
||||||
:prop="name"
|
:prop="name"
|
||||||
:label="item.label"
|
:label="item.label"
|
||||||
:width="item.width"
|
:width="item.width"
|
||||||
|
:sortable="item.search.sort ? `custom` : false"
|
||||||
>
|
>
|
||||||
<template v-slot="scope">
|
<template v-slot="scope">
|
||||||
<div class="columnTemplate">
|
<div class="columnTemplate">
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,14 @@ export const ruleNumber = [
|
||||||
trigger: "blur"
|
trigger: "blur"
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
export const ruleClassName = [
|
||||||
|
{
|
||||||
|
pattern: /^[1-9]\d*班$/,
|
||||||
|
message: "请输入正确班级名称[例:101班]",
|
||||||
|
trigger: "blur"
|
||||||
|
},
|
||||||
|
...ruleRequired
|
||||||
|
];
|
||||||
export const ruleRequiredNumber = [
|
export const ruleRequiredNumber = [
|
||||||
{ required: true, message: "不能为空", trigger: "blur" },
|
{ required: true, message: "不能为空", trigger: "blur" },
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import ahTable from "@/components/hTable/index.vue";
|
import ahTable from "@/components/hTable/index.vue";
|
||||||
import { ConditionalType, TableConfig } from "@/components/hTable/hTable";
|
import { ConditionalType, intTableData, TableConfig } from "@/components/hTable/hTable";
|
||||||
import { onMounted, ref, defineOptions } from "vue";
|
import { onMounted, ref, defineOptions } from "vue";
|
||||||
import { fa } from "element-plus/es/locales.mjs";
|
import { fa } from "element-plus/es/locales.mjs";
|
||||||
import { hTableAPI } from "@/api/hTable";
|
import { hTableAPI } from "@/api/hTable";
|
||||||
|
|
@ -29,7 +29,7 @@ function searchCallback(data) {
|
||||||
}
|
}
|
||||||
const RoleApi = new hTableAPI("AdminRole");
|
const RoleApi = new hTableAPI("AdminRole");
|
||||||
const table = ref<{ initTable: (config: TableConfig) => void }>(null);
|
const table = ref<{ initTable: (config: TableConfig) => void }>(null);
|
||||||
const tableData: TableConfig = {
|
const tableData: TableConfig = intTableData({
|
||||||
apiUrl: ControllerName,
|
apiUrl: ControllerName,
|
||||||
selectColumn: false, // 列表选择
|
selectColumn: false, // 列表选择
|
||||||
border: false, // 是否显示表格边框
|
border: false, // 是否显示表格边框
|
||||||
|
|
@ -70,63 +70,41 @@ const tableData: TableConfig = {
|
||||||
// 行数据
|
// 行数据
|
||||||
id: {
|
id: {
|
||||||
label: "编号",
|
label: "编号",
|
||||||
search: true,
|
search: { yes: true, searchType: ConditionalType.Equal },
|
||||||
add: false, // 字段允许添加
|
|
||||||
edit: false, // 字段允许修改
|
|
||||||
width: "150px",
|
width: "150px",
|
||||||
},
|
},
|
||||||
name: {
|
name: {
|
||||||
label: "名称",
|
label: "名称",
|
||||||
width: "180px",
|
width: "180px",
|
||||||
rules: ruleRequiredI(12, 2),
|
search: { yes: true, searchType: ConditionalType.Like },
|
||||||
search: true,
|
edit: { add: true, edit: true, rules: ruleRequiredI(12, 2) },
|
||||||
searchType: ConditionalType.Like,
|
|
||||||
add: true, // 字段允许添加
|
|
||||||
edit: true, // 字段允许修改
|
|
||||||
},
|
},
|
||||||
phone: {
|
phone: {
|
||||||
label: "手机号",
|
label: "手机号",
|
||||||
rules: rulePhone,
|
|
||||||
width: "200px",
|
width: "200px",
|
||||||
search: true,
|
search: { yes: true, searchType: ConditionalType.Like },
|
||||||
add: true, // 字段允许添加
|
edit: { add: true, edit: true, rules: rulePhone },
|
||||||
edit: true, // 字段允许修改
|
|
||||||
},
|
},
|
||||||
account: {
|
account: {
|
||||||
label: "账号",
|
label: "账号",
|
||||||
rules: ruleRequiredI(20, 8),
|
search: { yes: true },
|
||||||
search: true,
|
edit: { add: true, edit: false, rules: ruleRequiredI(20, 8) },
|
||||||
add: true, // 字段允许添加
|
|
||||||
edit: false, // 字段允许修改
|
|
||||||
},
|
},
|
||||||
password: {
|
password: {
|
||||||
label: "密码",
|
label: "密码",
|
||||||
show: false,
|
show: false,
|
||||||
/**长度必须大于6 */
|
edit: { add: true, edit: false, rules: ruleRequiredI(32, 6) },
|
||||||
rules: ruleRequiredI(32, 6),
|
|
||||||
search: false,
|
|
||||||
add: true, // 字段允许添加
|
|
||||||
edit: false, // 字段允许修改
|
|
||||||
},
|
},
|
||||||
enable: {
|
enable: {
|
||||||
label: "启用",
|
label: "启用",
|
||||||
type: "switch",
|
type: "switch",
|
||||||
search: false,
|
edit: { add: true, edit: true, editDefault: true },
|
||||||
|
|
||||||
add: true, // 字段允许添加
|
|
||||||
edit: true, // 字段允许修改
|
|
||||||
valueE: true, // 编辑时的默认值
|
|
||||||
},
|
},
|
||||||
roleId: {
|
roleId: {
|
||||||
label: "角色",
|
label: "角色",
|
||||||
type: "dropdown",
|
type: "dropdown",
|
||||||
rules: ruleRequired,
|
search: { yes: true },
|
||||||
search: true,
|
edit: { add: true, edit: false, rules: ruleRequired },
|
||||||
add: true, // 字段允许添加
|
|
||||||
edit: false, // 字段允许修改
|
|
||||||
setting: {
|
|
||||||
datasource: [],
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
data: [],
|
data: [],
|
||||||
|
|
@ -134,7 +112,7 @@ const tableData: TableConfig = {
|
||||||
total: 0,
|
total: 0,
|
||||||
},
|
},
|
||||||
selectRows: [],
|
selectRows: [],
|
||||||
};
|
});
|
||||||
|
|
||||||
const showTable = ref(false);
|
const showTable = ref(false);
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,18 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import ahTable from "@/components/hTable/index.vue";
|
import ahTable from "@/components/hTable/index.vue";
|
||||||
import { ConditionalType, TableConfig } from "@/components/hTable/hTable";
|
import {
|
||||||
|
ConditionalType,
|
||||||
|
intTableData,
|
||||||
|
TableColumn,
|
||||||
|
TableColumnEdit,
|
||||||
|
TableColumnSearch,
|
||||||
|
TableConfig,
|
||||||
|
} from "@/components/hTable/hTable";
|
||||||
import { onMounted, ref, defineOptions } from "vue";
|
import { onMounted, ref, defineOptions } from "vue";
|
||||||
import { fa } from "element-plus/es/locales.mjs";
|
import { fa } from "element-plus/es/locales.mjs";
|
||||||
import { hTableAPI } from "@/api/hTable";
|
import { hTableAPI } from "@/api/hTable";
|
||||||
import { getenum } from "@/api/enum";
|
import { getenum } from "@/api/enum";
|
||||||
import { ruleRequired } from "@/utils/rules";
|
import { ruleClassName, ruleRequired } from "@/utils/rules";
|
||||||
const ControllerName = "classes";
|
const ControllerName = "classes";
|
||||||
|
|
||||||
defineOptions({
|
defineOptions({
|
||||||
|
|
@ -16,7 +23,7 @@ const SchoolApi = new hTableAPI("usercenter/back/schools");
|
||||||
function searchCallback(data) {}
|
function searchCallback(data) {}
|
||||||
|
|
||||||
const table = ref<{ initTable: (config: TableConfig) => void }>();
|
const table = ref<{ initTable: (config: TableConfig) => void }>();
|
||||||
const tableData: TableConfig = {
|
const tableData: TableConfig = intTableData({
|
||||||
apiUrl: "usercenter/back/classes",
|
apiUrl: "usercenter/back/classes",
|
||||||
selectColumn: false, // 列表选择
|
selectColumn: false, // 列表选择
|
||||||
border: false, // 是否显示表格边框
|
border: false, // 是否显示表格边框
|
||||||
|
|
@ -66,98 +73,57 @@ const tableData: TableConfig = {
|
||||||
// 行数据
|
// 行数据
|
||||||
id: {
|
id: {
|
||||||
label: "编号",
|
label: "编号",
|
||||||
search: true,
|
|
||||||
add: false, // 字段允许添加
|
|
||||||
edit: false, // 字段允许修改
|
|
||||||
width: "150px",
|
width: "150px",
|
||||||
},
|
},
|
||||||
schoolId: {
|
schoolId: {
|
||||||
label: "学校",
|
label: "学校",
|
||||||
rules: ruleRequired,
|
|
||||||
width: "180px",
|
width: "180px",
|
||||||
search: true,
|
|
||||||
type: "dropdown",
|
type: "dropdown",
|
||||||
add: true, // 字段允许添加
|
search: new TableColumnSearch(true),
|
||||||
edit: true, // 字段允许修改
|
edit: {
|
||||||
setting: {},
|
|
||||||
},
|
|
||||||
name: {
|
|
||||||
label: "名称",
|
|
||||||
rules: ruleRequired,
|
rules: ruleRequired,
|
||||||
width: "180px",
|
},
|
||||||
search: true,
|
|
||||||
searchType: ConditionalType.Like, // 搜索类型
|
|
||||||
add: true, // 字段允许添加
|
|
||||||
edit: true, // 字段允许修改
|
|
||||||
},
|
},
|
||||||
Grade: {
|
Grade: {
|
||||||
label: "年级",
|
label: "年级",
|
||||||
rules: ruleRequired,
|
width: "220px",
|
||||||
width: "180px",
|
|
||||||
type: "dropdown",
|
type: "dropdown",
|
||||||
custom: (row) => `${row.grade ?? ""}`,
|
custom: (row) => `${row.grade ?? ""} [${row.gradeLevel + row.graduationYear}]`,
|
||||||
// `${row.grade ?? ""} ${row.gradeLevel + row.graduationYear}`,
|
search: new TableColumnSearch(true),
|
||||||
search: true,
|
edit: { add: true, edit: false, rules: ruleRequired },
|
||||||
setting: {},
|
},
|
||||||
add: true, // 字段允许添加
|
name: {
|
||||||
edit: false, // 字段允许修改
|
label: "名称",
|
||||||
|
width: "180px",
|
||||||
|
search: {
|
||||||
|
yes: true,
|
||||||
|
searchType: ConditionalType.Like, // 搜索类型
|
||||||
|
},
|
||||||
|
edit: {
|
||||||
|
add: true,
|
||||||
|
edit: true,
|
||||||
|
rules: ruleClassName,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
// GradeLevel: {
|
|
||||||
// label: "年级",
|
|
||||||
// search: false,
|
|
||||||
// type: "dropdown",
|
|
||||||
// searchType: ConditionalType.Like,
|
|
||||||
// add: true, // 字段允许添加
|
|
||||||
// edit: true, // 字段允许修改
|
|
||||||
// width: "70px",
|
|
||||||
// setting: {
|
|
||||||
// datasource: [
|
|
||||||
// { text: "初", value: "初" },
|
|
||||||
// { text: "高", value: "高" },
|
|
||||||
// { text: "小", value: "小" }
|
|
||||||
// ]
|
|
||||||
// }
|
|
||||||
// },
|
|
||||||
// GraduationYear: {
|
|
||||||
// label: "届",
|
|
||||||
// search: false,
|
|
||||||
// add: true, // 字段允许添加
|
|
||||||
// edit: true, // 字段允许修改
|
|
||||||
// width: "80px"
|
|
||||||
// },
|
|
||||||
type: {
|
type: {
|
||||||
label: "类型",
|
label: "类型",
|
||||||
rules: ruleRequired,
|
|
||||||
// width: "150px",
|
|
||||||
type: "dropdown",
|
type: "dropdown",
|
||||||
search: true,
|
search: {
|
||||||
add: true, // 字段允许添加
|
yes: true,
|
||||||
edit: true, // 字段允许修改
|
},
|
||||||
setting: {},
|
edit: {
|
||||||
|
add: true,
|
||||||
|
edit: true,
|
||||||
|
rules: ruleRequired,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
// createTime: {
|
|
||||||
// label: "创建时间",
|
|
||||||
// width: "180px",
|
|
||||||
// type: "datetime",
|
|
||||||
// search: true,
|
|
||||||
// add: false, // 字段允许添加
|
|
||||||
// edit: false // 字段允许修改
|
|
||||||
// },
|
|
||||||
// remark: {
|
|
||||||
// label: "备注",
|
|
||||||
// type: "textarea",
|
|
||||||
// editRows: 3,
|
|
||||||
// search: false,
|
|
||||||
// add: true, // 字段允许添加
|
|
||||||
// edit: true // 字段允许修改
|
|
||||||
// }
|
|
||||||
},
|
},
|
||||||
data: [],
|
data: [],
|
||||||
pageData: {
|
pageData: {
|
||||||
total: 0,
|
total: 0,
|
||||||
},
|
},
|
||||||
selectRows: [],
|
selectRows: [],
|
||||||
};
|
});
|
||||||
|
|
||||||
const showTable = ref(false);
|
const showTable = ref(false);
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,11 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import ahTable from "@/components/hTable/index.vue";
|
import ahTable from "@/components/hTable/index.vue";
|
||||||
import { ConditionalType, TableConfig } from "@/components/hTable/hTable";
|
import {
|
||||||
|
ConditionalType,
|
||||||
|
intTableData,
|
||||||
|
TableColumnSearch,
|
||||||
|
TableConfig,
|
||||||
|
} from "@/components/hTable/hTable";
|
||||||
import { onMounted, ref, defineOptions } from "vue";
|
import { onMounted, ref, defineOptions } from "vue";
|
||||||
import { fa } from "element-plus/es/locales.mjs";
|
import { fa } from "element-plus/es/locales.mjs";
|
||||||
import { hTableAPI } from "@/api/hTable";
|
import { hTableAPI } from "@/api/hTable";
|
||||||
|
|
@ -21,7 +26,7 @@ const props = defineProps<{
|
||||||
|
|
||||||
function searchCallback(data) {}
|
function searchCallback(data) {}
|
||||||
const table = ref<{ initTable: (config: TableConfig) => void }>();
|
const table = ref<{ initTable: (config: TableConfig) => void }>();
|
||||||
const tableData: TableConfig = {
|
const tableData: TableConfig = intTableData({
|
||||||
apiUrl: ControllerName,
|
apiUrl: ControllerName,
|
||||||
selectColumn: false, // 列表选择
|
selectColumn: false, // 列表选择
|
||||||
border: false, // 是否显示表格边框
|
border: false, // 是否显示表格边框
|
||||||
|
|
@ -75,33 +80,22 @@ const tableData: TableConfig = {
|
||||||
// 行数据
|
// 行数据
|
||||||
schoolName: {
|
schoolName: {
|
||||||
label: "学校",
|
label: "学校",
|
||||||
search: true,
|
|
||||||
searchType: ConditionalType.Like, // 搜索类型
|
|
||||||
add: false, // 字段允许添加
|
|
||||||
edit: false, // 字段允许修改
|
|
||||||
width: "180px",
|
width: "180px",
|
||||||
|
search: new TableColumnSearch(true, ConditionalType.Like),
|
||||||
},
|
},
|
||||||
grade: {
|
grade: {
|
||||||
label: "年级",
|
label: "年级",
|
||||||
width: "100px",
|
width: "100px",
|
||||||
search: true,
|
search: new TableColumnSearch(true),
|
||||||
add: false, // 字段允许添加
|
|
||||||
edit: false, // 字段允许修改
|
|
||||||
},
|
},
|
||||||
className: {
|
className: {
|
||||||
label: "班级",
|
label: "班级",
|
||||||
width: "150px",
|
width: "150px",
|
||||||
search: true,
|
search: new TableColumnSearch(true, ConditionalType.Like),
|
||||||
searchType: ConditionalType.Like, // 搜索类型
|
|
||||||
add: false, // 字段允许添加
|
|
||||||
edit: false, // 字段允许修改
|
|
||||||
},
|
},
|
||||||
peopleCount: {
|
peopleCount: {
|
||||||
label: "参考人数",
|
label: "参考人数",
|
||||||
width: "100px",
|
width: "100px",
|
||||||
search: false,
|
|
||||||
add: false, // 字段允许添加
|
|
||||||
edit: false, // 字段允许修改
|
|
||||||
},
|
},
|
||||||
// entryPerson: {
|
// entryPerson: {
|
||||||
// label: "录入人",
|
// label: "录入人",
|
||||||
|
|
@ -113,9 +107,6 @@ const tableData: TableConfig = {
|
||||||
createTime: {
|
createTime: {
|
||||||
label: "录入时间",
|
label: "录入时间",
|
||||||
width: "200px",
|
width: "200px",
|
||||||
search: false,
|
|
||||||
add: false, // 字段允许添加
|
|
||||||
edit: false, // 字段允许修改
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
data: [],
|
data: [],
|
||||||
|
|
@ -123,7 +114,7 @@ const tableData: TableConfig = {
|
||||||
total: 0,
|
total: 0,
|
||||||
},
|
},
|
||||||
selectRows: [],
|
selectRows: [],
|
||||||
};
|
});
|
||||||
|
|
||||||
async function deleteInfo(o, row, c) {
|
async function deleteInfo(o, row, c) {
|
||||||
try {
|
try {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,11 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import ahTable from "@/components/hTable/index.vue";
|
import ahTable from "@/components/hTable/index.vue";
|
||||||
import { ConditionalType, TableConfig } from "@/components/hTable/hTable";
|
import {
|
||||||
|
ConditionalType,
|
||||||
|
intTableData,
|
||||||
|
TableColumnSearch,
|
||||||
|
TableConfig,
|
||||||
|
} from "@/components/hTable/hTable";
|
||||||
import { onMounted, ref } from "vue";
|
import { onMounted, ref } from "vue";
|
||||||
import { fa } from "element-plus/es/locales.mjs";
|
import { fa } from "element-plus/es/locales.mjs";
|
||||||
import { hTableAPI } from "@/api/hTable";
|
import { hTableAPI } from "@/api/hTable";
|
||||||
|
|
@ -18,7 +23,7 @@ const props = defineProps<{
|
||||||
|
|
||||||
function searchCallback(data) {}
|
function searchCallback(data) {}
|
||||||
const table = ref<{ initTable: (config: TableConfig) => void }>();
|
const table = ref<{ initTable: (config: TableConfig) => void }>();
|
||||||
const tableData: TableConfig = {
|
const tableData: TableConfig = intTableData({
|
||||||
apiUrl: ControllerName,
|
apiUrl: ControllerName,
|
||||||
selectColumn: false, // 列表选择
|
selectColumn: false, // 列表选择
|
||||||
border: false, // 是否显示表格边框
|
border: false, // 是否显示表格边框
|
||||||
|
|
@ -53,52 +58,39 @@ const tableData: TableConfig = {
|
||||||
// 行数据
|
// 行数据
|
||||||
schoolName: {
|
schoolName: {
|
||||||
label: "学校",
|
label: "学校",
|
||||||
search: true,
|
|
||||||
searchType: ConditionalType.Like, // 搜索类型
|
|
||||||
add: false, // 字段允许添加
|
|
||||||
edit: false, // 字段允许修改
|
|
||||||
width: "180px",
|
width: "180px",
|
||||||
|
search: new TableColumnSearch(true, ConditionalType.Like),
|
||||||
},
|
},
|
||||||
grade: {
|
grade: {
|
||||||
label: "年级",
|
label: "年级",
|
||||||
width: "120px",
|
width: "120px",
|
||||||
// custom: (s) => `${s.gradeLevel}${s.gradeYear}`,
|
search: new TableColumnSearch(true),
|
||||||
search: true,
|
|
||||||
add: false, // 字段允许添加
|
|
||||||
edit: false, // 字段允许修改
|
|
||||||
},
|
},
|
||||||
className: {
|
className: {
|
||||||
label: "班级",
|
label: "班级",
|
||||||
width: "80px",
|
width: "80px",
|
||||||
search: true,
|
search: new TableColumnSearch(true, ConditionalType.Like),
|
||||||
searchType: ConditionalType.Like, // 搜索类型
|
|
||||||
add: false, // 字段允许添加
|
|
||||||
edit: false, // 字段允许修改
|
|
||||||
},
|
},
|
||||||
examName: {
|
examName: {
|
||||||
label: "最近考试",
|
label: "最近考试",
|
||||||
width: "200px",
|
width: "200px",
|
||||||
search: false,
|
|
||||||
},
|
},
|
||||||
peopleCount: {
|
peopleCount: {
|
||||||
label: "参考人数",
|
label: "参考人数",
|
||||||
width: "100px",
|
width: "100px",
|
||||||
search: false,
|
|
||||||
},
|
},
|
||||||
onLineCount: {
|
onLineCount: {
|
||||||
label: "重本人数",
|
label: "重本人数",
|
||||||
width: "100px",
|
width: "100px",
|
||||||
search: false,
|
|
||||||
},
|
},
|
||||||
onLineRate: {
|
onLineRate: {
|
||||||
label: "重本率",
|
label: "重本率",
|
||||||
width: "100px",
|
width: "100px",
|
||||||
custom: (row) => `${row.onLineRate * 100}%`,
|
custom: (row) => `${row.onLineRate * 100}%`,
|
||||||
search: false,
|
|
||||||
},
|
},
|
||||||
onLineRanking: {
|
onLineRanking: {
|
||||||
label: "重本率排名",
|
label: "重本率排名",
|
||||||
search: false,
|
width: "100px",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
data: [],
|
data: [],
|
||||||
|
|
@ -106,7 +98,7 @@ const tableData: TableConfig = {
|
||||||
total: 0,
|
total: 0,
|
||||||
},
|
},
|
||||||
selectRows: [],
|
selectRows: [],
|
||||||
};
|
});
|
||||||
|
|
||||||
const showTable = ref(false);
|
const showTable = ref(false);
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,11 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import ahTable from "@/components/hTable/index.vue";
|
import ahTable from "@/components/hTable/index.vue";
|
||||||
import { ConditionalType, TableConfig } from "@/components/hTable/hTable";
|
import {
|
||||||
|
ConditionalType,
|
||||||
|
intTableData,
|
||||||
|
TableColumnSearch,
|
||||||
|
TableConfig,
|
||||||
|
} from "@/components/hTable/hTable";
|
||||||
import { onMounted, ref, defineOptions } from "vue";
|
import { onMounted, ref, defineOptions } from "vue";
|
||||||
import { fa } from "element-plus/es/locales.mjs";
|
import { fa } from "element-plus/es/locales.mjs";
|
||||||
import { hTableAPI } from "@/api/hTable";
|
import { hTableAPI } from "@/api/hTable";
|
||||||
|
|
@ -22,7 +27,7 @@ const props = defineProps<{
|
||||||
|
|
||||||
function searchCallback(data) {}
|
function searchCallback(data) {}
|
||||||
const table = ref<{ initTable: (config: TableConfig) => void }>();
|
const table = ref<{ initTable: (config: TableConfig) => void }>();
|
||||||
const tableData: TableConfig = {
|
const tableData: TableConfig = intTableData({
|
||||||
apiUrl: `ExamClassInfo`,
|
apiUrl: `ExamClassInfo`,
|
||||||
selectColumn: false, // 列表选择
|
selectColumn: false, // 列表选择
|
||||||
border: false, // 是否显示表格边框
|
border: false, // 是否显示表格边框
|
||||||
|
|
@ -63,76 +68,63 @@ const tableData: TableConfig = {
|
||||||
// 行数据
|
// 行数据
|
||||||
examName: {
|
examName: {
|
||||||
label: "考试名称",
|
label: "考试名称",
|
||||||
search: true,
|
|
||||||
width: "150px",
|
width: "150px",
|
||||||
|
search: new TableColumnSearch(true),
|
||||||
},
|
},
|
||||||
type: {
|
type: {
|
||||||
label: "考试类型",
|
label: "考试类型",
|
||||||
search: true,
|
|
||||||
type: "dropdown",
|
|
||||||
setting: {},
|
|
||||||
width: "80px",
|
width: "80px",
|
||||||
|
type: "dropdown",
|
||||||
|
search: new TableColumnSearch(true),
|
||||||
},
|
},
|
||||||
testPaperType: {
|
testPaperType: {
|
||||||
label: "试卷类型",
|
label: "试卷类型",
|
||||||
search: true,
|
|
||||||
type: "dropdown",
|
|
||||||
setting: {},
|
|
||||||
width: "80px",
|
width: "80px",
|
||||||
|
type: "dropdown",
|
||||||
|
search: new TableColumnSearch(true),
|
||||||
},
|
},
|
||||||
grade: {
|
grade: {
|
||||||
label: "年级",
|
label: "年级",
|
||||||
search: true,
|
|
||||||
// type: "dropdown",
|
|
||||||
// setting: {},
|
|
||||||
width: "60px",
|
width: "60px",
|
||||||
|
search: new TableColumnSearch(true),
|
||||||
},
|
},
|
||||||
|
|
||||||
onLineCount: {
|
onLineCount: {
|
||||||
label: "重本人数",
|
label: "重本人数",
|
||||||
search: false,
|
|
||||||
width: "80px",
|
width: "80px",
|
||||||
},
|
},
|
||||||
onLineRate: {
|
onLineRate: {
|
||||||
label: "重本率",
|
label: "重本率",
|
||||||
search: false,
|
|
||||||
custom: (row) => `${Math.round(row.onLineRate * 100)}%`,
|
custom: (row) => `${Math.round(row.onLineRate * 100)}%`,
|
||||||
width: "80px",
|
width: "80px",
|
||||||
},
|
},
|
||||||
onLineRanking: {
|
onLineRanking: {
|
||||||
label: "重本率排名",
|
label: "重本率排名",
|
||||||
search: false,
|
|
||||||
width: "100px",
|
width: "100px",
|
||||||
},
|
},
|
||||||
maxScore: {
|
maxScore: {
|
||||||
label: "最高分[赋分]",
|
label: "最高分[赋分]",
|
||||||
search: false,
|
|
||||||
width: "140px",
|
width: "140px",
|
||||||
},
|
},
|
||||||
minScore: {
|
minScore: {
|
||||||
label: "最低分[赋分]",
|
label: "最低分[赋分]",
|
||||||
search: false,
|
|
||||||
width: "140px",
|
width: "140px",
|
||||||
},
|
},
|
||||||
average: {
|
average: {
|
||||||
label: "总平均分[赋分]",
|
label: "总平均分[赋分]",
|
||||||
search: false,
|
|
||||||
custom: (row) => `${Math.round(row.average)}`,
|
custom: (row) => `${Math.round(row.average)}`,
|
||||||
width: "140px",
|
width: "140px",
|
||||||
},
|
},
|
||||||
average1: {
|
average1: {
|
||||||
label: "资源校平均分[赋分]",
|
label: "资源校平均分[赋分]",
|
||||||
search: false,
|
|
||||||
width: "160px",
|
width: "160px",
|
||||||
},
|
},
|
||||||
averageRank: {
|
averageRank: {
|
||||||
label: "总平均分排名",
|
label: "总平均分排名",
|
||||||
search: false,
|
|
||||||
width: "110px",
|
width: "110px",
|
||||||
},
|
},
|
||||||
rank: {
|
rank: {
|
||||||
label: "远端平均/资源校平均",
|
label: "远端平均/资源校平均",
|
||||||
search: false,
|
|
||||||
width: "95px",
|
width: "95px",
|
||||||
custom: (row) =>
|
custom: (row) =>
|
||||||
`${
|
`${
|
||||||
|
|
@ -147,7 +139,7 @@ const tableData: TableConfig = {
|
||||||
total: 0,
|
total: 0,
|
||||||
},
|
},
|
||||||
selectRows: [],
|
selectRows: [],
|
||||||
};
|
});
|
||||||
|
|
||||||
const showTable = ref(false);
|
const showTable = ref(false);
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,11 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import ahTable from "@/components/hTable/index.vue";
|
import ahTable from "@/components/hTable/index.vue";
|
||||||
import { ConditionalType, TableConfig } from "@/components/hTable/hTable";
|
import {
|
||||||
|
ConditionalType,
|
||||||
|
intTableData,
|
||||||
|
TableColumnSearch,
|
||||||
|
TableConfig,
|
||||||
|
} from "@/components/hTable/hTable";
|
||||||
import { onMounted, ref } from "vue";
|
import { onMounted, ref } from "vue";
|
||||||
import { fa } from "element-plus/es/locales.mjs";
|
import { fa } from "element-plus/es/locales.mjs";
|
||||||
import { hTableAPI } from "@/api/hTable";
|
import { hTableAPI } from "@/api/hTable";
|
||||||
|
|
@ -24,7 +29,7 @@ defineOptions({
|
||||||
function searchCallback(data) {}
|
function searchCallback(data) {}
|
||||||
|
|
||||||
const table = ref<{ initTable: (config: TableConfig) => void }>();
|
const table = ref<{ initTable: (config: TableConfig) => void }>();
|
||||||
const tableData: TableConfig = {
|
const tableData: TableConfig = intTableData({
|
||||||
apiUrl: ControllerName,
|
apiUrl: ControllerName,
|
||||||
selectColumn: false, // 列表选择
|
selectColumn: false, // 列表选择
|
||||||
border: false, // 是否显示表格边框
|
border: false, // 是否显示表格边框
|
||||||
|
|
@ -92,81 +97,85 @@ const tableData: TableConfig = {
|
||||||
// 行数据
|
// 行数据
|
||||||
id: {
|
id: {
|
||||||
label: "编号",
|
label: "编号",
|
||||||
search: true,
|
search: new TableColumnSearch(true),
|
||||||
add: false, // 字段允许添加
|
|
||||||
edit: false, // 字段允许修改
|
|
||||||
width: "150px",
|
width: "150px",
|
||||||
},
|
},
|
||||||
name: {
|
name: {
|
||||||
label: "考试名称",
|
label: "考试名称",
|
||||||
rules: ruleRequired,
|
|
||||||
width: "200px",
|
width: "200px",
|
||||||
search: true,
|
search: new TableColumnSearch(true, ConditionalType.Like), // 搜索
|
||||||
searchType: ConditionalType.Like, // 搜索类型
|
edit: {
|
||||||
add: true, // 字段允许添加
|
add: true,
|
||||||
edit: true, // 字段允许修改
|
edit: true,
|
||||||
setting: {},
|
rules: ruleRequired,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
grade: {
|
grade: {
|
||||||
label: "年级",
|
label: "年级",
|
||||||
rules: ruleRequiredGrade,
|
|
||||||
width: "100px",
|
width: "100px",
|
||||||
search: true,
|
search: new TableColumnSearch(true),
|
||||||
add: true, // 字段允许添加
|
edit: {
|
||||||
edit: false, // 字段允许修改
|
add: true,
|
||||||
|
edit: false,
|
||||||
|
rules: ruleRequiredGrade,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
testPaperType: {
|
testPaperType: {
|
||||||
label: "试卷类型",
|
label: "试卷类型",
|
||||||
rules: ruleRequired,
|
|
||||||
width: "100px",
|
width: "100px",
|
||||||
type: "dropdown",
|
type: "dropdown",
|
||||||
setting: {},
|
search: new TableColumnSearch(true),
|
||||||
search: true,
|
edit: {
|
||||||
add: true, // 字段允许添加
|
add: true,
|
||||||
edit: true, // 字段允许修改
|
edit: true,
|
||||||
|
rules: ruleRequired,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
type: {
|
type: {
|
||||||
label: "考试类型",
|
label: "考试类型",
|
||||||
rules: ruleRequired,
|
|
||||||
width: "100px",
|
width: "100px",
|
||||||
type: "dropdown",
|
type: "dropdown",
|
||||||
setting: {},
|
search: new TableColumnSearch(true),
|
||||||
search: true,
|
edit: {
|
||||||
add: true, // 字段允许添加
|
add: true,
|
||||||
edit: true, // 字段允许修改
|
edit: true,
|
||||||
|
rules: ruleRequired,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
scoreLine: {
|
scoreLine: {
|
||||||
label: "划线分数",
|
label: "划线分数",
|
||||||
rules: ruleNumber,
|
|
||||||
search: false,
|
|
||||||
width: "100px",
|
width: "100px",
|
||||||
add: true, // 字段允许添加
|
edit: {
|
||||||
edit: true, // 字段允许修改
|
add: true,
|
||||||
|
edit: true,
|
||||||
|
rules: ruleNumber,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
baseSchoolScore: {
|
baseSchoolScore: {
|
||||||
label: "资源校平均分",
|
label: "资源校平均分",
|
||||||
rules: ruleNumber,
|
|
||||||
search: false,
|
|
||||||
width: "150px",
|
width: "150px",
|
||||||
add: true, // 字段允许添加
|
edit: {
|
||||||
edit: true, // 字段允许修改
|
add: true,
|
||||||
|
edit: true,
|
||||||
|
rules: ruleNumber,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
startTime: {
|
startTime: {
|
||||||
label: "考试时间",
|
label: "考试时间",
|
||||||
width: "210px",
|
width: "210px",
|
||||||
rules: ruleRequired,
|
|
||||||
search: true,
|
|
||||||
type: "datetime",
|
type: "datetime",
|
||||||
setting: {},
|
custom: (row) => row.startTime?.replace("T", " ").substring(0, 10) ?? "",
|
||||||
add: true, // 字段允许添加
|
search: new TableColumnSearch(true),
|
||||||
edit: true, // 字段允许修改
|
edit: {
|
||||||
|
add: true,
|
||||||
|
edit: true,
|
||||||
|
rules: ruleRequired,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
createTime: {
|
createTime: {
|
||||||
label: "创建时间",
|
label: "创建时间",
|
||||||
type: "datetime",
|
type: "datetime",
|
||||||
search: false,
|
custom: (row) => row.startTime?.replace("T", " ").substring(0, 10) ?? "",
|
||||||
add: false, // 字段允许添加
|
|
||||||
edit: false, // 字段允许修改
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
data: [],
|
data: [],
|
||||||
|
|
@ -174,7 +183,7 @@ const tableData: TableConfig = {
|
||||||
total: 0,
|
total: 0,
|
||||||
},
|
},
|
||||||
selectRows: [],
|
selectRows: [],
|
||||||
};
|
});
|
||||||
|
|
||||||
function DwImportTemplate(obj, row, callBack) {
|
function DwImportTemplate(obj, row, callBack) {
|
||||||
const baseUrl = import.meta.env.VITE_API_BASEURL;
|
const baseUrl = import.meta.env.VITE_API_BASEURL;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,11 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import ahTable from "@/components/hTable/index.vue";
|
import ahTable from "@/components/hTable/index.vue";
|
||||||
import { ConditionalType, TableConfig } from "@/components/hTable/hTable";
|
import {
|
||||||
|
ConditionalType,
|
||||||
|
intTableData,
|
||||||
|
TableColumnSearch,
|
||||||
|
TableConfig,
|
||||||
|
} from "@/components/hTable/hTable";
|
||||||
import { onMounted, ref } from "vue";
|
import { onMounted, ref } from "vue";
|
||||||
import { fa } from "element-plus/es/locales.mjs";
|
import { fa } from "element-plus/es/locales.mjs";
|
||||||
import { hTableAPI } from "@/api/hTable";
|
import { hTableAPI } from "@/api/hTable";
|
||||||
|
|
@ -18,7 +23,7 @@ const props = defineProps<{
|
||||||
|
|
||||||
function searchCallback(data) {}
|
function searchCallback(data) {}
|
||||||
const table = ref<{ initTable: (config: TableConfig) => void }>();
|
const table = ref<{ initTable: (config: TableConfig) => void }>();
|
||||||
const tableData: TableConfig = {
|
const tableData: TableConfig = intTableData({
|
||||||
apiUrl: ControllerName,
|
apiUrl: ControllerName,
|
||||||
selectColumn: false, // 列表选择
|
selectColumn: false, // 列表选择
|
||||||
border: false, // 是否显示表格边框
|
border: false, // 是否显示表格边框
|
||||||
|
|
@ -44,26 +49,6 @@ const tableData: TableConfig = {
|
||||||
},
|
},
|
||||||
operationColumn: true, // 显示操作按钮
|
operationColumn: true, // 显示操作按钮
|
||||||
operationColumnData: [
|
operationColumnData: [
|
||||||
{
|
|
||||||
// 操作按钮
|
|
||||||
topBtn: true, // 是头部按钮
|
|
||||||
label: "成绩升序",
|
|
||||||
btnStyle: "primary",
|
|
||||||
click: (o, r, c) => {
|
|
||||||
tableData.search.OrderByType = 1;
|
|
||||||
c();
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
// 操作按钮
|
|
||||||
topBtn: true, // 是头部按钮
|
|
||||||
label: "成绩降序",
|
|
||||||
btnStyle: "primary",
|
|
||||||
click: (o, r, c) => {
|
|
||||||
tableData.search.OrderByType = 0;
|
|
||||||
c();
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
topBtn: false, // 头部按钮
|
topBtn: false, // 头部按钮
|
||||||
label: "个人详情",
|
label: "个人详情",
|
||||||
|
|
@ -81,72 +66,61 @@ const tableData: TableConfig = {
|
||||||
// 行数据
|
// 行数据
|
||||||
userName: {
|
userName: {
|
||||||
label: "姓名",
|
label: "姓名",
|
||||||
search: true,
|
|
||||||
searchType: ConditionalType.Like, // 搜索类型
|
|
||||||
width: "180px",
|
width: "180px",
|
||||||
|
search: new TableColumnSearch(true, ConditionalType.Like),
|
||||||
},
|
},
|
||||||
语文: {
|
语文: {
|
||||||
label: "语文",
|
label: "语文",
|
||||||
search: false,
|
|
||||||
width: "100px",
|
width: "100px",
|
||||||
custom: (row) => row.subjectDic.语文,
|
custom: (row) => row.subjectDic.语文,
|
||||||
|
search: { sort: true },
|
||||||
},
|
},
|
||||||
数学: {
|
数学: {
|
||||||
label: "数学",
|
label: "数学",
|
||||||
search: false,
|
|
||||||
width: "100px",
|
width: "100px",
|
||||||
custom: (row) => row.subjectDic.数学,
|
custom: (row) => row.subjectDic.数学,
|
||||||
},
|
},
|
||||||
英语: {
|
英语: {
|
||||||
label: "英语",
|
label: "英语",
|
||||||
search: false,
|
|
||||||
width: "100px",
|
width: "100px",
|
||||||
custom: (row) => row.subjectDic.英语,
|
custom: (row) => row.subjectDic.英语,
|
||||||
},
|
},
|
||||||
物理: {
|
物理: {
|
||||||
label: "物理",
|
label: "物理",
|
||||||
search: false,
|
|
||||||
width: "100px",
|
width: "100px",
|
||||||
custom: (row) => row.subjectDic.物理,
|
custom: (row) => row.subjectDic.物理,
|
||||||
},
|
},
|
||||||
化学: {
|
化学: {
|
||||||
label: "化学",
|
label: "化学",
|
||||||
search: false,
|
|
||||||
width: "100px",
|
width: "100px",
|
||||||
custom: (row) => row.subjectDic.化学,
|
custom: (row) => row.subjectDic.化学,
|
||||||
},
|
},
|
||||||
生物: {
|
生物: {
|
||||||
label: "生物",
|
label: "生物",
|
||||||
search: false,
|
|
||||||
width: "100px",
|
width: "100px",
|
||||||
custom: (row) => row.subjectDic.生物,
|
custom: (row) => row.subjectDic.生物,
|
||||||
},
|
},
|
||||||
政治: {
|
政治: {
|
||||||
label: "政治",
|
label: "政治",
|
||||||
search: false,
|
|
||||||
width: "100px",
|
width: "100px",
|
||||||
custom: (row) => row.subjectDic.政治,
|
custom: (row) => row.subjectDic.政治,
|
||||||
},
|
},
|
||||||
历史: {
|
历史: {
|
||||||
label: "历史",
|
label: "历史",
|
||||||
search: false,
|
|
||||||
width: "100px",
|
width: "100px",
|
||||||
custom: (row) => row.subjectDic.历史,
|
custom: (row) => row.subjectDic.历史,
|
||||||
},
|
},
|
||||||
地理: {
|
地理: {
|
||||||
label: "地理",
|
label: "地理",
|
||||||
search: false,
|
|
||||||
width: "100px",
|
width: "100px",
|
||||||
custom: (row) => row.subjectDic.地理 ?? "--",
|
custom: (row) => row.subjectDic.地理 ?? "--",
|
||||||
},
|
},
|
||||||
assignScore: {
|
assignScore: {
|
||||||
label: "赋分总分",
|
label: "赋分总分",
|
||||||
search: false,
|
|
||||||
width: "180px",
|
width: "180px",
|
||||||
},
|
},
|
||||||
assignRanking: {
|
assignRanking: {
|
||||||
label: "赋分后的排名",
|
label: "赋分后的排名",
|
||||||
search: false,
|
|
||||||
width: "200px",
|
width: "200px",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
@ -155,12 +129,11 @@ const tableData: TableConfig = {
|
||||||
total: 0,
|
total: 0,
|
||||||
},
|
},
|
||||||
selectRows: [],
|
selectRows: [],
|
||||||
};
|
});
|
||||||
|
|
||||||
const showTable = ref(false);
|
const showTable = ref(false);
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
//初始化数据原
|
//初始化数据原
|
||||||
|
|
||||||
showTable.value = true;
|
showTable.value = true;
|
||||||
});
|
});
|
||||||
const exam = props.data[0];
|
const exam = props.data[0];
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,11 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import ahTable from "@/components/hTable/index.vue";
|
import ahTable from "@/components/hTable/index.vue";
|
||||||
import { ConditionalType, TableConfig } from "@/components/hTable/hTable";
|
import {
|
||||||
|
ConditionalType,
|
||||||
|
intTableData,
|
||||||
|
TableColumnSearch,
|
||||||
|
TableConfig,
|
||||||
|
} from "@/components/hTable/hTable";
|
||||||
import { onMounted, ref } from "vue";
|
import { onMounted, ref } from "vue";
|
||||||
import { fa } from "element-plus/es/locales.mjs";
|
import { fa } from "element-plus/es/locales.mjs";
|
||||||
import { hTableAPI } from "@/api/hTable";
|
import { hTableAPI } from "@/api/hTable";
|
||||||
|
|
@ -19,7 +24,7 @@ const props = defineProps<{
|
||||||
|
|
||||||
function searchCallback(data) {}
|
function searchCallback(data) {}
|
||||||
const table = ref<{ initTable: (config: TableConfig) => void }>();
|
const table = ref<{ initTable: (config: TableConfig) => void }>();
|
||||||
const tableData: TableConfig = {
|
const tableData: TableConfig = intTableData({
|
||||||
apiUrl: ControllerName,
|
apiUrl: ControllerName,
|
||||||
selectColumn: false, // 列表选择
|
selectColumn: false, // 列表选择
|
||||||
border: false, // 是否显示表格边框
|
border: false, // 是否显示表格边框
|
||||||
|
|
@ -28,7 +33,7 @@ const tableData: TableConfig = {
|
||||||
// 查询条件
|
// 查询条件
|
||||||
show: true,
|
show: true,
|
||||||
PageIndex: 0,
|
PageIndex: 0,
|
||||||
PageSize: 60,
|
PageSize: 999,
|
||||||
OrderBy: "Id", // 排序
|
OrderBy: "Id", // 排序
|
||||||
OrderByType: 1,
|
OrderByType: 1,
|
||||||
defaultConditions: [
|
defaultConditions: [
|
||||||
|
|
@ -45,94 +50,80 @@ const tableData: TableConfig = {
|
||||||
// 行数据
|
// 行数据
|
||||||
examName: {
|
examName: {
|
||||||
label: "考试名称",
|
label: "考试名称",
|
||||||
search: true,
|
search: new TableColumnSearch(true, ConditionalType.Like),
|
||||||
searchType: ConditionalType.Like, // 搜索类型
|
|
||||||
width: "180px",
|
width: "180px",
|
||||||
},
|
},
|
||||||
// 行数据
|
// 行数据
|
||||||
type: {
|
type: {
|
||||||
label: "考试类型",
|
label: "考试类型",
|
||||||
search: true,
|
|
||||||
type: "dropdown",
|
|
||||||
setting: {},
|
|
||||||
width: "150px",
|
width: "150px",
|
||||||
|
type: "dropdown",
|
||||||
|
search: new TableColumnSearch(true),
|
||||||
},
|
},
|
||||||
// 行数据
|
// 行数据
|
||||||
grade: {
|
grade: {
|
||||||
label: "考试阶段",
|
label: "考试阶段",
|
||||||
search: true,
|
|
||||||
searchType: ConditionalType.Like, // 搜索类型
|
|
||||||
width: "120px",
|
width: "120px",
|
||||||
|
search: new TableColumnSearch(true, ConditionalType.Like),
|
||||||
}, // 行数据
|
}, // 行数据
|
||||||
testPaperType: {
|
testPaperType: {
|
||||||
label: "试卷类型",
|
label: "试卷类型",
|
||||||
search: true,
|
|
||||||
type: "dropdown",
|
|
||||||
setting: {},
|
|
||||||
width: "150px",
|
width: "150px",
|
||||||
|
type: "dropdown",
|
||||||
|
search: new TableColumnSearch(true),
|
||||||
},
|
},
|
||||||
语文: {
|
语文: {
|
||||||
label: "语文",
|
label: "语文",
|
||||||
search: false,
|
|
||||||
width: "80px",
|
width: "80px",
|
||||||
custom: (row) => row.subjectDic.语文 ?? "--",
|
custom: (row) => row.subjectDic.语文 ?? "--",
|
||||||
|
search: { sort: true },
|
||||||
},
|
},
|
||||||
数学: {
|
数学: {
|
||||||
label: "数学",
|
label: "数学",
|
||||||
search: false,
|
|
||||||
width: "80px",
|
width: "80px",
|
||||||
custom: (row) => row.subjectDic.数学 ?? "--",
|
custom: (row) => row.subjectDic.数学 ?? "--",
|
||||||
},
|
},
|
||||||
英语: {
|
英语: {
|
||||||
label: "英语",
|
label: "英语",
|
||||||
search: false,
|
|
||||||
width: "80px",
|
width: "80px",
|
||||||
custom: (row) => row.subjectDic.英语 ?? "--",
|
custom: (row) => row.subjectDic.英语 ?? "--",
|
||||||
},
|
},
|
||||||
物理: {
|
物理: {
|
||||||
label: "物理",
|
label: "物理",
|
||||||
search: false,
|
|
||||||
width: "80px",
|
width: "80px",
|
||||||
custom: (row) => row.subjectDic.物理 ?? "--",
|
custom: (row) => row.subjectDic.物理 ?? "--",
|
||||||
},
|
},
|
||||||
化学: {
|
化学: {
|
||||||
label: "化学",
|
label: "化学",
|
||||||
search: false,
|
|
||||||
width: "80px",
|
width: "80px",
|
||||||
custom: (row) => row.subjectDic.化学 ?? "--",
|
custom: (row) => row.subjectDic.化学 ?? "--",
|
||||||
},
|
},
|
||||||
生物: {
|
生物: {
|
||||||
label: "生物",
|
label: "生物",
|
||||||
search: false,
|
|
||||||
width: "80px",
|
width: "80px",
|
||||||
custom: (row) => row.subjectDic.生物 ?? "--",
|
custom: (row) => row.subjectDic.生物 ?? "--",
|
||||||
},
|
},
|
||||||
政治: {
|
政治: {
|
||||||
label: "政治",
|
label: "政治",
|
||||||
search: false,
|
|
||||||
width: "80px",
|
width: "80px",
|
||||||
custom: (row) => row.subjectDic.政治 ?? "--",
|
custom: (row) => row.subjectDic.政治 ?? "--",
|
||||||
},
|
},
|
||||||
历史: {
|
历史: {
|
||||||
label: "历史",
|
label: "历史",
|
||||||
search: false,
|
|
||||||
width: "80px",
|
width: "80px",
|
||||||
custom: (row) => row.subjectDic.历史 ?? "--",
|
custom: (row) => row.subjectDic.历史 ?? "--",
|
||||||
},
|
},
|
||||||
地理: {
|
地理: {
|
||||||
label: "地理",
|
label: "地理",
|
||||||
search: false,
|
|
||||||
width: "80px",
|
width: "80px",
|
||||||
custom: (row) => row.subjectDic.地理 ?? "--",
|
custom: (row) => row.subjectDic.地理 ?? "--",
|
||||||
},
|
},
|
||||||
assignScore: {
|
assignScore: {
|
||||||
label: "赋分总分",
|
label: "赋分总分",
|
||||||
search: false,
|
|
||||||
width: "80px",
|
width: "80px",
|
||||||
},
|
},
|
||||||
assignRanking: {
|
assignRanking: {
|
||||||
label: "赋分后的排名",
|
label: "赋分后的排名",
|
||||||
search: false,
|
|
||||||
width: "120px",
|
width: "120px",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
@ -141,7 +132,7 @@ const tableData: TableConfig = {
|
||||||
total: 0,
|
total: 0,
|
||||||
},
|
},
|
||||||
selectRows: [],
|
selectRows: [],
|
||||||
};
|
});
|
||||||
|
|
||||||
const showTable = ref(false);
|
const showTable = ref(false);
|
||||||
const exam = props.data[0];
|
const exam = props.data[0];
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ import { ruleRequired } from "@/utils/rules";
|
||||||
const ControllerName = "Grade";
|
const ControllerName = "Grade";
|
||||||
|
|
||||||
defineOptions({
|
defineOptions({
|
||||||
name: ControllerName
|
name: ControllerName,
|
||||||
});
|
});
|
||||||
|
|
||||||
const SchoolApi = new hTableAPI("usercenter/back/schools");
|
const SchoolApi = new hTableAPI("usercenter/back/schools");
|
||||||
|
|
@ -28,7 +28,7 @@ const tableData: TableConfig = {
|
||||||
PageSize: 20,
|
PageSize: 20,
|
||||||
OrderBy: "CreateTime", // 排序
|
OrderBy: "CreateTime", // 排序
|
||||||
defaultConditions: [], // 默认查询条件
|
defaultConditions: [], // 默认查询条件
|
||||||
Conditions: []
|
Conditions: [],
|
||||||
},
|
},
|
||||||
operationColumn: true, // 显示操作按钮
|
operationColumn: true, // 显示操作按钮
|
||||||
operationColumnData: [
|
operationColumnData: [
|
||||||
|
|
@ -36,92 +36,90 @@ const tableData: TableConfig = {
|
||||||
// 操作按钮
|
// 操作按钮
|
||||||
topBtn: false, // 是头部按钮
|
topBtn: false, // 是头部按钮
|
||||||
label: "修改",
|
label: "修改",
|
||||||
btnType: "edit" // 按钮类型 add edit del custom
|
btnType: "edit", // 按钮类型 add edit del custom
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
// 操作按钮
|
// 操作按钮
|
||||||
topBtn: true, // 是头部按钮
|
topBtn: true, // 是头部按钮
|
||||||
label: "添加",
|
label: "添加",
|
||||||
btnStyle: "success",
|
btnStyle: "success",
|
||||||
btnType: "add" // 按钮类型 add edit del custom
|
btnType: "add", // 按钮类型 add edit del custom
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
topBtn: false, // 头部按钮
|
topBtn: false, // 头部按钮
|
||||||
show: true,
|
show: true,
|
||||||
label: "删除",
|
label: "删除",
|
||||||
btnType: "del", // 按钮类型 add edit del 不设置则 自定义按钮
|
btnType: "del", // 按钮类型 add edit del 不设置则 自定义按钮
|
||||||
btnStyle: "danger" // topBtn: true才生效 success danger
|
btnStyle: "danger", // topBtn: true才生效 success danger
|
||||||
}
|
},
|
||||||
],
|
],
|
||||||
column: {
|
column: {
|
||||||
// 行数据
|
// // 行数据
|
||||||
id: {
|
// id: {
|
||||||
label: "编号",
|
// label: "编号",
|
||||||
search: true,
|
// search: true,
|
||||||
add: false, // 字段允许添加
|
// add: false, // 字段允许添加
|
||||||
edit: false, // 字段允许修改
|
// edit: false, // 字段允许修改
|
||||||
width: "150px"
|
// width: "150px"
|
||||||
},
|
// },
|
||||||
schoolId: {
|
// schoolId: {
|
||||||
label: "学校",
|
// label: "学校",
|
||||||
rules: ruleRequired,
|
// rules: ruleRequired,
|
||||||
width: "200px",
|
// width: "200px",
|
||||||
search: true,
|
// search: true,
|
||||||
type: "dropdown",
|
// type: "dropdown",
|
||||||
add: true, // 字段允许添加
|
// add: true, // 字段允许添加
|
||||||
edit: true, // 字段允许修改
|
// edit: true, // 字段允许修改
|
||||||
setting: {}
|
// setting: {}
|
||||||
},
|
// },
|
||||||
name: {
|
// name: {
|
||||||
label: "名称[动态]",
|
// label: "名称[动态]",
|
||||||
rules: ruleRequired,
|
// rules: ruleRequired,
|
||||||
width: "100px",
|
// width: "100px",
|
||||||
search: false,
|
// search: false,
|
||||||
searchType: ConditionalType.Like,
|
// searchType: ConditionalType.Like,
|
||||||
add: false, // 字段允许添加
|
// add: false, // 字段允许添加
|
||||||
edit: false // 字段允许修改
|
// edit: false // 字段允许修改
|
||||||
},
|
// },
|
||||||
level: {
|
// level: {
|
||||||
label: "年级",
|
// label: "年级",
|
||||||
rules: ruleRequired,
|
// rules: ruleRequired,
|
||||||
width: "80px",
|
// width: "80px",
|
||||||
type: "dropdown",
|
// type: "dropdown",
|
||||||
search: true,
|
// search: true,
|
||||||
setting: {},
|
// setting: {},
|
||||||
add: true, // 字段允许添加
|
// add: true, // 字段允许添加
|
||||||
edit: true // 字段允许修改
|
// edit: true // 字段允许修改
|
||||||
},
|
// },
|
||||||
year: {
|
// year: {
|
||||||
label: "毕业届",
|
// label: "毕业届",
|
||||||
width: "80px",
|
// width: "80px",
|
||||||
rules: ruleRequired,
|
// rules: ruleRequired,
|
||||||
search: true,
|
// search: true,
|
||||||
setting: {},
|
// setting: {},
|
||||||
add: true, // 字段允许添加
|
// add: true, // 字段允许添加
|
||||||
edit: true // 字段允许修改
|
// edit: true // 字段允许修改
|
||||||
},
|
// },
|
||||||
createTime: {
|
// createTime: {
|
||||||
label: "创建时间",
|
// label: "创建时间",
|
||||||
type: "datetime",
|
// type: "datetime",
|
||||||
search: true,
|
// search: true,
|
||||||
add: false, // 字段允许添加
|
// add: false, // 字段允许添加
|
||||||
edit: false // 字段允许修改
|
// edit: false // 字段允许修改
|
||||||
}
|
// }
|
||||||
},
|
},
|
||||||
data: [],
|
data: [],
|
||||||
pageData: {
|
pageData: {
|
||||||
total: 0
|
total: 0,
|
||||||
},
|
},
|
||||||
selectRows: []
|
selectRows: [],
|
||||||
};
|
};
|
||||||
|
|
||||||
const showTable = ref(false);
|
const showTable = ref(false);
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
//初始化数据原
|
//初始化数据原
|
||||||
|
|
||||||
tableData.column.level.setting.datasource = (
|
tableData.column.level.setting.datasource = (await getenum("GradeLevelEnum")).data;
|
||||||
await getenum("GradeLevelEnum")
|
|
||||||
).data;
|
|
||||||
|
|
||||||
tableData.column.schoolId.setting.datasource = (
|
tableData.column.schoolId.setting.datasource = (
|
||||||
await SchoolApi.querycombo({ TextName: "Name", ValueName: "Id" })
|
await SchoolApi.querycombo({ TextName: "Name", ValueName: "Id" })
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,11 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import ahTable from "@/components/hTable/index.vue";
|
import ahTable from "@/components/hTable/index.vue";
|
||||||
import { ConditionalType, TableConfig } from "@/components/hTable/hTable";
|
import {
|
||||||
|
ConditionalType,
|
||||||
|
intTableData,
|
||||||
|
TableColumnSearch,
|
||||||
|
TableConfig,
|
||||||
|
} from "@/components/hTable/hTable";
|
||||||
import { onMounted, ref } from "vue";
|
import { onMounted, ref } from "vue";
|
||||||
import { fa } from "element-plus/es/locales.mjs";
|
import { fa } from "element-plus/es/locales.mjs";
|
||||||
defineOptions({
|
defineOptions({
|
||||||
|
|
@ -12,7 +17,7 @@ function searchCallback(data) {
|
||||||
//let c = data.Conditions.find((s) => s.FieldName == "Pname");
|
//let c = data.Conditions.find((s) => s.FieldName == "Pname");
|
||||||
}
|
}
|
||||||
const table = ref<{ initTable: (config: TableConfig) => void }>(null);
|
const table = ref<{ initTable: (config: TableConfig) => void }>(null);
|
||||||
const tableData: TableConfig = {
|
const tableData: TableConfig = intTableData({
|
||||||
apiUrl: "usercenter/back/schools",
|
apiUrl: "usercenter/back/schools",
|
||||||
selectColumn: false, // 列表选择
|
selectColumn: false, // 列表选择
|
||||||
border: false, // 是否显示表格边框
|
border: false, // 是否显示表格边框
|
||||||
|
|
@ -52,34 +57,32 @@ const tableData: TableConfig = {
|
||||||
// 行数据
|
// 行数据
|
||||||
id: {
|
id: {
|
||||||
label: "编号",
|
label: "编号",
|
||||||
search: true,
|
|
||||||
add: false, // 字段允许添加
|
|
||||||
edit: false, // 字段允许修改
|
|
||||||
width: "150px",
|
width: "150px",
|
||||||
|
search: new TableColumnSearch(true),
|
||||||
},
|
},
|
||||||
name: {
|
name: {
|
||||||
label: "学校名称",
|
label: "学校名称",
|
||||||
width: "300px",
|
width: "300px",
|
||||||
search: true,
|
search: new TableColumnSearch(true),
|
||||||
searchType: ConditionalType.Like,
|
edit: {
|
||||||
add: true, // 字段允许添加
|
add: true,
|
||||||
edit: true, // 字段允许修改
|
edit: true,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
pname: {
|
pname: {
|
||||||
label: "地区",
|
label: "地区",
|
||||||
width: "300px",
|
width: "300px",
|
||||||
search: false,
|
|
||||||
custom: (row) => `${row.pname}-${row.cname}-${row.rname}`,
|
custom: (row) => `${row.pname}-${row.cname}-${row.rname}`,
|
||||||
add: false, // 字段允许添加
|
|
||||||
edit: false, // 字段允许修改
|
|
||||||
},
|
},
|
||||||
enable: {
|
enable: {
|
||||||
label: "启用",
|
label: "启用",
|
||||||
type: "switch",
|
type: "switch",
|
||||||
search: true,
|
|
||||||
custom: (row) => (row.enable ? "启用" : "禁用"),
|
custom: (row) => (row.enable ? "启用" : "禁用"),
|
||||||
add: true, // 字段允许添加
|
search: new TableColumnSearch(true),
|
||||||
edit: true, // 字段允许修改
|
edit: {
|
||||||
|
add: true,
|
||||||
|
edit: true,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
data: [],
|
data: [],
|
||||||
|
|
@ -87,7 +90,7 @@ const tableData: TableConfig = {
|
||||||
total: 0,
|
total: 0,
|
||||||
},
|
},
|
||||||
selectRows: [],
|
selectRows: [],
|
||||||
};
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,11 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import ahTable from "@/components/hTable/index.vue";
|
import ahTable from "@/components/hTable/index.vue";
|
||||||
import { ConditionalType, TableConfig } from "@/components/hTable/hTable";
|
import {
|
||||||
|
ConditionalType,
|
||||||
|
intTableData,
|
||||||
|
TableColumnSearch,
|
||||||
|
TableConfig,
|
||||||
|
} from "@/components/hTable/hTable";
|
||||||
import { onMounted, ref } from "vue";
|
import { onMounted, ref } from "vue";
|
||||||
import { fa } from "element-plus/es/locales.mjs";
|
import { fa } from "element-plus/es/locales.mjs";
|
||||||
defineOptions({
|
defineOptions({
|
||||||
|
|
@ -15,7 +20,7 @@ function searchCallback(data) {
|
||||||
//let c = data.Conditions.find((s) => s.FieldName == "Pname");
|
//let c = data.Conditions.find((s) => s.FieldName == "Pname");
|
||||||
}
|
}
|
||||||
const table = ref<{ initTable: (config: TableConfig) => void }>(null);
|
const table = ref<{ initTable: (config: TableConfig) => void }>(null);
|
||||||
const tableData: TableConfig = {
|
const tableData: TableConfig = intTableData({
|
||||||
apiUrl: "usercenter/back/schools",
|
apiUrl: "usercenter/back/schools",
|
||||||
selectColumn: false, // 列表选择
|
selectColumn: false, // 列表选择
|
||||||
border: false, // 是否显示表格边框
|
border: false, // 是否显示表格边框
|
||||||
|
|
@ -35,34 +40,32 @@ const tableData: TableConfig = {
|
||||||
// 行数据
|
// 行数据
|
||||||
id: {
|
id: {
|
||||||
label: "编号",
|
label: "编号",
|
||||||
search: true,
|
|
||||||
add: false, // 字段允许添加
|
|
||||||
edit: false, // 字段允许修改
|
|
||||||
width: "150px",
|
width: "150px",
|
||||||
|
search: new TableColumnSearch(true),
|
||||||
},
|
},
|
||||||
name: {
|
name: {
|
||||||
label: "学校名称",
|
label: "学校名称",
|
||||||
width: "300px",
|
width: "300px",
|
||||||
search: true,
|
search: new TableColumnSearch(true),
|
||||||
searchType: ConditionalType.Like,
|
edit: {
|
||||||
add: true, // 字段允许添加
|
add: true,
|
||||||
edit: true, // 字段允许修改
|
edit: true,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
pname: {
|
pname: {
|
||||||
label: "地区",
|
label: "地区",
|
||||||
width: "300px",
|
width: "300px",
|
||||||
search: false,
|
|
||||||
custom: (row) => `${row.pname}-${row.cname}-${row.rname}`,
|
custom: (row) => `${row.pname}-${row.cname}-${row.rname}`,
|
||||||
add: false, // 字段允许添加
|
|
||||||
edit: false, // 字段允许修改
|
|
||||||
},
|
},
|
||||||
enable: {
|
enable: {
|
||||||
label: "启用",
|
label: "启用",
|
||||||
type: "switch",
|
type: "switch",
|
||||||
search: true,
|
|
||||||
custom: (row) => (row.enable ? "启用" : "禁用"),
|
custom: (row) => (row.enable ? "启用" : "禁用"),
|
||||||
add: true, // 字段允许添加
|
search: new TableColumnSearch(true),
|
||||||
edit: true, // 字段允许修改
|
edit: {
|
||||||
|
add: true,
|
||||||
|
edit: true,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
data: [],
|
data: [],
|
||||||
|
|
@ -70,7 +73,7 @@ const tableData: TableConfig = {
|
||||||
total: 0,
|
total: 0,
|
||||||
},
|
},
|
||||||
selectRows: [],
|
selectRows: [],
|
||||||
};
|
});
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
|
|
|
||||||
|
|
@ -163,20 +163,20 @@
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
<el-card class="box-card">
|
<el-card class="box-card">
|
||||||
<div class="clearfix clearfixCss">
|
<div class="flex justify-between clearfixCss">
|
||||||
<span style="line-height: 32px; font-weight: 600"
|
<span style="line-height: 32px; font-weight: 600"
|
||||||
>{{ userType == 1 ? "就读班级" : "已选职位" }}[{{
|
>{{ userType == 1 ? "就读班级" : "已选职位" }}[{{
|
||||||
selectPositions.length
|
selectPositions.length
|
||||||
}}]</span
|
}}]</span
|
||||||
>
|
>
|
||||||
<el-button
|
|
||||||
style="float: right"
|
<div>
|
||||||
type="success"
|
<el-button @click="reload">重置</el-button>
|
||||||
@click="handleConfirm"
|
<el-button type="success" @click="handleConfirm" :icon="Check"
|
||||||
:icon="Check"
|
|
||||||
>提交分配职位</el-button
|
>提交分配职位</el-button
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
<div class="positionGap">
|
<div class="positionGap">
|
||||||
<el-tag
|
<el-tag
|
||||||
v-for="(p, o) in selectPositions"
|
v-for="(p, o) in selectPositions"
|
||||||
|
|
@ -433,6 +433,9 @@ const fetchPagedData = async () => {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const reload = () => {
|
||||||
|
selectPositions.value = [];
|
||||||
|
};
|
||||||
const handleConfirm = () => {
|
const handleConfirm = () => {
|
||||||
if (selectPositions.value.length === 0) {
|
if (selectPositions.value.length === 0) {
|
||||||
ElMessage.warning("请选择要分配的职位");
|
ElMessage.warning("请选择要分配的职位");
|
||||||
|
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
<script setup lang="ts" name="Testxb">
|
|
||||||
import { ref } from "vue";
|
|
||||||
// defineOptions({
|
|
||||||
// name: "Testxb"
|
|
||||||
// });
|
|
||||||
let name = ref("nihao");
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<div>测试菜单</div>
|
|
||||||
</template>
|
|
||||||
Loading…
Reference in New Issue