defects.vue 21 KB

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