FlowManage.vue 46 KB

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