defects.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780
  1. <template>
  2. <view>
  3. <uni-nav-bar
  4. fixed="true"
  5. statusBar="true"
  6. left-icon="back"
  7. title="保养工单缺陷"
  8. @clickLeft="back"
  9. ></uni-nav-bar>
  10. <view class="page-bottom-padding">
  11. <CellInfo label="设备名称" :value="equiName"></CellInfo>
  12. <CellInfo label="设备编码" :value="equiCode"></CellInfo>
  13. <CellInfo label="巡点检事项" :value="content"></CellInfo>
  14. <CellTip title="紧急程度"></CellTip>
  15. <Cell cellType="more" title="维修工单名称">
  16. <view class="cell-tip-right" slot="more">
  17. <input
  18. type="text"
  19. placeholder="请输入维修工单名称"
  20. v-model="form.repairName"
  21. style="font-size: 28rpx; text-align: right"
  22. />
  23. </view>
  24. </Cell>
  25. <Cell cellType="more" title="执行部门">
  26. <view class="cell-tip-right" slot="more">
  27. <view class="" @click="selectDept('pickerDept', 1)">
  28. <text>{{ form.executeDeptName }}</text>
  29. <text class="iconfont icon-youjiantou"></text>
  30. </view>
  31. </view>
  32. </Cell>
  33. <Cell cellType="more" title="执行人">
  34. <view class="cell-tip-right" slot="more">
  35. <view class="" @click="selectDept('pickerUser', 2)">
  36. <text>{{ form.executeUserName }}</text>
  37. <text class="iconfont icon-youjiantou"></text>
  38. </view>
  39. </view>
  40. </Cell>
  41. <Cell cellType="more" title="期望完成时间" @click="showCalendar">
  42. <view class="cell-tip-right" slot="more">
  43. <uni-datetime-picker v-model="form.expectDoneTime" @change="confirm"
  44. >{{ showTime }}
  45. </uni-datetime-picker>
  46. <!-- <uni-datetime-picker type="datetime" v-model="datetimesingle" @change="changeLog" /> -->
  47. <!-- <view class="span">{{expectCompleteTime}}<text class="iconfont icon-youjiantou"></text> </view> -->
  48. </view>
  49. </Cell>
  50. <Cell cellType="more" title="紧急程度">
  51. <view class="cell-tip-right" slot="more" v-if="pageType !== 'details'">
  52. <picker
  53. @change="bindPickerChange"
  54. :value="degreeIndex"
  55. :range="degreeList"
  56. range-key="value"
  57. >
  58. <view class="span"
  59. >{{ degreeList[degreeIndex].value
  60. }}<text class="iconfont icon-youjiantou"></text
  61. ></view>
  62. </picker>
  63. </view>
  64. <view class="cell-tip-right" slot="more" v-else>
  65. <view class="span"
  66. >{{ degree }}<text class="iconfont icon-youjiantou"></text
  67. ></view>
  68. </view>
  69. </Cell>
  70. <CellTip title="缺陷描述与意见">
  71. <!-- <view class="cell-tip-right btn-span" v-if="pageType !== 'details'">
  72. 引用
  73. </view> -->
  74. </CellTip>
  75. <view class="remark">
  76. <view
  77. class="title"
  78. v-if="remark_list.length == 0 && pageType !== 'details'"
  79. >
  80. <label>点击下面的加号,添加缺陷描述与意见</label>
  81. </view>
  82. <view v-for="(item, index) in remark_list" :key="index">
  83. <view class="reason-list">
  84. <label>缺陷{{ index + 1 }}描述:</label>
  85. <input v-model="item.description" placeholder="请输入" />
  86. </view>
  87. <view class="reason-list">
  88. <label>处理{{ index + 1 }}意见:</label>
  89. <input v-model="item.opinion" placeholder="请输入" />
  90. </view>
  91. </view>
  92. <u-upload
  93. v-if="pageType === 'details'"
  94. :fileList="fileList1"
  95. name="1"
  96. multiple
  97. :maxCount="fileList1.length"
  98. :previewImage="true"
  99. :deletable="false"
  100. width="98"
  101. height="98"
  102. >
  103. </u-upload>
  104. <view class="option-title" v-if="pageType !== 'details'">
  105. <!-- <view class="border-title" @click="add_opinion">
  106. <label class="iconfont icon-jiahao"></label>
  107. </view> -->
  108. <u-upload
  109. :fileList="fileList1"
  110. @afterRead="afterRead"
  111. @delete="deletePic"
  112. name="1"
  113. multiple
  114. :maxCount="3"
  115. width="98"
  116. height="98"
  117. style="margin: 0 30rpx 0"
  118. ></u-upload>
  119. </view>
  120. </view>
  121. <!-- 选择设备 -->
  122. <template>
  123. <CellTip title="选择备件">
  124. <view
  125. class="cell-tip-right btn-span"
  126. @click="goSparepart"
  127. v-if="pageType !== 'details'"
  128. >
  129. 选择备品备件
  130. </view>
  131. </CellTip>
  132. <view
  133. class="content-number border-bottom"
  134. v-for="(item, index) in sparepartList"
  135. :key="index"
  136. >
  137. <view class="content">
  138. <view class="">
  139. <text>{{ item.code }}/</text>
  140. <text class="font-grey">{{ item.name }}</text>
  141. <!-- <text class="btn-span"
  142. :class="item.status.id == '1' ? 'btn-warning': 'btn-primary'">{{item.status.name}}</text> -->
  143. </view>
  144. </view>
  145. <view class=""> x{{ item.num }} </view>
  146. </view>
  147. <view class="list-none" v-if="sparepartList.length === 0">
  148. <u-empty mode="data"></u-empty>
  149. </view>
  150. </template>
  151. <!-- 查看详情 -->
  152. <template v-if="pageType === 'details'">
  153. <CellTip title="处理结果"> </CellTip>
  154. <Cell title="已解决/未解决转报修"></Cell>
  155. </template>
  156. </view>
  157. <view class="footer" v-if="pageType !== 'details'">
  158. <text @click="updateparam(3)">已消缺</text>
  159. <text @click="updateparam(2)">报修</text>
  160. </view>
  161. <!-- <u-calendar :show="calendarShow" mode="single" :closeOnClickOverlay="true" @confirm="confirm"
  162. @close="calendarShow = false">
  163. </u-calendar> -->
  164. <uni-data-picker
  165. ref="pickerDeptName"
  166. @change="handleChange($event, 1)"
  167. :localdata="treeList"
  168. :map="{ text: 'name', value: 'code' }"
  169. v-show="pickerDeptShow"
  170. @popupclosed="pickerDeptShow = false"
  171. >
  172. </uni-data-picker>
  173. <uni-data-picker
  174. ref="pickerUserName"
  175. @change="handleChange($event, 2)"
  176. :localdata="userList"
  177. :map="{ text: 'name', value: 'id' }"
  178. v-show="pickerUserShow"
  179. @popupclosed="pickerUserShow = false"
  180. >
  181. </uni-data-picker>
  182. <!-- <uni-popup ref="popup">
  183. <view class="popupInfo">
  184. <uni-data-picker :localdata="treeList" :map="{text:'name','value':'code'}"></uni-data-picker>
  185. </view>
  186. </uni-popup> -->
  187. </view>
  188. </template>
  189. <script>
  190. import { get, postJ, post } from '@/utils/api.js'
  191. import { degreeList } from '@/utils/common.js'
  192. import { upload } from '@/utils/upload_serve.js'
  193. import Cell from '@/components/Cell.vue'
  194. import CellTip from '@/components/CellTip.vue'
  195. import CellInfo from '@/components/CellInfo.vue'
  196. import SparepartForm from './SparepartForm.vue'
  197. export default {
  198. components: {
  199. Cell,
  200. CellInfo,
  201. CellTip,
  202. SparepartForm
  203. },
  204. data () {
  205. return {
  206. form: {
  207. repairName: '',
  208. executeDeptName: '请选择执行部门',
  209. executeDeptCode: '',
  210. executeUserId: '',
  211. executeUserName: '请选择执行人',
  212. expectDoneTime: Date.now(),
  213. content: '',
  214. urgent: 1,
  215. equiList: []
  216. // repairAmountSum:1
  217. },
  218. pickerDeptShow: false,
  219. pickerUserShow: false,
  220. pageId: '',
  221. parentsId: '',
  222. worksheetInfo: null,
  223. equiName: '',
  224. equiCode: '',
  225. content: '',
  226. remark_list: [
  227. {
  228. description: '',
  229. opinion: ''
  230. }
  231. ],
  232. fileList1: [],
  233. opinion: '',
  234. degree: '',
  235. expectCompleteTime: '',
  236. showTime: '请选择期望完成时间',
  237. sparepartList: [],
  238. pageType: '',
  239. degreeList: degreeList,
  240. degreeIndex: 0,
  241. calendarShow: false,
  242. treeList: [],
  243. userList: []
  244. }
  245. },
  246. onLoad (option) {
  247. this.equiName = option.equiName
  248. this.pageId = option.id
  249. this.bizEquiId = option.bizEquiId
  250. this.ruleItemId = option.ruleItemId
  251. this.equiCode = option.equiCode
  252. this.cycleValue = option.cycleValue
  253. this.cycleType = this.getEnumeration(option.cycleType)
  254. this.content = `${this.cycleValue}${this.cycleType}${this.cycleValue}次`
  255. this.getInfo()
  256. //详情页面 不可编辑
  257. // if (this.pageType === 'details') {
  258. // this.getFlawInfo();
  259. // }
  260. },
  261. onShow () {
  262. this.sparepartList = this.$store.state.maintenance.sparepart
  263. ? this.$store.state.maintenance.sparepart
  264. : []
  265. if (this.worksheetInfo) {
  266. // this.form.equiList = this.worksheetInfo.equiList.filter(item => item.id == this.bizEquiId)
  267. // this.form.equiList.forEach(item => {
  268. // delete
  269. // delete item.ruleItems
  270. // })
  271. // this.form.equiList[0].sparepart = this.sparepartList.map(item => {
  272. // return {
  273. // bizEquiId: this.bizEquiId,
  274. // code: item.code,
  275. // model: item.model,
  276. // name: item.name,
  277. // num: item.num,
  278. // unit: item.unit
  279. // }
  280. // })
  281. // this.getInfo();
  282. }
  283. },
  284. methods: {
  285. selectDept (name, type) {
  286. if (type === 2) {
  287. if (!this.form.executeDeptCode) {
  288. uni.showToast({
  289. title: '请选择执行部门',
  290. icon: 'none'
  291. })
  292. return
  293. }
  294. if (this.userList.length === 0) {
  295. uni.showToast({
  296. title: `${this.form.executeDeptName}没有执行人`,
  297. icon: 'none'
  298. })
  299. return
  300. }
  301. }
  302. this[`${name}Show`] = true
  303. this.$refs[`${name}Name`].show()
  304. },
  305. handleChange (e, type) {
  306. let data = e.detail.value[e.detail.value.length - 1]
  307. if (type === 1) {
  308. // 获取最后一个节点部门
  309. let data = e.detail.value[e.detail.value.length - 1]
  310. this.form.executeDeptCode = data.value
  311. this.form.executeDeptName = data.text
  312. this.getUserInfo()
  313. } else {
  314. this.form.executeUserId = data.value
  315. this.form.executeUserName = data.text
  316. // console.log(e)
  317. }
  318. },
  319. getUserInfo () {
  320. postJ(this.apiUrl + '/main/user/users', {
  321. deptCode: this.form.executeDeptCode
  322. }).then(res => {
  323. if (res.success) {
  324. this.userList = res.data
  325. }
  326. // console.log(this.userList)
  327. })
  328. },
  329. getEnumeration (type) {
  330. switch (type) {
  331. case 'HOUR':
  332. return '小时'
  333. case 'DAY':
  334. return '天'
  335. case 'WEEK':
  336. return '周'
  337. case 'MONTH':
  338. return '月'
  339. case 'YEAR':
  340. return '年'
  341. default:
  342. console.log(type)
  343. break
  344. }
  345. },
  346. // 获取部门
  347. getDeptTree () {
  348. get(this.apiUrl + '/main/org/dept/effectiveTree').then(res => {
  349. if (res.success) {
  350. this.treeList = res.data
  351. }
  352. })
  353. },
  354. //获取信息
  355. getInfo () {
  356. get(this.apiUrl + '/maintain/order/getDetail/' + this.pageId).then(
  357. res => {
  358. let worksheetInfo = res.data
  359. this.worksheetInfo = worksheetInfo
  360. let arr = this.worksheetInfo.equiList.filter(
  361. item => item.id == this.bizEquiId
  362. )
  363. this.sparepartList = arr && arr.length !== 0 ? arr[0].spareParts : []
  364. this.getDeptTree()
  365. // let details = worksheetInfo.details;
  366. // let isDom = null;
  367. // let isDetails = null;
  368. // for (let i = 0; i < details.length; i++) {
  369. // let contentDetails = details[i].contentDetails;
  370. // isDom = contentDetails.find(item => {
  371. // return item.id == this.pageId
  372. // })
  373. // //找到了该事项
  374. // if (isDom) {
  375. // //该设备
  376. // isDetails = details[i];
  377. // break;
  378. // }
  379. // }
  380. // // console.log(isDetails, isDom)
  381. // // this.content = isDom.content;
  382. // // this.equipmentName = isDetails.name;
  383. // // this.equipmentNo = isDetails.code;
  384. // this.sparepartList = isDom.outWorkSheetDetailList || [];
  385. }
  386. )
  387. },
  388. //获取报修信息
  389. getFlawInfo () {
  390. get(
  391. this.apiWebUrl + '/api/maintain/worksheet/getFlawInfo?id=' + this.pageId
  392. ).then(res => {
  393. console.log(res)
  394. let data = res.data
  395. let detail = data.detail[0]
  396. //this.opinion = detail.faultDescription;
  397. this.remark_list = data.descriptionopinion
  398. this.fileList1 = data.image.map(e => {
  399. //组件图片可展示
  400. this.$set(e, 'isImage', true)
  401. return e
  402. })
  403. this.expectCompleteTime = data.expectedCompletionTime
  404. this.degree = data.status.name
  405. })
  406. },
  407. confirm (e) {
  408. console.log(e)
  409. this.expectCompleteTime = e
  410. this.showTime = e
  411. // this.calendarShow = false
  412. },
  413. //选择紧急程度
  414. bindPickerChange (e) {
  415. // console.log(e)
  416. this.degreeIndex = e.detail.value
  417. this.form.urgent = this.degreeList[this.degreeIndex].id
  418. },
  419. showCalendar () {
  420. if (this.pageType == 'details') return
  421. // this.calendarShow = !this.calendarShow
  422. // console.log(this.calendarShow)
  423. },
  424. //报修提交- 修改事项状态 、上传报修信息
  425. updateparam (status) {
  426. if (status === 2) {
  427. if (!this.form.repairName) {
  428. uni.showToast({
  429. title: '请输入维修工单名称',
  430. icon: 'none'
  431. })
  432. return
  433. }
  434. if (!this.form.executeDeptCode) {
  435. uni.showToast({
  436. title: '请选择执行部门',
  437. icon: 'none'
  438. })
  439. return
  440. }
  441. if (!this.form.executeUserId) {
  442. uni.showToast({
  443. title: '请选择执行人',
  444. icon: 'none'
  445. })
  446. return
  447. }
  448. if (!this.form.expectDoneTime) {
  449. uni.showToast({
  450. title: '请选择期望完成时间',
  451. icon: 'none'
  452. })
  453. return
  454. }
  455. this.form.content =
  456. this.remark_list && this.remark_list.length !== 0
  457. ? this.remark_list[0].description
  458. : ''
  459. this.form.equiList = this.worksheetInfo.equiList.filter(
  460. item => item.id == this.bizEquiId
  461. )
  462. this.form.equiList.forEach(item => {
  463. // console.log(item.sparepart)
  464. // item.sparepart.forEach(el => {
  465. // delete el.id
  466. // })
  467. delete item.id
  468. delete item.ruleItems
  469. })
  470. this.form.equiList[0].spareParts = this.sparepartList.map(item => {
  471. return {
  472. bizEquiId: this.bizEquiId,
  473. code: item.code,
  474. model: item.model,
  475. name: item.name,
  476. num: item.num,
  477. unit: item.unit
  478. }
  479. })
  480. uni.showLoading({
  481. title: '加载中'
  482. })
  483. postJ(this.apiUrl + '/repair/info/saveOrEdit', this.form).then(res => {
  484. // console.log(res)
  485. if (res.success) {
  486. this.updateStatus(0)
  487. // uni.showToast({
  488. // title: "操作成功",
  489. // icon: "none"
  490. // })
  491. // this.back()
  492. }
  493. })
  494. } else {
  495. this.updateStatus(1)
  496. }
  497. // let PromiseArr = [changeStatus];
  498. // //修改事项状态
  499. // const changeStatus = postJ(this.apiUrl + "/repair/info/saveOrEdit", {
  500. // data
  501. // });
  502. // if (status == 2) {
  503. // //处理图片json数据
  504. // let image = this.fileList1.map(el => {
  505. // return {
  506. // "accessUrl": el.accessUrl,
  507. // "docId": el.docId,
  508. // "name": el.name,
  509. // "size": el.size,
  510. // "type": el.type.id,
  511. // "url": el.url
  512. // }
  513. // })
  514. // let data = {
  515. // "assetsList": [{
  516. // "assetsName": this.equipmentName,
  517. // "assetsSn": this.equipmentNo,
  518. // //描述
  519. // //"faultDescription": this.faultDescription,
  520. // //意见
  521. // //"opinion": this.opinion,
  522. // //"owner": "",
  523. // "place": this.equipmentPlace
  524. // }],
  525. // "descriptionopinion": this.remark_list,
  526. // "expectedCompletionTime": this.expectCompleteTime,
  527. // "image": image,
  528. // //事项id
  529. // "relateId": this.pageId,
  530. // //工单code
  531. // "spotInspectionWorkOrderSn": this.worksheetInfo.code,
  532. // "status": {
  533. // "id": this.degreeList[this.degreeIndex].id,
  534. // "name": this.degreeList[this.degreeIndex].value
  535. // }
  536. // }
  537. // console.log(data)
  538. // //报修- 消缺
  539. // const repairs = postJ(this.apiUrl + "/feature/patrol/sheetwork/repairs", data);
  540. // PromiseArr.unshift(repairs);
  541. // }
  542. // Promise.all(PromiseArr).then(res => {
  543. // uni.showToast({
  544. // title: '操作成功'
  545. // })
  546. // this.back()
  547. // }).catch(err => {
  548. // uni.showToast({
  549. // title: '操作失败',
  550. // icon: 'none'
  551. // })
  552. // })
  553. },
  554. updateStatus (status) {
  555. postJ(this.apiUrl + '/rule/item/editStatus', {
  556. ruleItemId: this.ruleItemId,
  557. status
  558. }).then(res => {
  559. // console.log(res)
  560. uni.hideLoading()
  561. if (res.success) {
  562. uni.showToast({
  563. title: '操作成功'
  564. })
  565. // this.getInfo();
  566. this.back()
  567. }
  568. })
  569. },
  570. // 删除图片
  571. deletePic (event) {
  572. this[`fileList${event.name}`].splice(event.index, 1)
  573. },
  574. //添加描述
  575. add_opinion () {
  576. if (this.remark_list.length === 1) return
  577. this.remark_list.push({
  578. description: '',
  579. opinion: ''
  580. })
  581. //descriptionopinion
  582. },
  583. //文件上传
  584. uploadFile (img) {
  585. return new Promise((resolve, reject) => {
  586. upload(
  587. {
  588. img
  589. },
  590. this.apiUrl + '/data/doc/add',
  591. '缺陷'
  592. ).then(res => {
  593. //直接通过uni.chooseImage获取地址传给后端
  594. let resData = JSON.parse(res.data)
  595. console.log('上传后')
  596. console.log(resData)
  597. if (resData.success) {
  598. // uni.showToast({
  599. // title: "上传成功",
  600. // icon: 'none',
  601. // duration: 2000
  602. // })
  603. resolve(resData.data)
  604. } else {
  605. uni.showToast({
  606. title: '上传失败',
  607. icon: 'none',
  608. duration: 2000
  609. })
  610. reject(res)
  611. }
  612. })
  613. })
  614. },
  615. // 新增图片
  616. async afterRead (event) {
  617. // 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式
  618. let lists = [].concat(event.file)
  619. let fileListLen = this[`fileList${event.name}`].length
  620. lists.map(item => {
  621. this[`fileList${event.name}`].push({
  622. ...item,
  623. status: 'uploading',
  624. message: '上传中'
  625. })
  626. })
  627. for (let i = 0; i < lists.length; i++) {
  628. const result = await this.uploadFile(lists[i].url)
  629. console.log('上传后result:' + result)
  630. let item = this[`fileList${event.name}`][fileListLen]
  631. this[`fileList${event.name}`].splice(
  632. fileListLen,
  633. 1,
  634. Object.assign(item, {
  635. status: 'success',
  636. accessUrl: result.accessUrl,
  637. docId: result.docId,
  638. name: result.name,
  639. size: result.size,
  640. type: result.type,
  641. url: result.url
  642. })
  643. )
  644. fileListLen++
  645. }
  646. console.log(this.fileList1)
  647. },
  648. //选择备件
  649. goSparepart () {
  650. uni.navigateTo({
  651. url: '../sparepart/sparepart?id=' + this.pageId
  652. })
  653. }
  654. }
  655. }
  656. </script>
  657. <style scoped lang="scss">
  658. .content-number {
  659. padding: 10rpx 20rpx;
  660. display: flex;
  661. align-items: center;
  662. justify-content: space-between;
  663. font-size: $uni-font-size-base;
  664. color: $uni-text-color;
  665. .content {
  666. padding: 10rpx 0;
  667. }
  668. text {
  669. margin-right: 6rpx;
  670. }
  671. }
  672. .title {
  673. margin: 20rpx 0;
  674. font-size: $uni-font-size-base;
  675. color: $uni-text-color-grey;
  676. text-align: center;
  677. }
  678. .reason-list {
  679. padding: 15rpx 20rpx;
  680. display: flex;
  681. align-items: center;
  682. font-size: $uni-font-size-base;
  683. color: $uni-text-color-grey;
  684. input {
  685. font-size: $uni-font-size-base;
  686. color: $uni-text-color;
  687. }
  688. }
  689. .option-title {
  690. display: flex;
  691. flex-direction: row;
  692. justify-content: flex-start;
  693. text-align: center;
  694. .border-title {
  695. width: 94rpx;
  696. height: 94rpx;
  697. line-height: 90rpx;
  698. border: 1rpx solid #c0c0c0;
  699. border-radius: 15rpx;
  700. margin: 0 30rpx 30rpx;
  701. }
  702. .iconfont {
  703. font-size: 40rpx;
  704. color: $uni-text-color-grey;
  705. }
  706. }
  707. //底部按钮
  708. .footer {
  709. display: flex;
  710. flex-direction: row;
  711. justify-content: center;
  712. align-items: center;
  713. bottom: 0;
  714. width: 100%;
  715. height: 100rpx;
  716. text-align: center;
  717. position: fixed;
  718. // text {
  719. // width: 100%;
  720. // background-color: $j-primary-green;
  721. // font-size: 34rpx;
  722. // color: #FFFFFF;
  723. // line-height: 100rpx;
  724. // }
  725. text:nth-child(odd) {
  726. border-top: 1rpx solid $uni-border-color;
  727. width: 50%;
  728. background-color: #ffffff;
  729. font-size: 34rpx;
  730. color: $j-primary-green;
  731. line-height: 99rpx;
  732. height: 98rpx;
  733. }
  734. text:nth-child(even) {
  735. width: 50%;
  736. background-color: $j-primary-green;
  737. font-size: 34rpx;
  738. color: #ffffff;
  739. line-height: 100rpx;
  740. }
  741. }
  742. .uni-input-placeholder {
  743. color: #999;
  744. }
  745. .popupInfo {
  746. background-color: #fff;
  747. padding: 40rpx;
  748. border-radius: 10rpx 10rpx 0 0;
  749. }
  750. </style>