myTicket.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974
  1. <template>
  2. <view class="kd-work-container">
  3. <uni-nav-bar fixed="true" statusBar="true" left-icon="back" :title="orderType == 1 ? '工单待办' : '工单已办'"
  4. right-icon="scan" @clickLeft="back">
  5. <view slot="right">
  6. <view @click="HandlScanCode" class="scan_btn"></view>
  7. </view>
  8. </uni-nav-bar>
  9. <view class="top-wrapper">
  10. <view class="tab_box rx-sc">
  11. <view class="tab_item" :class="{active: activeIndex == item.index}" v-for="(item,index) in tabList"
  12. :key="index">
  13. <view @click="handleTabChange(item)" class="badge-c">
  14. {{item.name}}
  15. <u-badge max="99" :value="item.badge.value" absolute v-show="orderType==1"></u-badge>
  16. </view>
  17. </view>
  18. </view>
  19. <view class="more_search">
  20. <image src="~@/static/moreSearch.svg" mode="" @click="searchShow = true"></image>
  21. </view>
  22. </view>
  23. <view v-if="activeType == 'quality'">
  24. <InspectionWorkList pageName="myList" :way="orderType == 1 ? 'todo' : 'done'" ref="inspectionWorkListRef"></InspectionWorkList>
  25. </view>
  26. <view v-else class="work-list">
  27. <!-- 站号筛选 && -->
  28. <view v-if="activeType == 'patrol' && clientEnvironmentId == 10" class="group-tab-bar rx-sc">
  29. <view class="group-tab-item" v-for="(tab, idx) in groupTabs" :key="idx"
  30. :class="{ active: groupId === tab.groupId }" @click="switchGroup(tab.groupId)">
  31. {{ tab.label }}
  32. </view>
  33. </view>
  34. <u-list @scrolltolower="scrolltolower" :key="activeType" :preLoadScreen="page * 10">
  35. <u-list-item v-for="(item, index) in dataList" :key="index">
  36. <CardTime :time="item.createTime" />
  37. <KdCard :orderTitle="orderTitle" :title="item.code" @handleDetail="handleDetail" :status="true"
  38. :item="item" :type="activeType" />
  39. </u-list-item>
  40. <u-list-item v-if="dataList.length === 0">
  41. <view class="nodata">暂无数据</view>
  42. </u-list-item>
  43. </u-list>
  44. </view>
  45. <SearchPopup mode="top" v-if="searchShow">
  46. <template v-slot:list>
  47. <view class="search_list">
  48. <u-form labelPosition="left" :model="formData" labelWidth="180" labelAlign="left" class="baseForm">
  49. <u-form-item v-if="orderType == 1 && statusRange[activeType].length > 0" label="类型:" class="required-form" borderBottom
  50. prop="assetType">
  51. <u-checkbox-group v-model="searchFrom.orderStatus" placement="row" size="30"
  52. @change="statusChange">
  53. <u-checkbox v-for="(item, index) in statusRange[activeType]"
  54. :customStyle="{ marginRight: '8px' }" :label="item.text" :name="item.value"
  55. labelSize="30" iconSize="30" activeColor="#157A2C"></u-checkbox>
  56. </u-checkbox-group>
  57. </u-form-item>
  58. <u-form-item label="编号:" class="required-form" borderBottom prop="assetType">
  59. <input type="text" placeholder="请输入编号" v-model="searchFrom.code" />
  60. </u-form-item>
  61. </u-form>
  62. </view>
  63. </template>
  64. <template v-slot:operate>
  65. <view class="operate_box rx-bc">
  66. <u-button size="small" class="u-reset-button mg-20" @click="searchShow = false">取消</u-button>
  67. <u-button type="warning" size="small" class="u-reset-button mg-20" @click="reset">重置</u-button>
  68. <u-button type="success" size="small" class="u-reset-button" @click="doSearch">确定</u-button>
  69. </view>
  70. </template>
  71. </SearchPopup>
  72. </view>
  73. </template>
  74. <script>
  75. import {
  76. getByCode
  77. } from '@/api/pda/common.js'
  78. import { workorderMyPage } from '@/api/pda/workOrder'
  79. import SearchPopup from '@/pages/pda/components/searchPopup.vue'
  80. import {
  81. getWorkOrderList,
  82. statistics,
  83. deviceListQrCode
  84. } from '@/api/myTicket'
  85. import KdCard from '../components/KdCard/index.vue'
  86. import CardTime from '../components/CardTime.vue'
  87. import {
  88. getByFixCode
  89. } from '@/api/repair'
  90. import {
  91. nextTick
  92. } from 'vue'
  93. import InspectionWorkList from '@/pages/qms/inspectionWork/list.vue'
  94. import {
  95. getPlanOrderList
  96. } from '@/api/warehouseManagement'
  97. // import { postJ } from '@/utils/api'
  98. let [isEnd] = [false]
  99. export default {
  100. components: {
  101. KdCard,
  102. CardTime,
  103. SearchPopup,
  104. InspectionWorkList
  105. },
  106. data() {
  107. return {
  108. clientEnvironmentId:
  109. uni.getStorageSync("userInfo") &&
  110. uni.getStorageSync("userInfo").clientEnvironmentId,
  111. groupId: null,
  112. formData: {},
  113. orderTitle: '',
  114. tabsCurrent: 0, // tabs初始位置
  115. doneRange: [{
  116. value: 1,
  117. text: '普通'
  118. },
  119. {
  120. value: 2,
  121. text: '紧急'
  122. },
  123. {
  124. value: 3,
  125. text: '重要'
  126. }
  127. ],
  128. tabList: [
  129. // {
  130. // name: '计划维修工单',
  131. // type: 'repair',
  132. // workOrderType: 4,
  133. // url: `/pages/maintain_service/detail/detail?`,
  134. // badge: {
  135. // value: 0
  136. // }
  137. // },
  138. {
  139. name: '保养工单',
  140. type: 'maintenance',
  141. workOrderType: 2,
  142. index: 0,
  143. url: `/pages/maintenance/detail/detail?`,
  144. badge: {
  145. value: 0
  146. }
  147. },
  148. {
  149. name: '巡点检工单',
  150. type: 'patrol',
  151. workOrderType: 1,
  152. index: 1,
  153. url: `/pages/tour_tally/detail/detail?`,
  154. badge: {
  155. value: 0
  156. }
  157. },
  158. // {
  159. // name: '量具送检工单',
  160. // type: 'quantity',
  161. // workOrderType: 5,
  162. // index: 2,
  163. // url: `/pages/quantity/detail/detail?`,
  164. // badge: {
  165. // value: 0
  166. // }
  167. // },
  168. {
  169. name: '维修工单',
  170. type: 'repair',
  171. workOrderType: 3,
  172. index: 2,
  173. // url: `/pages/maintain_service/detail/detail?`,
  174. url: `/pages/maintenanceWorkorder/detail/detail?`,
  175. badge: {
  176. value: 0
  177. }
  178. },
  179. {
  180. name: '生产工单',
  181. type: 'production',
  182. workOrderType: 6,
  183. index: 3,
  184. // url: `/pages/maintain_service/detail/detail?`,
  185. url: `/pages/pda/workOrder/extrusionMolding/index?`,
  186. badge: {
  187. value: 0
  188. }
  189. },
  190. {
  191. name: '质检工单',
  192. type: 'quality',
  193. workOrderType: 7,
  194. index: 4,
  195. // url: `/pages/maintain_service/detail/detail?`,
  196. url: ``,
  197. badge: {
  198. value: 0
  199. }
  200. },
  201. {
  202. name: '盘点工单',
  203. type: 'stocktaking',
  204. workOrderType: 8,
  205. index: 5,
  206. // url: `/pages/maintain_service/detail/detail?`,
  207. url: `/pages/warehouse/workOrder/inventory/inventory?`,
  208. badge: {
  209. value: 0
  210. }
  211. }
  212. ],
  213. activeType: 'maintenance',
  214. activeIndex: 0,
  215. dataList: [],
  216. searchShow: false,
  217. statusRange: {
  218. repair: [{
  219. value: 0,
  220. text: '待接收'
  221. },
  222. {
  223. value: 2,
  224. text: '执行中'
  225. }
  226. // {
  227. // value: 0,
  228. // text: '待接收'
  229. // },
  230. // {
  231. // value: 2,
  232. // text: '待审核'
  233. // },
  234. // {
  235. // value: 4,
  236. // text: '已撤回'
  237. // },
  238. // {
  239. // value: 6,
  240. // text: '已驳回'
  241. // },
  242. // {
  243. // value: 8,
  244. // text: '已派单'
  245. // },
  246. // {
  247. // value: 1,
  248. // text: '执行中'
  249. // },
  250. // {
  251. // value: 5,
  252. // text: '待验收'
  253. // },
  254. // {
  255. // value: 3,
  256. // text: '已完成'
  257. // },
  258. // {
  259. // value: 7,
  260. // text: '未修复'
  261. // }
  262. ],
  263. maintenance: [{
  264. value: 0,
  265. text: '待接收'
  266. },
  267. {
  268. value: 2,
  269. text: '执行中'
  270. }
  271. // {
  272. // value: 3,
  273. // text: '完成'
  274. // }
  275. ],
  276. patrol: [{
  277. value: 0,
  278. text: '待接收'
  279. },
  280. {
  281. value: 2,
  282. text: '执行中'
  283. }
  284. // {
  285. // value: 3,
  286. // text: '完成'
  287. // }
  288. ],
  289. quantity: [{
  290. value: 0,
  291. text: '待接收'
  292. },
  293. {
  294. value: 2,
  295. text: '执行中'
  296. },
  297. {
  298. value: 3,
  299. text: '完成'
  300. }
  301. ],
  302. check: [{
  303. value: 0,
  304. text: '待接收'
  305. },
  306. {
  307. value: 1,
  308. text: '执行中'
  309. },
  310. {
  311. value: 2,
  312. text: '待审核'
  313. },
  314. {
  315. value: 3,
  316. text: '完成'
  317. },
  318. {
  319. value: 4,
  320. text: '已撤回'
  321. },
  322. {
  323. value: 5,
  324. text: '待验收'
  325. },
  326. {
  327. value: 6,
  328. text: '已驳回'
  329. },
  330. {
  331. value: 7,
  332. text: '未修复'
  333. },
  334. {
  335. value: 8,
  336. text: '已派单'
  337. }
  338. ],
  339. quality: [],
  340. stocktaking: [],
  341. production: [],
  342. },
  343. searchFrom: {
  344. code: '',
  345. orderStatus: []
  346. },
  347. page: 1,
  348. isInstall: true, // 是否首次进入页面
  349. orderType: 1,
  350. codeData: [],
  351. groupTabs: [
  352. { label: '全部', groupId: null },
  353. { label: '5号站', groupId: '2008729845612720129' },
  354. { label: '6号站', groupId: '2008729929536548865' },
  355. { label: '7号站', groupId: '2008730320160468994' }
  356. ],
  357. }
  358. },
  359. created() {
  360. uni.$off('successInit')
  361. uni.$on('successInit', (data) => {
  362. this.$nextTick(() => {
  363. this.$refs.inspectionWorkListRef.successInit()
  364. })
  365. })
  366. },
  367. async onLoad(e) {
  368. console.log('e~~~', e)
  369. this.$nextTick(() => {
  370. console.log(this)
  371. this.isInstall = false
  372. this.orderType = e.orderType // 1待办 2完成
  373. this.tabsCurrent = Number(e.index) ? Number(e.index) : 0
  374. this.$nextTick(async () => {
  375. if (this.orderType == 1) {
  376. await this.getCount()
  377. }
  378. const targetTab = this.tabList[this.tabsCurrent]
  379. if (targetTab) {
  380. this.handleTabChange(targetTab)
  381. }
  382. })
  383. })
  384. },
  385. onUnload() {
  386. uni.$off('successInit')
  387. },
  388. onShow(e) {
  389. console.log(this.orderType);
  390. if (this.isInstall) return
  391. this.dataList = []
  392. this.getList()
  393. this.getCount()
  394. },
  395. methods: {
  396. switchGroup(groupId) {
  397. // this.$emit('changeGroup', groupId)
  398. this.groupId = groupId;
  399. this.getList()
  400. },
  401. // 相机扫码
  402. HandlScanCode() {
  403. // uni.scanCode({
  404. // success: res => {
  405. // let obj = {}
  406. // if (res.result.includes('&')) {
  407. // this.dataArray = res.result.split('&')
  408. // console.log(this.dataArray, 'this.dataArray')
  409. // obj = {
  410. // fixCode: this.dataArray[0],
  411. // code: ''
  412. // }
  413. // } else {
  414. // obj = {
  415. // fixCode: '',
  416. // code: res.result
  417. // }
  418. // }
  419. // console.log(obj,'obj')
  420. // getByFixCode(obj).then(res => {
  421. // uni.navigateTo({
  422. // url: `/pages/home/myTicket/detail?deviceId=${res.id}&type=${this.tabList[this.activeIndex].workOrderType}&codes=${this.dataArray[1]}`
  423. // })
  424. // })
  425. // }
  426. // })
  427. uni.scanCode({
  428. success: res => {
  429. console.log(res.result)
  430. let obj = {}
  431. if (res.result.includes('&')) {
  432. this.codeData = res.result.split('&')
  433. obj = {
  434. fixCode: '',
  435. code: this.codeData[0]
  436. }
  437. } else if (res.result.includes('/')) {
  438. let dataArray = res.result.split('/')
  439. obj = {
  440. fixCode: dataArray[0],
  441. code: ''
  442. }
  443. } else {
  444. obj = {
  445. fixCode: '',
  446. code: res.result
  447. }
  448. }
  449. getByFixCode(obj).then(res => {
  450. let params = {
  451. type: this.tabList[this.activeIndex].workOrderType,
  452. deviceId: res.id
  453. }
  454. deviceListQrCode(params).then(data => {
  455. if (data.length > 1) {
  456. uni.navigateTo({
  457. url: `/pages/home/myTicket/detail?deviceId=${res.id}&type=${this.tabList[this.activeIndex].workOrderType}`
  458. })
  459. } else {
  460. uni.navigateTo({
  461. url: `/pages/tour_tally/check/index?id=${data[0].id}&codes=${this.codeData[1]}`
  462. })
  463. }
  464. })
  465. })
  466. }
  467. })
  468. },
  469. // 紧急度选择
  470. doneChange(id) {},
  471. doSearch() {
  472. this.dataList = []
  473. this.page = 1
  474. this.getList()
  475. this.searchShow = false
  476. },
  477. reset() {
  478. this.searchFrom = {
  479. code: '',
  480. orderStatus: []
  481. }
  482. if (this.orderType == 1) {
  483. // 待办 执行中
  484. this.searchFrom.orderStatus = [0, 2]
  485. } else {
  486. // 已完成
  487. this.searchFrom.orderStatus = [4]
  488. }
  489. this.doSearch()
  490. },
  491. statusChange(value) {
  492. console.log(value)
  493. this.searchFrom.orderStatus = value
  494. },
  495. handleDetail(item) {
  496. let url = this.tabList[this.activeIndex]?.url
  497. if (!url) return
  498. if(this.activeType == 'stocktaking') {
  499. url += `id=${item.id}&status=${item.status}`
  500. } else if(this.activeType == 'production') {
  501. url += `id=${item.id}&title=${item.taskName}&singleReport=${item.singleReport}`
  502. } else {
  503. // url += `id=${item.id}&workOrderCode=${item.workOrderCode}&BizType=${item.bizType}`
  504. url += `id=${item.id}&planId=${item.planId}&code=${item.code}&&orderType=${this.orderType}`
  505. }
  506. console.log(url)
  507. uni.navigateTo({
  508. url
  509. })
  510. },
  511. scrolltolower() {
  512. if (isEnd) return
  513. this.page++
  514. this.getList()
  515. },
  516. handleTabChange(item) {
  517. console.log(item, 'mmmmm')
  518. console.log(item)
  519. this.activeType = item.type
  520. this.activeIndex = item.index
  521. this.dataList = []
  522. this.page = 1
  523. this.reset()
  524. this.searchShow = false
  525. if(this.activeType == 'quality'){
  526. this.$nextTick(() => {
  527. this.$refs.inspectionWorkListRef.getList()
  528. })
  529. }
  530. },
  531. getCount() {
  532. statistics().then(data => {
  533. console.log('onsole.log(data)-----------')
  534. console.log(data)
  535. console.log('this.tabList~~~', this.tabList)
  536. this.tabList = this.tabList.map(item => {
  537. console.log('item~~~', item)
  538. let badgeValue = 0
  539. switch (item.type) {
  540. case 'maintenance':
  541. badgeValue = data.maintenanceNum
  542. break
  543. case 'patrol':
  544. badgeValue = data.patrolInspection
  545. break
  546. case 'quantity':
  547. badgeValue = data.quantityNum
  548. break
  549. case 'repair':
  550. badgeValue = data.repairsNum
  551. break
  552. case 'production':
  553. badgeValue = data.productionNum
  554. break
  555. case 'check':
  556. badgeValue = data.checkNum
  557. break
  558. }
  559. return {
  560. ...item,
  561. badge: {
  562. value: badgeValue
  563. }
  564. }
  565. })
  566. })
  567. // Promise.all(
  568. // this.tabList.map(item =>
  569. // getWorkOrderList(
  570. // {
  571. // type: item.workOrderType
  572. // },
  573. // false
  574. // )
  575. // )
  576. // ).then(res => {
  577. // res.forEach((item, index) => {
  578. // console.log(item)
  579. // // if (item?.success) {
  580. // // this.tabList[index].badge.value = item.data.count
  581. // // }
  582. // })
  583. // })
  584. },
  585. getList() {
  586. if(this.activeType == 'quality'){
  587. return
  588. }
  589. uni.showLoading({
  590. title: '加载中'
  591. })
  592. console.log('this.searchFrom-----------------')
  593. console.log(this.searchFrom)
  594. isEnd = false
  595. const userInfo = uni.getStorageSync('userInfo')
  596. if(this.activeType == 'production'){
  597. let statusList = []
  598. if(this.orderType == 1){
  599. statusList = [4, 5, 7]
  600. } else {
  601. statusList = [6, 10]
  602. }
  603. workorderMyPage({
  604. pageNum: this.page,
  605. size: 10,
  606. ...this.searchFrom,
  607. statusList: statusList,
  608. workCenterIds: userInfo.workCenterIds
  609. })
  610. .then(res => {
  611. console.log('workorderMyPage~~~', res)
  612. if (res.list?.length > 0) {
  613. this.dataList = this.dataList.concat(res.list)
  614. isEnd = this.dataList.length >= res.count
  615. } else {
  616. this.dataList = []
  617. }
  618. console.log(this.dataList)
  619. uni.hideLoading()
  620. })
  621. } else if(this.activeType == 'stocktaking'){
  622. getPlanOrderList({
  623. pageNum: this.page,
  624. size: 10,
  625. status: this.orderType == 1 ? 0 : 2,
  626. ...this.searchFrom,
  627. executorId: userInfo.userId
  628. }).then(res => {
  629. if (res.list?.length > 0) {
  630. // if (params.page === 1) {
  631. // this.dataList = []
  632. // }
  633. // this.dataList.push(...res.data.list.records)
  634. this.dataList = this.dataList.concat(res.list)
  635. isEnd = this.dataList.length >= res.count
  636. } else {
  637. this.dataList = []
  638. }
  639. console.log(this.dataList)
  640. uni.hideLoading()
  641. })
  642. } else {
  643. const params = {
  644. type: this.tabList[this.activeIndex].workOrderType,
  645. pageNum: this.page,
  646. size: 10,
  647. ...this.searchFrom,
  648. }
  649. // 维修
  650. if (this.tabList[this.activeIndex].workOrderType == 3) {
  651. // let userInfo = uni.getStorageSync('userInfo')
  652. // params.executeUserId = userInfo.userId
  653. if (this.orderType == 1) {
  654. if (!params.orderStatus.includes(3)) {
  655. // params.orderStatus.push(3)
  656. }
  657. }
  658. } else {
  659. if (this.orderType == 1) {
  660. if (params.orderStatus.includes(3)) {
  661. let index = params.orderStatus.indexOf(3)
  662. params.orderStatus.splice(index, 1)
  663. }
  664. } else {
  665. params.orderStatus = [3]
  666. }
  667. }
  668. if(this.activeType == 'patrol' && this.groupId) {
  669. params.teamId = this.groupId
  670. }
  671. console.log('params~~~', params);
  672. getWorkOrderList(params)
  673. .then(res => {
  674. if (res.list?.length > 0 && params.type === this.tabList[this.activeIndex].workOrderType) {
  675. // if (params.page === 1) {
  676. // this.dataList = []
  677. // }
  678. // this.dataList.push(...res.data.list.records)
  679. this.dataList = this.dataList.concat(res.list)
  680. isEnd = this.dataList.length >= res.count
  681. } else {
  682. this.dataList = []
  683. }
  684. console.log(this.dataList)
  685. uni.hideLoading()
  686. })
  687. .catch(() => {
  688. uni.hideLoading()
  689. })
  690. }
  691. }
  692. //(1:巡点检;2:保养;3:维修;4:盘点)
  693. // _getMyWorkOrderList(params, loading = true) {
  694. // let str = ''
  695. // for (let key in params) {
  696. // str += '&' + key + '=' + params[key]
  697. // }
  698. // return postJ(this.apiUrl + `/eam/PdaWorkOrder/list?${str.substr(1)}`, {}, loading)
  699. // }
  700. }
  701. }
  702. </script>
  703. <style lang="scss" scoped>
  704. scroll-view ::v-deep ::-webkit-scrollbar {
  705. width: 0;
  706. height: 0;
  707. color: transparent;
  708. }
  709. .group-tab-bar {
  710. background: #fff;
  711. padding: 16rpx 32rpx;
  712. border-bottom: 2rpx solid #e1e1e1;
  713. gap: 16rpx;
  714. }
  715. .group-tab-item {
  716. padding: 8rpx 24rpx;
  717. font-size: 28rpx;
  718. color: #666;
  719. border-radius: 32rpx;
  720. background: #f5f5f5;
  721. white-space: nowrap;
  722. &.active {
  723. background: $theme-color;
  724. color: #fff;
  725. }
  726. }
  727. .scan_btn {
  728. background: url('../../../static/scan.png');
  729. background-size: 100% 100%;
  730. background-repeat: no-repeat;
  731. width: 50rpx;
  732. height: 50rpx;
  733. }
  734. .kd-work-container {
  735. height: 100vh;
  736. overflow: hidden;
  737. display: flex;
  738. flex-direction: column;
  739. .work-list {
  740. flex: 1;
  741. overflow: hidden;
  742. padding: 0 24rpx 16rpx 24rpx;
  743. background-color: $page-bg;
  744. .u-list {
  745. height: 100% !important;
  746. }
  747. }
  748. .nodata {
  749. font-size: 40rpx;
  750. text-align: center;
  751. padding-top: 30rpx;
  752. }
  753. }
  754. .top-wrapper {
  755. display: flex;
  756. align-items: center;
  757. background-color: #fff;
  758. position: relative;
  759. .tab_box {
  760. flex: 1;
  761. height: 68rpx;
  762. display: flex;
  763. overflow-x: auto;
  764. overflow-y: hidden;
  765. -webkit-overflow-scrolling: touch;
  766. white-space: nowrap;
  767. flex-shrink: 0;
  768. &::-webkit-scrollbar {
  769. display: none;
  770. }
  771. .tab_item {
  772. height: 68rpx;
  773. line-height: 68rpx;
  774. padding: 0 20rpx;
  775. font-size: 32rpx;
  776. flex-shrink: 0;
  777. // color: #979C9E;
  778. }
  779. .active {
  780. box-sizing: border-box;
  781. border-bottom: 6rpx solid $theme-color;
  782. color: $theme-color;
  783. }
  784. }
  785. .slide-search {
  786. position: absolute;
  787. top: 100%;
  788. left: 0;
  789. right: 0;
  790. z-index: 10;
  791. background-color: #fff;
  792. .timerange {
  793. width: 90%;
  794. margin: 0 auto 10rpx;
  795. }
  796. .select-box {
  797. display: flex;
  798. padding: 0 10rpx;
  799. .uni-stat__select+.uni-stat__select {
  800. margin-left: 10rpx;
  801. }
  802. }
  803. .more-search {
  804. padding-bottom: 20rpx;
  805. .cell {
  806. display: flex;
  807. align-items: center;
  808. padding-right: 20rpx;
  809. &+.cell {
  810. margin-top: 10rpx;
  811. }
  812. /deep/uni-input {
  813. flex: 1;
  814. height: 70rpx;
  815. border: 1rpx solid #e5e5e5;
  816. border-radius: 8rpx;
  817. font-size: 28rpx;
  818. padding-left: 20rpx;
  819. box-sizing: border-box;
  820. }
  821. .label {
  822. width: 180rpx;
  823. text-align: right;
  824. padding-right: 20rpx;
  825. }
  826. }
  827. /deep/.uni-date__x-input {
  828. height: 70rpx !important;
  829. }
  830. .btn-search {
  831. text-align: right;
  832. padding: 10rpx 10rpx 0;
  833. button {
  834. display: inline-block;
  835. width: 200rpx;
  836. height: 60rpx;
  837. line-height: 58rpx;
  838. font-size: 28rpx;
  839. margin-left: 20rpx;
  840. &.primary {
  841. background-color: $j-primary-border-green;
  842. color: #fff;
  843. }
  844. }
  845. }
  846. }
  847. }
  848. .top-tabs {
  849. flex: 1;
  850. }
  851. .more_search {
  852. padding: 0 20rpx;
  853. }
  854. /deep/.u-input {
  855. border: 1rpx solid #ccc;
  856. .u-input__content__field-wrapper__field {
  857. height: 40rpx !important;
  858. }
  859. }
  860. image {
  861. width: 52rpx;
  862. height: 52rpx;
  863. margin-left: 10rpx;
  864. }
  865. }
  866. .search_list {
  867. min-height: 100rpx;
  868. /deep/ .baseForm {
  869. padding: 10rpx 20rpx;
  870. }
  871. }
  872. .operate_box {
  873. padding: 10rpx;
  874. box-sizing: border-box;
  875. }
  876. .mg-20 {
  877. margin-right: 20rpx;
  878. }
  879. .badge-c {
  880. position: relative;
  881. }
  882. .badge {
  883. position: absolute;
  884. top: 0;
  885. right: 0;
  886. transform: translate(100%, -20%);
  887. font-size: 24rpx;
  888. // position: absolute;
  889. // top: -8rpx;
  890. // left: 100rpx;
  891. // font-size: 24rpx;
  892. padding: 0rpx 10rpx;
  893. border-radius: 38rpx;
  894. background-color: #ff4949;
  895. color: #fff;
  896. font-style: normal;
  897. }
  898. /deep/.u-badge {
  899. top: 0;
  900. right: 0;
  901. transform: translate(90%, 20%);
  902. }
  903. </style>