<template>
  <el-dialog title="社保人员信息" v-model="visible" width="80%" append-to-body draggable @close="close"
    :close-on-click-modal="false">
    <div v-loading="loading">
      <!-- <div slot="title" class="dialog-title-container">
      <span class="title-label"><i class="el-icon-document" /> 工资信息</span>
      <i class="el-icon-close" @click="close" />
    </div> -->
      <!-- 功能按钮 -->
      <div style="padding: 8px 24px 16px 24px">
        <el-form size="small" label-width="100px" v-model="form">
          <el-row :gutter="30">
            <el-col :span="12">
              <el-form-item label="客户名称">
                <div>{{ form.companyName }}</div>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="所属月份">
                <div>{{ form.year }}-{{ form.month }}</div>
              </el-form-item>
            </el-col>
            <el-col v-if="form.status === 4" :span="12">
              <el-form-item label="驳回原因">
                <div>{{ form.feedbackContent }}</div>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="政务网账号" required class="edit-label">
                <template #label>
                  <div>
                    政务网账号<el-button v-if="form.isFirstSocialSecurity === 1" type="primary" link icon="Edit"
                      @click="changeEdit" />
                  </div>
                </template>
                <el-input v-if="form.isFirstSocialSecurity === 0 || editStatus" v-model="form.governmentAccountNo"
                  placeholder="请输入政务网账号" />
                <div v-else>{{ form.governmentAccountNo }}</div>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="政务网密码" required class="edit-label">
                <template #label>
                  <div>
                    政务网密码<el-button v-if="form.isFirstSocialSecurity === 1" type="primary" link icon="Edit"
                      @click="changeEdit" />
                  </div>
                </template>
                <el-input v-if="form.isFirstSocialSecurity === 0 || editStatus" v-model="form.governmentPassword"
                  placeholder="请输入政务网密码" @blur="
                  (value) => passwordCheckHandler(value, 'governmentPassword')
                " />
                <div v-else>{{ form.governmentPassword }}</div>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="社保账号" required class="edit-label">
                <template #label>
                  <div>
                    社保账号<el-button v-if="form.isFirstSocialSecurity === 1" type="primary" link icon="Edit"
                      @click="changeEdit" />
                  </div>
                </template>
                <el-input v-if="form.isFirstSocialSecurity === 0 || editStatus" v-model="form.socialSecurityAccountNo"
                  placeholder="请输入社保账号" />
                <div v-else>{{ form.socialSecurityAccountNo }}</div>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="社保密码" required class="edit-label">
                <template #label>
                  <div>
                    社保密码<el-button v-if="form.isFirstSocialSecurity === 1" type="primary" link icon="Edit"
                      @click="changeEdit" />
                  </div>
                </template>
                <el-input v-if="form.isFirstSocialSecurity === 0 || editStatus" v-model="form.socialSecurityPassword"
                  placeholder="请输入社保密码" @blur="
                  (value) =>
                    passwordCheckHandler(value, 'socialSecurityPassword')
                " />
                <div v-else>{{ form.socialSecurityPassword }}</div>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="用工密码" required class="edit-label">
                <template #label>
                  <div>
                    用工密码<el-button v-if="form.isFirstSocialSecurity === 1" type="primary" link icon="Edit"
                      @click="changeEdit" />
                  </div>
                </template>
                <el-input v-if="form.isFirstSocialSecurity === 0 || editStatus" v-model="form.employeePassword"
                  placeholder="请输入用工密码" @blur="
                  (value) => passwordCheckHandler(value, 'employeePassword')
                " />
                <div v-else>{{ form.employeePassword }}</div>
              </el-form-item>
            </el-col>
            <el-col :span="24" class="details-container">
              <!--操作按钮 开始-->
              <div class="details-head">
                <div class="title">
                  <i class="fa fa-th-list" aria-hidden="true" /> 人员信息
                </div>
                <el-button class="button-class" type="primary" icon="plus" size="small" @click="handleEmployeeCreate">
                  新增</el-button>
                <el-button class="button-class" v-if="selections.length > 0" type="danger" size="small" icon="delete"
                  @click="handleEmployeeBatchDelete">删除</el-button>
                <el-button type="danger" v-if="selections.length > 0" size="small" icon="delete" class="button-class"
                  @click="handleEmployeeNotBatchDelete">取消删除
                </el-button>
              </div>
              <div class="details-body">
                <div>
                  <el-table ref="sourceTable" :data="form.details" size="small" max-height="490px" border show-summary
                    :summary-method="getSummaries" highlight-current-row header-row-class-name="list-header-row"
                    :row-class-name="tableRowClassName" class="salary-table" @selection-change="handleCheckChange"
                    @current-change="handleCurrentChange">
                    <el-table-column type="selection" width="50" align="center" />
                    <el-table-column type="index" label="序号" width="50" align="center" />
                    <el-table-column label="姓名" width="80" align="center">
                      <template #default="scope">
                        <div>
                          <el-input v-model="scope.row.employeeName" size="small" placeholder="姓名"
                            style="width: 100%" />
                        </div>
                        <span style="
                          color: red;
                          position: absolute;
                          z-index: 10;
                          top: 4px;
                          right: 12px;
                        ">*</span>
                      </template>
                    </el-table-column>
                    <el-table-column label="电话号码" width="130" align="center">
                      <template #default="scope">
                        <div>
                          <el-input v-model="scope.row.phone" size="small" minlength="1" maxlength="11"
                            placeholder="电话号码" style="width: 100%" oninput="value=value.replace(/[^\d]/g, '')" />
                        </div>
                        <span style="
                          color: red;
                          position: absolute;
                          z-index: 10;
                          top: 4px;
                          right: 12px;
                        ">*</span>
                      </template>
                    </el-table-column>
                    <el-table-column label="身份证正面" width="120" align="center">
                      <template #default="scope">
                        <div>
                          <!-- <el-upload
                          action="#"
                          :http-request="
                            (params) => upload(params, scope.row, 'idCardImage')
                          "
                          :with-credentials="true"
                          :show-file-list="false"
                        >
                          <template v-if="scope.row.idCardImage === ''">
                            <div class="el-upload__text" style="color: blue">
                              点击上传
                            </div>
                          </template>
                          <img
                            v-else
                            class="img"
                            :src="baseUrl + '/' + scope.row.idCardImage"
                            alt=""
                          />
                        </el-upload> -->
                          <div>
                            <div id="preview" v-on:paste="handlePaste($event,scope.row,'idCardImage')"
                              v-if="scope.row.idCardImage === ''">
                              <span>将图片粘贴至此</span>
                            </div>
                            <div class="image-container" v-else>
                              <el-image class="img" :src="baseUrl + scope.row.idCardImage" alt=""
                                preview-teleported="true" fit="contain" :preview-src-list="srcList"
                                @click="vbs(baseUrl + scope.row.idCardImage)" />
                              <!-- 删除按钮 -->
                              <el-icon v-if="scope.row.idCardImage !== ''" @click="scope.row.idCardImage = ''"
                                class="delete-button">
                                <Delete />
                              </el-icon>
                            </div>
                          </div>

                        </div>
                        <span style="
                          color: red;
                          position: absolute;
                          z-index: 10;
                          top: 4px;
                          right: 12px;
                        ">*</span>
                      </template>
                    </el-table-column>
                    <el-table-column label="身份证反面" width="120" align="center">
                      <template #default="scope">
                        <div>
                          <!-- <el-upload
                          action="#"
                          :http-request="
                            (params) =>
                              upload(params, scope.row, 'idCardImageBack')
                          "
                          :with-credentials="true"
                          :show-file-list="false"
                        >
                          <template v-if="scope.row.idCardImageBack === ''">
                            <div class="el-upload__text" style="color: blue">
                              点击上传
                            </div>
                          </template>
                          <img
                            v-else
                            class="img"
                            :src="baseUrl + '/' + scope.row.idCardImageBack"
                            alt=""
                          />
                        </el-upload> -->
                          <div>
                            <div id="preview2" v-on:paste="handlePaste($event,scope.row,'idCardImageBack')"
                              v-if="scope.row.idCardImageBack === ''">
                              <span>将图片粘贴至此</span>
                            </div>

                            <div class="image-container" v-else>
                              <el-image class="img" :src="baseUrl + scope.row.idCardImageBack" alt=""
                                preview-teleported="true" fit="contain" :preview-src-list="srcListback"
                                @click="vbsBack(baseUrl + scope.row.idCardImageBack)" />
                              <!-- 删除按钮 -->
                              <el-icon v-if="scope.row.idCardImageBack !== ''" @click="scope.row.idCardImageBack = ''"
                                class="delete-button">
                                <Delete />
                              </el-icon>
                            </div>
                          </div>
                        </div>
                        <span style="
                          color: red;
                          position: absolute;
                          z-index: 10;
                          top: 4px;
                          right: 12px;
                        ">*</span>
                      </template>
                    </el-table-column>
                    <el-table-column label="采暖费" width="100" align="center">
                      <template #default="scope">
                        <div>
                          <el-input-number v-model="scope.row.heatingFee" :precision="2" :controls="false"
                            style="width: 100%; align: left" size="small" placeholder="采暖费" />
                        </div>
                        <!-- <span
                        style="
                          color: red;
                          position: absolute;
                          z-index: 10;
                          top: 4px;
                          right: 12px;
                        "
                        >*</span
                      > -->
                      </template>
                    </el-table-column>
                    <el-table-column label="基数" width="100" align="center">
                      <template #default="scope">
                        <div>
                          <el-input-number v-model="scope.row.cardinalNumber" :precision="2" :controls="false"
                            style="width: 100%; align: left" size="small" placeholder="基数" />
                        </div>
                        <span style="
                          color: red;
                          position: absolute;
                          z-index: 10;
                          top: 4px;
                          right: 12px;
                        ">*</span>
                      </template>
                    </el-table-column>
                    <el-table-column label="医疗基数" width="100" align="center">
                      <template #default="scope">
                        <div>
                          <el-input-number v-model="scope.row.medicalCardinalNumber" :precision="2" :controls="false"
                            style="width: 100%" size="small" placeholder="基数" />
                        </div>
                        <span style="
                          color: red;
                          position: absolute;
                          z-index: 10;
                          top: 4px;
                          right: 12px;
                        ">*</span>
                      </template>
                    </el-table-column>
                    <!-- <el-table-column label="签名" width="100" header-align="center" required>
                  </el-table-column> -->
                    <el-table-column label="备注" header-align="center">
                      <template #default="scope">
                        <div>
                          <el-input v-model="scope.row.remark" size="small" placeholder="备注" />
                        </div>
                      </template>
                    </el-table-column>
                  </el-table>
                </div>
              </div>
            </el-col>
            <el-col :span="24">
              <el-divider />
            </el-col>
            <el-col :span="24">
              <el-form-item label="社保人员变更">
                <el-select v-model="form.isChanged" placeholder="请选择" style="width: 100%">
                  <el-option v-for="item in yesOrNo" :key="item.label" :label="item.label" :value="item.value" />
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="24">
              <el-form-item label="备注">
                <el-input v-model.trim="form.content" maxlength="200" show-word-limit type="textarea" rows="2" />
              </el-form-item>
            </el-col>
          </el-row>
        </el-form>
      </div>
      <div class="form-btns-container" style="height: 40px">
        <el-button size="small" style="float: right; margin-left: 12px; margin-right: 12px" icon="close"
          @click="close">取消
        </el-button>
        <el-button size="small" type="primary" icon="Finished" style="float: right"
          @click="handleSave(2)">保存</el-button>
        <el-button type="warning" size="small" icon="Edit" style="float: right" @click="handleSave(1)">
          待确认</el-button>
      </div>
    </div>
    <!-- <feedback-dialog ref="feedbackDialogView" :parent="this" />
    <print-dialog ref="printDialog" :parent="this" /> -->
  </el-dialog>
</template>
<script setup>
  import {
    getDetail,
    saveDetail,
    updateDetail,
    checkEmployees,
  } from "@/api/business/production/socialSecurityConfirm";
  import { uploadFile } from "@/api/tool/file";
  import zTool from '@/utils/zTool'
  import { ref } from "vue";
  import { yesOrNo } from "@/utils/default";
  const { proxy } = getCurrentInstance();
  const visible = ref(false);
  const width = ref(800);
  const selections = ref([]);
  const currentSource = ref(null);
  const editStatus = ref(false);
  const baseUrl = ref(import.meta.env.VITE_APP_BASE_API);
  const props = defineProps({
    getList: {
      type: Function,
      default: () => { },
    },
  });
  const tempFile = ref(null)
  const srcList = ref([
    "https://elevator4s-oss.oss-cn-hangzhou.aliyuncs.com/2021/05/07/b632db6a837f46e0950670277fa9e5e5multipartFile.png"
  ]);
  const srcListback = ref([
    "https://elevator4s-oss.oss-cn-hangzhou.aliyuncs.com/2021/05/07/b632db6a837f46e0950670277fa9e5e5multipartFile.png"
  ]);
  const { getList } = toRefs(props);
  const total = ref(0);
  const loading = ref(false)
  const employeeEmptyData = {
    id: null,
    title: "",
    remark: "",
    employeeName: "",
    departmentName: "",
    idCardImage: "",
    idCardImageBack: "",
    idiograph: "",
    details: [],
    editStatus: true,
  };

  const form = ref({});

  const emptyForm = {
    details: [],
  };

  function open(detail) {
    visible.value = true;
    form.value = detail;
    loadData();
  }

  function loadData() {
    loading.value = true
    getDetail(form.value).then((res) => {
      form.value = { ...proxy.deepClone(emptyForm), ...res.data };
      if (form.value.status === 2 || form.value.status === 3) {
        proxy.$modal.msgError("该信息已提交待审核");
        close();
      }
      computeTotal();
    }).finally(() => {
      loading.value = false
    });
  }

  function close() {
    visible.value = false;
    reset();
  }

  function reset() {
    form.value = proxy.deepClone(emptyForm);
  }

  function printSalary() { }
  function exportSalary() { }

  function handleCurrentChange(row) {
    currentSource.value = row;
  }

  function handleCheckChange(selection) {
    selections.value = selection.map((item) => item);
  }

  function handleEmployeeCreate() {
    // 此处必须进行深拷贝，否则添加的明细，将都指向了一个对象
    employeeEmptyData.add = 1
    employeeEmptyData.changeStatus = 1
    const _newSource = JSON.parse(JSON.stringify(employeeEmptyData));
    form.value.details.push(_newSource);
    handleCurrentChange(_newSource);
  }

  function handleEmployeeBatchDelete() {
    proxy.$modal
      .confirm("确定删除?")
      .then(() => {
        // form.value.details = form.value.details.filter(
        //   (item) => selections.value.indexOf(item) === -1
        // );
        for (let index = 0; index < form.value.details.length; index++) {
          let x = form.value.details[index];
          for (let index2 = 0; index2 < selections.value.length; index2++) {
            let y = selections.value[index2];
            if(x.changeStatus == 1){
              x.isnew = true;
            }
            if (x.phone + x.employeeName === y.phone + y.employeeName && y.add !== 1) {
              x.changeStatus = 2;
            }
            else {
              let selectionsFilter = selections.value.filter((item) => item.add == 1);
              form.value.details = form.value.details.filter(
                (item) => selectionsFilter.indexOf(item) === -1
              );
            }
          }
        }

      })
      .catch(() => {
        proxy.$modal.msg("已取消删除");
      });
  }
  function tableRowClassName({ row, index }) {
    if (row.changeStatus === 1) {
      return "list-row add-row";
    } else if(row.isnew && row.changeStatus === 2) {
      return "list-row new-delete-row";
    } else if (row.changeStatus === 2) {
      return "list-row delete-row";
    }else {
      return "list-row";
    }
  }
  function rowChangeSum(row) {
    let actuallySalary = 0;
    actuallySalary += row.planSalary == null ? 0 : row.planSalary;
    actuallySalary += row.bonusAmount == null ? 0 : row.bonusAmount;
    actuallySalary -= row.endowmentInsurance == null ? 0 : row.endowmentInsurance;
    actuallySalary -= row.medicalInsurance == null ? 0 : row.medicalInsurance;
    actuallySalary -=
      row.unemploymentBenefit == null ? 0 : row.unemploymentBenefit;
    actuallySalary -=
      row.seriousIllnessInsurance == null ? 0 : row.seriousIllnessInsurance;
    actuallySalary -= row.housingFund == null ? 0 : row.housingFund;
    actuallySalary -=
      row.currentIndividualIncomeTax == null ? 0 : row.currentIndividualIncomeTax;
    actuallySalary -= row.otherCut == null ? 0 : row.otherCut;
    row.actuallySalary = actuallySalary;
    computeTotal();
  }

  function computeTotal() {
    let totalSalay = 0;
    form.value.details.forEach((l) => {
      totalSalay += l.actuallySalary == null ? 0 : l.actuallySalary;
    });
    form.value.amount = totalSalay.toFixed(2);
  }
  function vbs(val) {
    srcList.value = []
    srcList.value.push(val)
  }
  function vbsBack(val) {
    srcListback.value = []
    srcListback.value.push(val)
  }
  function getSummaries(param) {
    const { columns, data } = param;
    const sums = [];
    columns.forEach((column, index) => {
      if (index === 0) {
        sums[index] = "合计";
        return;
      } else if (index === 1) {
        sums[index] = "";
        return;
      }
      const values = data.map((item) => Number(item[column.property]));

      if (!values.every((value) => isNaN(value))) {
        sums[index] = values.reduce((prev, curr) => {
          const value = Number(curr);
          if (!isNaN(value)) {
            return (Number(prev) + Number(curr)).toFixed(2);
          } else {
            return Number(prev).toFixed(2);
          }
        }, 0);
      } else {
        sums[index] = "";
      }
    });
    return sums;
  }

  async function handleSave(status) {
    for (let i = 0; i < form.value.details.length; i++) {
      const l = form.value.details[i];
      // 数据校验
      if (l.employeeName == null || l.employeeName === "") {
        proxy.$modal.msgError(`第${i + 1}行姓名不能为空`);
        return;
      }
      if (l.phone == null || l.phone === "") {
        proxy.$modal.msgError(`第${i + 1}行电话不能为空`);
        return;
      }
      // 正则表达式匹配身份证号的格式
      const regExp = /1[3-9]\d{9}/;
      if (!regExp.test(l.phone)) {
        proxy.$modal.msgError(`第${i + 1}行请输入正确的电话号码！`);
        return;
      }
      if (!l.idCardImage) {
        proxy.$modal.msgError(`第${i + 1}行身份证正面照不能为空`);
        return;
      }
      if (!l.idCardImageBack) {
        proxy.$modal.msgError(`第${i + 1}行身份证反面照不能为空`);
        return;
      }
      if (!l.cardinalNumber) {
        proxy.$modal.msgError(`第${i + 1}行基数不能为空`);
        return;
      }
      // if (!l.medicalCardinalNumber) {
      //   proxy.$modal.msgError(`第${i + 1}行医疗基数不能为空`);
      //   return;
      // }
    }
    if (form.value.isFirstSocialSecurity === 0) {
      if (!form.value.governmentAccountNo) {
        proxy.$modal.msgError("请输入政务网账号");
        return;
      }
      if (!form.value.governmentPassword) {
        proxy.$modal.msgError("请输入政务网密码");
        return;
      }
      if (!passwordCheck(form.value.governmentPassword)) {
        proxy.$modal.msgError("请输入正确的政务网密码");
        return;
      }
      if (!form.value.socialSecurityAccountNo) {
        proxy.$modal.msgError("请输入社保账号");
        return;
      }
      if (!form.value.socialSecurityPassword) {
        proxy.$modal.msgError("请输入社保密码");
        return;
      }
      if (!passwordCheck(form.value.socialSecurityPassword)) {
        proxy.$modal.msgError("请输入正确的社保密码");
        return;
      }
      if (!form.value.employeePassword) {
        proxy.$modal.msgError("请输入用工密码");
        return;
      }
      if (!passwordCheck(form.value.employeePassword)) {
        proxy.$modal.msgError("请输入正确的用工密码");
        return;
      }
    }
    const res = await checkEmployees(form.value);
    if (!res.data) {
      proxy.$modal.confirm("该月社保人员出现变更确定保存么？").then(() => {
        const saveValue = proxy.deepClone(form.value);
        saveValue.isChanged = 1;
        // saveValue.status = 2;
        saveValue.status = status;
        if (saveValue.id == null) {
          saveDetail(saveValue).then((res) => {
            proxy.$modal.msgSuccess("保存成功");
            reset();
            close();
            getList.value();
          });
        } else {
          updateDetail(saveValue).then((res) => {
            proxy.$modal.msgSuccess("保存成功");
            reset();
            close();
            getList.value();
          });
        }
      });
    } else {
      proxy.$modal
        .confirm("确认保存么？")
        .then(() => {
          const saveValue = proxy.deepClone(form.value);
          //saveValue.status = 2;
          saveValue.status = status
          loading.value = true
          if (saveValue.id == null) {
            saveDetail(saveValue).then((res) => {
              proxy.$modal.msgSuccess("保存成功");
              reset();
              close();
              getList.value();
            }).finally(() => {
              loading.value = false
            });;
          } else {
            updateDetail(saveValue).then((res) => {
              proxy.$modal.msgSuccess("保存成功");
              reset();
              close();
              getList.value();
            });
          }
        })
        .catch((err) => {
          proxy.$modal.msg("取消保存");
        }).finally(() => {
          loading.value = false
        });;
    }
  }
  // 监听粘贴操作
  function handlePaste(event, row, field) {
    const items = (event.clipboardData || window.clipboardData).items;
    let file = null;
    if (!items || items.length === 0) {
      this.$message.error("当前浏览器不支持本地");
      return;
    }
    // 搜索剪切板items
    for (let i = 0; i < items.length; i++) {
      if (items[i].type.indexOf("image") !== -1) {
        file = items[i].getAsFile();
        break;
      }
    }
    if (!file) {
      this.$message.error("粘贴内容非图片");
      return;
    }
    zTool.addWatermark(file, "仅供社保使用").then(watermarkedFile => {
      tempFile.value = watermarkedFile
      uploadIdImage2(tempFile, row, field)
    })
    // tempFile.value = file;
    // uploadIdImage2(tempFile, row, field)
  }

  function uploadIdImage2(tempFile, row, field) {
    const formData = new FormData();
    formData.append("file", tempFile.value);
    uploadFile(formData).then((res) => {
      if (res.code === 200) {
        const file = {};
        file.fileType =
          res.newFileName.split(".")[res.newFileName.split(".").length - 1];
        if (file.fileType !== "png" && file.fileType !== "jpg") {
          proxy.$modal.msgError("文件类型错误,只能上传png,jpg格式");
          return;
        }
        file.fileName = res.newFileName;
        file.url = res.url;
        file.originalFileName = res.originalFilename;
        file.fileUrl = res.fileName;
        row[field] = file.fileUrl;
      }
    });
  }
  function passwordCheckHandler(value, field) {
    // console.log(value)
    if (!passwordCheck(form.value[field])) {
      proxy.$modal.msgError("请输入正确密码");
    }
  }
  function handleEmployeeNotBatchDelete() {
    let cancelDelete = selections.value.filter((item) => {
      return item.changeStatus == 2;
    })
    if (cancelDelete == null || cancelDelete.length <= 0) {
      proxy.$modal.msgError("请选择并只能选择被删除的数据");
    } else {
      for (let index = 0; index < form.value.details.length; index++) {
        let x = form.value.details[index];
        for (let index2 = 0; index2 < selections.value.length; index2++) {
          let y = selections.value[index2];
          if (x.phone + x.employeeName === y.phone + y.employeeName && y.add !== 1) {
            x.changeStatus = 0;
          }

        }
      }
    }
  }
  function passwordCheck(value) {
    const pattern = /^[A-Za-z0-9~!@#$%^&*()_+-=]*$/;
    if (!pattern.test(value)) {
      return false;
    }
    return true;
  }

  function upload(param, row, field) {
    const formData = new FormData();
    formData.append("file", param.file);
    uploadFile(formData).then((res) => {
      if (res.code === 200) {
        const file = {};

        file.fileType =
          res.newFileName.split(".")[res.newFileName.split(".").length - 1];
        if (file.fileType !== "png" && file.fileType !== "jpg") {
          proxy.$modal.msgError("文件类型错误,只能上传png,jpg格式");
          return;
        }
        file.fileName = res.newFileName;
        file.url = res.url;
        file.originalFileName = res.originalFilename;
        file.fileUrl = res.fileName;
        row[field] = file.fileUrl;
      }
    });
  }

  function changeEdit() {
    editStatus.value = !editStatus.value;
  }

  // 暴露给父组件的方法
  defineExpose({
    open,
  });
</script>
<style scoped>
  .image-container {
    display: flex;
    /* 使用Flex布局 */
    align-items: center;
    /* 垂直居中 */
  }

  .delete-button {
    margin-left: 20px;
    cursor: pointer;
  }

  .img {
    width: 23px;
    height: 23px;
    display: flex;
    justify-content: center;
    align-items: center;
    margin-left: 20px;
  }

  .button-class {
    margin-top: 10px;
    margin-bottom: 10px;
  }

  ::v-deep(.el-upload) {
    display: flex;
    text-align: center;
    justify-content: center;
    cursor: pointer;
    outline: 0;
  }

  .required::after {
    content: "*";
    color: red;
  }
</style>
<style>
  .el-table .delete-row {
    background-color: rgb(251, 159, 173);
  }
  .new-delete-row {
    display: none;
  }
  .el-table .add-row {
    background-color: rgb(184, 234, 147);
  }
</style>