AI销管
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 
 
 

762 rindas
20 KiB

  1. <template>
  2. <view class="box">
  3. <view class="boxtittab">
  4. <view class="tabbox">
  5. <view :class="{ activecllasscet: activeTotal == 4 }" @click="tabtimetap(4)">近七天</view>
  6. </view>
  7. <view class="tabbox">
  8. <view :class="{ activecllasscet: activeTotal == 5 }" @click="tabtimetap(5)">近15天</view>
  9. </view>
  10. <view class="tabbox">
  11. <view :class="{ activecllasscet: activeTotal == 6 }" @click="tabtimetap(6)">近30天</view>
  12. </view>
  13. <view class="tabbox">
  14. <view :class="{ activecllasscet: activeTotal == 3 }" @click="tabtimetap(3)">自定义</view>
  15. </view>
  16. </view>
  17. <!-- <view style="width: 100%;height: 20rpx;background: #FAFAFA;"></view>
  18. <view class="Piabodata-box">
  19. <view class="Piabodata" @click="toTrendAnalysis()" v-if="permissions.commonly3">
  20. <view class="Piabodata-img">
  21. <image class="Piabodata-img1" src="../../../static/images/qushi.png" mode=""></image>
  22. </view>
  23. <view class="Piabodata-text">销讲趋势</view>
  24. </view>
  25. <view class="Piabodata" @click="toStaffAnalysis()" v-if="permissions.commonly5">
  26. <view class="Piabodata-img">
  27. <image class="Piabodata-img1" src="../../../static/images/yuangong.png" mode=""></image>
  28. </view>
  29. <view class="Piabodata-text">员工分析</view>
  30. </view>
  31. <view class="Piabodata" @click="toUserinsightinto()" v-if="permissions.commonly6">
  32. <view class="Piabodata-img">
  33. <image class="Piabodata-img1" src="../../../static/images/yinghu.png" mode=""></image>
  34. </view>
  35. <view class="Piabodata-text">用户画像</view>
  36. </view>
  37. <view class="Piabodata" @click="Theteamcompared()" v-if="permissions.commonly4">
  38. <view class="Piabodata-img">
  39. <image class="Piabodata-img1" src="../../../static/images/tuandui.png" mode=""></image>
  40. </view>
  41. <view class="Piabodata-text">团队对比</view>
  42. </view>
  43. <view class="Piabodata" @click="Groupcontrast()" v-if="permissions.commonly2">
  44. <view class="Piabodata-img">
  45. <image class="Piabodata-img1" src="../../../static/images/jituan.png" mode=""></image>
  46. </view>
  47. <view class="Piabodata-text">集团对比</view>
  48. </view>
  49. </view> -->
  50. <view style="width: 100%;height: 20rpx;background: #FAFAFA;"></view>
  51. <view class="boxzonglan" style="min-height: 400rpx;">
  52. <view class="zonglantit">简报</view>
  53. <view class="zonglanbox">
  54. <view class="grid" v-for="(item,index) in numlist" :key="index">
  55. <view class="audonum">{{item.name}}</text></view>
  56. <view class="num">{{item.num}}</view>
  57. </view>
  58. </view>
  59. </view>
  60. <view style="width: 100%;height: 20rpx;background: #FAFAFA;"></view>
  61. <view class="single">
  62. <view class="title">
  63. <view class="title1">接待趋势</view>
  64. </view>
  65. <view class="swiper-box">
  66. <u-tabs-swiper ref="tabs" font-size="30" :bold="true" swiper-width="600" :current="bocindex"
  67. @change="tapspagek2()" inactive-color="#b1b1b1" active-color="#008ef2" :list="newlistoj1"
  68. :is-scroll="true">
  69. </u-tabs-swiper>
  70. </view>
  71. <!-- <view class="hejibox">
  72. <view class="heji">合计:50</view>
  73. <view class="heji">均值:25</view>
  74. </view> -->
  75. <view class="danwei">{{danwei}} </view>
  76. <view class="uchaserbox">
  77. <qiun-data-charts type="line" :chartData="lineOptsect" :opts="optionsobj" background="none"
  78. :ontouch="true" canvasId="wangxiaohuaerlingilingwuyiba1" :canvas2d="true" />
  79. </view>
  80. </view>
  81. <view class="" v-if="teamFlag">
  82. <view style="width: 100%;height: 20rpx;background: #FAFAFA;"></view>
  83. <view class="single">
  84. <view class="title" @click="staffShow1=true">
  85. <view class="title1">团队接待趋势</view>
  86. <view class="title2">
  87. <view class="title2-che" style="width: 220rpx;">{{team.label}}
  88. <image class="righttochoose" src="../../../static/images/righttochoose.png" mode=""></image>
  89. </view>
  90. </view>
  91. </view>
  92. <view class="danwei">单位(%)</view>
  93. <view class="uchaserbox">
  94. <qiun-data-charts type="line" :chartData="lineOptsect1" background="none" :ontouch="true"
  95. canvasId="wangxiaohuaerlineryiliwuyibao" :canvas2d="true" />
  96. </view>
  97. </view>
  98. </view>
  99. <view class="" v-if="staffFlag">
  100. <view style="width: 100%;height: 20rpx;background: #FAFAFA;"></view>
  101. <view class="single">
  102. <view class="title">
  103. <view class="title1">员工接待趋势</view>
  104. <view class="title2" @click="staffShow=true">
  105. <view class="title2-che" style="width: 220rpx;">{{staff.label}}
  106. <image class="righttochoose" src="../../../static/images/righttochoose.png" mode=""></image>
  107. </view>
  108. <!-- <view class="title2-che">执行率
  109. <image class="righttochoose" src="../../../static/images/righttochoose.png" mode=""></image>
  110. </view> -->
  111. </view>
  112. </view>
  113. <!-- <view class="hejibox">
  114. <view class="heji">合计:{{allnum1||0}}</view>
  115. <view class="heji">均值:{{allavg1||0}}</view>
  116. </view> -->
  117. <view class="danwei">单位(%)</view>
  118. <view class="uchaserbox">
  119. <qiun-data-charts type="line" :opts="opts" :chartData="lineOptsect2" background="none"
  120. :ontouch="true" canvasId="wangxiaohuaerlingeryilingwuyibao" :canvas2d="true" />
  121. </view>
  122. </view>
  123. </view>
  124. <view style="width: 100%;height: 20rpx;background: #FAFAFA;"></view>
  125. <view class="single">
  126. <view class="title">
  127. <view class="title1">销讲维度执行率</view>
  128. <!-- <view class="title3">
  129. <view class="title3-box">
  130. <view style="height: 42rpx;" :class="{ activecltab: activeTotal2 == 0 }">执行率</view>
  131. </view>
  132. <view class="title3-box">
  133. <view style="height: 42rpx;" :class="{ activecltab: activeTotal2 == 1 }">得分</view>
  134. </view>
  135. </view> -->
  136. </view>
  137. <!-- <view class="hejibox">
  138. <view class="heji">合计:50</view>
  139. <view class="heji">均值:25</view>
  140. </view> -->
  141. <view style="width: 100%;height: 300rpx;text-align: center;line-height: 300rpx;"
  142. v-if="newlisttabinfo.length==0">暂无数据</view>
  143. <view v-else class="jindu" style="margin-top: 20rpx;">
  144. <scroll-view style="height: 300rpx;" scroll-y="true">
  145. <view class="jindu-box" v-for="(item,index) in newlisttabinfo" :key="index">
  146. <view class="jindu-boxche">
  147. <view class="jindu-name">{{item.name.substring(0, 4)}}</view>
  148. <view style="width: 440rpx;margin-left: 10rpx;">
  149. <u-line-progress height="24" :show-percent="false" active-color="#4FC78F"
  150. :percent="item.zxl"></u-line-progress>
  151. </view>
  152. <view class="jindu-zxl">{{item.zxl==null?0:item.zxl}}%</view>
  153. </view>
  154. </view>
  155. </scroll-view>
  156. </view>
  157. </view>
  158. <view style="width: 100%;height: 20rpx;background: #FAFAFA;"></view>
  159. <view class="single">
  160. <view class="title">
  161. <view class="title1">销讲指标执行率</view>
  162. </view>
  163. <view class="swiper-box">
  164. <u-tabs-swiper ref="tabs" font-size="30" :bold="true" swiper-width="600" :current="bocindex1"
  165. @change="tapspagek3" inactive-color="#b1b1b1" active-color="#008ef2" :list="newlistoj"
  166. :is-scroll="true">
  167. </u-tabs-swiper>
  168. </view>
  169. <view style="width: 100%;height: 300rpx;text-align: center;line-height: 300rpx;"
  170. v-if="newlisttabinfo1.length==0">暂无数据</view>
  171. <view class="jindu" v-else>
  172. <scroll-view style="height: 300rpx;" scroll-y="true">
  173. <view class="jindu-box" v-for="(item,index) in newlisttabinfo1" :key="index">
  174. <view class="jindu-boxche">
  175. <view class="jindu-name">{{item.name.substring(0, 4)}}</view>
  176. <view style="width: 440rpx;margin-left: 10rpx;">
  177. <u-line-progress height="24" :show-percent="false" active-color="#4FC78F"
  178. :percent="item.zxl"></u-line-progress>
  179. </view>
  180. <view class="jindu-zxl">{{item.zxl==null?0:item.zxl}}%</view>
  181. </view>
  182. </view>
  183. </scroll-view>
  184. </view>
  185. </view>
  186. <u-calendar v-model="totalTimeShow" mode="range" @change="totalTimeChange"></u-calendar>
  187. <u-select v-model="staffShow" :list="staffList" @confirm="staffSelectCallback($event,0)"
  188. :default-value='selindex'></u-select>
  189. <u-select v-model="staffShow1" :list="teamList" @confirm="staffSelectCallback($event,1)"
  190. :default-value='selindex'></u-select>
  191. </view>
  192. </template>
  193. <script>
  194. var app = getApp();
  195. // var util = require("../../../utils/util.js");
  196. var config = require("../../../config");
  197. export default {
  198. data() {
  199. return {
  200. activeTotal: 4,
  201. activeTotal2: 0,
  202. houseId: '',
  203. timeobj: {
  204. statDateStart: '',
  205. statDateEnd: ''
  206. },
  207. // 员工列表
  208. staffList: [],
  209. // 团队列表
  210. teamList: [],
  211. staffShow: false,
  212. staff: {
  213. value: '',
  214. label: ''
  215. },
  216. team: {
  217. value: '',
  218. label: ''
  219. },
  220. teamFlag: true,
  221. bocindex1: 0,
  222. staffFlag: true,
  223. staffShow1: false,
  224. lastStartDate: '',
  225. lastEndDate: '',
  226. allnum: '',
  227. allavg: '',
  228. allnum1: '',
  229. allavg1: '',
  230. danwei: '单位(次)',
  231. totalTimeShow: false,
  232. activeTab: 0,
  233. numlist: [{
  234. name: '平均执行率',
  235. num: ''
  236. },
  237. {
  238. name: '平均接待时长',
  239. num: ''
  240. },
  241. {
  242. name: '接待量',
  243. num: ''
  244. },
  245. {
  246. name: '有效接待',
  247. num: ''
  248. },
  249. ],
  250. lineOptsect: {
  251. "categories": [],
  252. "series": []
  253. },
  254. lineOptsect1: {
  255. "categories": [],
  256. "series": []
  257. },
  258. lineOptsect2: {
  259. "categories": [],
  260. "series": []
  261. },
  262. newlistoj: [],
  263. newlistoj1: [{
  264. name: "平均执行率",
  265. id: 2
  266. },
  267. {
  268. name: "平均接待时长",
  269. id: 5
  270. },
  271. {
  272. name: "接待量",
  273. id: 3
  274. },
  275. {
  276. name: "有效接待",
  277. id: 1
  278. },
  279. ],
  280. bocindex: 0,
  281. newlisttabinfo: [{
  282. name: '接待量',
  283. zxl: '10'
  284. },
  285. {
  286. name: '平均执行率',
  287. zxl: '50'
  288. },
  289. {
  290. name: '接待客户',
  291. zxl: '80'
  292. },
  293. ],
  294. newlisttabinfo1: [],
  295. Theteamcomparedisshow: false,
  296. Groupcontrastisshow: false,
  297. allechar: [],
  298. allList: [],
  299. optionsobj: {},
  300. permissions: {
  301. commonly2: false,
  302. commonly3: false,
  303. commonly4: false,
  304. commonly5: false,
  305. commonly6: false,
  306. },
  307. opts: {
  308. yAxis: {
  309. data: [{
  310. max: 100
  311. }]
  312. }
  313. }
  314. };
  315. },
  316. onShow() {
  317. let newmenulist = uni.getStorageSync('weapp_session_Menu_data');
  318. this.permissions.commonly2 = newmenulist.lpdb;
  319. this.permissions.commonly3 = newmenulist.xjqs;
  320. this.permissions.commonly4 = newmenulist.tddb;
  321. this.permissions.commonly5 = newmenulist.gwnl;
  322. this.permissions.commonly6 = newmenulist.yhhx;
  323. // 获取项目id
  324. this.houseId = uni.getStorageSync('buildingID').id;
  325. // 获取数据看板
  326. // 获取员工
  327. this.getStaffList()
  328. // 获取团队
  329. this.getSectionList()
  330. // 获取团队是否显示权限
  331. // 获取简报
  332. this.getReport()
  333. // 获取接待趋势
  334. this.getRtrent()
  335. // 获取维度
  336. this.getindexZxl()
  337. },
  338. onPullDownRefresh(){
  339. // 获取员工
  340. this.getStaffList()
  341. // 获取团队
  342. this.getSectionList()
  343. // 获取团队是否显示权限
  344. // 获取简报
  345. this.getReport()
  346. // 获取接待趋势
  347. this.getRtrent()
  348. // 获取维度
  349. this.getindexZxl()
  350. setTimeout(function () {
  351. uni.stopPullDownRefresh();
  352. }, 1000);
  353. },
  354. methods: {
  355. // 获取员工列表
  356. getStaffList() {
  357. this.$u.post('/cusLvStatistics/selectAllAccountIdByHouseId', {
  358. houseId: this.houseId
  359. })
  360. .then(res => {
  361. // console.log(res,'123')
  362. this.staffList = []
  363. res.map(item => {
  364. let obj = {}
  365. obj.value = item.accountId
  366. obj.label = item.name
  367. this.staffList.push(obj)
  368. })
  369. this.staff = this.staffList[0]
  370. this.getAward()
  371. })
  372. },
  373. // 获取接待趋势
  374. getRtrent() {
  375. this.$u.post('/cusLvStatistics/receptionTrend', {
  376. houseId: this.houseId,
  377. timeType: this.lastEndDate ? null : this.activeTotal,
  378. lastEndDate: this.lastEndDate,
  379. lastStartDate: this.lastStartDate
  380. })
  381. .then(res => {
  382. // console.log(res)
  383. this.allechar = res
  384. this.tapspagek2(this.bocindex)
  385. })
  386. },
  387. // 销奖维度
  388. getindexZxl() {
  389. this.$u.post('/cusLvStatistics/indexZxl', {
  390. houseId: this.houseId,
  391. timeType: this.lastEndDate ? null : this.activeTotal,
  392. lastEndDate: this.lastEndDate,
  393. lastStartDate: this.lastStartDate
  394. })
  395. .then(res => {
  396. // console.log(res)
  397. // 处理销奖维度执行率
  398. // this.newlisttabinfo
  399. let arr = []
  400. this.newlistoj = []
  401. res.list.map((item, index) => {
  402. arr.push({
  403. name: item.name,
  404. zxl: item.zxl
  405. })
  406. this.newlistoj.push({
  407. name: item.name,
  408. id: index
  409. })
  410. })
  411. this.newlisttabinfo = arr
  412. this.allList = res.list
  413. this.tapspagek3(this.bocindex1)
  414. })
  415. },
  416. // 获取简报
  417. getReport() {
  418. this.$u.post('/cusLvStatistics/xiaojiangAnalysis', {
  419. houseId: this.houseId,
  420. timeType: this.lastEndDate ? null : this.activeTotal,
  421. lastEndDate: this.lastEndDate,
  422. lastStartDate: this.lastStartDate
  423. })
  424. .then(res => {
  425. // 接待量
  426. this.numlist[0].num = res.receptionCount || 0
  427. // 接待客户
  428. this.numlist[1].num = res.sumCustomer || 0
  429. // 执行率
  430. this.numlist[2].num = (res.fraction || 0) + '%'
  431. // 平均接待时长
  432. this.numlist[3].num = Math.floor(res.sumDuration / 60) || 0
  433. // util.formatSecond()||0
  434. })
  435. },
  436. // 获取团队列表
  437. getSectionList() {
  438. this.$u.post('/cusLvStatistics/findAllDeptIdByHouseId', {
  439. houseId: this.houseId
  440. })
  441. .then(res => {
  442. this.teamList = []
  443. res.map(item => {
  444. let obj = {}
  445. obj.value = item.deptId
  446. obj.label = item.deptName
  447. this.teamList.push(obj)
  448. })
  449. this.team = this.teamList[0]
  450. this.receptionCountList()
  451. })
  452. },
  453. // 员工销奖趋势
  454. getAward() {
  455. if (this.staffList.length == 0) {
  456. this.staffFlag = false
  457. this.$forceUpdate()
  458. return
  459. }
  460. this.$u.post('/cusLvStatistics/employeeAnalysisExacutiveRate', {
  461. userA: this.staff.value,
  462. userB: '',
  463. houseId: this.houseId,
  464. timeType: this.lastEndDate ? null : this.activeTotal + '',
  465. lastEndDate: this.lastEndDate,
  466. lastStartDate: this.lastStartDate
  467. })
  468. .then(res => {
  469. this.allnum1 = res.avg[0]
  470. this.allavg1 = res.avg[1]
  471. // console.log(res)
  472. let first = res.first
  473. let second = res.second
  474. this.lineOptsect2.categories = []
  475. this.lineOptsect2.series = [{
  476. name: first[0].accountName,
  477. data: [],
  478. max: 100,
  479. }]
  480. first.map(item => {
  481. this.lineOptsect2.categories.push(item.statDate.slice(5, 10))
  482. this.lineOptsect2.series[0].data.push(item.sumFraction)
  483. })
  484. })
  485. },
  486. // 团队接待趋势
  487. receptionCountList() {
  488. if (this.teamList.length == 0) {
  489. this.teamFlag = false
  490. this.$forceUpdate()
  491. return
  492. }
  493. this.$u.post('/cusLvStatistics/teamAnalysisExecutionRate', {
  494. deptIds: this.team.value,
  495. showRank: 1,
  496. houseId: this.houseId,
  497. timeType: this.lastEndDate ? null : this.activeTotal + '',
  498. lastEndDate: this.lastEndDate,
  499. lastStartDate: this.lastStartDate
  500. })
  501. .then(res => {
  502. // console.log(res)
  503. let result = res.result
  504. this.allnum = res.avg[0]
  505. this.allavg = res.avg[1]
  506. // 当选择趋势时
  507. this.lineOptsect1 = {}
  508. let allobj = {
  509. categories: [],
  510. series: []
  511. }
  512. // 先处理时间
  513. // 当选择全部时
  514. // 当选择只有一个时
  515. let obj = {}
  516. obj.data = []
  517. obj.name = result[0][0].deptName
  518. result[0].map(item => {
  519. allobj.categories.push(item.statDate.slice(5, 10))
  520. obj.data.push(item.data)
  521. })
  522. allobj.series.push(obj)
  523. this.lineOptsect1 = allobj
  524. })
  525. },
  526. //时间切换
  527. tabtimetap(index) {
  528. if (index == 3) {
  529. this.totalTimeShow = true;
  530. } else {
  531. this.activeTotal = index;
  532. this.lastEndDate = ''
  533. this.lastStartDate = ''
  534. this.getdata()
  535. }
  536. },
  537. // 获取数据
  538. getdata() {
  539. this.receptionCountList()
  540. this.getReport()
  541. this.getRtrent()
  542. this.getindexZxl()
  543. this.getAward()
  544. },
  545. staffSelectCallback(e, idx) {
  546. if (idx == 0) {
  547. this.staff = e[0]
  548. this.getAward()
  549. } else {
  550. this.team = e[0]
  551. this.receptionCountList()
  552. }
  553. // console.log(e,idx)
  554. },
  555. //自定义时间
  556. totalTimeChange(e) {
  557. console.log(e.startDate, e.endDate)
  558. this.activeTotal = 3;
  559. this.lastEndDate = e.endDate
  560. this.lastStartDate = e.startDate
  561. this.getdata()
  562. },
  563. //指标执行率分析tab
  564. tapspagek2(index) {
  565. // console.log(index)
  566. // 对数据进行分析和处理
  567. // 先处理日期
  568. let allobj = {
  569. "categories": [],
  570. "series": [{
  571. name: '接待量',
  572. data: []
  573. }]
  574. }
  575. if (index == 0) {
  576. // 平均执行率
  577. this.danwei = '单位(%)'
  578. allobj.series[0].name = '平均执行率'
  579. this.allechar.map(item => {
  580. allobj.categories.push(item.statDate.slice(5, 10))
  581. allobj.series[0].data.push(item.fraction)
  582. })
  583. } else if (index == 1) {
  584. // 平均接待时长
  585. this.danwei = '单位(min)'
  586. allobj.series[0].name = '录音时长'
  587. this.allechar.map(item => {
  588. allobj.categories.push(item.statDate.slice(5, 10))
  589. allobj.series[0].data.push(item.sumDuration)
  590. })
  591. } else if (index == 2) {
  592. // 接待客户
  593. this.danwei = '单位(个)'
  594. allobj.series[0].name = '接待量'
  595. this.allechar.map(item => {
  596. allobj.categories.push(item.statDate.slice(5, 10))
  597. allobj.series[0].data.push(item.sumCustomer)
  598. })
  599. } else {
  600. // 接待量
  601. this.danwei = '单位(次)'
  602. allobj.series[0].name = '有效接待'
  603. this.allechar.map(item => {
  604. allobj.categories.push(item.statDate.slice(5, 10))
  605. allobj.series[0].data.push(item.receptionCount)
  606. })
  607. }
  608. this.bocindex = index;
  609. this.lineOptsect = allobj
  610. },
  611. tapspagek3(index) {
  612. this.newlisttabinfo1 = [];
  613. let arr = []
  614. this.allList[index].children.map(item => {
  615. arr.push({
  616. name: item.name,
  617. zxl: item.zxl
  618. })
  619. })
  620. this.newlisttabinfo1 = arr
  621. this.bocindex1 = index;
  622. },
  623. //集团对比
  624. Groupcontrast() {
  625. uni.navigateTo({
  626. url: '/pages/center/Piabodata/Groupcontrast'
  627. });
  628. },
  629. //团队对比
  630. Theteamcompared() {
  631. if (this.teamList.length == 0) {
  632. uni.showToast({
  633. title: '没有团队呢',
  634. icon: 'none'
  635. })
  636. return
  637. }
  638. uni.navigateTo({
  639. url: '/pages/center/Piabodata/Theteamcompared'
  640. });
  641. },
  642. //用户洞察
  643. toUserinsightinto() {
  644. uni.navigateTo({
  645. url: '/pages/center/Piabodata/Userinsightinto'
  646. });
  647. },
  648. //趋势分析
  649. toTrendAnalysis() {
  650. uni.navigateTo({
  651. url: '/pages/center/Piabodata/TrendAnalysis'
  652. });
  653. },
  654. //员工分析
  655. toStaffAnalysis() {
  656. if (this.staffList.length == 0) {
  657. uni.showToast({
  658. title: '没有团队呢',
  659. icon: 'none'
  660. })
  661. return
  662. }
  663. uni.navigateTo({
  664. url: '/pages/center/Piabodata/StaffAnalysis'
  665. });
  666. }
  667. }
  668. };
  669. </script>
  670. <style lang="scss" scoped>
  671. .box {
  672. width: 100%;
  673. height: 100%;
  674. background: #FAFAFA;
  675. padding-bottom: 60rpx;
  676. }
  677. .boxtittab {
  678. position: sticky;
  679. top: var(--window-top);
  680. z-index: 999;
  681. }
  682. .Piabodata-box {
  683. width: 100%;
  684. background: #FFFFFF;
  685. display: flex;
  686. flex-wrap: wrap;
  687. padding-bottom: 30rpx;
  688. .Piabodata {
  689. width: 33.3%;
  690. .Piabodata-img {
  691. width: 100%;
  692. text-align: center;
  693. .Piabodata-img1 {
  694. width: 134rpx;
  695. height: 134rpx;
  696. }
  697. }
  698. .Piabodata-text {
  699. width: 100%;
  700. text-align: center;
  701. font-size: 24rpx;
  702. font-weight: 400;
  703. color: #333333;
  704. margin-top: -10rpx;
  705. }
  706. }
  707. }
  708. .grid:nth-child(1) {
  709. border-right: none;
  710. border-bottom: none;
  711. }
  712. .grid:nth-child(2) {
  713. border-bottom: none;
  714. }
  715. .grid:nth-child(3) {
  716. border-right: none;
  717. }
  718. </style>