<template>
  <el-dialog
    :title="title"
    v-model="localOpen"
    width="800px"
    append-to-body
    @close="cancel"
  >
    <template #header>
      <div class="custom-header">
        <span>{{ title }}</span>
      </div>
    </template>
    <div class="scrollable-content">
      <el-form ref="definitionRef" :model="fromModel" label-width="140px">
        <el-row>
          <el-col :span="8">
            <el-form-item label-width="100" label="项目编号" prop="itemNo">
              <el-input v-model="fromModel.itemNo" disabled="true" />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label-width="100" label="项目名称" prop="chargeName">
              <el-input v-model="fromModel.chargeName" disabled="true" />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label-width="100" label="规格" prop="totalVolume">
              <el-input v-model="fromModel.totalVolume" disabled="true" />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label-width="100" label="单位" prop="unitCode">
              <el-input v-model="fromModel.unitCode" disabled="true" />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label-width="100" label="拆零比" prop="partPercent">
              <el-input-number
                v-model="fromModel.partPercent"
                :min="0"
                :max="999999.99"
                :step="0.01"
                :precision="2"
                controls-position="right"
                :controls="false"
                disabled="true"
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item
              label-width="100"
              label="指导价"
              prop="conditionYbCode"
            >
              <el-input-number
                v-model="fromModel.conditionYbCode"
                :min="0"
                :max="999999.99"
                :step="0.01"
                :precision="2"
                controls-position="right"
                :controls="false"
                disabled="true"
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label-width="100" label="价格" prop="amount">
              <el-input-number
                v-model="fromModel.amount"
                :min="0"
                :max="999999.99"
                :step="0.01"
                :precision="2"
                controls-position="right"
                :controls="false"
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item
              label-width="100"
              label="拆零最小单位"
              prop="partMinUnitCode"
            >
              <el-input v-model="fromModel.partMinUnitCode" disabled="true" />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item
              label-width="100"
              label="拆零指导价"
              prop="partConditionPrice"
            >
              <el-input-number
                v-model="fromModel.partConditionPrice"
                :min="0"
                :max="999999.99"
                :step="0.01"
                :precision="2"
                controls-position="right"
                :controls="false"
                disabled="true"
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label-width="100" label="拆零价格" prop="price">
              <el-input-number
                v-model="fromModel.price"
                :min="0"
                :max="999999.99"
                :step="0.01"
                :precision="2"
                :controls="false"
                controls-position="right"
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label-width="100" label="状态" prop="statusEnum">
              <el-select
                v-model="fromModel.statusEnum"
                placeholder="请选择状态"
              >
                <el-option
                  v-for="item in options"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="24">
            <el-form-item label-width="100" label="调价说明" prop="description">
              <el-input
                v-model="fromModel.description"
                style="width: 100%"
                autosize
                type="textarea"
                placeholder="请输入调价说明"
                maxlength="200"
                show-word-limit
              />
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
    </div>
    <template #footer>
      <div class="dialog-footer">
        <el-button type="primary" @click="submitForm">确 定</el-button>
        <el-button @click="cancel">取 消</el-button>
      </div>
    </template>
  </el-dialog>
</template>
<script setup>
const emit = defineEmits(["submit", "update:open"]);
const props = defineProps({
  title: String,
  open: Boolean,
  formData: Object,
  statusOptions: Object
});
const localOpen = ref(props.open);
const definitionRef = ref(null);
const fromModel = ref(props.formData);
const options = ref([]);
/**
 * 提交表单函数
 */
const submitForm = () => {
  // 调用表单引用上的validate方法进行表单验证
  definitionRef.value.validate((valid) => {
    if (valid) {
      // 验证成功，触发'submit'事件并传递表单数据
      fromModel.value.statusEnum = Number(fromModel.value.statusEnum);
      // fromModel.value.statusEnum = "active"
      emit("submit", fromModel.value);
    } else {
      // 验证失败，显示错误消息
      ElMessage.warning("请确认后再提交");
      return false;
    }
  });
};

/**
 * 取消操作的函数
 */
const cancel = () => {
  definitionRef.value.resetFields();
  emit("update:open", false);
};

watch(
  () => props.open,
  (newVal) => {
    localOpen.value = newVal;
    fromModel.value = props.formData;
    options.value = props.statusOptions
    if (!newVal) {
      // 如果对话框关闭，重置表单
      definitionRef.value.resetFields();
    }
  }
);
</script>
<style lang="scss" scoped>
:deep(.el-input-number .el-input__inner){
  -webkit-appearance: none;
  -moz-appearance: textfield;
  text-align: left;
  line-height: 1;
}
</style>