no message
parent
1e3bf62b89
commit
7e752dc83a
|
|
@ -88,9 +88,9 @@ const getSchema = computed((): FormSchema[] => {
|
||||||
// handle date type
|
// handle date type
|
||||||
if (
|
if (
|
||||||
isHandleDateDefaultValue
|
isHandleDateDefaultValue
|
||||||
&& defaultValue
|
&& defaultValue
|
||||||
&& component
|
&& component
|
||||||
&& dateItemType.includes(component)
|
&& dateItemType.includes(component)
|
||||||
) {
|
) {
|
||||||
if (!Array.isArray(defaultValue)) {
|
if (!Array.isArray(defaultValue)) {
|
||||||
schema.defaultValue = valueFormat
|
schema.defaultValue = valueFormat
|
||||||
|
|
@ -222,7 +222,7 @@ function setFormModel(key: string, value: any, schema: FormSchema) {
|
||||||
emit('field-value-change', key, value)
|
emit('field-value-change', key, value)
|
||||||
// TODO 优化验证,这里如果是autoLink=false手动关联的情况下才会再次触发此函数
|
// TODO 优化验证,这里如果是autoLink=false手动关联的情况下才会再次触发此函数
|
||||||
if (schema && schema.itemProps && !schema.itemProps.autoLink)
|
if (schema && schema.itemProps && !schema.itemProps.autoLink)
|
||||||
validateFields([key]).catch((_) => {})
|
validateFields([key]).catch((_) => { })
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleEnterPress(e: KeyboardEvent) {
|
function handleEnterPress(e: KeyboardEvent) {
|
||||||
|
|
@ -261,37 +261,21 @@ const getFormActionBindProps = computed(() => ({ ...getProps.value, ...advanceSt
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<Form
|
<Form v-bind="getBindValue" ref="formElRef" :class="getFormClass" :model="formModel"
|
||||||
v-bind="getBindValue"
|
@keypress.enter="handleEnterPress">
|
||||||
ref="formElRef"
|
|
||||||
:class="getFormClass"
|
|
||||||
:model="formModel"
|
|
||||||
@keypress.enter="handleEnterPress"
|
|
||||||
>
|
|
||||||
<Row v-bind="getRow">
|
<Row v-bind="getRow">
|
||||||
<slot name="formHeader" />
|
<slot name="formHeader" />
|
||||||
<template v-for="schema in getSchema" :key="schema.field">
|
<template v-for="schema in getSchema" :key="schema.field">
|
||||||
<FormItem
|
<FormItem :is-advanced="fieldsIsAdvancedMap[schema.field]" :table-action="tableAction"
|
||||||
:is-advanced="fieldsIsAdvancedMap[schema.field]"
|
:form-action-type="formActionType" :schema="schema" :form-props="getProps"
|
||||||
:table-action="tableAction"
|
:all-default-values="defaultValueRef" :form-model="formModel" :set-form-model="setFormModel">
|
||||||
:form-action-type="formActionType"
|
|
||||||
:schema="schema"
|
|
||||||
:form-props="getProps"
|
|
||||||
:all-default-values="defaultValueRef"
|
|
||||||
:form-model="formModel"
|
|
||||||
:set-form-model="setFormModel"
|
|
||||||
>
|
|
||||||
<template v-for="item in Object.keys($slots)" #[item]="data">
|
<template v-for="item in Object.keys($slots)" #[item]="data">
|
||||||
<slot :name="item" v-bind="data || {}" />
|
<slot :name="item" v-bind="data || {}" />
|
||||||
</template>
|
</template>
|
||||||
</FormItem>
|
</FormItem>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<FormAction v-bind="getFormActionBindProps" @toggle-advanced="handleToggleAdvanced">
|
<FormAction v-bind="getFormActionBindProps" @toggle-advanced="handleToggleAdvanced">
|
||||||
<template
|
<template v-for="item in ['resetBefore', 'submitBefore', 'advanceBefore', 'advanceAfter']" #[item]="data">
|
||||||
v-for="item in ['resetBefore', 'submitBefore', 'advanceBefore', 'advanceAfter']"
|
|
||||||
#[item]="data"
|
|
||||||
>
|
|
||||||
<slot :name="item" v-bind="data || {}" />
|
<slot :name="item" v-bind="data || {}" />
|
||||||
</template>
|
</template>
|
||||||
</FormAction>
|
</FormAction>
|
||||||
|
|
|
||||||
|
|
@ -80,43 +80,26 @@ function toggleAdvanced() {
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<Col v-if="showActionButtonGroup" v-bind="actionColOpt">
|
<Col v-if="showActionButtonGroup" v-bind="actionColOpt" :span="24">
|
||||||
<div style="width: 100%" :style="{ textAlign: actionColOpt.style.textAlign }">
|
<div style="width: 100%" :style="{ textAlign: actionColOpt.style.textAlign }">
|
||||||
<FormItem>
|
<FormItem>
|
||||||
<slot name="resetBefore" />
|
<slot name="resetBefore" />
|
||||||
<Button
|
<Button v-if="showResetButton" type="default" class="mr-2" v-bind="getResetBtnOptions" @click="resetAction">
|
||||||
v-if="showResetButton"
|
{{ getResetBtnOptions.text }}
|
||||||
type="default"
|
</Button>
|
||||||
class="mr-2"
|
<slot name="submitBefore" />
|
||||||
v-bind="getResetBtnOptions"
|
|
||||||
@click="resetAction"
|
|
||||||
>
|
|
||||||
{{ getResetBtnOptions.text }}
|
|
||||||
</Button>
|
|
||||||
<slot name="submitBefore" />
|
|
||||||
|
|
||||||
<Button
|
<Button v-if="showSubmitButton" type="primary" class="mr-2" v-bind="getSubmitBtnOptions" @click="submitAction">
|
||||||
v-if="showSubmitButton"
|
{{ getSubmitBtnOptions.text }}
|
||||||
type="primary"
|
</Button>
|
||||||
class="mr-2"
|
|
||||||
v-bind="getSubmitBtnOptions"
|
|
||||||
@click="submitAction"
|
|
||||||
>
|
|
||||||
{{ getSubmitBtnOptions.text }}
|
|
||||||
</Button>
|
|
||||||
|
|
||||||
<slot name="advanceBefore" />
|
<slot name="advanceBefore" />
|
||||||
<Button
|
<Button v-if="showAdvancedButton && !hideAdvanceBtn" type="link" size="small" @click="toggleAdvanced">
|
||||||
v-if="showAdvancedButton && !hideAdvanceBtn"
|
{{ isAdvanced ? t('component.form.putAway') : t('component.form.unfold') }}
|
||||||
type="link"
|
<BasicArrow class="ml-1" :expand="!isAdvanced" up />
|
||||||
size="small"
|
</Button>
|
||||||
@click="toggleAdvanced"
|
<slot name="advanceAfter" />
|
||||||
>
|
</FormItem>
|
||||||
{{ isAdvanced ? t('component.form.putAway') : t('component.form.unfold') }}
|
</div>
|
||||||
<BasicArrow class="ml-1" :expand="!isAdvanced" up />
|
|
||||||
</Button>
|
|
||||||
<slot name="advanceAfter" />
|
|
||||||
</FormItem>
|
|
||||||
</div>
|
|
||||||
</Col>
|
</Col>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
||||||
|
|
@ -309,13 +309,8 @@ function updateSortOption(column: BasicColumn) {
|
||||||
<template #title>
|
<template #title>
|
||||||
<span>{{ t('component.table.settingColumn') }}</span>
|
<span>{{ t('component.table.settingColumn') }}</span>
|
||||||
</template>
|
</template>
|
||||||
<Popover
|
<Popover placement="bottomLeft" trigger="click" :overlay-class-name="`${prefixCls}__cloumn-list`"
|
||||||
placement="bottomLeft"
|
:get-popup-container="getPopupContainer" @open-change="handleOpenChange">
|
||||||
trigger="click"
|
|
||||||
:overlay-class-name="`${prefixCls}__cloumn-list`"
|
|
||||||
:get-popup-container="getPopupContainer"
|
|
||||||
@open-change="handleOpenChange"
|
|
||||||
>
|
|
||||||
<template #title>
|
<template #title>
|
||||||
<div :class="`${prefixCls}__popover-title`">
|
<div :class="`${prefixCls}__popover-title`">
|
||||||
<Checkbox v-model:checked="state.checkAll" :indeterminate="indeterminate" @change="onCheckAllChange">
|
<Checkbox v-model:checked="state.checkAll" :indeterminate="indeterminate" @change="onCheckAllChange">
|
||||||
|
|
@ -350,34 +345,26 @@ function updateSortOption(column: BasicColumn) {
|
||||||
<template #title>
|
<template #title>
|
||||||
{{ t('component.table.settingFixedLeft') }}
|
{{ t('component.table.settingFixedLeft') }}
|
||||||
</template>
|
</template>
|
||||||
<Icon
|
<Icon icon="line-md:arrow-align-left" :class="[
|
||||||
icon="line-md:arrow-align-left"
|
`${prefixCls}__fixed-left`,
|
||||||
:class="[
|
{
|
||||||
`${prefixCls}__fixed-left`,
|
active: item.fixed === 'left',
|
||||||
{
|
disabled: !state.checkedList.includes(item.value),
|
||||||
active: item.fixed === 'left',
|
},
|
||||||
disabled: !state.checkedList.includes(item.value),
|
]" @click="handleColumnFixed(item, 'left')" />
|
||||||
},
|
|
||||||
]"
|
|
||||||
@click="handleColumnFixed(item, 'left')"
|
|
||||||
/>
|
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
<Divider type="vertical" />
|
<Divider type="vertical" />
|
||||||
<Tooltip placement="bottomLeft" :mouse-leave-delay="0.4" :get-popup-container="getPopupContainer">
|
<Tooltip placement="bottomLeft" :mouse-leave-delay="0.4" :get-popup-container="getPopupContainer">
|
||||||
<template #title>
|
<template #title>
|
||||||
{{ t('component.table.settingFixedRight') }}
|
{{ t('component.table.settingFixedRight') }}
|
||||||
</template>
|
</template>
|
||||||
<Icon
|
<Icon icon="line-md:arrow-align-left" :class="[
|
||||||
icon="line-md:arrow-align-left"
|
`${prefixCls}__fixed-right`,
|
||||||
:class="[
|
{
|
||||||
`${prefixCls}__fixed-right`,
|
active: item.fixed === 'right',
|
||||||
{
|
disabled: !state.checkedList.includes(item.value),
|
||||||
active: item.fixed === 'right',
|
},
|
||||||
disabled: !state.checkedList.includes(item.value),
|
]" @click="handleColumnFixed(item, 'right')" />
|
||||||
},
|
|
||||||
]"
|
|
||||||
@click="handleColumnFixed(item, 'right')"
|
|
||||||
/>
|
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,7 @@ export function getDictOpts(dictType: string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getDictOptions(dictType: string, valueType?: 'string' | 'number' | 'boolean') {
|
export function getDictOptions(dictType: string, valueType?: 'string' | 'number' | 'boolean') {
|
||||||
|
debugger
|
||||||
const dictOption: DictDataType[] = []
|
const dictOption: DictDataType[] = []
|
||||||
const dictOptions: DictDataType[] = getDictDatas(dictType)
|
const dictOptions: DictDataType[] = getDictDatas(dictType)
|
||||||
if (dictOptions && dictOptions.length > 0) {
|
if (dictOptions && dictOptions.length > 0) {
|
||||||
|
|
|
||||||
|
|
@ -299,7 +299,7 @@ export class VAxios {
|
||||||
reject(err || new Error('request error!'))
|
reject(err || new Error('request error!'))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
// return
|
||||||
}
|
}
|
||||||
resolve(res as unknown as Promise<T>)
|
resolve(res as unknown as Promise<T>)
|
||||||
// download file
|
// download file
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import type { BasicColumn, FormSchema } from '@/components/Table'
|
import type { BasicColumn, FormSchema } from '@/components/Table'
|
||||||
import { useRender } from '@/components/Table'
|
import { useRender } from '@/components/Table'
|
||||||
import { DICT_TYPE } from '@/utils/dict'
|
import { DICT_TYPE, getDictOptions } from '@/utils/dict'
|
||||||
|
|
||||||
export const columns: BasicColumn[] = [
|
export const columns: BasicColumn[] = [
|
||||||
// {
|
// {
|
||||||
|
|
@ -64,46 +64,46 @@ export const searchFormSchema: FormSchema[] = [
|
||||||
label: '姓名',
|
label: '姓名',
|
||||||
field: 'name',
|
field: 'name',
|
||||||
component: 'Input',
|
component: 'Input',
|
||||||
colProps: { span: 8 },
|
colProps: { span: 4 },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: '性别',
|
label: '性别',
|
||||||
field: 'sex',
|
field: 'sex',
|
||||||
component: 'Radio',
|
component: 'Select',
|
||||||
componentProps: {
|
componentProps: {
|
||||||
options: [],
|
options: getDictOptions(DICT_TYPE.SYSTEM_USER_SEX)
|
||||||
},
|
},
|
||||||
colProps: { span: 8 },
|
colProps: { span: 4 },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: '移动电话',
|
label: '移动电话',
|
||||||
field: 'phone',
|
field: 'phone',
|
||||||
component: 'Input',
|
component: 'Input',
|
||||||
colProps: { span: 8 },
|
colProps: { span: 4 },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: '电子邮箱',
|
label: '电子邮箱',
|
||||||
field: 'email',
|
field: 'email',
|
||||||
component: 'Input',
|
component: 'Input',
|
||||||
colProps: { span: 8 },
|
colProps: { span: 4 },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: '最高学历',
|
label: '最高学历',
|
||||||
field: 'educationLevel',
|
field: 'educationLevel',
|
||||||
component: 'Input',
|
component: 'Input',
|
||||||
colProps: { span: 8 },
|
colProps: { span: 4 },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: '是否接受岗位调剂',
|
label: '是否接受岗位调剂',
|
||||||
field: 'jobAdjustment',
|
field: 'jobAdjustment',
|
||||||
component: 'Radio',
|
component: 'Select',
|
||||||
componentProps: {
|
componentProps: {
|
||||||
options: [],
|
options: getDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING, 'boolean')
|
||||||
},
|
},
|
||||||
colProps: { span: 8 },
|
colProps: { span: 4 },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: '创建时间',
|
label: '投递时间',
|
||||||
field: 'createTime',
|
field: 'createTime',
|
||||||
component: 'RangePicker',
|
component: 'RangePicker',
|
||||||
colProps: { span: 8 },
|
colProps: { span: 8 },
|
||||||
|
|
|
||||||
|
|
@ -33,9 +33,9 @@ function handleCreate() {
|
||||||
openModal(true, { isUpdate: false })
|
openModal(true, { isUpdate: false })
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleEdit(record: Recordable) {
|
// function handleEdit(record: Recordable) {
|
||||||
openModal(true, { record, isUpdate: true })
|
// openModal(true, { record, isUpdate: true })
|
||||||
}
|
// }
|
||||||
|
|
||||||
async function handleExport() {
|
async function handleExport() {
|
||||||
createConfirm({
|
createConfirm({
|
||||||
|
|
@ -57,6 +57,7 @@ async function handleDelete(record: Recordable) {
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
|
<!-- 表格 -->
|
||||||
<BasicTable @register="registerTable">
|
<BasicTable @register="registerTable">
|
||||||
<template #toolbar>
|
<template #toolbar>
|
||||||
<a-button type="primary" v-auth="['recruit:applicant:create']" :preIcon="IconEnum.ADD" @click="handleCreate">
|
<a-button type="primary" v-auth="['recruit:applicant:create']" :preIcon="IconEnum.ADD" @click="handleCreate">
|
||||||
|
|
@ -69,7 +70,7 @@ async function handleDelete(record: Recordable) {
|
||||||
<template #bodyCell="{ column, record }">
|
<template #bodyCell="{ column, record }">
|
||||||
<template v-if="column.key === 'action'">
|
<template v-if="column.key === 'action'">
|
||||||
<TableAction :actions="[
|
<TableAction :actions="[
|
||||||
{ icon: IconEnum.EDIT, label: t('action.edit'), auth: 'recruit:applicant:update', onClick: handleEdit.bind(null, record) },
|
// { icon: IconEnum.EDIT, label: t('action.edit'), auth: 'recruit:applicant:update', onClick: handleEdit.bind(null, record) },
|
||||||
{
|
{
|
||||||
icon: IconEnum.DELETE,
|
icon: IconEnum.DELETE,
|
||||||
danger: true,
|
danger: true,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue