酒店预订平台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

пре 3 година
пре 3 година
пре 2 година
пре 3 година
пре 2 година
пре 3 година
пре 3 година
пре 2 година
пре 2 година
пре 2 година
пре 2 година
пре 3 година
пре 3 година
пре 3 година
пре 2 година
пре 3 година
пре 2 година
пре 3 година
пре 3 година
пре 3 година
пре 2 година
пре 3 година
пре 3 година
пре 3 година
пре 2 година
пре 3 година
пре 2 година
пре 2 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 2 година
пре 3 година
пре 3 година
пре 3 година
пре 2 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 2 година
пре 2 година
пре 2 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 2 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 2 година
пре 2 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 3 година
пре 2 година
пре 3 година
пре 3 година
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <!-- import CSS -->
  6. <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
  7. </head>
  8. <body>
  9. <div id="app" class="table">
  10. <div>
  11. <div class="header-search" style="width: 100%;margin-bottom: 10px">
  12. <span>付款单ID:</span>
  13. <el-input v-model="search.id" style="width: 120px;" placeholder="请输入内容" clearable></el-input>
  14. <span>名称:</span>
  15. <el-input v-model="search.name" style="width: 120px;" placeholder="请输入内容" clearable></el-input>
  16. <span>状态</span>
  17. <el-select v-model="search.status" filterable placeholder="请选择" clearable>
  18. <el-option
  19. v-for="item in status"
  20. :key="item.id"
  21. :label="item.value"
  22. :value="item.id">
  23. </el-option>
  24. </el-select>
  25. <span>创建人</span>
  26. <el-select v-model="search.create_id" filterable placeholder="请选择" clearable>
  27. <el-option
  28. v-for="item in userList"
  29. :key="item.id"
  30. :label="item.name"
  31. :value="item.id">
  32. </el-option>
  33. </el-select>
  34. </div>
  35. <div class="header-search" style="width: 100%;margin-bottom: 10px">
  36. <span>主订单ID:</span>
  37. <el-input v-model="search.order_id" style="width: 150px;" placeholder="请输入内容"></el-input>
  38. <span>子订单ID:</span>
  39. <el-input v-model="search.sub_order_id" style="width: 150px;" placeholder="请输入内容"></el-input>
  40. <span>成本</span>
  41. <el-input-number v-model="search.startCost" style="width: 170px;" placeholder="请输入内容" clearable></el-input-number>
  42. ~
  43. <el-input-number v-model="search.endCost" style="width: 170px;" placeholder="请输入内容" clearable></el-input-number>
  44. <el-button type="primary" icon="el-icon-search" @click="getData(1)">搜索</el-button>
  45. <el-button type="primary" icon="el-icon-plus" @click="edit(null)">新增付款单</el-button>
  46. </div>
  47. <el-table ref="multipleTable" :data="tableData" border tooltip-effect="dark"
  48. style="font-size:12px;width: 100%;margin-top: 12px">
  49. <el-table-column prop="create_id" label="创建人" min-width="70" :formatter="getUserName"></el-table-column>
  50. <el-table-column prop="id" label="付款单号" min-width="50"></el-table-column>
  51. <el-table-column prop="name" label="付款单名称" min-width="120"></el-table-column>
  52. <el-table-column prop="status" label="付款单状态" :formatter="getStatusName" min-width="60">
  53. <template slot-scope="scope">
  54. <el-radio-group v-model="scope.row.status" size="mini" @change="setStatus(scope.row)">
  55. <el-radio-button label="0">未付款</el-radio-button>
  56. <el-radio-button label="1">付款中</el-radio-button>
  57. <el-radio-button label="2">已付款</el-radio-button>
  58. </el-radio-group>
  59. </template>
  60. </el-table-column>
  61. <el-table-column prop="order_ids" label="酒店" min-width="220">
  62. <template slot-scope="scope">
  63. <div v-html="scope.row.hotel"></div>
  64. </template>
  65. </el-table-column>
  66. <el-table-column prop="total_amount" label="附加项目" min-width="220">
  67. <template slot-scope="scope">
  68. <div v-html="scope.row.item"></div>
  69. </template>
  70. </el-table-column>
  71. <el-table-column prop="create_time" label="创建时间" min-width="60"></el-table-column>
  72. <el-table-column prop="update_time" label="更新时间" min-width="60"></el-table-column>
  73. <el-table-column label="操作" min-width="140">
  74. <template slot-scope="scope">
  75. <el-button-group>
  76. <el-button type="primary" size="mini" @click="edit(scope.row)" icon="el-icon-edit" style="margin: 5px;">编辑</el-button>
  77. <el-button type="success" size="mini" @click="editOrderDivShow(scope.row)" icon="el-icon-share" style="margin: 5px;">订单</el-button>
  78. <el-button type="danger" size="mini" v-if="scope.row.status==0" icon="el-icon-delete" @click="delAll(scope.row.id)" style="margin: 5px;">删除</el-button>
  79. <el-button type="danger" size="mini" icon="el-icon-search" @click="showFile(scope.row.id)" style="margin: 5px;">附件</el-button>
  80. </el-button-group>
  81. </template>
  82. </el-table-column>
  83. </el-table>
  84. <el-pagination
  85. :page-size="search.pageSize"
  86. :pager-count="11"
  87. layout="total, sizes, prev, pager, next, jumper"
  88. :total="total"
  89. :current-page="search.pageNum"
  90. :page-sizes="[10, 20, 30, 40, 50]"
  91. @size-change="sizeChange"
  92. @current-change="getData"
  93. @prev-click="getData"
  94. @next-click="getData"
  95. ></el-pagination>
  96. </div>
  97. <transition name="bounce" v-if="editShow">
  98. <el-dialog title="付款单详情" :visible.sync="editShow" width="90%" top="15px">
  99. <el-form ref="form" label-width="100px" style="width: 100%;padding-bottom: 20px">
  100. <div style="display: flex;width: 100%">
  101. <el-form-item v-if="editType" label="付款单ID:" style="width: 80%">
  102. <div v-html="editData.id"></div>
  103. </el-form-item>
  104. </div>
  105. <div>
  106. <el-form-item label="付款单名称:" style="width: 80%">
  107. <el-input v-model="editData.name" style="width: 120px;" placeholder="请输入内容"></el-input>
  108. </el-form-item>
  109. </div>
  110. <div>
  111. <el-form-item v-if="editType" label="付款单状态:" style="width: 80%">
  112. <el-radio-group v-model="editData.status" size="mini" disabled>
  113. <el-radio-button label="0">未付款</el-radio-button>
  114. <el-radio-button label="1">付款中</el-radio-button>
  115. <el-radio-button label="2">已付款</el-radio-button>
  116. </el-radio-group>
  117. </el-form-item>
  118. </div>
  119. <div>
  120. <el-button type="primary" @click="editDoing()" >保存</el-button>
  121. </div>
  122. </el-form>
  123. </el-dialog>
  124. </transition>
  125. <transition name="bounce" v-if="editOrderShow">
  126. <el-dialog title="详情" :visible.sync="editOrderShow" width="100%" top="15px">
  127. <el-form ref="form" label-width="100px" style="width: 100%;padding-bottom: 10px">
  128. <div style="display: flex;width: 100%">
  129. <el-form-item label="付款单ID:" style="width: 80%">
  130. <div v-html="editOrder.id"></div>
  131. </el-form-item>
  132. <el-form-item label="付款单名称:" style="width: 80%">
  133. <div v-html="editOrder.name"></div>
  134. </el-form-item>
  135. <el-form-item label="付款单状态:" style="width: 80%">
  136. <el-radio-group v-model="editOrder.status" size="mini" disabled>
  137. <el-radio-button label="0">未付款</el-radio-button>
  138. <el-radio-button label="1">付款中</el-radio-button>
  139. <el-radio-button label="2">已付款</el-radio-button>
  140. </el-radio-group>
  141. </el-form-item>
  142. </div>
  143. </el-form>
  144. <div>
  145. <div class="header-search" style="width: 100%;margin-bottom: 10px">
  146. <span>主订单ID:</span>
  147. <el-input v-model="orderMainListSearch.order_id" style="width: 120px;" placeholder="请输入内容"></el-input>
  148. <span>子订单ID:</span>
  149. <el-input v-model="orderMainListSearch.sub_order_id" style="width: 120px;" placeholder="请输入内容"></el-input>
  150. <span>订单类型:</span>
  151. <el-select v-model="orderMainListSearch.prod_type" filterable style="width: 120px;" placeholder="请选择" >
  152. <el-option
  153. v-for="item in prodTypeList"
  154. :key="item.id"
  155. :label="item.name"
  156. :value="item.id">
  157. </el-option>
  158. </el-select>
  159. <span>用户名</span>
  160. <el-input v-model="orderMainListSearch.customer_name" style="width: 120px;" placeholder="请输入内容" clearable></el-input>
  161. </div>
  162. <div class="header-search" style="width: 100%;margin-bottom: 10px">
  163. <span>附加项目</span>
  164. <el-select v-model="orderMainListSearch.item_id" filterable style="width: 120px;" placeholder="请选择" clearable>
  165. <el-option
  166. v-for="item in itemList"
  167. :key="item.id"
  168. :label="item.name"
  169. :value="item.id">
  170. </el-option>
  171. </el-select>
  172. <span>酒店</span>
  173. <el-select v-model="orderMainListSearch.hotel_id" filterable style="width: 120px;" placeholder="请选择" clearable>
  174. <el-option
  175. v-for="item in hotelList"
  176. :key="item.id"
  177. :label="item.name"
  178. :value="item.id">
  179. </el-option>
  180. </el-select>
  181. <span>确认单状态:</span>
  182. <el-select v-model="orderMainListSearch.confirm_status" filterable style="width: 120px;" placeholder="请选择" clearable>
  183. <el-option
  184. v-for="item in confirmStatusList"
  185. :key="item.id"
  186. :label="item.name"
  187. :value="item.id">
  188. </el-option>
  189. </el-select>
  190. <span>付款单状态</span>
  191. <el-select v-model="orderMainListSearch.inPayment" filterable style="width: 120px;" placeholder="请选择" clearable>
  192. <el-option
  193. v-for="item in inPaymentList"
  194. :key="item.id"
  195. :label="item.name"
  196. :value="item.id">
  197. </el-option>
  198. </el-select>
  199. <span>供应商:</span>
  200. <el-select v-model="orderMainListSearch.supplier_id" filterable style="width: 120px;" placeholder="请选择" clearable>
  201. <el-option
  202. v-for="item in supplierList"
  203. :key="item.id"
  204. :label="item.name"
  205. :value="item.id">
  206. </el-option>
  207. </el-select>
  208. </div>
  209. <div class="header-search" style="width: 100%;margin-bottom: 10px">
  210. <span>成本</span>
  211. <el-input-number v-model="orderMainListSearch.startMoney" style="width: 180px;" placeholder="请输入内容" clearable></el-input-number>
  212. ~
  213. <el-input-number v-model="orderMainListSearch.endMoney" style="width: 180px;" placeholder="请输入内容" clearable></el-input-number>
  214. <span>时间</span>
  215. <el-date-picker
  216. style="width: 180px;"
  217. v-model="orderMainListSearch.startTime"
  218. type="date"
  219. value-format="yyyy-MM-dd"
  220. :picker-options="pickerOptions"
  221. placeholder="选择日期">
  222. </el-date-picker>
  223. ~
  224. <el-date-picker
  225. style="width: 180px;"
  226. v-model="orderMainListSearch.endTime"
  227. value-format="yyyy-MM-dd"
  228. type="date"
  229. :picker-options="pickerOptions"
  230. placeholder="选择日期">
  231. </el-date-picker>
  232. <el-button type="primary" icon="el-icon-search" @click="getOrderMainData(1)">搜索</el-button>
  233. </div>
  234. <div>
  235. <el-table ref="multipleTable" :data="orderMainList" border tooltip-effect="dark" style="font-size:12px;width: 100%;margin-top: 12px" @selection-change="handleSelectionChange">
  236. <el-table-column type="selection" width="30" :selectable="checkSelect"></el-table-column>
  237. <el-table-column prop="order_id" label="主订单ID" min-width="20" ></el-table-column>
  238. <el-table-column prop="id" label="子订单ID" min-width="20" ></el-table-column>
  239. <el-table-column label="订单类型" min-width="30" :formatter="getProdTypeName" ></el-table-column>
  240. <el-table-column prop="supplier_name" label="供应商" min-width="40" ></el-table-column>
  241. <el-table-column prop="trade_order_number" label="第三方订单号" min-width="40" ></el-table-column>
  242. <el-table-column prop="hotel_name" label="酒店/项目类型" min-width="80" :formatter="getTypeName"></el-table-column>
  243. <el-table-column prop="room_name" label="房型/附加项目" min-width="80" ></el-table-column>
  244. <el-table-column prop="plan_name" label="价格方案/计价单位" min-width="40" ></el-table-column>
  245. <el-table-column prop="check_in_date" label="时间" min-width="40" >
  246. <template slot-scope="scope">
  247. <div v-html="scope.row.check_in_date"></div>
  248. <div v-html="scope.row.check_out_date"></div>
  249. </template>
  250. </el-table-column>
  251. <el-table-column prop="count" label="数量" min-width="20" ></el-table-column>
  252. <el-table-column prop="customer_name" label="出游人姓名" min-width="40" ></el-table-column>
  253. <el-table-column prop="total_cost" label="总成本" min-width="30" ></el-table-column>
  254. <el-table-column label="发单状态" min-width="30" :formatter="confirmStatusName"></el-table-column>
  255. <el-table-column prop="create_time" label="子订单生成时间" min-width="60" ></el-table-column>
  256. <el-table-column prop="payment_order_name" label="付款单" min-width="40" >
  257. <template slot-scope="scope">
  258. <div v-html="scope.row.payment_order_id"></div>
  259. <div v-html="scope.row.payment_order_name"></div>
  260. </template>
  261. </el-table-column>
  262. <el-table-column label="财务备注" min-width="40" >
  263. <template slot-scope="scope">
  264. <el-popover
  265. placement="left"
  266. placement="top-start"
  267. title="备注:"
  268. width="500"
  269. trigger="hover">
  270. <div>
  271. <div>
  272. <el-input
  273. style="margin: 5px"
  274. type="textarea"
  275. :rows="2"
  276. placeholder="无"
  277. v-model="scope.row.finance_memo">
  278. </el-input>
  279. </div>
  280. <div>
  281. <el-button type="primary" slot="reference" @click="setFinanceMemo(scope.row)" size="small" style="margin: 5px">变更提交</el-button>
  282. </div>
  283. </div>
  284. <el-button slot="reference" size="small" >查看</el-button>
  285. </el-popover>
  286. </template>
  287. </el-table-column>
  288. <el-table-column label="操作" >
  289. <template slot-scope="scope">
  290. <el-button-group>
  291. <el-button type="primary" size="mini" v-if="scope.row.payment_order_id==0 && editOrder.status==0" @click="addOrderInfo(scope.row)" icon="el-icon-edit">添加</el-button>
  292. <el-button type="danger" size="mini" v-if="scope.row.payment_order_id==editOrder.id && editOrder.status==0" @click="removeOrderMain(scope.row)" icon="el-icon-delete">移除</el-button>
  293. </el-button-group>
  294. </template>
  295. </el-table-column>
  296. </el-table>
  297. <div style="margin-top: 5px">
  298. <el-button type="primary" icon="el-icon-circle-plus" @click="addOrderAll()" :disabled="multipleSelection.length==0">添加到采购单</el-button>
  299. </div>
  300. <el-pagination
  301. :page-size="orderMainListSearch.pageSize"
  302. :pager-count="11"
  303. layout="total, sizes, prev, pager, next, jumper"
  304. :total="orderMainTotal"
  305. :current-page="orderMainListSearch.pageNum"
  306. :page-sizes="[10, 20, 30, 40, 50]"
  307. @size-change="sizeOrderMainChange"
  308. @current-change="getOrderMainData"
  309. @prev-click="getOrderMainData"
  310. @next-click="getOrderMainData"
  311. ></el-pagination>
  312. </div>
  313. </div>
  314. </el-dialog>
  315. </transition>
  316. <transition name="bounce" v-if="showFileFlag">
  317. <el-dialog title="附件详情" :visible.sync="showFileFlag" width="90%" top="15px">
  318. <el-form ref="form" label-width="100px" style="width: 100%;padding-bottom: 20px">
  319. <div style="display: flex;width: 100%">
  320. <el-form-item label="账单ID:" style="width: 80%">
  321. <div v-html="fileData.id"></div>
  322. </el-form-item>
  323. </div>
  324. <div>
  325. <el-form-item label="名称标识:" style="width: 80%">
  326. <el-input v-model="fileData.name" style="width: 120px;" placeholder="请输入内容" clearable></el-input>
  327. </el-form-item>
  328. </div>
  329. <div>
  330. <el-form-item label="文件:" style="width: 80%">
  331. <div>
  332. <el-upload
  333. :multiple="false"
  334. :limit="1"
  335. class="upload-demo"
  336. action="/hotel.php/ajax/upload"
  337. :on-change="handleChange"
  338. :on-exceed="handleExceed"
  339. :file-list="fileList">
  340. <el-button size="small" type="primary">点击上传</el-button>
  341. </el-upload>
  342. </div>
  343. </el-form-item>
  344. </div>
  345. <div>
  346. <el-button type="primary" @click="fileSubmit()" >提交</el-button>
  347. </div>
  348. </el-form>
  349. <el-table ref="multipleTable" :data="fileTable" border tooltip-effect="dark" style="font-size:12px;width: 100%;margin-top: 12px">
  350. <el-table-column prop="name" label="名称标识" min-width="140" ></el-table-column>
  351. <el-table-column prop="create_name" label="创建人" min-width="70" ></el-table-column>
  352. <el-table-column prop="create_time" label="创建时间" min-width="70" ></el-table-column>
  353. <el-table-column label="点击下载" min-width="40" >
  354. <template slot-scope="scope">
  355. <el-link :href="scope.row.file" target="_blank" style="color: #0a568c">下载</el-link>
  356. </template>
  357. </el-table-column>
  358. </el-table>
  359. </el-dialog>
  360. </transition>
  361. </div>
  362. </body>
  363. <!-- import Vue before Element -->
  364. <script src="/assets/js/vue/vue.js"></script>
  365. <!-- import JavaScript -->
  366. <script src="/assets/js/vue/index.js"></script>
  367. <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
  368. <script>
  369. new Vue({
  370. el: '#app',
  371. data: function () {
  372. return {
  373. search: {
  374. sub_order_id:"",
  375. order_id:"",
  376. id:"",
  377. create_id:"",
  378. name: "",
  379. status: "all",
  380. startCost:"",
  381. endCost:"",
  382. pageSize: 10,
  383. pageNum: 1
  384. },
  385. status: [
  386. {"id": "all", "value": "请选择"},
  387. {"id": 0, 'value': "未付款"},
  388. {"id": 1, 'value': "付款中"},
  389. {"id": 2, 'value': "已付款"}
  390. ],
  391. total: 0,
  392. tableData: [],
  393. userList: [],
  394. info: {
  395. id: null,
  396. name: "",
  397. status: 0,
  398. list: []
  399. },
  400. editShow: false,
  401. editType: false,
  402. editData: {},
  403. editOrderShow:false,
  404. editOrder:{},
  405. orderMainListSearch:{
  406. "payment_order_id":"",
  407. "order_id":"",
  408. "sub_order_id":"",
  409. "prod_type":"hotel",
  410. "supplier_id":"",
  411. "inPayment":"",
  412. "confirm_status":"",
  413. "customer_name":"",
  414. "startMoney":"",
  415. "endMoney":"",
  416. "startTime":"",
  417. "endTime":"",
  418. "pageNum":1,
  419. "pageSize":10,
  420. "item_id":"",
  421. "hotel_id":"",
  422. "room_id":"",
  423. "plan_id":""
  424. },
  425. orderMainTotal:0,
  426. orderMainList:[],
  427. inPaymentList:[
  428. {id:1,name:"在此付款单中"},
  429. {id:2,name:"不在此付款单中"},
  430. {id:3,name:"不在任何付款单中"}
  431. ],
  432. //1、未发单/ 2已发单、3已确认、4已取消
  433. confirmStatusList:[
  434. {id:1,name:"未发单"},
  435. {id:2,name:"已发单"},
  436. {id:3,name:"已确认"},
  437. {id:4,name:"已取消"}
  438. ],
  439. prodTypeList:[
  440. {id:"hotel",name:"酒店"},
  441. {id:"item",name:"附加项目"}
  442. ],
  443. supplierList:[],
  444. multipleSelection: [],
  445. hotelList:[],
  446. itemList:[],
  447. type_list:[],
  448. pickerOptions: {
  449. shortcuts: [{
  450. text: '今天',
  451. onClick(picker) {
  452. picker.$emit('pick', new Date());
  453. }
  454. }, {
  455. text: '昨天',
  456. onClick(picker) {
  457. const date = new Date();
  458. date.setTime(date.getTime() - 3600 * 1000 * 24);
  459. picker.$emit('pick', date);
  460. }
  461. }, {
  462. text: '一周前',
  463. onClick(picker) {
  464. const date = new Date();
  465. date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
  466. picker.$emit('pick', date);
  467. }
  468. }]
  469. },
  470. showFileFlag:false,
  471. fileData:{
  472. "id":"",
  473. "name":"",
  474. "file":"",
  475. "type":"pay"
  476. },
  477. fileTable:[],
  478. fileList:[]
  479. }
  480. },
  481. created() {
  482. this.getAdminUser();
  483. this.getSupplierList();
  484. this.getData(1)
  485. this.getHotelList()
  486. this.getConfig()
  487. this.getItemList()
  488. },
  489. watch: {
  490. "orderMainListSearch.prod_type" : function (newVal,oldVal){
  491. this.getOrderMainData(1)
  492. }
  493. },
  494. methods: {
  495. setFinanceMemo(info){
  496. let param = {
  497. "type": info["prod_type"],
  498. "finance_memo":info["finance_memo"],
  499. "order_id":info["id"]
  500. }
  501. axios.post("/hotel.php/order_main/setFinanceMemo", param).then((response) => {
  502. let data = response.data;
  503. if (data.flag) {
  504. this.$message.success("备注成功");
  505. } else {
  506. this.$message.error(response.msg);
  507. }
  508. }).catch(function (error) {
  509. console.log(error);
  510. });
  511. },
  512. handleChange(file, fileList) {
  513. this.fileList = fileList.slice(-3);
  514. },
  515. showFile(id){
  516. this.fileData["id"]=id;
  517. this.showFileFlag = true
  518. axios.post("/hotel.php/order_main/getFileList", this.fileData).then((response) => {
  519. let data = response.data;
  520. if (data.flag) {
  521. this.fileTable = data.data
  522. } else {
  523. this.$message.error(response.msg);
  524. }
  525. }).catch(function (error) {
  526. console.log(error);
  527. });
  528. },
  529. handleExceed(files, fileList) {
  530. this.$message.warning(`当前限制选择 1 个文件`);
  531. },
  532. fileSubmit(){
  533. if (this.fileList.length==0) {
  534. this.$message.error(`请选择文件`);
  535. return false;
  536. }
  537. if (this.fileData["name"]=="") {
  538. this.$message.error(`请输入名称标识`);
  539. return false;
  540. }
  541. let file = this.fileList[0].response.data.url;
  542. this.fileData["file"]=file;
  543. axios.post("/hotel.php/order_main/addFileInfo", this.fileData).then((response) => {
  544. let data = response.data;
  545. if (data.flag) {
  546. this.fileList=[]
  547. this.showFile(this.fileData["id"])
  548. } else {
  549. this.$message.error(response.msg);
  550. }
  551. }).catch(function (error) {
  552. console.log(error);
  553. });
  554. },
  555. getTypeName(info) {
  556. for (let i = 0; i < this.type_list.length; i++) {
  557. if (this.type_list[i].id == info.hotel_name) {
  558. return this.type_list[i].name
  559. }
  560. }
  561. return info.hotel_name
  562. },
  563. getConfig(){
  564. axios.post("/hotel.php/general/config/getList?key=site.item_category", {}).then((response) => {
  565. let data = response.data;
  566. this.type_list = data.list;
  567. }).catch(function (error) {
  568. console.log(error);
  569. });
  570. },
  571. getProdTypeName(info){
  572. for (let i = 0; i < this.prodTypeList.length; i++) {
  573. if (this.prodTypeList[i].id == info.prod_type) {
  574. return this.prodTypeList[i].name
  575. }
  576. }
  577. return "-"
  578. },
  579. getHotelList(){
  580. axios.post("/hotel.php/cf_hotel_info/getHotelList", this.search).then((response) => {
  581. console.log(response)
  582. let data = response.data;
  583. this.hotelList = data.list;
  584. }).catch(function (error) {
  585. console.log(error);
  586. });
  587. },
  588. getItemList(){
  589. axios.post("/hotel.php/cf_item/getList", this.search).then((response) => {
  590. console.log(response)
  591. let data = response.data;
  592. this.itemList = data.list;
  593. }).catch(function (error) {
  594. console.log(error);
  595. });
  596. },
  597. checkSelect(row,index){
  598. if (this.editOrder.status != 0) {
  599. return false;
  600. }
  601. if (row.payment_order_id ==0) {
  602. return true;
  603. }
  604. return false;
  605. },
  606. handleSelectionChange(val) {
  607. this.multipleSelection = val;
  608. },
  609. getSupplierList(){
  610. axios.post("/hotel.php/cf_suplier_info/getList", this.search).then((response) => {
  611. console.log(response)
  612. let data = response.data;
  613. this.supplierList = data.list;
  614. }).catch(function (error) {
  615. console.log(error);
  616. });
  617. },
  618. getStatusName(info) {
  619. for (let i = 0; i < this.status.length; i++) {
  620. if (this.status[i].id == info.status) {
  621. return this.status[i].value
  622. }
  623. }
  624. return "-"
  625. },
  626. getUserName(info) {
  627. for (let i = 0; i < this.userList.length; i++) {
  628. if (this.userList[i].id == info.create_id) {
  629. return this.userList[i].name
  630. }
  631. }
  632. return "-"
  633. },
  634. confirmStatusName(info){
  635. for (let i = 0; i < this.confirmStatusList.length; i++) {
  636. if (this.confirmStatusList[i].id == info.confirm_status) {
  637. return this.confirmStatusList[i].name
  638. }
  639. }
  640. return "-"
  641. },
  642. sizeChange(pageSize) {
  643. this.search.pageSize = pageSize;
  644. this.getData(this.search.pageNum)
  645. },
  646. sizeOrderMainChange(pageSize) {
  647. this.orderMainListSearch.pageSize = pageSize;
  648. this.getOrderMainData(this.orderMainListSearch.pageNum)
  649. },
  650. //獲取列表
  651. getData(page) {
  652. this.search.pageNum = page;
  653. axios.post("/hotel.php/payment_order/getList", this.search).then((response) => {
  654. let data = response.data;
  655. console.log(this.tableData);
  656. if (data.flag) {
  657. this.tableData = data.data.list;
  658. this.total = data.data.total;
  659. console.log(this.tableData);
  660. } else {
  661. this.$message.error(response.msg);
  662. }
  663. }).catch(function (error) {
  664. console.log(error);
  665. });
  666. },
  667. getAdminUser() {
  668. axios.post("/hotel.php/auth/admin/getList", this.search).then((response) => {
  669. this.userList = response.data.list;
  670. }).catch(function (error) {
  671. console.log(error);
  672. });
  673. },
  674. edit(info) {
  675. if (info == null) {
  676. this.editType = false;
  677. this.editData = {
  678. name: ""
  679. }
  680. } else {
  681. this.editType = true;
  682. this.editData = {
  683. id:info.id,
  684. name: info.name,
  685. status:info.status
  686. }
  687. }
  688. this.editShow = true;
  689. },
  690. editDoing(){
  691. axios.post("/hotel.php/payment_order/save", this.editData).then( (response)=> {
  692. let data = response.data;
  693. console.log(this.tableData);
  694. if (data.flag) {
  695. this.$message.success("保存成功");
  696. this.editShow = false;
  697. this.getData(1);
  698. } else {
  699. this.$message.error(data.msg);
  700. }
  701. }).catch(function (error) {
  702. this.$message.error("保存失败");
  703. console.log(error);
  704. });
  705. },
  706. setStatus(info){
  707. this.$confirm('确定修改状态?', '提示', {
  708. confirmButtonText: '确定',
  709. cancelButtonText: '取消',
  710. type: 'warning'
  711. }).then(() => {
  712. axios.post("/hotel.php/payment_order/setStatus", info).then( (response)=> {
  713. let data = response.data;
  714. if (data.flag) {
  715. this.$message.success("设置成功");
  716. } else {
  717. this.$message.error(data.msg);
  718. this.getData(this.search.pageNum)
  719. }
  720. }).catch(function (error) {
  721. this.$message.error("保存失败");
  722. console.log(error);
  723. this.getData(this.search.pageNum)
  724. });
  725. }).catch(() => {
  726. this.$message.success("已取消");
  727. this.getData(this.search.pageNum)
  728. })
  729. },
  730. editOrderDivShow(info){
  731. console.log(info);
  732. this.editOrder = info;
  733. this.orderMainListSearch.payment_order_id = info.id;
  734. this.orderMainList=[];
  735. this.getOrderMainData(1);
  736. this.editOrderShow = true;
  737. },
  738. getOrderMainData(page){
  739. this.orderMainListSearch.pageNum = page;
  740. axios.post("/hotel.php/payment_order/getSubOrderList", this.orderMainListSearch).then((response) => {
  741. let data = response.data;
  742. console.log(this.tableData);
  743. if (data.flag) {
  744. this.orderMainList = data.data.list;
  745. this.orderMainTotal = data.data.total;
  746. console.log(this.orderMainList);
  747. } else {
  748. this.$message.error(data.msg);
  749. }
  750. }).catch(function (error) {
  751. console.log(error);
  752. });
  753. },
  754. addOrderInfo(info){
  755. let param = {
  756. hotel_id:[],
  757. item_id:[],
  758. id:this.editOrder.id
  759. }
  760. if (info.prod_type=='hotel') {
  761. param.hotel_id.push(info.id)
  762. }else{
  763. param.item_id.push(info.id)
  764. }
  765. this.addOrderMain(param)
  766. },
  767. addOrderMain(param){
  768. axios.post("/hotel.php/payment_order/addOrderMain", param).then((response) => {
  769. let data = response.data;
  770. if (data.flag) {
  771. this.$message.success("添加成功");
  772. this.getOrderMainData(this.orderMainListSearch.pageNum)
  773. this.getData(this.search.pageNum)
  774. } else {
  775. this.$message.error(data.msg);
  776. }
  777. }).catch(function (error) {
  778. console.log(error);
  779. });
  780. },
  781. addOrderAll(){
  782. let param = {
  783. hotel_id:[],
  784. item_id:[],
  785. id:this.editOrder.id
  786. }
  787. let length = this.multipleSelection.length;
  788. for (var k = 0; k < length; k++) {
  789. if (this.multipleSelection[k].prod_type=='hotel'){
  790. param.hotel_id.push(this.multipleSelection[k].id)
  791. }else{
  792. param.item_id.push(this.multipleSelection[k].id)
  793. }
  794. }
  795. this.addOrderMain(param);
  796. },
  797. removeOrderMain(info){
  798. let param = {
  799. hotel_id:[],
  800. item_id:[],
  801. id:this.editOrder.id
  802. }
  803. if (info.prod_type=='hotel') {
  804. param.hotel_id.push(info.id)
  805. }else{
  806. param.item_id.push(info.id)
  807. }
  808. axios.post("/hotel.php/payment_order/removeOrderMain", param).then((response) => {
  809. let data = response.data;
  810. if (data.flag) {
  811. this.$message.success("移除成功");
  812. this.getOrderMainData(this.orderMainListSearch.pageNum)
  813. this.getData(this.search.pageNum)
  814. } else {
  815. this.$message.error(data.msg);
  816. }
  817. }).catch(function (error) {
  818. console.log(error);
  819. });
  820. },
  821. delAll(id){
  822. let param = {
  823. id:id
  824. }
  825. this.$confirm('确定删除采购单?', '提示', {
  826. confirmButtonText: '确定',
  827. cancelButtonText: '取消',
  828. type: 'warning'
  829. }).then(() => {
  830. axios.post("/hotel.php/payment_order/delAll", param).then((response) => {
  831. let data = response.data;
  832. if (data.flag) {
  833. this.$message.success("移除成功");
  834. this.getData(this.search.pageNum)
  835. } else {
  836. this.$message.error(data.msg);
  837. }
  838. }).catch(function (error) {
  839. console.log(error);
  840. });
  841. }).catch(() => {
  842. this.$message.success("已取消");
  843. });
  844. }
  845. }
  846. })
  847. </script>
  848. <style lang="scss" scoped>
  849. .upload .el-upload__input {
  850. display: none !important;
  851. }
  852. input[type="file"] {
  853. display: none !important;
  854. }
  855. .el-table thead {
  856. background-color: #5a5e66 !important;
  857. }
  858. .header-search {
  859. font-size: 14px;
  860. font-weight: 900;
  861. }
  862. body {
  863. background-color: white;
  864. }
  865. .table {
  866. width: 100%;
  867. font-size: 12px;
  868. margin-top: 12px;
  869. background-color: white;
  870. }
  871. .el-form-item{
  872. margin-bottom: 5px !important;
  873. }
  874. </style>
  875. </html>