EntrapmentAdd.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784
  1. <template>
  2. <view class="entrapment-form">
  3. <view class="entrapment-form__header">
  4. <view class="entrapment-form__card">诱捕器:{{baseinfo.trap_number}}</view>
  5. </view>
  6. <view class="entrapment-form__form">
  7. <view class="entrapment-form__item" v-for="(item,index) in wornlist" :key="index">
  8. <view class="entrapment-form__label">
  9. <image src="@/static/image/task/pest/pest.png" mode="aspectFit" class="icon">
  10. </image>
  11. <text class="text">{{item.pest_name}}</text>
  12. <view class="fill-icon">
  13. <uni-icons type="arrowright" size="12" color="#fff"></uni-icons>
  14. </view>
  15. </view>
  16. <!-- #ifndef APP-NVUE -->
  17. <u-input border="none" type="number" v-model="item.pest_number" disabled>
  18. <!-- #endif -->
  19. <!-- #ifdef APP-NVUE -->
  20. <u--input border="none" type="number" v-model="item.pest_number" disabled>
  21. <!-- #endif -->
  22. <template slot="prefix">
  23. <image src="@/static/image/task/pest/statistics.png" mode="aspectFit" class="icon">
  24. </image>
  25. </template>
  26. <template slot="suffix">
  27. <text>头</text>
  28. </template>
  29. <!-- #ifndef APP-NVUE -->
  30. </u-input>
  31. <!-- #endif -->
  32. <!-- #ifdef APP-NVUE -->
  33. </u--input>
  34. <!-- #endif -->
  35. <view class="entrapment-form__close" @click="selectdelold(item,index)"
  36. v-if="baseinfo.taskStatus==='处理中' && baseinfo.comtype">
  37. <uni-icons type="clear"></uni-icons>
  38. </view>
  39. </view>
  40. <view class="entrapment-form__item" v-for="(item,index) in notwornlistnum" :key="item">
  41. <view class="entrapment-form__label" @click="show = true;elsectindex = index">
  42. <image src="@/static/image/task/pest/pest.png" mode="aspectFit" class="icon">
  43. </image>
  44. <text class="text">{{notwornlistdata.name[index] || '请选择害虫'}}</text>
  45. <view class="fill-icon">
  46. <uni-icons type="arrowright" size="12" color="#fff"></uni-icons>
  47. </view>
  48. </view>
  49. <!-- #ifndef APP-NVUE -->
  50. <u-input border="none" type="number" v-model="notwornlistdata.num[index]">
  51. <!-- #endif -->
  52. <!-- #ifdef APP-NVUE -->
  53. <u--input border="none" type="number" v-model="notwornlistdata.num[index]">
  54. <!-- #endif -->
  55. <template slot="prefix">
  56. <image src="@/static/image/task/pest/statistics.png" mode="aspectFit" class="icon">
  57. </image>
  58. </template>
  59. <template slot="suffix">
  60. <text>头</text>
  61. </template>
  62. <!-- #ifndef APP-NVUE -->
  63. </u-input>
  64. <!-- #endif -->
  65. <!-- #ifdef APP-NVUE -->
  66. </u--input>
  67. <!-- #endif -->
  68. <view class="entrapment-form__close" @click="selectdel(index)" v-if="baseinfo.comtype">
  69. <uni-icons type="clear"></uni-icons>
  70. </view>
  71. </view>
  72. <u-empty text="暂无数据" v-if="notwornlistnum<1 && !wornlist.length">
  73. </u-empty>
  74. <!-- <u--form labelPosition="left" ref="entrapmentForm">
  75. <u-form-item label="" prop="userInfo.name" borderBottom v-for="(item,index) in wornlist" :key="index">
  76. <view class="entrapment-form__item">
  77. <view class="entrapment-form__label">
  78. <image src="@/static/image/task/pest/pest.png" mode="aspectFit" class="icon">
  79. </image>
  80. <text class="text">{{item.pest_name}}</text>
  81. <view class="fill-icon">
  82. <uni-icons type="arrowright" size="12" color="#fff"></uni-icons>
  83. </view>
  84. </view>
  85. <u--input border="none" type="number" v-model="item.pest_number">
  86. <template slot="prefix">
  87. <image src="@/static/image/task/pest/statistics.png" mode="aspectFit" class="icon">
  88. </image>
  89. </template>
  90. <template slot="suffix">
  91. <text>头</text>
  92. </template>
  93. </u--input>
  94. <view class="entrapment-form__close" @click="selectdelold(item,index)">
  95. <uni-icons type="clear"></uni-icons>
  96. </view>
  97. </view>
  98. </u-form-item>
  99. <u-form-item label="" borderBottom v-for="(item) in notwornlistnum" :key="item">
  100. <view class="entrapment-form__item">
  101. <view class="entrapment-form__label" @click="show = true;elsectindex = item">
  102. <image src="@/static/image/task/pest/pest.png" mode="aspectFit" class="icon">
  103. </image>
  104. <text class="text">{{notwornlistdata.name[item] || '请选择害虫'}}</text>
  105. <view class="fill-icon">
  106. <uni-icons type="arrowright" size="12" color="#fff"></uni-icons>
  107. </view>
  108. </view>
  109. <u--input border="none" type="number" v-model="notwornlistdata.num[item]">
  110. <template slot="prefix">
  111. <image src="@/static/image/task/pest/statistics.png" mode="aspectFit" class="icon">
  112. </image>
  113. </template>
  114. <template slot="suffix">
  115. <text>头</text>
  116. </template>
  117. </u--input>
  118. <view class="entrapment-form__close" @click="selectdel(item)">
  119. <uni-icons type="clear"></uni-icons>
  120. </view>
  121. </view>
  122. </u-form-item>
  123. </u--form> -->
  124. </view>
  125. <view class="entrapment-form__content" v-if="baseinfo.comtype">
  126. <view class="entrapment-form__content__btn">
  127. <u-button type="primary" :plain="true" icon="plus" text="增加" size="small" @click="addnotwornlistnum">
  128. </u-button>
  129. </view>
  130. <view class="entrapment-form__actions">
  131. <view class="entrapment-form__action green" @click="opebtn2('无虫')">
  132. <image src="@/static/image/task/pest/pest-none.png" mode="aspectFit" class="img"></image>
  133. <text class="text">无虫</text>
  134. </view>
  135. <view class="entrapment-form__action pink" @click="handleSelectedUser('已带回')">
  136. <image src="@/static/image/task/pest/bring.png" mode="aspectFit" class="img"></image>
  137. <text class="text">带回</text>
  138. </view>
  139. <view class="entrapment-form__action blue" @click="opebtn('已登记')">
  140. <image src="@/static/image/task/pest/submit.png" mode="aspectFit" class="img"></image>
  141. <text class="text">提交</text>
  142. </view>
  143. </view>
  144. </view>
  145. <!-- <u-loading-page loading-text="加载中..." :loading="loading" font-size="16"></u-loading-page> -->
  146. <u-picker :show="show" :columns="columns" @confirm="confirm" @cancel="show = false"></u-picker>
  147. <u-picker :show="userVisible" ref="uPicker" :columns="laboratoryUserList" keyName="username"
  148. @cancel="userVisible = false" @confirm="userConfirm"></u-picker>
  149. </view>
  150. <!-- <view class="inset">
  151. <view class="" style="width: 100%;height: 30rpx;background-color: #f7f7f7;">
  152. </view>
  153. <view class="title">
  154. <view class="">
  155. 设备号:
  156. </view>
  157. <view class="title_R">
  158. {{baseinfo.trap_number}}
  159. </view>
  160. </view>
  161. <view class="examine" v-if="baseinfo.comtype">
  162. <view class="examine_itemno" v-for="item,index in wornlist" :key="'a'+index">
  163. <view class="examine_itemno_input">
  164. <u--input suffixIcon="arrow-down-fill" v-model="item.pest_name"
  165. suffixIconStyle="color: #909399;fontSize:14px" disabled></u--input>
  166. </view>
  167. <view class="examine_itemno_input">
  168. <u--input border="surround" v-model="item.pest_number" disabled></u--input>
  169. </view>
  170. <view class="" style="color:red" @click="selectdelold(item,index)">
  171. 删除
  172. </view>
  173. </view>
  174. <view class="examine_item" v-for="item in notwornlistnum" :key="item">
  175. <view class="examine_itemno_input" @click="show = true;elsectindex = item">
  176. <u--input placeholder="请选择害虫名称" suffixIcon="arrow-down-fill"
  177. placeholderStyle="fontSize:12px;color:#999999" readonly
  178. suffixIconStyle="color: #909399;fontSize:14px" v-model="notwornlistdata.name[item]"></u--input>
  179. </view>
  180. <view class="examine_itemno_input">
  181. <u--input placeholder="请输入害虫数量" type="number" placeholderStyle="fontSize:12px;color:#999999"
  182. border="surround" v-model="notwornlistdata.num[item]"></u--input>
  183. </view>
  184. <view class="" style="color:red">
  185. <view class="" v-if="item != notwornlistnum" @click="selectdel(item)">
  186. 删除
  187. </view>
  188. <u-icon name="plus-circle" size="22" color="#1890ff" top="4" v-else
  189. @click="addnotwornlistnum(item)">
  190. </u-icon>
  191. </view>
  192. </view>
  193. </view>
  194. <view class="write" v-else>
  195. <view class="hisbox_hint" v-if="wornlist.length==0">
  196. 暂无数据
  197. </view>
  198. <view class="write_item" v-for="item,index in wornlist" :key="index">
  199. <view class="write_item_L">
  200. {{item.pest_name}}
  201. </view>
  202. <view class="write_item_R">
  203. {{item.pest_number}}只
  204. </view>
  205. </view>
  206. </view>
  207. <view class="operation" v-if="baseinfo.comtype">
  208. <u-button type="primary" text="无虫" @click="opebtn2('无虫')"></u-button>
  209. <u-button type="primary" text="带回" @click="opebtn3('已带回')"></u-button>
  210. <u-button type="primary" text="提交" @click="opebtn('已登记')"></u-button>
  211. </view>
  212. <u-loading-page loading-text="加载中..." :loading="loading" font-size="16"></u-loading-page>
  213. <u-picker :show="show" :columns="columns" @confirm="confirm" @cancel="show = false"></u-picker>
  214. </view> -->
  215. </template>
  216. <script>
  217. import {
  218. isEmpty
  219. } from 'lodash-es';
  220. export default {
  221. props: {
  222. dataSource: {
  223. type: Object,
  224. default: () => ({})
  225. }
  226. },
  227. data() {
  228. return {
  229. baseinfo: {},
  230. wornlist: [],
  231. loading: false,
  232. notwornlist: [],
  233. notwornlistnum: 0,
  234. columns: [],
  235. columns2: [],
  236. show: false,
  237. notwornlistdata: {
  238. name: [],
  239. num: []
  240. },
  241. elsectindex: 0,
  242. dellist: [],
  243. roteindex: false,
  244. isFirstLoad: true,
  245. entrapmentFormModel: {
  246. pestList: []
  247. },
  248. rules: {},
  249. laboratoryUserList: [],
  250. userVisible: false,
  251. userColumns: [],
  252. check_user_id: ''
  253. }
  254. },
  255. onShow(option) {
  256. // console.log(option,555555555555555)
  257. },
  258. onLoad(option) {
  259. },
  260. watch: {
  261. videoData(news, old) {
  262. console.log('触发了2222222222222222222222')
  263. console.log(news)
  264. uni.switchTab({
  265. url: '../response/index'
  266. })
  267. // if (news) {
  268. // }
  269. },
  270. dataSource: {
  271. handler(val) {
  272. if (this.isFirstLoad) {
  273. this.isFirstLoad = false;
  274. this.baseinfo = this.dataSource;
  275. this.init();
  276. }
  277. },
  278. immediate: true
  279. }
  280. },
  281. computed: {
  282. // 视频消息
  283. videoData() {
  284. return this.$store.state.video
  285. },
  286. },
  287. mounted() {
  288. if (this.isFirstLoad && !isEmpty(this.dataSource)) {
  289. this.isFirstLoad = false;
  290. this.baseinfo = this.dataSource;
  291. this.init();
  292. }
  293. },
  294. methods: {
  295. init() {
  296. this.getselectworn();
  297. this.getwornlist(this.baseinfo.id);
  298. this.getLaboratoryUserList();
  299. },
  300. async getwornlist(id) {
  301. console.log(id)
  302. this.loading = true
  303. const res = await this.$myRequest({
  304. url: '/api/api_gateway?method=control_center.task.trap_pest_record_info',
  305. data: {
  306. trap_record_id: id
  307. }
  308. })
  309. console.warn(res, '诱捕器信息')
  310. this.wornlist = res
  311. this.loading = false
  312. var arr = []
  313. for (var i = 0; i < res.length; i++) {
  314. arr.unshift(this.columns[0].indexOf(res[i].pest_name))
  315. }
  316. // console.log(arr)
  317. for (var i = 0; i < arr.length; i++) {
  318. this.columns[0].splice(arr[i], 1)
  319. }
  320. },
  321. async getselectworn() {
  322. const res = await this.$myRequest({
  323. url: '/api/api_gateway?method=sysmenage.maintain.pest_list',
  324. data: {
  325. page: "1",
  326. page_item: "1000000000000000000000000000"
  327. }
  328. })
  329. // this.
  330. console.log(res.page_list)
  331. var arr = []
  332. for (var i = 0; i < res.page_list.length; i++) {
  333. arr.push(res.page_list[i].pest_name)
  334. this.columns2.push(res.page_list[i].pest_name)
  335. }
  336. this.columns.push(arr)
  337. },
  338. addnotwornlistnum() {
  339. console.log(this.notwornlistdata)
  340. const isEveryVailid = this.notwornlistdata.name.every(item => !!item) && this.notwornlistdata.num.every(
  341. item => !!item)
  342. console.log(isEveryVailid, ' add not worn list num')
  343. if (isEveryVailid) {
  344. this.notwornlistnum++;
  345. this.notwornlistdata.name.push('');
  346. this.notwornlistdata.num.push('');
  347. } else {
  348. uni.$u.toast('请将信息填写完成')
  349. }
  350. },
  351. confirm(e) {
  352. this.show = false
  353. console.log(e.value[0], this.elsectindex)
  354. this.notwornlistdata.name[this.elsectindex] = e.value[0]
  355. // console.log(this.notwornlistdata)
  356. this.datacount()
  357. },
  358. userConfirm(e) {
  359. console.log(e, 'user confirm', e.value[0])
  360. this.check_user_id = e.value[0] && e.value[0].user_id;
  361. if(!this.check_user_id){
  362. uni.$u.toast('请先指定实验室人员')
  363. return
  364. }
  365. this.userVisible = false;
  366. this.opebtn3('已带回')
  367. },
  368. datacount() {
  369. // for(var k=0;k<this.dellist.length;k++){
  370. // this.columns[0].push(this.dellist[k])
  371. // }
  372. console.log(this.notwornlistdata.name)
  373. // this.columns[0] = JSON.parse(JSON.stringify(this.columns2))
  374. for (var i = 0; i < this.notwornlistdata.name.length; i++) {
  375. for (var j = 0; j < this.columns[0].length; j++) {
  376. if (this.notwornlistdata.name[i] == this.columns[0][j]) {
  377. this.columns[0].splice(j, 1)
  378. console.log(this.columns[0])
  379. }
  380. }
  381. }
  382. for (var k = 0; k < this.columns2.length; k++) {
  383. if (this.notwornlistdata.name.indexOf(this.columns2[k]) == -1) {
  384. if (this.columns[0].indexOf(this.columns2[k]) == -1) {
  385. this.columns[0].unshift(this.columns2[k])
  386. }
  387. }
  388. }
  389. },
  390. selectdel(item) {
  391. this.notwornlistnum--
  392. var arr = this.notwornlistdata.name.splice(item, 1)
  393. this.notwornlistdata.num.splice(item, 1)
  394. this.columns[0].unshift(arr[0])
  395. },
  396. selectdelold(item, index) {
  397. console.log(item, index)
  398. // var arr = this.notwornlistdata.name.splice(item.pest_name, 1)
  399. // this.notwornlistdata.num.splice(item, 1)
  400. var arr = item.pest_name
  401. this.columns[0].unshift(arr)
  402. this.wornlist.splice(index, 1)
  403. },
  404. opebtn2(str) {
  405. var arr = []
  406. var obj = {
  407. record_id: this.baseinfo.id, // 填报记录id
  408. report_status: str, // 填报记录状态
  409. pest_list: []
  410. }
  411. arr.push()
  412. this.$store.state.wornlist = {
  413. record_id: this.baseinfo.id, // 填报记录id
  414. report_status: str, // 填报记录状态
  415. pest_list: arr
  416. }
  417. // console.log(obj)
  418. // console.log(this.$store.state.wornlist)
  419. // var arr = []
  420. // var store = this.$store.state.wornlist
  421. // for(var i =0;i<store.lengthl;i++){
  422. // arr.push(store[i])
  423. // }
  424. // var obj = {
  425. // record_id: this.baseinfo.id, // 填报记录id
  426. // report_status: str, // 填报记录状态
  427. // pest_list: arr
  428. // }
  429. // arr.push(obj)
  430. // console.log(arr)
  431. // this.$store.state.wornlist = JSON.parse(JSON.stringify(arr))
  432. if (this.roteindex) {
  433. // console.log("返回二页")
  434. uni.navigateBack({
  435. delta: 2
  436. });
  437. } else {
  438. // console.log("返回一页")
  439. // uni.navigateBack({
  440. // delta: 1
  441. // });
  442. this.$emit('close')
  443. }
  444. },
  445. getLaboratoryUserList() {
  446. this.$myRequest({
  447. url: '/api/api_gateway?method=sysmenage.usermanager.check_user_list',
  448. data: {
  449. page: 1,
  450. page_item: 100000,
  451. is_mails: 1,
  452. // real_name: this.nameVal, // 用户名称
  453. // mobile: this.phoneVal, //电话
  454. // org_id: this.org_id, // 组织ID
  455. },
  456. }).then((res) => {
  457. console.log(res, '------------------------- user list')
  458. this.laboratoryUserList = [res]
  459. console.log(this.laboratoryUserList, 'load user list org data list')
  460. })
  461. },
  462. handleSelectedUser(str) {
  463. this.userVisible = true;
  464. console.log(this.laboratoryUserList)
  465. // this.opebtn3(str);
  466. },
  467. opebtn3(str) {
  468. // var arr = []
  469. var arr = []
  470. console.log(this.wornlist)
  471. for (var j = 0; j < this.wornlist.length; j++) {
  472. var obj = {
  473. pest_name: this.wornlist[j].pest_name, // 害虫名称
  474. pest_number: this.wornlist[j].pest_number // 害虫数量
  475. }
  476. arr.push(obj)
  477. }
  478. // console.log(arr)
  479. // var arr1 = []
  480. for (var i = 1; i < this.notwornlistdata.name.length; i++) {
  481. if (this.notwornlistdata.name[i]) {
  482. var obj = {
  483. pest_name: this.notwornlistdata.name[i], // 害虫名称
  484. pest_number: this.notwornlistdata.num[i] || 0 // 害虫数量
  485. }
  486. arr.push(obj)
  487. }
  488. }
  489. console.warn(arr, '已带回')
  490. // this.$store.state.wornlist = arr
  491. this.$store.state.wornlist = {
  492. record_id: this.baseinfo.id, // 填报记录id
  493. report_status: str, // 填报记录状态
  494. check_user_id: this.check_user_id,
  495. pest_list: arr
  496. }
  497. if (this.roteindex) {
  498. uni.navigateBack({
  499. delta: 2
  500. });
  501. } else {
  502. this.$emit('close')
  503. }
  504. },
  505. opebtn(str) {
  506. var arr = []
  507. console.log(this.wornlist)
  508. for (var j = 0; j < this.wornlist.length; j++) {
  509. var obj = {
  510. pest_name: this.wornlist[j].pest_name, // 害虫名称
  511. pest_number: this.wornlist[j].pest_number // 害虫数量
  512. }
  513. arr.push(obj)
  514. }
  515. // console.log(arr)
  516. // var arr1 = []
  517. for (var i = 0; i < this.notwornlistdata.name.length; i++) {
  518. if (this.notwornlistdata.name[i]) {
  519. var obj = {
  520. pest_name: this.notwornlistdata.name[i], // 害虫名称
  521. pest_number: this.notwornlistdata.num[i] // 害虫数量
  522. }
  523. arr.push(obj)
  524. }
  525. }
  526. // console.log(arr)
  527. var tf = arr.every((item) => {
  528. return item.pest_number
  529. })
  530. console.warn(tf, arr, '提交 1213131313331')
  531. if (arr.length != 0 && tf) {
  532. // this.$store.state.wornlist = arr
  533. this.$store.state.wornlist = {
  534. record_id: this.baseinfo.id, // 填报记录id
  535. report_status: str, // 填报记录状态
  536. pest_list: arr
  537. }
  538. if (this.roteindex) {
  539. uni.navigateBack({
  540. delta: 2
  541. });
  542. } else {
  543. this.$emit('close')
  544. }
  545. } else {
  546. uni.$u.toast('请将信息填写完成')
  547. }
  548. }
  549. }
  550. }
  551. </script>
  552. <style lang="less" scoped>
  553. .inset {
  554. width: 100%;
  555. .title {
  556. width: 90%;
  557. margin: 0 auto;
  558. border-bottom: 1px solid #F6F6F6;
  559. padding: 20rpx 0;
  560. display: flex;
  561. justify-content: space-between;
  562. .title_R {
  563. color: #999999;
  564. }
  565. }
  566. .examine {
  567. width: 90%;
  568. margin: 0 auto;
  569. .examine_itemno,
  570. .examine_item {
  571. display: flex;
  572. // justify-content: space-around;
  573. margin-top: 20rpx;
  574. border-bottom: 1px solid #F6F6F6;
  575. padding-bottom: 20rpx;
  576. .examine_itemno_input {
  577. // width: 45%;
  578. margin-right: 60rpx;
  579. }
  580. /deep/.u-input {
  581. width: 200rpx;
  582. height: 30rpx;
  583. }
  584. }
  585. }
  586. .write {
  587. width: 90%;
  588. margin: 0 auto;
  589. .hisbox_hint {
  590. width: 100%;
  591. text-align: center;
  592. font-size: 28rpx;
  593. height: 100rpx;
  594. line-height: 100rpx;
  595. color: #999999;
  596. }
  597. .write_item {
  598. display: flex;
  599. justify-content: space-between;
  600. border-bottom: 1px solid #F6F6F6;
  601. padding: 20rpx 0;
  602. .write_item_R {
  603. color: #999999;
  604. }
  605. }
  606. }
  607. .operation {
  608. display: flex;
  609. margin-top: 30rpx;
  610. /deep/.u-button {
  611. width: 140rpx;
  612. height: 60rpx;
  613. }
  614. }
  615. }
  616. .entrapment-form {
  617. &__header {
  618. position: relative;
  619. width: 540rpx;
  620. height: 144rpx;
  621. border-radius: 70rpx;
  622. margin: 0 auto;
  623. margin-top: -122rpx;
  624. background-image: url(~@/static/image/task/pest/bg.png);
  625. background-repeat: no-repeat;
  626. background-size: 100% 100%;
  627. z-index: 2;
  628. overflow: hidden;
  629. }
  630. &__card {
  631. padding: 0 68rpx;
  632. height: 100%;
  633. font-size: 14px;
  634. line-height: 144rpx;
  635. color: #fff;
  636. }
  637. &__form {
  638. margin-top: -30rpx;
  639. padding: 76rpx;
  640. margin-bottom: 20rpx;
  641. height: 556rpx;
  642. box-sizing: border-box;
  643. border-bottom: 1px solid rgba(2, 2, 2, 0.3);
  644. overflow: auto;
  645. }
  646. &__item {
  647. position: relative;
  648. flex: 1;
  649. display: flex;
  650. justify-content: space-between;
  651. align-items: center;
  652. padding: 20rpx 24rpx;
  653. background: #F8F8F8;
  654. margin-bottom: 40rpx;
  655. .icon {
  656. width: 38rpx;
  657. height: 38rpx;
  658. }
  659. ::v-deep .u-input__content__field-wrapper {
  660. border-bottom: 1rpx solid #3183FF;
  661. }
  662. }
  663. &__label {
  664. display: flex;
  665. align-items: center;
  666. margin-right: 100rpx;
  667. .icon {
  668. width: 50rpx;
  669. height: 50rpx;
  670. }
  671. .text {
  672. font-size: 12px;
  673. line-height: 18px;
  674. color: #555555;
  675. margin: 0 24rpx;
  676. width: 160rpx;
  677. @include line;
  678. }
  679. .fill-icon {
  680. display: flex;
  681. justify-content: center;
  682. align-items: center;
  683. width: 26rpx;
  684. height: 26rpx;
  685. background-color: #1B76FF;
  686. border-radius: 50%;
  687. line-height: 26rpx;
  688. }
  689. }
  690. &__content {
  691. padding: 36rpx 76rpx;
  692. }
  693. &__actions {
  694. padding: 140rpx 30rpx;
  695. display: flex;
  696. justify-content: space-between;
  697. align-items: center;
  698. }
  699. &__action {
  700. display: flex;
  701. flex-direction: column;
  702. justify-content: center;
  703. align-items: center;
  704. width: 100rpx;
  705. height: 100rpx;
  706. border-radius: 50%;
  707. background: #4CD964;
  708. box-shadow: 0px 1px 9px 0px rgba(169, 169, 169, 0.5);
  709. &.green {}
  710. &.pink {
  711. background: linear-gradient(136deg, #FFA4A4 0%, #FF6B6B 100%);
  712. box-shadow: 0px 1px 9px 0px rgba(169, 169, 169, 0.5);
  713. }
  714. &.blue {
  715. background: linear-gradient(220deg, #19A1FF 0%, #70C9FF 100%);
  716. box-shadow: 0px 1px 9px 0px rgba(169, 169, 169, 0.5);
  717. }
  718. .img {
  719. width: 40rpx;
  720. height: 40rpx;
  721. }
  722. .text {
  723. color: #fff;
  724. font-size: 12px;
  725. line-height: 14px;
  726. }
  727. }
  728. &__close {
  729. position: absolute;
  730. padding: 20rpx;
  731. right: -60rpx;
  732. top: 50%;
  733. transform: translateY(-50%);
  734. }
  735. }
  736. </style>