index.vue 46 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390
  1. <template>
  2. <div class="bgcolor home">
  3. <div class="header">
  4. <van-nav-bar class="navBar" :title="$route.meta.title">
  5. <template #left>
  6. <span @click="login" style="display: block; width: 50px; height: 100%"></span>
  7. </template>
  8. <template #right>
  9. <span @click="searchFn">筛选<van-icon name="arrow-down" /></span>
  10. </template>
  11. </van-nav-bar>
  12. <div class="searchDiv">
  13. <van-search
  14. v-model="chainsName"
  15. left-icon="search"
  16. show-action
  17. placeholder="搜索名称/编号"
  18. @clear="clearFn">
  19. <template #action>
  20. <div @click="onSearchm">搜索</div>
  21. </template>
  22. </van-search>
  23. </div>
  24. <van-tabs class="myTab" type="card" v-model="tabVal" color="#0057ba" @change="tabChange">
  25. <van-tab title="销售部" name="0" :disabled="disabled"></van-tab>
  26. <van-tab title="我的" name="1" :disabled="disabled"></van-tab>
  27. </van-tabs>
  28. </div>
  29. <div class="content" id="content" @touchmove="handleTouch">
  30. <van-pull-refresh v-model="isLoading" @refresh="onRefresh">
  31. <van-list
  32. class="myList"
  33. v-model="loading"
  34. :finished="finished"
  35. finished-text="--已经到底了--"
  36. @load="onLoad">
  37. <div class="cellcontent" v-for="(item, index) in list" :key="index" v-if="list.length">
  38. <van-cell>
  39. <div class="card">
  40. <div class="title titlero">
  41. <span @click="goOtherSystem(item)" :style="setStroeNameStyle(item)">
  42. <span>{{ item.chainName }}</span>
  43. (<span>{{ item.chainCode }}</span
  44. >)
  45. </span>
  46. <span class="btn" :data-clipboard-text="item.chainCode">
  47. <van-icon
  48. :name="require('@/assets/icon/paste.png')"
  49. color="#ee0a24"
  50. size="20"
  51. style="top: 6px; margin-left: 4px" />
  52. </span>
  53. </div>
  54. <div class="info" style="position: relative">
  55. 身份类型:{{ item.typeName2 }}
  56. <div style="position: absolute; bottom: 0px; right: 0px" v-if="false">
  57. <!-- 凤凰客户 -->
  58. <el-popover
  59. popper-class="zpover"
  60. placement="bottom"
  61. width="120"
  62. trigger="click"
  63. content="该客户为凤凰客户">
  64. <div
  65. v-if="item.storeLabels && item.storeLabels.fhCustomer"
  66. class="visitStoreIco"
  67. style="background-color: #fff"
  68. slot="reference">
  69. <van-icon :name="require('@/assets/icon/fenghuangjihua.png')" size="26" />
  70. </div>
  71. </el-popover>
  72. <!-- 本月已出货 -->
  73. <el-popover
  74. popper-class="zpover"
  75. placement="bottom"
  76. width="120"
  77. trigger="click"
  78. content="本月已出货">
  79. <div
  80. v-if="item.storeLabels && item.storeLabels.fhCustomer"
  81. class="visitStoreIco"
  82. style="background-color: #fff"
  83. slot="reference">
  84. <van-icon :name="require('@/assets/icon/fenghuangjihua.png')" size="26" />
  85. </div>
  86. </el-popover>
  87. <el-popover
  88. popper-class="zpover zpover6"
  89. placement="bottom-start"
  90. trigger="click">
  91. <div>
  92. <p>
  93. 本店{{ timeData }}下单SKU数:<a
  94. @click="linkList(item)"
  95. style="text-decoration: underline"
  96. >点击查看详情</a
  97. >
  98. </p>
  99. </div>
  100. <div
  101. class="visitStoreIco"
  102. style="background-color: #fff; position: relative"
  103. slot="reference">
  104. <p
  105. style="
  106. width: 100%;
  107. position: absolute;
  108. z-index: 1;
  109. top: 0.2px;
  110. width: 22px;
  111. margin: 0;
  112. margin-left: 3.6px;
  113. text-align: center;
  114. font-size: 12px;
  115. ">
  116. <!-- {{ item.storeLabels.zysslNums }} -->
  117. 111
  118. </p>
  119. <van-icon :name="require('@/assets/icon/ord.png')" size="26" />
  120. </div>
  121. </el-popover>
  122. <!-- <el-popover
  123. popper-class="zpover zpover5"
  124. placement="bottom"
  125. width="200"
  126. trigger="click">
  127. <div v-if="item.storeLabels">
  128. <p>已参加:</p>
  129. <p v-for="tt in (item.storeLabels.targetOne + '').split(';')">
  130. {{ tt }}
  131. </p>
  132. </div>
  133. <div
  134. class="visitStoreIco"
  135. v-if="item.storeLabels.targetOne"
  136. style="background-color: #fff"
  137. slot="reference">
  138. <van-icon :name="targetOne" size="26" />
  139. </div>
  140. </el-popover>
  141. <el-popover
  142. popper-class="zpover"
  143. placement="bottom"
  144. width="120"
  145. trigger="click"
  146. content="调色机5天未联网">
  147. <div
  148. v-if="item.storeLabels.ccmOffline"
  149. class="visitStoreIco"
  150. style="background-color: #fff"
  151. slot="reference">
  152. <van-icon :name="Network" size="26" />
  153. </div>
  154. </el-popover>
  155. <el-popover
  156. popper-class="zpover"
  157. placement="bottom"
  158. width="200"
  159. trigger="click"
  160. content="同城店近60天未下单">
  161. <div
  162. v-if="item.storeLabels.fxNoOrder"
  163. class="visitStoreIco"
  164. style="background-color: #fff"
  165. slot="reference">
  166. <van-icon :name="order60" size="26" />
  167. </div>
  168. </el-popover>
  169. <el-popover
  170. popper-class="zpover"
  171. placement="bottom"
  172. width="200"
  173. trigger="click"
  174. content="金牌店近30天未下单">
  175. <div
  176. v-if="item.storeLabels.noOrder"
  177. class="visitStoreIco"
  178. style="background-color: #fff"
  179. slot="reference">
  180. <van-icon :name="order" size="26" />
  181. </div>
  182. </el-popover>
  183. <el-popover
  184. popper-class="zpover"
  185. placement="bottom"
  186. width="200"
  187. trigger="click"
  188. content="本店本月进过专业时时丽">
  189. <div
  190. class="visitStoreIco"
  191. v-if="item.storeLabels.zyssl"
  192. style="background-color: #ed5c68"
  193. slot="reference">
  194. </div>
  195. </el-popover>
  196. <el-popover
  197. popper-class="zpover zpover1"
  198. placement="bottom"
  199. width="200"
  200. trigger="click"
  201. content="本店本月进过超好贴">
  202. <div
  203. v-if="item.storeLabels.chtczj"
  204. class="visitStoreIco"
  205. style="background-color: #0057ba"
  206. slot="reference">
  207. </div>
  208. </el-popover>
  209. <el-popover
  210. placement="bottom"
  211. popper-class="zpover zpover1 zpover1sb"
  212. :disabled="!item.userVisitTimesMap"
  213. trigger="click">
  214. <div
  215. v-if="item.storeLabels.visitTimes && item.storeLabels.visitTimes > 0"
  216. class="visitStoreIco"
  217. slot="reference"
  218. style="background-color: #fff; position: relative">
  219. <p
  220. style="
  221. width: 100%;
  222. position: absolute;
  223. z-index: 10;
  224. top: -2px;
  225. margin: 0;
  226. text-align: center;
  227. font-size: 12px;
  228. ">
  229. {{ item.storeLabels.visitTimes }}
  230. </p>
  231. <van-icon :name="ordernum" size="26" />
  232. </div>
  233. <el-table :data="item.userVisitTimesMap" border max-height="180px">
  234. <el-table-column label="业务员" prop="userName" />
  235. <el-table-column label="拜访次数" prop="visitTimes" width="110px" />
  236. </el-table>
  237. </el-popover> -->
  238. </div>
  239. </div>
  240. <div class="info">实际经营者:{{ item.customerManager }}</div>
  241. <div class="info">开户日期:{{ formatCompactDate(item.openDate) }}</div>
  242. <div class="info">是否冻结:{{ item.freeze }}</div>
  243. <div class="info">是否关户:{{ item.close }}</div>
  244. </div>
  245. <div
  246. class="statstext"
  247. v-if="item.stateString == '未拜访'"
  248. style="background-color: #ed5c68">
  249. 未拜访
  250. </div>
  251. <div
  252. class="statstext"
  253. v-if="item.stateString == '拜访中'"
  254. style="background-color: white">
  255. <van-icon :name="require('@/assets/icon/times.png')" color="#ee0a24" size="32" />
  256. </div>
  257. <div class="statstext" v-if="item.stateString == '已拜访'">已拜访</div>
  258. <div class="btnbox">
  259. <van-row>
  260. <van-col span="5" v-if="item.stateString != '已拜访'" @click="storeVisit(item)">
  261. <img
  262. :src="require('@/assets/icon/call.png')"
  263. style="margin: 0 auto; height: 18px; display: block" />
  264. <p style="text-align: center; margin: 0; font-size: 12px">进入拜访</p>
  265. </van-col>
  266. <van-col
  267. span="5"
  268. v-if="item.stateString != '已拜访'"
  269. @click="abnormalVisit(item)">
  270. <img
  271. :src="require('@/assets/icon/yichang.png')"
  272. style="margin: 0 auto; height: 18px; display: block" />
  273. <p style="text-align: center; margin: 0; margin-top: 1px; font-size: 12px">
  274. 异常拜访
  275. </p>
  276. </van-col>
  277. <!-- <van-col span="5" v-if="item.stateString == '已拜访'" @click="Visit(item)">
  278. <img
  279. :src="require('@/assets/icon/bfxx.png')"
  280. style="margin: 0 auto; height: 18px; display: block" />
  281. <p style="text-align: center; margin: 0; margin-top: 1px; font-size: 12px">
  282. 拜访信息
  283. </p>
  284. </van-col> -->
  285. <van-col span="5" @click="visitFn(item)">
  286. <img
  287. :src="require('@/assets/icon/kehuxinxi-2.png')"
  288. style="margin: 0 auto; width: 18px; display: block" />
  289. <p style="text-align: center; margin: 0; margin-top: 1px; font-size: 12px">
  290. 客户门店
  291. </p>
  292. </van-col>
  293. </van-row>
  294. </div>
  295. </van-cell>
  296. <div class="lineGrey"></div>
  297. </div>
  298. <van-empty v-if="list.length == 0" />
  299. </van-list>
  300. </van-pull-refresh>
  301. </div>
  302. <van-popup v-model="showPicker" position="bottom" class="textsize">
  303. <van-row
  304. style="
  305. /* position: fixed; */
  306. /* top: 0; */
  307. width: 100%;
  308. z-index: 998;
  309. background-color: #fff;
  310. border-bottom: 1px solid #ccc;
  311. height: 50px;
  312. ">
  313. <van-col span="3" style="text-align: center; margin: 14px 0" @click="showPicker = false">
  314. <van-icon name="cross" size="20" color="#909399" />
  315. </van-col>
  316. <van-col span="13"> </van-col>
  317. <van-col span="4" style="text-align: center; line-height: 36px" @click="onConfirm">
  318. <div style="color: #0057ba">
  319. <van-button type="info" size="small" color="#0057ba">筛选</van-button>
  320. </div></van-col
  321. >
  322. <van-col span="4" style="text-align: center; line-height: 36px" @click="onsets">
  323. <van-button type="default" size="small" style="height: 28px">重置</van-button>
  324. </van-col>
  325. </van-row>
  326. <!-- <div style="height: 48px; width: 100%"></div> -->
  327. <div class="searchcheck" @touchmove="handleTouch">
  328. <p class="searchchecktitle">&nbsp;主经销商</p>
  329. <van-row>
  330. <van-col span="24">
  331. <div @click="moreTypeShowFn">
  332. <van-field
  333. style="
  334. margin-top: -6px;
  335. border-radius: 6px;
  336. border: 1px solid #ccc;
  337. overflow: hidden;
  338. "
  339. readonly
  340. v-model="chainName"
  341. label=""
  342. placeholder="请选择经销商" />
  343. </div>
  344. </van-col>
  345. </van-row>
  346. <p class="searchchecktitle" @click="isMonthVisited = !isMonthVisited">
  347. &nbsp;本月是否拜访<van-icon name="arrow-down" style="float: right" />
  348. </p>
  349. <van-radio-group v-model="monthVisited" direction="horizontal" class="monthVisited">
  350. <template v-if="isMonthVisited">
  351. <van-radio name="1">已拜访</van-radio>
  352. <van-radio name="0">未拜访</van-radio>
  353. </template>
  354. </van-radio-group>
  355. <van-checkbox-group v-model="result" direction="horizontal">
  356. <p class="searchchecktitle" @click="otherfxdShow = !otherfxdShow">
  357. &nbsp;身份类型<van-icon name="arrow-down" style="float: right" />
  358. </p>
  359. <div v-if="otherfxdShow" style="margin: 0 14px; width: 100%">
  360. <p class="searchchecktitle1" @click="otherfxdShow1 = !otherfxdShow1">
  361. 片区经销商<van-icon name="arrow-down" style="float: right" />
  362. </p>
  363. <div v-if="otherfxdShow1">
  364. <div v-for="(item1, index1) in PQChain" :key="200 + index1" class="checkbox1">
  365. <div class="child">
  366. <van-checkbox :name="item1.dictValue">{{ item1.dictLabel }}</van-checkbox>
  367. </div>
  368. </div>
  369. <div style="height: 2px; background-color: #f5f5f5; width: 100%; clear: both"></div>
  370. </div>
  371. <p class="searchchecktitle1" @click="otherfxdShow2 = !otherfxdShow2">
  372. 非片区经销商<van-icon name="arrow-down" style="float: right" />
  373. </p>
  374. <div v-if="otherfxdShow2">
  375. <div v-for="(itemlj, indexlj) in FPQChain" :key="400 + indexlj" class="checkbox1">
  376. <div class="child">
  377. <van-checkbox :name="itemlj.dictValue">{{ itemlj.dictLabel }}</van-checkbox>
  378. </div>
  379. </div>
  380. <div style="clear: both"></div>
  381. </div>
  382. </div>
  383. <div style="height: 2px; background-color: #f5f5f5; width: 100%; clear: both"></div>
  384. </van-checkbox-group>
  385. </div>
  386. </van-popup>
  387. <van-popup v-model="moreTypeShow" position="bottom" style="height: 80%">
  388. <van-row style="background-color: #f5f5f5">
  389. <van-col span="20">
  390. <van-field
  391. left-icon="search"
  392. style="margin-top: 2px; border-radius: 6px; overflow: hidden"
  393. v-model="CustomerName"
  394. label=""
  395. placeholder="请输入关键词"
  396. clearable />
  397. </van-col>
  398. <van-col span="4" style="text-align: center; line-height: 48px" @click="getCustomer">
  399. <div style="background-color: #0057ba; color: #fff">搜索</div></van-col
  400. >
  401. </van-row>
  402. <van-picker
  403. show-toolbar
  404. :columns="chainsData"
  405. value-key="mainCustomerName"
  406. @confirm="onConfirmChainsList"
  407. @cancel="moreTypeShow = false"
  408. visible-item-count="10" />
  409. </van-popup>
  410. <van-popup v-model="SKUDateShow">
  411. <div v-for="item in SKUList">
  412. <p style="font-weight: bold; font-size: 14px">&nbsp;&nbsp;&nbsp;{{ item.m01Name }}</p>
  413. <el-table :data="item.productDetailList" border style="width: 100%">
  414. <el-table-column label="物料名称" prop="productName" />
  415. <el-table-column label="规格" prop="productSku" />
  416. </el-table>
  417. </div>
  418. </van-popup>
  419. <!-- 测试用 -->
  420. <!-- 下单系统 -->
  421. <div
  422. class="storeSystem"
  423. v-if="objectPath"
  424. style="
  425. width: 100%;
  426. height: 100%;
  427. position: absolute;
  428. z-index: 9999999;
  429. display: flex;
  430. flex-direction: column;
  431. ">
  432. <div
  433. style="
  434. position: relative;
  435. z-index: 1;
  436. display: flex;
  437. align-items: center;
  438. height: 46px;
  439. background-color: #fff;
  440. font-size: 16px;
  441. font-weight: bold;
  442. justify-content: center;
  443. ">
  444. 下单系统
  445. </div>
  446. <object style="flex: 1" :data="objectPath" type="text/html" width="100%"></object>
  447. </div>
  448. <tab-bar tabBarActive="agentList"></tab-bar>
  449. </div>
  450. </template>
  451. <script>
  452. import { addVisitsPosition, mobileReposition, buryingPoint, getItemList } from '@/api/index';
  453. import { getPosition, getTicketFun } from '@/utils/TXApiFun';
  454. import { mapState } from 'vuex';
  455. import store from '@/store';
  456. import { scrollTopMixins } from '@/mixin/scrollTop';
  457. import {
  458. queryMyChainsGroupList,
  459. queryMyChainsGroupListByDept,
  460. checkChainsAddressByChainCode,
  461. getMainchains,
  462. } from '@/api/agentList';
  463. import tabBar from '@/components/tabBar';
  464. export default {
  465. name: 'outsidelist',
  466. mixins: [scrollTopMixins],
  467. computed: {
  468. ...mapState({
  469. deviceOutsidePage: (state) => state.isRefreshPage.deviceOutsidePage,
  470. }),
  471. },
  472. components: { tabBar },
  473. data() {
  474. return {
  475. otherShow: false,
  476. chainName: '',
  477. chainCode: '',
  478. showPopover: false,
  479. moreTypeShow: false,
  480. storeLabelTypes: [],
  481. disabled: false,
  482. timer: null,
  483. flag: true,
  484. show: false,
  485. tabVal: '1',
  486. list: [],
  487. cont: 0,
  488. loading: false,
  489. showPicker: false,
  490. finished: false,
  491. otherbqShow: true,
  492. otherkkdShow: true,
  493. otherfxdShow: true,
  494. otherfxdShow2: true,
  495. otherfxdShow1: true,
  496. typeName: '搜索',
  497. visitEndId: '',
  498. pageSize: 12,
  499. pageNum: 1,
  500. listActive: null,
  501. query: '',
  502. chainsName: '',
  503. storeType: '',
  504. endShow: false,
  505. storeCategory: '',
  506. fromValue: {},
  507. storeTypeList: [],
  508. PQChain: [],
  509. FPQChain: [],
  510. chainsData: [],
  511. serachstype: '',
  512. addShow1: false,
  513. result: [],
  514. StoreLabels: [],
  515. CustomerName: '',
  516. lat: '',
  517. lon: '',
  518. objectPath: '',
  519. isLoading: false,
  520. monthVisited: '', //本月是否拜访
  521. isMonthVisited: true,
  522. num: 1,
  523. timeData: '',
  524. SKUDateShow: false,
  525. SKUList: [],
  526. };
  527. },
  528. created() {
  529. // 当前tabs,0:销售部;1:我的
  530. this.tabVal = localStorage.getItem('tabVal') == '0' ? '0' : '1';
  531. store.dispatch('setDeviceOutsidePage', false);
  532. this.getMonth();
  533. },
  534. mounted() {
  535. if (this.deviceOutsidePage) this.initData();
  536. },
  537. mounted() {
  538. // 上拉边界下拉出现白色空白
  539. let node = document.getElementsByClassName('home')[0];
  540. node.addEventListener(
  541. 'touchmove',
  542. (e) => {
  543. if (e._isScroller) return;
  544. e.preventDefault();
  545. },
  546. {
  547. passive: false,
  548. }
  549. );
  550. },
  551. methods: {
  552. getMonth() {
  553. // 获取当前日期
  554. var currentDate = new Date();
  555. // 获取当前月份
  556. var currentMonth = currentDate.getMonth();
  557. // 获取当前年份
  558. // var currentYear = currentDate.getFullYear();
  559. var previousMonthDate1 = new Date();
  560. if (currentDate.getDate() == 1) {
  561. previousMonthDate1.setMonth(currentMonth - 1);
  562. } else {
  563. }
  564. var previousMonth1 = previousMonthDate1.getMonth();
  565. var previousYear1 = previousMonthDate1.getFullYear();
  566. // 计算前三个月的年份和月份
  567. var previousMonthDate = new Date();
  568. if (currentDate.getDate() == 1) {
  569. previousMonthDate.setMonth(currentMonth - 3);
  570. } else {
  571. previousMonthDate.setMonth(currentMonth - 2);
  572. }
  573. 1;
  574. var previousMonth = previousMonthDate.getMonth();
  575. var previousYear = previousMonthDate.getFullYear();
  576. //前三个月
  577. if (previousYear1 == previousYear) {
  578. var formattedPreviousMonth1 = previousYear1 + '-' + (previousMonth1 + 1);
  579. // 格式化年份和月份
  580. var formattedPreviousMonth = previousYear + '-' + (previousMonth + 1);
  581. this.timeData =
  582. formattedPreviousMonth.split('-')[1] + '-' + formattedPreviousMonth1.split('-')[1] + '月';
  583. } else {
  584. var formattedPreviousMonth1 = previousYear1 + '年' + (previousMonth1 + 1) + '月';
  585. // .toString().padStart(2, '0');
  586. // 格式化年份和月份
  587. var formattedPreviousMonth = previousYear + '年' + (previousMonth + 1) + '月';
  588. this.timeData = formattedPreviousMonth + '-' + formattedPreviousMonth1;
  589. }
  590. },
  591. onRefresh() {
  592. this.onSearch();
  593. this.isLoading = false;
  594. },
  595. handleTouch(e) {
  596. e._isScroller = true;
  597. },
  598. initData() {
  599. // 筛选-门店标签
  600. if (localStorage.getItem('outvstoreLabelTypes') != null) {
  601. this.storeLabelTypes = localStorage.getItem('outvstoreLabelTypes').split(',');
  602. } else {
  603. this.storeLabelTypes = [];
  604. }
  605. this.chainName = localStorage.getItem('outvchainName'); //筛选-经销商名称搜索
  606. this.chainCode = localStorage.getItem('outvchainCode'); //筛选-经销商Code
  607. // 筛选-店型选择
  608. if (localStorage.getItem('outvstoreCategoryList') != null) {
  609. this.result = localStorage.getItem('outvstoreCategoryList').split(',');
  610. } else {
  611. this.result = [];
  612. }
  613. this.query = this.$route.query; // 路由参数
  614. localStorage.removeItem('visitId');
  615. if (localStorage.getItem('postType') == 'GZ') {
  616. this.addShow1 = false;
  617. this.otherShow = true; //筛选-其他
  618. } else {
  619. this.addShow1 = true;
  620. this.otherShow = false; //筛选-其他
  621. }
  622. this.onSearch();
  623. },
  624. setStroeNameStyle(item) {
  625. return { color: '#0057ba', 'text-decoration': 'underline' };
  626. },
  627. clearFn() {
  628. this.chainsName = '';
  629. localStorage.setItem('outvstoreName', '');
  630. },
  631. moreTypeShowFn() {
  632. this.moreTypeShow = true;
  633. this.getCustomer();
  634. },
  635. buryingPoint(val) {
  636. buryingPoint(val);
  637. },
  638. getCustomer() {
  639. getMainchains({ mainChainsName: this.CustomerName }).then((request) => {
  640. this.chainsData = request.data;
  641. this.chainsData.push({});
  642. this.chainsData.pop();
  643. });
  644. },
  645. onConfirmChainsList(value) {
  646. if (value.mainCustomerName != undefined) {
  647. this.chainName = value.mainCustomerName;
  648. this.chainCode = value.mainCustomerCode;
  649. }
  650. this.showPickerChainsList = false;
  651. this.moreTypeShow = false;
  652. },
  653. onConfirm(value) {
  654. this.showPicker = false;
  655. this.onSearchm();
  656. },
  657. onsets() {
  658. this.result = [];
  659. this.storeLabelTypes = [];
  660. this.chainName = '';
  661. this.chainCode = '';
  662. this.monthVisited = '';
  663. this.onSearch();
  664. },
  665. setChainTypeList() {
  666. if (store.getters.chainsType) {
  667. this.PQChain = store.getters.chainsType.filter((val) => val.remark == 'pq');
  668. this.FPQChain = store.getters.chainsType.filter((val) => val.remark == 'fp');
  669. }
  670. },
  671. searchFn() {
  672. //获取门店类型 //获取门店标签
  673. Promise.all([this.setChainTypeList()]).then(() => {
  674. this.showPicker = true;
  675. this.CustomerName = '';
  676. });
  677. },
  678. getUserOrgStoreList() {
  679. this.storeType = localStorage.getItem('storeType');
  680. this.endShow = false;
  681. if (this.refreshing) {
  682. this.list = [];
  683. this.refreshing = false;
  684. }
  685. this.disabled = true;
  686. this.toastLoading(0, '加载中...', true);
  687. queryMyChainsGroupListByDept({
  688. lat: this.lat,
  689. lon: this.lon,
  690. pageNum: this.pageNum,
  691. typeCode2List: this.result.join(','),
  692. pageSize: this.pageSize,
  693. chainsName: this.chainsName.trim(),
  694. monthVisited: this.monthVisited, //本月是否拜访1=拜访,0=未拜访
  695. mainCustomerCode: this.chainCode, //主经销商编号
  696. }).then((res) => {
  697. this.disabled = false;
  698. this.toastLoading().clear();
  699. this.loading = false;
  700. if (res.code == 200) {
  701. if (this.pageNum == '1') {
  702. this.list = [];
  703. }
  704. this.list = this.list.concat(res.rows);
  705. if (this.list.length >= res.total) {
  706. this.finished = true;
  707. } else {
  708. this.finished = false;
  709. }
  710. this.pageNum = this.pageNum + 1;
  711. this.list.forEach((item) => {
  712. if (item.stateString.indexOf('拜访中') != -1) {
  713. this.endShow = true;
  714. this.visitEndId = item.visitId;
  715. return;
  716. }
  717. });
  718. } else {
  719. this.$toast(res.msg);
  720. }
  721. });
  722. },
  723. getUserOutPlaListFun() {
  724. this.storeType = localStorage.getItem('storeType');
  725. this.disabled = true;
  726. this.toastLoading(0, '加载中...', true);
  727. this.endShow = false;
  728. if (this.refreshing) {
  729. this.list = [];
  730. this.refreshing = false;
  731. }
  732. queryMyChainsGroupList({
  733. lat: this.lat,
  734. lon: this.lon,
  735. pageNum: this.pageNum,
  736. typeCode2List: this.result.join(','),
  737. pageSize: this.pageSize,
  738. chainsName: this.chainsName.trim(),
  739. monthVisited: this.monthVisited, //本月是否拜访1=拜访,0=未拜访
  740. mainCustomerCode: this.chainCode, //主经销商编号
  741. }).then((res) => {
  742. this.disabled = false;
  743. this.toastLoading().clear();
  744. this.loading = false;
  745. if (res.code == 200) {
  746. this.list = this.list.concat(res.rows);
  747. if (this.list.length >= res.total) {
  748. this.finished = true;
  749. } else {
  750. this.finished = false;
  751. }
  752. this.pageNum = this.pageNum + 1;
  753. this.list.forEach((item) => {
  754. if (item.stateString.indexOf('拜访中') != -1) {
  755. this.endShow = true;
  756. this.visitEndId = item.visitId;
  757. return;
  758. }
  759. });
  760. } else {
  761. this.finished = true;
  762. this.$toast(res.msg);
  763. }
  764. });
  765. },
  766. // 进入拜访
  767. storeVisit(val) {
  768. this.toastLoading(0, '加载中...', true);
  769. localStorage.setItem('tabVal', this.tabVal);
  770. localStorage.removeItem('visitId');
  771. this.buryingPoint({
  772. systemModel: '计划外',
  773. buryingPointType: 1,
  774. buryingPointValue: val.chainName + '(' + val.chainCode + ')',
  775. buryingPointName: '进店拜访',
  776. buryingPointPosition: this.tabVal == 1 ? '我的' : '销售部',
  777. });
  778. getPosition()
  779. .then((res) => {
  780. let { TXisBD, resData } = res;
  781. this.lat = TXisBD.lat;
  782. this.lon = TXisBD.lon;
  783. localStorage.setItem('lat', this.lat);
  784. localStorage.setItem('lon', this.lon);
  785. // var location = this.CJ02BD(res.latitude, res.longitude);
  786. if (val.stateString.indexOf('拜访中') != -1) {
  787. localStorage.setItem('startTime', new Date());
  788. localStorage.setItem('ORGName', val.deptName);
  789. localStorage.setItem('chainNameR', val.chainName);
  790. localStorage.removeItem('visitId'); //删除上次拜访id
  791. this.toastLoading().clear();
  792. this.$router.push({
  793. path: '/visitPage',
  794. query: {
  795. typeName2: val.typeName2,
  796. chainId: val.chainId,
  797. rdId: val.rdId,
  798. customerManager: val.customerManager,
  799. openDate: val.openDate,
  800. close: val.close,
  801. freeze: val.freeze,
  802. lat: TXisBD.lat,
  803. lon: TXisBD.lon,
  804. visitId: val.visitId,
  805. pageType: 'out',
  806. addressLine: val.addressLine,
  807. storeCategory: val.storeCategory,
  808. chainName: val.chainName,
  809. hisTime: val.hisTime,
  810. contactName: val.contactName,
  811. chainCode: val.chainCode,
  812. tabVal: this.tabVal,
  813. visitModel: '1',
  814. latNew: TXisBD.lat,
  815. lonNew: TXisBD.lon,
  816. PointSum: '0',
  817. marklat: resData.latitude,
  818. marklon: resData.longitude,
  819. from: 'outPlan',
  820. },
  821. });
  822. } else {
  823. this.checkStoreAddressByStoreCodeFun(val, TXisBD, resData);
  824. }
  825. })
  826. .catch((error) => {
  827. this.toastLoading().clear();
  828. this.$dialog.alert({
  829. message: error,
  830. });
  831. });
  832. },
  833. checkStoreAddressByStoreCodeFun(val, location, res) {
  834. checkChainsAddressByChainCode({
  835. chainCode: val.chainCode,
  836. lon: location.lon,
  837. lat: location.lat,
  838. })
  839. .then((response) => {
  840. this.toastLoading().clear();
  841. if (val.lat == '' || val.lat == null) {
  842. this.lat = location.lat;
  843. this.lon = location.lon;
  844. }
  845. let PointSumval = this.twoPointSum(
  846. location.lat,
  847. location.lon,
  848. location.lat,
  849. location.lon
  850. ).toFixed(2);
  851. // 直接进入拜访 不校验经纬度
  852. // localStorage.setItem('startTime', new Date());
  853. // localStorage.setItem('ORGName', val.deptName);
  854. // localStorage.setItem('chainNameR', val.chainName);
  855. // this.toSuishenbangOutstoreVisit(res, val, location, PointSumval);
  856. // return;
  857. // 门店校验 地址不通过
  858. if (response.code != 200) {
  859. // updateAddress : ,1:同城AB+金牌,去修改地址;2:非金牌店铺,非同城店铺偏差过大不允许拜访,可以重置定位;0非金牌店铺,非同城店铺 位置信息不存在 可以继续拜访
  860. if (response.data.updateAddress == 0) {
  861. // 非金牌店铺,非同城店铺 位置信息不存在 可以继续拜访
  862. this.$dialog
  863. .confirm({
  864. confirmButtonText: '确定拜访',
  865. cancelButtonText: '取消拜访',
  866. title: '系统提示',
  867. message:
  868. '该客户没有经纬度,此次拜访会保存定位点作为客户经纬度,下次拜访时判断是否偏差过大。',
  869. closeOnClickOverlay: true,
  870. })
  871. .then(() => {
  872. this.toSuishenbangOutstoreVisit(res, val, location, PointSumval);
  873. });
  874. } else if (response.data.updateAddress == 1) {
  875. // 同城AB+金牌,去修改地址
  876. // addressUpdateTimesOver: true=已经达到最大次数,不让修改; false=没有达到可以修改
  877. if (!response.data.addressUpdateTimesOver) {
  878. this.$dialog
  879. .confirm({
  880. title: '系统提示',
  881. message: response.msg + '请立即修改后再拜访',
  882. messageAlign: 'left',
  883. confirmButtonText: '立即修改',
  884. cancelButtonText: '取消',
  885. })
  886. .then(() => {
  887. this.$router.push({
  888. path: '/storeDetail',
  889. query: {
  890. id: val.chainId,
  891. type: 'address',
  892. storeAddressId: val.storeAddressId,
  893. },
  894. });
  895. });
  896. } else {
  897. this.$dialog.confirm({
  898. title: '系统提示',
  899. message: '已经达到最大修改次数',
  900. messageAlign: 'left',
  901. confirmButtonText: '确定',
  902. });
  903. }
  904. } else if (response.data.updateAddress == 2) {
  905. // 1.非金牌店铺,非同城店铺 位置偏差过大 重置经纬度
  906. this.resetCoord(res, val, location, PointSumval);
  907. return;
  908. }
  909. } else {
  910. // 门店编码校验门店地址通过 进入拜访
  911. this.toSuishenbangOutstoreVisit(res, val, location, PointSumval);
  912. }
  913. })
  914. .catch(() => {
  915. this.toastLoading().clear();
  916. });
  917. },
  918. // 重置经纬度
  919. resetCoord(res, val, location, PointSumval) {
  920. this.$dialog
  921. .confirm({
  922. confirmButtonText: '初始化定位',
  923. cancelButtonText: '取消拜访',
  924. title: '系统提示',
  925. message: '偏差过大,不允许拜访。可修改本店定位.',
  926. closeOnClickOverlay: true,
  927. })
  928. .then(() => {
  929. mobileReposition({
  930. chainId: val.chainId,
  931. lat: location.lat,
  932. lon: location.lon,
  933. }).then((response) => {
  934. if (response.code == 200) {
  935. this.$dialog
  936. .alert({
  937. title: '系统提示',
  938. message: '本信息定位已更新成功!',
  939. })
  940. .then(() => {
  941. this.toSuishenbangOutstoreVisit(res, val, location, PointSumval);
  942. });
  943. localStorage.setItem('startTime', new Date());
  944. localStorage.setItem('ORGName', val.deptName);
  945. localStorage.setItem('chainNameR', val.chainName);
  946. } else {
  947. this.$toast(response.msg);
  948. }
  949. });
  950. });
  951. },
  952. // 进入拜访 router.push
  953. toSuishenbangOutstoreVisit(res, val, location, PointSumval) {
  954. addVisitsPosition({
  955. chainId: val.chainId,
  956. visitsId: '',
  957. lon: res.longitude,
  958. lat: res.latitude,
  959. sourceLon: location.lon,
  960. sourceLat: location.lat,
  961. positionDesc: '',
  962. accuracy: res.accuracy,
  963. }).then((response) => {
  964. // 进入拜访之前先刷新页面
  965. store.dispatch('setDeviceOutsidePage', true);
  966. localStorage.removeItem('visitId'); //删除上次拜访id
  967. this.$router.push({
  968. path: '/visitPage',
  969. query: {
  970. typeName2: val.typeName2,
  971. chainId: val.chainId,
  972. rdId: val.rdId,
  973. customerManager: val.customerManager,
  974. openDate: val.openDate,
  975. close: val.close,
  976. freeze: val.freeze,
  977. lat: location.lat,
  978. lon: location.lon,
  979. visitId: val.visitId,
  980. pageType: 'out',
  981. addressLine: val.addressLine,
  982. storeCategory: val.storeCategory,
  983. chainName: val.chainName,
  984. hisTime: val.hisTime,
  985. contactName: val.contactName,
  986. chainCode: val.chainCode,
  987. tabVal: this.tabVal,
  988. visitModel: '1',
  989. latNew: location.lat,
  990. lonNew: location.lon,
  991. PointSum: PointSumval,
  992. marklat: res.latitude,
  993. marklon: res.longitude,
  994. from: 'outPlan',
  995. },
  996. });
  997. });
  998. },
  999. // 异常拜访
  1000. abnormalVisit(val) {
  1001. localStorage.removeItem('visitId');
  1002. localStorage.setItem('tabVal', this.tabVal);
  1003. this.buryingPoint({
  1004. systemModel: '计划外',
  1005. buryingPointType: 1,
  1006. buryingPointValue: val.chainName + '(' + val.chainCode + ')',
  1007. buryingPointName: '异常拜访',
  1008. buryingPointPosition: this.tabVal == 1 ? '我的' : '销售部',
  1009. });
  1010. getPosition()
  1011. .then((res) => {
  1012. let { TXisBD, resData } = res;
  1013. this.lat = TXisBD.lat;
  1014. this.lon = TXisBD.lon;
  1015. localStorage.setItem('lat', this.lat);
  1016. localStorage.setItem('lon', this.lon);
  1017. let PointSum = this.twoPointSum(TXisBD.lat, TXisBD.lon, TXisBD.lat, TXisBD.lon).toFixed(
  1018. 2
  1019. );
  1020. addVisitsPosition({
  1021. chainId: val.chainId,
  1022. visitsId: '',
  1023. lon: resData.longitude,
  1024. lat: resData.latitude,
  1025. sourceLon: location.lon,
  1026. sourceLat: location.lat,
  1027. positionDesc: '',
  1028. accuracy: resData.accuracy,
  1029. }).then((response) => {
  1030. // 进入拜访之前先刷新页面
  1031. store.dispatch('setDeviceOutsidePage', true);
  1032. this.$router.push({
  1033. path: '/visitAbnormal',
  1034. query: {
  1035. chainId: val.chainId,
  1036. rdId: val.rdId,
  1037. lat: this.lat,
  1038. lon: this.lon,
  1039. visitId: val.visitId,
  1040. pageType: 'out',
  1041. visitModel: localStorage.getItem('postType') != 'GZ' ? '5' : '3',
  1042. chainCode: val.chainCode,
  1043. tabVal: this.tabVal,
  1044. latNew: TXisBD.lat,
  1045. lonNew: TXisBD.lon,
  1046. PointSum: PointSum,
  1047. marklat: resData.latitude,
  1048. marklon: resData.longitude,
  1049. },
  1050. });
  1051. localStorage.setItem('startTime', new Date());
  1052. localStorage.setItem('ORGName', val.deptName);
  1053. localStorage.setItem('chainNameR', val.chainName);
  1054. });
  1055. })
  1056. .catch((error) => {
  1057. this.$dialog.alert({
  1058. message: error,
  1059. });
  1060. });
  1061. },
  1062. // 客户门店
  1063. visitFn(val) {
  1064. this.buryingPoint({
  1065. systemModel: '计划外',
  1066. buryingPointType: 1,
  1067. buryingPointValue: val.chainName + '(' + val.chainCode + ')',
  1068. buryingPointName: '客户信息',
  1069. buryingPointPosition: this.tabVal == 1 ? '我的' : '销售部',
  1070. });
  1071. window.location.href =
  1072. process.env.VUE_APP_SSB_LINK +
  1073. '/order/storeDetail/list?customerCode=' +
  1074. val.chainCode +
  1075. '&status=jxs';
  1076. },
  1077. // 拜访信息
  1078. Visit(val) {
  1079. this.$router.push({
  1080. path: '/historicalDetails',
  1081. query: {
  1082. visitId: val.visitId,
  1083. chainId: val.chainId,
  1084. chainCode: val.chainCode,
  1085. },
  1086. });
  1087. },
  1088. onClickLeft() {
  1089. this.$router.go(-1);
  1090. },
  1091. onSearch() {
  1092. this.pageNum = 1;
  1093. this.list = [];
  1094. this.finished = true;
  1095. this.onLoad();
  1096. },
  1097. onSearchm() {
  1098. localStorage.setItem('outvstoreName', this.chainName);
  1099. localStorage.setItem('outvchainName', this.chainName);
  1100. localStorage.setItem('outvstoreLabelTypes', this.storeLabelTypes);
  1101. localStorage.setItem('outvstoreCategoryList', this.result);
  1102. localStorage.setItem('outvchainCode', this.chainCode);
  1103. this.onSearch();
  1104. },
  1105. tabChange(name) {
  1106. this.finished = true;
  1107. this.pageNum = 1;
  1108. this.list = [];
  1109. this.tabVal = name;
  1110. localStorage.setItem('tabVal', name);
  1111. this.onLoad();
  1112. },
  1113. // 滚动条与底部距离小于 offset 时触发 初始化会触发
  1114. onLoad() {
  1115. this.toastLoading(0, '加载中...', true);
  1116. // 授权
  1117. getTicketFun()
  1118. .then(() => {
  1119. getPosition(true)
  1120. .then((res) => {
  1121. let { TXisBD } = res;
  1122. this.lat = TXisBD.lat;
  1123. this.lon = TXisBD.lon;
  1124. if (this.tabVal == '1') {
  1125. this.getUserOutPlaListFun();
  1126. } else {
  1127. this.getUserOrgStoreList();
  1128. }
  1129. })
  1130. .catch((error) => {
  1131. this.$dialog.alert({
  1132. message: error,
  1133. });
  1134. });
  1135. })
  1136. .catch(() => {
  1137. this.finished = true;
  1138. });
  1139. },
  1140. // 跳转好帮手门店详情
  1141. goOtherSystem(item) {
  1142. if (item.chainCode) {
  1143. window.location.href =
  1144. process.env.VUE_APP_SSB_LINK +
  1145. '/order/customerDetail/index?customerCode=' +
  1146. item.mainCustomerCode;
  1147. } else {
  1148. this.$dialog.alert({
  1149. message: '缺少门店code',
  1150. });
  1151. }
  1152. },
  1153. login() {
  1154. if (this.num > 5) {
  1155. this.$router.push('/login');
  1156. } else {
  1157. this.num = this.num + 1;
  1158. }
  1159. },
  1160. linkList(val) {
  1161. getItemList({ storeCode: val.chainId }).then((res) => {
  1162. if (res.code == 200) {
  1163. this.SKUDateShow = true;
  1164. this.SKUList = res.data;
  1165. } else {
  1166. this.$toast.fail(res.msg);
  1167. }
  1168. });
  1169. },
  1170. },
  1171. };
  1172. </script>
  1173. <style lang="scss" scoped>
  1174. .bgcolor {
  1175. background-color: #f5f5f5;
  1176. }
  1177. .card {
  1178. padding: 10px 16px;
  1179. box-sizing: border-box;
  1180. }
  1181. .card .title {
  1182. font-size: 15px;
  1183. font-weight: bold;
  1184. color: #333;
  1185. line-height: 22px;
  1186. padding-right: 52px;
  1187. }
  1188. .card .info {
  1189. font-size: 14px;
  1190. color: #909090;
  1191. line-height: 26px;
  1192. }
  1193. .btnbox {
  1194. padding-top: 14px;
  1195. border-top: 1px solid #eee;
  1196. margin: 0 10px;
  1197. }
  1198. .statstext {
  1199. background-color: #0057ba;
  1200. position: absolute;
  1201. right: 0;
  1202. top: 6px;
  1203. padding: 2px 6px 2px 12px;
  1204. border-bottom-left-radius: 60px;
  1205. border-top-left-radius: 60px;
  1206. color: #fff;
  1207. }
  1208. .cellcontent .van-cell {
  1209. padding-bottom: 10px;
  1210. }
  1211. .statstext .van-icon__image {
  1212. height: 0.7em;
  1213. }
  1214. .home {
  1215. height: 100%;
  1216. width: 100%;
  1217. display: flex;
  1218. flex-direction: column;
  1219. overflow: hidden;
  1220. .content {
  1221. flex: 1;
  1222. overflow: hidden;
  1223. padding: 10px 0;
  1224. .van-pull-refresh {
  1225. height: 100%;
  1226. overflow-y: auto;
  1227. .van-pull-refresh__track {
  1228. }
  1229. }
  1230. }
  1231. }
  1232. .monthVisited {
  1233. margin: 0px 14px;
  1234. .van-radio {
  1235. width: 50%;
  1236. margin: 0;
  1237. }
  1238. }
  1239. </style>
  1240. <style lang="scss">
  1241. .van-tabs__nav--card .van-tab.van-tab--active {
  1242. background-color: #0057ba !important;
  1243. }
  1244. .zDialog .van-dialog__header {
  1245. padding: 10px;
  1246. border-bottom: 1px solid #f5f5f5;
  1247. }
  1248. .zDialog .infoText {
  1249. margin: 10px;
  1250. font-size: 14px;
  1251. color: #909090;
  1252. width: 98%;
  1253. }
  1254. .visitStoreIco {
  1255. float: left;
  1256. float: left;
  1257. width: 26px;
  1258. text-align: center;
  1259. background-color: #ffba13;
  1260. color: #fff;
  1261. border-radius: 100%;
  1262. margin-left: 14px;
  1263. line-height: 26px;
  1264. height: 26px;
  1265. }
  1266. .searchcheck {
  1267. padding: 0 10px 10px;
  1268. }
  1269. .searchcheck .van-checkbox {
  1270. /*width: 44%;*/
  1271. padding-bottom: 10px;
  1272. }
  1273. .searchcheck .checkbox {
  1274. font-size: 14px;
  1275. display: inline-block;
  1276. width: 50%;
  1277. line-height: 28px;
  1278. }
  1279. .searchcheck .checkbox .van-checkbox {
  1280. margin-bottom: 2px;
  1281. }
  1282. .searchcheck .checkbox1 {
  1283. font-size: 14px;
  1284. float: left;
  1285. line-height: 28px;
  1286. width: 50%;
  1287. }
  1288. .searchcheck .checkbox1 .child {
  1289. width: 100%;
  1290. }
  1291. .searchcheck {
  1292. /* height: 93vh;
  1293. overflow-y: auto; */
  1294. }
  1295. .searchchecktitle {
  1296. width: 100%;
  1297. margin: 20px 0;
  1298. font-size: 16px;
  1299. border-left: 3px solid #0057ba;
  1300. line-height: 18px;
  1301. }
  1302. .searchchecktitle1 {
  1303. width: 100%;
  1304. margin: 20px 0;
  1305. font-size: 16px;
  1306. line-height: 18px;
  1307. }
  1308. .textsize {
  1309. font-size: 14px;
  1310. /* overflow: hidden; */
  1311. display: flex;
  1312. flex-direction: column;
  1313. .searchcheck {
  1314. flex: 1;
  1315. overflow-y: auto;
  1316. margin-bottom: 50px;
  1317. }
  1318. }
  1319. .home {
  1320. .TCFXListItem {
  1321. display: inline-block;
  1322. border: 1px solid #ccc;
  1323. padding: 3px 5px;
  1324. margin: 0 5px;
  1325. border-radius: 6px;
  1326. }
  1327. }
  1328. .van-dialog__confirm,
  1329. .van-dialog__confirm:active {
  1330. color: #0057ba;
  1331. }
  1332. .searchDiv {
  1333. .van-search {
  1334. background: #fff;
  1335. }
  1336. .van-search__action {
  1337. font-size: 14px;
  1338. color: #0057ba;
  1339. font-weight: bold;
  1340. background: #f1f1f1;
  1341. border-bottom-right-radius: 60px;
  1342. border-top-right-radius: 60px;
  1343. border: 1px solid #ccc;
  1344. padding: 0 20px;
  1345. }
  1346. .van-search--show-action {
  1347. padding-right: 12px;
  1348. }
  1349. .van-search__content {
  1350. border: 1px solid #ccc;
  1351. border-bottom-left-radius: 60px;
  1352. border-top-left-radius: 60px;
  1353. background: #f1f1f1;
  1354. border-right: 0;
  1355. }
  1356. }
  1357. .myTab {
  1358. .van-tabs__nav--card {
  1359. margin: 0 !important;
  1360. border-left: 0;
  1361. border-right: 0;
  1362. }
  1363. .van-tabs__wrap,
  1364. .van-tabs__nav--card {
  1365. height: 39px;
  1366. }
  1367. .van-tab {
  1368. line-height: 40px;
  1369. }
  1370. }
  1371. .myList {
  1372. padding-bottom: 50px;
  1373. .van-cell {
  1374. padding: 0;
  1375. &:after {
  1376. border-bottom: none;
  1377. }
  1378. }
  1379. }
  1380. </style>