u
This commit is contained in:
1 parent
b4498e5350
commit
bf9dca19de
47 files changed
+8592
-313
No files matched your search
@@ -7,12 +7,21 @@
|
||||
* 编码(b_id 即主键):仅未落库草稿可改,改动时同步派生多语言键 module.xxx;
|
||||
* 类型切换会清掉不适用字段(module 无数据来源;virtual 无保存表)。
|
||||
*
|
||||
* 布局:三列栅格,一行三个字段;不分组(与菜单基础信息同款理由)——
|
||||
* 分组标题只是把十来个字段切成几段,字段本身并没有多到需要分段,去掉反而更紧凑。
|
||||
* 多语言键(b_i18n)不在界面上显示 —— 它由编码派生、用户改不了,
|
||||
* 占一个字段位只是噪音(派生逻辑照旧,见 onCodeInput)。
|
||||
*
|
||||
* 启用态(b_canuse)不在本表单里:它在左树行尾勾选(点一下即时写库)与卡头徽标展示。
|
||||
* 表单里再放一个开关会与之语义冲突 —— 树里那个立即生效,表单这个要等「保存」,
|
||||
* 同一字段两种口径用户没法预期;且草稿态启停本身是伪需求(启停是运维动作,不是配置内容)。
|
||||
*
|
||||
* 校验规则(随输入实时提示;保存前由父级调 validate() 统一跑一遍):
|
||||
* - 编码:必填、2-50 位、小写字母开头、只含小写字母/数字/下划线、禁止负数临时编码;
|
||||
* - 名称 / 类型必填;data 的查询来源(表或 SQL)、主键字段、保存表必填。
|
||||
*/
|
||||
import { computed, ref } from 'vue'
|
||||
import { G3Form, G3FormGroup, G3FormItem, G3Input, G3Select, G3Switch } from '@g3soft/ui'
|
||||
import { G3Form, G3FormItem, G3Input, G3Select } from '@g3soft/ui'
|
||||
import type { FormRule } from '@g3soft/ui'
|
||||
import { buildModuleI18nKey, type ModuleFieldRow, type ModuleNode } from './utils'
|
||||
|
||||
@@ -131,116 +140,99 @@ function onModuleTypeChange(value: unknown) {
|
||||
max-width="720px"
|
||||
label-width="96px"
|
||||
>
|
||||
<G3FormGroup title="标识与归属">
|
||||
<G3FormItem label="模块编码" name="b_id" required>
|
||||
<G3Input
|
||||
:model-value="moduleModel.b_id ?? ''"
|
||||
:disabled="codeReadonly"
|
||||
@update:model-value="onCodeInput"
|
||||
/>
|
||||
</G3FormItem>
|
||||
<G3FormItem label="模块名称" name="b_name" required>
|
||||
<G3Input
|
||||
:model-value="moduleModel.b_name ?? ''"
|
||||
@update:model-value="(value) => setField('b_name', value)"
|
||||
/>
|
||||
</G3FormItem>
|
||||
<G3FormItem label="模块类型" name="b_module_type" required>
|
||||
<G3Select
|
||||
:model-value="moduleModel.b_module_type ?? ''"
|
||||
:options="typeOptions"
|
||||
@update:model-value="onModuleTypeChange"
|
||||
/>
|
||||
</G3FormItem>
|
||||
<G3FormItem label="多语言键" name="b_i18n" :span="2">
|
||||
<G3Input :model-value="moduleModel.b_i18n ?? ''" readonly />
|
||||
</G3FormItem>
|
||||
</G3FormGroup>
|
||||
<G3FormItem label="模块编码" name="b_id" required>
|
||||
<G3Input
|
||||
:model-value="moduleModel.b_id ?? ''"
|
||||
:disabled="codeReadonly"
|
||||
@update:model-value="onCodeInput"
|
||||
/>
|
||||
</G3FormItem>
|
||||
<G3FormItem label="模块名称" name="b_name" required>
|
||||
<G3Input
|
||||
:model-value="moduleModel.b_name ?? ''"
|
||||
@update:model-value="(value) => setField('b_name', value)"
|
||||
/>
|
||||
</G3FormItem>
|
||||
<G3FormItem label="模块类型" name="b_module_type" required>
|
||||
<G3Select
|
||||
:model-value="moduleModel.b_module_type ?? ''"
|
||||
:options="typeOptions"
|
||||
@update:model-value="onModuleTypeChange"
|
||||
/>
|
||||
</G3FormItem>
|
||||
|
||||
<G3FormGroup v-if="hasDataSource" title="数据来源">
|
||||
<G3FormItem label="查询表/视图" name="b_view_table" :required="isData">
|
||||
<G3Input
|
||||
:model-value="moduleModel.b_view_table ?? ''"
|
||||
@update:model-value="(value) => setField('b_view_table', value)"
|
||||
/>
|
||||
</G3FormItem>
|
||||
<G3FormItem label="主键字段" name="b_key_field" :required="isData">
|
||||
<G3Input
|
||||
:model-value="moduleModel.b_key_field ?? ''"
|
||||
@update:model-value="(value) => setField('b_key_field', value)"
|
||||
/>
|
||||
</G3FormItem>
|
||||
<!-- 数据范围字段:记录归属人字段(如录入人)。
|
||||
用户数据范围面板只选「看到哪一档」,用哪个字段判在这里定 ——
|
||||
同一个模块的所有用户必须用同一字段,否则同一份数据对不同用户含义不同 -->
|
||||
<G3FormItem label="数据范围字段" name="b_scope_field">
|
||||
<G3Select
|
||||
:model-value="moduleModel.b_scope_field ?? ''"
|
||||
:options="scopeFieldOptions"
|
||||
clearable
|
||||
title="记录归属人字段:「仅本人」按它比对,「本部门 / 本部门及下级」由该用户反查部门;留空表示本模块不按字段判范围"
|
||||
@update:model-value="(value) => setField('b_scope_field', value)"
|
||||
/>
|
||||
</G3FormItem>
|
||||
<G3FormItem v-if="isData" label="保存表" name="b_save_table" required>
|
||||
<G3Input
|
||||
:model-value="moduleModel.b_save_table ?? ''"
|
||||
@update:model-value="(value) => setField('b_save_table', value)"
|
||||
/>
|
||||
</G3FormItem>
|
||||
<G3FormItem label="默认排序 SQL" name="b_order_sql" :span="isData ? 1 : 3">
|
||||
<G3Input
|
||||
:model-value="moduleModel.b_order_sql ?? ''"
|
||||
@update:model-value="(value) => setField('b_order_sql', value)"
|
||||
/>
|
||||
</G3FormItem>
|
||||
</G3FormGroup>
|
||||
<!-- 数据来源:data / virtual 才有 -->
|
||||
<G3FormItem v-if="hasDataSource" label="查询表/视图" name="b_view_table" :required="isData">
|
||||
<G3Input
|
||||
:model-value="moduleModel.b_view_table ?? ''"
|
||||
@update:model-value="(value) => setField('b_view_table', value)"
|
||||
/>
|
||||
</G3FormItem>
|
||||
<G3FormItem v-if="hasDataSource" label="主键字段" name="b_key_field" :required="isData">
|
||||
<G3Input
|
||||
:model-value="moduleModel.b_key_field ?? ''"
|
||||
@update:model-value="(value) => setField('b_key_field', value)"
|
||||
/>
|
||||
</G3FormItem>
|
||||
<!-- 数据范围字段:记录归属人字段(如录入人)。
|
||||
用户数据范围面板只选「看到哪一档」,用哪个字段判在这里定 ——
|
||||
同一个模块的所有用户必须用同一字段,否则同一份数据对不同用户含义不同 -->
|
||||
<G3FormItem v-if="hasDataSource" label="数据范围字段" name="b_scope_field">
|
||||
<G3Select
|
||||
:model-value="moduleModel.b_scope_field ?? ''"
|
||||
:options="scopeFieldOptions"
|
||||
clearable
|
||||
title="记录归属人字段:「仅本人」按它比对,「本部门 / 本部门及下级」由该用户反查部门;留空表示本模块不按字段判范围"
|
||||
@update:model-value="(value) => setField('b_scope_field', value)"
|
||||
/>
|
||||
</G3FormItem>
|
||||
<G3FormItem v-if="isData" label="保存表" name="b_save_table" required>
|
||||
<G3Input
|
||||
:model-value="moduleModel.b_save_table ?? ''"
|
||||
@update:model-value="(value) => setField('b_save_table', value)"
|
||||
/>
|
||||
</G3FormItem>
|
||||
<G3FormItem v-if="hasDataSource" label="默认排序 SQL" name="b_order_sql">
|
||||
<G3Input
|
||||
:model-value="moduleModel.b_order_sql ?? ''"
|
||||
@update:model-value="(value) => setField('b_order_sql', value)"
|
||||
/>
|
||||
</G3FormItem>
|
||||
|
||||
<G3FormGroup v-if="hasDataSource" title="查询与扩展">
|
||||
<G3FormItem label="查询 SQL" name="b_query_sql" :span="3">
|
||||
<G3Input
|
||||
type="textarea"
|
||||
:rows="3"
|
||||
:model-value="moduleModel.b_query_sql ?? ''"
|
||||
@update:model-value="(value) => setField('b_query_sql', value)"
|
||||
/>
|
||||
</G3FormItem>
|
||||
<G3FormItem label="扩展配置 JSON" name="b_config_json" :span="3">
|
||||
<G3Input
|
||||
type="textarea"
|
||||
:rows="2"
|
||||
:model-value="moduleModel.b_config_json ?? ''"
|
||||
@update:model-value="(value) => setField('b_config_json', value)"
|
||||
/>
|
||||
</G3FormItem>
|
||||
</G3FormGroup>
|
||||
<!-- 查询 SQL / 扩展配置:内容较长,整行铺满 -->
|
||||
<G3FormItem v-if="hasDataSource" label="查询 SQL" name="b_query_sql" :span="3">
|
||||
<G3Input
|
||||
type="textarea"
|
||||
:rows="3"
|
||||
:model-value="moduleModel.b_query_sql ?? ''"
|
||||
@update:model-value="(value) => setField('b_query_sql', value)"
|
||||
/>
|
||||
</G3FormItem>
|
||||
<G3FormItem v-if="hasDataSource" label="扩展配置 JSON" name="b_config_json" :span="3">
|
||||
<G3Input
|
||||
type="textarea"
|
||||
:rows="2"
|
||||
:model-value="moduleModel.b_config_json ?? ''"
|
||||
@update:model-value="(value) => setField('b_config_json', value)"
|
||||
/>
|
||||
</G3FormItem>
|
||||
|
||||
<G3FormGroup title="行为设置">
|
||||
<G3FormItem label="排序号" name="b_xh">
|
||||
<G3Input
|
||||
type="number"
|
||||
:model-value="moduleModel.b_xh ?? ''"
|
||||
@update:model-value="(value) => setField('b_xh', value)"
|
||||
/>
|
||||
</G3FormItem>
|
||||
<G3FormItem label="启用" name="b_canuse">
|
||||
<G3Switch
|
||||
:model-value="Number(moduleModel.b_canuse) === 1"
|
||||
@update:model-value="(value) => setField('b_canuse', value ? 1 : 0)"
|
||||
/>
|
||||
</G3FormItem>
|
||||
</G3FormGroup>
|
||||
<G3FormItem label="排序号" name="b_xh">
|
||||
<G3Input
|
||||
type="number"
|
||||
:model-value="moduleModel.b_xh ?? ''"
|
||||
@update:model-value="(value) => setField('b_xh', value)"
|
||||
/>
|
||||
</G3FormItem>
|
||||
|
||||
<G3FormGroup title="更多">
|
||||
<G3FormItem label="描述" name="b_bz" :span="3">
|
||||
<G3Input
|
||||
type="textarea"
|
||||
:rows="2"
|
||||
:model-value="moduleModel.b_bz ?? ''"
|
||||
@update:model-value="(value) => setField('b_bz', value)"
|
||||
/>
|
||||
</G3FormItem>
|
||||
</G3FormGroup>
|
||||
<G3FormItem label="描述" name="b_bz" :span="3">
|
||||
<G3Input
|
||||
type="textarea"
|
||||
:rows="2"
|
||||
:model-value="moduleModel.b_bz ?? ''"
|
||||
@update:model-value="(value) => setField('b_bz', value)"
|
||||
/>
|
||||
</G3FormItem>
|
||||
</G3Form>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
Reference in new issue
Block a user