projectOut.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810
  1. <template>
  2. <div>
  3. <!-- 顶部条-->
  4. <van-nav-bar class="navBar" title="拜访" left-arrow @click-left="onClickLeft" />
  5. <!-- 主体内容-->
  6. <div class="container">
  7. <div class="lineGrey"></div>
  8. <div class="card mt10">
  9. <div class="title f-blue">
  10. {{ storeName }}(<span style="color: #0057ba">{{ urlParameter.storeCode }}</span
  11. >)
  12. </div>
  13. <div class="info1" v-if="addressLine != null">类型:{{ storeCategory }}</div>
  14. <div class="info1" v-if="addressLine != null">地址:{{ addressLine }}</div>
  15. <van-button
  16. type="info"
  17. style="background: rgb(0, 87, 186); color: #fff; margin: 10px 0; border-radius: 5px"
  18. size="small"
  19. plain
  20. class="centerBtn"
  21. @click="visitFn(urlParameter.storeCode)"
  22. >经营情况</van-button
  23. >
  24. <van-button
  25. type="info"
  26. style="background: rgb(0, 87, 186); color: #fff; margin: 10px; border-radius: 5px"
  27. size="small"
  28. plain
  29. v-if="showOrderButton"
  30. class="centerBtn"
  31. @click="overbookingFn(urlParameter)"
  32. >去下单</van-button
  33. >
  34. <van-button
  35. type="info"
  36. v-if="closeProject == '0'"
  37. style="
  38. float: right;
  39. background: #ed5565;
  40. border-color: #ed5565;
  41. color: #fff;
  42. margin: 10px 0;
  43. border-radius: 5px;
  44. "
  45. size="small"
  46. plain
  47. class="centerBtn"
  48. @click="onstopVisit">
  49. 取消项目</van-button
  50. >
  51. </div>
  52. <div class="card">
  53. <div
  54. class="info"
  55. v-for="(item, index) in list"
  56. :key="index"
  57. @click="addStoreVisit(item, index)">
  58. <span class="must" v-show="item.isMust == '0' || item.isMust == '2'">*</span>
  59. <span class="must" v-show="item.isMust != '0' && item.isMust != '2'">&nbsp;</span>
  60. <p style="width: 90%; margin: 0; line-height: 24px; display: inline-block">
  61. {{ item.taskName }}
  62. </p>
  63. <!-- -->
  64. <span v-show="item.processKey != null"><van-icon :name="sp" size="16" /></span>
  65. <span v-show="!item.success" class="arrow" style="background-color: #fff; color: #444"
  66. ><van-icon name="arrow"
  67. /></span>
  68. <span v-show="item.success" class="arrow" style="background-color: #0057ba"
  69. ><van-icon name="success"
  70. /></span>
  71. </div>
  72. </div>
  73. </div>
  74. <div class="tc" style="padding: 0 16px" v-if="closeProject == '0'">
  75. <van-button
  76. v-if="!stopTime"
  77. class="submitBtn"
  78. block
  79. type="info"
  80. color="#0057ba"
  81. @click="endVisitsFn"
  82. >提交项目</van-button
  83. >
  84. </div>
  85. <br />
  86. <div id="allmap"></div>
  87. </div>
  88. </template>
  89. <script>
  90. import sp from './../../assets/sp.png';
  91. import {
  92. getStoreGroupTask,
  93. endVisits,
  94. editDwellTime,
  95. suishenbangStoreSale,
  96. stopVisit,
  97. buryingPoint,
  98. } from '@/api/index';
  99. import axios from 'axios';
  100. import { getOrderUrlByStoreId } from '@/api/inventory';
  101. export default {
  102. name: 'outstoreVisit',
  103. data() {
  104. return {
  105. notes: '',
  106. visitModel: '1',
  107. sp: sp,
  108. uploadshow: false,
  109. closeProject: '',
  110. flag: true,
  111. questionsshow: false,
  112. uploadImgshow: false,
  113. imgs: [],
  114. uploadImages: [],
  115. uploadid1: 'uploadid1',
  116. uploadid2: 'uploadid2',
  117. iscuxiao: false,
  118. text: '',
  119. radio: '',
  120. isEdit: false,
  121. storeId: '',
  122. rdId: '',
  123. lat: '',
  124. lon: '',
  125. list: [],
  126. storeGroupId: '',
  127. visitId: '',
  128. addressLine: '',
  129. storeCategory: '',
  130. storeName: '',
  131. contactName: '',
  132. urlParameter: '',
  133. uType: '-1',
  134. showOrderButton: null,
  135. location: {
  136. lat: '34.6174',
  137. lon: '112.44039',
  138. },
  139. address: '',
  140. showTime: '00:00:00:00',
  141. city: '',
  142. locationAccuracy: '',
  143. id: '89',
  144. startTime: null,
  145. timeN: null,
  146. stopTime: '',
  147. };
  148. },
  149. created() {
  150. this.urlParameter = this.$route.query;
  151. this.storeId = this.$route.query.storeId + '';
  152. this.visitId = this.$route.query.visitId;
  153. this.stopTime = this.$route.query.stopTime;
  154. this.storeCode = this.$route.query.storeCode;
  155. this.rdId = this.$route.query.rdId + '';
  156. this.addressLine = this.$route.query.addressLine;
  157. this.storeCategory = this.$route.query.storeCategory;
  158. this.storeName = this.$route.query.storeName;
  159. this.contactName = this.$route.query.contactName;
  160. this.lat = this.$route.query.lat + '';
  161. this.lon = this.$route.query.lon + '';
  162. this.visitModel = this.$route.query.visitModel + '';
  163. this.uType = localStorage.getItem('uType');
  164. },
  165. beforeRouteLeave(to, from, next) {
  166. if (
  167. (to.path == '/outsidelist/index' && from.path == '/suishenbangOutstoreVisit') ||
  168. (to.path == '/storeAdd' && from.path == '/suishenbangOutstoreVisit')
  169. ) {
  170. if (this.visitId != null && this.visitId != '') {
  171. this.editDwellTimes();
  172. }
  173. }
  174. next();
  175. },
  176. activated() {
  177. this.urlParameter = this.$route.query;
  178. this.storeId = this.$route.query.storeId + '';
  179. this.visitId = this.$route.query.visitId;
  180. this.stopTime = this.$route.query.stopTime;
  181. this.storeCode = this.$route.query.storeCode;
  182. this.rdId = this.$route.query.rdId + '';
  183. this.addressLine = this.$route.query.addressLine;
  184. this.storeCategory = this.$route.query.storeCategory;
  185. this.storeName = this.$route.query.storeName + '';
  186. this.contactName = this.$route.query.contactName + '';
  187. this.lat = this.$route.query.lat + '';
  188. this.lon = this.$route.query.lon + '';
  189. this.list = [];
  190. this.visitModel = this.$route.query.visitModel + '';
  191. this.uType = localStorage.getItem('uType');
  192. if (localStorage.getItem('PGID') != null) {
  193. this.visitId = localStorage.getItem('PGID');
  194. setTimeout(() => {
  195. this.addVisits();
  196. this.timeN = setInterval(this.animation, 16);
  197. });
  198. } else {
  199. setTimeout(() => {
  200. this.addVisits();
  201. this.timeN = setInterval(this.animation, 16);
  202. });
  203. }
  204. },
  205. methods: {
  206. animation() {
  207. //前时间减去上次开启时间减去暂停累计时间
  208. var times = new Date().getTime() - new Date(this.startTime).getTime();
  209. var house = Math.floor(times / 3600000); //毫秒转化为分钟
  210. var minutes = Math.floor(times / 60000 - house * 60); //毫秒转化为分钟
  211. var minutes1 = Math.floor(times / 60000); //毫秒转化为分钟
  212. var seconds = Math.floor((times - minutes1 * 60000) / 1000); //已知分钟将time减去分钟 除去1000得出 秒
  213. var ms = Math.floor((times - minutes1 * 60000 - seconds * 1000) / 10); //
  214. this.showTime =
  215. (house < 10 ? '0' + house : house) +
  216. ':' +
  217. (minutes < 10 ? '0' + minutes : minutes) +
  218. ':' +
  219. (seconds < 10 ? '0' + seconds : seconds) +
  220. ':' +
  221. (ms < 10 ? '0' + ms : ms);
  222. },
  223. // 结束拜访
  224. onstopVisit() {
  225. this.$dialog
  226. .confirm({
  227. confirmButtonText: '确定',
  228. cancelButtonText: '取消',
  229. title: '系统提示',
  230. message: '是否确认结束项目?',
  231. })
  232. .then(() => {
  233. stopVisit({ visitsId: this.visitId }).then((res) => {
  234. if (res.code == 200) {
  235. this.$dialog
  236. .alert({
  237. title: '系统提示',
  238. message: '项目结束成功!',
  239. })
  240. .then(() => {
  241. this.$router.go(-1);
  242. });
  243. } else {
  244. // this.$dialog.alert({
  245. // title: '系统提示',
  246. // message: res.data.msg,
  247. // })
  248. }
  249. });
  250. });
  251. },
  252. overbookingFn(val) {
  253. buryingPoint({
  254. systemModel: '拜访页',
  255. buryingPointType: 1,
  256. buryingPointValue: val.storeName + '(' + val.storeCode + ')',
  257. buryingPointName: '去下单',
  258. buryingPointPosition: '拜访页',
  259. });
  260. this.toastLoading(0, '加载中...', true);
  261. getOrderUrlByStoreId({
  262. storeId: this.$route.query.storeId,
  263. from: this.$route.query.from,
  264. }).then((res) => {
  265. this.toastLoading().clear();
  266. if (res.code == 200 && res.data) {
  267. window.location.href = res.data;
  268. } else {
  269. this.Toast({
  270. message: res.msg,
  271. duration: 5000,
  272. });
  273. }
  274. });
  275. },
  276. visitFn(val) {
  277. var that = this;
  278. suishenbangStoreSale({ storeCode: val }).then((res) => {
  279. if (res.code == 200) {
  280. if (res.data.num != '0') {
  281. window.location.href =
  282. process.env.VUE_APP_SSB_LINK + '/order/storeDetail/index?shopCode=' + val;
  283. } else {
  284. that.$toast(res.data.msg);
  285. }
  286. } else {
  287. that.$toast(res.msg);
  288. }
  289. });
  290. },
  291. getLocation() {
  292. let loading1 = this.$toast.loading({
  293. duration: 0,
  294. message: '加载中...',
  295. forbidClick: true,
  296. });
  297. this.list = [];
  298. let url = window.location.href;
  299. let that = this;
  300. let wx = this.wx;
  301. let qiyeData;
  302. const instance = axios.create();
  303. instance.defaults.headers.common['userId'] = localStorage.getItem('loginName');
  304. instance
  305. .get(process.env.VUE_APP_BASE_API + 'mobile/wx/ticket', {
  306. params: {
  307. url: url,
  308. },
  309. })
  310. .then((response) => {
  311. if (response.status == 200) {
  312. loading1.clear();
  313. qiyeData = response.data.data;
  314. wx.config({
  315. beta: true, // 必须这么写,否则wx.invoke调用形式的jsapi会有问题
  316. debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
  317. appId: qiyeData.appId, // 必填,企业微信的corpID
  318. timestamp: qiyeData.timestamp, // 必填,生成签名的时间戳
  319. nonceStr: qiyeData.nonceStr, // 必填,生成签名的随机串
  320. signature: qiyeData.signature, // 必填,签名,见 附录-JS-SDK使用权限签名算法
  321. jsApiList: ['ready', 'getLocation'], // 必填,需要使用的JS接口列表,凡是要调用的接口都需要传进来
  322. });
  323. wx.ready(function () {
  324. wx.getLocation({
  325. type: 'gcj02',
  326. success: function (res) {
  327. var location = that.CJ02BD(res.latitude, res.longitude);
  328. that.location = location;
  329. if (that.urlParameter.lat == '' || that.urlParameter.lat == null) {
  330. that.lat = that.location.lat;
  331. that.lon = that.location.lon;
  332. }
  333. let PointSum = that
  334. .twoPointSum(that.lat, that.lon, location.lat, location.lon)
  335. .toFixed(2);
  336. if (PointSum > 500) {
  337. that.visitModel = '5';
  338. localStorage.setItem('visitModel', '5');
  339. that.$dialog
  340. .confirm({
  341. confirmButtonText: '确定',
  342. cancelButtonText: '重新定位',
  343. title: '系统提示',
  344. message: '距离本店距离差距太大',
  345. })
  346. .then(() => {
  347. that.addVisits();
  348. })
  349. .catch(() => {
  350. that.getLocation();
  351. });
  352. } else {
  353. that.addVisits();
  354. }
  355. },
  356. fail: function () {
  357. that.$dialog
  358. .alert({
  359. message: 'GPS未开启',
  360. })
  361. .then(() => {
  362. that.getLocation();
  363. });
  364. },
  365. });
  366. });
  367. }
  368. });
  369. },
  370. editDwellTimes() {
  371. let dwellTime = this.weekend(localStorage.getItem('startTime'), new Date()) + '';
  372. editDwellTime({ dwellTime: dwellTime, visitsId: this.visitId }).then((res) => {
  373. if (res.code == 200) {
  374. // localStorage.removeItem("PGID")
  375. }
  376. });
  377. },
  378. weekend(time1) {
  379. var arrtime1 = new Date(time1).getTime();
  380. var arrtime2 = new Date().getTime();
  381. return Math.round((arrtime2 - arrtime1) / 1000);
  382. },
  383. addVisits() {
  384. this.startTime = new Date();
  385. this.closeProject = this.$route.query.closeProject;
  386. var visitEntry = '';
  387. if (this.urlParameter.tabVal == '0') {
  388. visitEntry = '2';
  389. } else {
  390. visitEntry = '1';
  391. }
  392. if (this.$route.query.shopCode != undefined) {
  393. this.storeCode = this.$route.query.shopCode;
  394. }
  395. var that = this;
  396. var map = new TMap.Map('allmap', {
  397. zoom: 14,
  398. center: new TMap.LatLng(39.986785, 116.301012),
  399. });
  400. var geocoder = new TMap.service.Geocoder();
  401. var markers = new TMap.MultiMarker({
  402. map: map,
  403. geometries: [],
  404. });
  405. markers.setGeometries([]);
  406. var input = [that.urlParameter.marklat, that.urlParameter.marklon];
  407. var location = new TMap.LatLng(Number(input[0]), Number(input[1]));
  408. geocoder.getAddress({ location: location }).then(
  409. function (result) {
  410. var addresses = result.result.formatted_addresses;
  411. var params = {
  412. storeId: that.storeId,
  413. storeCode: that.storeCode,
  414. visitEntry: visitEntry,
  415. lat: that.$route.query.lat,
  416. lon: that.$route.query.lon,
  417. visitModel: that.visitModel,
  418. routeDetailsId: that.rdId,
  419. visitSource: '1',
  420. locationCity: '',
  421. projectVisit: 1,
  422. locationRemark: addresses.recommend,
  423. locationAccuracy: that.urlParameter.PointSum,
  424. };
  425. that.locationAccuracy = that.urlParameter.PointSum;
  426. that.city = '';
  427. that.address = addresses.recommend;
  428. localStorage.setItem('address', '');
  429. if (that.visitId != null) {
  430. params.id = that.visitId;
  431. }
  432. let loading2 = that.$toast.loading({
  433. duration: 0,
  434. message: '加载中...',
  435. forbidClick: true,
  436. });
  437. getStoreGroupTask(params).then((res) => {
  438. loading2.clear();
  439. if (res.code == 200) {
  440. localStorage.setItem('PGID', res.data.visitId);
  441. that.notes = res.data.notes;
  442. that.visitId = res.data.visitId;
  443. that.list = res.data.sfaTaskList;
  444. that.storeGroupId = res.data.storeGroupId;
  445. that.showOrderButton = res.data.showOrderButton;
  446. }
  447. });
  448. },
  449. function (err) {
  450. var params = {
  451. storeId: that.storeId,
  452. storeCode: that.storeCode,
  453. visitEntry: visitEntry,
  454. lat: that.$route.query.lat,
  455. lon: that.$route.query.lon,
  456. visitModel: that.visitModel,
  457. routeDetailsId: that.rdId,
  458. visitSource: '1',
  459. locationCity: '',
  460. projectVisit: 1,
  461. locationRemark: '',
  462. locationAccuracy: that.urlParameter.PointSum,
  463. };
  464. that.locationAccuracy = that.urlParameter.PointSum;
  465. that.city = '';
  466. that.address = '';
  467. localStorage.setItem('address', '');
  468. if (that.visitId != null) {
  469. params.id = that.visitId;
  470. }
  471. let loading2 = that.$toast.loading({
  472. duration: 0,
  473. message: '加载中...',
  474. forbidClick: true,
  475. });
  476. getStoreGroupTask(params).then((res) => {
  477. loading2.clear();
  478. if (res.code == 200) {
  479. localStorage.setItem('PGID', res.data.visitId);
  480. that.notes = res.data.notes;
  481. that.visitId = res.data.visitId;
  482. that.list = res.data.sfaTaskList;
  483. that.storeGroupId = res.data.storeGroupId;
  484. that.showOrderButton = res.data.showOrderButton;
  485. }
  486. });
  487. }
  488. );
  489. },
  490. addStoreVisit(val, index) {
  491. if (this.closeProject == '0') {
  492. this.$router.push({
  493. path: '/addStoreVisitP',
  494. query: {
  495. storeId: this.storeId,
  496. storeCode: this.urlParameter.storeCode,
  497. visitId: this.visitId,
  498. ids: index,
  499. taskId: val.taskId,
  500. storeGroupId: this.storeGroupId,
  501. taskType: val.taskType,
  502. photoType: val.photoType,
  503. lat: this.lat,
  504. lon: this.lon,
  505. visitSource: '1',
  506. visitModel: this.visitModel,
  507. locationCity: this.city,
  508. locationRemark: this.address,
  509. locationAccuracy: this.locationAccuracy,
  510. },
  511. });
  512. } else {
  513. this.$router.push({
  514. path: '/addStoreVisitd',
  515. query: {
  516. storeId: this.storeId,
  517. storeCode: this.urlParameter.storeCode,
  518. visitId: this.visitId,
  519. ids: index,
  520. taskId: val.taskId,
  521. storeGroupId: this.storeGroupId,
  522. taskType: val.taskType,
  523. photoType: val.photoType,
  524. lat: this.lat,
  525. lon: this.lon,
  526. visitSource: '1',
  527. visitModel: this.visitModel,
  528. locationCity: this.city,
  529. locationRemark: this.address,
  530. locationAccuracy: this.locationAccuracy,
  531. },
  532. });
  533. }
  534. },
  535. onClickLeft() {
  536. this.$router.go(-1);
  537. },
  538. endVisitsFn() {
  539. if (this.list.length == 0) {
  540. this.$toast('暂无任务提交');
  541. return;
  542. }
  543. for (var vl = 0; vl < this.list.length; vl++) {
  544. if (this.list[vl].isMust == '0') {
  545. if (!this.list[vl].success) {
  546. this.$toast(this.list[vl].taskName + '任务未完成');
  547. return;
  548. }
  549. }
  550. }
  551. let loading1 = this.$toast.loading({
  552. duration: 0,
  553. message: '加载中...',
  554. forbidClick: true,
  555. });
  556. let dwellTime = this.weekend(localStorage.getItem('startTime'), new Date());
  557. let storeCode = this.storeCode;
  558. if (this.$route.query.shopCode != undefined) {
  559. storeCode = this.$route.query.shopCode;
  560. }
  561. if (this.flag) {
  562. this.flag = false;
  563. this.timer = null;
  564. this.timer = setTimeout(() => {
  565. this.flag = true;
  566. }, 5000);
  567. endVisits({
  568. visitSource: '1',
  569. storeGroupId: this.storeGroupId,
  570. id: this.visitId,
  571. storeCode: storeCode,
  572. dwellTime: dwellTime,
  573. visitModel: this.$route.query.visitModel,
  574. }).then((res) => {
  575. this.flag = true;
  576. loading1.clear();
  577. if (res.code == 200) {
  578. this.editDwellTimes();
  579. this.$router.go(-1);
  580. // window.location.replace(window.location.origin + "/mobile/storeGroup")
  581. }
  582. });
  583. }
  584. },
  585. newimgarr1(val) {
  586. this.imgs = val;
  587. },
  588. uploadImgShowFn() {
  589. this.uploadImgshow = true;
  590. if (this.uploadImages.length <= 0) {
  591. this.uploadImgEditText = '';
  592. }
  593. },
  594. previewsImg(index) {
  595. ImagePreview({
  596. images: this.uploadImages,
  597. startPosition: index,
  598. onClose() {
  599. // do something
  600. },
  601. });
  602. },
  603. },
  604. destroyed() {
  605. this.timeN = null;
  606. clearInterval(this.timeN);
  607. },
  608. };
  609. </script>
  610. <style lang="scss" scoped>
  611. .container {
  612. margin-bottom: 10px;
  613. background-color: white;
  614. /*padding:0 16px;*/
  615. }
  616. .navBarOverlay {
  617. background: #fff;
  618. }
  619. .card {
  620. background: #fff;
  621. box-sizing: border-box;
  622. padding: 10px 16px;
  623. .title {
  624. line-height: 32px;
  625. font-size: 16px;
  626. font-weight: bold;
  627. color: #333;
  628. }
  629. .subtitle {
  630. line-height: 24px;
  631. font-size: 14px;
  632. color: #7b7b7b;
  633. .status {
  634. float: right;
  635. }
  636. }
  637. .info {
  638. font-size: 14px;
  639. color: #484848;
  640. padding: 14px;
  641. border-bottom: 1px solid #f1f1f1;
  642. position: relative;
  643. .arrow {
  644. float: right;
  645. display: inline-block;
  646. height: 20px;
  647. width: 20px;
  648. line-height: 20px;
  649. text-align: center;
  650. border-radius: 50%;
  651. background: #0057ba;
  652. color: #fff;
  653. font-weight: bold;
  654. font-size: 14px;
  655. position: absolute;
  656. margin-top: -10px;
  657. right: 0;
  658. top: 50%;
  659. }
  660. }
  661. .info1 {
  662. font-size: 14px;
  663. color: #666;
  664. line-height: 18px;
  665. padding: 4px 0;
  666. position: relative;
  667. .arrow {
  668. float: right;
  669. display: inline-block;
  670. height: 20px;
  671. width: 20px;
  672. line-height: 20px;
  673. text-align: center;
  674. border-radius: 50%;
  675. background: #0057ba;
  676. color: #fff;
  677. font-weight: bold;
  678. font-size: 14px;
  679. margin-top: 9px;
  680. position: absolute;
  681. right: 0;
  682. top: 50%;
  683. margin-top: -10px;
  684. }
  685. }
  686. }
  687. .must {
  688. font-size: 18px;
  689. color: #f56c6c;
  690. margin-right: 2px;
  691. }
  692. .zw {
  693. display: inline-block;
  694. width: 7px;
  695. height: 100%;
  696. }
  697. .lineGrey {
  698. height: 10px;
  699. width: 100%;
  700. background: #f1f1f1;
  701. }
  702. .submitBtn {
  703. margin: 16px 0;
  704. font-size: 18px;
  705. }
  706. .wrapper {
  707. display: flex;
  708. align-items: center;
  709. justify-content: center;
  710. height: 100%;
  711. .block {
  712. width: 100%;
  713. height: 100%;
  714. background-color: #fff;
  715. overflow: auto;
  716. }
  717. }
  718. .questionName {
  719. font-size: 16px;
  720. color: #484848;
  721. /*line-height: 40px;*/
  722. background: #f4f4f4;
  723. padding: 10px 15px;
  724. box-sizing: border-box;
  725. position: relative;
  726. display: flex;
  727. justify-content: center;
  728. .text {
  729. flex: 9;
  730. }
  731. }
  732. .answerDiv {
  733. background: #fff;
  734. padding: 0 15px 10px;
  735. .answerItem {
  736. padding: 10px 0;
  737. border-bottom: 1px solid #dedede;
  738. .name {
  739. line-height: 36px;
  740. font-size: 14px;
  741. color: #8b8b8b;
  742. }
  743. }
  744. }
  745. .border {
  746. border: 1px solid #dedede;
  747. }
  748. .ht30 {
  749. height: 30px;
  750. }
  751. .bodrder-b {
  752. border-bottom: 1px solid #dedede;
  753. }
  754. .img-box {
  755. width: 50%;
  756. /*height: 100%;*/
  757. position: relative;
  758. padding: 10px;
  759. display: inline-block;
  760. i {
  761. position: absolute;
  762. right: 2px;
  763. top: 2px;
  764. }
  765. img {
  766. width: 100%;
  767. height: 100%;
  768. }
  769. }
  770. .imgNull {
  771. text-align: center;
  772. padding-top: 100px;
  773. i {
  774. color: #dedede;
  775. }
  776. div {
  777. padding-top: 30px;
  778. font-size: 18px;
  779. font-weight: bold;
  780. }
  781. }
  782. .card .f-blue {
  783. color: #0057ba;
  784. }
  785. </style>
  786. <style>
  787. .navBarOverlay .van-nav-bar__left .van-icon {
  788. color: #8b8b8b;
  789. }
  790. .navBarOverlay .van-nav-bar__right .van-nav-bar__text {
  791. color: #333;
  792. }
  793. .ht30 .van-radio__label {
  794. color: #8b8b8b;
  795. }
  796. .van-dialog__confirm,
  797. .van-dialog__confirm:active {
  798. color: #0057ba;
  799. }
  800. #allmap {
  801. width: 20px;
  802. height: 20px;
  803. left: -1000px;
  804. position: relative;
  805. }
  806. </style>