myTicket.vue 20 KB

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