patrolPlanAdd.vue 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110
  1. <!-- 安全检查-发起巡查计划 -->
  2. <template>
  3. <view class="examine">
  4. <scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
  5. <view class="basics">
  6. <view class="title">
  7. <view class="title_t">计划标题</view>
  8. <textarea class="title_b" type="text" v-model="form.title" maxlength="200" placeholder="请输入检查计划标题"
  9. placeholder-style="color:#999999;font-size:30rpx;"></textarea>
  10. </view>
  11. <view class="type">
  12. <view class="type_l">检查组织</view>
  13. <input class="type_r" type="text" v-model="form.checkTypeName" placeholder="" disabled
  14. maxlength="20">
  15. </view>
  16. <view class="period">
  17. <view class="period_l">计划周期</view>
  18. <view class="period_r">
  19. <picker mode="date" @change="startChange(form,$event)">
  20. <input class="picker-text" disabled type="text" v-model="form.cycleStartTime"
  21. placeholder="开始时间">
  22. </picker>
  23. <view>至</view>
  24. <picker mode="date" @change="endChange(form,$event)">
  25. <input class="picker-text2" disabled type="text" v-model="form.cycleEndTime"
  26. placeholder="结束时间">
  27. </picker>
  28. </view>
  29. </view>
  30. <view class="tiem_quick">
  31. <view @click="tiemQuick(index)" :class="item.type?'tiem_quick_a':'tiem_quick_b'"
  32. v-for="(item,index) in tiemQuickList" :key="index">{{item.name}}</view>
  33. </view>
  34. <view class="scope">
  35. <view class="scope_l">检查范围</view>
  36. <picker @change="scopeChange" :value="scopeIndex" :range="scopeArray" class="scope_r">
  37. <view class="scope_r_n">
  38. <view>{{form.checkRange?(form.checkRange==1?'全校':(form.checkRange==2?'学院':'实验室')):'选择检查范围'}}
  39. </view>
  40. <img src="@/pages_safetyExamine/images/icon_06.png">
  41. </view>
  42. </picker>
  43. </view>
  44. <view class="scope_btn" v-if="scopeIndex==1 || scopeIndex==2" @click="collegeOrLab()">
  45. {{scopeIndex==1?'选择学院':'选择实验室'}}
  46. </view>
  47. <view class="scope_text" v-if="scopeIndex==0 || scopeIndex==1">
  48. 已选择<text>{{form.collegeNum}}</text>个学院,共<text>{{form.subjectNum}}</text>间实验室</view>
  49. <view class="scope_text" v-if="scopeIndex==2">已选择<text>{{form.subjectNum}}</text>间实验室</view>
  50. <view class="scope">
  51. <view class="scope_l">检查类型</view>
  52. <picker @change="categoryChange" :value="categoryIndex" :range="categoryArray" class="scope_r">
  53. <view class="scope_r_n">
  54. <view>{{form.checkCategory==1?'综合检查':(form.checkCategory==2?'专项检查':'请选择检查类型')}}</view>
  55. <img src="@/pages_safetyExamine/images/icon_06.png">
  56. </view>
  57. </picker>
  58. </view>
  59. <view class="content" v-if="form.checkCategory==2">
  60. <view class="content_l">检查内容</view>
  61. <view class="content_r">
  62. <view class="content_r_l" @click="clickContent()">选择检查内容</view>
  63. <view class="content_r_r">已选择<text>{{form.hazardNum}}</text>种</view>
  64. </view>
  65. </view>
  66. <view class="title">
  67. <view class="title_t">检查要求</view>
  68. <textarea class="title_b" type="text" v-model="form.checkDemand" maxlength="100"
  69. placeholder="请输入检查要求" placeholder-style="color:#999999;font-size:30rpx;"></textarea>
  70. </view>
  71. </view>
  72. <view class="patrol_group" v-if="form.checkType==1">
  73. <view class="patrol">
  74. <view class="patrol_l">巡查组</view>
  75. <view class="patrol_r_n" @click="patrolChange">
  76. <view>{{form.checkGroupName?form.checkGroupName:'请选择巡查组'}}</view>
  77. <img src="@/pages_safetyExamine/images/icon_06.png">
  78. </view>
  79. </view>
  80. <view class="list">
  81. <view class="list_title"><img src="@/pages_safetyExamine/images/icon_jcjh_cy.png">成员</view>
  82. <view class="list_header"><text>工号</text><text>姓名</text></view>
  83. <view class="list_li" v-for="(item,index) in form.checkMemberDtoList" :key="index">
  84. <text>{{item.jobNum}}</text><text>{{item.name}}</text>
  85. </view>
  86. <view class="list_bottom" v-if="form.checkMemberDtoList.length==0">无数据</view>
  87. </view>
  88. </view>
  89. </scroll-view>
  90. <view class="bottom_btn" @click="submitForm()">保存</view>
  91. <!-- 选择学院-->
  92. <view class="shade" v-if="dialogVisible">
  93. <view class="null-box" @click="dialogClose()"></view>
  94. <view class="shade_n">
  95. <view class="shade_n_title"><text>选择学院</text><text @click="collegeConfirm">确定</text></view>
  96. <view class="shade_n_b">
  97. <view class="shade_n_b_li" v-for="(item,index) in collegeList" :key="index"
  98. @click="collegeSelete(index)">
  99. <text :class="item.type?'color_B':'color_A'">{{item.deptName}}</text>
  100. <img v-if="item.type" src="@/pages_safetyExamine/images/icon_xzwt_xz.png">
  101. </view>
  102. </view>
  103. </view>
  104. </view>
  105. </view>
  106. </template>
  107. <script>
  108. import {
  109. config
  110. } from '@/api/request/config.js'
  111. import {
  112. checkPlanAdd,
  113. systemDeptDropList,
  114. getAllSubNum,
  115. isSCollege,
  116. laboratorySubRelInfoConditionCollegeInfo,
  117. laboratorySubRelInfoGetAllSubNum
  118. } from '@/pages_safetyExamine/api/index.js'
  119. export default {
  120. name: "rectifyList",
  121. components: {
  122. },
  123. data() {
  124. return {
  125. pageType: 0,
  126. //列表请求参数
  127. getData: {
  128. page: 1,
  129. pageSize: 20,
  130. },
  131. form: {
  132. title: '',
  133. checkType: '1', //1校院巡查 2实验室自查
  134. checkTypeName: '校院巡查', //1校院巡查 2实验室自查
  135. cycleStartTime: '',
  136. cycleEndTime: '',
  137. checkRange: '', //检查范围 1全校 2学院 3实验室
  138. checkLevel: '', //巡查组层级
  139. seleteListMember: [], //临时存储选中巡查组
  140. checkMemberDtoList: [], //巡查组成员
  141. collegeIds: '', //学院id组
  142. collegeNum: 0, //学院数量
  143. subIds: '', //实验室id组
  144. subjectNum: 0, //实验室数量
  145. hazardNum: 0, //检查设备数量
  146. checkDemand: '', //检查要求
  147. tiemQuickList: [],
  148. scopeIndex: '', //0 全校 1学院 2实验室
  149. seleteListLab: [],
  150. seleteListDevice: [],
  151. groupDataType: '', //巡查组状态 院级/校级
  152. checkCategory: '', //检查类型 1综合检查 2专项检查
  153. },
  154. tiemQuickList: [{
  155. name: '本月',
  156. type: false
  157. }, {
  158. name: '本季度',
  159. type: false
  160. }, {
  161. name: '全年',
  162. type: false
  163. }],
  164. scopeIndex: 0,
  165. scopeArray: ['全校', '学院', '实验室'],
  166. categoryIndex: 0,
  167. categoryArray: ['综合检查', '专项检查'],
  168. dialogVisible: false,
  169. collegeList: []
  170. }
  171. },
  172. onLoad(option) {
  173. if (option.pageType) {
  174. if (option.pageType == 1) { //校院巡查
  175. this.form.checkType = option.pageType;
  176. this.form.checkTypeName = '校院巡查';
  177. uni.setNavigationBarTitle({
  178. title: '发起巡查计划'
  179. })
  180. } else if (option.pageType == 2) { //实验室自查
  181. this.form.checkType = option.pageType;
  182. this.form.checkTypeName = '实验室自查';
  183. uni.setNavigationBarTitle({
  184. title: '发起自查计划'
  185. })
  186. }
  187. }
  188. },
  189. onShow(form) {
  190. if (form) {
  191. this.form = JSON.parse(decodeURIComponent(form));
  192. this.tiemQuickList = this.form.tiemQuickList //时间快捷
  193. this.scopeIndex = this.form.scopeIndex //检查范围
  194. }
  195. },
  196. mounted() {
  197. this.isSCollege();
  198. },
  199. methods: {
  200. //滚动事件
  201. scrollGet() {},
  202. //顶部tab点击
  203. tabClick(index) {
  204. this.curTab = index;
  205. },
  206. //开始时间选中事件
  207. startChange(form, e) {
  208. if (new Date(e.target.value).getTime() > new Date(form.cycleEndTime).getTime()) {
  209. uni.showToast({
  210. title: '结束时间不能小于开始时间',
  211. icon: "none",
  212. mask: true,
  213. duration: 2000
  214. });
  215. } else {
  216. form.cycleStartTime = e.target.value
  217. this.tiemQuickList.forEach(function(item) {
  218. item.type = false;
  219. })
  220. }
  221. },
  222. //结束时间选中事件
  223. endChange(form, e) {
  224. if (new Date(form.cycleStartTime).getTime() > new Date(e.target.value).getTime()) {
  225. uni.showToast({
  226. title: '结束时间不能小于开始时间',
  227. icon: "none",
  228. mask: true,
  229. duration: 2000
  230. });
  231. } else {
  232. form.cycleEndTime = e.target.value
  233. this.tiemQuickList.forEach(function(item) {
  234. item.type = false;
  235. })
  236. }
  237. },
  238. //检查周期快捷
  239. tiemQuick(index) {
  240. this.tiemQuickList[index].type = !this.tiemQuickList[index].type
  241. let self = this;
  242. if (self.tiemQuickList[index].type == true) {
  243. self.tiemQuickList.forEach(function(item2) {
  244. if (item2.name == self.tiemQuickList[index].name) {
  245. item2.type = true
  246. } else {
  247. item2.type = false
  248. }
  249. })
  250. //快捷本月-本季度-全年
  251. self.timeSlotChange(self.tiemQuickList[index].name)
  252. } else {
  253. console.log('取消选中')
  254. self.form.cycleStartTime = '';
  255. self.form.cycleEndTime = '';
  256. }
  257. },
  258. //查询当前用户是否是院级
  259. async isSCollege() {
  260. let self = this;
  261. const {
  262. data
  263. } = await isSCollege();
  264. if (data.code == 200) {
  265. if (data.data.userFlg) {
  266. // 院级
  267. this.$set(this, 'scopeArray', ['学院', '实验室']);
  268. this.form.groupDataType = 2;
  269. } else {
  270. // 校级
  271. this.$set(this, 'scopeArray', ['全校', '学院', '实验室']);
  272. this.form.groupDataType = 0;
  273. }
  274. }
  275. },
  276. //检查类型
  277. categoryChange(e) {
  278. let self = this;
  279. if (e.target.value == 0) {
  280. this.form.checkCategory = 1
  281. } else if (e.target.value == 1) {
  282. this.form.checkCategory = 2
  283. }
  284. },
  285. //检查内容
  286. clickContent() {
  287. if (!this.form.collegeNum && !this.form.subjectNum) {
  288. uni.showToast({
  289. title: '请先选择检查范围',
  290. icon: "none",
  291. mask: true,
  292. duration: 2000
  293. });
  294. return;
  295. }
  296. this.form.tiemQuickList = this.tiemQuickList //检查周期快捷存储
  297. this.form.scopeIndex = this.scopeIndex //检查范围
  298. uni.navigateTo({
  299. url: '/pages_safetyExamine/views/patrolPlan/patrolPlanAddContent?form=' + encodeURIComponent(
  300. JSON.stringify(this.form)) + '&pageType=1'
  301. });
  302. },
  303. //检查范围
  304. scopeChange(e) {
  305. let self = this;
  306. if (this.scopeArray[e.target.value] == '全校') {
  307. self.scopeIndex = 0;
  308. self.form.checkRange = 1;
  309. } else if (this.scopeArray[e.target.value] == '学院') {
  310. self.scopeIndex = 1;
  311. self.form.checkRange = 2;
  312. } else if (this.scopeArray[e.target.value] == '实验室') {
  313. self.scopeIndex = 2;
  314. self.form.checkRange = 3;
  315. }
  316. if (this.form.subjectNum > 0) {
  317. uni.showModal({
  318. content: '重新选择会删除现有选择的实验室,是否重选?',
  319. cancelColor: "#999",
  320. confirmColor: "#0183FA",
  321. success: function(res) {
  322. if (res.confirm) {
  323. self.form.collegeIds = '';
  324. self.form.collegeNum = 0;
  325. self.form.subIds = '';
  326. self.form.subjectNum = 0;
  327. if (self.scopeIndex == 0) { //全校
  328. self.getAllSubNum();
  329. } else if (self.scopeIndex == 1) { //选择学院
  330. self.conditionCollegeInfo();
  331. } else if (self.scopeIndex == 2) {
  332. console.log('选择实验室')
  333. }
  334. } else if (res.cancel) {
  335. }
  336. }
  337. });
  338. } else {
  339. if (self.scopeIndex == 0) { //全校
  340. self.getAllSubNum();
  341. } else if (self.scopeIndex == 1) { //选择学院
  342. self.conditionCollegeInfo();
  343. } else if (self.scopeIndex == 2) {
  344. console.log('选择实验室')
  345. }
  346. }
  347. },
  348. timeSlotChange(val) {
  349. let self = this;
  350. let cycleStartTime, cycleEndTime;
  351. let now = new Date(); //当前日期
  352. let nowDayOfWeek = now.getDay(); //今天本周的第几天
  353. let nowDay = now.getDate(); //当前日
  354. let nowMonth = now.getMonth(); //当前月
  355. let nowYear = now.getFullYear(); //当前年
  356. let jd = Math.ceil((nowMonth + 1) / 3)
  357. switch (val) {
  358. case "本周":
  359. cycleStartTime = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek)
  360. cycleEndTime = new Date(nowYear, nowMonth, nowDay + 6 - nowDayOfWeek)
  361. break;
  362. case "本月":
  363. cycleStartTime = new Date(nowYear, nowMonth, 1)
  364. cycleEndTime = new Date(nowYear, nowMonth + 1, 0)
  365. break;
  366. case "本季度":
  367. cycleStartTime = new Date(nowYear, (jd - 1) * 3, 1)
  368. cycleEndTime = new Date(nowYear, jd * 3, 0)
  369. break
  370. case "全年":
  371. cycleStartTime = new Date(nowYear, 0, 1)
  372. cycleEndTime = new Date(nowYear, 11, 31)
  373. break
  374. }
  375. self.form.cycleStartTime = self.formatDateTime(cycleStartTime)
  376. self.form.cycleEndTime = self.formatDateTime(cycleEndTime)
  377. },
  378. // 中国标准时间 转换成 年月日
  379. formatDateTime(date) {
  380. var y = date.getFullYear();
  381. var m = date.getMonth() + 1;
  382. m = m < 10 ? ('0' + m) : m;
  383. var d = date.getDate();
  384. d = d < 10 ? ('0' + d) : d;
  385. var h = date.getHours();
  386. var minute = date.getMinutes();
  387. minute = minute < 10 ? ('0' + minute) : minute;
  388. // return y + '-' + m + '-' + d+' '+h+':'+minute;
  389. return y + '-' + m + '-' + d
  390. },
  391. //巡查组
  392. patrolChange() {
  393. this.form.tiemQuickList = this.tiemQuickList //检查周期快捷存储
  394. this.form.scopeIndex = this.scopeIndex //检查范围
  395. uni.navigateTo({
  396. url: '/pages_safetyExamine/views/patrolPlan/patrolPlanAddMember?form=' + encodeURIComponent(
  397. JSON.stringify(this.form)) + '&pageType=1'
  398. });
  399. },
  400. //选择学院或者实验室
  401. collegeOrLab() {
  402. if (this.scopeIndex == 1) { //学院
  403. this.dialogVisible = true;
  404. } else if (this.scopeIndex == 2) { //实验室
  405. this.form.tiemQuickList = this.tiemQuickList //检查周期快捷存储
  406. this.form.scopeIndex = this.scopeIndex //检查范围
  407. uni.navigateTo({
  408. url: '/pages_safetyExamine/views/patrolPlan/patrolPlanAddLab?form=' + encodeURIComponent(
  409. JSON.stringify(this.form)) + '&pageType=1'
  410. });
  411. }
  412. },
  413. //选择学院弹窗关闭
  414. dialogClose() {
  415. this.dialogVisible = false;
  416. },
  417. //选择学院确定
  418. collegeConfirm() {
  419. let self = this;
  420. this.dialogVisible = false;
  421. let list = [];
  422. let collegeIds = [];
  423. let subjectNum = 0;
  424. self.collegeList.forEach(function(item) {
  425. if (item.type == true) {
  426. list.push(item)
  427. collegeIds.push(item.deptId);
  428. subjectNum += item.subNum;
  429. }
  430. })
  431. self.form.collegeIds = collegeIds.join(',');
  432. self.form.subjectNum = subjectNum;
  433. self.form.collegeNum = list.length;
  434. },
  435. //学院选择
  436. collegeSelete(index) {
  437. this.collegeList[index].type = !this.collegeList[index].type
  438. },
  439. //查询学院列表
  440. async conditionCollegeInfo() {
  441. let self = this;
  442. const {
  443. data
  444. } = await laboratorySubRelInfoConditionCollegeInfo({
  445. deptName: '',
  446. level: 2,
  447. deptType: 1
  448. });
  449. if (data.code == 200) {
  450. data.data.forEach(function(item) {
  451. item.type = false;
  452. })
  453. self.collegeList = data.data;
  454. }
  455. },
  456. //查询全校学院和实验室数量
  457. async getAllSubNum() {
  458. let self = this;
  459. const {
  460. data
  461. } = await laboratorySubRelInfoGetAllSubNum();
  462. if (data.code == 200) {
  463. this.form.collegeNum = data.data.collegeCount
  464. this.form.subjectNum = data.data.subCount
  465. }
  466. },
  467. handleClick(doType) {
  468. let self = this;
  469. if (doType == 'subBtn') { //
  470. }
  471. },
  472. //巡查计划-添加
  473. async submitForm() {
  474. let self = this;
  475. if (!self.form.title) {
  476. uni.showToast({
  477. title: '请输入计划标题',
  478. icon: "none",
  479. mask: true,
  480. duration: 2000
  481. });
  482. return;
  483. }
  484. if (!self.form.cycleStartTime || !self.form.cycleEndTime) {
  485. uni.showToast({
  486. title: '请选择计划周期',
  487. icon: "none",
  488. mask: true,
  489. duration: 2000
  490. });
  491. return;
  492. }
  493. if (!self.form.checkRange) {
  494. uni.showToast({
  495. title: '请选择检查范围',
  496. icon: "none",
  497. mask: true,
  498. duration: 2000
  499. });
  500. return;
  501. }
  502. if (self.form.checkRange == 2 && self.form.subjectNum == 0) {
  503. uni.showToast({
  504. title: '请选择学院',
  505. icon: "none",
  506. mask: true,
  507. duration: 2000
  508. });
  509. return;
  510. }
  511. if (self.form.checkRange == 3 && self.form.subjectNum == 0) {
  512. uni.showToast({
  513. title: '请选择实验室',
  514. icon: "none",
  515. mask: true,
  516. duration: 2000
  517. });
  518. return;
  519. }
  520. if (self.form.checkType == 1 && self.form.checkMemberDtoList.length <= 0) {
  521. uni.showToast({
  522. title: '请选择巡查组',
  523. icon: "none",
  524. mask: true,
  525. duration: 2000
  526. });
  527. return;
  528. }
  529. console.log(self.form.checkCategory)
  530. console.log(self.form.hazardNum)
  531. if (self.form.checkCategory == 2 && self.form.hazardNum == 0) {
  532. uni.showToast({
  533. title: '请选择检查内容!',
  534. icon: "none",
  535. mask: true,
  536. duration: 2000
  537. });
  538. return;
  539. }
  540. const {
  541. data
  542. } = await checkPlanAdd(self.form);
  543. if (data.code == 200) {
  544. uni.showToast({
  545. title: '提交成功',
  546. icon: "none",
  547. mask: true,
  548. duration: 2000
  549. });
  550. uni.redirectTo({
  551. url: '/pages_safetyExamine/views/patrolPlan/patrolPlanList?pageType=' + this.form.checkType
  552. });
  553. }
  554. },
  555. }
  556. }
  557. </script>
  558. <style lang="stylus" scoped>
  559. .examine {
  560. height: 100%;
  561. display flex;
  562. // padding: 0 30rpx;
  563. // box-sizing: border-box;
  564. padding-bottom: 126rpx;
  565. box-sizing: border-box;
  566. .info-max-box {
  567. flex: 1;
  568. overflow: scroll;
  569. padding: 0 30rpx;
  570. box-sizing: border-box;
  571. }
  572. .basics {
  573. width: 690rpx;
  574. background: #FFFFFF;
  575. border-radius: 20rpx;
  576. margin-top: 20rpx;
  577. padding: 60rpx 26rpx 32rpx;
  578. box-sizing: border-box;
  579. .title {
  580. .title_t {
  581. font-size: 30rpx;
  582. font-family: PingFang SC-Medium, PingFang SC;
  583. font-weight: 400;
  584. color: #333333;
  585. line-height: 42rpx;
  586. margin-bottom: 12rpx;
  587. }
  588. .title_b {
  589. width: 636rpx;
  590. height: 150rpx;
  591. border-radius: 10rpx;
  592. opacity: 1;
  593. border: 1rpx solid #E0E0E0;
  594. padding: 26rpx 23rpx;
  595. box-sizing: border-box;
  596. }
  597. }
  598. .type {
  599. display: flex;
  600. justify-content: flex-start;
  601. align-items: center;
  602. margin-top: 20rpx;
  603. .type_l {
  604. width: 146rpx;
  605. font-size: 30rpx;
  606. font-family: PingFang SC-Medium, PingFang SC;
  607. font-weight: 400;
  608. color: #333333;
  609. line-height: 42rpx;
  610. text-align: left;
  611. }
  612. .type_r {
  613. width: 490rpx;
  614. height: 80rpx;
  615. border-radius: 10rpx;
  616. padding-left: 22rpx;
  617. box-sizing: border-box;
  618. background: #F5F5F5;
  619. }
  620. }
  621. .period {
  622. display: flex;
  623. justify-content: flex-start;
  624. align-items: center;
  625. margin-top: 26rpx;
  626. .period_l {
  627. width: 146rpx;
  628. font-size: 30rpx;
  629. font-family: PingFang SC-Medium, PingFang SC;
  630. font-weight: 400;
  631. color: #333333;
  632. line-height: 42rpx;
  633. text-align: left;
  634. }
  635. .period_r {
  636. width: 490rpx;
  637. height: 80rpx;
  638. border-radius: 10rpx;
  639. border: 1rpx solid #E0E0E0;
  640. display: flex;
  641. justify-content: flex-start;
  642. align-items: center;
  643. .picker-text {
  644. font-size: 30rpx;
  645. font-family: PingFang SC-Medium, PingFang SC;
  646. font-weight: 400;
  647. color: #999999;
  648. line-height: 80rpx;
  649. width: 230rpx;
  650. text-align: center;
  651. }
  652. .picker-text2 {
  653. font-size: 30rpx;
  654. font-family: PingFang SC-Medium, PingFang SC;
  655. font-weight: 400;
  656. color: #999999;
  657. line-height: 80rpx;
  658. width: 230rpx;
  659. text-align: center;
  660. }
  661. }
  662. }
  663. .tiem_quick {
  664. margin-left: 146rpx;
  665. display: flex;
  666. justify-content: flex-start;
  667. margin-top: 20rpx;
  668. >view {
  669. width: 130rpx;
  670. height: 80rpx;
  671. opacity: 1;
  672. border: 1rpx solid #E0E0E0;
  673. font-size: 30rpx;
  674. font-family: PingFang SC-Medium, PingFang SC;
  675. font-weight: 400;
  676. line-height: 80rpx;
  677. text-align: center;
  678. }
  679. >view:nth-of-type(1) {
  680. border-radius: 10rpx 0rpx 0rpx 10rpx;
  681. }
  682. >view:nth-of-type(3) {
  683. border-radius: 0rpx 10rpx 10rpx 0rpx;
  684. }
  685. .tiem_quick_a {
  686. background: #0183FA;
  687. color: #FFFFFF;
  688. }
  689. .tiem_quick_b {
  690. background: #F5F5F5;
  691. color: #333333;
  692. }
  693. }
  694. .scope {
  695. display: flex;
  696. justify-content: flex-start;
  697. align-items: center;
  698. margin-top: 26rpx;
  699. .scope_l {
  700. width: 146rpx;
  701. font-size: 30rpx;
  702. font-family: PingFang SC-Medium, PingFang SC;
  703. font-weight: 400;
  704. color: #333333;
  705. line-height: 42rpx;
  706. text-align: left;
  707. }
  708. .scope_r {
  709. flex: 1;
  710. .scope_r_n {
  711. width: 490rpx;
  712. height: 80rpx;
  713. border-radius: 10rpx;
  714. border: 1rpx solid #E0E0E0;
  715. display: flex;
  716. justify-content: flex-start;
  717. align-items: center;
  718. >view {
  719. flex: 1;
  720. line-height: 80rpx;
  721. margin-left: 20rpx;
  722. color: #999999;
  723. font-size: 28rpx;
  724. }
  725. >img {
  726. width: 14rpx;
  727. height: 8rpx;
  728. margin-right: 30rpx;
  729. }
  730. }
  731. }
  732. }
  733. .content {
  734. display: flex;
  735. justify-content: flex-start;
  736. align-items: center;
  737. margin-top: 26rpx;
  738. .content_l {
  739. width: 146rpx;
  740. font-size: 30rpx;
  741. font-family: PingFang SC-Medium, PingFang SC;
  742. font-weight: 400;
  743. color: #333333;
  744. line-height: 42rpx;
  745. text-align: left;
  746. }
  747. .content_r {
  748. flex: 1;
  749. display: flex;
  750. justify-content: flex-start;
  751. align-items: center;
  752. .content_r_l {
  753. width: 220rpx;
  754. height: 80rpx;
  755. background: #0183FA;
  756. border-radius: 10rpx 10rpx 10rpx 10rpx;
  757. text-align: center;
  758. font-size: 30rpx;
  759. font-family: PingFang SC-Medium, PingFang SC;
  760. font-weight: 400;
  761. color: #FFFFFF;
  762. line-height: 80rpx;
  763. margin-right: 26rpx;
  764. }
  765. .content_r_r {
  766. font-size: 30rpx;
  767. font-family: PingFang SC-Medium, PingFang SC;
  768. font-weight: 400;
  769. color: #333333;
  770. line-height: 42rpx;
  771. >text {
  772. color: #0183FA;
  773. }
  774. }
  775. }
  776. }
  777. .scope_btn {
  778. display: inline-block;
  779. background: #0183FA;
  780. border-radius: 10rpx;
  781. font-size: 30rpx;
  782. font-family: PingFang SC-Medium, PingFang SC;
  783. font-weight: 400;
  784. color: #FFFFFF;
  785. line-height: 80rpx;
  786. text-align: center;
  787. padding: 0 16rpx;
  788. box-sizing: border-box;
  789. margin-top: 40rpx;
  790. margin-left: 146rpx;
  791. }
  792. .scope_text {
  793. margin-left: 146rpx;
  794. font-size: 30rpx;
  795. font-family: PingFang SC-Medium, PingFang SC;
  796. font-weight: 400;
  797. color: #333333;
  798. margin-top: 32rpx;
  799. line-height: 42rpx;
  800. >text {
  801. color: #0183FA;
  802. }
  803. }
  804. }
  805. .patrol_group {
  806. width: 690rpx;
  807. background: #FFFFFF;
  808. border-radius: 20rpx;
  809. margin-top: 20rpx;
  810. padding: 40rpx 30rpx 64rpx;
  811. box-sizing: border-box;
  812. .patrol {
  813. display: flex;
  814. justify-content: flex-start;
  815. align-items: center;
  816. margin-top: 26rpx;
  817. .patrol_l {
  818. width: 146rpx;
  819. font-size: 30rpx;
  820. font-family: PingFang SC-Medium, PingFang SC;
  821. font-weight: 400;
  822. color: #333333;
  823. line-height: 42rpx;
  824. text-align: left;
  825. }
  826. .patrol_r_n {
  827. width: 490rpx;
  828. height: 80rpx;
  829. border-radius: 10rpx;
  830. border: 1rpx solid #E0E0E0;
  831. display: flex;
  832. justify-content: flex-start;
  833. align-items: center;
  834. >view {
  835. flex: 1;
  836. line-height: 80rpx;
  837. margin-left: 20rpx;
  838. color: #999999;
  839. font-size: 28rpx;
  840. }
  841. >img {
  842. width: 14rpx;
  843. height: 8rpx;
  844. margin-right: 30rpx;
  845. }
  846. }
  847. }
  848. .list {
  849. margin-top: 42rpx;
  850. .list_title {
  851. display: flex;
  852. justify-content: flex-start;
  853. align-items: center;
  854. height: 80rpx;
  855. background: #F5F5F5;
  856. border-radius: 10rpx 10rpx 0rpx 0rpx;
  857. font-size: 30rpx;
  858. font-family: PingFang SC-Medium, PingFang SC;
  859. font-weight: 400;
  860. color: #333333;
  861. line-height: 80rpx;
  862. >img {
  863. width: 30rpx;
  864. height: 30rpx;
  865. margin: 0 20rpx;
  866. }
  867. }
  868. .list_header {
  869. display: flex;
  870. justify-content: flex-start;
  871. >text {
  872. flex: 1;
  873. height: 80rpx;
  874. background: #F5F5F5;
  875. font-size: 30rpx;
  876. font-family: PingFang SC-Medium, PingFang SC;
  877. font-weight: 400;
  878. color: #333333;
  879. line-height: 80rpx;
  880. text-align: center;
  881. border: 1rpx solid #E0E0E0;
  882. }
  883. >text:nth-of-type(1) {
  884. border-right: none;
  885. }
  886. }
  887. .list_li {
  888. display: flex;
  889. justify-content: flex-start;
  890. >text {
  891. flex: 1;
  892. height: 80rpx;
  893. font-size: 30rpx;
  894. font-family: PingFang SC-Medium, PingFang SC;
  895. font-weight: 400;
  896. color: #333333;
  897. line-height: 80rpx;
  898. text-align: center;
  899. border: 1rpx solid #E0E0E0;
  900. }
  901. >text:nth-of-type(1) {
  902. border-right: none;
  903. border-top: none;
  904. }
  905. >text:nth-of-type(2) {
  906. border-top: none;
  907. }
  908. }
  909. .list_bottom {
  910. flex: 1;
  911. height: 80rpx;
  912. font-size: 30rpx;
  913. font-family: PingFang SC-Medium, PingFang SC;
  914. font-weight: 400;
  915. color: #999999;
  916. line-height: 80rpx;
  917. text-align: center;
  918. border: 1rpx solid #E0E0E0;
  919. border-top: none;
  920. }
  921. }
  922. }
  923. .bottom_btn {
  924. position: fixed;
  925. bottom: 26rpx;
  926. left: 30rpx;
  927. font-size: 30rpx;
  928. font-family: PingFang SC-Medium, PingFang SC;
  929. font-weight: 400;
  930. color: #FFFFFF;
  931. line-height: 90rpx;
  932. width: 690rpx;
  933. height: 90rpx;
  934. background: #0183FA;
  935. border-radius: 20rpx;
  936. text-align: center;
  937. }
  938. /* 指纹采集 */
  939. .shade {
  940. height: 100%;
  941. width: 100%;
  942. position: fixed;
  943. display: flex;
  944. flex-direction: column;
  945. z-index: 10;
  946. background: rgba(0, 0, 0, 0.2);
  947. .null-box {
  948. flex: 1;
  949. }
  950. .shade_n {
  951. position: absolute;
  952. bottom: 0;
  953. left: 0;
  954. width: 750rpx;
  955. height: 560rpx;
  956. background: #FFFFFF;
  957. border-radius: 20rpx 20rpx 0rpx 0rpx;
  958. .shade_n_title {
  959. height: 100rpx;
  960. padding: 0 30rpx;
  961. box-sizing: border-box;
  962. display: flex;
  963. justify-content: space-between;
  964. border-bottom: 1rpx solid #E0E0E0;
  965. >text:nth-of-type(1) {
  966. font-size: 30rpx;
  967. font-family: PingFang SC-Medium, PingFang SC;
  968. font-weight: 400;
  969. color: #333333;
  970. line-height: 100rpx;
  971. }
  972. >text:nth-of-type(2) {
  973. font-size: 30rpx;
  974. font-family: PingFang SC-Medium, PingFang SC;
  975. font-weight: 400;
  976. color: #0183FA;
  977. line-height: 100rpx;
  978. }
  979. }
  980. .shade_n_b {
  981. height: 460rpx;
  982. padding: 0 30rpx;
  983. box-sizing: border-box;
  984. overflow-y: auto;
  985. .shade_n_b_li {
  986. display: flex;
  987. justify-content: space-between;
  988. align-items: center;
  989. height: 80rpx;
  990. border-bottom: 1rpx solid #E0E0E0;
  991. >text {
  992. font-size: 28rpx;
  993. font-family: PingFang SC-Medium, PingFang SC;
  994. font-weight: 400;
  995. line-height: 80rpx;
  996. overflow: hidden;
  997. text-overflow: ellipsis;
  998. white-space: nowrap;
  999. }
  1000. >img {
  1001. width: 24rpx;
  1002. height: 16rpx;
  1003. margin-right: 14rpx;
  1004. }
  1005. }
  1006. .color_A {
  1007. color: #333333;
  1008. }
  1009. .color_B {
  1010. color: #0183FA;
  1011. }
  1012. }
  1013. }
  1014. }
  1015. }
  1016. </style>