Browse Source

feat:[模板管理][update]

ouqian
luojie 1 month ago
parent
commit
c63178d0e7
3 changed files with 29 additions and 69 deletions
  1. +8
    -19
      src/components/Template/BaseInfoFormPackage.vue
  2. +20
    -49
      src/components/Template/CustomTable.vue
  3. +1
    -1
      src/components/Template/HandleFormItem.vue

+ 8
- 19
src/components/Template/BaseInfoFormPackage.vue View File

@ -6,19 +6,12 @@
<div class="grid-container"> <div class="grid-container">
<div v-for="(sItem, key) in item.config" class="form-item" <div v-for="(sItem, key) in item.config" class="form-item"
:class="sItem.span == 1 ? 'full-row' : ''" :key="key"> :class="sItem.span == 1 ? 'full-row' : ''" :key="key">
<template v-if="sItem.type === 'input'">
<template v-if="sItem.type === 'input' || sItem.type === 'inputNumber'">
<div class="form-title">{{ $t(sItem.label) }}</div> <div class="form-title">{{ $t(sItem.label) }}</div>
<HandleFormItem :field-item-label="fieldItemLabel" @blur="onBlur(key, $event)" :item="sItem" <HandleFormItem :field-item-label="fieldItemLabel" @blur="onBlur(key, $event)" :item="sItem"
v-model="formFields[key]" :field-key="prefixKey + '_' + key" @copy="onCopy(sItem, key)" v-model="formFields[key]" :field-key="prefixKey + '_' + key" @copy="onCopy(sItem, key)"
:error="errors[key]" @update:error="errors[key] = false" :error="errors[key]" @update:error="errors[key] = false"
:orange-bg="orangeBgFields[key]" />
</template>
<template v-else-if="sItem.type === 'inputNumber'">
<div class="form-title">{{ $t(sItem.label) }}</div>
<HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key"
type="inputNumber" @blur="onBlur(key, $event)" :item="sItem"
@input="onInputNumberChange(key, $event)" v-model="formFields[key]"
@copy="onCopy(sItem, key)" :error="errors[key]" @update:error="errors[key] = false"
:type="sItem.type"
:orange-bg="orangeBgFields[key]" /> :orange-bg="orangeBgFields[key]" />
</template> </template>
</div> </div>
@ -102,9 +95,10 @@
</div> </div>
</div> </div>
</div> </div>
<div v-else-if="sItem.type === 'input'" class="item-center">
<div v-else-if="sItem.type === 'input'||sItem.type === 'textarea' || sItem.type === 'inputNumber'" class="item-center">
<HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key" <HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key"
@blur="onBlur(key, $event)" :item="sItem" v-model="formFields[key]" @blur="onBlur(key, $event)" :item="sItem" v-model="formFields[key]"
:type="sItem.type"
@copy="onCopy(sItem, key)" :error="errors[key]" @update:error="errors[key] = false" @copy="onCopy(sItem, key)" :error="errors[key]" @update:error="errors[key] = false"
:ref="key" :orange-bg="orangeBgFields[key]" /> :ref="key" :orange-bg="orangeBgFields[key]" />
<span v-if="sItem.subType === 'text'" class="sub-text">{{ $t(sItem.subText) }}</span> <span v-if="sItem.subType === 'text'" class="sub-text">{{ $t(sItem.subText) }}</span>
@ -113,12 +107,6 @@
@clickButton="(e, val, data) => handleClickButton(e, sItem, val, data)" /> @clickButton="(e, val, data) => handleClickButton(e, sItem, val, data)" />
</div> </div>
<div v-else-if="sItem.type === 'textarea'">
<HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key"
@blur="onBlur(key, $event)" type="textarea" :item="sItem" v-model="formFields[key]"
@copy="onCopy(sItem, key)" :error="errors[key]" @update:error="errors[key] = false"
:orange-bg="orangeBgFields[key]" />
</div>
<div v-else-if="sItem.type === 'clickable'" class="flex1"> <div v-else-if="sItem.type === 'clickable'" class="flex1">
<HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key" <HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key"
type="clickable" @clickable="handleClickable(sItem, key)" :error="errors[key]" type="clickable" @clickable="handleClickable(sItem, key)" :error="errors[key]"
@ -196,8 +184,9 @@
</div> </div>
</div> </div>
</div> </div>
<div v-else-if="sItem.type === 'input'" class="flex flex1">
<div v-else-if="sItem.type === 'input' || sItem.type === 'inputNumber'" class="flex flex1">
<HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key" <HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key"
:type="sItem.type"
@blur="onBlur(key, $event)" class="flex1" :item="sItem" v-model="formFields[key]" @blur="onBlur(key, $event)" class="flex1" :item="sItem" v-model="formFields[key]"
@copy="onCopy(sItem, key)" :error="errors[key]" @update:error="errors[key] = false" @copy="onCopy(sItem, key)" :error="errors[key]" @update:error="errors[key] = false"
:orange-bg="orangeBgFields[key]" /> :orange-bg="orangeBgFields[key]" />
@ -249,7 +238,7 @@
<span v-else class="default-placeholder-text">请选择</span> <span v-else class="default-placeholder-text">请选择</span>
</div> --> </div> -->
</div> </div>
<div v-else-if="sItem.type === 'inputNumber'" class="flex flex1">
<!-- <div v-else-if="sItem.type === 'inputNumber'" class="flex flex1">
<HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key" <HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key"
type="inputNumber" @blur="onBlur(key, $event)" class="flex1" :item="sItem" type="inputNumber" @blur="onBlur(key, $event)" class="flex1" :item="sItem"
@input="onInputNumberChange(key, $event)" :value="formFields[key]" @input="onInputNumberChange(key, $event)" :value="formFields[key]"
@ -278,7 +267,7 @@
@beforeReagentSubmit="(data, callback) => onBeforeReagentSubmit(data, callback, sItem.subKey)" @beforeReagentSubmit="(data, callback) => onBeforeReagentSubmit(data, callback, sItem.subKey)"
@onRegentSubmit="(data, inputValue) => onRegentSubmit(data, inputValue, sItem.subKey, sItem)" @onRegentSubmit="(data, inputValue) => onRegentSubmit(data, inputValue, sItem.subKey, sItem)"
:item="getRegentItem(sItem, 'subType')" :value="formFields[sItem.subKey]" /> :item="getRegentItem(sItem, 'subType')" :value="formFields[sItem.subKey]" />
</div>
</div> -->
<div v-else-if="sItem.type === 'clickable'" class="flex flex1"> <div v-else-if="sItem.type === 'clickable'" class="flex flex1">
<HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key" <HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key"
type="clickable" @clickable="handleClickable(sItem, key)" :error="errors[key]" type="clickable" @clickable="handleClickable(sItem, key)" :error="errors[key]"

+ 20
- 49
src/components/Template/CustomTable.vue View File

@ -28,7 +28,6 @@
<div v-else-if="headerSelectFields[col.headerSelectKey]" class="fill-type-icon" <div v-else-if="headerSelectFields[col.headerSelectKey]" class="fill-type-icon"
:style="{ width: (templateFillType !== 'actFill') ? '60px' : 'auto' }">({{ :style="{ width: (templateFillType !== 'actFill') ? '60px' : 'auto' }">({{
headerSelectFields[col.headerSelectKey] }})</div> headerSelectFields[col.headerSelectKey] }})</div>
</div> </div>
</div> </div>
@ -58,29 +57,23 @@
<div v-if="!isBorder && col.label" class="mr-5"> <div v-if="!isBorder && col.label" class="mr-5">
{{ $t(col.label) }} {{ $t(col.label) }}
</div> </div>
<template v-if="col.bodyType === 'input'">
<HandleFormItem :fieldKey="prefixKey + '_' + col.prop + '_' + rowIndex"
:fieldItemLabel="fieldItemLabel" type="input"
@blur="onBlur(rowIndex, col.prop, $event)" @copy="onCopy(rowIndex, col)"
class="body-input" :item="getBodyItem(col, rowIndex)" v-model="row[col.prop]"
@change="onBodyValueChange(rowIndex, colIndex, $event)"
:error="hasError(rowIndex, colIndex, col.prop)"
@update:error="onErrorUpdate(rowIndex, colIndex, col.prop, $event)"
@beforeSaveRecord="(data, callback) => beforeSaveRecord(data, callback, rowIndex, col, row)"
:orange-bg="hasOrangeBg(rowIndex, colIndex, col.prop)" />
</template>
<template v-else-if="col.bodyType === 'inputNumber'">
<HandleFormItem :fieldKey="prefixKey + '_' + col.prop + '_' + rowIndex"
:fieldItemLabel="fieldItemLabel" type="inputNumber"
@copy="onCopy(rowIndex, col)" class="body-input-number"
:item="getBodyItem(col, rowIndex)" v-model="row[col.prop]"
@blur="onBlur(rowIndex, col.prop, $event)"
@change="onBodyValueChange(rowIndex, colIndex, $event)"
:error="hasError(rowIndex, colIndex, col.prop)"
@beforeSaveRecord="(data, callback) => beforeSaveRecord(data, callback, rowIndex, col, row)"
@update:error="onErrorUpdate(rowIndex, colIndex, col.prop, $event)"
:orange-bg="hasOrangeBg(rowIndex, colIndex, col.prop)" />
<template
v-if="col.bodyType === 'input' || col.bodyType === 'inputNumber' || col.bodyType === 'select'">
<div class="flex flex1">
<HandleFormItem :fieldKey="prefixKey + '_' + col.prop + '_' + rowIndex"
:fieldItemLabel="fieldItemLabel" :type="col.bodyType"
@blur="onBlur(rowIndex, col.prop, $event)" @copy="onCopy(rowIndex, col)"
class="body-input" :item="getBodyItem(col, rowIndex)"
v-model="row[col.prop]"
@change="onBodyValueChange(rowIndex, colIndex, $event, row, col.bodyType)"
:error="hasError(rowIndex, colIndex, col.prop)"
@update:error="onErrorUpdate(rowIndex, colIndex, col.prop, $event)"
@beforeSaveRecord="(data, callback) => beforeSaveRecord(data, callback, rowIndex, col, row)"
:orange-bg="hasOrangeBg(rowIndex, colIndex, col.prop)" />
</div>
</template> </template>
<!--
<template v-else-if="col.bodyType === 'select'"> <template v-else-if="col.bodyType === 'select'">
<div class="flex flex1"> <div class="flex flex1">
<HandleFormItem :fieldKey="prefixKey + '_' + col.prop + '_' + rowIndex" <HandleFormItem :fieldKey="prefixKey + '_' + col.prop + '_' + rowIndex"
@ -94,7 +87,7 @@
</div> </div>
</template>
</template> -->
<div class="flex flex1" v-else-if="col.bodyType === 'clickable'"> <div class="flex flex1" v-else-if="col.bodyType === 'clickable'">
<HandleFormItem :fieldKey="prefixKey + '_' + col.prop + '_' + rowIndex" <HandleFormItem :fieldKey="prefixKey + '_' + col.prop + '_' + rowIndex"
:fieldItemLabel="fieldItemLabel" type="clickable" class="body-clickable" :fieldItemLabel="fieldItemLabel" type="clickable" class="body-clickable"
@ -158,39 +151,17 @@
</div> </div>
<div class="m-l-5" :class="{ 'flex1': col.bodySubType !== 'button' }" <div class="m-l-5" :class="{ 'flex1': col.bodySubType !== 'button' }"
v-if="isShowBodySub(col, row)"> v-if="isShowBodySub(col, row)">
<template v-if="col.bodySubType === 'inputNumber'">
<HandleFormItem :fieldKey="prefixKey + '_' + col.bodySubKey + '_' + rowIndex"
:fieldItemLabel="fieldItemLabel" type="inputNumber"
@blur="onSubBlur(rowIndex, col.bodySubKey, $event)"
@copy="onCopy(rowIndex, col)" :item="getBodySubItem(col)"
v-model="row[col.bodySubKey]"
@change="onBodySubValueChange(rowIndex, colIndex, $event,)"
:error="hasError(rowIndex, colIndex, col.bodySubKey)"
@update:error="onErrorUpdate(rowIndex, colIndex, col.bodySubKey, $event)"
:orange-bg="hasOrangeBg(rowIndex, colIndex, col.bodySubKey)" />
</template>
<template v-if="col.bodySubType === 'input'">
<template v-if="col.bodySubType === 'inputNumber' || col.bodySubType === 'input'">
<HandleFormItem :fieldKey="prefixKey + '_' + col.bodySubKey + '_' + rowIndex" <HandleFormItem :fieldKey="prefixKey + '_' + col.bodySubKey + '_' + rowIndex"
:fieldItemLabel="fieldItemLabel" type="input"
:fieldItemLabel="fieldItemLabel" :type="col.bodySubType"
@blur="onSubBlur(rowIndex, col.bodySubKey, $event)" @blur="onSubBlur(rowIndex, col.bodySubKey, $event)"
@copy="onCopy(rowIndex, col)" :item="getBodySubItem(col)" @copy="onCopy(rowIndex, col)" :item="getBodySubItem(col)"
v-model="row[col.bodySubKey]" v-model="row[col.bodySubKey]"
@change="onBodySubValueChange(rowIndex, colIndex, $event,)"
:error="hasError(rowIndex, colIndex, col.bodySubKey)"
@update:error="onErrorUpdate(rowIndex, colIndex, col.bodySubKey, $event)"
:orange-bg="hasOrangeBg(rowIndex, colIndex, col.bodySubKey)" />
</template>
<template v-else-if="col.bodySubType === 'select'">
<HandleFormItem :fieldKey="prefixKey + '_' + col.bodySubKey + '_' + rowIndex"
:fieldItemLabel="fieldItemLabel" type="select" class="body-select"
@blur="onSubBlur(rowIndex, col.bodySubKey, $event)"
:item="getBodySubItem(col, rowIndex)" v-model="row[col.bodySubKey]"
@change="onBodySubValueChange(rowIndex, colIndex, $event, row, 'select')"
@change="onBodySubValueChange(rowIndex, colIndex, $event, row, col.bodySubType)"
:error="hasError(rowIndex, colIndex, col.bodySubKey)" :error="hasError(rowIndex, colIndex, col.bodySubKey)"
@update:error="onErrorUpdate(rowIndex, colIndex, col.bodySubKey, $event)" @update:error="onErrorUpdate(rowIndex, colIndex, col.bodySubKey, $event)"
:orange-bg="hasOrangeBg(rowIndex, colIndex, col.bodySubKey)" /> :orange-bg="hasOrangeBg(rowIndex, colIndex, col.bodySubKey)" />
</template> </template>
<template v-else-if="col.bodySubType === 'span'"> <template v-else-if="col.bodySubType === 'span'">
<div class="body-span"> <div class="body-span">
{{ row[col.bodySubKey] }} {{ row[col.bodySubKey] }}

+ 1
- 1
src/components/Template/HandleFormItem.vue View File

@ -1673,7 +1673,7 @@ export default {
.error-border { .error-border {
.el-input-group__prepend, .el-input-group__prepend,
input,
.el-input__inner,
textarea, textarea,
.el-select, .el-select,
.clickable, .clickable,

Loading…
Cancel
Save