orders.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786
  1. <template>
  2. <div id="cloud-balance">
  3. <section class="top">
  4. <!-- <h3>交易订单中心</h3> -->
  5. <section>
  6. <div class="type-boxs">
  7. <span class="vsub">订单类型:</span>
  8. <div class="inlineb">
  9. <el-checkbox-group v-model="orderType" @change="changeOrder" size="mini">
  10. <el-checkbox-button v-for="itm in TypeList" :label="itm.id" :key="itm.id">{{itm.type}}</el-checkbox-button>
  11. </el-checkbox-group>
  12. </div>
  13. <div class="inlineb vsub">
  14. <span>交易类型:</span>
  15. <el-select v-model="status" placeholder="交易类型">
  16. <el-option
  17. v-for="item of jobStatusList"
  18. :key="item.id"
  19. :label="item.name"
  20. :value="item.id"
  21. ></el-option>
  22. </el-select>
  23. </div>
  24. </div>
  25. <!-- <div class="type-boxs">
  26. <span class="vsub">交易类型:</span>
  27. <div class="inlineb">
  28. <el-checkbox-group v-model="tradeType" @change="changeTrade" size="mini">
  29. <el-checkbox-button
  30. v-for="itm in tradeList"
  31. :label="itm.id"
  32. :key="itm.id"
  33. >{{itm.type}}</el-checkbox-button>
  34. </el-checkbox-group>
  35. </div>
  36. </div>-->
  37. <div class="type-boxs">
  38. <span class="vsub">支付方式:</span>
  39. <div class="inlineb">
  40. <el-checkbox-group v-model="payType" @change="changePay" size="mini">
  41. <el-checkbox-button v-for="itm in payList" :label="itm.id" :key="itm.id">{{itm.type}}</el-checkbox-button>
  42. </el-checkbox-group>
  43. </div>
  44. </div>
  45. <div class="type-boxs">
  46. <div class="inlineb">
  47. <span class>时间范围:</span>
  48. <el-date-picker
  49. v-model="timeRange"
  50. type="daterange"
  51. align="right"
  52. unlink-panels
  53. range-separator="到"
  54. start-placeholder="开始日期"
  55. end-placeholder="结束日期"
  56. :picker-options="pickerOptions2"
  57. ></el-date-picker>
  58. </div>
  59. <div class="inlineb">
  60. <span class>时间类型:</span>
  61. <el-select v-model="timeType" placeholder="请选择">
  62. <el-option
  63. v-for="item in timeOptions"
  64. :key="item.value"
  65. :label="item.label"
  66. :value="item.value"
  67. ></el-option>
  68. </el-select>
  69. </div>
  70. <div class="inlineb">
  71. <span class>状态:</span>
  72. <div class="inlineb">
  73. <el-select v-model="status" placeholder="项目状态">
  74. <el-option
  75. v-for="item of jobStatusList"
  76. :key="item.id"
  77. :label="item.name"
  78. :value="item.id"
  79. ></el-option>
  80. </el-select>
  81. </div>
  82. </div>
  83. <el-checkbox v-model="checked">人工财务</el-checkbox>
  84. </div>
  85. <div class="type-boxs">
  86. <div class="inlineb">
  87. <span class>编号:</span>
  88. <div class="inlineb">
  89. <el-input style="width: 230px;" v-model="searchId" placeholder="订单编号/订单名称/支付编号"></el-input>
  90. </div>
  91. </div>
  92. <div class="inlineb">
  93. <span class>用户:</span>
  94. <div class="inlineb">
  95. <el-input style="width: 180px;" v-model="checkUser" placeholder="uid/昵称/姓名"></el-input>
  96. </div>
  97. </div>
  98. <div class="inlineb">
  99. <span class>项目:</span>
  100. <div class="inlineb">
  101. <el-select v-model="status" placeholder="项目状态">
  102. <el-option
  103. v-for="item of jobStatusList"
  104. :key="item.id"
  105. :label="item.name"
  106. :value="item.id"
  107. ></el-option>
  108. </el-select>
  109. </div>
  110. <div class="inlineb">
  111. <el-input style="width: 100px;" v-model="checkUser" placeholder="项目ID"></el-input>
  112. </div>
  113. </div>
  114. <el-button type="primary">筛选</el-button>
  115. <el-button>导出报表</el-button>
  116. </div>
  117. <div class="type-boxs">
  118. <div>
  119. <span>订单数量:34000(成功31203),</span>
  120. <span>
  121. 收入金额:
  122. <span class="green">120334元(成功123220元)</span>
  123. </span>
  124. ,
  125. <span>
  126. 支出金额:
  127. <span class="orange">134953元(成功12342元)</span>
  128. </span>
  129. </div>
  130. </div>
  131. </section>
  132. </section>
  133. <!-- <section class="selector-box">
  134. <section class="selector-box-left">
  135. <el-select v-model="status" placeholder="项目状态">
  136. <el-option
  137. v-for="item of jobStatusList"
  138. :key="item.id"
  139. :label="item.name"
  140. :value="item.id"
  141. ></el-option>
  142. </el-select>
  143. <el-select v-model="period" placeholder="账单状态">
  144. <el-option
  145. v-for="item of periodStatusList"
  146. :key="item.id"
  147. :label="item.name"
  148. :value="item.id"
  149. ></el-option>
  150. </el-select>
  151. <el-input style="width: 200px;" v-model="checkUser" placeholder="负责人"></el-input>
  152. <el-input style="width: 200px;" v-model="jobID" placeholder="项目ID"></el-input>
  153. <el-button @click="clickSearchConfirm">确认</el-button>
  154. </section>
  155. <el-button @click="clickExport" type="primary">导出</el-button>
  156. </section>-->
  157. <div class>
  158. <!-- height="250" -->
  159. <el-table :data="tableData3" border style="width: 100%">
  160. <el-table-column prop="date" label="订单名称"></el-table-column>
  161. <el-table-column prop="name" label="用户"></el-table-column>
  162. <el-table-column label="实际金额">
  163. <template slot-scope="scope">
  164. <span :class="parseInt(scope.row.money)>0?'green':'orange'">{{scope.row.money}}</span>
  165. </template>
  166. </el-table-column>
  167. <el-table-column prop="name" label="支付方式"></el-table-column>
  168. <el-table-column prop="name" label="订单状态"></el-table-column>
  169. <el-table-column prop="name" label="创建时间"></el-table-column>
  170. <el-table-column prop="name" label="到账时间"></el-table-column>
  171. <el-table-column prop="name" label="订单编号"></el-table-column>
  172. <el-table-column prop="name" label="支付编号"></el-table-column>
  173. <el-table-column prop="name" width="100" label="订单类型">
  174. <template slot-scope="scope">
  175. <span v-if="scope.row.state==1" class="state-success state-border">成功</span>
  176. <span v-if="scope.row.state==2" class="state-wait state-border">待提交</span>
  177. <span v-if="scope.row.state==3" class="state-load state-border">提交中</span>
  178. <span v-if="scope.row.state==4" class="state-faile state-border">失败</span>
  179. </template>
  180. </el-table-column>
  181. <el-table-column prop="name" label="交易类型"></el-table-column>
  182. <el-table-column prop="name" label="关联项目"></el-table-column>
  183. <el-table-column prop="name" label="人工"></el-table-column>
  184. </el-table>
  185. </div>
  186. <div class="order-footer">
  187. <el-pagination
  188. background
  189. @current-change="getTableData"
  190. @size-change="changePageSize"
  191. :current-page.sync="currentPage"
  192. :page-sizes="[10, 20, 30, 40]"
  193. :page-size="20"
  194. layout="total, sizes, prev, pager, next, jumper"
  195. :total="totalCount"
  196. ></el-pagination>
  197. </div>
  198. </div>
  199. </template>
  200. <script>
  201. const tableHeaders = [
  202. "项目ID",
  203. "核定价格",
  204. "托管费用",
  205. "押金",
  206. "次月托管",
  207. "结算周期",
  208. "结算金额",
  209. "退回金额",
  210. "预计发薪",
  211. "发薪日期",
  212. "状态",
  213. "负责人",
  214. "操作",
  215. "备注",
  216. "项目状态",
  217. "账单ID",
  218. "企业方",
  219. "开发者",
  220. "试用天数"
  221. ];
  222. const tableProps = [
  223. "job_id",
  224. "salary",
  225. "company_pay",
  226. "p_company_deposit",
  227. "next_period_pay",
  228. "payAround",
  229. "pay_to_dev",
  230. "return_money",
  231. "pre_send_salary_timeShow", //
  232. "send_salary_time",
  233. "p_status_name",
  234. "chk_user",
  235. "operate",
  236. "settle_msg",
  237. "j_status_name",
  238. "id",
  239. "company",
  240. "dev_realname",
  241. "probation_days"
  242. ];
  243. const tableWidths = [
  244. "80",
  245. "80",
  246. "100",
  247. "80",
  248. "100",
  249. "120",
  250. "80",
  251. "80",
  252. "90",
  253. "80",
  254. "80",
  255. "100",
  256. "80",
  257. "180",
  258. "80",
  259. "80",
  260. "100",
  261. "100",
  262. "80"
  263. ];
  264. export default {
  265. data() {
  266. return {
  267. checked: false,
  268. orderType: [0],
  269. tradeType: [0],
  270. payType: [0],
  271. timeType: 1,
  272. timeOptions: [
  273. {
  274. value: 1,
  275. label: "到帐时间"
  276. },
  277. {
  278. value: 2,
  279. label: "创建时间"
  280. }
  281. ],
  282. TypeList: [
  283. {
  284. id: 0,
  285. type: "全部"
  286. },
  287. {
  288. id: 1,
  289. type: "整包项目"
  290. },
  291. {
  292. id: 2,
  293. type: "云端工作"
  294. },
  295. {
  296. id: 3,
  297. type: "雇佣工作"
  298. }
  299. ],
  300. tradeList: [
  301. {
  302. id: 0,
  303. type: "全部"
  304. },
  305. {
  306. id: 1,
  307. type: "充值"
  308. },
  309. {
  310. id: 2,
  311. type: "提现"
  312. },
  313. {
  314. id: 3,
  315. type: "购买"
  316. },
  317. {
  318. id: 4,
  319. type: "购买"
  320. }
  321. ],
  322. payList: [
  323. {
  324. id: 0,
  325. type: "全部"
  326. },
  327. {
  328. id: 1,
  329. type: "充值"
  330. },
  331. {
  332. id: 2,
  333. type: "提现"
  334. },
  335. {
  336. id: 3,
  337. type: "购买"
  338. },
  339. {
  340. id: 4,
  341. type: "购买"
  342. }
  343. ],
  344. pickerOptions2: {
  345. shortcuts: [
  346. {
  347. text: "全部",
  348. onClick(picker) {
  349. alert("获取全部数据");
  350. }
  351. },
  352. {
  353. text: "最近7天",
  354. onClick(picker) {
  355. const end = new Date();
  356. const start = new Date();
  357. start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
  358. picker.$emit("pick", [start, end]);
  359. }
  360. },
  361. {
  362. text: "最近30天",
  363. onClick(picker) {
  364. const end = new Date();
  365. const start = new Date();
  366. start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
  367. picker.$emit("pick", [start, end]);
  368. }
  369. },
  370. {
  371. text: "本周",
  372. onClick(picker) {
  373. var week = new Date().getDay() - 1;
  374. console.log(week);
  375. if (week == -1) {
  376. week = 6;
  377. }
  378. const end = new Date();
  379. const start = new Date();
  380. start.setTime(start.getTime() - 3600 * 1000 * 24 * week);
  381. picker.$emit("pick", [start, end]);
  382. }
  383. },
  384. {
  385. text: "本月",
  386. onClick(picker) {
  387. var month = new Date().getMonth + 1;
  388. var year = new Date().getFullYear();
  389. // console.log(month, year);
  390. var day = new Date().getDate() - 1;
  391. console.log(day);
  392. const end = new Date();
  393. const start = new Date();
  394. start.setTime(start.getTime() - 3600 * 1000 * 24 * day);
  395. picker.$emit("pick", [start, end]);
  396. }
  397. },
  398. {
  399. text: "本年",
  400. onClick(picker) {
  401. var month = new Date().getMonth + 1;
  402. var year = new Date().getFullYear();
  403. // console.log(month, year);
  404. var day = new Date().getDate() - 1;
  405. var firstDay = new Date(year, 0, 1);
  406. var dateDiff = new Date() - firstDay;
  407. var msPerDay = 1000 * 60 * 60 * 24;
  408. //计算天数
  409. var diffDays = Math.ceil(dateDiff / msPerDay) - 1;
  410. console.log(diffDays);
  411. const end = new Date();
  412. const start = new Date();
  413. start.setTime(start.getTime() - 3600 * 1000 * 24 * diffDays);
  414. picker.$emit("pick", [start, end]);
  415. }
  416. }
  417. ]
  418. },
  419. timeRange: "",
  420. arriveTime: "",
  421. searchId: "",
  422. tableData3: [
  423. {
  424. date: "2016-05-03",
  425. name: "王小虎",
  426. money: "200",
  427. state: 1
  428. },
  429. {
  430. date: "2016-05-02",
  431. name: "王小虎",
  432. money: "-100",
  433. state: 2
  434. },
  435. {
  436. date: "2016-05-04",
  437. name: "王小虎",
  438. money: "-100",
  439. state: 3
  440. },
  441. {
  442. date: "2016-05-01",
  443. name: "王小虎",
  444. money: "-100",
  445. state: 4
  446. },
  447. {
  448. date: "2016-05-08",
  449. name: "王小虎",
  450. money: "2100",
  451. state: 1
  452. },
  453. {
  454. date: "2016-05-06",
  455. name: "王小虎",
  456. money: "-1200",
  457. state: 4
  458. },
  459. {
  460. date: "2016-05-07",
  461. name: "王小虎",
  462. money: "-100",
  463. state: 1
  464. }
  465. ],
  466. // 下发的总数据
  467. totalData: {},
  468. // 项目ID
  469. jobID: "",
  470. // 审核人
  471. period: "",
  472. status: "",
  473. // 状态列表数据
  474. jobStatusList: [],
  475. // 负责人
  476. checkUser: "",
  477. // 审核人列表
  478. periodStatusList: [],
  479. // 数据总条目
  480. totalCount: 0,
  481. currentPage: 1,
  482. currentPageSize: 20,
  483. // 列表宽度
  484. tableWidths,
  485. // 列表头显示内容
  486. tableHeaders,
  487. // 列表头字段
  488. tableProps,
  489. // 列表数据
  490. tableData: [],
  491. localData: {
  492. env: "test"
  493. }
  494. };
  495. },
  496. computed: {
  497. isTest() {
  498. return this.localData.env === "test";
  499. },
  500. whole() {
  501. return this.totalData.whole || {};
  502. },
  503. totalDeposit() {
  504. return this.whole.total_deposit;
  505. },
  506. totalFee() {
  507. return this.whole.total_fee;
  508. }
  509. },
  510. mounted() {
  511. this.getTableData();
  512. this.getEnum();
  513. },
  514. methods: {
  515. // 改变订单类型
  516. changeOrder() {
  517. var haveAll = false;
  518. for (var i = 0; i < this.orderType.length; i++) {
  519. if (this.orderType[i] == 0) {
  520. haveAll = true;
  521. }
  522. }
  523. // 选择其他的时候,去掉全部,全部在第一位
  524. if (
  525. this.orderType[0] == 0 &&
  526. 1 < this.orderType.length < this.TypeList.length
  527. ) {
  528. var arr = [];
  529. for (var i = 0; i < this.orderType.length; i++) {
  530. if (this.orderType[i] != 0) {
  531. arr.push(this.orderType[i]);
  532. }
  533. }
  534. this.orderType = arr;
  535. }
  536. // 选择全部的时候去掉其他,全部在最后一位
  537. if (this.orderType[this.orderType.length - 1] == 0) {
  538. this.orderType = [0];
  539. }
  540. if (!haveAll && this.orderType.length == this.TypeList.length - 1) {
  541. this.orderType = [0];
  542. }
  543. if (this.orderType.length == 0) {
  544. console.log("sss:", this.orderType);
  545. this.orderType = [0];
  546. }
  547. },
  548. // 改变支付方式
  549. changePay() {
  550. var haveAll = false;
  551. for (var i = 0; i < this.payType.length; i++) {
  552. if (this.payType[i] == 0) {
  553. haveAll = true;
  554. }
  555. }
  556. // 选择其他的时候,去掉全部,全部在第一位
  557. if (
  558. this.payType[0] == 0 &&
  559. 1 < this.payType.length < this.payList.length
  560. ) {
  561. var arr = [];
  562. for (var i = 0; i < this.payType.length; i++) {
  563. if (this.payType[i] != 0) {
  564. arr.push(this.payType[i]);
  565. }
  566. }
  567. this.payType = arr;
  568. }
  569. // 选择全部的时候去掉其他,全部在最后一位
  570. if (this.payType[this.payType.length - 1] == 0) {
  571. this.payType = [0];
  572. }
  573. if (!haveAll && this.payType.length == this.payList.length - 1) {
  574. this.payType = [0];
  575. }
  576. if (this.payType.length == 0) {
  577. console.log("sss:", this.orderType);
  578. this.payType = [0];
  579. }
  580. },
  581. clickExport() {
  582. window.open("/api/admin/job/get_all_periods?action=export");
  583. },
  584. /**
  585. * 获取筛选值
  586. */
  587. async getEnum() {
  588. let { data } = await this.$get("/api/admin/job/getEnum");
  589. console.log(data);
  590. if (data) {
  591. let { jobStatusList, periodStatusList } = data;
  592. this.jobStatusList = jobStatusList;
  593. this.periodStatusList = periodStatusList;
  594. }
  595. },
  596. // 点击操作
  597. clickOperate({ job_id, id }) {
  598. if (this.isTest)
  599. window.open(
  600. `https://dev.test-rooter.proginn.com/main/wage_settlement?job_id=${job_id}&period_id=${id}`
  601. );
  602. else
  603. window.open(
  604. `https://rooter.proginn.com/main/wage_settlement?job_id=${job_id}&period_id=${id}`
  605. );
  606. },
  607. // 点击账单
  608. clickOrder(i) {
  609. if (this.isTest)
  610. window.open(
  611. `https://dev.test-rooter.proginn.com/main/wage_details?job_id=${i.job_id}&period_id=${i.id}`
  612. );
  613. else
  614. window.open(
  615. `https://rooter.proginn.com/main/wage_details?job_id=${i.job_id}&period_id=${i.id}`
  616. );
  617. },
  618. // 点击开发者
  619. clickDev(uid) {
  620. if (this.isTest)
  621. window.open(`https://dev.test.proginn.com/rooter/user/${uid}`);
  622. else window.open(`https://www.proginn.com/rooter/user/${uid}`);
  623. },
  624. // 点击企业
  625. clickCompany(uid) {
  626. if (this.isTest)
  627. window.open(`https://dev.test.proginn.com/rooter/user/${uid}`);
  628. else window.open(`https://www.proginn.com/rooter/user/${uid}`);
  629. },
  630. // 点击账单id
  631. clickJobID(jobID) {
  632. if (this.isTest)
  633. window.open(
  634. `https://dev.test.proginn.com/rooter/cloudjobitem/${jobID}`
  635. );
  636. else window.open(`https://www.proginn.com/rooter/cloudjobitem/${jobID}`);
  637. },
  638. // 点击重试
  639. async clickRetry(id) {
  640. const res = await this.$post("/api/admin/payment/redoDraw", { id });
  641. // console.log(res)
  642. },
  643. // 根据状态显示图表样式
  644. tableRowClassName({ row, rowIndex }) {
  645. // console.log({row, rowIndex})
  646. let className = "";
  647. if (row.j_status_name === "结束合作") className = "end-row";
  648. // console.log(className)
  649. return className;
  650. },
  651. // 格式化列表数据
  652. formatTableData(data) {
  653. return data.map(i => ({
  654. ...i,
  655. payAround: `${i.start_time}<br>${i.end_time}`,
  656. pre_send_salary_timeShow: new Date(
  657. i.pre_send_salary_time * 1000
  658. ).toLocaleDateString()
  659. }));
  660. },
  661. /**
  662. * 点击筛选确认
  663. */
  664. clickSearchConfirm() {
  665. this.currentPage = 1;
  666. this.getTableData();
  667. },
  668. changePageSize(pageSize) {
  669. this.currentPageSize = pageSize;
  670. this.getTableData();
  671. },
  672. // 获取列表数据
  673. async getTableData() {
  674. this.tableData = [];
  675. let url = "/api/admin/job/get_all_periods";
  676. let body = { page: this.currentPage, page_size: this.currentPageSize };
  677. if (this.status) body.j_status = this.status;
  678. if (this.period) body.p_status = this.period;
  679. if (this.checkUser) body.chk_user = this.checkUser;
  680. if (this.jobID) body.job_id = this.jobID;
  681. const res = await this.$post(url, body);
  682. const data = res.data;
  683. this.tableData = this.formatTableData(data.list);
  684. this.totalData = data;
  685. // // console.log(this.tableData)
  686. this.totalCount = Number(data.total);
  687. this.totalPage = data.totalPage;
  688. this.localData.env = data.current_env;
  689. }
  690. },
  691. created(){
  692. console.log(process.env.NODE_ENV)
  693. }
  694. };
  695. </script>
  696. <style scoped>
  697. .order-footer {
  698. position: absolute;
  699. bottom: 10px;
  700. left: 10px;
  701. }
  702. #order-wrap {
  703. width: 100%;
  704. }
  705. #cloud-balance {
  706. white-space: nowrap;
  707. overflow-x: scroll;
  708. height: calc(100% - 40px);
  709. }
  710. .top {
  711. display: flex;
  712. flex-direction: column;
  713. justify-content: center;
  714. height: 270px;
  715. }
  716. .selector-box {
  717. /* margin-top: 10px; */
  718. }
  719. .selector-box {
  720. display: flex;
  721. justify-content: space-between;
  722. }
  723. /* .selector-box-left {
  724. } */
  725. .table {
  726. margin-top: 10px;
  727. height: calc(100% - 320px);
  728. }
  729. .order-table {
  730. /* height: calc(100% - 300px); */
  731. }
  732. .end-row {
  733. background: rgba(0, 0, 0, 0.1);
  734. }
  735. .inlineb {
  736. display: inline-block;
  737. }
  738. .vsub {
  739. vertical-align: sub;
  740. }
  741. .type-boxs {
  742. margin-bottom: 10px;
  743. }
  744. .green {
  745. color: rgba(37, 155, 36, 1);
  746. }
  747. .orange {
  748. color: rgba(255, 152, 0, 1);
  749. }
  750. .state-success {
  751. display: inline-block;
  752. padding: 0px 8px;
  753. text-align: center;
  754. border: 1px solid rgb(48, 142, 255);
  755. }
  756. .state-wait {
  757. display: inline-block;
  758. padding: 0px 8px;
  759. text-align: center;
  760. border: 1px solid rgb(134, 130, 130);
  761. }
  762. .state-load {
  763. display: inline-block;
  764. padding: 0px 8px;
  765. text-align: center;
  766. border: 1px solid rgb(37, 155, 36);
  767. }
  768. .state-faile {
  769. display: inline-block;
  770. padding: 0px 8px;
  771. text-align: center;
  772. border: 1px solid rgb(229, 28, 35);
  773. }
  774. </style>