<template>
<a-spin :spinning="confirmLoading">
    <j-form-container :disabled="formDisabled">
        <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
            <a-row style="display:flex;justify-content:center;">
                <a-col :span="12">
                    <a-form-model-item label="消费项目" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="subjectType">
                        <a-select v-model="model.subjectType" style="50%" placeholder="消费项目" :allowClear="true">
                            <a-select-option :value="6">商品</a-select-option>
                            <a-select-option :value="10">手工房费</a-select-option>
                            <a-select-option :value="11">水电煤抄表</a-select-option>
                            <a-select-option :value="12">赔偿费</a-select-option>
                        </a-select>
                    </a-form-model-item>
                    <a-row>
                        <a-col :span="24">
                            <a-form-model-item label="金额" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="" v-if="model.subjectType==6">
                                <a-input-number :disabled="model.subjectType==6" v-model="goodsPrice" placeholder="请输入金额" :min="0"></a-input-number>
                            </a-form-model-item>
                            <a-form-model-item label="金额" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="money" v-else>
                                <a-input-number v-model="model.money" placeholder="请输入金额" :min="0"></a-input-number>
                            </a-form-model-item>
                        </a-col>
                    </a-row>
                </a-col>
                <a-col v-if="model.subjectType==6" :span="12">
                    <a-row>
                        <a-col :span="24">
                            <a-space>
                                <a-input v-model="queryParams.name" placeholder="名称" />
                                <a-button @click="searchQuery" type="primary">搜索</a-button>
                            </a-space>

                        </a-col>
                    </a-row>
                    <a-table :columns="columns" :loading="loading" :dataSource="dataSource" style="margin-top:10px;">
                        <template slot="sellingPrice" slot-scope="text, record">
                            <a-input-number v-model="record.sellingPrice" :min="0"></a-input-number>
                        </template>
                        <template slot="number" slot-scope="text, record">
                            <a-input-number :max="record.inventory" v-model="record.number" @change="changeNumber" :min="0"></a-input-number>
                        </template>
                        <template slot="inventorySlot" slot-scope="text,record">
                            {{record.inventory - record.number}}
                        </template>
                    </a-table>
                </a-col>
            </a-row>
            <!-- <a-row>
                <a-col :span="24">
                    <a-form-model-item label="金额" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="money">
                        <a-input-number v-model="model.money" placeholder="请输入金额" :min="0"></a-input-number>
                    </a-form-model-item>
                </a-col>
            </a-row> -->
        </a-form-model>
    </j-form-container>
</a-spin>
</template>

<script>
import {
    httpAction,
    getAction
} from "@/api/manage";
import {
    validateDuplicateValue
} from "@/utils/util";

import {
    JeecgListMixin
} from '@/mixins/JeecgListMixin'
export default {
    name: "BusMemberCardForm",
    components: {},
    mixins: [JeecgListMixin],
    props: {
        //表单禁用
        disabled: {
            type: Boolean,
            default: false,
            required: false,
        },
        livingOrderId: {
            type: String,
        },
    },
    data() {
        return {
            dataSource: [],
            columns: [{
                    title: "名称",
                    align: "center",
                    dataIndex: "name",
                },
                {
                    title: "售价",
                    align: "center",
                    dataIndex: "sellingPrice",
                    scopedSlots: {
                        customRender: 'sellingPrice'
                    },
                },
                {
                    title: "数量",
                    align: "center",
                    dataIndex: "number",
                    scopedSlots: {
                        customRender: 'number'
                    },
                },
                {
                    title: "剩余库存",
                    align: "center",
                    dataIndex: "inventory",
                    scopedSlots: {
                        customRender: 'inventorySlot'
                    }
                },
            ],
            model: {
                payType: 1,
                livingOrderId: "",
                certType: 1,
                gender: 1
            },
            queryParams: {},
            labelCol: {
                xs: {
                    span: 24
                },
                sm: {
                    span: 5
                },
            },
            wrapperCol: {
                xs: {
                    span: 24
                },
                sm: {
                    span: 16
                },
            },
            confirmLoading: false,
            validatorRules: {
                subjectType: [{
                    required: true,
                    message: "请输入消费项目!"
                }],
                money: [{
                    required: true,
                    message: "请输入金额!"
                }],
            },
            url: {
                list: "/rooms/cesGoods/kf-goods-list",
                edit: "/business/busMemberCard/edit",
                queryById: "/business/busMemberCard/queryById",
            },
            gradeList: [],
            paymentMethodList: [],
            staffList: [],
            customerList: [],
            oldcustomerList: [],
        };
    },
    computed: {
        formDisabled() {
            return this.disabled;
        },
        goodsPrice() {
            let money = this.dataSource.reduce((pre, cur) => pre + cur.sellingPrice * (cur.number || 0), 0)
            return money
        }
    },
    created() {
        var _info = JSON.parse(localStorage.getItem("storeInfo"));
        if (_info) {
            this.model.hotelId = _info.id;
        }
        //备份model原始值
        this.modelDefault = JSON.parse(JSON.stringify(this.model));
        this.getbusCustomer();
        // getAction('/kc/kcGoods/list').then(res=>{
        //   if (res.success) {
        //     this.dataSource = res.result.records;
        //   }
        // })
        // getAction('/rooms/cesGoods/queryList').then(res=>{
        //   if (res.success) {
        //     this.dataSource = res.result.records;
        //   }
        // })
    },
    methods: {
        changeNumber() {
            console.log(this.dataSource);
        },
        handleSearch(value) {
            let result;
            if (!value) {
                result = this.oldcustomerList;
            } else {
                result = this.oldcustomerList.filter((t) => t.name.includes(value));
            }
            this.customerList = result;
        },
        handleSelectMember(e) {
            var find = this.customerList.find((t) => t.id === e);
            this.model.phone = find.phone;
            this.model.customerName = find.name;
            this.model.customerId = find.id;
        },
        getbusCustomer() {
            getAction("/bus/busCustomer/list", {}).then((res) => {
                if (res.success) {
                    this.customerList = res.result.records;
                    this.oldcustomerList = JSON.parse(JSON.stringify(this.customerList));
                }
            });
        },
        add(livingOrderId, roomId) {
            this.modelDefault.livingOrderId = livingOrderId;
            this.modelDefault.roomId = roomId;
            this.edit(this.modelDefault);
        },
        edit(record) {
            this.model = Object.assign({}, record);
            this.visible = true;
        },
        submitForm() {
            const that = this;
            // 触发表单验证
            this.$refs.form.validate((valid) => {
                if (valid) {
                    if (this.dataSource.every(ele=>ele.number==0) && this.model.subjectType == 6) {
                        this.$message.warning("请至少选择一件商品")
                        return
                    }
                    that.confirmLoading = true;
                    var orders = [];
                    let feeGoods = []
                    
                    if (this.model.subjectType == 6) {
                        that.dataSource.forEach(ele=>{
                        if (ele.number>0) {
                            feeGoods.push({
                                goodsId: ele.id,
                                num: ele.number,
                                price: ele.sellingPrice
                            })
                            }
                        })
                        that.model.money = that.goodsPrice
                    }
                    orders.push({
                        money: this.model.money,
                        subjectType: this.model.subjectType,
                        feeGoods: feeGoods
                    });
                    this.model.orders = orders;
                    this.model.livingOrderId = this.livingOrderId;
                    httpAction("/business/busRoomBookingOrders/set-living-order-fee?livingOrderId=" + this.livingOrderId, orders, "post")
                        .then((res) => {
                            if (res.success) {
                                that.$message.success(res.message);
                                that.$emit("ok");
                            } else {
                                that.$message.warning(res.message);
                            }
                        })
                        .finally(() => {
                            that.confirmLoading = false;
                        });
                }
            });
        },
        loadData(arg) {
            if (this.url.list == 2) {
                return
            }
            if (!this.url.list) {
                this.$message.error("请设置url.list属性!")
                return
            }
            //加载数据 若传入参数1则加载第一页的内容
            if (arg === 1) {
                this.ipagination.current = 1;
            }
            var params = this.getQueryParams(); //查询条件
            this.loading = true;
            getAction(this.url.list, params).then((res) => {
                if (res.success) {
                    //update-begin---author:zhangyafei    Date:20201118  for：适配不分页的数据列表------------
                    let arr = []
                    arr = res.result.records || res.result;
                    arr.forEach(ele=>{
                        ele.number = 0
                    })
                    this.dataSource = JSON.parse(JSON.stringify(arr));
                    if (res.result.total) {
                        this.ipagination.total = res.result.total;
                    } else {
                        this.ipagination.total = 0;
                    }
                    //update-end---author:zhangyafei    Date:20201118  for：适配不分页的数据列表------------
                } else {
                    this.$message.warning(res.message)
                }
            }).finally(() => {
                this.loading = false
            })
        },
    },
};
</script>
