|
|
@@ -1,12 +1,7 @@
|
|
|
<template>
|
|
|
<a-spin :spinning="confirmLoading">
|
|
|
<j-form-container :disabled="formDisabled">
|
|
|
- <a-form-model
|
|
|
- ref="form"
|
|
|
- :model="model"
|
|
|
- :rules="validatorRules"
|
|
|
- slot="detail"
|
|
|
- >
|
|
|
+ <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
|
|
|
<a-row>
|
|
|
<div style="display: flex; gap: 15px">
|
|
|
<div style="width: 39%">
|
|
|
@@ -15,17 +10,9 @@
|
|
|
</h4>
|
|
|
<a-divider />
|
|
|
<a-col :span="24">
|
|
|
- <a-form-model-item
|
|
|
- label="入住类型"
|
|
|
- :labelCol="labelCol"
|
|
|
- :wrapperCol="wrapperCol"
|
|
|
- prop="orderInfo.bookingType"
|
|
|
- >
|
|
|
- <a-select
|
|
|
- placeholder="入住类型"
|
|
|
- v-model="model.orderInfo.bookingType"
|
|
|
- @change="bookingTypeChange"
|
|
|
- >
|
|
|
+ <a-form-model-item label="入住类型" :labelCol="labelCol" :wrapperCol="wrapperCol"
|
|
|
+ prop="orderInfo.bookingType">
|
|
|
+ <a-select placeholder="入住类型" v-model="model.orderInfo.bookingType" @change="bookingTypeChange">
|
|
|
<a-select-option :value="1"> 全天 </a-select-option>
|
|
|
<a-select-option :value="2"> 钟点 </a-select-option>
|
|
|
</a-select>
|
|
|
@@ -33,160 +20,70 @@
|
|
|
</a-col>
|
|
|
|
|
|
<a-col :span="24">
|
|
|
- <a-form-model-item
|
|
|
- label="预抵时间"
|
|
|
- :labelCol="labelCol"
|
|
|
- :wrapperCol="wrapperCol"
|
|
|
- prop="orderInfo.arrivalTime2"
|
|
|
- >
|
|
|
- <j-date
|
|
|
- placeholder="预抵时间"
|
|
|
- v-model="model.orderInfo.arrivalTime2"
|
|
|
- style="width: 180px"
|
|
|
- :allowClear="false"
|
|
|
- :disabled-date="disabledDate"
|
|
|
- @change="arrivalTimeChange"
|
|
|
- />
|
|
|
- <a-time-picker
|
|
|
- style="width: 80px; margin-left: 2px"
|
|
|
- v-model="model.orderInfo.arrivalTimeSpan"
|
|
|
- :default-value="moment('12:00', 'HH:mm')"
|
|
|
- format="HH:mm"
|
|
|
- :allowClear="false"
|
|
|
- @change="arrivalTimeSpanChange"
|
|
|
- />
|
|
|
+ <a-form-model-item label="预抵时间" :labelCol="labelCol" :wrapperCol="wrapperCol"
|
|
|
+ prop="orderInfo.arrivalTime2">
|
|
|
+ <j-date placeholder="预抵时间" v-model="model.orderInfo.arrivalTime2" style="width: 180px"
|
|
|
+ :allowClear="false" :disabled-date="disabledDate" @change="arrivalTimeChange" />
|
|
|
+ <a-time-picker style="width: 80px; margin-left: 2px" v-model="model.orderInfo.arrivalTimeSpan"
|
|
|
+ :default-value="moment('12:00', 'HH:mm')" format="HH:mm" :allowClear="false"
|
|
|
+ @change="arrivalTimeSpanChange" />
|
|
|
</a-form-model-item>
|
|
|
</a-col>
|
|
|
<a-col :span="24">
|
|
|
- <a-form-model-item
|
|
|
- label="预离时间"
|
|
|
- :labelCol="labelCol"
|
|
|
- :wrapperCol="wrapperCol"
|
|
|
- prop="orderInfo.dueOutTime2"
|
|
|
- >
|
|
|
- <j-date
|
|
|
- placeholder="预离时间"
|
|
|
- v-model="model.orderInfo.dueOutTime2"
|
|
|
- style="width: 180px"
|
|
|
- :allowClear="false"
|
|
|
- :disabled-date="disabledDate"
|
|
|
- :disabled="model.orderInfo.bookingType === 2"
|
|
|
- @change="arrivalTimeChange2"
|
|
|
- />
|
|
|
- <a-time-picker
|
|
|
- style="width: 80px; margin-left: 2px"
|
|
|
- v-model="model.orderInfo.dueOutTimeSpan"
|
|
|
- format="HH:mm"
|
|
|
- :allowClear="false"
|
|
|
- :disabled="model.orderInfo.bookingType === 2"
|
|
|
- />
|
|
|
+ <a-form-model-item label="预离时间" :labelCol="labelCol" :wrapperCol="wrapperCol"
|
|
|
+ prop="orderInfo.dueOutTime2">
|
|
|
+ <j-date placeholder="预离时间" v-model="model.orderInfo.dueOutTime2" style="width: 180px"
|
|
|
+ :allowClear="false" :disabled-date="disabledDate" :disabled="model.orderInfo.bookingType === 2"
|
|
|
+ @change="arrivalTimeChange2" />
|
|
|
+ <a-time-picker style="width: 80px; margin-left: 2px" v-model="model.orderInfo.dueOutTimeSpan"
|
|
|
+ format="HH:mm" :allowClear="false" :disabled="model.orderInfo.bookingType === 2" />
|
|
|
</a-form-model-item>
|
|
|
</a-col>
|
|
|
<a-col :span="24">
|
|
|
- <a-form-model-item
|
|
|
- label="客人来源"
|
|
|
- :labelCol="labelCol"
|
|
|
- :wrapperCol="wrapperCol"
|
|
|
- prop="orderInfo.customerSource"
|
|
|
- >
|
|
|
- <a-select
|
|
|
- placeholder="客人来源"
|
|
|
- v-model="model.orderInfo.customerSource"
|
|
|
- >
|
|
|
- <a-select-option
|
|
|
- :value="item.id"
|
|
|
- v-for="(item, index) in customerSourceList"
|
|
|
- :key="item.id"
|
|
|
- >
|
|
|
+ <a-form-model-item label="客人来源" :labelCol="labelCol" :wrapperCol="wrapperCol"
|
|
|
+ prop="orderInfo.customerSource">
|
|
|
+ <a-select placeholder="客人来源" v-model="model.orderInfo.customerSource">
|
|
|
+ <a-select-option :value="item.id" v-for="(item, index) in customerSourceList" :key="item.id">
|
|
|
{{ item.itemText }}
|
|
|
</a-select-option>
|
|
|
</a-select>
|
|
|
</a-form-model-item>
|
|
|
</a-col>
|
|
|
<a-col :span="24" v-if="model.orderInfo.bookingType == 2">
|
|
|
- <a-form-model-item
|
|
|
- label="时长"
|
|
|
- :labelCol="labelCol"
|
|
|
- :wrapperCol="wrapperCol"
|
|
|
- prop="orderInfo.hourRoomId"
|
|
|
- >
|
|
|
- <a-select
|
|
|
- placeholder="时长"
|
|
|
- v-model="model.orderInfo.hourRoomId"
|
|
|
- @change="hourRoomIdChange"
|
|
|
- >
|
|
|
- <a-select-option
|
|
|
- :value="item.id"
|
|
|
- v-for="(item, index) in hourRoomRuleList"
|
|
|
- :key="item.id"
|
|
|
- >
|
|
|
+ <a-form-model-item label="时长" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderInfo.hourRoomId">
|
|
|
+ <a-select placeholder="时长" v-model="model.orderInfo.hourRoomId" @change="hourRoomIdChange">
|
|
|
+ <a-select-option :value="item.id" v-for="(item, index) in hourRoomRuleList" :key="item.id">
|
|
|
{{ item.hourRoomName }}
|
|
|
</a-select-option>
|
|
|
</a-select>
|
|
|
</a-form-model-item>
|
|
|
</a-col>
|
|
|
<a-col :span="24" v-else>
|
|
|
- <a-form-model-item
|
|
|
- label="天数"
|
|
|
- :labelCol="labelCol"
|
|
|
- :wrapperCol="wrapperCol"
|
|
|
- prop="orderInfo.dayCount"
|
|
|
- >
|
|
|
- <a-input-number
|
|
|
- v-model="model.orderInfo.dayCount"
|
|
|
- placeholder="天数"
|
|
|
- :min="1"
|
|
|
- @change="dayCountChange"
|
|
|
- ></a-input-number>
|
|
|
+ <a-form-model-item label="天数" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderInfo.dayCount">
|
|
|
+ <a-input-number v-model="model.orderInfo.dayCount" placeholder="天数" :min="1"
|
|
|
+ @change="dayCountChange"></a-input-number>
|
|
|
</a-form-model-item>
|
|
|
</a-col>
|
|
|
|
|
|
<a-col :span="24">
|
|
|
- <a-form-model-item
|
|
|
- label="早餐"
|
|
|
- :labelCol="labelCol"
|
|
|
- :wrapperCol="wrapperCol"
|
|
|
- prop="orderInfo.breakfastNum"
|
|
|
- >
|
|
|
- <a-input-number
|
|
|
- v-model="model.orderInfo.breakfastNum"
|
|
|
- placeholder="早餐"
|
|
|
- :min="0"
|
|
|
- ></a-input-number>
|
|
|
+ <a-form-model-item label="早餐" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderInfo.breakfastNum">
|
|
|
+ <a-input-number v-model="model.orderInfo.breakfastNum" placeholder="早餐" :min="0"></a-input-number>
|
|
|
</a-form-model-item>
|
|
|
</a-col>
|
|
|
<a-col :span="24">
|
|
|
- <a-form-model-item
|
|
|
- label="预定方式"
|
|
|
- :labelCol="labelCol"
|
|
|
- :wrapperCol="wrapperCol"
|
|
|
- prop="orderInfo.bookingDicWay"
|
|
|
- >
|
|
|
- <a-select
|
|
|
- placeholder="预定方式"
|
|
|
- v-model="model.orderInfo.bookingDicWay"
|
|
|
- >
|
|
|
- <a-select-option
|
|
|
- :value="item.id"
|
|
|
- v-for="(item, index) in bookingdicWayList"
|
|
|
- :key="item.id"
|
|
|
- >
|
|
|
+ <a-form-model-item label="预定方式" :labelCol="labelCol" :wrapperCol="wrapperCol"
|
|
|
+ prop="orderInfo.bookingDicWay">
|
|
|
+ <a-select placeholder="预定方式" v-model="model.orderInfo.bookingDicWay">
|
|
|
+ <a-select-option :value="item.id" v-for="(item, index) in bookingdicWayList" :key="item.id">
|
|
|
{{ item.itemText }}
|
|
|
</a-select-option>
|
|
|
</a-select>
|
|
|
</a-form-model-item>
|
|
|
</a-col>
|
|
|
<a-col :span="24">
|
|
|
- <a-form-model-item
|
|
|
- label="客人类型"
|
|
|
- :labelCol="labelCol"
|
|
|
- :wrapperCol="wrapperCol"
|
|
|
- prop="orderInfo.customerType"
|
|
|
- >
|
|
|
- <a-select
|
|
|
- placeholder="客人类型"
|
|
|
- v-model="model.orderInfo.customerType"
|
|
|
- >
|
|
|
+ <a-form-model-item label="客人类型" :labelCol="labelCol" :wrapperCol="wrapperCol"
|
|
|
+ prop="orderInfo.customerType">
|
|
|
+ <a-select placeholder="客人类型" v-model="model.orderInfo.customerType" @change="customerTypeChange">
|
|
|
<a-select-option :value="1"> 散客 </a-select-option>
|
|
|
<a-select-option :value="2"> 会员 </a-select-option>
|
|
|
<a-select-option :value="3"> 协议单位 </a-select-option>
|
|
|
@@ -194,17 +91,39 @@
|
|
|
</a-select>
|
|
|
</a-form-model-item>
|
|
|
</a-col>
|
|
|
+ <a-col :span="24" v-if="model.orderInfo.customerType == 2">
|
|
|
+ <a-card :bordered="true" style="width: 100%;padding: 0 !important;">
|
|
|
+ <p>
|
|
|
+ <a-form-model-item label="选择会员" :labelCol="labelCol" :wrapperCol="wrapperCol"
|
|
|
+ prop="orderInfo.vipCustomerId">
|
|
|
+ <a-auto-complete v-model="vipInfo.name" placeholder="选择会员" @search="handleVipSearch"
|
|
|
+ @select="(e) => handleSelectVipMember(e)">
|
|
|
+ <template slot="dataSource">
|
|
|
+ <a-select-option v-for="item in vipList" :key="item.id">{{ item.name }}-{{ item.mobile
|
|
|
+ }}</a-select-option>
|
|
|
+ </template>
|
|
|
+ </a-auto-complete>
|
|
|
+ </a-form-model-item>
|
|
|
+ </p>
|
|
|
+ <p>
|
|
|
+ <a-row>
|
|
|
+ <a-col :span="8">名称:{{ vipInfo.name }}</a-col>
|
|
|
+ <a-col :span="8">电话:{{ vipInfo.mobile }}</a-col>
|
|
|
+ <a-col :span="8">级别:{{ vipInfo.gradeName }}</a-col>
|
|
|
+ </a-row>
|
|
|
+ <a-row>
|
|
|
+ <a-col :span="8">余额:{{ vipInfo.balance }}</a-col>
|
|
|
+ <a-col :span="8">积分:{{ vipInfo.integral }}</a-col>
|
|
|
+ <a-col :span="8">卡号:{{ vipInfo.cardNo }}</a-col>
|
|
|
+ </a-row>
|
|
|
+ </p>
|
|
|
+ </a-card>
|
|
|
+
|
|
|
+ </a-col>
|
|
|
<a-col :span="24" v-if="model.orderInfo.bookingType === 1">
|
|
|
- <a-form-model-item
|
|
|
- label="房价方案"
|
|
|
- :labelCol="labelCol"
|
|
|
- :wrapperCol="wrapperCol"
|
|
|
- prop="orderInfo.roomPriceSlnId"
|
|
|
- >
|
|
|
- <a-select
|
|
|
- placeholder="房价方案"
|
|
|
- v-model="model.orderInfo.roomPriceSlnId"
|
|
|
- >
|
|
|
+ <a-form-model-item label="房价方案" :labelCol="labelCol" :wrapperCol="wrapperCol"
|
|
|
+ prop="orderInfo.roomPriceSlnId">
|
|
|
+ <a-select placeholder="房价方案" v-model="model.orderInfo.roomPriceSlnId">
|
|
|
<a-select-option value="会员价"> 会员价 </a-select-option>
|
|
|
<a-select-option value="平日价"> 平日价 </a-select-option>
|
|
|
</a-select>
|
|
|
@@ -215,49 +134,25 @@
|
|
|
</h4>
|
|
|
<a-divider />
|
|
|
<a-col :span="24">
|
|
|
- <a-form-model-item
|
|
|
- label="联系人"
|
|
|
- :labelCol="labelCol"
|
|
|
- :wrapperCol="wrapperCol"
|
|
|
- prop="contactName"
|
|
|
- >
|
|
|
- <a-auto-complete
|
|
|
- v-model="model.contactName"
|
|
|
- placeholder="联系人"
|
|
|
- @search="handleSearch"
|
|
|
- @select="(e) => handleSelectMember(e)"
|
|
|
- >
|
|
|
+ <a-form-model-item label="联系人" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="contactName">
|
|
|
+ <a-auto-complete v-model="model.contactName" placeholder="联系人" @search="handleSearch"
|
|
|
+ @select="(e) => handleSelectMember(e)">
|
|
|
<template slot="dataSource">
|
|
|
- <a-select-option
|
|
|
- v-for="item in customerList"
|
|
|
- :key="item.id"
|
|
|
- >{{ item.name }}-{{ item.phone }}</a-select-option
|
|
|
- >
|
|
|
+ <a-select-option v-for="item in customerList" :key="item.id">{{ item.name }}-{{ item.phone
|
|
|
+ }}</a-select-option>
|
|
|
</template>
|
|
|
</a-auto-complete>
|
|
|
</a-form-model-item>
|
|
|
</a-col>
|
|
|
<a-col :span="24">
|
|
|
- <a-form-model-item
|
|
|
- label="电话"
|
|
|
- :labelCol="labelCol"
|
|
|
- :wrapperCol="wrapperCol"
|
|
|
- prop="phone"
|
|
|
- >
|
|
|
+ <a-form-model-item label="电话" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="phone">
|
|
|
<a-input v-model="model.phone" placeholder="电话"></a-input>
|
|
|
</a-form-model-item>
|
|
|
</a-col>
|
|
|
<a-col :span="24">
|
|
|
- <a-form-model-item
|
|
|
- label="担保方式"
|
|
|
- :labelCol="labelCol"
|
|
|
- :wrapperCol="wrapperCol"
|
|
|
- prop="orderInfo.warrantType"
|
|
|
- >
|
|
|
- <a-select
|
|
|
- placeholder="担保方式"
|
|
|
- v-model="model.orderInfo.warrantType"
|
|
|
- >
|
|
|
+ <a-form-model-item label="担保方式" :labelCol="labelCol" :wrapperCol="wrapperCol"
|
|
|
+ prop="orderInfo.warrantType">
|
|
|
+ <a-select placeholder="担保方式" v-model="model.orderInfo.warrantType">
|
|
|
<a-select-option :value="1"> 无担保 </a-select-option>
|
|
|
<a-select-option :value="2"> 有担保 </a-select-option>
|
|
|
<a-select-option :value="3"> OTA担保 </a-select-option>
|
|
|
@@ -265,51 +160,23 @@
|
|
|
</a-form-model-item>
|
|
|
</a-col>
|
|
|
<a-col :span="24">
|
|
|
- <a-form-model-item
|
|
|
- label="销售员"
|
|
|
- :labelCol="labelCol"
|
|
|
- :wrapperCol="wrapperCol"
|
|
|
- prop="orderInfo.warranter"
|
|
|
- >
|
|
|
- <a-select
|
|
|
- placeholder="销售员"
|
|
|
- v-model="model.orderInfo.warranter"
|
|
|
- >
|
|
|
- <a-select-option
|
|
|
- :value="item.id"
|
|
|
- v-for="item in warranterList"
|
|
|
- :key="item.id"
|
|
|
- >
|
|
|
+ <a-form-model-item label="销售员" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderInfo.warranter">
|
|
|
+ <a-select placeholder="销售员" v-model="model.orderInfo.warranter">
|
|
|
+ <a-select-option :value="item.id" v-for="item in warranterList" :key="item.id">
|
|
|
{{ item.name }}
|
|
|
</a-select-option>
|
|
|
</a-select>
|
|
|
</a-form-model-item>
|
|
|
</a-col>
|
|
|
<a-col :span="24">
|
|
|
- <a-form-model-item
|
|
|
- label="外部单号"
|
|
|
- :labelCol="labelCol"
|
|
|
- :wrapperCol="wrapperCol"
|
|
|
- prop="orderInfo.outerOrdersNo"
|
|
|
- >
|
|
|
- <a-input
|
|
|
- v-model="model.orderInfo.outerOrdersNo"
|
|
|
- placeholder="外部单号"
|
|
|
- ></a-input>
|
|
|
+ <a-form-model-item label="外部单号" :labelCol="labelCol" :wrapperCol="wrapperCol"
|
|
|
+ prop="orderInfo.outerOrdersNo">
|
|
|
+ <a-input v-model="model.orderInfo.outerOrdersNo" placeholder="外部单号"></a-input>
|
|
|
</a-form-model-item>
|
|
|
</a-col>
|
|
|
<a-col :span="24">
|
|
|
- <a-form-model-item
|
|
|
- label="备注"
|
|
|
- :labelCol="labelCol"
|
|
|
- :wrapperCol="wrapperCol"
|
|
|
- prop="orderInfo.remark"
|
|
|
- >
|
|
|
- <a-textarea
|
|
|
- v-model="model.orderInfo.remark"
|
|
|
- rows="4"
|
|
|
- placeholder="备注"
|
|
|
- />
|
|
|
+ <a-form-model-item label="备注" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderInfo.remark">
|
|
|
+ <a-textarea v-model="model.orderInfo.remark" rows="4" placeholder="备注" />
|
|
|
</a-form-model-item>
|
|
|
</a-col>
|
|
|
</div>
|
|
|
@@ -322,33 +189,15 @@
|
|
|
<span>占房天数:{{ model.orderInfo.dayCount }}晚</span>
|
|
|
<span style="padding-left: 10px">总价:{{ amount }}</span>
|
|
|
</p>
|
|
|
- <a-table
|
|
|
- v-if="canUserRoomsShow"
|
|
|
- :columns="columns"
|
|
|
- :data-source="canUserRooms"
|
|
|
- :pagination="false"
|
|
|
- :rowKey="rowKey"
|
|
|
- >
|
|
|
- <div
|
|
|
- slot="expandedRowRender"
|
|
|
- slot-scope="record, index, indent, expanded"
|
|
|
- style="margin: 0"
|
|
|
- >
|
|
|
+ <a-table v-if="canUserRoomsShow" :columns="columns" :data-source="canUserRooms" :pagination="false"
|
|
|
+ :rowKey="rowKey">
|
|
|
+ <div slot="expandedRowRender" slot-scope="record, index, indent, expanded" style="margin: 0">
|
|
|
<p>
|
|
|
已排房:
|
|
|
- <template
|
|
|
- v-for="(building, bIndex) in record.buildingRooms"
|
|
|
- >
|
|
|
- <a-tag
|
|
|
- color="blue"
|
|
|
- closable
|
|
|
- :visible="visible"
|
|
|
- @close.stop="tagClose2(rindex, bIndex, index)"
|
|
|
- v-for="(item, rindex) in building.floorRooms"
|
|
|
- :key="rindex"
|
|
|
- v-if="item.check && item.check == 1"
|
|
|
- >{{ item.name }}</a-tag
|
|
|
- >
|
|
|
+ <template v-for="(building, bIndex) in record.buildingRooms">
|
|
|
+ <a-tag color="blue" closable :visible="visible" @close.stop="tagClose2(rindex, bIndex, index)"
|
|
|
+ v-for="(item, rindex) in building.floorRooms" :key="rindex"
|
|
|
+ v-if="item.check && item.check == 1">{{ item.name }}</a-tag>
|
|
|
<!-- <a-tag
|
|
|
color="blue"
|
|
|
closable
|
|
|
@@ -371,24 +220,24 @@
|
|
|
:text="record.layout.favPrice"
|
|
|
@change="onCellChange('favPrice', index, $event)"
|
|
|
/> -->
|
|
|
- {{ record.layout.favPrice }}
|
|
|
+ <span
|
|
|
+ v-if="(model.orderInfo.bookingType == 2 && supportLayoutIds.indexOf(record.layout.id) > -1) || model.orderInfo.bookingType == 1">
|
|
|
+ {{ record.layout.favPrice }}
|
|
|
+ </span>
|
|
|
+ <span v-else style="color:red;font-size: .8em;">
|
|
|
+ 不支持此时长
|
|
|
+ </span>
|
|
|
</template>
|
|
|
<template slot="presetNum" slot-scope="text, record, index">
|
|
|
<div>
|
|
|
<a-input-number
|
|
|
- v-model="record.layout.presetNum"
|
|
|
- :min="(record.rooms || []).length"
|
|
|
- :max="record.layout.oldTags"
|
|
|
- @change="presetNumChange($event, record)"
|
|
|
- />
|
|
|
+ :disabled="model.orderInfo.bookingType == 2 && supportLayoutIds.indexOf(record.layout.id) == -1"
|
|
|
+ v-model="record.layout.presetNum" :min="(record.rooms || []).length" :max="record.layout.oldTags"
|
|
|
+ @change="presetNumChange($event, record)" />
|
|
|
</div>
|
|
|
</template>
|
|
|
<span slot="action" slot-scope="text, record, index">
|
|
|
- <a
|
|
|
- :disabled="record.layout.presetNum <= 0"
|
|
|
- @click="pulsRoom(index)"
|
|
|
- >排房</a
|
|
|
- >
|
|
|
+ <a :disabled="record.layout.presetNum <= 0" @click="pulsRoom(index)">排房</a>
|
|
|
</span>
|
|
|
</a-table>
|
|
|
</div>
|
|
|
@@ -396,10 +245,7 @@
|
|
|
</a-row>
|
|
|
</a-form-model>
|
|
|
</j-form-container>
|
|
|
- <select-room-form-modal
|
|
|
- ref="modalSelectRoomForm"
|
|
|
- @ok="modalFormOk"
|
|
|
- ></select-room-form-modal>
|
|
|
+ <select-room-form-modal ref="modalSelectRoomForm" @ok="modalFormOk"></select-room-form-modal>
|
|
|
</a-spin>
|
|
|
</template>
|
|
|
|
|
|
@@ -507,10 +353,20 @@ export default {
|
|
|
warrantType: 1,
|
|
|
hourRoomId: "",
|
|
|
breakfastNum: 0,
|
|
|
+ vipCustomerId: ""
|
|
|
},
|
|
|
+
|
|
|
roomIds: [],
|
|
|
layoutDayPrices: [],
|
|
|
},
|
|
|
+ vipInfo: {
|
|
|
+ name: '',
|
|
|
+ mobile: '',
|
|
|
+ gradeName: '',
|
|
|
+ balance: 0,
|
|
|
+ integral: 0,
|
|
|
+ cardNo: ''
|
|
|
+ },
|
|
|
labelCol: {
|
|
|
xs: { span: 24 },
|
|
|
sm: { span: 5 },
|
|
|
@@ -539,6 +395,10 @@ export default {
|
|
|
"orderInfo.customerType": [
|
|
|
{ required: true, message: "请选择客人类型!" },
|
|
|
],
|
|
|
+ "orderInfo.vipCustomerId": [{
|
|
|
+ required: true,
|
|
|
+ message: "请选择VIP!"
|
|
|
+ }],
|
|
|
contactName: [{ required: true, message: "请输入联系人!" }],
|
|
|
phone: [{ required: true, message: "请输入电话!" }],
|
|
|
},
|
|
|
@@ -550,12 +410,15 @@ export default {
|
|
|
result: [],
|
|
|
selectIndex: 0,
|
|
|
customerSourceList: [],
|
|
|
+ vipList: [],
|
|
|
+ oldVipList: [],
|
|
|
bookingdicWayList: [],
|
|
|
warranterList: [],
|
|
|
hourRoomRuleList: [],
|
|
|
canUserRooms: [],
|
|
|
customerList: [],
|
|
|
oldcustomerList: [],
|
|
|
+ supportLayoutIds: []
|
|
|
};
|
|
|
},
|
|
|
computed: {
|
|
|
@@ -586,6 +449,16 @@ export default {
|
|
|
this.customerSourceList = res.result.records;
|
|
|
}
|
|
|
});
|
|
|
+ getAction("/business/busMemberCard/list", {
|
|
|
+ hotelId: _info.id,
|
|
|
+ pageNo: 1,
|
|
|
+ pageSize: 99999
|
|
|
+ }).then((res) => {
|
|
|
+ if (res.success) {
|
|
|
+ this.vipList = res.result.records;
|
|
|
+ this.oldVipList = JSON.parse(JSON.stringify(this.vipList));
|
|
|
+ }
|
|
|
+ });
|
|
|
getAction("/business/busDictItem/list", {
|
|
|
hotelId: _info.id,
|
|
|
dictId: "1639544187093995521",
|
|
|
@@ -643,6 +516,11 @@ export default {
|
|
|
console.log(e);
|
|
|
record.layout.canUseCount = record.layout.oldTags - e;
|
|
|
},
|
|
|
+ customerTypeChange() {
|
|
|
+ if (this.model.orderInfo.customerType == 2) {
|
|
|
+
|
|
|
+ }
|
|
|
+ },
|
|
|
onCellChange(key, dataIndex, value) {
|
|
|
const dataSource = [...this.canUserRooms];
|
|
|
const target = dataSource[dataIndex];
|
|
|
@@ -693,6 +571,7 @@ export default {
|
|
|
this.model.orderInfo.hourRoomId = "";
|
|
|
} else {
|
|
|
var hourRoomRule = this.hourRoomRuleList[0];
|
|
|
+ this.supportLayoutIds = (hourRoomRule.layoutIds || '').split(',') || []
|
|
|
if (hourRoomRule) {
|
|
|
this.model.orderInfo.hourRoomId = hourRoomRule.id;
|
|
|
}
|
|
|
@@ -704,8 +583,8 @@ export default {
|
|
|
if (find) {
|
|
|
var mDate = moment(
|
|
|
this.model.orderInfo.arrivalTime2 +
|
|
|
- " " +
|
|
|
- moment(this.model.orderInfo.arrivalTimeSpan).format("HH:mm")
|
|
|
+ " " +
|
|
|
+ moment(this.model.orderInfo.arrivalTimeSpan).format("HH:mm")
|
|
|
).add(find.afterOpenRoom, "minutes");
|
|
|
this.model.orderInfo.dueOutTime2 = mDate.format("YYYY-MM-DD");
|
|
|
|
|
|
@@ -735,7 +614,7 @@ export default {
|
|
|
var v = parseInt(
|
|
|
(new Date(this.model.orderInfo.dueOutTime2).getTime() -
|
|
|
new Date(this.model.orderInfo.arrivalTime2).getTime()) /
|
|
|
- (1000 * 60 * 60 * 24)
|
|
|
+ (1000 * 60 * 60 * 24)
|
|
|
);
|
|
|
if (v <= 0) {
|
|
|
this.model.orderInfo.dueOutTime2 = moment(
|
|
|
@@ -747,7 +626,7 @@ export default {
|
|
|
v = parseInt(
|
|
|
(new Date(this.model.orderInfo.dueOutTime2).getTime() -
|
|
|
new Date(this.model.orderInfo.arrivalTime2).getTime()) /
|
|
|
- (1000 * 60 * 60 * 24)
|
|
|
+ (1000 * 60 * 60 * 24)
|
|
|
);
|
|
|
this.model.orderInfo.dayCount = Math.abs(v);
|
|
|
this.loadRooms();
|
|
|
@@ -756,7 +635,7 @@ export default {
|
|
|
var v = parseInt(
|
|
|
(new Date(this.model.orderInfo.dueOutTime2).getTime() -
|
|
|
new Date(this.model.orderInfo.arrivalTime2).getTime()) /
|
|
|
- (1000 * 60 * 60 * 24)
|
|
|
+ (1000 * 60 * 60 * 24)
|
|
|
);
|
|
|
if (v <= 0) {
|
|
|
this.model.orderInfo.arrivalTime2 = moment(
|
|
|
@@ -768,7 +647,7 @@ export default {
|
|
|
v = parseInt(
|
|
|
(new Date(this.model.orderInfo.dueOutTime2).getTime() -
|
|
|
new Date(this.model.orderInfo.arrivalTime2).getTime()) /
|
|
|
- (1000 * 60 * 60 * 24)
|
|
|
+ (1000 * 60 * 60 * 24)
|
|
|
);
|
|
|
this.model.orderInfo.dayCount = Math.abs(v);
|
|
|
this.loadRooms();
|
|
|
@@ -783,8 +662,8 @@ export default {
|
|
|
if (find) {
|
|
|
var mDate = moment(
|
|
|
this.model.orderInfo.arrivalTime2 +
|
|
|
- " " +
|
|
|
- moment(this.model.orderInfo.arrivalTimeSpan).format("HH:mm")
|
|
|
+ " " +
|
|
|
+ moment(this.model.orderInfo.arrivalTimeSpan).format("HH:mm")
|
|
|
).add(find.afterOpenRoom, "minutes");
|
|
|
this.model.orderInfo.dueOutTime2 = mDate.format("YYYY-MM-DD");
|
|
|
|
|
|
@@ -802,10 +681,11 @@ export default {
|
|
|
(t) => t.id === this.model.orderInfo.hourRoomId
|
|
|
);
|
|
|
if (find) {
|
|
|
+ this.supportLayoutIds = (find.layoutIds || '').split(',') || []
|
|
|
var mDate = moment(
|
|
|
this.model.orderInfo.arrivalTime2 +
|
|
|
- " " +
|
|
|
- moment(this.model.orderInfo.arrivalTimeSpan).format("HH:mm")
|
|
|
+ " " +
|
|
|
+ moment(this.model.orderInfo.arrivalTimeSpan).format("HH:mm")
|
|
|
).add(find.afterOpenRoom, "minutes");
|
|
|
this.model.orderInfo.dueOutTime2 = mDate.format("YYYY-MM-DD");
|
|
|
|
|
|
@@ -855,12 +735,26 @@ export default {
|
|
|
}
|
|
|
this.customerList = result;
|
|
|
},
|
|
|
+ handleVipSearch(value) {
|
|
|
+ let result;
|
|
|
+ if (!value) {
|
|
|
+ result = this.oldVipList;
|
|
|
+ } else {
|
|
|
+ result = this.oldVipList.filter((t) => t.name.includes(value));
|
|
|
+ }
|
|
|
+ this.vipList = result;
|
|
|
+ },
|
|
|
handleSelectMember(e) {
|
|
|
var find = this.customerList.find((t) => t.id === e);
|
|
|
this.model.phone = find.phone;
|
|
|
this.model.contactName = find.name;
|
|
|
this.model.orderInfo.contactId = find.id;
|
|
|
},
|
|
|
+ handleSelectVipMember(e) {
|
|
|
+ var find = this.vipList.find((t) => t.id === e);
|
|
|
+ this.model.orderInfo.vipCustomerId = find.id
|
|
|
+ this.vipInfo = find
|
|
|
+ },
|
|
|
moment,
|
|
|
onChange(date, dateString) {
|
|
|
console.log(date, dateString);
|
|
|
@@ -869,7 +763,7 @@ export default {
|
|
|
this.edit(this.modelDefault);
|
|
|
},
|
|
|
addList(roomLiveList, key) {
|
|
|
- console.log('roomLiveList',roomLiveList)
|
|
|
+ console.log('roomLiveList', roomLiveList)
|
|
|
this.modelDefault = Object.assign({}, this.modelDefault, {
|
|
|
rooms: roomLiveList,
|
|
|
});
|
|
|
@@ -993,6 +887,7 @@ export default {
|
|
|
/deep/.ant-divider-horizontal {
|
|
|
margin: 12px 0 !important;
|
|
|
}
|
|
|
+
|
|
|
/deep/ .ant-form-item {
|
|
|
margin-bottom: 5px !important;
|
|
|
}
|