20260913231607
This commit is contained in:
1 parent
f3ad727f1c
commit
c31329d387
179 files changed
+10846
-2684
No files matched your search
@@ -21,18 +21,8 @@
|
||||
* ctx = { isNew, record }
|
||||
*/
|
||||
import { computed, ref, watch } from 'vue'
|
||||
import {
|
||||
Button,
|
||||
Checkbox,
|
||||
DatePicker,
|
||||
Form,
|
||||
FormGroup,
|
||||
FormItem,
|
||||
Input,
|
||||
Message,
|
||||
Modal,
|
||||
Select,
|
||||
} from '@/components/ui'
|
||||
import { Button, Form, FormGroup, FormItem, Message, Modal } from '@/components/ui'
|
||||
import FmsField from '@/components/fms-field/FmsField.vue'
|
||||
import { loadDataApi, loadDataBySqlApi, nextIdApi, saveObjectApi } from '@/services/api'
|
||||
import { diffRow } from '@/utils/dataChanges'
|
||||
import { identifierRe, isEmptyValue } from '@/components/fms-module-common/queryUtils'
|
||||
@@ -437,6 +427,25 @@ function handleClose() {
|
||||
|
||||
/* ================= 控件渲染 ================= */
|
||||
const selectOptionsOf = (field) => parseOptions(field).options
|
||||
|
||||
/* 控件类型:禁用/只读态统一降级为 Input(checkbox 除外)只展示原值,与旧行为一致;
|
||||
否则按字段 b_type 交给 FmsField 多态渲染 */
|
||||
function controlType(row) {
|
||||
if (isFieldDisabled(row)) return row.field.b_type === 'checkbox' ? 'checkbox' : 'input'
|
||||
return row.field.b_type
|
||||
}
|
||||
|
||||
/* 喂给 FmsField 内部控件的额外属性:select 的选项、文本类控件的占位(日期/复选框无占位) */
|
||||
function controlPropsOf(row) {
|
||||
if (isFieldDisabled(row)) return {}
|
||||
const type = row.field.b_type
|
||||
const extra = {}
|
||||
if (type === 'select') extra.options = selectOptionsOf(row.field)
|
||||
if (row.b_placeholder && type !== 'checkbox' && type !== 'date' && type !== 'datetime') {
|
||||
extra.placeholder = row.b_placeholder
|
||||
}
|
||||
return extra
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@@ -476,55 +485,12 @@ const selectOptionsOf = (field) => parseOptions(field).options
|
||||
:required="Number(row.b_required) === 1"
|
||||
:span="spanOf(row)"
|
||||
>
|
||||
<template v-if="isFieldDisabled(row)">
|
||||
<!-- 禁用/只读:展示值但不允许编辑 -->
|
||||
<Checkbox
|
||||
v-if="row.field.b_type === 'checkbox'"
|
||||
:model-value="Number(formData[row.field.b_field]) === 1"
|
||||
disabled
|
||||
/>
|
||||
<Input v-else :model-value="formData[row.field.b_field] ?? ''" disabled readonly />
|
||||
</template>
|
||||
<Input
|
||||
v-else-if="row.field.b_type === 'input'"
|
||||
<FmsField
|
||||
v-model="formData[row.field.b_field]"
|
||||
:placeholder="row.b_placeholder"
|
||||
/>
|
||||
<Input
|
||||
v-else-if="row.field.b_type === 'textarea'"
|
||||
v-model="formData[row.field.b_field]"
|
||||
type="textarea"
|
||||
:placeholder="row.b_placeholder"
|
||||
/>
|
||||
<Select
|
||||
v-else-if="row.field.b_type === 'select'"
|
||||
v-model="formData[row.field.b_field]"
|
||||
:options="selectOptionsOf(row.field)"
|
||||
:placeholder="row.b_placeholder"
|
||||
/>
|
||||
<Checkbox
|
||||
v-else-if="row.field.b_type === 'checkbox'"
|
||||
:model-value="Number(formData[row.field.b_field]) === 1"
|
||||
@update:model-value="(v) => (formData[row.field.b_field] = v ? 1 : 0)"
|
||||
/>
|
||||
<DatePicker
|
||||
v-else-if="row.field.b_type === 'date'"
|
||||
v-model="formData[row.field.b_field]"
|
||||
value-format="YYYY-MM-DD"
|
||||
/>
|
||||
<DatePicker
|
||||
v-else-if="row.field.b_type === 'datetime'"
|
||||
v-model="formData[row.field.b_field]"
|
||||
format="YYYY-MM-DD HH:mm"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
/>
|
||||
<Input
|
||||
v-else
|
||||
v-model="formData[row.field.b_field]"
|
||||
:type="
|
||||
row.field.b_type === 'number' || row.field.b_type === 'money' ? 'number' : 'default'
|
||||
"
|
||||
:placeholder="row.b_placeholder"
|
||||
:type="controlType(row)"
|
||||
:disabled="isFieldDisabled(row)"
|
||||
:readonly="isFieldDisabled(row)"
|
||||
:control-props="controlPropsOf(row)"
|
||||
/>
|
||||
</FormItem>
|
||||
</FormGroup>
|
||||
|
||||
Reference in new issue
Block a user