src/views/officeProcessAutomation/ApproveManage/approve-template/components/FormConfigEditor.vue
@@ -8,6 +8,7 @@
        placeholder="如:请填写报销事由、金额等"
        maxlength="200"
        show-word-limit
        :disabled="readonly"
        @input="emitOut"
      />
    </div>
@@ -23,11 +24,11 @@
        <div class="fce-toolbar-actions">
          <el-dropdown
            trigger="click"
            :disabled="disableImport"
            :disabled="disableImport || readonly"
            @visible-change="onImportDropdownVisible"
            @command="importFromTemplate"
          >
            <el-button size="small" :loading="templateImportLoading" :disabled="disableImport">
            <el-button size="small" :loading="templateImportLoading" :disabled="disableImport || readonly">
              从已有模板导入
            </el-button>
            <template #dropdown>
@@ -46,7 +47,7 @@
              </el-dropdown-menu>
            </template>
          </el-dropdown>
          <el-button type="primary" size="small" :icon="Plus" @click="addField">添加填报项</el-button>
          <el-button v-if="!readonly" type="primary" size="small" :icon="Plus" @click="addField">添加填报项</el-button>
        </div>
      </div>
@@ -76,7 +77,7 @@
              <el-tag v-if="field.required" size="small" type="danger" effect="plain">必填</el-tag>
              <el-tag v-if="isFieldLocked(field)" size="small" type="info" effect="plain">内置项</el-tag>
            </div>
            <div v-if="!isFieldLocked(field)" class="fce-card-btns">
            <div v-if="!isFieldDisabled(field)" class="fce-card-btns">
              <el-tooltip content="上移" placement="top">
                <el-button circle size="small" :disabled="index === 0" @click="moveField(index, -1)">
                  <el-icon><Top /></el-icon>
@@ -109,7 +110,7 @@
                    v-model="field.label"
                    placeholder="如:报销说明"
                    maxlength="50"
                    :disabled="isFieldLocked(field)"
                    :disabled="isFieldDisabled(field)"
                    @input="emitOut"
                  />
                </el-form-item>
@@ -120,7 +121,7 @@
                    v-model="field.key"
                    placeholder="如:summary"
                    maxlength="50"
                    :disabled="isFieldLocked(field)"
                    :disabled="isFieldDisabled(field)"
                    @input="emitOut"
                  />
                </el-form-item>
@@ -130,7 +131,7 @@
                  <el-select
                    v-model="field.type"
                    style="width: 100%"
                    :disabled="isFieldLocked(field)"
                    :disabled="isFieldDisabled(field)"
                    @change="onTypeChange(field)"
                  >
                    <el-option
@@ -155,7 +156,7 @@
                    inline-prompt
                    active-text="必填"
                    inactive-text="选填"
                    :disabled="isFieldLocked(field)"
                    :disabled="isFieldDisabled(field)"
                    @change="emitOut"
                  />
                </el-form-item>
@@ -168,7 +169,7 @@
                    :max="10"
                    controls-position="right"
                    style="width: 100%"
                    :disabled="isFieldLocked(field)"
                    :disabled="isFieldDisabled(field)"
                    @change="emitOut"
                  />
                </el-form-item>
@@ -180,7 +181,7 @@
                      v-model="field.min"
                      controls-position="right"
                      style="width: 100%"
                      :disabled="isFieldLocked(field)"
                      :disabled="isFieldDisabled(field)"
                      @change="emitOut"
                    />
                  </el-form-item>
@@ -193,7 +194,7 @@
                      :max="4"
                      controls-position="right"
                      style="width: 100%"
                      :disabled="isFieldLocked(field)"
                      :disabled="isFieldDisabled(field)"
                      @change="emitOut"
                    />
                  </el-form-item>
@@ -211,7 +212,7 @@
              :type="field.type === 'textarea' ? 'textarea' : 'text'"
              :rows="field.type === 'textarea' ? 2 : undefined"
              :placeholder="defaultPlaceholder(field)"
              :disabled="isFieldLocked(field)"
              :disabled="isFieldDisabled(field)"
              clearable
              @input="emitOut"
            />
@@ -223,7 +224,7 @@
              controls-position="right"
              placeholder="选填"
              style="width: 100%"
              :disabled="isFieldLocked(field)"
              :disabled="isFieldDisabled(field)"
              @change="emitOut"
            />
            <el-date-picker
@@ -234,7 +235,7 @@
              format="YYYY-MM-DD"
              value-format="YYYY-MM-DD"
              style="width: 100%"
              :disabled="isFieldLocked(field)"
              :disabled="isFieldDisabled(field)"
              clearable
              @change="emitOut"
            />
@@ -248,7 +249,7 @@
              format="YYYY-MM-DD HH:mm:ss"
              value-format="YYYY-MM-DD HH:mm:ss"
              style="width: 100%"
              :disabled="isFieldLocked(field)"
              :disabled="isFieldDisabled(field)"
              clearable
              @change="emitOut"
            />
@@ -260,7 +261,7 @@
              clearable
              filterable
              :loading="optionSourceLoading"
              :disabled="isFieldLocked(field)"
              :disabled="isFieldDisabled(field)"
              @change="emitOut"
            >
              <el-option
@@ -280,7 +281,7 @@
                  <el-select
                    v-model="field.optionSource"
                    style="width: 100%"
                    :disabled="isFieldLocked(field)"
                    :disabled="isFieldDisabled(field)"
                    @change="onOptionSourceChange(field)"
                  >
                    <el-option
@@ -304,7 +305,7 @@
                  link
                  size="small"
                  :icon="Plus"
                  :disabled="isFieldLocked(field)"
                  :disabled="isFieldDisabled(field)"
                  @click="addOption(field)"
                >
                  添加选项
@@ -319,21 +320,21 @@
                <el-input
                  v-model="opt.label"
                  placeholder="显示文本"
                  :disabled="isFieldLocked(field)"
                  :disabled="isFieldDisabled(field)"
                  @input="emitOut"
                />
                <el-input
                  v-model="opt.value"
                  placeholder="选项值"
                  class="fce-option-value"
                  :disabled="isFieldLocked(field)"
                  :disabled="isFieldDisabled(field)"
                  @input="emitOut"
                />
                <el-button
                  type="danger"
                  link
                  :icon="Delete"
                  :disabled="isFieldLocked(field) || field.options.length <= 1"
                  :disabled="isFieldDisabled(field) || field.options.length <= 1"
                  @click="removeOption(field, oi)"
                />
              </div>
@@ -382,6 +383,8 @@
  disableImport: { type: Boolean, default: false },
  /** 系统内置模板编辑时,打开弹窗即存在的填报项 _uid,不可改删 */
  lockedFieldUids: { type: Array, default: () => [] },
  /** 只读:整体不可编辑 */
  readonly: { type: Boolean, default: false },
});
const emit = defineEmits(["update:modelValue"]);
@@ -401,6 +404,10 @@
  return field?._uid != null && lockedUidSet.value.has(field._uid);
}
function isFieldDisabled(field) {
  return props.readonly || isFieldLocked(field);
}
function typeLabel(type) {
  return formFieldTypeLabel(type);
}