FlowManage.vue 49 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635
  1. <template>
  2. <div class="manage-root">
  3. <Header />
  4. <div class="manage-root-contain">
  5. <nav-menu
  6. class="manage-root-contain-left"
  7. :activeMenuIndex="activeMenuIndex"
  8. ></nav-menu>
  9. <div
  10. class="manage-root-contain-right"
  11. :class="[isPhone ? 'manage-root-contain-right-phone' : '']"
  12. >
  13. <breadcrumb
  14. :breadcrumbList="breadcrumbList"
  15. class="breadcrumb-box"
  16. :class="[isPhone ? 'breadcrumb-box-phone' : '']"
  17. ></breadcrumb>
  18. <div class="personal-inner">
  19. <div class="common-title-box">
  20. <h3>交易流水</h3>
  21. <span v-if="isPhone" @click="showSearch = !showSearch">{{
  22. showSearch ? "收起查询条件" : "展开查询条件"
  23. }}</span>
  24. <div class="btn-box" v-if="!isPhone">
  25. <ul class="quick-search">
  26. <li v-for="(itemq, indexq) in quickList" :key="indexq">
  27. <a
  28. @click="qucikSearch(itemq, indexq)"
  29. :class="[quickIndex === indexq ? 'active' : '']"
  30. >{{ itemq.name }}</a
  31. >
  32. <span
  33. class="border"
  34. :class="[
  35. indexq !== quickList.length - 1 &&
  36. quickIndex !== indexq &&
  37. quickIndex - 1 !== indexq
  38. ? ''
  39. : 'border-no',
  40. ]"
  41. ></span>
  42. </li>
  43. </ul>
  44. <el-button
  45. type="primary"
  46. size="small"
  47. @click="handleExport()"
  48. :loading="exportLoading"
  49. v-if="exportFlag"
  50. >导出报表</el-button
  51. >
  52. </div>
  53. </div>
  54. <template v-if="showSearch">
  55. <div class="btn-box" v-if="isPhone">
  56. <ul class="quick-search">
  57. <li v-for="(itemq, indexq) in quickList" :key="indexq">
  58. <a
  59. @click="qucikSearch(itemq, indexq)"
  60. :class="[quickIndex === indexq ? 'active' : '']"
  61. >{{ itemq.name }}</a
  62. >
  63. <span
  64. class="border"
  65. :class="[
  66. indexq !== quickList.length - 1 &&
  67. quickIndex !== indexq &&
  68. quickIndex - 1 !== indexq
  69. ? ''
  70. : 'border-no',
  71. ]"
  72. ></span>
  73. </li>
  74. </ul>
  75. <el-button
  76. type="primary"
  77. size="small"
  78. @click="handleExport()"
  79. :loading="exportLoading"
  80. v-if="exportFlag"
  81. >导出报表</el-button
  82. >
  83. </div>
  84. <div class="proceeds-box">
  85. <div>
  86. <h6>
  87. 收款<span>({{ total_count }}单)</span>
  88. </h6>
  89. <label v-if="proceedsPriceArr.length == 2"
  90. >¥{{ proceedsPriceArr[0] }}.<b>{{ proceedsPriceArr[1] }}</b
  91. ><span>元</span></label
  92. >
  93. </div>
  94. <div>
  95. <h6>退款</h6>
  96. <label v-if="refundPriceArr.length == 2"
  97. >¥{{ refundPriceArr[0] }}.<b>{{ refundPriceArr[1] }}</b
  98. ><span>元</span></label
  99. >
  100. </div>
  101. </div>
  102. <div class="search-box">
  103. <div class="search-item">
  104. <label>搜索</label>
  105. <el-input
  106. placeholder="商品名称/用户名/单号/手机号"
  107. v-model="searchInput"
  108. maxlength="200"
  109. >
  110. <i
  111. slot="suffix"
  112. class="el-input__icon el-icon-search"
  113. @click="getList(1)"
  114. style="cursor: pointer"
  115. ></i>
  116. </el-input>
  117. </div>
  118. <div class="search-item" v-if="isPhone">
  119. <label>交易时间</label>
  120. <el-date-picker
  121. v-model="validityStart"
  122. type="date"
  123. size="small"
  124. placeholder="开始日期"
  125. value-format="yyyy-MM-dd"
  126. @change="
  127. quickIndex = null;
  128. getList(1);
  129. "
  130. >
  131. </el-date-picker>
  132. <el-date-picker
  133. v-model="validityEnd"
  134. type="date"
  135. size="small"
  136. placeholder="结束日期"
  137. value-format="yyyy-MM-dd"
  138. @change="
  139. quickIndex = null;
  140. getList(1);
  141. "
  142. >
  143. </el-date-picker>
  144. </div>
  145. <div class="search-item" v-else>
  146. <label>交易时间</label>
  147. <el-date-picker
  148. v-model="validity"
  149. type="daterange"
  150. size="small"
  151. range-separator="-"
  152. start-placeholder="开始日期"
  153. end-placeholder="结束日期"
  154. value-format="yyyy-MM-dd"
  155. @change="
  156. quickIndex = null;
  157. getList(1);
  158. "
  159. >
  160. </el-date-picker>
  161. </div>
  162. <div class="search-item">
  163. <label>学段</label>
  164. <el-select
  165. v-model="searchStudy"
  166. @change="getList(1)"
  167. placeholder="请选择"
  168. >
  169. <el-option
  170. v-for="item in $studyTypeAll"
  171. :key="item.study_phase"
  172. :label="item.study_phase_name"
  173. :value="item.study_phase"
  174. >
  175. </el-option>
  176. </el-select>
  177. </div>
  178. <div class="search-item">
  179. <label>商品类型</label>
  180. <el-select
  181. v-model="searchGoodsType"
  182. @change="getList(1)"
  183. placeholder="请选择"
  184. >
  185. <el-option
  186. v-for="item in goodsTypeList"
  187. :key="item.value"
  188. :label="item.goods_name"
  189. :value="item.value"
  190. >
  191. </el-option>
  192. </el-select>
  193. </div>
  194. <div class="search-item">
  195. <label>是否使用兑换码</label>
  196. <el-select
  197. v-model="searchIsCDKEY"
  198. @change="getList(1)"
  199. placeholder="请选择"
  200. >
  201. <el-option
  202. v-for="item in isCDKEYList"
  203. :key="item.value"
  204. :label="item.label"
  205. :value="item.value"
  206. >
  207. </el-option>
  208. </el-select>
  209. </div>
  210. <div class="search-item">
  211. <label>交易状态</label>
  212. <el-select
  213. v-model="searchStatus"
  214. @change="getList(1)"
  215. placeholder="请选择"
  216. >
  217. <el-option
  218. v-for="item in transactionList"
  219. :key="item.status"
  220. :label="item.status_name"
  221. :value="item.status"
  222. >
  223. </el-option>
  224. </el-select>
  225. </div>
  226. <div class="search-item">
  227. <label>客户所在机构</label>
  228. <el-select
  229. v-model="searchOrgid"
  230. @change="getList(1)"
  231. placeholder="请选择"
  232. >
  233. <el-option
  234. v-for="item in orgList"
  235. :key="item.id"
  236. :label="item.name"
  237. :value="item.id"
  238. >
  239. </el-option>
  240. </el-select>
  241. </div>
  242. <div class="search-item">
  243. <label>客户所在省市</label>
  244. <el-cascader
  245. size="medium"
  246. :options="$provinceCityListAll"
  247. v-model="searchArea"
  248. :props="props"
  249. collapse-tags
  250. clearable
  251. @change="getList(1)"
  252. >
  253. </el-cascader>
  254. </div>
  255. <div class="search-item">
  256. <label>支付渠道</label>
  257. <el-select
  258. v-model="searchChannel"
  259. @change="getList(1)"
  260. placeholder="请选择"
  261. >
  262. <el-option
  263. v-for="item in channelList"
  264. :key="item.value"
  265. :label="item.label"
  266. :value="item.value"
  267. >
  268. </el-option>
  269. </el-select>
  270. </div>
  271. </div>
  272. </template>
  273. <el-table
  274. class="search-table"
  275. :data="tableData"
  276. style="width: 100%"
  277. @sort-change="handleSort"
  278. :default-sort="dataSort"
  279. v-loading="tableLoading"
  280. :max-height="isPhone ? 'auto' : tableHeight"
  281. >
  282. <el-table-column
  283. type="index"
  284. label="#"
  285. sortable
  286. width="54"
  287. :index="(pageNumber - 1) * pageSize + 1"
  288. >
  289. </el-table-column>
  290. <el-table-column
  291. prop="sn"
  292. label="交易单号"
  293. width="190"
  294. class-name="user-info"
  295. >
  296. </el-table-column>
  297. <el-table-column
  298. prop="pay_time"
  299. label="交易时间"
  300. sortable="custom"
  301. width="165"
  302. >
  303. </el-table-column>
  304. <el-table-column prop="name" label="购买商品" min-width="220">
  305. </el-table-column>
  306. <el-table-column prop="goods_type" label="商品类型" width="128">
  307. <template slot-scope="scope">
  308. <span
  309. class="items-type"
  310. :style="{
  311. background: goodsTypeListCss[scope.row.goods_type]
  312. ? goodsTypeListCss[scope.row.goods_type].bg
  313. : '',
  314. color: goodsTypeListCss[scope.row.goods_type]
  315. ? goodsTypeListCss[scope.row.goods_type].color
  316. : '',
  317. }"
  318. >{{ scope.row.goods_type_name }}</span
  319. >
  320. </template>
  321. </el-table-column>
  322. <el-table-column prop="is_reservation" label="是否预定" width="80">
  323. <template slot-scope="scope">
  324. {{ scope.row.is_reservation === "true" ? "是" : "否" }}
  325. </template>
  326. </el-table-column>
  327. <el-table-column label="自动升学" width="80">
  328. <template slot-scope="scope">
  329. <span>{{
  330. scope.row.is_reservation === "true"
  331. ? scope.row.is_auto_adjust_study_phase === "true"
  332. ? "是"
  333. : "否"
  334. : ""
  335. }}</span>
  336. </template>
  337. </el-table-column>
  338. <el-table-column
  339. prop="goods_study_phase_name"
  340. label="学段"
  341. width="64"
  342. >
  343. </el-table-column>
  344. <el-table-column prop="goods_price" label="价格" width="140">
  345. <template slot-scope="scope">
  346. <span class="currectPrice"
  347. >¥{{ scope.row.goods_price_discount | cutMoneyFiter }}</span
  348. >
  349. <span
  350. class="oldPrice"
  351. v-if="
  352. scope.row.goods_price !== scope.row.goods_price_discount
  353. "
  354. >(¥{{ scope.row.goods_price | cutMoneyFiter }})</span
  355. >
  356. </template>
  357. </el-table-column>
  358. <el-table-column prop="discount_code" label="兑换码" width="194">
  359. <template slot-scope="scope">
  360. <template v-if="scope.row.is_use_discount_code == 'false'">
  361. 未使用
  362. </template>
  363. <template v-else>
  364. <template v-if="scope.row.discount_code">
  365. <span
  366. class="code"
  367. :id="'copy-' + scope.row.discount_code"
  368. >{{ scope.row.discount_code }}</span
  369. >
  370. <svg-icon
  371. icon-class="copy"
  372. class="copy"
  373. @click="
  374. CopyToClipboard('copy-' + scope.row.discount_code)
  375. "
  376. ></svg-icon>
  377. </template>
  378. <template v-else> - </template>
  379. </template>
  380. </template>
  381. </el-table-column>
  382. <el-table-column prop="order_amount" label="支付金额" width="104">
  383. <template slot-scope="scope">
  384. <span class="currectPrice"
  385. >¥{{ scope.row.order_amount | cutMoneyFiter }}</span
  386. >
  387. </template>
  388. </el-table-column>
  389. <el-table-column prop="pay_type_name" label="支付渠道" width="104">
  390. </el-table-column>
  391. <el-table-column prop="transaction_sn" label="支付流水" width="260">
  392. </el-table-column>
  393. <el-table-column
  394. prop="person_name"
  395. label="购买者"
  396. sortable="custom"
  397. width="109"
  398. >
  399. </el-table-column>
  400. <el-table-column prop="person_user_name" label="用户名" width="109">
  401. </el-table-column>
  402. <el-table-column prop="person_phone" label="手机号" width="109">
  403. </el-table-column>
  404. <el-table-column
  405. prop="person_city_name"
  406. label="客户所在省市"
  407. width="164"
  408. >
  409. <template slot-scope="scope">
  410. {{
  411. scope.row.person_province_name +
  412. "/" +
  413. scope.row.person_city_name
  414. }}
  415. </template>
  416. </el-table-column>
  417. <el-table-column
  418. prop="person_org_name"
  419. label="客户所在机构"
  420. sortable="custom"
  421. width="200"
  422. >
  423. </el-table-column>
  424. <el-table-column prop="order_status" label="交易状态" width="112">
  425. <template slot-scope="scope">
  426. <div class="status-box">
  427. <span
  428. :style="{
  429. background: transactionListCss[scope.row.order_status]
  430. ? transactionListCss[scope.row.order_status].bg
  431. : '',
  432. }"
  433. ></span>
  434. <b>{{
  435. transactionListCss[scope.row.order_status]
  436. ? transactionListCss[scope.row.order_status].text
  437. : "-"
  438. }}</b>
  439. </div>
  440. </template>
  441. </el-table-column>
  442. <el-table-column
  443. prop="refund_apply_status"
  444. label="退款申请状态"
  445. width="112"
  446. >
  447. <template
  448. slot-scope="scope"
  449. v-if="scope.row.is_has_refund_apply === 'true'"
  450. >
  451. <div class="status-box">
  452. <span
  453. :style="{
  454. background:
  455. refundStatusList[scope.row.refund_apply_status].bg,
  456. }"
  457. ></span>
  458. <b
  459. :style="{
  460. color:
  461. refundStatusList[scope.row.refund_apply_status]
  462. .textColor,
  463. }"
  464. >{{
  465. refundStatusList[scope.row.refund_apply_status].text
  466. }}</b
  467. >
  468. </div>
  469. </template>
  470. </el-table-column>
  471. <el-table-column
  472. prop="refund_apply_submit_time"
  473. label="退款申请提交时间"
  474. width="180"
  475. >
  476. </el-table-column>
  477. <el-table-column prop="refund_amount" label="退款金额" width="144">
  478. <template
  479. slot-scope="scope"
  480. v-if="scope.row.refund_apply_status === 2"
  481. >
  482. <span class="currectPrice"
  483. >¥{{ scope.row.refund_amount | cutMoneyFiter }}</span
  484. >
  485. </template>
  486. </el-table-column>
  487. <el-table-column
  488. prop="refund_transaction_sn"
  489. label="退款交易流水号"
  490. width="260"
  491. >
  492. </el-table-column>
  493. <el-table-column
  494. fixed="right"
  495. label="操作"
  496. :width="isPhone ? '50' : '130'"
  497. >
  498. <template slot-scope="scope">
  499. <template v-if="isPhone">
  500. <el-dropdown
  501. trigger="click"
  502. v-if="scope.row.is_use_discount_code == 'false'"
  503. >
  504. <span class="el-dropdown-link">
  505. <svg-icon
  506. icon-class="operate"
  507. class="el-dropdown-link"
  508. ></svg-icon>
  509. </span>
  510. <el-dropdown-menu slot="dropdown">
  511. <el-dropdown-item
  512. @click.native.prevent="
  513. handleRefund(scope.row, scope.$index)
  514. "
  515. v-if="scope.row.is_use_discount_code == 'false'"
  516. >退款</el-dropdown-item
  517. >
  518. <el-dropdown-item
  519. @click.native.prevent="
  520. handleLookInfo(scope.row, scope.$index)
  521. "
  522. >查看</el-dropdown-item
  523. >
  524. <el-dropdown-item
  525. @click.native.prevent="
  526. handleEditInfo(scope.row, scope.$index)
  527. "
  528. v-if="scope.row.is_reservation === 'true'"
  529. >修改</el-dropdown-item
  530. >
  531. </el-dropdown-menu>
  532. </el-dropdown>
  533. </template>
  534. <template v-else>
  535. <el-button
  536. type="text"
  537. size="small"
  538. class="red-btn"
  539. @click.native.prevent="
  540. handleRefund(scope.row, scope.$index)
  541. "
  542. v-if="scope.row.is_use_discount_code == 'false'"
  543. >
  544. 退款
  545. </el-button>
  546. <el-button
  547. type="text"
  548. size="small"
  549. class="primary-btn"
  550. @click.native.prevent="
  551. handleLookInfo(scope.row, scope.$index)
  552. "
  553. >
  554. 查看
  555. </el-button>
  556. <el-button
  557. type="text"
  558. size="small"
  559. class="primary-btn"
  560. @click.native.prevent="
  561. handleEditInfo(scope.row, scope.$index)
  562. "
  563. v-if="scope.row.is_reservation === 'true'"
  564. >
  565. 修改
  566. </el-button>
  567. <!-- <el-button
  568. @click.native.prevent="handleUp(scope.row, scope.$index)"
  569. type="text"
  570. size="small"
  571. class="red-btn"
  572. v-if="scope.row.order_status === 2"
  573. >
  574. 撤回
  575. </el-button> -->
  576. <!-- <el-button
  577. type="text"
  578. size="small"
  579. class="gray-btn"
  580. v-if="scope.row.order_status === 3"
  581. >
  582. 已退款
  583. </el-button>
  584. <el-button
  585. type="text"
  586. size="small"
  587. class="gray-btn"
  588. v-if="scope.row.order_status === 4"
  589. >
  590. 已撤回
  591. </el-button> -->
  592. </template>
  593. </template>
  594. </el-table-column>
  595. </el-table>
  596. <el-pagination
  597. background
  598. @size-change="handleSizeChange"
  599. @current-change="handleCurrentChange"
  600. :current-page="pageNumber"
  601. :page-sizes="[10, 20, 30, 40]"
  602. :page-size="pageSize"
  603. :layout="
  604. isPhone
  605. ? 'total, prev, pager, next'
  606. : 'total, prev, pager, next, sizes, jumper'
  607. "
  608. :total="total_count"
  609. :small="isPhone"
  610. :pager-count="isPhone ? 5 : 7"
  611. >
  612. </el-pagination>
  613. </div>
  614. </div>
  615. </div>
  616. <el-dialog
  617. title="退款信息"
  618. :visible.sync="dialogVisible"
  619. :width="isPhone ? '100%' : '500px'"
  620. >
  621. <template v-if="ktjeInfo">
  622. <span style="margin-right: 5px">退款金额:</span>
  623. <el-input v-model="ktje" style="width: 150px"></el-input>
  624. <p>商品信息</p>
  625. <div class="item-info">
  626. <label>物品类型:</label><span>{{ ktjeInfo.goods_type_name }}</span>
  627. </div>
  628. <div class="item-info">
  629. <label>物品学段:</label
  630. ><span>{{ ktjeInfo.goods_study_phase_name }}</span>
  631. </div>
  632. <div class="item-info">
  633. <label>购买商品:</label><span>{{ ktjeInfo.name }}</span>
  634. </div>
  635. <div class="item-info">
  636. <label>订单金额:</label
  637. ><span>¥{{ ktjeInfo.order_amount | cutMoneyFiter }}</span>
  638. </div>
  639. <!-- 物品实体 -->
  640. <template v-if="ktjeInfo.order_sale_model === 0">
  641. <div
  642. class="item-info"
  643. v-if="ktjeInfo.is_reservation_order === 'true'"
  644. >
  645. <label>订阅期数:</label
  646. ><span>{{
  647. ktjeInfo.period_count === -1 ? "年刊" : ktjeInfo.period_count
  648. }}</span>
  649. </div>
  650. <div class="item-info">
  651. <label>订阅刊数:</label><span>{{ ktjeInfo.ks_reservation }}</span>
  652. </div>
  653. <div
  654. class="item-info"
  655. v-if="
  656. ktjeInfo.is_reservation_order === 'true' &&
  657. ktjeInfo.period_count !== -1
  658. "
  659. >
  660. <label>订阅列表:</label
  661. ><span>{{ ktjeInfo.issue_no_list_reservation.join("、") }}</span>
  662. </div>
  663. <div
  664. class="item-info"
  665. v-if="
  666. ktjeInfo.is_reservation_order === 'true' &&
  667. ktjeInfo.issue_no_list_my_goods.length > 0
  668. "
  669. >
  670. <label>已上架:</label
  671. ><span>{{ ktjeInfo.issue_no_list_my_goods.join("、") }}</span>
  672. </div>
  673. <div class="item-info">
  674. <label>已上架刊数:</label><span>{{ ktjeInfo.ks_my_goods }}</span>
  675. </div>
  676. <div
  677. class="item-info"
  678. v-if="
  679. ktjeInfo.is_reservation_order === 'true' &&
  680. ktjeInfo.period_count === -1
  681. "
  682. >
  683. <label>开始日期:</label
  684. ><span>{{ ktjeInfo.valid_period_begin_date }}</span>
  685. </div>
  686. <div
  687. class="item-info"
  688. v-if="
  689. ktjeInfo.is_reservation_order === 'true' &&
  690. ktjeInfo.period_count === -1
  691. "
  692. >
  693. <label>截止日期:</label
  694. ><span>{{ ktjeInfo.valid_period_end_date }}</span>
  695. </div>
  696. <div
  697. class="item-info"
  698. v-if="
  699. ktjeInfo.is_reservation_order === 'true' &&
  700. ktjeInfo.period_count === -1
  701. "
  702. >
  703. <label>当前日期:</label><span>{{ ktjeInfo.cur_date }}</span>
  704. </div>
  705. </template>
  706. <!-- 使用期限 -->
  707. <template v-if="ktjeInfo.order_sale_model === 1">
  708. <div class="item-info">
  709. <label>订单日期:</label><span>{{ ktjeInfo.order_date }}</span>
  710. </div>
  711. <div class="item-info">
  712. <label>有效期天数:</label
  713. ><span>{{ ktjeInfo.valid_period_day_count }}</span>
  714. </div>
  715. <div class="item-info">
  716. <label>截止日期:</label
  717. ><span>{{ ktjeInfo.valid_period_end_date }}</span>
  718. </div>
  719. <div class="item-info">
  720. <label>当前日期:</label><span>{{ ktjeInfo.cur_date }}</span>
  721. </div>
  722. </template>
  723. </template>
  724. <span slot="footer" class="dialog-footer">
  725. <el-button size="small" @click="dialogVisible = false">取 消</el-button>
  726. <el-button size="small" type="primary" @click="sureRefund"
  727. >确 定</el-button
  728. >
  729. </span>
  730. </el-dialog>
  731. <el-dialog
  732. title="已上架物品列表"
  733. :visible.sync="shelveVisible"
  734. :width="isPhone ? '100%' : '500px'"
  735. v-if="orderInfo"
  736. >
  737. <el-table :data="goodsListShelve" style="width: 100%">
  738. <el-table-column type="index" label="#" width="54"> </el-table-column>
  739. <el-table-column prop="name" label="名称" width="200">
  740. </el-table-column>
  741. <el-table-column prop="issue_no" label="期号" width="60">
  742. </el-table-column>
  743. <el-table-column prop="study_phase_name" label="学段" width="60">
  744. </el-table-column>
  745. <el-table-column prop="type" label="商品类型">
  746. <template slot-scope="scope">
  747. <span
  748. class="items-type"
  749. :style="{
  750. background: goodsTypeListCss[scope.row.type]
  751. ? goodsTypeListCss[scope.row.type].bg
  752. : '',
  753. color: goodsTypeListCss[scope.row.type]
  754. ? goodsTypeListCss[scope.row.type].color
  755. : '',
  756. }"
  757. >{{ goodsTypeListCss[scope.row.type].text }}</span
  758. >
  759. </template>
  760. </el-table-column>
  761. </el-table>
  762. <template
  763. v-if="
  764. orderInfo.sale_model === 0 &&
  765. orderInfo.is_reservation === 'true' &&
  766. orderInfo.is_auto_adjust_study_phase === 'true'
  767. "
  768. >
  769. <h4>
  770. 年预定【{{
  771. orderInfo.is_auto_adjust_study_phase === "true"
  772. ? "自动升学"
  773. : "不自动升学"
  774. }}】
  775. </h4>
  776. <p>
  777. {{
  778. orderInfo.valid_period_1_study_phase_name +
  779. " &nbsp;&nbsp; " +
  780. orderInfo.valid_period_1_begin_date +
  781. " &nbsp;&nbsp;至&nbsp;&nbsp; " +
  782. orderInfo.valid_period_1_end_date
  783. }}
  784. </p>
  785. <p v-if="orderInfo.valid_period_2_study_phase !== 0">
  786. {{
  787. orderInfo.valid_period_2_study_phase_name +
  788. " &nbsp;&nbsp; " +
  789. orderInfo.valid_period_2_begin_date +
  790. " &nbsp;&nbsp;至&nbsp;&nbsp; " +
  791. orderInfo.valid_period_2_end_date
  792. }}
  793. </p>
  794. </template>
  795. <span slot="footer" class="dialog-footer">
  796. <el-button size="small" type="primary" @click="shelveVisible = false"
  797. >确 定</el-button
  798. >
  799. </span>
  800. </el-dialog>
  801. <el-dialog
  802. title="修改"
  803. :visible.sync="editInfoFlag"
  804. :width="isPhone ? '100%' : '500px'"
  805. >
  806. <el-form :model="editInfo">
  807. <el-form-item label="自动升学">
  808. <el-radio-group v-model="editInfo.is_auto_adjust_study_phase">
  809. <el-radio label="false">否</el-radio>
  810. <el-radio label="true">是</el-radio>
  811. </el-radio-group>
  812. </el-form-item>
  813. </el-form>
  814. <span slot="footer" class="dialog-footer">
  815. <el-button size="small" @click="editInfoFlag = false">取 消</el-button>
  816. <el-button size="small" type="primary" @click="sureIsAuto"
  817. >确 定</el-button
  818. >
  819. </span>
  820. </el-dialog>
  821. </div>
  822. </template>
  823. <script>
  824. //这里可以导入其它文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
  825. //例如:import 《组件名称》from ‘《组件路径》';
  826. import Header from "../../components/Header.vue";
  827. import NavMenu from "../../components/NavMenu.vue";
  828. import Breadcrumb from "../../components/Breadcrumb.vue";
  829. import { getLogin } from "@/api/ajax";
  830. import { mapState } from "vuex";
  831. import { cutMoneyFiter } from "@/utils/defined";
  832. import { getToken } from "@/utils/auth";
  833. export default {
  834. //import引入的组件需要注入到对象中才能使用
  835. components: { Header, NavMenu, Breadcrumb },
  836. props: {},
  837. filters: {
  838. cutMoneyFiter,
  839. },
  840. data() {
  841. //这里存放数据
  842. return {
  843. activeMenuIndex: "flow_manage",
  844. breadcrumbList: [
  845. {
  846. icon: "money-cny-box-line",
  847. url: "",
  848. text: "",
  849. },
  850. {
  851. icon: "",
  852. url: "",
  853. notLink: true,
  854. text: "财务中心",
  855. },
  856. {
  857. icon: "",
  858. url: "",
  859. text: "交易管理",
  860. },
  861. ],
  862. quickList: [], // 快速查询
  863. searchInput: "",
  864. searchQuick: null,
  865. quickIndex: null, // 快速搜索的索引
  866. proceedsNumber: "", // 收款单数
  867. proceedsPrice: null, // 收款金额
  868. proceedsPriceArr: [],
  869. refundPriceArr: [],
  870. searchType: -1,
  871. validity: "",
  872. validityStart: "",
  873. validityEnd: "",
  874. searchStudy: -1,
  875. searchStatus: -1,
  876. searchGoodsType: -1,
  877. searchIsCDKEY: -1,
  878. searchOrgid: "",
  879. searchArea: [],
  880. searchChannel: -1,
  881. channelList: [
  882. {
  883. label: "全部",
  884. value: -1,
  885. },
  886. {
  887. label: "支付宝",
  888. value: 4,
  889. },
  890. {
  891. label: "微信支付",
  892. value: 3,
  893. },
  894. ],
  895. orgList: [
  896. {
  897. name: "全部",
  898. id: "",
  899. },
  900. ],
  901. isCDKEYList: [
  902. {
  903. label: "全部",
  904. value: -1,
  905. },
  906. {
  907. label: "已使用",
  908. value: 1,
  909. },
  910. {
  911. label: "未使用",
  912. value: 0,
  913. },
  914. ], // 是否使用兑换码
  915. transactionList: [
  916. {
  917. status_name: "全部",
  918. status: -1,
  919. },
  920. {
  921. status_name: "支付成功",
  922. status: 1,
  923. },
  924. {
  925. status_name: "兑换成功",
  926. status: 2,
  927. },
  928. {
  929. status_name: "已退款",
  930. status: 3,
  931. },
  932. {
  933. status_name: "已撤回",
  934. status: 4,
  935. },
  936. ], //交易状态列表
  937. transactionListCss: {
  938. 0: {
  939. bg: "rgb(245, 63, 63)",
  940. text: "未支付",
  941. },
  942. 1: {
  943. bg: "#00B42A",
  944. text: "支付成功",
  945. },
  946. 2: {
  947. bg: "#165DFF",
  948. text: "兑换成功",
  949. },
  950. 3: {
  951. bg: "#F7BA1E",
  952. text: "已退款",
  953. },
  954. 4: {
  955. bg: "#FF7D00",
  956. text: "已撤回",
  957. },
  958. },
  959. goodsTypeList: [
  960. {
  961. goods_name: "全部",
  962. value: -1,
  963. },
  964. {
  965. goods_name: "报纸",
  966. value: 2,
  967. },
  968. {
  969. goods_name: "精读",
  970. value: 3,
  971. },
  972. {
  973. goods_name: "录播课",
  974. value: 0,
  975. },
  976. {
  977. goods_name: "画刊",
  978. value: 4,
  979. },
  980. ], // 商品类型
  981. goodsTypeListCss: {
  982. 2: {
  983. text: "报纸",
  984. color: "#165DFF",
  985. bg: "#E8F7FF",
  986. },
  987. 4: {
  988. text: "画刊",
  989. color: "#F53F3F",
  990. bg: "#FFECE8",
  991. },
  992. 3: {
  993. text: "精读",
  994. color: "#0FC6C2",
  995. bg: "#E8FFFB",
  996. },
  997. 0: {
  998. text: "课程",
  999. color: "#722ED1",
  1000. bg: "#F5E8FF",
  1001. },
  1002. 1: {
  1003. text: "课程",
  1004. color: "#722ED1",
  1005. bg: "#F5E8FF",
  1006. },
  1007. 10: {
  1008. text: "课程",
  1009. color: "#722ED1",
  1010. bg: "#F5E8FF",
  1011. },
  1012. // '5':{
  1013. // text:'报纸专辑',
  1014. // color:'#165DFF',
  1015. // bg:'#E8F7FF'
  1016. // },
  1017. // '6':{
  1018. // text:'画刊专辑',
  1019. // color:'#F53F3F',
  1020. // bg:'#FFECE8'
  1021. // }
  1022. },
  1023. typeList: [
  1024. {
  1025. account_type: -1,
  1026. account_type_name: "全部",
  1027. },
  1028. ],
  1029. statusList: {
  1030. 1: {
  1031. text: "正常",
  1032. bg: "#165DFF",
  1033. color: "",
  1034. },
  1035. 0: {
  1036. text: "停用",
  1037. bg: "#F53F3F",
  1038. color: "#F53F3F",
  1039. },
  1040. },
  1041. tableData: [],
  1042. pageSize: window.localStorage.getItem("pageSize")
  1043. ? Number(window.localStorage.getItem("pageSize"))
  1044. : 10,
  1045. pageNumber: window.localStorage.getItem("pageNumber")
  1046. ? Number(window.localStorage.getItem("pageNumber"))
  1047. : 1,
  1048. tableHeight: "", // 表格高度
  1049. total_count: 0,
  1050. dataSort: {},
  1051. props: { multiple: true },
  1052. tableLoading: false,
  1053. exportLoading: false,
  1054. exportFlag:
  1055. getToken() && JSON.parse(getToken())
  1056. ? JSON.parse(getToken()).popedom_code_list.indexOf(40002) > -1
  1057. : false,
  1058. refundStatusList: {
  1059. 2: {
  1060. text: "审核通过",
  1061. bg: "#00B42A",
  1062. textColor: "#1D2129",
  1063. },
  1064. 0: {
  1065. text: "待审核",
  1066. bg: "#165DFF",
  1067. textColor: "#1D2129",
  1068. },
  1069. 1: {
  1070. text: "驳回",
  1071. bg: "#FF7D00",
  1072. textColor: "#1D2129",
  1073. },
  1074. },
  1075. dialogVisible: false,
  1076. ktje: 0,
  1077. refundId: "",
  1078. ktjeInfo: null,
  1079. isPhone: false,
  1080. showSearch: true,
  1081. goodsListShelve: [], // 已上架物品列表
  1082. orderInfo: null, // 订单详情
  1083. shelveVisible: false,
  1084. editInfoFlag: false,
  1085. editInfo: {
  1086. is_auto_adjust_study_phase: "false",
  1087. },
  1088. };
  1089. },
  1090. //计算属性 类似于data概念
  1091. computed: {
  1092. ...mapState(["$studyTypeAll", "$provinceCityListAll"]),
  1093. },
  1094. //监控data中数据变化
  1095. watch: {},
  1096. //方法集合
  1097. methods: {
  1098. qucikSearch(value, index) {
  1099. if (this.isPhone) {
  1100. this.validityStart = value.date_begin;
  1101. this.validityEnd = value.date_end;
  1102. } else {
  1103. this.validity = [value.date_begin, value.date_end];
  1104. }
  1105. this.quickIndex = index;
  1106. this.getList();
  1107. },
  1108. handleSort(value) {
  1109. let dataSort = {
  1110. prop: value.prop,
  1111. order: value.order,
  1112. };
  1113. this.dataSort = dataSort;
  1114. this.getList();
  1115. },
  1116. // 查询列表
  1117. getList(page) {
  1118. this.tableLoading = true;
  1119. if (page) {
  1120. this.pageNumber = page;
  1121. }
  1122. let MethodName = "/ShopServer/Manager/FinanceManager/PageQueryOrderList";
  1123. let order_column_list = [];
  1124. if (this.dataSort != {}) {
  1125. if (this.dataSort.order == "descending") {
  1126. order_column_list = [this.dataSort.prop + ":desc"];
  1127. } else if (this.dataSort.order == "ascending") {
  1128. // 升序不传值
  1129. order_column_list = [this.dataSort.prop];
  1130. } else {
  1131. order_column_list = ["order_time:desc"]; //用pay_time的话有未支付的订单会排在最前面
  1132. }
  1133. } else {
  1134. order_column_list = ["order_time:desc"];
  1135. }
  1136. let province_id_list = null;
  1137. let city_id_list = [];
  1138. if (this.searchArea.length > 0) {
  1139. if (this.searchArea[0][0] && this.searchArea[0][0] === "0") {
  1140. province_id_list = "-1";
  1141. } else {
  1142. province_id_list = [];
  1143. this.searchArea.forEach((item) => {
  1144. if (province_id_list.indexOf(item[0]) === -1) {
  1145. province_id_list.push(item[0]);
  1146. }
  1147. city_id_list.push(item[1] ? item[1] : "");
  1148. });
  1149. }
  1150. }
  1151. let data = {
  1152. content: this.searchInput.trim(),
  1153. page_capacity: this.pageSize,
  1154. cur_page: this.pageNumber,
  1155. order_column_list: order_column_list,
  1156. pay_status: 1,
  1157. order_status: this.searchStatus,
  1158. pay_date_begin: this.isPhone
  1159. ? this.validityStart
  1160. : this.validity
  1161. ? this.validity[0]
  1162. : "",
  1163. pay_date_end: this.isPhone
  1164. ? this.validityEnd
  1165. : this.validity
  1166. ? this.validity[1]
  1167. : "",
  1168. goods_study_phase: this.searchStudy,
  1169. goods_type: this.searchGoodsType,
  1170. discount_code_use_status: this.searchIsCDKEY,
  1171. person_org_id_list: this.searchOrgid ? [this.searchOrgid] : null,
  1172. person_province_city_id_list: city_id_list,
  1173. pay_type: this.searchChannel,
  1174. };
  1175. getLogin(MethodName, data)
  1176. .then((res) => {
  1177. this.tableLoading = false;
  1178. if (res.status === 1) {
  1179. this.tableData = res.order_list;
  1180. this.total_count = res.total_count;
  1181. this.proceedsPriceArr = cutMoneyFiter(
  1182. res.sum_info.order_amount
  1183. ).split(".");
  1184. this.refundPriceArr = cutMoneyFiter(
  1185. res.sum_info.refund_amount
  1186. ).split(".");
  1187. }
  1188. })
  1189. .catch(() => {
  1190. this.tableLoading = false;
  1191. });
  1192. },
  1193. // 导出报表
  1194. handleExport() {
  1195. let _this = this;
  1196. _this.exportLoading = true;
  1197. let MethodName =
  1198. "/ShopServer/Manager/FinanceManager/StartCreateOrderExportFile";
  1199. let order_column_list = [];
  1200. if (this.dataSort != {}) {
  1201. if (this.dataSort.order == "descending") {
  1202. order_column_list = [this.dataSort.prop + ":desc"];
  1203. } else if (this.dataSort.order == "ascending") {
  1204. // 升序不传值
  1205. order_column_list = [this.dataSort.prop];
  1206. } else {
  1207. order_column_list = ["create_time:desc"];
  1208. }
  1209. } else {
  1210. order_column_list = ["create_time:desc"];
  1211. }
  1212. let province_id_list = null;
  1213. let city_id_list = [];
  1214. if (this.searchArea.length > 0) {
  1215. if (this.searchArea[0][0] && this.searchArea[0][0] === "0") {
  1216. province_id_list = "-1";
  1217. } else {
  1218. province_id_list = [];
  1219. this.searchArea.forEach((item) => {
  1220. if (province_id_list.indexOf(item[0]) === -1) {
  1221. province_id_list.push(item[0]);
  1222. }
  1223. city_id_list.push(item[1] ? item[1] : "");
  1224. });
  1225. }
  1226. }
  1227. let data = {
  1228. content: this.searchInput.trim(),
  1229. page_capacity: this.pageSize,
  1230. cur_page: this.pageNumber,
  1231. order_column_list: order_column_list,
  1232. pay_status: 1,
  1233. order_status: this.searchStatus,
  1234. pay_date_begin: this.isPhone
  1235. ? this.validityStart
  1236. : this.validity
  1237. ? this.validity[0]
  1238. : "",
  1239. pay_date_end: this.isPhone
  1240. ? this.validityEnd
  1241. : this.validity
  1242. ? this.validity[1]
  1243. : "",
  1244. goods_study_phase: this.searchStudy,
  1245. goods_type: this.searchGoodsType,
  1246. discount_code_use_status: this.searchIsCDKEY,
  1247. person_org_id_list: this.searchOrgid ? [this.searchOrgid] : null,
  1248. person_province_city_id_list: city_id_list,
  1249. pay_type: this.searchChannel,
  1250. };
  1251. getLogin(MethodName, data)
  1252. .then((res) => {
  1253. let MethodName2 =
  1254. "/ShopServer/Manager/FinanceManager/GetOrderExportFileTaskProgress";
  1255. let timer = setInterval(() => {
  1256. getLogin(MethodName2, {
  1257. order_export_file_task_id: res.id,
  1258. })
  1259. .then((res) => {
  1260. if (res.is_finish === "true") {
  1261. clearInterval(timer);
  1262. timer = null;
  1263. _this.exportLoading = false;
  1264. location.href = res.order_export_file_url;
  1265. }
  1266. })
  1267. .catch((res) => {
  1268. this.loading = false;
  1269. });
  1270. }, 1000);
  1271. })
  1272. .catch((res) => {
  1273. this.loading = false;
  1274. });
  1275. },
  1276. // 停用 启用
  1277. handleUp(row, index) {
  1278. this.$confirm("确定撤回吗?", "提示", {
  1279. confirmButtonText: "确定",
  1280. cancelButtonText: "取消",
  1281. type: "warning",
  1282. }).then(() => {
  1283. let Mname = "/OrgServer/Manager/SysUserManager/EnableSysUser";
  1284. let updataData = JSON.parse(JSON.stringify(row));
  1285. let data = {
  1286. id: row.id,
  1287. };
  1288. if (row.status === 0) {
  1289. // 下架状态
  1290. data.is_enable = "true";
  1291. updataData.status = 1;
  1292. } else if (row.status === 1) {
  1293. data.is_enable = "false";
  1294. updataData.status = 0;
  1295. }
  1296. getLogin(Mname, data).then((res) => {
  1297. this.$message.success("操作成功");
  1298. this.$set(this.tableData, index, updataData);
  1299. });
  1300. });
  1301. },
  1302. handleSizeChange(val) {
  1303. this.pageSize = val;
  1304. this.pageNumber = 1;
  1305. this.getList();
  1306. },
  1307. handleCurrentChange(val) {
  1308. this.pageNumber = val;
  1309. this.getList();
  1310. },
  1311. //计算table高度(动态设置table高度)
  1312. getTableHeight() {
  1313. let tableH = 570; //距离页面下方的高度
  1314. let tableHeightDetil = window.innerHeight - tableH;
  1315. if (tableHeightDetil <= 300) {
  1316. this.tableHeight = 300;
  1317. } else {
  1318. this.tableHeight = window.innerHeight - tableH;
  1319. }
  1320. },
  1321. // 用户类型列表
  1322. getOrgList() {
  1323. let MethodName = "/OrgServer/Client/OrgManager/GetOrgIndexList";
  1324. let data = {
  1325. name: "",
  1326. status: 1,
  1327. sn: "",
  1328. };
  1329. getLogin(MethodName, data)
  1330. .then((res) => {
  1331. if (res.status === 1) {
  1332. this.orgList = [
  1333. {
  1334. name: "全部",
  1335. id: "",
  1336. },
  1337. ];
  1338. this.orgList = this.orgList.concat(res.org_index_list);
  1339. }
  1340. })
  1341. .catch(() => {
  1342. this.loading = false;
  1343. });
  1344. },
  1345. // 快捷时间按钮列表
  1346. getQuickList() {
  1347. this.quickList = [];
  1348. let MethodName =
  1349. "/ShopServer/Manager/FinanceManager/GetQueryCritDateSpaceList";
  1350. let data = {};
  1351. getLogin(MethodName, data).then((res) => {
  1352. if (res.status === 1) {
  1353. this.quickList = res.date_space_list;
  1354. }
  1355. });
  1356. },
  1357. CopyToClipboard(element) {
  1358. var doc = document,
  1359. text = doc.getElementById(element),
  1360. range,
  1361. selection;
  1362. if (doc.body.createTextRange) {
  1363. range = doc.body.createTextRange();
  1364. range.moveToElementText(text);
  1365. range.select();
  1366. } else if (window.getSelection) {
  1367. selection = window.getSelection();
  1368. range = doc.createRange();
  1369. range.selectNodeContents(text);
  1370. selection.removeAllRanges();
  1371. selection.addRange(range);
  1372. }
  1373. document.execCommand("copy");
  1374. this.$message({
  1375. message: "复制成功",
  1376. type: "success",
  1377. });
  1378. window.getSelection().removeAllRanges();
  1379. },
  1380. // 退款
  1381. handleRefund(row, index) {
  1382. this.ktjeInfo = null;
  1383. let Mnames = "/ShopServer/Manager/FinanceManager/GetOrderInfo";
  1384. let datas = {
  1385. id: row.id,
  1386. };
  1387. getLogin(Mnames, datas).then((res) => {
  1388. if (res.status === 1) {
  1389. this.ktje = res.order_info.order_amount;
  1390. this.ktjeInfo = res.order_info;
  1391. this.refundId = row.id;
  1392. this.dialogVisible = true;
  1393. }
  1394. });
  1395. },
  1396. // 确定退款
  1397. sureRefund() {
  1398. this.$confirm("确定要退款吗?", "提示", {
  1399. confirmButtonText: "确定",
  1400. cancelButtonText: "取消",
  1401. type: "warning",
  1402. }).then(() => {
  1403. let Mname = "/ShopServer/Manager/FinanceManager/OrderRefund";
  1404. let data = {
  1405. id: this.refundId,
  1406. refund_amount: this.ktje,
  1407. };
  1408. getLogin(Mname, data).then((res) => {
  1409. this.$message.success("操作成功");
  1410. this.getList();
  1411. this.dialogVisible = false;
  1412. });
  1413. });
  1414. },
  1415. // 查看已上架物品
  1416. handleLookInfo(row, index) {
  1417. this.goodsListShelve = [];
  1418. this.orderInfo = null;
  1419. let Mnames = "/ShopServer/Manager/FinanceManager/GetOrderInfo";
  1420. let datas = {
  1421. id: row.id,
  1422. };
  1423. getLogin(Mnames, datas).then((res) => {
  1424. if (res.status === 1) {
  1425. this.goodsListShelve = res.goods_list_shelve;
  1426. this.orderInfo = res.order_info;
  1427. this.shelveVisible = true;
  1428. }
  1429. });
  1430. },
  1431. // 点击修改按钮
  1432. handleEditInfo(row) {
  1433. this.editInfo = {
  1434. is_auto_adjust_study_phase: row.is_auto_adjust_study_phase,
  1435. id: row.id,
  1436. };
  1437. this.editInfoFlag = true;
  1438. },
  1439. // 确定修改自动升学属性
  1440. sureIsAuto() {
  1441. let Mnames =
  1442. "ShopServer/Manager/FinanceManager/SetIsAutoAdjustStudayPhase_YearReservationOrder";
  1443. getLogin(Mnames, this.editInfo).then((res) => {
  1444. if (res.status === 1) {
  1445. this.$message.success("操作成功");
  1446. this.getList();
  1447. this.editInfoFlag = false;
  1448. }
  1449. });
  1450. },
  1451. },
  1452. //生命周期 - 创建完成(可以访问当前this实例)
  1453. created() {
  1454. const regExp = /Android|webOS|iPhone|BlackBerry|IEMobile|Opera Mini/i;
  1455. this.isPhone = regExp.test(navigator.userAgent) && window.innerWidth < 860;
  1456. if (this.isPhone) {
  1457. this.showSearch = false;
  1458. }
  1459. this.getTableHeight();
  1460. this.getQuickList();
  1461. this.getOrgList();
  1462. this.getList();
  1463. },
  1464. //生命周期 - 挂载完成(可以访问DOM元素)
  1465. mounted() {
  1466. let _this = this;
  1467. let input = document.querySelector("input");
  1468. input.addEventListener("keyup", function (event) {
  1469. // 判断是否按下回车键
  1470. if (event.keyCode === 13) {
  1471. // 回车键被按下,执行你想要的操作
  1472. _this.getList(1);
  1473. }
  1474. });
  1475. },
  1476. //生命周期-创建之前
  1477. beforeCreated() {},
  1478. //生命周期-挂载之前
  1479. beforeMount() {},
  1480. //生命周期-更新之前
  1481. beforUpdate() {},
  1482. //生命周期-更新之后
  1483. updated() {},
  1484. //生命周期-销毁之前
  1485. beforeDestory() {},
  1486. //生命周期-销毁完成
  1487. destoryed() {},
  1488. //如果页面有keep-alive缓存功能,这个函数会触发
  1489. activated() {},
  1490. };
  1491. </script>
  1492. <style lang="scss" scoped>
  1493. /* @import url(); 引入css类 */
  1494. .manage-root-contain-right-phone {
  1495. .personal-inner {
  1496. min-height: calc(100vh - 124px);
  1497. height: auto;
  1498. .common-title-box {
  1499. align-items: center;
  1500. span {
  1501. font-size: 14px;
  1502. }
  1503. }
  1504. .btn-box {
  1505. flex-flow: wrap;
  1506. gap: 5px;
  1507. margin-top: 10px;
  1508. }
  1509. .quick-search {
  1510. margin: 0 10px 0 0;
  1511. flex-flow: wrap;
  1512. }
  1513. .proceeds-box {
  1514. gap: 10px;
  1515. margin-top: 10px;
  1516. flex-flow: wrap;
  1517. }
  1518. .search-table {
  1519. margin-top: 10px;
  1520. }
  1521. .el-date-editor--date {
  1522. width: 50%;
  1523. }
  1524. }
  1525. }
  1526. </style>
  1527. <style lang="scss">
  1528. .btn-box {
  1529. display: flex;
  1530. }
  1531. .quick-search {
  1532. display: flex;
  1533. list-style: none;
  1534. padding: 3px;
  1535. margin: 0 24px;
  1536. align-items: center;
  1537. border-radius: 2px;
  1538. background: #f2f3f5;
  1539. li {
  1540. display: flex;
  1541. align-items: center;
  1542. a {
  1543. padding: 2px 12px;
  1544. color: #4e5969;
  1545. font-size: 14px;
  1546. font-weight: 400;
  1547. line-height: 22px;
  1548. border-radius: 2px;
  1549. cursor: pointer;
  1550. &.active {
  1551. background: #fff;
  1552. color: #165dff;
  1553. font-weight: 500;
  1554. }
  1555. }
  1556. span {
  1557. height: 14px;
  1558. width: 1px;
  1559. background: #e5e6eb;
  1560. &.border-no {
  1561. background: #f2f3f5;
  1562. }
  1563. }
  1564. }
  1565. }
  1566. .proceeds-box {
  1567. border-radius: 2px;
  1568. background: #f7f8fa;
  1569. padding: 16px;
  1570. margin-top: 24px;
  1571. display: flex;
  1572. width: 100%;
  1573. gap: 40px;
  1574. h6 {
  1575. color: #1d2129;
  1576. font-size: 16px;
  1577. font-weight: 400;
  1578. line-height: 22px;
  1579. margin: 0 0 8px 0;
  1580. span {
  1581. color: #86909c;
  1582. font-size: 12px;
  1583. font-weight: 400;
  1584. line-height: 20px;
  1585. }
  1586. }
  1587. label {
  1588. color: #1d2129;
  1589. font-size: 22px;
  1590. font-weight: 700;
  1591. line-height: 24px;
  1592. b {
  1593. font-size: 14px;
  1594. font-weight: 700;
  1595. line-height: 24px;
  1596. }
  1597. span {
  1598. color: #4e5969;
  1599. font-size: 12px;
  1600. font-weight: 400;
  1601. line-height: 20px;
  1602. }
  1603. }
  1604. }
  1605. .el-range-editor--small .el-range-input {
  1606. background: #f2f3f5;
  1607. }
  1608. .search-item {
  1609. margin-bottom: 20px;
  1610. }
  1611. .search-table {
  1612. margin-top: 0;
  1613. }
  1614. .items-type {
  1615. padding: 1px 8px;
  1616. font-weight: 500;
  1617. font-size: 14px;
  1618. line-height: 22px;
  1619. border-radius: 2px;
  1620. }
  1621. .code {
  1622. color: #175dff;
  1623. }
  1624. .copy {
  1625. color: #c9cdd4;
  1626. margin-left: 8px;
  1627. cursor: pointer;
  1628. }
  1629. </style>