選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

deviceInfo.vue 18KB

8ヶ月前
8ヶ月前
8ヶ月前
8ヶ月前
8ヶ月前
1年前
1年前
1年前
8ヶ月前
8ヶ月前
8ヶ月前
8ヶ月前
1年前
1年前
10ヶ月前
1年前
8ヶ月前
8ヶ月前
8ヶ月前
8ヶ月前
8ヶ月前
8ヶ月前
8ヶ月前
8ヶ月前
8ヶ月前
8ヶ月前
1年前
10ヶ月前
1年前
10ヶ月前
9ヶ月前
1年前
5ヶ月前
1年前
1年前
8ヶ月前
1年前
8ヶ月前
1年前
10ヶ月前
10ヶ月前
8ヶ月前
8ヶ月前
8ヶ月前
8ヶ月前
5ヶ月前
8ヶ月前
9ヶ月前
9ヶ月前
9ヶ月前
9ヶ月前
9ヶ月前
7ヶ月前
8ヶ月前
9ヶ月前
8ヶ月前
9ヶ月前
8ヶ月前
7ヶ月前
8ヶ月前
7ヶ月前
9ヶ月前
1年前
1年前
9ヶ月前
9ヶ月前
10ヶ月前
9ヶ月前
10ヶ月前
10ヶ月前
1年前
10ヶ月前
1年前
10ヶ月前
1年前
8ヶ月前
10ヶ月前
1年前
8ヶ月前
1年前
8ヶ月前
1年前
8ヶ月前
8ヶ月前
8ヶ月前
1年前
10ヶ月前
10ヶ月前
10ヶ月前
10ヶ月前
10ヶ月前
10ヶ月前
10ヶ月前
10ヶ月前
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610
  1. <template>
  2. <view class="wrapper">
  3. <view class="info-card">
  4. <view class="title">卡信息</view>
  5. <view class="cell">
  6. <view class="cell-left">卡号</view>
  7. <view class="cell-right">{{ card.cardNo }}</view>
  8. </view>
  9. <view class="cell">
  10. <view class="cell-left">用户姓名</view>
  11. <view class="cell-right">{{ card.userNameStr }}</view>
  12. </view>
  13. <view class="cell">
  14. <view class="cell-left">身份证号</view>
  15. <view class="cell-right">{{ card.idNumStr }}</view>
  16. </view>
  17. <view class="cell">
  18. <view class="cell-left">车辆类型</view>
  19. <view class="cell-right">{{ card.typeStr }}</view>
  20. </view>
  21. <view class="cell">
  22. <view class="cell-left">车牌号</view>
  23. <view class="cell-right">{{ card.vehiclePlate }}</view>
  24. </view>
  25. <view class="cell">
  26. <view class="cell-left">车牌颜色</view>
  27. <view class="cell-right">{{ card.colorStr }}</view>
  28. </view>
  29. <view class="cell">
  30. <view class="cell-left">启用时间</view>
  31. <view class="cell-right">{{ card.startTime }}</view>
  32. </view>
  33. <view class="cell">
  34. <view class="cell-left">结束时间</view>
  35. <view class="cell-right">{{ card.endTime }}</view>
  36. </view>
  37. <view class="cell">
  38. <view class="cell-left">卡签绑定</view>
  39. <view class="cell-right">{{ card.favourableStr }}</view>
  40. </view>
  41. <view class="cell">
  42. <view class="cell-left">校验值</view>
  43. <view class="cell-right">{{ card.money }}</view>
  44. </view>
  45. <view class="cell">
  46. <view class="cell-left">版本号</view>
  47. <view class="cell-right">{{ card.version }}</view>
  48. </view>
  49. <view class="cell" v-if="state.cardStatus">
  50. <view class="cell-left">卡状态</view>
  51. <view class="cell-right">{{getCodeName('CARD_STATE_TYPE',state.cardStatus)}}</view>
  52. </view>
  53. <view class="cell" v-if="state.cardTypeName">
  54. <view class="cell-left">卡类型</view>
  55. <view class="cell-right">{{state.cardTypeName}}</view>
  56. </view>
  57. </view>
  58. <view class="info-card">
  59. <view class="title">OBU信息</view>
  60. <view class="cell">
  61. <view class="cell-left">obu号</view>
  62. <view class="cell-right">{{ obu.num }}</view>
  63. </view>
  64. <view class="cell">
  65. <view class="cell-left">车辆类型</view>
  66. <view class="cell-right">{{ obu.typeStr }}</view>
  67. </view>
  68. <view class="cell">
  69. <view class="cell-left">车辆用户类型</view>
  70. <view class="cell-right">{{ obu.userTypeStr }}</view>
  71. </view>
  72. <view class="cell">
  73. <view class="cell-left">车牌号</view>
  74. <view class="cell-right">{{ obu.vehiclePlate }}</view>
  75. </view>
  76. <view class="cell">
  77. <view class="cell-left">车牌颜色</view>
  78. <view class="cell-right">{{ obu.vehiclePlateColorStr }}</view>
  79. </view>
  80. <view class="cell">
  81. <view class="cell-left">核定载人数</view>
  82. <view class="cell-right">{{ obu.approvedCount }}</view>
  83. </view>
  84. <view class="cell">
  85. <view class="cell-left">车辆识别代号</view>
  86. <view class="cell-right">{{ obu.vin }}</view>
  87. </view>
  88. <view class="cell">
  89. <view class="cell-left">车牌发动机号</view>
  90. <view class="cell-right">{{ obu.engineNum }}</view>
  91. </view>
  92. <view class="cell">
  93. <view class="cell-left">车轴数</view>
  94. <view class="cell-right">{{ obu.axleCount }}</view>
  95. </view>
  96. <view class="cell">
  97. <view class="cell-left">车轮数</view>
  98. <view class="cell-right">{{ obu.wheelCount }}</view>
  99. </view>
  100. <view class="cell">
  101. <view class="cell-left">轴距</view>
  102. <view class="cell-right">{{ obu.axleDistance }}</view>
  103. </view>
  104. <view class="cell">
  105. <view class="cell-left">外廓尺寸</view>
  106. <view class="cell-right">{{ obu.outsideDimensions }}mm</view>
  107. </view>
  108. <view class="cell">
  109. <view class="cell-left">启用时间</view>
  110. <view class="cell-right">{{ obu.startTime }}</view>
  111. </view>
  112. <view class="cell">
  113. <view class="cell-left">结束时间</view>
  114. <view class="cell-right">{{ obu.endTime }}</view>
  115. </view>
  116. <view class="cell">
  117. <view class="cell-left">是否激活</view>
  118. <view class="cell-right">{{ obu.isJHStr }}</view>
  119. </view>
  120. <view class="cell">
  121. <view class="cell-left">拆卸状态</view>
  122. <view class="cell-right">{{obu.loadStatus=='01'?'正常':'已拆卸'}}</view>
  123. </view>
  124. <view class="cell">
  125. <view class="cell-left">版本号</view>
  126. <view class="cell-right">{{ obu.version }}</view>
  127. </view>
  128. <view class="cell" v-if="state.obuStatus">
  129. <view class="cell-left">签状态</view>
  130. <view class="cell-right">{{getCodeName('OBU_STATE_TYPE',state.obuStatus)}}</view>
  131. </view>
  132. </view>
  133. <view class="btn" @click="back">返回</view>
  134. </view>
  135. </template>
  136. <script setup>
  137. import {
  138. getCodeName
  139. } from "@/datas/queryKey.js";
  140. import {
  141. reactive
  142. } from "vue";
  143. import {
  144. onLoad,
  145. onUnload
  146. } from "@dcloudio/uni-app";
  147. import {
  148. requestNew
  149. } from "@/utils/network/request";
  150. import {cardObuQuery,obuFileDataDecrypt,cardObuQueryinLog, saveRecord} from "@/utils/network/api";
  151. import {
  152. getVehicleType
  153. } from "@/subpackage/after-sale/js/vehicleType.js"
  154. import {
  155. getVehiclePlateColor
  156. } from "@/datas/vehiclePlateColor.js"
  157. import {
  158. decryptCardVehicleInformation
  159. } from "@/datas/publicRequest";
  160. const cmd = require("../../../static/etcUtil/cmdConfig.js");
  161. const tools = require("../../../static/etcUtil/tools.js");
  162. const datas = require("../../../static/etcUtil/datas.js");
  163. const bluetoothUtil = require("../../../static/etcUtil/index.js");
  164. const card = reactive({
  165. cardNo: "",
  166. startTime: "",
  167. endTime: "",
  168. userName: "",
  169. userNameStr:"",
  170. idNum: "",
  171. idNumStr:"",
  172. vehiclePlate: "",
  173. vehiclePlateColor: "",
  174. color: "",
  175. colorStr:"",
  176. version: "",
  177. type: "",
  178. typeStr:"",
  179. favourable: "",
  180. favourableStr:"",
  181. money: "",
  182. v_userType: ""
  183. })
  184. const obu = reactive({
  185. num: "",
  186. startTime: "",
  187. endTime: "",
  188. version: "",
  189. approvedCount: "",
  190. axleCount: "",
  191. axleDistance: "",
  192. engineNum: "",
  193. type: "",
  194. typeStr:"",
  195. userType: "",
  196. userTypeStr:"",
  197. vehiclePlate: "",
  198. vehiclePlateColor: "",
  199. vehiclePlateColorStr:"",
  200. vin: "",
  201. wheelCount: "",
  202. isJH: "",
  203. isJHStr: "",
  204. outsideDimensions: "",
  205. loadStatus:""
  206. })
  207. const state = reactive({
  208. vehicleId: "",
  209. obuStatus: "",
  210. cardStatus: "",
  211. cardTypeName: "",
  212. backIndex:""
  213. })
  214. onLoad((option) => {
  215. state.backIndex=option.backIndex
  216. getCardId()
  217. })
  218. /**
  219. * 获取卡号
  220. */
  221. const getCardId = () => {
  222. //执行0015文件
  223. tools.showLoadingAlert("执行指令");
  224. let cmdArr = [cmd.HOME_DIRECTORY, cmd.APPLICATION_DIRECTORY, cmd.CMD_READBINARY, cmd.CMD_GETBALANCE];
  225. console.log(cmdArr);
  226. console.log(bluetoothUtil);
  227. bluetoothUtil.transCmd(cmdArr, '10', function(res) { //10:写卡 20:写OBU
  228. console.log("5201",res)
  229. let str = res[2].substring(res[2].length - 4, res[2].length); //判断是否为9000
  230. let str3 = res[3].substring(res[3].length - 4, res[3].length); //判断是否为9000
  231. if (str == "9000" || str3 == "9000") {
  232. if (res[2].length > 86 || res[3] >= 12) {
  233. console.log("res[2]", res[2].substring(84, 86), getVehiclePlateColor(parseInt(res[2]
  234. .substring(82, 84), 16)), res[2].substring(18, 19))
  235. card.cardNo = res[2].substring(20, 40);
  236. card.startTime = res[2].substring(40, 48);
  237. card.endTime = res[2].substring(48, 56);
  238. card.version = res[2].substring(18, 20);
  239. card.money = res[3].substring(0, 8);
  240. card.v_userType = parseInt(res[2].substring(80, 82), 16);
  241. console.log("card.v_userType", card.v_userType)
  242. decryptCardVehicleInformation(res[2].substring(56, 80), function (res) {
  243. card.vehiclePlate =res;
  244. });
  245. console.log("res[2].substring(18, 19)",res[2].substring(18, 20))
  246. if (res[2].substring(18, 19) >= 4) {
  247. //4x卡
  248. card.type = parseInt(res[2].substring(84, 86), 16);
  249. card.typeStr = getVehicleType(parseInt(res[2].substring(84, 86), 16));
  250. card.color = parseInt(res[2].substring(82, 84), 16)
  251. card.colorStr = getVehiclePlateColor(parseInt(res[2].substring(82, 84), 16))
  252. } else {
  253. //2x卡--获取车牌颜色
  254. card.type = "--";
  255. card.color =parseInt(res[2].substring(82, 84), 16)
  256. card.colorStr = getVehiclePlateColor(parseInt(res[2].substring(82, 84), 16))
  257. card.typeStr = getVehicleType(parseInt(res[2].substring(84, 86), 16));
  258. }
  259. state.vehicleId = card.vehiclePlate + "_" + parseInt(res[2].substring(82, 84), 16)
  260. // 读卡信息
  261. // getCardList()
  262. //执行0016文件
  263. let arr = [cmd.HOME_DIRECTORY, cmd.PERSONAL_INFORMATION]
  264. bluetoothUtil.transCmd(arr, '10', function(res) {
  265. let str2 = res[1].substring(res[1].length - 4, res[1].length);
  266. if (str2 == "9000") {
  267. if (res[1].length > 108) {
  268. console.log("res====",res)
  269. decryptCardVehicleInformation(res[1].substring(4, 44), function (res) {
  270. card.userName = res; //姓名
  271. card.userNameStr = card.userName[0] + '*'.repeat(card.userName.length - 1)
  272. });
  273. decryptCardVehicleInformation(res[1].substring(44, 108), function (res) {
  274. card.idNum = res; //身份证号码
  275. card.idNumStr=res.replace(/^\d{14}/,'**************')
  276. });
  277. //获取是否有优惠
  278. let cmdArr3 = [cmd.HOME_DIRECTORY, cmd.APPLICATION_DIRECTORY, cmd
  279. .CMD_00B08E0000
  280. ];
  281. bluetoothUtil.transCmd(cmdArr3, '10', function(res) {
  282. let str3 = res[2].substring(res[2].length - 4, res[2]
  283. .length);
  284. if (str3 == "9000") {
  285. if (res[2].length > 131) {
  286. let _str = parseInt(res[2].substring(129, 130),
  287. 16);
  288. card.favourable=_str
  289. switch (_str) {
  290. case 0:
  291. card.favourableStr = "否";
  292. break;
  293. case 1:
  294. card.favourableStr = "是";
  295. break;
  296. default:
  297. card.favourableStr = '未知' + "_" + _str;
  298. break;
  299. }
  300. //回调读取OBU指令
  301. getObuId()
  302. tools.hideLoadingAlert();
  303. } else {
  304. alertF("CMD_00B08E0000指令长度不符" + res[2]);
  305. }
  306. return;
  307. }
  308. alertF(cmd.PERSONAL_INFORMATION + "_" + str);
  309. })
  310. } else {
  311. alertF("PERSONAL_INFORMATION指令长度不符" + res[1]);
  312. }
  313. return;
  314. }
  315. alertF("PERSONAL_INFORMATION指令长度不符" + res[1]);
  316. })
  317. } else {
  318. alertF("CMD_READBINARY指令长度不符" + res[2]);
  319. }
  320. return;
  321. }
  322. alertF("CMD_READBINARY指令长度不符" + res[2]);
  323. })
  324. };
  325. /**
  326. * 获取OBU号
  327. */
  328. const getObuId = () => {
  329. tools.showLoadingAlert("执行指令");
  330. let cmdArr = [cmd.HOME_DIRECTORY, cmd.OBU_SYSTEM_FILE];
  331. bluetoothUtil.transCmd(cmdArr, '20', function(res) {
  332. let str = res[1].substring(res[1].length - 4, res[1].length);
  333. if (str == "9000") {
  334. if (res[1].length > 52) {
  335. obu.num = res[1].substring(20, 36);
  336. obu.startTime = res[1].substring(36, 44);
  337. obu.endTime = res[1].substring(44, 52);
  338. obu.version = res[1].substring(18, 20);
  339. obu.isJH = res[1].substring(53, 54)
  340. obu.isJHStr = res[1].substring(53, 54) == "1" ? "是" : res[1].substring(53, 54) == "0" ?
  341. "否" : "其他:" + res[1].substring(53, 54);
  342. obu.loadStatus=res[1].substring(52, 54)=='01'?'正常':'已拆卸',
  343. console.log("开始执行车辆信息识读");
  344. let rand = res[1].substring(18, 20) >= 50?'40':'00';
  345. var arr = [cmd.OBU_DF01, '00B400000A000000000000000045'+ rand];
  346. bluetoothUtil.transCmd(arr, '20', function(res) {
  347. console.log(res);
  348. console.log("开始执行车辆信息识读成功");
  349. let str2 = res[1].substring(res[1].length - 4, res[1].length);
  350. let obuVersion = res[1].substring(18, 20);
  351. let keyIndex = obuVersion > 50 ? '40' : '00';
  352. let reqType = '00';
  353. let proviceCode = '5201';
  354. if (str2 == "9000") {
  355. console.log("===========", obu.num, res[1].substring(0, res[1].length - 4))
  356. decryptObuVehicleInfo(obu.num, res[1].substring(0, res[1].length - 4),
  357. obuVersion, rand, reqType, proviceCode,
  358. function(res) {
  359. obu.approvedCount = res.approvedCount;
  360. obu.axleCount = res.axleCount;
  361. obu.axleDistance = res.axleDistance;
  362. obu.engineNum = res.engineNumber.replace(/\u0000/g, '');
  363. obu.type = res.collectionType;
  364. obu.typeStr = getVehicleType(res.collectionType);
  365. obu.userType = res.userType;
  366. if(res.userType == 0){
  367. obu.userTypeStr = "普通车" ;
  368. }else if(res.userType == 6){
  369. obu.userTypeStr = "公务车" ;
  370. }
  371. obu.vehiclePlate = res.vehiclePlate.replace(/\u0000/g, '');
  372. //获取车牌颜色
  373. obu.vehiclePlateColor = res.vehiclePlateColor;
  374. obu.vehiclePlateColorStr = getVehiclePlateColor(res.vehiclePlateColor);
  375. obu.vin = res.vin.replace(/\u0000/g, '');
  376. obu.wheelCount = res.wheelsCount;
  377. obu.outsideDimensions = res.carLong + "x" + res.carWidth + "x" + res.carHeight
  378. getObuList();
  379. tools.hideLoadingAlert();
  380. });
  381. //断开蓝牙
  382. bluetoothUtil.disconnectDevice();
  383. tools.showToastAlert("蓝牙已断开");
  384. console.log('蓝牙已断开=========')
  385. return;
  386. }
  387. alertF("OBU_00B400000A+rand+OBU_4F00指令长度不符" + res[1]);
  388. })
  389. } else {
  390. alertF("OBU_SYSTEM_FILE指令长度不符" + res[1]);
  391. }
  392. return;
  393. }
  394. alertF("OBU_SYSTEM_FILE指令长度不符" + res[1]);
  395. })
  396. };
  397. const saveRecordApi = () => {
  398. const options = {
  399. type: 2,
  400. data: {
  401. approvedCount: obu.approvedCount, // 核定载人数
  402. axleCount: obu.axleCount, // 车轴数
  403. axleDistance: obu.axleDistance, // 轴距
  404. bindingFinishStatus: card.favourableStr, // 卡签绑定完成状态
  405. cardEnableTime: card.startTime, // 卡启用时间
  406. cardExpireTime: card.endTime, // 卡过期时间
  407. cardId: card.cardNo, // 卡号
  408. cardVehiclePlate: card.vehiclePlate, // 车牌号码
  409. cardVehiclePlateColor: card.colorStr, // 车牌颜色
  410. cardVehicleType: card.typeStr, // 行驶证车辆类型
  411. cardVersion: card.version, // 卡版本号
  412. checksums: card.money, // 校验值
  413. customerIdNum: card.idNumStr, // 身份证号
  414. customerName: card.userNameStr, // 用户姓名
  415. isActive: state.cardStatus, // 是否激活
  416. loadStatus: obu.loadStatus, // 拆卸状态
  417. obuEnableTime: obu.startTime, // 启用时间
  418. obuExpireTime: obu.endTime, // 到期时间
  419. obuId: obu.num, // obu编号
  420. obuVehicleCustomerType: obu.userTypeStr, // 车辆用户类型
  421. obuVehiclePlate: obu.vehiclePlate, // 车牌号码
  422. obuVehiclePlateColor: obu.vehiclePlateColorStr, // 车牌颜色
  423. obuVehicleType: obu.typeStr, // 行驶证车辆类型
  424. obuVersion: obu.version ,// obu版本号
  425. vehicleDimensions: obu.outsideDimensions, // 外廓尺寸
  426. vehicleEngineNum: obu.engineNum, // 发动机号码
  427. vin: obu.vin, // 车辆识别代码
  428. wheelCount: obu.wheelCount, // 车轮数
  429. },
  430. method: "POST",
  431. showLoading: false,
  432. };
  433. requestNew(saveRecord, options).then((res) => {
  434. console.log("saveRecord", card, obu, state)
  435. });
  436. }
  437. /**
  438. * 解密OBU车辆信息
  439. */
  440. const decryptObuVehicleInfo = (num, data,obuVersion, keyIndex, reqType, proviceCode, func) => {
  441. const options = {
  442. type: 2,
  443. data: {
  444. contractSN: num,
  445. cipherData: data,
  446. reqType: reqType,
  447. keyIndex: keyIndex,
  448. proviceCode: proviceCode
  449. },
  450. method: "POST",
  451. showLoading: true,
  452. };
  453. requestNew(obuFileDataDecrypt, options).then((res) => {
  454. console.log("obuFileDataDecrypt",res)
  455. const data =res
  456. func(data)
  457. });
  458. };
  459. //返回按钮
  460. const back = () => {
  461. uni.$emit("refreshOrder");
  462. if(state.backIndex=="1"){
  463. uni.switchTab({
  464. url: "/pages/index/index"
  465. })
  466. }else{
  467. uni.redirectTo({
  468. url: "/pages/order/order"
  469. })
  470. }
  471. }
  472. //提示对话框
  473. const alertF = (msg) => {
  474. //隐藏加载框
  475. tools.hideLoadingAlert();
  476. //提示对话框
  477. tools.showModalAlert(msg);
  478. }
  479. const getObuList = () => {
  480. var data = {
  481. obuId: obu.num,
  482. cardId:card.cardNo,
  483. };
  484. const options = {
  485. type: 2,
  486. data: data,
  487. method: "POST",
  488. showLoading: true,
  489. };
  490. requestNew(cardObuQuery, options).then((res) => {
  491. tools.hideLoadingAlert();
  492. let result = res;
  493. state.obuStatus = result.obuStatus?result.obuStatus:""
  494. state.cardStatus = result.cardStatus
  495. if (result.cardType == 1 && result.debitType == 1) {
  496. state.cardTypeName = "预存卡"
  497. card['cardTypeName']=3
  498. } else if (result.cardType == 2) {
  499. state.cardTypeName = "储值卡"
  500. card['cardTypeName']=2
  501. } else {
  502. state.cardTypeName = "记账卡"
  503. card['cardTypeName']=1
  504. }
  505. // 卡签提交得信息
  506. card['cardStatus']=result.cardStatus
  507. obu['obuStatus']=result.obuStatus?result.obuStatus:""
  508. cardObuMsgUp()
  509. })
  510. }
  511. // 签信息提交日志记录
  512. const cardObuMsgUp = () => {
  513. var data = {
  514. cardLogInfo: card,
  515. obuLogInfo:obu,
  516. type:"normal"
  517. };
  518. const options = {
  519. type: 2,
  520. data: data,
  521. method: "POST",
  522. showLoading: true,
  523. };
  524. requestNew(cardObuQueryinLog, options).then((res) => {
  525. tools.hideLoadingAlert();
  526. saveRecordApi();
  527. console.log("提交成功")
  528. })
  529. }
  530. </script>
  531. <style scoped>
  532. .wrapper {
  533. padding-bottom: 50rpx;
  534. background: #E9EDF0;
  535. overflow: hidden;
  536. }
  537. .info-card {
  538. margin: 30rpx;
  539. border-radius: 16rpx;
  540. padding-bottom: 40rpx;
  541. background-color: white;
  542. padding: 0 30rpx;
  543. box-sizing: border-box;
  544. }
  545. .info-card .title {
  546. padding: 30rpx 0;
  547. font-size: 36rpx;
  548. text-align: center;
  549. color: #01243A;
  550. }
  551. .info-card .cell {
  552. display: flex;
  553. flex-direction: row;
  554. padding: 18rpx 0rpx;
  555. font-size: 30rpx;
  556. border-bottom: 1rpx solid #E6E9EB;
  557. }
  558. .cell-left {
  559. flex: 1;
  560. text-align: left;
  561. color: #6C6C6C;
  562. }
  563. .cell-right {
  564. margin-left: 30rpx;
  565. text-align: right;
  566. color: #111111;
  567. overflow: hidden;
  568. }
  569. .btn {
  570. background: linear-gradient(to right,#01243A,#004576);
  571. opacity: 1;
  572. border-radius: 100rpx;
  573. color: #fff;
  574. font-size: 30rpx;
  575. height: 80rpx;
  576. line-height: 80rpx;
  577. box-shadow: 0rpx 4rpx 11rpx 1rpx rgba(223, 223, 223, 0.5);
  578. width: 670rpx;
  579. margin: 40rpx;
  580. text-align: center;
  581. }
  582. </style>