<template>
  <div style="display: flex;">
    <div :style="'display: flex;width:' + (window.pageWidth - 45 - 110) + 'px;'">
      <!--未选组合项目-->
      <div style="display: block; width:230px;">
        <div>
          <span>项目类别</span>
          <el-cascader :options="dict.itemTypeTree" v-model="itemTypeIds" style="margin-left: 3px;width:160px;"
            :props="{ checkStrictly: true, expandTrigger: 'hover', ...customerOrg.treeprops, }" :show-all-levels="false"
            clearable filterable @change="getAsbItemByItemType" size="small">
          </el-cascader>
        </div>
        <div class="box">
          <el-table :data="dict.asbItem" border size="small"  highlight-current-row
            :height="window.pageHeight < 635 ? 200:(window.pageHeight - 110 - 325)"
            @row-dblclick="dbClickChoosedAsb" row-key="id"
            @selection-change="handleSelectionChange" :row-class-name="handleRowClassName" 
            @row-click="chooseAsbItem">
            <!--
            <el-table-column type="selection" align="center" ></el-table-column>
            -->
            <el-table-column type="index" align="center" min-width="40"/>
            <el-table-column
              label="未选组合项目" min-width="170"
              prop="displayName" align="center"
            ></el-table-column>
          </el-table>
        </div>
      </div>

      <!--中间操作按钮-->
      <div style="display: block;margin: 40px 10px 0 10px;">
        <div>
          <el-button class="btnClass" @click="addAbs(asbItemChoosed,'choosed')" >添加 <i class="el-icon-arrow-right"></i></el-button>
        </div>
        <div>
          <el-button class="btnClass" @click="addAbs(asbItemChoosed,'all')">全部添加</el-button>
        </div>
        <div>
          <el-button class="btnClass"
            @click="delAbs(patientRegisterAbsChoosed,'choosed')">移除 <i class="el-icon-arrow-left"></i
          ></el-button>
        </div>
        <div>
          <el-button class="btnClass" @click="delAbs(patientRegisterAbsChoosed,'all')">全部移除</el-button>
        </div>        
      </div>

      <!--已选组合项目-->
      <div :style="'display: block; width:' + (window.pageWidth - 230 - 120 - 45 - 110) + 'px;'">
        <div style="height:32px;">
          <span>快速选择</span>
          <el-select v-model="asbItemId" placeholder="快速选择组合项目" size="small" 
            filterable  default-first-option :filter-method="filterMethod"
            clearable @clear="quickAsb = deepCopy(dict.asbItemQuick)"
            @change="quickChoosedAsb" ref="quickAsbOCX"
            style="margin-left: 3px;width:160px;">
            <el-option v-for="item in quickAsb" :key="item.id" :value="item.id" :label="item.displayName" />
          </el-select>
        </div>
        <div class="box">
          <el-table :data="medicalPackageAsbitems" border size="small"
            @selection-change="selecteditems" highlight-current-row 
            :height="window.pageHeight < 635 ? 200:(window.pageHeight - 110 - 325)"
            :summary-method="getSummaries" show-summary           
            :row-class-name="handleRowClassName" @row-dblclick="removeAbs" 
            @row-click="removeAsbItem" ref="tablemedicalPackageAsbitems">
            <!--
            <el-table-column type="selection"></el-table-column>
            -->
            <el-table-column type="index" min-width="40" align="center"/>
            <el-table-column
              label="已选组合项目"
              min-width="120"
              prop="displayName"
            ></el-table-column>
            <el-table-column label="标准价格" prop="price" min-width="60" align="center"/>
            <el-table-column label="折扣" min-width="60" align="center">
              <template slot-scope="scope">
                <el-input
                  @input="changeDiscount(scope.$index)"
                  type="number" size="small"
                  v-model="scope.row.discount"
                />
              </template>
            </el-table-column>
            <el-table-column label="应收价格" prop="medicalPackageDetailPrice" min-width="60" align="center">
              <template slot-scope="scope">
                <el-input
                  @input="changePrices(scope.$index)"
                  type="number" size="small"
                  v-model="scope.row.medicalPackageDetailPrice"
                />
              </template>
            </el-table-column>
            <el-table-column label="数量" prop="medicalPackageDetailAmount" min-width="40" align="center">
              <template slot-scope="scope">
                <el-input
                  @input="changePrices(scope.$index)"
                  type="number" size="small" 
                  v-model="scope.row.medicalPackageDetailAmount" 
                />
              </template>
            </el-table-column>
            <el-table-column label="标准金额" prop="asbitemMoney" min-width="60" align="center">
            </el-table-column>
            <el-table-column label="应收金额" prop="medicalPackageDetailMoney" min-width="60" align="center">
            </el-table-column>
          </el-table>
        </div>
      </div>
    </div>
    <!--批量操作按钮（复制套餐与分组）-->
    <div style="display: block;margin-left: 10px;">
      <div style="margin-top: 50px;">
        <el-button class="btnClass" @click="btnCopyMedicalPackage">复制套餐</el-button>
      </div>
      <div>
        <el-button class="btnClass" @click="btnSave">保存</el-button>
      </div>
    </div>
    
    <!--复制套餐-->
    <el-dialog title="体检套餐" :visible.sync="medicalPackageVisble" width="600px" height="400"
      :show-close="false" :close-on-click-modal="false" :append-to-body="true">
      <el-table :data="dict.medicalPackage" border height="350" row-key="id" size="small"
        highlight-current-row @row-click="packageRowClick" @row-dblclick="rowDblclick" ref="patientList" >
        
        <!-- "displayName": "健康体检套餐",
        "price": 20.00,
        "forSexId": "0",
        "isActive": "Y",
        "remark": "2",
        "displayOrder": 1,
        "simpleCode": "JKTJTC",
        "creatorName": "admin",
        "lastModifierName": "users",
        "lastModificationTime": "2023-08-04T16:34:02.94408",
        "lastModifierId": "3a0ca83b-3116-da05-3916-dfd4c0c548cb",
        "creationTime": "2023-07-10T19:53:30.210553",
        "creatorId": "3a0c4180-107c-0c89-b25b-0bd34666dcec",
        "id": "3a0c51d3-2345-38df-ba0b-1862a3c3606f" -->
        <el-table-column type="index" width="50" />
        <el-table-column prop="displayName" label="套餐名称" width="180"/>
        <el-table-column prop="price" label="价格" width="80"/>
        <el-table-column prop="forSexId" label="适用性别" width="80">
          <template slot-scope="scope">
            <div>
              {{ dddw(dict.forSex, "id", scope.row.forSexId, "displayName") }}
            </div>
          </template>
        </el-table-column>
        <el-table-column prop="remark" label="备注" width="100"/>
        <el-table-column prop="creatorName" label="创建人员" width="80"/>
        <el-table-column prop="creationTime" label="创建日期" width="100">
          <template slot-scope="scope">
            <div v-if="scope.row.creationTime">
              {{ moment(scope.row.creationTime).format("yyyy-MM-DD") }}
            </div>
          </template>
        </el-table-column>
        <el-table-column prop="lastModifierName" label="修改人员" width="80"/>
        <el-table-column prop="lastModificationTime" label="修改日期" width="100">
          <template slot-scope="scope">
            <div v-if="scope.row.lastModificationTime">
              {{ moment(scope.row.lastModificationTime).format("yyyy-MM-DD") }}
            </div>
          </template>
        </el-table-column>        
      </el-table>
      <span slot="footer" class="dialog-footer">
        <el-button @click="medicalPackageVisble = false" style="width:90px;">取消</el-button>
        <el-button type="primary" @click="copyMedicalPackage" style="width:90px;">确定</el-button>
      </span>
    </el-dialog>

    
  </div>
</template>
<script>
import moment from 'moment';
import { mapState } from "vuex";
import { getapi, postapi, putapi } from "@/api/api";
import { arrayExistObj, tcdate, arrayFilter, arrayReduce, deepCopy,dddw } from "../../utlis/proFunc";


export default {
  props:['formData','refreshMoney'],
  data() {
    return {
      packagePrice:0,               //分组总价
      medicalPackageAsbitems:[], //分组包含组合项目
      itemTypeIds:[], //项目类别
      asbItemId:'',   //当前快速选到的给合项目ID
      quickAsb:[],    //过滤显示的组合项目

      asbItemChoosed: [], //勾选的  未选组合项目
      startPoint:-1,
      PstartPoint:-1,

      medicalPackageVisble:false, //复制套餐
      curPackageId:'',  //当前选中套餐ID
      packageAsbitems:[], //套餐中包含的组合项目

  
      selecteddata: [], //已选数据
      unselecteddata: [], //未选数据      
      rightselctedata: [], //右侧已选
      options: [],
      value: "",
      dialogVisible: false,
      copyGroupdialogVisible: false,
      packagelist: [],
      tabledata: [],
      temporaryselection: [], //已选组合项目table
      copegroupdata: [], //复制分组
      addrulst: [], //添加保存的Id
      price: "", //价格
      title: 1,
    };
  },
  computed: {
    ...mapState(["window","dict","customerOrg"]),
  },

  created() {
    this.dictInit()
  },
  
  updated () {
    this.refreshTable('tablemedicalPackageAsbitems')
  },
  methods: {
    moment,dddw,deepCopy,
    //表格强制刷新
    refreshTable(tableRef){
      this.$nextTick(() => {
        this.$refs[tableRef].doLayout()
      })
    },

    //初始数据
    dictInit(){
      //体检类别 树结构
      getapi("/api/app/item-type/by-code-all").then((res) => {
        if (res.code != -1) {
          this.dict.itemTypeTree = res.data;
          tcdate(this.dict.itemTypeTree);
        }
      });

      //获取所有组合项目
      getapi("/api/app/asbitem/in-filter?Filter").then((res) => {
        if (res.code != -1) {
          this.dict.asbItemAll = res.data.items;
          this.dict.asbItemAll.forEach(e => {
            e.choosed = false
          })
          this.dict.asbItem = deepCopy(this.dict.asbItemAll);
          this.dict.asbItemQuick = deepCopy(res.data.items);
          this.quickAsb = deepCopy(res.data.items);
        }
      });

      //套餐
      postapi("/api/app/medicalpackage/getmedicalpackagelist",{}).then((res) => {
        if (res.code != -1) {
          this.dict.medicalPackage = res.data;
        }
      });

    },

    handleRowClassName({ row, rowIndex }) {
      // highLightBg 为 'selected'的高亮 
      //console.log(rowIndex, row)
      //return row.highLightBg == 'selected' ? 'high-light-bg' : '';
      if (row.choosed) {
        return 'current-row';
      } else {
        return '';
      }

    },

    //项目类别过滤 组合项目，未过滤已选择的组合项目
    getAsbItemByItemTypeAll() {
      //console.log('getAsbItemByItemType', typeof this.itemTypeIds, this.itemTypeIds)
      let lv = "";
      if (typeof this.itemTypeIds === "object") {
        lv = this.itemTypeIds[this.itemTypeIds.length - 1];
      }

      if (lv) {
        this.dict.asbItem = arrayFilter(this.dict.asbItemAll, "itemTypeId", lv);
      } else {
        this.dict.asbItem = deepCopy(this.dict.asbItemAll);
      }
      //console.log('lv,this.dict.asbItem', lv, this.dict.asbItem)
      this.dict.asbItemQuick = deepCopy(this.dict.asbItemAll);

    },

    //按项目类别显示组合项目，并过滤已选择的组合项目
    getAsbItemByItemType() {
      this.getAsbItemByItemTypeAll()
      //刷新显示 未选组合项目
      arrayReduce(this.dict.asbItem, [...this.medicalPackageAsbitems], "id=asbitemId");
      arrayReduce(this.dict.asbItemQuick, [...this.medicalPackageAsbitems], "id=asbitemId");
      this.quickAsb = Object.assign(this.dict.asbItemQuick)
    },

    //快速选择组合项目时，调整可按拼间简码及简称查找
    filterMethod(keyWords) {
      //console.log('filterMethod',this.dict.asbItemQuick)  
      if (keyWords) {
        this.quickAsb = [];
        this.dict.asbItemQuick.forEach(item => {
          if (item.displayName.toLowerCase().indexOf(keyWords.toLowerCase()) > - 1
            || item.simpleCode.toLowerCase().indexOf(keyWords.toLowerCase()) > - 1
            || item.shortName.toLowerCase().indexOf(keyWords.toLowerCase()) > - 1) {
            this.quickAsb.push(item);
          }
        });
      } else {
        this.quickAsb = deepCopy(this.dict.asbItemQuick);
      }
    },

    // 添加组合项目
    ///api/app/register-asbitem/many/3fa85f64-5717-4562-b3fc-2c963f66afa6'
    async addAbs(asbItemChoosed,oprType) {
      // console.log('this.medicalPackage',this.medicalPackage)
      // console.log('asbItemChoosed', asbItemChoosed)      
      if(!this.formData.id){
        this.$message.warning("请先选中单位分组")
        return
      }
      if(this.formData.isComplete && this.formData.isComplete.toUpperCase() == 'Y'){
        this.$message.warning("体检次数已完成，不允许操作")
        return
      }
      let message = []
      let checked = true      
      let lfind = -1

      //oprType 不传值时，兼容勾选方式
      //勾选时不需要此操作  start      
      if(oprType && oprType == 'all'){
        asbItemChoosed = deepCopy(this.dict.asbItem)
      }else if(oprType && oprType == 'choosed'){
        asbItemChoosed = [] 
        this.dict.asbItem.forEach(e =>{
          if(e.choosed){
            asbItemChoosed.push(e)
            e.choosed = false
          }
        })
      }
      //勾选时不需要此操作  end 

      if (asbItemChoosed.length < 1) {
        this.$message.warning("请选择要添加的组合项目")
        return
      }

      //性别、年龄判断 
      // "displayName": "身高体重",
      //   "shortName": "哈f哈",
      //   "forSexId": "F",
      //   "itemTypeId": "3a0b16de-75b9-c910-c61b-844709a88940",
      //   "price": 0,
      
      // for (let i = 0; i < asbItemChoosed.length; i++) {
      //   if (this.formData.forSexId == 'A') break //未选性别时，无需判断组合项目性别限制
      //   if (asbItemChoosed[i].forSexId == 'A' || asbItemChoosed[i].forSexId == 'U') continue
      //   if (asbItemChoosed[i].forSexId != this.formData.sexId) {
      //     this.$message.warning(`所选项目：${asbItemChoosed[i].displayName}，不适合当前人员性别`)
      //     checked = false
      //     break
      //   }
      // }
      // //console.log(222,checked)
      // if (!checked) return

      // 去掉重复的项目
      arrayReduce(asbItemChoosed, this.medicalPackageAsbitems, "id=asbitemId")

      for (let i = asbItemChoosed.length - 1; i > - 1; i--) {
        if (this.formData.forSexId == 'A') break //未选性别时，无需判断组合项目性别限制 
        if (asbItemChoosed[i].forSexId == 'A' || asbItemChoosed[i].forSexId == 'U') continue
        if (asbItemChoosed[i].forSexId != this.formData.forSexId) {
          message.push(asbItemChoosed[i].displayName)   //.warning(`所选项目：${asbItemChoosed[i].displayName}，不适合当前人员性别`)
          checked = false
          asbItemChoosed.splice(i,1)
        }
      }
      //console.log(222,checked)
      if (!checked) this.$message.warning(`所选项目【${JSON.stringify(message)}】不适合当前人员性别`)

      for (let i = 0; i < asbItemChoosed.length; i++) {
        let pojo = {
          asbitemId: asbItemChoosed[i].id,
          displayName:asbItemChoosed[i].displayName,
          discount:100,
          medicalPackageDetailAmount:1,
          price:asbItemChoosed[i].price,
          medicalPackageDetailPrice:asbItemChoosed[i].price,
          medicalPackageDetailMoney: asbItemChoosed[i].price,
          asbitemMoney: asbItemChoosed[i].price,
        }
        

        this.medicalPackageAsbitems.push(pojo)
        //this.medicalPackageAsbitems.push({ ...pojo, asbitemName: asbItemChoosed[i].displayName })
        
        lfind = arrayExistObj(this.dict.asbItem, 'id', asbItemChoosed[i].id)
        if (lfind > -1) this.dict.asbItem.splice(lfind, 1)

        lfind = arrayExistObj(this.dict.asbItemQuick, 'id', asbItemChoosed[i].id)
        if (lfind > -1) this.dict.asbItemQuick.splice(lfind, 1)

      }

      
    },

    //双击选择组合项目
    dbClickChoosedAsb(row) {
      this.addAbs([row]);
    },
    //快速选择组合项目
    quickChoosedAsb(v) {
      //远程查询时，设置了 value-key 也不管用，只能取到value console.log('quickChoosedAsb',v)
      let lfind = -1
      if (v) {
        lfind = arrayExistObj(this.dict.asbItemQuick, 'id', v)
        if (lfind > -1) {
          this.addAbs([this.dict.asbItemQuick[lfind]])
        }
      }    

      this.$nextTick(() => {        
        this.$refs['quickAsbOCX'].blur(); //total  asbItemId
        this.asbItemId = ''
        this.quickAsb = deepCopy(this.dict.asbItemQuick)        
        this.$refs['quickAsbOCX'].focus(); //total  asbItemId       
      });

    },

    //选择 未选的组合项目
    chooseAsbItem(row){
      this.dict.asbItem.forEach((e,index) => {
        e.index = index; 
        return e
      });
      // 按住了shift键
      if (this.window.shift) {         
        //清除所有选择
        this.dict.asbItem.forEach(e => {
          e.choosed = false;  
          return e
        });

        if (this.startPoint == - 1) {
          this.dict.asbItem[row.index].choosed = true;
          this.startPoint = row.index;
          return
        }

        if (this.startPoint > row.index) {
          for (let i = row.index; i <= this.startPoint; i++) {
            this.dict.asbItem[i].choosed = true
          }
        } else if (this.startPoint <= row.index) {
          for (let i = this.startPoint; i <= row.index; i++) {
            this.dict.asbItem[i].choosed = true
          }
        }
        return
      }

      // 按住了ctrl 键
      if (this.window.ctrl) {   
        console.log('this.window.ctrl',this.window.ctrl,this.dict.asbItem)      
        this.dict.asbItem[row.index].choosed = true;
        this.startPoint = row.index;
        return        
      }

      // 未按住了ctrl 、shift 键
      //清除所有选择
      //console.log('清除所有选择')
      this.dict.asbItem.forEach(e => {
        e.choosed = false;  
        return e
      });
      this.dict.asbItem[row.index].choosed = true;
      this.startPoint = row.index;   

    },

    //删除 人员已选中的组合项目
    ///api/app/register-asbitem/many?RegisterAsbitemIds=3fa85f64-5717-4562-b3fc-2c963f66afa6
    delAbs(absForDel,oprType) {
      if(!this.formData.id){
        this.$message.warning("请先选中单位分组")
        return
      }
      if(this.formData.isComplete && this.formData.isComplete.toUpperCase() == 'Y'){
        this.$message.warning("体检次数已完成，不允许操作")
        return
      }


      let lfind = -1

      //勾选时不需要此操作  start
      if(oprType && oprType == 'all'){
        absForDel = deepCopy(this.medicalPackageAsbitems)
      }else if(oprType && oprType == 'choosed'){
        absForDel = [] 
        this.medicalPackageAsbitems.forEach(e =>{
          if(e.choosed){
            absForDel.push(deepCopy(e))
            e.choosed = false
          }
        })
      }
      //勾选时不需要此操作  end 

      if (absForDel.length < 1) {
        this.$message.warning("请选择要移除的组合项目")
        return
      }

      for (let i = 0; i < absForDel.length; i++) {
        
        lfind = arrayExistObj(this.medicalPackageAsbitems, 'asbitemId', absForDel[i].asbitemId)
        if (lfind > -1) this.medicalPackageAsbitems.splice(lfind, 1)

        absForDel.splice(i, 1)
        i--
        continue
        
      }

      //刷新
      this.getAsbItemByItemType()     

    },

    //双击删除已选项目
    removeAbs(row) {
      this.delAbs([row]);
    },

    //选择 已选的组合项目
    removeAsbItem(row){
      this.medicalPackageAsbitems.forEach((e,index) => {
        e.index = index; 
        return e
      });
      // 按住了shift键
      if (this.window.shift) {         
        //清除所有选择
        this.medicalPackageAsbitems.forEach(e => {
          e.choosed = false;  
          return e
        });

        if (this.PstartPoint == - 1) {
          this.medicalPackageAsbitems[row.index].choosed = true;
          this.PstartPoint = row.index;
          return
        }

        if (this.PstartPoint > row.index) {
          for (let i = row.index; i <= this.PstartPoint; i++) {
            this.medicalPackageAsbitems[i].choosed = true
          }
        } else if (this.PstartPoint <= row.index) {
          for (let i = this.PstartPoint; i <= row.index; i++) {
            this.medicalPackageAsbitems[i].choosed = true
          }
        }
        return
      }

      // 按住了ctrl 键
      if (this.window.ctrl) {   
        console.log('this.window.ctrl',this.window.ctrl,this.medicalPackageAsbitems)      
        this.medicalPackageAsbitems[row.index].choosed = true;
        this.PstartPoint = row.index;
        return        
      }

      // 未按住了ctrl 、shift 键
      //清除所有选择
      //console.log('清除所有选择')
      this.medicalPackageAsbitems.forEach(e => {
        e.choosed = false;  
        return e
      });
      this.medicalPackageAsbitems[row.index].choosed = true;
      this.PstartPoint = row.index;   

    },

    changeDiscount(index){

      this.medicalPackageAsbitems[index].medicalPackageDetailPrice = 
      (this.medicalPackageAsbitems[index].discount *  this.medicalPackageAsbitems[index].price/100).toFixed(2)
      

      this.medicalPackageAsbitems[index].medicalPackageDetailMoney = 
      (this.medicalPackageAsbitems[index].medicalPackageDetailPrice * this.medicalPackageAsbitems[index].medicalPackageDetailAmount).toFixed(2)

      //this.getSummaries()
      
    },

    //修改价格或数量
    changePrices(index){
      this.medicalPackageAsbitems[index].medicalPackageDetailMoney = 
      (this.medicalPackageAsbitems[index].medicalPackageDetailPrice * this.medicalPackageAsbitems[index].medicalPackageDetailAmount).toFixed(2)

      this.medicalPackageAsbitems[index].asbitemMoney = 
      (this.medicalPackageAsbitems[index].price * this.medicalPackageAsbitems[index].medicalPackageDetailAmount).toFixed(2)

      this.medicalPackageAsbitems[index].discount = (this.medicalPackageAsbitems[index].medicalPackageDetailPrice * 100 / this.medicalPackageAsbitems[index].price).toFixed(2)
      //this.getSummaries()
    },
    

    //合计
    getSummaries(param) {
      console.log('getSummaries param',param)
      // if(!param){
      //   param = {
      //     columns:[{}, {}, {}, {}, {}, {}, {property: 'asbitemMoney'},{property: 'medicalPackageDetailMoney'}],
      //     data:this.medicalPackageAsbitems
      //   }
      // }
     
      const { columns, data } = param;
      const sumCol = [6, 7]  //需合计的列
      const sums = [];
      columns.forEach((column, index) => {
        //console.log('column, index,data',column, index,data)
        //显示合计列
        if (index === 1) {
          sums[index] = '合计';
          return;
        }

        //不合计的列
        if (sumCol.indexOf(index) == -1) {
          sums[index] = '';
          return;
        }

        sums[index] = 0
        data.forEach(e => {
          if (!isNaN(e[column.property])) sums[index] += Number(e[column.property])// * e['amount']
        })
        sums[index] = sums[index].toFixed(2) //+ ' 元';

      });
      this.packagePrice = sums[7];
      // console.log('getSummaries',sums)
      // if (!this.totalFoucs) this.total = sums[5];
      // if (!this.discountFoucs) this.discount = Number(this.total * 100 / this.totalStand).toFixed(2);
      return sums;
    },
    

    //复制套餐
    btnCopyMedicalPackage(){
      if(!this.formData.id){
        this.$message.warning("请先选中单位分组")
        return
      }      
      if(this.formData.isComplete && this.formData.isComplete.toUpperCase() == 'Y'){
        this.$message.warning("体检次数已完成，不允许操作")
        return
      }
      this.medicalPackageVisble = true
    },

    //选中套餐
    async packageRowClick(row){
      this.curPackageId = row.id
      this.packageAsbitems = []
      try {
        let res = await postapi('/api/app/medicalpackagedetail/getmedicalpackageinasbitem',{medicalPackageId:row.id})
        this.packageAsbitems = res.data
      } catch (error) {
        console.log(error)
      }         
    },

    //双击选套餐，并确认复制
    async rowDblclick(row){
      await this.packageRowClick(row)
      this.copyMedicalPackage()
    },

    //复制套餐(确认选中套餐)
    copyMedicalPackage(){
      if(!this.curPackageId){
        this.$message.warning("请先选择要复制的套餐！")
        return
      }
      console.log('this.packageAsbitems',this.packageAsbitems)
      this.addAbs(deepCopy(this.packageAsbitems))
      this.medicalPackageVisble = false
    },

   
    //保存按钮
    btnSave() {
      if(!this.formData.id){
        this.$message.warning("请先选中套餐")
        return
      }      
      
      let body = {
        medicalPackageId:this.formData.id,
        details:[]
      }
      // {
      //   "medicalPackageId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      //   "details": [
      //     {
      //       "medicalPackageId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      //       "asbitemId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      //       "price": 0,
      //       "amount": 0
      //     }
      //   ]
      // }
      this.medicalPackageAsbitems.forEach(e =>{
        body.details.push({
          medicalPackageId:this.formData.id,
          asbitemId:e.id||e.asbitemId,
          price:e.medicalPackageDetailPrice,
          amount:e.medicalPackageDetailAmount
        })
      })


      
      
      let Package = deepCopy(this.formData);
      //  /api/app/medical-package-detail/many
      postapi('/api/app/medicalpackagedetail/createmedicalpackagedetailmany',body
       ).then(res => {
        if(res.code != -1){
          delete Package.id;          
          Package.price = this.packagePrice          
          return postapi(`/api/app/medicalpackage/update?id=${this.formData.id}`, Package)
        }
      }).then(res =>{
        if(res.code != -1){
          this.$message.success("操作成功");
          Package.id = this.formData.id
          this.refreshMoney(Package)
        }
      })
   
    },

   
    //右侧勾选按钮
    selecteditems(val) {
      this.rightselctedata = val;
      console.log(this.rightselctedata);
    },

  
    // 左侧未选
    handleSelectionChange(val) {
      // this.selecteddata = val;
      this.unselecteddata = val;
      console.log(this.unselecteddata);
    },
   

    //获取当前列列表数据
    getmedicalPackageAsbitems(medicalPackageId) {
      if(medicalPackageId){
        postapi('/api/app/medicalpackagedetail/getmedicalpackageinasbitem',{medicalPackageId}).then((res) => {    
          if(res.code != -1){
            this.medicalPackageAsbitems = res.data;
            this.getAsbItemByItemType()
          }           
        });
      }else{
        this.medicalPackageAsbitems = []
        this.getAsbItemByItemType()
      }  
    },
    
  },

  //监听事件
  watch: {
    //
    "formData.id"(newVal, oldVal) {
      console.log("formData.id ",newVal,oldVal);
      if (newVal != oldVal) {
        this.getmedicalPackageAsbitems(newVal);
      }
    },
  },
};
</script>
<style scoped>

.box {  
  margin-top: 5px;
  border: 1px solid #000;
}

.btnClass {
  width:100px;
  margin-bottom: 5px
}

</style>
