invoice-pop.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710
  1. <template>
  2. <div>
  3. <el-dialog title="发票" :visible.sync="popShow" width="60%">
  4. <div class="invoice-pop">
  5. <div class="invoice-title" v-if="is_notice">
  6. <div class="title-right">
  7. <template v-if="is_notice">
  8. <i class="iconfont icon-fontclass-gantanhao"></i>
  9. <span class="text" @click="explainShow = true">发票须知</span>
  10. </template>
  11. </div>
  12. </div>
  13. <div class="invoice-container">
  14. <div class="invoice-tabs">
  15. <div class="blod-title">发票类型</div>
  16. <div class="tabs-items">
  17. <div class="tabs-item" :class="{ active: item.value == invoice_type_index }" @click="setTabsIndex(item.value, 'invoice_type_index')" v-for="item in invoice_type_arr" :key="item.value">
  18. {{ item.name }}
  19. </div>
  20. </div>
  21. </div>
  22. <div class="invoice-desc-text">平台启用电子发票,与纸质发票具备同等法律效力。</div>
  23. <div class="invoice-tabs" style="margin-top:1.5rem;">
  24. <div class="blod-title">发票抬头</div>
  25. <div class="tabs-items" v-if="invoice_type_index != 2">
  26. <div
  27. class="tabs-item"
  28. :class="{ active: item.value == invoice_header_index }"
  29. @click="setTabsIndex(item.value, 'invoice_header_index')"
  30. v-for="item in invoice_header_arr"
  31. :key="item.value"
  32. >
  33. {{ item.name }}
  34. </div>
  35. </div>
  36. </div>
  37. <template>
  38. <div class="field-cell" style="margin-top:1.594rem;">
  39. <i class="iconfont icon-fontclass-xinghao"></i>
  40. <div class="field-cell-title">{{ invoice_header_index == 0 || invoice_type_index == 2 ? "单位" : "发票抬头" }}</div>
  41. <input type="text" v-model="collect_name" :placeholder="invoice_header_index == 0 || invoice_type_index == 2 ? '请填写单位名称' : '请填写需要开具发票的姓名'" />
  42. <i v-if="collect_name" @touchstart.stop="clearCollectName" class="iconfont icon-adsystem_icon_cancle"></i>
  43. <div style="width:1.5rem;height:1rem;text-align:center;" v-if="collect_name == ''" @click="invoice_header_list_show = true">
  44. <template v-if="invoice_header_index == 0 || invoice_type_index == 2">
  45. <i class="fa fa-angle-right" v-if="invoice_header_list && invoice_header_list.company && invoice_header_list.company.length" style="font-size:20px;"></i>
  46. </template>
  47. <template v-else>
  48. <i class="fa fa-angle-right" v-if="invoice_header_list && invoice_header_list.personal && invoice_header_list.personal.length" style="font-size:20px;"></i>
  49. </template>
  50. </div>
  51. <!-- <div class="invoice-header-list" :class="{ show: (invoice_header_list_show && !collect_name) }">
  52. <div class="invoice-header-list-item">个人发票抬头</div>
  53. <div class="invoice-header-list-item">个人发票抬头</div>
  54. </div> -->
  55. </div>
  56. </template>
  57. <template v-if="invoice_header_index == 0 || invoice_type_index == 2">
  58. <div class="field-cell" style="margin-top:1.594rem;">
  59. <i class="iconfont icon-fontclass-xinghao"></i>
  60. <div class="field-cell-title">税号</div>
  61. <input v-model="gmf_taxpayer" type="text" placeholder="请填写纳税人识别号" />
  62. <i v-if="gmf_taxpayer" @touchstart.stop="gmf_taxpayer = ''" class="iconfont icon-adsystem_icon_cancle"></i>
  63. </div>
  64. <div class="split-line" v-if="invoice_type_index != 2" style="margin-top:1.25rem;margin-bottom:-0.394rem;"></div>
  65. <div class="field-cell" style="margin-top:1.594rem;">
  66. <i class="iconfont icon-fontclass-xinghao" v-if="invoice_type_index == 2"></i>
  67. <div class="field-cell-title">开户银行</div>
  68. <input v-model="gmf_bank" type="text" :placeholder="'请填写单位开户银行' + (invoice_type_index != 2 ? '(选填)' : '')" />
  69. <i v-if="gmf_bank" @touchstart.stop="gmf_bank = ''" class="iconfont icon-adsystem_icon_cancle"></i>
  70. </div>
  71. <div class="field-cell" style="margin-top:1.594rem;">
  72. <i class="iconfont icon-fontclass-xinghao" v-if="invoice_type_index == 2"></i>
  73. <div class="field-cell-title">银行账号</div>
  74. <input v-model="gmf_bank_admin" type="text" :placeholder="'请填写单位银行账号' + (invoice_type_index != 2 ? '(选填)' : '')" />
  75. <i v-if="gmf_bank_admin" @touchstart.stop="gmf_bank_admin = ''" class="iconfont icon-adsystem_icon_cancle"></i>
  76. </div>
  77. <div class="field-cell" style="margin-top:1.594rem;">
  78. <i class="iconfont icon-fontclass-xinghao" v-if="invoice_type_index == 2"></i>
  79. <div class="field-cell-title">注册地址</div>
  80. <input v-model="gmf_address" type="text" :placeholder="'请填写注册地址' + (invoice_type_index != 2 ? '(选填)' : '')" />
  81. <i v-if="gmf_address" @touchstart.stop="gmf_address = ''" class="iconfont icon-adsystem_icon_cancle"></i>
  82. </div>
  83. <div class="field-cell" style="margin-top:1.594rem;">
  84. <i class="iconfont icon-fontclass-xinghao" v-if="invoice_type_index == 2"></i>
  85. <div class="field-cell-title">注册电话</div>
  86. <input v-model="gmf_mobile" type="text" :placeholder="'请填写注册电话' + (invoice_type_index != 2 ? '(选填)' : '')" />
  87. <i v-if="gmf_mobile" @touchstart.stop="gmf_mobile = ''" class="iconfont icon-adsystem_icon_cancle"></i>
  88. </div>
  89. </template>
  90. <div class="blod-title" style="margin-top:1.531rem;">收票人信息</div>
  91. <!-- 电子发票显示 -->
  92. <template v-if="invoice_type_index == 0">
  93. <div class="field-cell" style="margin-top:1.594rem;">
  94. <div class="field-cell-title">手机号</div>
  95. <input type="text" v-model="col_mobile" placeholder="请输入手机号(选填)" />
  96. <i v-if="col_mobile" @touchstart.stop="col_mobile = ''" class="iconfont icon-adsystem_icon_cancle"></i>
  97. </div>
  98. <div class="field-cell" style="margin-top:1.594rem;">
  99. <div class="field-cell-title">邮箱</div>
  100. <input type="text" v-model="email" placeholder="请填入邮箱(选填)" />
  101. <i v-if="email" @touchstart.stop="email = ''" class="iconfont icon-adsystem_icon_cancle"></i>
  102. </div>
  103. </template>
  104. <template v-if="invoice_type_index == 1 || invoice_type_index == 2">
  105. <div class="address" @click="openAddList">
  106. <div class="address-container">
  107. <div v-if="!address.col_address" class="address-placeholder">请选择收票地址</div>
  108. <template v-if="address.col_address">
  109. <div class="address-name">{{ address.username || address.realname }}/{{ address.mobile }}</div>
  110. <div class="address-text">收票地址:{{address.col_address}}</div>
  111. </template>
  112. </div>
  113. <i class="iconfont icon-advertise-next"></i>
  114. </div>
  115. </template>
  116. <!-- 专用发票 invoice_type_index=3 不显示 -->
  117. <template v-if="invoice_type_index != 2 && is_content">
  118. <div class="invoice-tabs" style="margin-top:1.531rem;">
  119. <div class="blod-title">发票内容</div>
  120. <div class="tabs-items">
  121. <div
  122. class="tabs-item"
  123. :class="{ active: item.value == invoice_content_index }"
  124. @click="setTabsIndex(item.value, 'invoice_content_index')"
  125. v-for="item in invoice_content_arr"
  126. :key="item.value"
  127. >
  128. {{ item.name }}
  129. </div>
  130. </div>
  131. </div>
  132. <div class="invoice-desc-text">发票金额为实际支付金额,不含折扣,优惠等扣减金额</div>
  133. </template>
  134. </div>
  135. <div class="invoice-btn-wrapper">
  136. <div class="invoice-btn-item" @click="send">确定</div>
  137. </div>
  138. </div>
  139. </el-dialog>
  140. <el-dialog title="发票须知" :visible.sync="explainShow" width="60%">
  141. <div class="explain">
  142. <!-- <div class="explain-title">
  143. 发票须知
  144. </div> -->
  145. <div class="explain-container">
  146. <div v-html="invoice_explain"></div>
  147. </div>
  148. <div class="explain-btn-wrapper">
  149. <div class="explain-btn-item" @click="explainShow = false">我知道了</div>
  150. </div>
  151. </div>
  152. </el-dialog>
  153. <el-dialog title="发票抬头" :visible.sync="invoice_header_list_show" width="60%">
  154. <div class="explain">
  155. <!-- <div class="explain-title">
  156. 发票抬头
  157. </div> -->
  158. <div class="invoice-header-list-container">
  159. <template v-if="invoice_header_index == 0 || invoice_type_index == 2">
  160. <div class="item" v-for="(item, index) in invoice_header_list.company" :key="index" @click="setInvoiceHeader(item)">{{ item.collect_name }}</div>
  161. </template>
  162. <template v-else>
  163. <div class="item" v-for="(item, index) in invoice_header_list.personal" :key="index" @click="setInvoiceHeader(item)">{{ item.collect_name }}</div>
  164. </template>
  165. </div>
  166. <!-- <div class="explain-btn-wrapper">
  167. <div class="explain-btn-item" @click="invoice_header_list_show = false">我知道了</div>
  168. </div> -->
  169. </div>
  170. </el-dialog>
  171. </div>
  172. </template>
  173. <script>
  174. export default {
  175. props:["addressData"],
  176. data() {
  177. return {
  178. pluginShow: false,
  179. popShow: false,
  180. explainShow: false,
  181. is_content: false,
  182. is_notice: false,
  183. invoice_type_index: 1, //发票类型
  184. invoice_type_arr: [],
  185. invoice_header_index: 1, //发票抬头
  186. invoice_header_arr: [
  187. { name: "个人", value: 1 },
  188. { name: "单位", value: 0 }
  189. ],
  190. invoice_content_index: 1, //发票内容
  191. invoice_content_arr: [],
  192. invoice_header_list: [], //发票抬头列表
  193. invoice_header_list_show: false,
  194. invoice_explain: "", //发票须知
  195. address: "", //地址,只有纸质发票跟专用发票才需要
  196. collect_name: "", //发票抬头 || 单位名称
  197. gmf_taxpayer: "", //纳税号
  198. gmf_bank: "", //开户银行
  199. gmf_bank_admin: "", //购买方银行账户
  200. gmf_address: "", //注册地址
  201. gmf_mobile: "", //注册电话
  202. col_mobile: "", //收票人手机号
  203. email: "", //电子邮箱
  204. tax_rate:0, //汇率,后台返回,回传给后台
  205. };
  206. },
  207. created() {},
  208. watch:{
  209. invoice_header_index(nVal){
  210. this.getcollect_name();
  211. },
  212. invoice_type_index(nVal){
  213. this.getcollect_name();
  214. }
  215. },
  216. methods: {
  217. getcollect_name(){
  218. let key = "personal";
  219. if (this.invoice_header_index == 0 || this.invoice_type_index == 2) {
  220. key = "company";
  221. }
  222. let list = this.invoice_header_list[key] || [];
  223. for (let i = 0; i < list.length; i++) {
  224. if (list[i].is_default == 1) {
  225. this.setInvoiceHeader(list[i]);
  226. return false;
  227. }
  228. }
  229. // this.collect_name = "";
  230. },
  231. initData(data) {
  232. if (data.is_open == 1 && data.invoice_type.length >= 1) {
  233. this.pluginShow = true;
  234. this.is_content = data.is_content;
  235. this.is_notice = data.is_notice;
  236. this.invoice_type_arr = data.invoice_type;
  237. this.invoice_type_index = data.invoice_type[0].value;
  238. let content = data.content;
  239. content.push({ name: "不开发票", value: 2 });
  240. this.invoice_content_arr = content;
  241. this.invoice_content_index = this.invoice_content_arr[0].value;
  242. this.invoice_explain = data.notice;
  243. this.invoice_header_list = data.rises;
  244. this.tax_rate = data.tax_rate;
  245. this.getcollect_name();
  246. }
  247. let {personal, special, unit} = data.default_rise;
  248. this.personalRise = personal??{};
  249. this.specialRise = special??{};
  250. this.unitRise = unit??{};
  251. this.setDefaultData(this.personalRise, 1);
  252. },
  253. // 设置默认的发票抬头信息
  254. setDefaultData (defaultData, type) {
  255. let {
  256. col_address, col_mobile, col_name, collect_name,
  257. email, gmf_address, gmf_bank, gmf_bank_admin, gmf_mobile, gmf_taxpayer
  258. } = defaultData;
  259. if (type == 1) {
  260. // 个人
  261. this.collect_name = collect_name??'';
  262. this.col_mobile = col_mobile??'';
  263. this.email = email??'';
  264. this.address = {};
  265. } else if (type == 2 || type == 3) {
  266. // 单位 || 专用
  267. this.collect_name = collect_name;
  268. this.gmf_taxpayer = gmf_taxpayer;
  269. this.gmf_bank = gmf_bank;
  270. this.gmf_bank_admin = gmf_bank_admin;
  271. this.gmf_address = gmf_address;
  272. this.gmf_mobile = gmf_mobile;
  273. this.col_mobile = col_mobile;
  274. this.email = email;
  275. this.address = {
  276. username: col_name,
  277. mobile: col_mobile,
  278. col_address: col_address
  279. };
  280. }
  281. },
  282. openAddList() {
  283. this.$emit("openAddList");
  284. },
  285. inheritAddRess (address) {
  286. if (!(address.province && address.city && address.district)) {
  287. address.col_address = address.address;
  288. }
  289. this.address = address;
  290. },
  291. setAddress(item) {
  292. this.address = item;
  293. this.address.col_address = `${item.province} ${item.city} ${item.district} ${item.streetName ?? ''} ${item.address??''}`;
  294. },
  295. send() {
  296. if (this.invoice_content_index==2 && this.is_content) {
  297. this.popShow = false;
  298. return false;
  299. }
  300. let { invoice_type_index, invoice_header_index, invoice_content_index, collect_name, gmf_taxpayer, gmf_bank, gmf_bank_admin, gmf_address, gmf_mobile, col_mobile, email, address,tax_rate } = this;
  301. // status和apply 后端要求写死
  302. let json = {
  303. status: 2,
  304. apply: 1,
  305. invoice_type: invoice_type_index,
  306. rise_type: invoice_header_index,
  307. content: invoice_content_index,
  308. tax_rate
  309. };
  310. if (this.fun.isTextEmpty(collect_name)) {
  311. if (invoice_header_index == 0 || invoice_type_index == 2) {
  312. return this.$message.error("请输入单位名称");
  313. } else {
  314. return this.$message.error("请输入发票抬头");
  315. }
  316. }
  317. json.collect_name = collect_name;
  318. //单位 或者 专用发票
  319. if (invoice_type_index == 2 || invoice_header_index == 0) {
  320. if (this.fun.isTextEmpty(gmf_taxpayer)) return this.$message.error("请输入纳税人识别号");
  321. //专用发票要求必须输入,其他选选填
  322. if (invoice_type_index == 2) {
  323. if (this.fun.isTextEmpty(gmf_bank)) return this.$message.error("请输入单位开户银行");
  324. if (this.fun.isTextEmpty(gmf_bank_admin)) return this.$message.error("请输入单位银行账号");
  325. if (this.fun.isTextEmpty(gmf_address)) return this.$message.error("请输入注册地址");
  326. if (this.fun.isTextEmpty(gmf_mobile)) return this.$message.error("请输入注册电话");
  327. }
  328. json.gmf_taxpayer = gmf_taxpayer;
  329. json.gmf_bank = gmf_bank;
  330. json.gmf_bank_admin = gmf_bank_admin;
  331. json.gmf_address = gmf_address;
  332. json.gmf_mobile = gmf_mobile;
  333. }
  334. //非 电子发票 需要选择地址
  335. if (invoice_type_index != 0) {
  336. if (!address) return this.$message.error("请选择地址");
  337. let fullAddress = `${address.province} ${address.city} ${address.district}`;
  338. fullAddress = address.street ? (fullAddress + ' ' + address.street) : fullAddress;
  339. json.col_address = address.col_address ?? fullAddress;
  340. json.col_name = address.username;
  341. json.col_mobile = address.mobile;
  342. }
  343. //电子发票
  344. if (invoice_type_index == 0) {
  345. json.email = email;
  346. json.col_mobile = col_mobile;
  347. }
  348. this.$emit("confirm", json);
  349. this.popShow = false;
  350. },
  351. clearCollectName() {
  352. setTimeout(() => {
  353. this.collect_name = "";
  354. }, 50);
  355. },
  356. setPopShow(flag) {
  357. this.popShow = flag;
  358. },
  359. setTabsIndex(value, name) {
  360. this[name] = value;
  361. if (name == "invoice_type_index" && this.invoice_type_index == 2) {
  362. this.setDefaultData(this.specialRise, 3);
  363. } else if (this.invoice_header_index == 0) {
  364. this.setDefaultData(this.unitRise, 2);
  365. } else {
  366. this.setDefaultData(this.personalRise, 1);
  367. }
  368. },
  369. setInvoiceHeader(item) {
  370. this.collect_name = item.collect_name;
  371. this.gmf_bank = item.bank;
  372. this.gmf_bank_admin = item.bank_admin;
  373. this.gmf_mobile = item.mobile;
  374. this.gmf_address = item.address;
  375. this.email = item.email;
  376. this.gmf_taxpayer = item.tax_num;
  377. this.invoice_header_list_show = false;
  378. },
  379. popShowFun(){
  380. this.address = this.addressData || "";
  381. this.popShow = true;
  382. }
  383. }
  384. };
  385. </script>
  386. <style lang="scss" rel="stylesheet/scss" scoped>
  387. // $pcStyle:370px;
  388. // /deep/ .van-overlay{
  389. // width: $pcStyle;
  390. // }
  391. .invoice {
  392. background: #fff;
  393. margin-top: 0.625rem;
  394. height: 2.8125rem;
  395. line-height: 2.8125rem;
  396. font-size: 15px;
  397. display: flex;
  398. padding: 0 0.875rem;
  399. border-top: solid 0.0625rem #ebebeb;
  400. border-bottom: solid 0.0625rem #ebebeb;
  401. position: relative;
  402. span {
  403. margin-right: 1.25rem;
  404. .font {
  405. color: #f15353;
  406. }
  407. }
  408. .type {
  409. font-size: 12px;
  410. color: #8c8c8c;
  411. }
  412. i {
  413. position: absolute;
  414. right: 0.875rem;
  415. font-size: 24px;
  416. color: #c9c9c9;
  417. line-height: 2.8125rem;
  418. }
  419. }
  420. .invoice-pop {
  421. height: 35rem;
  422. background: #fff;
  423. .invoice-title {
  424. position: relative;
  425. display: flex;
  426. align-items: center;
  427. justify-content: center;
  428. height: 3.5rem;
  429. font-size: 18px;
  430. color: #202020;
  431. .title-right {
  432. position: absolute;
  433. display: flex;
  434. align-items: center;
  435. right: 0;
  436. .icon-fontclass-gantanhao {
  437. font-size: 13px;
  438. color: #f15353;
  439. }
  440. .text {
  441. margin-left: 0.281rem;
  442. font-size: 12px;
  443. color: #575757;
  444. }
  445. .icon-guanbi {
  446. margin-left: 1.344rem;
  447. margin-right: 1.25rem;
  448. font-size: 14px;
  449. color: #6c6c6c;
  450. }
  451. }
  452. }
  453. .invoice-container {
  454. height: 28rem;
  455. padding: 0 0.938rem;
  456. padding-bottom: 1rem;
  457. text-align: left;
  458. overflow-y: auto;
  459. .blod-title {
  460. font-size: 13px;
  461. color: #373737;
  462. font-weight: bolder;
  463. }
  464. .split-line {
  465. height: 0.031rem;
  466. background-color: #f2f2f2;
  467. }
  468. .invoice-tabs {
  469. .tabs-items {
  470. display: flex;
  471. margin-top: 1rem;
  472. .tabs-item {
  473. display: flex;
  474. align-items: center;
  475. justify-content: center;
  476. width: 4.375rem;
  477. height: 1.563rem;
  478. margin-right: 2.281rem;
  479. padding-bottom: 0.125rem;
  480. color: #333333;
  481. font-size: 12px;
  482. cursor: pointer;
  483. &.active {
  484. color: #f15353;
  485. border-radius: 0.781rem;
  486. border: solid 0.031rem #f15353;
  487. }
  488. }
  489. }
  490. }
  491. .invoice-desc-text {
  492. margin-top: 0.813rem;
  493. font-size: 11px;
  494. color: #7c7c7c;
  495. }
  496. .field-cell {
  497. position: relative;
  498. display: flex;
  499. align-items: center;
  500. .icon-fontclass-xinghao {
  501. font-size: 12px;
  502. color: #f15353;
  503. }
  504. .field-cell-title {
  505. margin-left: 0.156rem;
  506. font-size: 12px;
  507. color: #202020;
  508. }
  509. input {
  510. flex: 1;
  511. margin-left: 0.5rem;
  512. font-size: 12px;
  513. color: #404040;
  514. height: 24px;
  515. line-height: 24px;
  516. border: none;
  517. &:focus + .icon-adsystem_icon_cancle {
  518. display: flex;
  519. }
  520. }
  521. .icon-adsystem_icon_cancle {
  522. display: none;
  523. position: absolute;
  524. right: 0;
  525. font-size: 18px;
  526. }
  527. .invoice-header-list {
  528. position: absolute;
  529. z-index: 1;
  530. transform: translateY(2.5rem);
  531. top: 0;
  532. left: 4.6rem;
  533. width: 11rem;
  534. max-height: 0;
  535. background-color: #ffffff;
  536. box-shadow: 0rem 0.063rem 0.5rem 0rem rgba(178, 178, 178, 0.47);
  537. border-radius: 0.125rem;
  538. overflow: hidden;
  539. transition: 0.5s;
  540. &.show {
  541. padding-top: 0.3rem;
  542. padding-bottom: 0.381rem;
  543. max-height: 100px;
  544. }
  545. .invoice-header-list-item {
  546. padding: 0.45rem 0.781rem;
  547. background: #fff;
  548. transition: 0.5s;
  549. &:active {
  550. filter: brightness(90%);
  551. }
  552. }
  553. }
  554. }
  555. .address {
  556. display: flex;
  557. align-items: center;
  558. padding-top: 0.969rem;
  559. .address-container {
  560. flex: 1;
  561. .address-placeholder {
  562. font-size: 12px;
  563. color: #7c7c7c;
  564. }
  565. .address-name {
  566. font-size: 12px;
  567. color: #202020;
  568. }
  569. .address-text {
  570. margin-top: 0.906rem;
  571. font-size: 12px;
  572. color: #202020;
  573. }
  574. }
  575. .icon-advertise-next {
  576. color: #202020;
  577. }
  578. }
  579. }
  580. .invoice-btn-wrapper {
  581. display: flex;
  582. align-items: center;
  583. justify-content: center;
  584. height: 3.5rem;
  585. padding: 0 2.313rem;
  586. .invoice-btn-item {
  587. display: flex;
  588. align-items: center;
  589. justify-content: center;
  590. width: 100%;
  591. height: 2.188rem;
  592. font-size: 13px;
  593. font-weight: bold;
  594. color: #ffffff;
  595. background-color: #f05152;
  596. border-radius: 1.094rem;
  597. }
  598. }
  599. }
  600. .explain {
  601. height: 27rem;
  602. .explain-title {
  603. display: flex;
  604. align-items: center;
  605. justify-content: center;
  606. height: 3.5rem;
  607. font-size: 18px;
  608. color: #2a2a2a;
  609. font-weight: bold;
  610. }
  611. .explain-container {
  612. display: flex;
  613. height: 20rem;
  614. padding: 0 0.938rem;
  615. font-size: 15px;
  616. text-align: left;
  617. color: #333333;
  618. background: #fff;
  619. overflow: auto;
  620. }
  621. .explain-btn-wrapper {
  622. display: flex;
  623. align-items: center;
  624. justify-content: center;
  625. height: 3.5rem;
  626. padding: 0 2.313rem;
  627. .explain-btn-item {
  628. display: flex;
  629. align-items: center;
  630. justify-content: center;
  631. width: 100%;
  632. height: 2.188rem;
  633. font-size: 13px;
  634. font-weight: bold;
  635. color: #ffffff;
  636. background-color: #f05152;
  637. border-radius: 1.094rem;
  638. }
  639. }
  640. }
  641. .invoice-header-list-container {
  642. height: 22rem;
  643. text-align: left;
  644. padding: 0 1.5rem;
  645. overflow: auto;
  646. .item {
  647. width: 100%;
  648. word-break: break-all;
  649. color: #202020;
  650. padding: 0.3rem 0;
  651. text-overflow: -o-ellipsis-lastline;
  652. overflow: hidden;
  653. text-overflow: ellipsis;
  654. display: -webkit-box;
  655. -webkit-line-clamp: 2;
  656. line-clamp: 2;
  657. -webkit-box-orient: vertical;
  658. &:active {
  659. background: rgba(0, 0, 0, 0.1);
  660. }
  661. }
  662. }
  663. </style>