<template>
  <div class="system-user-container layout-padding">

    <el-card class="layout-padding-auto" shadow="hover">
      <div class="selectBoxes">
        <div class="selectItem" style="flex: 1;margin-right: 0">
          <div class="piliang">
            <el-button type="primary" size="small" @click="state.selectedDataShow = true">
              <span>已选中 {{ state.selectedData.length }} 条数据，去查看</span>
            </el-button>
            <el-date-picker
                v-model="state.chengNuoJiaoQiP"
                type="date"
                placeholder="批量修改选中承诺日期"
                size="small"
                style="width: 45%; margin-left: 12px"
                @change="chengNuoJiaoQiPFun('0')"
            />
            <el-date-picker
                v-model="state.newChengNuoJiaoQiP"
                type="date"
                placeholder="批量修改选中承诺最新交期"
                size="small"
                style="width: 45%; margin-left: 12px"
                @change="chengNuoJiaoQiPFun('1')"
            />
          </div>
        </div>
      </div>
      <avue-crud
          ref="crudRef"
          :data="state.data"
          :option="state.option"
          @selection-change="selectionChange"
          :table-loading="state.loading"
      >
        <template #fBillNo="{ row }">{{row.fBillNo}}</template>
        <template #fDate="{ row }">{{row.fDate}}</template>
        <template #fCancelStatus="{ row }">{{row.fCancelStatus === 'A' ? '未关闭' : '已关闭'}} </template>
        <template #materialName="{ row }">
          <el-tooltip :content="row.materialName" placement="top">
            <div class="multi-line-omit">{{ row.materialName }}</div>
          </el-tooltip>
        </template>
        <template #chengNuoJiaoQi="{ row }">
          <el-date-picker
              v-model="row.chengNuoJiaoQi"
              type="date"
              placeholder="日期"
              size="small"
              style="width: 220px"
              format="YYYY-MM-DD"
              value-format="YYYY-MM-DD"
              @change="batchSetChengNuoJiaoQiFun([{id:row.id,newTime:row.chengNuoJiaoQi}])"
          />
        </template>
        <template #newChengNuoJiaoQi="{ row }">
          <el-date-picker
              v-model="row.newChengNuoJiaoQi"
              type="date"
              placeholder="日期"
              size="small"
              style="width: 220px"
              format="YYYY-MM-DD"
              value-format="YYYY-MM-DD"
              @change="batchSetNewChengNuoJiaoQiFun([{id:row.id,newTime:row.newChengNuoJiaoQi}])"
          />
        </template>
      </avue-crud>
    </el-card>
    <selectedData ref="selectedDataRef" :showes="state.selectedDataShow" :listData="state.selectedData" @generateDocuments="generateDocumentsFun" @close="state.selectedDataShow = false"/>
  </div>
</template>

<script lang="ts" setup>
import {reactive, onMounted, computed, nextTick, ref} from 'vue';
import { useRouter,useRoute } from 'vue-router';
import { listApi } from '../../api/list/index';
import SelectedData from '/@/views/mssPurchaseOrder/selectedData.vue';
import {ElMessage, ElMessageBox} from 'element-plus';
const selectedDataRef = ref()
const route = useRoute()
// 定义变量内容
const state = reactive({
  page: {
    total: 1000,
    currentPage: 1,
    pageSize: 25,
  },
  option: {
    height: computed(() => window.innerHeight - (window.innerHeight * 0.18) + ''),
    tip: false,
    index: true,
    menuWidth: 120,
    border: true,
    delBtn: false,
    editBtn: false,
    align: 'center',
    // searchLabelWidth:100,
    selection: true,
    searchMenuSpan: 3,
    addBtn: false,
    menu: false,
    column: [
      { label: 'PO号', prop: 'fBillNo', /*search: true,*/ searchSpan: 3, width: '125' },
      { label: '采购日期', prop: 'fDate', /*search: true,*/ type: 'datetime', searchSpan: 6, searchRange: true },
      {
        label: '关闭状态',
        prop: 'fCancelStatus',
        dicData: [
          { label: '未关闭', value: 'A' },
          { label: '已关闭', value: 'B' },
        ],
        width: '90',
      },
      { label: '物料编码', prop: 'materialCode', width: '120' },
      { label: '物料名称', prop: 'materialName', width: '240' },
      { label: '采购单位', prop: 'unitName', width: '90' },
      { label: '采购数量', prop: 'qty', width: '90' },
      { label: '交货日期', prop: 'fDeliveryDate', width: '165' },
      {
        label: '业务状态',
        prop: 'fmrpCloseStatus' /*search: true,*/,
        searchSpan: 3,
        dicData: [
          { label: '正常', value: 'A' },
          { label: '业务关闭', value: 'B' },
        ],
        width: '90',
      },
      { label: '累计收料数量', prop: 'sendedQty', width: '110' },
      { label: '剩余收料数量', prop: 'notSendQty' },
      { label: '供应商承诺交期', prop: 'chengNuoJiaoQi', width: '220' },
      { label: '供应商承诺最新交期', prop: 'newChengNuoJiaoQi', width: '220' },
    ],
  },
  data: [],
  elDatePicker: '',
  formData: {
    fBillNo: '',
    fDateBegin: '',
    fDateEmd: '',
    fmrpCloseStatus: '',
  },
  selectedData: [],
  chengNuoJiaoQiP: '',
  newChengNuoJiaoQiP: '',
  selectedDataShow:false,
  loading:false,
  topId:''
});
const selectionChange = (list: any) => {
  state.selectedData = list;
};

const chengNuoJiaoQiPFun = (e: string) => {
  if (state.selectedData.length != 0) {
    let arr: any = [];
    if (e === '0') {
      state.selectedData.forEach((item: any) => {
        arr.push({ id: item.id, newTime: state.chengNuoJiaoQiP });
      });
      ElMessageBox({
        closeOnClickModal: false,
        closeOnPressEscape: false,
        title: '提示',
        message: '是否要修正此项日期',
        showCancelButton: true,
        buttonSize: 'default',
        beforeClose: (action, instance, done) => {
          if (action === 'confirm') {
            instance.confirmButtonLoading = true;
            instance.confirmButtonText ='1';
            listApi()
                .batchSetChengNuoJiaoQi(arr)
                .then((res: any) => {
                  done();
                  if (res.resultCode === 0) {
                    getList();
                    ElMessage.success('操作成功');
                  }
                  if (res.resultCode === -1) {
                    getList();
                    ElMessage.success(res.errorMessage);
                  }
                });
          } else {
            done();
          }
        },
      });
    }
    if (e === '1') {
      state.selectedData.forEach((item: any) => {
        arr.push({ id: item.id, newTime: state.newChengNuoJiaoQiP });
      });
      ElMessageBox({
        closeOnClickModal: false,
        closeOnPressEscape: false,
        title: '提示',
        message: '是否要修正此项日期',
        showCancelButton: true,
        buttonSize: 'default',
        beforeClose: (action, instance, done) => {
          if (action === 'confirm') {
            instance.confirmButtonLoading = true;
            instance.confirmButtonText = '1';
            listApi()
                .batchSetNewChengNuoJiaoQi(arr)
                .then((res: any) => {
                  done();
                  if (res.resultCode === 0) {
                    getList();
                    ElMessage.success('操作成功');
                  }
                  if (res.resultCode === -1) {
                    getList();
                    ElMessage.success(res.errorMessage);
                  }
                });
          } else {
            done();
          }
        },
      });
    }
  } else {
    ElMessage.warning('请先选中数据');
  }
};
const batchSetChengNuoJiaoQiFun = (arr: any) => {
  ElMessageBox({
    closeOnClickModal: false,
    closeOnPressEscape: false,
    title: '提示',
    message: '是否要修正此项日期',
    showCancelButton: true,
    buttonSize: 'default',
    beforeClose: (action, instance, done) => {
      if (action === 'confirm') {
        instance.confirmButtonLoading = true;
        instance.confirmButtonText ='1';
        listApi()
            .batchSetChengNuoJiaoQi(arr)
            .then((res: any) => {
              done();
              if (res.resultCode === 0) {
                getList();
                ElMessage.success('操作成功');
              }
              if (res.resultCode === -1) {
                getList();
                ElMessage.success(res.errorMessage);
              }
            });
      } else {
        done();
      }
    },
  });
};
const batchSetNewChengNuoJiaoQiFun = (arr: any) => {
  ElMessageBox({
    closeOnClickModal: false,
    closeOnPressEscape: false,
    title: '提示',
    message: '是否要修正此项日期',
    showCancelButton: true,
    buttonSize: 'default',
    beforeClose: (action, instance, done) => {
      if (action === 'confirm') {
        instance.confirmButtonLoading = true;
        instance.confirmButtonText = '1';
        listApi()
            .batchSetNewChengNuoJiaoQi(arr)
            .then((res: any) => {
              done();
              if (res.resultCode === 0) {
                getList();
                ElMessage.success('操作成功');
              }
              if (res.resultCode === -1) {
                getList();
                ElMessage.success(res.errorMessage);
              }
            });
      } else {
        done();
      }
    },
  });
};
const generateDocumentsFun = () => {
  state.selectedDataShow = false
  getList()
}

const getList = () => {
  state.loading = true;
  listApi()
      .getPageList({
        condition: {
          fBillNo:state.formData.fBillNo
        },
        pageSize: state.page.pageSize,
        page: state.page.currentPage,
      })
      .then((res: any) => {
        state.loading = false;
        if (res.resultCode === 0) {
          state.data = res.data.dataList;
          state.page.total = res.data.total;
        }
      });
};
// 页面加载时
onMounted(() => {
  state.formData.fBillNo = route.query.fBillNo as string
  getList()
});
</script>

<style lang="scss" scoped>
:deep(.avue-crud__header) {
  display: none;
}
:deep(.el-button--text){
  padding: 0 !important;
  height: auto !important;
}
:deep(.avue-crud__pagination) {
  padding: 0 12px !important;
}

:deep(.cell) {
  padding: 0 !important;
}

:deep(.avue-crud__left) {
  flex: 1;
}

:deep(.avue-crud__refreshBtn) {
  display: none;
}

:deep(.avue-crud__gridBtn) {
  display: none;
}

.piliang {
  margin-left: 12px;
  border: 1px solid #d5d5d5;
  border-radius: 8px;
  flex: 1;
  display: flex;
  align-items: center;
  box-sizing: border-box;
  padding: 4px;
}

.system-user-container {
  padding: 0 !important;
}

.multi-line-omit {
  word-break: break-all; // 允许单词内自动换行，如果一个单词很长的话
  text-overflow: ellipsis; // 溢出用省略号显示
  overflow: hidden; // 超出的文本隐藏
  display: -webkit-box; // 作为弹性伸缩盒子模型显示
  -webkit-line-clamp: 1; // 显示的行
  -webkit-box-orient: vertical; // 设置伸缩盒子的子元素排列方式--从上到下垂直排列
}

.selectBoxes {
  display: flex;
  flex-wrap: wrap;
  width: 650px;
  .selectItem {
    margin-right: 16px;
    display: flex;
  }
}

:deep(.avue-crud) {
  height: 100%;
  width: 100%;
}

:deep(.avue-crud--card) {
  display: flex;
  flex-direction: column;
  flex: 1;
}

:deep(.avue-crud__body) {
  flex: 1;
}

:deep(.el-table__header) {
  height: 40px;
}

:deep(.el-card__body) {
  width: 100% !important;
  height: 100% !important;
  overflow: hidden !important;
  padding: 0 !important;
}

:deep(.el-table__cell) {
  padding: 0 !important;
  //height: 56px !important;
}

:deep(.el-card) {
  padding: 12px;
}

:deep(.el-form) {
  flex: 1;
}

.system-user-container {
  :deep(.el-card__body) {
    display: flex;
    flex-direction: column;
    flex: 1;
    overflow: auto;

    .el-table {
      flex: 1;
    }
  }
}

:deep(.el-col) {
  margin-bottom: 16px;
}
</style>
