<template>
  <div class="pageIndexClass">
    <div>
      <byTable :source="sourceList.data" :pagination="sourceList.pagination" :config="config" :loading="loading" highlight-current-row
               :selectConfig="selectConfig" :action-list="[
              
        ]" @get-list="getList">

        <template #list="{ item }">
          <div style="width:100%">
            <span v-for="(product ,index) in item.produceOrderDetailList" style="margin-right:15px">
              <el-popover placement="top-start" :width="300" trigger="hover">
                <div>
                  <div>产品编码：{{product.productCode}}</div>
                  <div>产品名称：{{product.productName}}</div>
                  <div>产品尺寸：{{product.productLength}}cm*{{product.productWidth}}cm*{{product.productHeight}}cm</div>
                </div>
                <template #reference>
                  <el-progress type="circle" :percentage="(Number(product.finishQuantity) / Number(product.quantity))*100" width="60"
                               :status="(Number(product.finishQuantity) / Number(product.quantity))*100 == 100 ? 'success' : ''" />
                </template>
              </el-popover>

            </span>

          </div>
        </template>

      </byTable>
    </div>
    <el-dialog :title="modalType == 'add' ? '添加店铺' : '编辑店铺'" v-model="dialogVisible" width="500px" destroy-on-close>
      <byForm :formConfig="formConfig" :formOption="formOption" v-model="formData.data" :rules="rules" ref="formDom" v-loading="submitLoading">
      </byForm>
      <template #footer>
        <el-button @click="dialogVisible = false" size="defualt">取 消</el-button>
        <el-button type="primary" @click="submitForm()" size="defualt" :loading="submitLoading">
          确 定
        </el-button>
      </template>
    </el-dialog>

  </div>
</template>

<script setup>
import byTable from "@/components/byTable/index";
import byForm from "@/components/byForm/index";
const { proxy } = getCurrentInstance();
const loading = ref(false);
const submitLoading = ref(false);
const sourceList = ref({
  data: [],
  pagination: {
    total: 3,
    pageNum: 1,
    pageSize: 10,
    keyword: "",
    produceStatus: "",
    staDeliveryPeriod: "",
    endDeliveryPeriod: "",
    beginTime: "",
    endTime: "",
  },
});
const treeData = ref([]);
const dialogVisible = ref(false);
const modalType = ref("add");
const statusData = ref([
  {
    label: "未开始",
    value: "0",
  },
  {
    label: "进行中",
    value: "1",
  },
  {
    label: "已完成",
    value: "2",
  },
]);
const selectConfig = computed(() => [
  {
    label: "生产状态",
    prop: "produceStatus",
    data: statusData.value,
  },
  {
    type: "time",
    label: "交期",
    placeholder: "开始日期",
    prop: "staDeliveryPeriod",
    placeholderOne: "结束日期",
    propOne: "endDeliveryPeriod",
  },
  {
    type: "time",
    label: "下单日期",
    placeholder: "开始日期",
    prop: "beginTime",
    placeholderOne: "结束日期",
    propOne: "endTime",
  },
]);
const config = computed(() => {
  return [
    {
      attrs: {
        label: "订单号",
        prop: "code",
        width: 150,
      },
    },
    {
      attrs: {
        label: "下单时间",
        prop: "createTime",
        width: 160,
      },
    },
    {
      attrs: {
        label: "交期",
        prop: "deliveryPeriod",
        width: 160,
      },
    },
    {
      attrs: {
        label: "生产状态",
        prop: "produceStatus",
        width: 120,
      },
      render(val) {
        return proxy.dictValueLabel(val, statusData.value);
      },
    },
    {
      attrs: {
        slot: "list",
        label: "产品生产进度",
        // prop: "name",
      },
    },
    {
      attrs: {
        label: "操作",
        width: "100",
        align: "center",
        fixed: "right",
      },
      renderHTML(row) {
        return [
          row.produceTime
            ? {}
            : {
                attrs: {
                  label: "投产",
                  type: "primary",
                  text: true,
                },
                el: "button",
                click() {
                  proxy
                    .msgConfirm()
                    .then((res) => {
                      proxy
                        .post("/produceOrder/putProduction", {
                          id: row.id,
                        })
                        .then((res) => {
                          proxy.msgTip("操作成功", 1);
                          getList();
                        });
                    })
                    .catch((err) => {});
                },
              },
        ];
      },
    },
  ];
});
const formData = reactive({
  data: {},
});
const formOption = reactive({
  inline: true,
  labelWidth: 100,
  itemWidth: 100,
});
const formDom = ref(null);
const formConfig = computed(() => {
  return [
    {
      type: "input",
      prop: "code",
      label: "店铺编号",
      itemWidth: 100,
      disabled: false,
    },
    {
      type: "input",
      prop: "name",
      label: "店铺名称",
      itemWidth: 100,
      disabled: false,
    },
    {
      type: "treeSelect",
      prop: "deptId",
      label: "负责部门",
      data: treeData.value,
      propsTreeLabel: "deptName",
      propsTreeValue: "deptId",
      itemWidth: 100,
      disabled: false,
    },
  ];
});
const rules = ref({
  deptId: [{ required: true, message: "请选择负责部门", trigger: "change" }],
  name: [{ required: true, message: "请输入店铺名称", trigger: "blur" }],
  code: [{ required: true, message: "请输入店铺编号", trigger: "blur" }],
});

const getList = async (req) => {
  sourceList.value.pagination = { ...sourceList.value.pagination, ...req };
  loading.value = true;
  proxy.post("/produceOrder/page", sourceList.value.pagination).then((res) => {
    sourceList.value.data = res.rows;
    sourceList.value.pagination.total = res.total;
    setTimeout(() => {
      loading.value = false;
    }, 200);
  });
};

const openModal = () => {
  dialogVisible.value = true;
  modalType.value = "add";
  formData.data = {
    definition: "2",
    fileList: [],
  };
  if (currencyData.value && currencyData.value.length > 0) {
    formData.data.currency = currencyData.value[0].dictKey;
    formData.data.costCurrency = currencyData.value[0].dictKey;
  }
};

const submitForm = () => {
  formDom.value.handleSubmit((valid) => {
    submitLoading.value = true;
    proxy.post("/shopInfo/" + modalType.value, formData.data).then(
      (res) => {
        proxy.msgTip("操作成功", 1);
        dialogVisible.value = false;
        submitLoading.value = false;
        getList();
      },
      (err) => {
        submitLoading.value = false;
      }
    );
  });
};

const getDtl = (row) => {
  modalType.value = "edit";
  proxy.post("/shopInfo/detail", { id: row.id }).then((res) => {
    formData.data = res;
    dialogVisible.value = true;
  });
};

getList();
</script>

<style lang="scss" scoped>
::v-deep(.el-progress__text) {
  font-size: 14px !important;
}
.content {
  padding: 20px;
}
</style>
