| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682 |
- <template>
- <a-spin :spinning="confirmLoading">
- <j-form-container :disabled="formDisabled">
- <a-form-model
- ref="form"
- :model="model"
- :rules="validatorRules"
- slot="detail"
- >
- <a-row>
- <div>
- <div style="display: flex; gap: 15px">
- <div style="width: 57%">
- <a-tabs
- hide-add
- type="editable-card"
- v-model="activeKey"
- :tabBarStyle="{ fontWeight: 600 }"
- @edit="editTabs"
- @tabClick="tabClick"
- >
- <a-tab-pane
- v-for="(room, aindex) in model.roomIds"
- :key="room.id"
- :tab="room.name"
- :closable="true"
- force-render
- >
- <div style="display: flex; justify-content: space-between">
- <h4
- style="
- color: rgba(255, 141, 26, 1);
- font-weight: 600;
- "
- >
- 宾客信息
- </h4>
- <div><a-switch v-model="otherRoomSync" />附属房间录入信息</div>
- </div>
- <a-divider />
- <!-- <a-col :span="8">
- <a-form-model-item
- label="姓名"
- :labelCol="labelCol"
- :wrapperCol="wrapperCol"
- :prop="`rooms[${index}].key1`"
- :rules="[
- {
- required: true,
- message: '请输入姓名!',
- trigger: 'change',
- },
- ]"
- >
- <a-auto-complete
- v-model="room.key1"
- placeholder="请输入姓名"
- @search="handleSearch"
- @select="(e) => handleSelectMember(room, e)"
- >
- <template slot="dataSource">
- <a-select-option
- v-for="item in result"
- :key="item"
- >{{ item }}</a-select-option
- >
- </template>
- </a-auto-complete>
- </a-form-model-item>
- </a-col> -->
- <a-col :span="12">
- <a-form-model-item
- label="姓名"
- :labelCol="{ xs: { span: 24 }, sm: { span: 5 } }"
- :wrapperCol="{
- xs: { span: 24 },
- sm: { span: 16 },
- }"
- :prop="`roomIds[${aindex}].key1`"
- :rules="[
- {
- required: true,
- message: '请输入姓名!',
- trigger: 'change',
- },
- ]"
- >
- <a-auto-complete style="width: 60%;"
- v-model="room.key1"
- placeholder="请输入姓名"
- @search="handleSearch"
- @select="(e) => handleSelectMember(room, e)"
- >
- <template slot="dataSource">
- <a-select-option
- v-for="item in customerList"
- :key="item.id"
- >{{ item.name }}-{{ item.phone }}</a-select-option
- >
- </template>
- </a-auto-complete>
- <a-icon type="contacts" style="font-size: 18px;margin-left: 5px;" @click="readCardNo" />
- <span style="cursor: pointer;" v-if="room.busMemberCard&&room.busMemberCard.id" @click="showMemberCard(room.busMemberCard)">会员</span>
- <span style="cursor: pointer;" v-if="room.busMarketAgreementUnit&&room.busMarketAgreementUnit.id" @click="showAgreementUnit(room.busMarketAgreementUnit)"> 协议</span>
- <span style="cursor: pointer;" v-if="room.ruZhuHistory&&room.ruZhuHistory.phone" @click="showRuZhuHistory(room.ruZhuHistory.phone)"> 客史</span>
-
- </a-form-model-item>
- </a-col>
- <a-col :span="6">
- <a-form-model-item
- label="性别"
- :labelCol="labelCol"
- :wrapperCol="wrapperCol"
- :prop="`roomIds[${aindex}].key2`"
- :rules="[
- {
- required: true,
- message: '请选择性别!',
- trigger: 'change',
- },
- ]"
- >
- <a-select v-model="room.key2" placeholder="请选择性别">
- <a-select-option :value="1"> 男 </a-select-option>
- <a-select-option :value="2"> 女 </a-select-option>
- </a-select>
- </a-form-model-item>
- </a-col>
- <a-col :span="6">
- <a-form-model-item
- label="民族"
- :labelCol="labelCol"
- :wrapperCol="wrapperCol"
- :prop="`roomIds[${aindex}].key3`"
- :rules="[
- {
- required: true,
- message: '请选择民族!',
- trigger: 'change',
- },
- ]"
- >
- <a-select v-model="room.key3" placeholder="请选择民族">
- <a-select-option value="汉"> 汉 </a-select-option>
- <a-select-option value="回"> 回 </a-select-option>
- </a-select>
- </a-form-model-item>
- </a-col>
- <a-col :span="16">
- <a-form-model-item
- label="身份证号"
- :labelCol="{ xs: { span: 24 }, sm: { span: 5 } }"
- :wrapperCol="{
- xs: { span: 24 },
- sm: { span: 16 },
- }"
- :prop="`roomIds[${aindex}].key4`"
- >
- <a-input
- v-model="room.key4"
- placeholder="请输身份证号"
- ></a-input>
- </a-form-model-item>
- </a-col>
- <a-col :span="8">
- <a-form-model-item
- label="手机号"
- :labelCol="labelCol"
- :wrapperCol="wrapperCol"
- :prop="`roomIds[${aindex}].key5`"
- >
- <a-input
- v-model="room.key5"
- placeholder="请输入手机号"
- ></a-input>
- </a-form-model-item>
- </a-col>
- <a-col :span="24">
- <a-form-model-item
- label="联系地址"
- :labelCol="{ xs: { span: 24 }, sm: { span: 3 } }"
- :wrapperCol="{
- xs: { span: 24 },
- sm: { span: 16 },
- }"
- prop="key6"
- >
- <a-input
- v-model="room.key6"
- placeholder="请输入联系地址"
- ></a-input>
- </a-form-model-item>
- </a-col>
- <a-col :span="24">
- <div
- style="display: flex; justify-content: space-between"
- >
- <div></div>
- <div>
- <a-button type="link" @click="puls(room)">
- 添加同住
- </a-button>
- <a-icon
- type="right"
- v-if="room.invalid"
- @click="room.invalid=false"
- />
- <a-icon type="down" v-else @click="room.invalid=true" />
- </div>
- </div>
- </a-col>
- <template v-for="(item, index) in room.livingCustomers2" v-if="!room.invalid">
- <a-col :span="4">
- <a-form-model-item
- :wrapperCol="{
- xs: { span: 24 },
- sm: { span: 22 },
- }"
- :prop="`roomIds[${aindex}].livingCustomers2[${index}].customerName`"
- :rules="[
- {
- required: true,
- message: '请输入姓名!',
- trigger: 'change',
- },
- ]"
- >
- <a-input
- v-model="item.customerName"
- placeholder="姓名"
- ></a-input>
- </a-form-model-item>
- </a-col>
- <a-col :span="4">
- <a-form-model-item
- :wrapperCol="{
- xs: { span: 24 },
- sm: { span: 22 },
- }"
- :prop="`roomIds[${aindex}].livingCustomers2[${index}].gender`"
- >
- <a-select placeholder="性别" v-model="item.gender">
- <a-select-option :value="1"> 男 </a-select-option>
- <a-select-option :value="2"> 女 </a-select-option>
- </a-select>
- </a-form-model-item>
- </a-col>
- <a-col :span="4">
- <a-form-model-item
- :wrapperCol="{
- xs: { span: 24 },
- sm: { span: 22 },
- }"
- :prop="`roomIds[${aindex}].livingCustomers2[${index}].certType`"
- >
- <a-select placeholder="证件" v-model="item.certType">
- <a-select-option :value="1">
- 身份证
- </a-select-option>
- <a-select-option :value="2"> 护照 </a-select-option>
- </a-select>
- </a-form-model-item>
- </a-col>
- <a-col :span="6">
- <a-form-model-item
- :wrapperCol="{
- xs: { span: 24 },
- sm: { span: 23 },
- }"
- :prop="`roomIds[${aindex}].livingCustomers2[${index}].certNo`"
- :rules="[
- {
- required: true,
- message: '请输入证件号!',
- trigger: 'change',
- },
- ]"
- >
- <a-input
- v-model="item.certNo"
- placeholder="证件号"
- ></a-input>
- </a-form-model-item>
- </a-col>
- <a-col :span="6">
- <a-form-model-item
- :wrapperCol="{
- xs: { span: 24 },
- sm: { span: 24 },
- }"
- :prop="`roomIds[${aindex}].livingCustomers2[${index}].phone`"
- :rules="[
- {
- required: true,
- message: '请输入手机号!',
- trigger: 'change',
- },
- ]"
- >
- <a-input
- v-model="item.phone"
- placeholder="手机号"
- style="width: 120px"
- ></a-input>
- <a-icon type="contacts" style="font-size: 18px;margin-left: 5px;" @click="readCardNo" />
- <a-icon
- type="minus-circle"
- style="color: #f56c6c"
- class="dynamic-delete-button"
- v-if="room.livingCustomers2.length > 0"
- @click="() => remove(room, index)"
- />
- </a-form-model-item>
- </a-col>
- </template>
- </a-tab-pane>
- <div slot="tabBarExtraContent">
- <a-button type="link" @click="pulsRoom()">
- 增加房间
- </a-button>
- </div>
- </a-tabs>
- <h4
- style="
- color: rgba(255, 141, 26, 1);
- font-weight: 600;
- margin-top: 20px;
- "
- >
- 入住信息
- </h4>
- <a-divider />
- <a-col :span="12">
- <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>
- </a-form-model-item>
- </a-col>
- <a-col :span="12">
- <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="12" 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"
- >
- {{ item.hourRoomName }}
- </a-select-option>
- </a-select>
- </a-form-model-item>
- </a-col>
- <a-col :span="12" 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>
- </a-col>
- <a-col :span="12">
- <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="12">
- <a-form-model-item
- label="入住时间"
- :labelCol="labelCol"
- :wrapperCol="wrapperCol"
- prop="orderInfo.arrivalTime2"
- >
- <j-date
- placeholder="入住时间"
- v-model="model.orderInfo.arrivalTime2"
- style="width: 120px"
- :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="12">
- <a-form-model-item
- label="预离时间"
- :labelCol="labelCol"
- :wrapperCol="wrapperCol"
- prop="orderInfo.dueOutTime2"
- >
- <j-date
- placeholder="预离时间"
- v-model="model.orderInfo.dueOutTime2"
- style="width: 120px"
- :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="12">
- <a-form-model-item
- label="宾客类型"
- :labelCol="labelCol"
- :wrapperCol="wrapperCol"
- prop="orderInfo.customerType"
- >
- <a-select
- placeholder="宾客类型"
- v-model="model.orderInfo.customerType"
- >
- <a-select-option :value="1"> 散客 </a-select-option>
- <a-select-option :value="2"> 会员 </a-select-option>
- <a-select-option :value="3"> 协议单位 </a-select-option>
- <a-select-option :value="4"> 中介 </a-select-option>
- </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="{
- xs: { span: 24 },
- sm: { span: 2 },
- }"
- :wrapperCol="{
- xs: { span: 24 },
- sm: { span: 22 },
- }"
- prop="orderInfo.vipCustomerId"
- >
- <a-auto-complete v-model="vipCustomerData.name" @select="(e)=>handleSelectVip(e)" @search="handleSearchVip">
- <template slot="dataSource">
- <a-select-option
- :key="item.id"
- :value="item.id"
- :label="item.name"
- v-for="(item, index) in busMemberCardList"
- >
- {{ item.name }}-{{ item.gradeName }}-{{ item.balance }}
- </a-select-option>
- </template>
- </a-auto-complete>
- </a-form-model-item>
- </p>
- <p>
- <a-row>
- <a-col :span="8">名称:{{ vipCustomerData.name }}</a-col>
- <a-col :span="8">电话:{{ vipCustomerData.mobile }}</a-col>
- <a-col :span="8">级别:{{ vipCustomerData.gradeName }}</a-col>
- </a-row>
- <a-row>
- <a-col :span="8">余额:{{ vipCustomerData.balance }}</a-col>
- <a-col :span="8">积分:{{ vipCustomerData.integral }}</a-col>
- <a-col :span="8">卡号:{{ vipCustomerData.cardNo }}</a-col>
- </a-row>
- </p>
- </a-card>
- </a-col>
- <!-- <a-col :span="12" v-if="model.orderInfo.customerType === 3">
- <a-form-model-item
- label="协议单位"
- :labelCol="labelCol"
- :wrapperCol="wrapperCol"
- prop="orderInfo.roomPriceSlnId"
- >
- <a-select
- placeholder="协议单位"
- option-label-prop="label"
- v-model="model.orderInfo.contractTeamId"
- @change="contractTeamIdChange"
- >
- <a-select-option
- :key="item.id"
- :value="item.id"
- :label="item.customerName"
- v-for="(item, index) in busMarketAgreementUnitList"
- >
- {{ item.customerName }}
- </a-select-option>
- </a-select>
- </a-form-model-item>
- </a-col> -->
- <!-- <a-col :span="12"></a-col> -->
- <a-col :span="24" v-if="model.orderInfo.customerType === 3">
- <!-- <a-form-model-item
- label="协议合同"
- :labelCol="labelCol"
- :wrapperCol="wrapperCol"
- prop="orderInfo.contractTeamProtocolId"
- >
- <span style="color:red;cursor: pointer;" @click="showAgreementUnitTable(model.orderInfo.contractTeamId)">{{ model.orderInfo.contractTeamProtocolName }}</span>
- </a-form-model-item> -->
- <a-card :bordered="true" style="width: 100%;padding: 0 !important;">
- <a-row>
- <a-col :span="12">
- <a-form-model-item
- label="协议单位"
- :labelCol="labelCol"
- :wrapperCol="wrapperCol"
- prop="orderInfo.contractTeamId"
- >
- <a-auto-complete v-model="agreementUnitData.customerName" @select="(e)=>handleSelectAgreementUnit(e)" @search="handleSearchAgreementUnit">
- <template slot="dataSource">
- <a-select-option
- :key="item.id"
- :value="item.id"
- :label="item.customerName"
- v-for="(item, index) in busMarketAgreementUnitList"
- >
- {{ item.customerName }}
- </a-select-option>
- </template>
- </a-auto-complete>
- </a-form-model-item>
- </a-col>
- <a-col :span="12">
- <a-form-model-item
- label="协议合同"
- :labelCol="labelCol"
- :wrapperCol="wrapperCol"
- prop="orderInfo.contractTeamProtocolId"
- >
- <span style="color:red;cursor: pointer;" @click="showAgreementUnitTable(model.orderInfo.contractTeamId)">{{ model.orderInfo.contractTeamProtocolName }}</span>
- </a-form-model-item>
- </a-col>
- </a-row>
- <p>
- <a-row>
- <a-col :span="12">名称:{{ agreementUnitData.customerName }}</a-col>
- <a-col :span="12">签约开始日期:{{ busMarketAgreementCustomer.signTime }}</a-col>
- <a-col :span="12">签约结束日期:{{ busMarketAgreementCustomer.effective }}</a-col>
- <a-col :span="12">可用额度:{{ agreementUnitData.balance||0 }}</a-col>
- </a-row>
- </p>
- </a-card>
- </a-col>
- <a-col :span="12">
- <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>
- </a-form-model-item>
- </a-col>
- <a-col :span="12">
- <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="12">
- <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="{ xs: { span: 24 }, sm: { span: 3 } }"
- :wrapperCol="{
- xs: { span: 24 },
- sm: { span: 15 },
- }"
- prop="orderInfo.remark"
- >
- <a-textarea
- v-model="model.orderInfo.remark"
- rows="4"
- placeholder="订单备注"
- />
- </a-form-model-item>
- </a-col>
- </div>
- <div style="width: 43%">
- <div
- style="
- display: flex;
- justify-content: space-between;
- align-items: center;
- "
- >
- <h4
- style="
- color: rgba(255, 141, 26, 1);
- font-weight: 600;
- margin-top: 15px;
- "
- >
- 财务信息
- </h4>
- <div>
- <a-switch v-model="depositSplit" />押金均摊记账到每个房间
- </div>
- </div>
- <a-divider />
- <a-table
- :columns="columns"
- :data-source="model.roomPrices"
- :pagination="false"
- rowKey="id"
- :scroll="{ y: 200, x: 500 }"
- >
- <template slot="prefPrice" slot-scope="text, record, index">
- <div>
- {{text}}<a-icon @click="onCellExpand(index)" style="margin-left:10px;" type="edit" />
- <!-- <editable-cell
- :text="text"
-
- @change.stop="onCellChange('prefPrice', index, $event)"
- /> -->
- </div>
- </template>
- <template slot="deposit" slot-scope="text, record, index">
- <editable-cell
- :text="text"
- @change="onCellChangeCopy('deposit', index, $event)"
- />
- </template>
- </a-table>
- <div
- style="
- color: rgba(255, 87, 51, 1);
- font-weight: 600;
- text-align: right;
- "
- >
- 合计应收:{{ amount.toFixed(2) }}
- </div>
- <div
- style="
- display: flex;
- justify-content: space-between;
- align-items: center;
- margin-top: 30px;
- "
- >
- <!-- <h4
- style="
- color: rgba(255, 141, 26, 1);
- font-weight: 600;
- margin-top: 15px;
- "
- >
- 收款
- </h4> -->
- <a-tabs
- default-active-key="1"
- @change="paymentTabsChange"
- :tabBarStyle="{ fontWeight: 600 }"
- >
- <a-tab-pane key="1" tab="收款">
- <a-table
- :columns="columns2"
- :data-source="model.orderFees"
- :pagination="false"
- rowKey="id"
- :scroll="{ y: 160 }"
- >
- <template
- slot="subjectTypeLabel"
- slot-scope="text, record, index"
- >
- <div>
- <!-- <a-input
- style="margin: -5px 0"
- :value="text"
- @change="
- (e) => handleChange(e.target.value, index, 'subjectTypeLabel')
- "
- /> -->
- <a-select
- v-model="model.orderFees[index].subjectType"
- placeholder="费项"
- >
- <a-select-option :value="2">
- 房费
- </a-select-option>
- <a-select-option :value="1">
- 押金
- </a-select-option>
- </a-select>
- </div>
- </template>
- <template
- slot="payType"
- slot-scope="text, record, index"
- >
- <div>
- <a-select
- v-model="model.orderFees[index].payType"
- placeholder="收款方式"
- >
- <a-select-option
- :value="item.id"
- v-for="item in payTypeList"
- :key="item.id"
- >
- {{ item.name }}
- </a-select-option>
- </a-select>
- </div>
- </template>
- <template slot="money" slot-scope="text, record, index">
- <div>
- <a-input-number
- v-model="record.money"
- :min="0"
- @change="presetNumChange($event, record)"
- />
- </div>
- </template>
- </a-table>
- <div
- style="color: rgba(255, 141, 26, 1); font-weight: 200"
- >
- <p style="margin-bottom: 2px">
- <template></template>
- 实收:{{ orderFeesText }}
- </p>
- <p style="margin-bottom: 2px">
- 合计实款:{{ orderFeesAmout.toFixed(2) }}
- </p>
- </div>
- <div
- style="color: rgba(255, 87, 51, 1); font-weight: 200"
- >
- <p v-if="orderFeesArrearsAmout < 0">
- 欠费:{{ orderFeesArrearsAmout.toFixed(2) }}元
- </p>
- </div>
- </a-tab-pane>
- <a-tab-pane key="2" tab="信用卡预授权">
- <a-row
- v-for="(item, index) in payPalModel.list"
- :key="index"
- >
- <a-col :span="9">
- <a-form-model-item
- :labelCol="{
- xs: { span: 24 },
- sm: { span: 5 },
- }"
- :wrapperCol="{
- xs: { span: 24 },
- sm: { span: 22 },
- }"
- prop="key1"
- >
- <a-input
- v-model="item.key1"
- placeholder="银行卡号"
- ></a-input>
- </a-form-model-item>
- </a-col>
- <a-col :span="9">
- <a-form-model-item
- :labelCol="{
- xs: { span: 24 },
- sm: { span: 5 },
- }"
- :wrapperCol="{
- xs: { span: 24 },
- sm: { span: 22 },
- }"
- prop="key2"
- >
- <a-input
- v-model="item.key2"
- placeholder="预授权号"
- :min="1"
- ></a-input>
- </a-form-model-item>
- </a-col>
- <a-col :span="6">
- <a-form-model-item
- :labelCol="{
- xs: { span: 24 },
- sm: { span: 5 },
- }"
- :wrapperCol="{
- xs: { span: 24 },
- sm: { span: 22 },
- }"
- prop="key3"
- >
- <a-input-number
- v-model="item.key3"
- placeholder="金额"
- :min="1"
- ></a-input-number>
- </a-form-model-item>
- </a-col>
- </a-row>
- </a-tab-pane>
- <div slot="tabBarExtraContent">
- <a-switch v-model="paymentSplit" />押金、房费分开收款
- <a-button type="link" @click="pulsFee">
- 添加费项
- </a-button>
- </div>
- </a-tabs>
- </div>
- <div style="display:flex;justify-content: end; margin-top:20px;">
- <a-checkbox defaultChecked>打印入住登记单</a-checkbox></div>
- </div>
- </div>
- </div>
- </a-row>
- </a-form-model>
- </j-form-container>
- <select-room-form-modal
- ref="modalSelectRoomForm"
- @ok="modalFormOk"
- ></select-room-form-modal>
- <!-- 修改每日单价弹窗 -->
- <a-modal :visible="editPriceModal" title="调价" @cancel="editPriceModal = false" :width="800" @ok="editPriceOk">
- <table>
- <tr>
- <td style="text-align:center;background:#722ed1;color:#fff;">
- 批量调价
- </td>
- <td style="text-align:center;background:#1890ff;color:#fff;">
- 价格调整(元/天)
- </td>
- </tr>
- <th>
- <td style="text-align:center;color:#722ed1;">
- <div>每日房价</div>
- <div v-if="model.roomPrices.length>0 && model.roomPrices[editPriceIndex]">
- <a-input-number v-model="model.roomPrices[editPriceIndex].prefPrice" @change="batchPrice"></a-input-number>
- </div>
- </td>
- </th>
- <th style="display:flex;flex-wrap:wrap;">
- <td v-for="(item, index) in editPriceData" :key="index">
- <div style="text-align:center;">
- {{item.day}}
- </div>
- <div>
- <a-input-number v-model="item.price"></a-input-number>
- </div>
- </td>
- </th>
- </table>
- </a-modal>
- <member-card-modal ref="modalMemberCardInfo"></member-card-modal>
- <agreement-unit-modal ref="modalAgreementUnitInfo"></agreement-unit-modal>
- <agreement-unit-modal-table ref="modalAgreementUnitTable" @ok="modalAgreementUnitTableOk"></agreement-unit-modal-table>
- <history-modal ref="modalHistoryInfo"></history-modal>
- </a-spin>
- </template>
- <script>
- import { httpAction, getAction, postAction } from "@/api/manage";
- import { validateDuplicateValue } from "@/utils/util";
- import moment from "moment";
- import EditableCell from "./EditableCell.vue";
- import SelectRoomFormModal from "./SelectRoomFormModal.vue";
- import MemberCardModal from "./MemberCardModal";
- import AgreementUnitModal from "./AgreementUnitModal";
- import AgreementUnitModalTable from "./AgreementUnitModalTable";
- import HistoryModal from "./HistoryModal";
- const columns = [
- // {
- // title: "",
- // dataIndex: "key",
- // width: 20,
- // },
- {
- title: "房间号",
- dataIndex: "roomNo",
- width: 70,
- },
- {
- title: "房型",
- dataIndex: "layoutName",
- width: 80,
- },
- {
- title: "门市价",
- dataIndex: "marketPrice",
- width: 60,
- },
- {
- title: "优惠价",
- dataIndex: "prefPrice",
- width: 100,
- scopedSlots: { customRender: "prefPrice" },
- },
- {
- title: "天数",
- dataIndex: "day",
- width: 40,
- },
- {
- title: "房费",
- dataIndex: "roomFee",
- width: 60,
- },
- {
- title: "押金",
- dataIndex: "deposit",
- scopedSlots: { customRender: "deposit" },
- width: 120,
- },
- ];
- const columns2 = [
- {
- title: "费项",
- dataIndex: "subjectType",
- width: "25%",
- scopedSlots: { customRender: "subjectTypeLabel" },
- },
- {
- title: "收款方式",
- dataIndex: "payType",
- width: "25%",
- scopedSlots: { customRender: "payType" },
- },
- {
- title: "应缴",
- dataIndex: "receivable",
- width: "25%",
- scopedSlots: { customRender: "prefPrice" }
- },
- {
- title: "实收",
- dataIndex: "money",
- width: "25%",
- scopedSlots: { customRender: "money" },
- },
- ];
- const date = new Date();
- const endDate = new Date(date.setDate(date.getDate() + 1));
- export default {
- name: "BillRoomForm",
- components: {
- EditableCell,
- SelectRoomFormModal,
- MemberCardModal,
- AgreementUnitModal,
- AgreementUnitModalTable,
- HistoryModal,
- },
- props: {
- //表单禁用
- disabled: {
- type: Boolean,
- default: false,
- required: false,
- },
- },
- data() {
- return {
- editDepositModal: false,
- //会员选中数据
- vipCustomerData: {},
- agreementUnitData: { customerName: "" },
- busMarketAgreementCustomer: {},
- otherRoomSync: false,
- payPalModel: { list: [{ key1: "", key2: "", key3: "" }] },
- depositSplit: true,
- paymentSplit: true,
- activeKey: "",
- PriceData: [],
- newTabIndex: 0,
- //调价弹窗
- editPriceModal: false,
- //调价的索引
- editPriceIndex: null,
- selectedRowKeys: [],
- // data,
- columns,
- // data2,
- columns2,
- wakeList: [{}],
- // model: { rooms: panes, data: data, data2: data2 },
- modelDefault: {},
- model: {
- // data: data,
- orderInfo: {
- rooms: [],
- data: [],
- data2: [],
- bookingOrdersType: 1,
- arrivalTime2: moment(new Date()).format("YYYY-MM-DD"),
- dueOutTime2: moment(endDate).format("YYYY-MM-DD"),
- arrivalTimeSpan: moment(new Date(), "HH:mm"),
- dueOutTimeSpan: moment("12:00", "HH:mm"),
- bookingType: 1,
- dayCount: 1,
- warrantType: 1,
- hourRoomId: "",
- breakfastNum: 0,
- vipCustomerId: "",
- customerType: 1,
- contractTeamProtocolName: "",
- customerSource: "",
- },
- roomIds: [],
- livingRoomDayPrices: [],
- roomPrices: [],
- orderFees: [],
- },
- labelCol: {
- xs: { span: 24 },
- sm: { span: 7 },
- },
- wrapperCol: {
- xs: { span: 24 },
- sm: { span: 16 },
- },
- confirmLoading: false,
- validatorRules: {
- "orderInfo.bookingType": [
- { required: true, message: "请选择入住类型!" },
- ],
- "orderInfo.arrivalTime2": [
- { required: true, message: "请选择入住时间!" },
- ],
- "orderInfo.dueOutTime2": [
- { required: true, message: "请选择预离时间!" },
- ],
- "orderInfo.customerSource": [
- { required: true, message: "请选择客人来源!" },
- ],
- "orderInfo.bookingDicWay": [
- { required: true, message: "请选择预定方式!" },
- ],
- "orderInfo.customerType": [
- { required: true, message: "请选择客人类型!" },
- ],
- contactName: [{ required: true, message: "请输入联系人!" }],
- phone: [{ required: true, message: "请输入电话!" }],
- },
- url: {
- add: "business/busRoomBookingOrders/living",
- edit: "business/busRoomBookingOrders/living",
- queryById: "/business/busMeetingRoom/queryById",
- },
- result: [],
- selectIndex: 0,
- customerSourceList: [],
- bookingdicWayList: [],
- warranterList: [],
- hourRoomRuleList: [],
- canUserRooms: [],
- customerList: [],
- oldcustomerList: [],
- depositRule: {},
- roomLayoutList: [],
- amount: 0,
- roomIdsIndex: 0,
- oldBusMemberCardList: [],
- busMemberCardList: [],
- payTypeList: [],
- busMemberCard: {},
- oldBusMarketAgreementUnitList: [],
- busMarketAgreementUnitList: [],
- ruZhuHistoryList: [],
- };
- },
- computed: {
- editPriceData() {
- let arr = [];
- arr.length = this.model.orderInfo.dayCount;
- for (let i = 0; i < arr.length; i++) {
- arr[i] = {
- day: this.addDate(this.model.orderInfo.arrivalTime2, i),
- price:
- (this.model.roomPrices[this.editPriceIndex] &&
- this.model.roomPrices[this.editPriceIndex].prefPrice) ||
- 0,
- };
- let idx =
- this.model.roomPrices[this.editPriceIndex] &&
- this.model.roomPrices[this.editPriceIndex].editPriceTime &&
- this.model.roomPrices[this.editPriceIndex].editPriceTime.findIndex(
- (item) => item == arr[i].day
- );
- if (idx > -1) {
- console.log(idx);
- arr[i].price =
- this.model.roomPrices[this.editPriceIndex].editPrice[idx];
- }
- }
- this.PriceData = arr;
- return arr;
- },
- formDisabled() {
- return this.disabled;
- },
- orderFeesAmout() {
- var sum = 0;
- this.model.orderFees.forEach((item) => {
- sum += item.money;
- });
- return sum;
- },
- orderFeesArrearsAmout() {
- return this.orderFeesAmout - this.amount;
- },
- orderFeesText() {
- var text = "";
- this.model.orderFees.forEach((item) => {
- var find = this.payTypeList.find((t) => t.id == item.payType);
- if (find) {
- text += find.name + ":" + item.money + "元;";
- }
- });
- return text;
- },
- cPhone() {
- let a = this.model.roomIds.map((t) => t.key5);
- return a;
- },
- },
- watch: {
- depositSplit(value) {
- if (!value) {
- var yajin = this.model.roomPrices.reduce((sum, val) => {
- let total = sum + val.deposit;
- return isNaN(total) ? 0 : total;
- }, 0);
- this.model.roomPrices.forEach((t) => {
- t.deposit = 0;
- });
- this.model.roomPrices[0].deposit = yajin;
- } else {
- this.model.roomPrices.forEach((t) => {
- t.deposit = this.compuleDeposit(t.marketPrice);
- });
- }
- },
- paymentSplit(value) {
- if (!value) {
- var list2 = this.model.orderFees.filter(
- (t) => t.subjectType == 2 && (!t.add || t.add != 1)
- );
- var list1 = this.model.orderFees.filter((t) => t.subjectType == 1);
- var list = this.model.orderFees.filter(
- (t) =>
- (t.subjectType != 1 && t.subjectType != 2) || (t.add && t.add == 1)
- );
- list2.forEach((t) => {
- var yjList = list1.filter((b) => b.roomId == t.roomId);
- var yajin = yjList.reduce((sum, val) => {
- let total = sum + val.money;
- return isNaN(total) ? 0 : total;
- }, 0);
- t.yajing = yajin;
- t.money += yajin;
- t.receivable = t.money;
- });
- this.model.orderFees = [...list, ...list2];
- } else {
- // var list2 = this.model.orderFees.filter(
- // (t) => t.subjectType == 2 && (!t.add || t.add != 1)
- // );
- // var list1 = [];
- // var list = this.model.orderFees.filter(
- // (t) =>
- // (t.subjectType != 1 && t.subjectType != 2) || (t.add && t.add == 1)
- // );
- // list2.forEach((t) => {
- // if (t.yajing && t.yajing > 0) {
- // t.money -= t.yajing;
- // t.receivable = t.money;
- // var item = JSON.parse(JSON.stringify(t));
- // item.subjectType = 1;
- // item.money = t.yajing;
- // item.yajing = 0;
- // item.receivable = item.money;
- // list1.push(item);
- // }
- // });
- // list = [...list, ...list1];
- // this.model.orderFees = [...list, ...list2];
- this.loadOrderFees();
- }
- },
- // "model.roomIds": {
- // handler(newValue, oldValue) {
- // console.log(newValue, oldValue);
- // },
- // deep: true,
- // immediate: true,
- // },
- cPhone: {
- handler: function (val, old) {
- console.log(val, old);
- var index = this.model.roomIds.findIndex((t) => t.id == this.activeKey);
- if (index >= 0) {
- var find = this.model.roomIds[index];
- find.busMemberCard = this.busMemberCardList.find(
- (t) => t.mobile == val[index]
- );
- if (!find.busMemberCard) {
- find.busMarketAgreementUnit = this.busMarketAgreementUnitList.find(
- (t) => t.phone == val[index]
- );
- } else {
- find.busMarketAgreementUnit = {};
- }
- if (find.busMemberCard && find.busMemberCard.id) {
- this.model.orderInfo.customerType = 2;
- this.model.orderInfo.roomPriceSlnId = find.busMemberCard.id;
- } else if (
- find.busMarketAgreementUnit &&
- find.busMarketAgreementUnit.id
- ) {
- this.model.orderInfo.customerType = 3;
- } else {
- this.model.orderInfo.customerType = 1;
- }
- if (this.ruZhuHistoryList && this.ruZhuHistoryList.length > 0) {
- find.ruZhuHistory = this.ruZhuHistoryList.find(
- (t) => t.phone == val[index]
- );
- }
- }
- },
- deep: true,
- immediate: true,
- },
- },
- created() {
- var _info = JSON.parse(localStorage.getItem("storeInfo"));
- if (_info) {
- this.model.hotelId = _info.id;
- }
- //备份model原始值
- this.modelDefault = JSON.parse(JSON.stringify(this.model));
- getAction("/business/busDictItem/list", {
- hotelId: _info.id,
- dictId: "1639538915239743490",
- }).then((res) => {
- if (res.success) {
- this.customerSourceList = res.result.records;
- if (this.customerSourceList) {
- this.model.orderInfo.customerSource = this.customerSourceList[0].id;
- }
- }
- });
- getAction("/business/busDictItem/list", {
- hotelId: _info.id,
- dictId: "1639544187093995521",
- }).then((res) => {
- if (res.success) {
- this.bookingdicWayList = res.result.records;
- }
- });
- getAction("/business/busSalesPerson/list", {
- hotelId: _info.id,
- pageNo: 1,
- pageSize: 100,
- }).then((res) => {
- if (res.success) {
- this.warranterList = res.result.records;
- }
- });
- getAction("/rooms/cesHourRoomRule/list", {
- pageNo: 1,
- pageSize: 100,
- }).then((res) => {
- if (res.success) {
- this.hourRoomRuleList = res.result.records;
- }
- });
- getAction("/bus/busCustomer/list", {}).then((res) => {
- if (res.success) {
- this.customerList = res.result.records;
- this.oldcustomerList = JSON.parse(JSON.stringify(this.customerList));
- }
- });
- getAction("/business/busDepositSetting/queryByHotelId", {
- hotelId: _info.id,
- }).then((res) => {
- if (res.success) {
- this.depositRule = res.result;
- }
- });
- getAction("/business/busMemberCard/list", {
- pageSize: 99999,
- pageNo: 1,
- }).then((res) => {
- if (res.success) {
- this.busMemberCardList = res.result.records;
- this.oldBusMemberCardList = JSON.parse(
- JSON.stringify(this.busMemberCardList)
- );
- }
- });
- getAction("/business/busMarketAgreementUnit/list", {
- pageSize: 99999,
- pageNo: 1,
- }).then((res) => {
- if (res.success) {
- this.busMarketAgreementUnitList = res.result.records;
- this.oldBusMarketAgreementUnitList = JSON.parse(
- JSON.stringify(res.result.records)
- );
- }
- });
- postAction("/rooms/cesAllDayPriceRule/fetch", { hotelId: _info.id }).then(
- (res) => {
- if (res.success) {
- if (
- res.result &&
- res.result.cesAllDayPriceRule &&
- res.result.cesAllDayPriceRule.leaveTime
- ) {
- this.model.orderInfo.dueOutTimeSpan = moment(
- res.result.cesAllDayPriceRule.leaveTime,
- "HH:mm"
- );
- }
- }
- this.loadRooms();
- }
- );
- getAction("/business/busRoomBookingOrders/ruzhu-history-list", {
- phone: "",
- pageSize: 99999,
- pageNo: 1,
- }).then((res) => {
- if (res.success) {
- this.ruZhuHistoryList = res.result.records;
- }
- });
- // this.getcesRoomLayout();
- },
- methods: {
- handleSearchAgreementUnit(value) {
- let result;
- if (!value) {
- result = this.oldBusMarketAgreementUnitList;
- } else {
- result = this.oldBusMarketAgreementUnitList.filter((t) =>
- t.customerName.includes(value)
- );
- }
- this.busMarketAgreementUnitList = JSON.parse(JSON.stringify(result));
- },
- handleSelectAgreementUnit(value) {
- let result = this.busMarketAgreementUnitList.find((t) => t.id == value);
- this.model.orderInfo.contractTeamId = value;
- this.agreementUnitData = JSON.parse(JSON.stringify(result));
- this.contractTeamIdChange(value);
- },
- handleSearchVip(value) {
- let result;
- if (!value) {
- result = this.oldBusMemberCardList;
- } else {
- console.log("this.oldBusMemberCardList", this.oldBusMemberCardList);
- result = this.oldBusMemberCardList.filter((t) => {
- return (
- t.name.includes(value) ||
- (t.cardNo && t.cardNo.includes(value)) ||
- (t.mobile && t.mobile.includes(value))
- );
- });
- }
- this.busMemberCardList = JSON.parse(JSON.stringify(result));
- },
- handleSelectVip(value) {
- console.log(value);
- let result = this.busMemberCardList.find((t) => t.id == value);
- this.model.orderInfo.vipCustomerId = value;
- this.vipCustomerData = JSON.parse(JSON.stringify(result));
- this.vipCustomerIdChange(result.id);
- },
- loadOrderFees() {
- var orderFees = [];
- var roomIndex = 0;
- var payType = this.payTypeList[0];
- // roomNo: item.name,
- // roomId: item.id,
- // marketPrice: item.marketPrice,
- // prefPrice: item.marketPrice,
- // day: this.model.orderInfo.dayCount,
- // roomFee: item.marketPrice * this.model.orderInfo.dayCount,
- // deposit: this.compuleDeposit(item.marketPrice),
- // layoutName: roomLayout ? roomLayout.name : "",
- // layoutId: item.layoutId,
- this.model.roomPrices.forEach((item) => {
- var money = item.roomFee;
- var deposit = item.deposit;
- if (!orderFees.some((t) => t.roomId == this.model.roomIds[0].id)) {
- if (!this.paymentSplit) {
- money = item.roomFee + deposit;
- }
- orderFees.push({
- subjectType: 2,
- subjectTypeLabel: "预收房费",
- payType: payType ? payType.id : "",
- payTypeLabel: payType ? payType.name : "",
- receivable: money,
- money: money,
- roomId: this.model.roomIds[0].id,
- });
- if (this.paymentSplit) {
- if (deposit > 0) {
- orderFees.push({
- subjectType: 1,
- subjectTypeLabel: "押金",
- payType: payType ? payType.id : "",
- payTypeLabel: payType ? payType.name : "",
- receivable: deposit,
- money: deposit,
- roomId: this.model.roomIds[0].id,
- });
- }
- }
- } else {
- var find = orderFees.find(
- (t) => t.subjectType == 2 && t.roomId == this.model.roomIds[0].id
- );
- if (find) {
- if (roomIndex == 0) {
- find.money = item.roomFee;
- find.receivable = item.roomFee;
- } else {
- find.money += item.roomFee;
- find.receivable += item.roomFee;
- }
- if (!this.paymentSplit) {
- find.money += deposit;
- find.receivable += deposit;
- }
- }
- if (this.paymentSplit) {
- var find2 = orderFees.find(
- (t) => t.subjectType == 1 && t.roomId == this.model.roomIds[0].id
- );
- if (find2) {
- if (deposit > 0) {
- if (roomIndex == 0) {
- find2.money = deposit;
- find2.receivable = deposit;
- } else {
- find2.money += deposit;
- find2.receivable += deposit;
- }
- }
- }
- }
- }
- roomIndex++;
- });
- this.model.orderFees = orderFees;
- },
- readCardNo() {
- this.$message.error("接口程序未打开,请打开接口程序");
- },
- contractTeamIdChange(e) {
- this.model.orderInfo.contractTeamId = e;
- getAction("/business/busMarketAgreementCustomer/list", {
- agreementId: this.model.orderInfo.contractTeamId,
- }).then((res) => {
- if (res.success) {
- var list = res.result.records;
- if (list && list.length > 0) {
- this.model.orderInfo.contractTeamProtocolName = list[0].name;
- this.model.orderInfo.contractTeamProtocolId = list[0].id;
- this.busMarketAgreementCustomer = list[0];
- var info = list[0];
- if (info.fixedDiscount == 1 && info.discount > 0) {
- if (this.model.roomPrices && this.model.roomPrices.length > 0) {
- var i = 0;
- this.model.roomPrices.forEach((t) => {
- t.prefPrice = (t.marketPrice * info.discount) / 100;
- t.roomFee = t.prefPrice * t.day;
- var editPrice = [];
- if (t.editPrice && t.editPrice.length > 0) {
- t.editPrice.forEach((p) => {
- editPrice.push(t.prefPrice);
- });
- t.editPrice = editPrice;
- }
- this.editPriceIndex = i;
- this.editPriceOk();
- i++;
- console.log("t", t);
- });
- }
- }
- }
- }
- });
- },
- vipCustomerIdChange(vipCustomerId) {
- var find = this.busMemberCardList.find((t) => t.id == vipCustomerId);
- getAction("/org.jeecg.modules.business/busMarketMember/queryById", {
- id: find.gradeId,
- }).then((res) => {
- if (res.success) {
- var info = res.result;
- if (info) {
- if (info.type == 0 && info.discount > 0) {
- if (this.model.roomPrices && this.model.roomPrices.length > 0) {
- var i = 0;
- this.model.roomPrices.forEach((t) => {
- t.prefPrice = (t.marketPrice * info.discount) / 100;
- t.roomFee = t.prefPrice * t.day;
- var editPrice = [];
- if (t.editPrice && t.editPrice.length > 0) {
- t.editPrice.forEach((p) => {
- editPrice.push(t.prefPrice);
- });
- t.editPrice = editPrice;
- }
- this.editPriceIndex = i;
- this.editPriceOk();
- i++;
- console.log("t", t);
- });
- }
- }
- }
- }
- });
- },
- modalAgreementUnitTableOk(e) {
- var info = e;
- this.model.orderInfo.contractTeamProtocolName = info.name;
- this.model.orderInfo.contractTeamProtocolId = info.id;
- this.busMarketAgreementCustomer = info;
- if (info.fixedDiscount == 1 && info.discount > 0) {
- if (this.model.roomPrices && this.model.roomPrices.length > 0) {
- var i = 0;
- this.model.roomPrices.forEach((t) => {
- t.prefPrice = (t.marketPrice * info.discount) / 100;
- t.roomFee = t.prefPrice * t.day;
- var editPrice = [];
- if (t.editPrice && t.editPrice.length > 0) {
- t.editPrice.forEach((p) => {
- editPrice.push(t.prefPrice);
- });
- t.editPrice = editPrice;
- }
- this.editPriceIndex = i;
- this.editPriceOk();
- i++;
- console.log("t", t);
- });
- }
- }
- },
- showRuZhuHistory(phone) {
- this.$refs.modalHistoryInfo.add(phone);
- this.$refs.modalHistoryInfo.title = "历史入住信息";
- this.$refs.modalHistoryInfo.disableSubmit = true;
- },
- showMemberCard(busMemberCard) {
- console.log("busMemberCard", busMemberCard);
- this.$refs.modalMemberCardInfo.edit(busMemberCard);
- this.$refs.modalMemberCardInfo.title = "会员信息";
- this.$refs.modalMemberCardInfo.disableSubmit = true;
- },
- showAgreementUnit(busMarketAgreementUnit) {
- console.log("busMarketAgreementUnit", busMarketAgreementUnit);
- this.$refs.modalAgreementUnitInfo.edit(busMarketAgreementUnit);
- this.$refs.modalAgreementUnitInfo.title = "协议单位信息";
- this.$refs.modalAgreementUnitInfo.disableSubmit = true;
- },
- showAgreementUnitTable(agreementId) {
- this.$refs.modalAgreementUnitTable.add(agreementId);
- this.$refs.modalAgreementUnitTable.title = "选择协议";
- this.$refs.modalAgreementUnitTable.disableSubmit = true;
- },
- //批量调价
- batchPrice(e) {
- console.log(e);
- this.editPriceData.forEach((ele) => {
- ele.price = e;
- });
- },
- //根据传入的数字将日期加上对应的天数
- addDate(date, days) {
- console.log(date, days);
- let time = new Date(date);
- time.setDate(time.getDate() + days);
- let m = time.getMonth() + 1;
- let d = time.getDate();
- if (m < 10) {
- m = "0" + m;
- }
- if (d < 10) {
- d = "0" + d;
- }
- return time.getFullYear() + "-" + m + "-" + d;
- },
- /**
- * 点击修改图标时
- */
- onCellExpand(idx) {
- console.log(idx);
- this.editPriceIndex = idx;
- console.log(
- "11111111111111111111111",
- this.model.roomPrices[this.editPriceIndex]
- );
- this.editPriceModal = true;
- },
- /**
- * 修改完成
- */
- editPriceOk() {
- console.log(this.editPriceData);
- this.model.roomPrices[this.editPriceIndex].editPriceTime = [];
- this.model.roomPrices[this.editPriceIndex].editPrice = [];
- this.editPriceData.forEach((ele) => {
- this.model.roomPrices[this.editPriceIndex].editPriceTime.push(ele.day);
- this.model.roomPrices[this.editPriceIndex].editPrice.push(ele.price);
- });
- console.log(this.model.roomPrices);
- this.model.roomPrices[this.editPriceIndex].prefPrice =
- this.editPriceData[0].price;
- this.onCellChange(
- "prefPrice",
- this.editPriceIndex,
- this.editPriceData[0].price
- );
- this.editPriceData.forEach((ele) => {
- ele.prcie = 0;
- });
- console.log(this.editPriceData);
- this.editPriceModal = false;
- var sum = 0;
- var money2 = 0;
- var deposit2 = 0;
- for (var i = 0; i < this.model.roomPrices.length; i++) {
- var money = 0;
- var item = this.model.roomPrices[i];
- if (item.editPrice && item.editPrice.length > 0) {
- item.editPrice.forEach((p) => {
- money += p;
- });
- item.roomFee = money;
- sum += money + item.deposit;
- } else {
- sum += item.roomFee + item.deposit;
- }
- money2 += item.roomFee;
- deposit2 += item.deposit;
- // var find = this.model.orderFees.find(
- // (t) =>
- // t.subjectType == 2 &&
- // t.roomId == this.model.roomPrices[this.editPriceIndex].roomId
- // );
- // if (find && find.roomId == item.roomId) {
- // find.money = money;
- // find.receivable = money;
- // }
- }
- var find = this.model.orderFees.find(
- (t) => t.subjectType == 2 && t.roomId == this.model.roomIds[0].id
- );
- if (find) {
- find.money = money2;
- find.receivable = money2;
- if (!this.paymentSplit) {
- find.money += deposit2;
- find.receivable += deposit2;
- }
- }
- var find2 = this.model.orderFees.find(
- (t) => t.subjectType == 1 && t.roomId == this.model.roomIds[0].id
- );
- if (find2) {
- find2.money = deposit2;
- find2.receivable = deposit2;
- }
- this.amount = sum;
- },
- presetNumChange(e, record) {
- console.log(e, record);
- },
- async getcesRoomLayout() {
- await getAction("/rooms/cesRoomLayout/list", {
- pageSize: 99999,
- pageNo: 1,
- }).then((res) => {
- if (res.success) {
- this.roomLayoutList = res.result.records;
- console.log("roomLayoutList");
- }
- });
- },
- async getbusRoomPayType() {
- await getAction("/business/busRoomPayType/list", {
- pageSize: 99999,
- pageNo: 1,
- }).then((res) => {
- if (res.success) {
- this.payTypeList = res.result.records;
- }
- });
- },
- roomPriceSlnIdChange(e) {
- this.model.orderInfo.vipCustomerId = e;
- },
- loadRooms() {
- // this.model.roomPrices = [];
- // this.model.roomIds = [];
- // this.amount = 0;
- getAction("/rooms/cesRooms/can-user-rooms", {
- startOf:
- this.model.orderInfo.arrivalTime2 +
- " " +
- moment(this.model.orderInfo.arrivalTimeSpan).format("HH:mm"),
- endOf:
- this.model.orderInfo.dueOutTime2 +
- " " +
- moment(this.model.orderInfo.dueOutTimeSpan).format("HH:mm"),
- bookingType: this.model.orderInfo.bookingType,
- hourRoomRuleId: this.model.orderInfo.hourRoomId,
- cancelLayout: true,
- }).then((res) => {
- if (res.success) {
- res.result.forEach((t) => {
- // t.layout = Object.assign({}, t.layout, {
- // presetNum: 0,
- // oldTags: t.layout.canUseCount,
- // });
- t.buildingRooms.forEach((b) => {
- b.floorRooms.forEach((f) => {
- this.$set(
- f,
- "check",
- this.model.roomIds.some((r) => r.id == f.id) ? 1 : 0
- );
- });
- });
- });
- this.canUserRooms = res.result;
- }
- });
- },
- hourRoomIdChange() {
- if (this.model.orderInfo.bookingType === 2) {
- var find = this.hourRoomRuleList.find(
- (t) => t.id === this.model.orderInfo.hourRoomId
- );
- if (find) {
- var mDate = moment(
- this.model.orderInfo.arrivalTime2 +
- " " +
- moment(this.model.orderInfo.arrivalTimeSpan).format("HH:mm")
- ).add(find.afterOpenRoom, "minutes");
- this.model.orderInfo.dueOutTime2 = mDate.format("YYYY-MM-DD");
- this.model.orderInfo.dueOutTimeSpan = moment(
- mDate.format("HH:mm"),
- "HH:mm"
- );
- }
- }
- this.loadRooms();
- },
- bookingTypeChange(e) {
- if (this.model.orderInfo.bookingType == 1) {
- this.model.orderInfo.hourRoomId = "";
- } else {
- var hourRoomRule = this.hourRoomRuleList[0];
- if (hourRoomRule) {
- this.model.orderInfo.hourRoomId = hourRoomRule.id;
- }
- }
- if (this.model.orderInfo.bookingType === 2) {
- var find = this.hourRoomRuleList.find(
- (t) => t.id === this.model.orderInfo.hourRoomId
- );
- if (find) {
- var mDate = moment(
- this.model.orderInfo.arrivalTime2 +
- " " +
- moment(this.model.orderInfo.arrivalTimeSpan).format("HH:mm")
- ).add(find.afterOpenRoom, "minutes");
- this.model.orderInfo.dueOutTime2 = mDate.format("YYYY-MM-DD");
- this.model.orderInfo.dueOutTimeSpan = moment(
- mDate.format("HH:mm"),
- "HH:mm"
- );
- }
- } else if (this.model.orderInfo.bookingType === 1) {
- var mDate = moment(this.model.orderInfo.arrivalTime2).add(1, "days");
- this.model.orderInfo.dueOutTime2 = mDate.format("YYYY-MM-DD");
- }
- this.loadRooms();
- },
- dayCountChange(e) {
- if (e) {
- this.model.orderInfo.dueOutTime2 = moment(
- this.model.orderInfo.arrivalTime2
- )
- .add(e, "days")
- .format("YYYY-MM-DD");
- }
- this.loadRooms();
- // this.edit(this.modelDefault);
- var i = 0;
- this.model.roomPrices.forEach((t) => {
- t.day = this.model.orderInfo.dayCount;
- this.editPriceIndex = i;
- this.editPriceOk();
- i++;
- });
- },
- disabledDate(current) {
- return current && current < moment().add(-1, "days").endOf("day");
- },
- arrivalTimeChange(e) {
- var v = parseInt(
- (new Date(this.model.orderInfo.dueOutTime2).getTime() -
- new Date(this.model.orderInfo.arrivalTime2).getTime()) /
- (1000 * 60 * 60 * 24)
- );
- if (v <= 0) {
- this.model.orderInfo.dueOutTime2 = moment(
- this.model.orderInfo.arrivalTime2
- )
- .add(1, "days")
- .format("YYYY-MM-DD");
- }
- v = parseInt(
- (new Date(this.model.orderInfo.dueOutTime2).getTime() -
- new Date(this.model.orderInfo.arrivalTime2).getTime()) /
- (1000 * 60 * 60 * 24)
- );
- this.model.orderInfo.dayCount = Math.abs(v);
- // this.loadRooms();
- this.dayCountChange();
- },
- arrivalTimeChange2(e) {
- var v = parseInt(
- (new Date(this.model.orderInfo.dueOutTime2).getTime() -
- new Date(this.model.orderInfo.arrivalTime2).getTime()) /
- (1000 * 60 * 60 * 24)
- );
- if (v <= 0) {
- this.model.orderInfo.arrivalTime2 = moment(
- this.model.orderInfo.dueOutTime2
- )
- .add(-1, "days")
- .format("YYYY-MM-DD");
- }
- v = parseInt(
- (new Date(this.model.orderInfo.dueOutTime2).getTime() -
- new Date(this.model.orderInfo.arrivalTime2).getTime()) /
- (1000 * 60 * 60 * 24)
- );
- this.model.orderInfo.dayCount = Math.abs(v);
- // this.loadRooms();
- this.dayCountChange();
- },
- arrivalTimeSpanChange(m, time) {
- console.log(time);
- console.log(moment(m).format("HH:mm"));
- if (this.model.orderInfo.bookingType === 2) {
- var find = this.hourRoomRuleList.find(
- (t) => t.id === this.model.orderInfo.hourRoomId
- );
- if (find) {
- var mDate = moment(
- this.model.orderInfo.arrivalTime2 +
- " " +
- moment(this.model.orderInfo.arrivalTimeSpan).format("HH:mm")
- ).add(find.afterOpenRoom, "minutes");
- this.model.orderInfo.dueOutTime2 = mDate.format("YYYY-MM-DD");
- this.model.orderInfo.dueOutTimeSpan = moment(
- mDate.format("HH:mm"),
- "HH:mm"
- );
- }
- }
- this.loadRooms();
- },
- handleSearch(value) {
- let result;
- if (!value) {
- result = this.oldcustomerList;
- } else {
- result = this.oldcustomerList.filter((t) => t.name.includes(value));
- }
- this.customerList = result;
- },
- handleSelectMember(room, e) {
- console.log("room", room);
- var find = this.customerList.find((t) => t.id === e);
- this.$set(room, "key1", find.name);
- this.$set(room, "key2", 1);
- this.$set(room, "key3", "汉");
- this.$set(room, "key5", find.phone);
- this.$set(room, "customerId", find.id);
- },
- pulsRoom() {
- console.log(this.canUserRooms);
- this.$refs.modalSelectRoomForm.add(this.canUserRooms);
- this.$refs.modalSelectRoomForm.title = "选择房间";
- this.$refs.modalSelectRoomForm.disableSubmit = false;
- },
- paymentTabsChange(e) {},
- pulsFee() {
- var payType = this.payTypeList[0];
- this.model.orderFees.push({
- add: 1,
- subjectType: 2,
- subjectTypeLabel: "预收房费",
- payType: payType ? payType.id : "",
- payTypeLabel: payType ? payType.name : "",
- receivable: 0,
- money: 0,
- roomId: this.model.roomIds[0].id,
- });
- },
- onCellChange(key, dataIndex, value) {
- console.log(key, value);
- console.log(this.model.roomPrices[dataIndex]);
- const dataSource = [...this.model.roomPrices];
- const target = dataSource[dataIndex];
- console.log("target", target);
- if (target) {
- target[key] = value;
- target.roomFee = value * target.day;
- target.deposit = this.compuleDeposit(value);
- this.model.roomPrices = dataSource;
- }
- // var sum = 0;
- // this.model.roomPrices.forEach(function (item) {
- // sum += item.roomFee + item.deposit;
- // });
- // this.amount = sum;
- // console.log("this.model.roomPrices", this.model.roomPrices);
- },
- onCellChangeCopy(key, dataIndex, value) {
- console.log(key, value);
- console.log(this.depositRule);
- console.log(this.model.roomPrices[dataIndex]);
- const dataSource = [...this.model.roomPrices];
- const target = dataSource[dataIndex];
- console.log("target", target);
- if (target) {
- target[key] = value;
- // target.roomFee = value * target.day;
- // target.deposit = this.compuleDeposit(value);
- this.model.roomPrices = dataSource;
- }
-
- var sum = 0;
- var money2 = 0;
- var deposit2 = 0;
- for (var i = 0; i < this.model.roomPrices.length; i++) {
- var money = 0;
- var item = this.model.roomPrices[i];
- if (item.editPrice && item.editPrice.length > 0) {
- item.editPrice.forEach((p) => {
- money += p;
- });
- item.roomFee = money;
- sum += money + item.deposit;
- } else {
- sum += item.roomFee + item.deposit;
- }
- money2 += item.roomFee;
- deposit2 += item.deposit;
- // var find = this.model.orderFees.find(
- // (t) =>
- // t.subjectType == 2 &&
- // t.roomId == this.model.roomPrices[this.editPriceIndex].roomId
- // );
- // if (find && find.roomId == item.roomId) {
- // find.money = money;
- // find.receivable = money;
- // }
- }
- var find = this.model.orderFees.find(
- (t) => t.subjectType == 2 && t.roomId == this.model.roomIds[0].id
- );
- if (find) {
- find.money = money2;
- find.receivable = money2;
- if (!this.paymentSplit) {
- find.money += deposit2;
- find.receivable += deposit2;
- }
- }
- var find2 = this.model.orderFees.find(
- (t) => t.subjectType == 1 && t.roomId == this.model.roomIds[0].id
- );
- if (find2) {
- find2.money = deposit2;
- find2.receivable = deposit2;
- }
- this.amount = sum;
- },
- // handleChange(value, index, column) {
- // const newData = [...this.data2];
- // const target = newData[index];
- // if (target) {
- // target[column] = value;
- // this.data2 = newData;
- // }
- // },
- onEdit(targetKey, action) {
- this[action](targetKey);
- },
- add() {
- console.log(1);
- const panes = this.panes;
- const activeKey = `newTab${this.newTabIndex++}`;
- panes.push({
- title: `New Tab ${activeKey}`,
- content: "",
- key: activeKey,
- });
- this.panes = panes;
- this.activeKey = activeKey;
- },
- onSelectChange(selectedRowKeys, selectionRows) {
- this.selectedRowKeys = selectedRowKeys;
- this.selectionRows = selectionRows;
- },
- handleAdd() {},
- puls(room) {
- if (!room.livingCustomers2) {
- this.$set(room, "livingCustomers2", [
- { gender: 1, certType: 1, roomId: room.id },
- ]);
- } else {
- room.livingCustomers2.push({ gender: 1, certType: 1, roomId: room.id });
- }
- },
- remove(room, index) {
- room.livingCustomers2.splice(index, 1);
- },
- moment,
- onChange(e) {
- console.log(e);
- },
- add2(roomLive) {
- this.modelDefault = Object.assign({}, this.modelDefault, {
- roomIds: [roomLive],
- });
- this.edit(this.modelDefault);
- },
- editTabs(e) {
- console.log("editTabs", e);
- var index = this.model.roomIds.findIndex((t) => t.id == e);
- this.model.roomIds.splice(index, 1);
- console.log("this.canUserRooms", this.canUserRooms);
- this.canUserRooms.forEach((t) => {
- t.buildingRooms.forEach((b) => {
- b.floorRooms.forEach((f) => {
- if (f.id == e) {
- f.check = 0;
- }
- });
- });
- });
- this.model.roomPrices = this.model.roomPrices.filter(
- (t) => t.roomId != e
- );
- // this.model.orderFees = this.model.orderFees.filter((t) => t.roomId != e);
- this.model.orderFees.forEach((t) => {
- if (t.roomId == e) {
- t.roomId = this.model.roomIds[0].id;
- }
- });
- var sum = 0;
- var money2 = 0;
- var deposit2 = 0;
- for (var i = 0; i < this.model.roomPrices.length; i++) {
- var money = 0;
- var item = this.model.roomPrices[i];
- if (item.editPrice && item.editPrice.length > 0) {
- item.editPrice.forEach((p) => {
- money += p;
- });
- item.roomFee = money;
- sum += money + item.deposit;
- } else {
- sum += item.roomFee + item.deposit;
- }
- money2 += item.roomFee;
- deposit2 += item.deposit;
- }
- var find = this.model.orderFees.find(
- (t) => t.subjectType == 2 && t.roomId == this.model.roomIds[0].id
- );
- if (find) {
- find.money = money2;
- find.receivable = money2;
- }
- var find2 = this.model.orderFees.find(
- (t) => t.subjectType == 1 && t.roomId == this.model.roomIds[0].id
- );
- if (find2) {
- find2.money = deposit2;
- find2.receivable = deposit2;
- }
- this.amount = sum;
- },
- tabClick(e) {
- console.log("tabClick", e);
- var index = this.model.roomIds.findIndex((t) => t.id == e);
- this.roomIdsIndex = index;
- },
- modalFormOk(e) {
- console.log("e", e);
- this.model.roomPrices = this.model.roomPrices.filter((t) =>
- e.some((r) => r.id == t.roomId)
- );
- this.model.orderFees = this.model.orderFees.filter((t) =>
- e.some((r) => r.id == t.roomId)
- );
- var roomIds = this.model.roomIds.filter((t) =>
- e.some((r) => r.id == t.id)
- );
- var newRoomIds = e.filter(
- (t) => !this.model.roomIds.some((r) => r.id == t.id)
- );
- this.modelDefault = Object.assign({}, this.modelDefault, {
- roomIds: [...roomIds, ...newRoomIds],
- roomPrices: this.model.roomPrices,
- orderFees: this.model.orderFees,
- orderInfo: this.model.orderInfo,
- });
- if (!this.otherRoomSync) {
- if (this.modelDefault.roomIds && this.modelDefault.roomIds.length > 0) {
- if (this.modelDefault.roomIds[0].key1) {
- for (var i = 1; i < this.modelDefault.roomIds.length; i++) {
- var room = this.modelDefault.roomIds[i];
- if (!room.key1) {
- this.$set(room, "key1", this.modelDefault.roomIds[0].key1);
- this.$set(room, "key2", this.modelDefault.roomIds[0].key2);
- this.$set(room, "key3", this.modelDefault.roomIds[0].key3);
- this.$set(room, "key4", this.modelDefault.roomIds[0].key4);
- this.$set(room, "key5", this.modelDefault.roomIds[0].key5);
- this.$set(room, "key6", this.modelDefault.roomIds[0].key6);
- this.$set(
- room,
- "customerId",
- this.modelDefault.roomIds[0].customerId
- );
- }
- }
- }
- }
- }
- if (this.modelDefault.roomIds && this.modelDefault.roomIds.length > 2) {
- var mainRoom = this.modelDefault.roomIds[0];
- var sortRooms = this.modelDefault.roomIds
- .filter((t) => t.id != mainRoom.id)
- .sort(function (a, b) {
- return a.name.toUpperCase() > b.name.toUpperCase() ? 1 : -1;
- });
- this.modelDefault.roomIds = [...[mainRoom], ...sortRooms];
- }
- console.log(" this.modelDefault.roomIds", this.modelDefault.roomIds);
- this.edit(this.modelDefault);
- },
- compuleDeposit(prefPrice) {
- var deposit = 0;
- if (this.depositRule) {
- if (this.depositRule.depositType === 1) {
- deposit = prefPrice * this.depositRule.depositMultiple;
- } else if (this.depositRule.depositType === 2) {
- deposit = prefPrice + this.depositRule.depositMultiple;
- } else if (this.depositRule.depositType === 3) {
- deposit = this.depositRule.depositMoney;
- }
- }
- return deposit;
- },
- getSubjectTypeLabel(value) {
- switch (value) {
- case 1:
- return "押金";
- case 2:
- return "预收房费";
- default:
- return "";
- }
- },
- addList(roomLiveList, key) {
- console.log("roomLiveList", roomLiveList);
- this.modelDefault = Object.assign({}, this.modelDefault, {
- roomIds: JSON.parse(JSON.stringify(roomLiveList)),
- });
- this.modelDefault.orderInfo.bookingOrdersType = key;
- this.edit(this.modelDefault);
- },
- async edit(record) {
- console.log("edit", record);
- this.activeKey = record.roomIds[0].id;
- this.visible = true;
- this.model = Object.assign({}, record);
- console.log("this.model", this.model);
- if (this.roomLayoutList.length === 0) {
- await this.getcesRoomLayout();
- }
- if (this.payTypeList == 0) {
- await this.getbusRoomPayType();
- }
- if (this.customerSourceList) {
- if (!this.model.orderInfo.customerSource) {
- this.model.orderInfo.customerSource = this.customerSourceList[0].id;
- }
- }
- if (this.model.roomIds && this.model.roomIds.length > 0) {
- this.activeKey = this.model.roomIds[0].id;
- var roomPrices = [];
- var orderFees = [];
- var roomIndex = 0;
- this.model.roomIds.forEach((item) => {
- if (!item.key2) {
- this.$set(item, "key2", 1);
- this.$set(item, "key3", "汉");
- }
- var roomLayout = this.roomLayoutList.find(
- (t) => (t.id = item.layoutId)
- );
- this.editPriceIndex = this.model.roomPrices.findIndex(
- (t) => t.roomId == item.id
- );
- var find = this.model.roomPrices[this.editPriceIndex];
- if (!find) {
- var obj = {
- roomNo: item.name,
- roomId: item.id,
- marketPrice: item.marketPrice,
- prefPrice: item.marketPrice,
- day: this.model.orderInfo.dayCount,
- roomFee: item.marketPrice * this.model.orderInfo.dayCount,
- deposit: this.compuleDeposit(item.marketPrice),
- layoutName: roomLayout ? roomLayout.name : "",
- layoutId: item.layoutId,
- };
- roomPrices.push(obj);
- } else {
- find.day = this.model.orderInfo.dayCount;
- this.editPriceOk();
- }
- var payType = this.payTypeList[0];
- // if (!this.model.orderFees.some((t) => t.roomId == item.id)) {
- // orderFees.push({
- // subjectType: 2,
- // subjectTypeLabel: "预收房费",
- // payType: payType ? payType.id : "",
- // payTypeLabel: payType ? payType.name : "",
- // receivable: item.marketPrice * this.model.orderInfo.dayCount,
- // money: item.marketPrice * this.model.orderInfo.dayCount,
- // roomId: item.id,
- // });
- // var deposit = this.compuleDeposit(item.marketPrice);
- // if (deposit > 0) {
- // orderFees.push({
- // subjectType: 1,
- // subjectTypeLabel: "押金",
- // payType: payType ? payType.id : "",
- // payTypeLabel: payType ? payType.name : "",
- // receivable: deposit,
- // money: deposit,
- // roomId: item.id,
- // });
- // }
- // } else {
- // // var find = this.model.orderFees.find(
- // // (t) => t.subjectType == 2 && t.roomId == item.id
- // // );
- // // if (find) {
- // // find.money = money;
- // // find.receivable = money;
- // // }
- // }
- // if (
- // !this.model.orderFees.some(
- // (t) => t.roomId == this.model.roomIds[0].id
- // )
- // ) {
- // orderFees.push({
- // subjectType: 2,
- // subjectTypeLabel: "预收房费",
- // payType: payType ? payType.id : "",
- // payTypeLabel: payType ? payType.name : "",
- // receivable: item.marketPrice * this.model.orderInfo.dayCount,
- // money: item.marketPrice * this.model.orderInfo.dayCount,
- // roomId: this.model.roomIds[0].id,
- // });
- // var deposit = this.compuleDeposit(item.marketPrice);
- // if (deposit > 0) {
- // orderFees.push({
- // subjectType: 1,
- // subjectTypeLabel: "押金",
- // payType: payType ? payType.id : "",
- // payTypeLabel: payType ? payType.name : "",
- // receivable: deposit,
- // money: deposit,
- // roomId: this.model.roomIds[0].id,
- // });
- // }
- // } else {
- // var deposit = this.compuleDeposit(item.marketPrice);
- // var find = this.model.orderFees.find(
- // (t) => t.subjectType == 2 && t.roomId == this.model.roomIds[0].id
- // );
- // if (find) {
- // if (roomIndex == 0) {
- // find.money = item.marketPrice * this.model.orderInfo.dayCount;
- // find.receivable =
- // item.marketPrice * this.model.orderInfo.dayCount;
- // } else {
- // find.money += item.marketPrice * this.model.orderInfo.dayCount;
- // find.receivable +=
- // item.marketPrice * this.model.orderInfo.dayCount;
- // }
- // if (!this.paymentSplit) {
- // find.money += deposit;
- // find.receivable += deposit;
- // }
- // }
- // var find2 = this.model.orderFees.find(
- // (t) => t.subjectType == 1 && t.roomId == this.model.roomIds[0].id
- // );
- // if (find2) {
- // if (deposit > 0) {
- // if (roomIndex == 0) {
- // find2.money = deposit;
- // find2.receivable = deposit;
- // } else {
- // find2.money += deposit;
- // find2.receivable += deposit;
- // }
- // }
- // }
- // }
- // roomIndex++;
- });
- this.model.roomPrices = [...this.model.roomPrices, ...roomPrices];
- if (this.model.roomPrices && this.model.roomPrices.length > 2) {
- var mainRoom = this.model.roomPrices[0];
- var sortRooms = this.model.roomPrices
- .filter((t) => t.roomId != mainRoom.roomId)
- .sort(function (a, b) {
- return a.roomNo.toUpperCase() > b.roomNo.toUpperCase() ? 1 : -1;
- });
- this.model.roomPrices = [...[mainRoom], ...sortRooms];
- }
- var sum = 0;
- this.model.roomPrices.forEach(function (item) {
- sum += item.roomFee + item.deposit;
- });
- this.amount = sum;
- // console.log("orderFees", orderFees);
- this.loadOrderFees();
- // this.model.orderFees = [...this.model.orderFees, ...orderFees];
- }
- },
- submitForm() {
- const that = this;
- that.model.livingRoomDayPrices = [];
- console.log("that.model.roomPrices", that.model.roomPrices);
- that.model.roomPrices.forEach((t) => {
- for (var b = 0; b < that.model.orderInfo.dayCount; b++) {
- var dayTime = moment(this.model.orderInfo.arrivalTime2)
- .add(b, "days")
- .format("YYYY-MM-DD");
- that.model.livingRoomDayPrices.push({
- livingType: 1,
- dayTime: t.editPriceTime ? t.editPriceTime[b].toString() : dayTime,
- // price: t.editPrice? t.editPrice[b].toString() : t.prefPrice,
- price:
- t.editPrice && t.editPriceTime && t.editPriceTime[b] == dayTime
- ? t.editPrice[b].toString()
- : t.prefPrice,
- // dayTime: dayTime,
- // price: t.prefPrice,
- roomLayoutId: t.layoutId,
- roomId: t.roomId,
- });
- }
- });
- that.model.roomIds.forEach((t) => {
- t.roomId = t.id;
- var obj = {
- certNo: t.key4,
- certType: 1,
- customerId: t.customerId,
- customerName: t.key1,
- gender: t.key2,
- phone: t.key5,
- nation: t.key3,
- address: t.key6,
- roomId: t.id,
- };
- if (!t.livingCustomers2 || t.livingCustomers2.length == 0) {
- t.livingCustomers = [obj];
- } else {
- t.livingCustomers = [...[obj], ...t.livingCustomers2];
- }
- });
- console.log("this.model", this.model);
- if (that.model.roomIds.length <= 0) {
- that.$message.warning("请先添加房间");
- return;
- }
- // 触发表单验证
- this.$refs.form.validate((valid, err) => {
- if (valid) {
- this.model.orderInfo.arrivalTime =
- this.model.orderInfo.arrivalTime2 +
- " " +
- moment(this.model.orderInfo.arrivalTimeSpan).format("HH:mm");
- this.model.orderInfo.dueOutTime =
- this.model.orderInfo.dueOutTime2 +
- " " +
- moment(this.model.orderInfo.dueOutTimeSpan).format("HH:mm");
- that.confirmLoading = true;
- let httpurl = "";
- let method = "";
- if (!this.model.id) {
- httpurl += this.url.add;
- method = "post";
- } else {
- httpurl += this.url.edit;
- method = "put";
- }
- // if (this.model.orderInfo.bookingOrdersId) {
- // httpurl = "/business/busRoomBookingOrders/add-batch";
- // method = "post";
- // }
- // that.$emit("ok", {order:'res.result', model:this.model});
- // return
- httpAction(httpurl, this.model, method)
- .then((res) => {
- if (res.success) {
- that.$message.success(res.message);
- that.$emit("ok", { order: res.result, model: that.model });
- } else {
- if (res.message.indexOf("与预约时间有冲突") >= 0) {
- that.$confirm({
- title: "提示",
- content: res.message + "是否确定入住?",
- onOk: function () {
- that.model.confirm = true;
- httpAction(httpurl, that.model, method)
- .then((res) => {
- if (res.success) {
- that.$message.success(res.message);
- that.$emit("ok", {
- order: res.result,
- model: that.model,
- });
- } else {
- if (res.message.indexOf("与预约时间有冲突") >= 0) {
- } else {
- that.$message.warning(res.message);
- }
- }
- })
- .finally(() => {
- that.confirmLoading = false;
- });
- },
- });
- } else {
- that.$message.warning(res.message);
- }
- }
- })
- .finally(() => {
- that.confirmLoading = false;
- });
- } else {
- console.log(err);
- var keys = Object.keys(err);
- console.log("keys", keys);
- var some = keys.some(
- (t) => t.indexOf("roomIds[" + this.roomIdsIndex + "]") >= 0
- );
- if (!some) {
- this.$message.warning("请输入其他房间必填信息");
- }
- }
- });
- },
- },
- };
- </script>
- <style scoped>
- /deep/ .ant-btn-link {
- flex: 1;
- color: rgba(255, 141, 26, 1) !important;
- }
- /deep/ .ant-btn-background-ghost {
- color: rgba(0, 0, 0, 0.45) !important;
- }
- .menu {
- display: flex;
- flex-direction: column;
- flex: 1;
- color: #fff;
- margin-top: 12px;
- }
- .dynamic-delete-button {
- cursor: pointer;
- position: relative;
- /* top: 4px; */
- margin-left: 5px;
- font-size: 18px;
- color: #1890ff;
- transition: all 0.3s;
- }
- .dynamic-delete-button:hover {
- color: #777;
- }
- .dynamic-delete-button[disabled] {
- cursor: not-allowed;
- opacity: 0.5;
- }
- /deep/.ant-table-thead > tr > th {
- background: rgba(42, 130, 228, 1);
- color: #ffffff;
- }
- /deep/.ant-divider-horizontal {
- margin: 12px 0 !important;
- }
- /deep/ .ant-table-tbody .ant-table-row td {
- padding-top: 5px;
- padding-bottom: 5px;
- }
- /deep/.ant-table-thead > tr > th,
- .ant-table-tbody > tr > td {
- padding: 5px 5px !important;
- overflow-wrap: break-word;
- }
- /deep/ .ant-form-item {
- margin-bottom: 5px !important;
- }
- /deep/ .ant-tabs-nav .ant-tabs-tab-active {
- color: rgba(255, 141, 26, 1);
- }
- /deep/.ant-tabs-nav .ant-tabs-tab:hover {
- color: rgba(255, 141, 26, 1);
- }
- /deep/.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-active {
- color: rgba(255, 141, 26, 1);
- }
- </style>
|