changeUser.vue 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687
  1. <template>
  2. <view class="changeUser">
  3. <view class="head">
  4. <view class="tab" :class="{active: tab.value === dataInfo.tabActiveValue}" v-for="tab in dataInfo.tabs" :key="tab.id" @click="clickTab(tab.value)">
  5. {{tab.name}}<text v-if="tab.num !== ''">({{tab.num}})</text>
  6. </view>
  7. </view>
  8. <!-- <scroll-view scroll-y class="body"> -->
  9. <view class="body view-body">
  10. <!-- 转派 -->
  11. <template v-if="dataInfo.tabActiveValue === 'redeploy'">
  12. <view class="form_item">
  13. <view class="title select"><text class="required newicon newicon-bitian"></text>工作组:</view>
  14. <!-- <uni-data-select class="value" v-model="dataInfo.groupId" :localdata="dataInfo.groupList" :clear="false" placeholder="请选择工作组" @change="changeGroup" :class="{formRed: isSubmit && !dataInfo.groupId}"></uni-data-select> -->
  15. <uni-data-picker class="value" placeholder="请选择工作组"
  16. :localdata="dataInfo.groupList" v-model="dataInfo.groupId"
  17. :clear-icon="false" @change="changeGroup" :class="{formRed: isSubmit && !dataInfo.groupId}">
  18. </uni-data-picker>
  19. </view>
  20. <view class="form_item">
  21. <view class="title radio"><text class="required newicon newicon-bitian"></text>是否转派到人:</view>
  22. <uni-data-checkbox class="value" v-model="dataInfo.isAssignUser" :localdata="dataInfo.isAssignUserList" @change="changeIsAssignUser" />
  23. </view>
  24. <view class="form_item" v-if="dataInfo.isAssignUser === 1">
  25. <view class="title select"><text class="required newicon newicon-bitian"></text>转派对象:</view>
  26. <!-- <uni-data-select class="value" v-model="dataInfo.userId" :localdata="dataInfo.userList" :clear="false" placeholder="请选择转派对象" :class="{formRed: isSubmit && dataInfo.groupId && dataInfo.isAssignUser == 1 && !dataInfo.userId}"></uni-data-select> -->
  27. <uni-data-picker class="value" placeholder="请选择转派对象"
  28. :localdata="dataInfo.userList" v-model="dataInfo.userId"
  29. :clear-icon="false" :class="{formRed: isSubmit && dataInfo.groupId && dataInfo.isAssignUser == 1 && !dataInfo.userId}">
  30. </uni-data-picker>
  31. </view>
  32. </template>
  33. <!-- 指派 -->
  34. <template v-if="dataInfo.tabActiveValue === 'assign'">
  35. <view class="form_item">
  36. <view class="title select"><text class="required newicon newicon-bitian"></text>院区:</view>
  37. <!-- <uni-data-select class="value" v-model="dataInfo.branchId" :localdata="dataInfo.branchList" :clear="false" placeholder="请选择院区" @change="changeBranch" :class="{formRed: isSubmit && !dataInfo.branchId}"></uni-data-select> -->
  38. <uni-data-picker class="value" placeholder="请选择院区"
  39. :localdata="dataInfo.branchList" v-model="dataInfo.branchId"
  40. :clear-icon="false" @change="changeBranch" :class="{formRed: isSubmit && !dataInfo.branchId}">
  41. </uni-data-picker>
  42. </view>
  43. <view class="form_item">
  44. <view class="title select"><text class="required newicon newicon-bitian"></text>责任科室:</view>
  45. <!-- <uni-data-select class="value" v-model="dataInfo.dutyId" :localdata="dataInfo.dutyList" :clear="false" placeholder="请选择责任科室" @change="changeDuty" :class="{formRed: isSubmit && !dataInfo.dutyId}"></uni-data-select> -->
  46. <uni-data-picker class="value" placeholder="请选择责任科室"
  47. :localdata="dataInfo.dutyList" v-model="dataInfo.dutyId"
  48. :clear-icon="false" @change="changeDuty" :class="{formRed: isSubmit && !dataInfo.dutyId}">
  49. </uni-data-picker>
  50. </view>
  51. <view class="form_item">
  52. <view class="title select"><text class="required newicon newicon-bitian"></text>工作组:</view>
  53. <!-- <uni-data-select class="value" v-model="dataInfo.groupId" :localdata="dataInfo.groupList" :clear="false" placeholder="请选择工作组" @change="changeGroup" :class="{formRed: isSubmit && !dataInfo.groupId}"></uni-data-select> -->
  54. <uni-data-picker class="value" placeholder="请选择工作组"
  55. v-model="dataInfo.groupId" :localdata="dataInfo.groupList"
  56. :clear-icon="false" @change="changeGroup" :class="{formRed: isSubmit && !dataInfo.groupId}">
  57. </uni-data-picker>
  58. </view>
  59. <view class="form_item">
  60. <view class="title radio"><text class="required newicon newicon-bitian"></text>是否指派到人:</view>
  61. <uni-data-checkbox class="value" v-model="dataInfo.isAssignUser" :localdata="dataInfo.isAssignUserList" @change="changeIsAssignUser" />
  62. </view>
  63. <view class="form_item" v-if="dataInfo.isAssignUser === 1">
  64. <view class="title select"><text class="required newicon newicon-bitian"></text>指派对象:</view>
  65. <!-- <uni-data-select class="value" v-model="dataInfo.userId" :localdata="dataInfo.userList" :clear="false" placeholder="请选择指派对象" :class="{formRed: isSubmit && dataInfo.groupId && dataInfo.isAssignUser == 1 && !dataInfo.userId}"></uni-data-select> -->
  66. <uni-data-picker class="value" placeholder="请选择指派对象"
  67. v-model="dataInfo.userId" :localdata="dataInfo.userList"
  68. :clear-icon="false" :class="{formRed: isSubmit && dataInfo.groupId && dataInfo.isAssignUser == 1 && !dataInfo.userId}">
  69. </uni-data-picker>
  70. </view>
  71. </template>
  72. <!-- 退回 -->
  73. <template v-if="dataInfo.tabActiveValue === 'reassign'">
  74. <view class="form_item column">
  75. <view class="title"><text class="required newicon newicon-bitian"></text>退回原因:</view>
  76. <uni-easyinput class="value" type="textarea" v-model="dataInfo.reassignRemark" placeholder="请输入退回原因" :class="{formRed: isSubmit && !dataInfo.reassignRemark.trim()}" />
  77. <view class="tips">注:退回后,由调度台重新指派。</view>
  78. </view>
  79. </template>
  80. </view>
  81. <!-- </scroll-view> -->
  82. <view class="foot_common_btns">
  83. <button @click="goBack" type="default" class="cancelButton btn">返回</button>
  84. <button @click="submit" type="default" class="primaryButton btn">提交</button>
  85. </view>
  86. </view>
  87. </template>
  88. <script setup>
  89. import { ref, reactive } from 'vue'
  90. import { onLoad } from '@dcloudio/uni-app'
  91. import { api_group, api_incidentDetail, api_user, api_incidentTask, api_branch, api_dutyDepartment } from "@/http/api.js"
  92. import { defaultColor } from '@/static/js/theme.js'
  93. import { useSetTitle } from '@/share/useSetTitle.js'
  94. import { useMakePhoneCall } from '@/share/useMakePhoneCall.js'
  95. import { useGoBack } from '@/share/useGoBack.js'
  96. import { useLoginUserStore } from '@/stores/loginUser'
  97. useSetTitle();
  98. const loginUserStore = useLoginUserStore();
  99. const { makePhoneCall } = useMakePhoneCall();
  100. const { goBack } = useGoBack();
  101. // 主题颜色
  102. const primaryColor = ref(defaultColor)
  103. // 数据
  104. const dataInfo = reactive({
  105. tabs: [
  106. // {id: 1, name: '转派', value: 'redeploy', num: ''},
  107. // {id: 2, name: '指派', value: 'assign', num: ''},
  108. // {id: 3, name: '升级', value: 'upgrade', num: ''},
  109. // {id: 4, name: '退回', value: 'reassign', num: ''},
  110. ],
  111. tabActiveValue: 0,//当前选择的tab
  112. incidentId: undefined,//事件ID
  113. incidentData: {},//事件对象
  114. groupList: [], //工作组列表
  115. groupId: undefined, //工作组ID
  116. userList: [], //用户列表
  117. userId: undefined, //用户ID
  118. branchList: [], //院区列表
  119. branchId: undefined, //院区ID
  120. dutyList: [], //责任科室列表
  121. dutyId: undefined, //责任科室ID
  122. isAssignUser: 1, //工作组是否转派到人
  123. isAssignUserList: [
  124. { text: '是', value: 1 },
  125. { text: '否', value: 0 },
  126. ], //工作组是否转派到人选项
  127. reassignRemark: '',//退回原因
  128. })
  129. // 是否提交
  130. const isSubmit = ref(false)
  131. // 重置
  132. function reset(){
  133. dataInfo.branchId = undefined;
  134. dataInfo.branchList = [];
  135. dataInfo.dutyId = undefined;
  136. dataInfo.dutyList = [];
  137. dataInfo.groupId = undefined;
  138. dataInfo.groupList = [];
  139. dataInfo.userId = undefined;
  140. dataInfo.userList = [];
  141. dataInfo.isAssignUser = 1;
  142. dataInfo.reassignRemark = '';
  143. }
  144. // 初始化表单
  145. function initForm(){
  146. if(dataInfo.tabActiveValue === 'redeploy'){
  147. getGroups();
  148. }else if(dataInfo.tabActiveValue === 'assign'){
  149. getBranchs();
  150. }
  151. }
  152. // 点击tab
  153. function clickTab(tabValue){
  154. if(dataInfo.tabActiveValue == tabValue){
  155. return;
  156. }
  157. dataInfo.tabActiveValue = tabValue;
  158. isSubmit.value = false;
  159. reset();
  160. initForm()
  161. }
  162. // 获取事件详情
  163. function getIncidentDetail(){
  164. uni.showLoading({
  165. title: "加载中",
  166. mask: true,
  167. });
  168. api_incidentDetail(dataInfo.incidentId).then(res => {
  169. uni.hideLoading();
  170. if(res.status == 200){
  171. dataInfo.incidentData = res.data || {};
  172. let transferFlag = false;//转派权限
  173. let assignFlag = false;//指派权限
  174. for (let i = 0; i < loginUserStore.loginUser.menu.length; i++) {
  175. if (loginUserStore.loginUser.menu[i].link == "shijianliebiao_assign") {
  176. assignFlag = true
  177. }
  178. if (loginUserStore.loginUser.menu[i].link == "shijianliebiao_transfer") {
  179. transferFlag = true
  180. }
  181. }
  182. // 转派
  183. if(dataInfo.incidentData.state.value == 'handler' && dataInfo.incidentData.handlingPersonnelUser && dataInfo.incidentData.handlingPersonnelUser.id == loginUserStore.loginUser.user.id && !assignFlag && transferFlag){
  184. dataInfo.tabs.splice(0, 0, {id: 1, name: '转派', value: 'redeploy', num: ''});
  185. }
  186. // 指派
  187. if((dataInfo.incidentData.state.value == 'pending' || dataInfo.incidentData.state.value == 'handler' || dataInfo.incidentData.state.value == 'reassign') && assignFlag){
  188. let index = dataInfo.tabs.findIndex(v => v.value === 'reassign');
  189. if(index < 0){
  190. dataInfo.tabs = [{id: 1, name: '指派', value: 'assign', num: ''}];
  191. }else{
  192. dataInfo.tabs.splice(index, 0, {id: 1, name: '指派', value: 'assign', num: ''});
  193. }
  194. }
  195. // 退回
  196. if(dataInfo.incidentData.state.value == 'pending' || dataInfo.incidentData.state.value == 'handler'){
  197. if(dataInfo.tabs.length){
  198. dataInfo.tabs.splice(dataInfo.tabs.length, 0, {id: 4, name: '退回', value: 'reassign', num: ''});
  199. }else{
  200. dataInfo.tabs = [{id: 4, name: '退回', value: 'reassign', num: ''}];
  201. }
  202. }
  203. dataInfo.tabActiveValue = dataInfo.tabs[0].value;
  204. initForm()
  205. }else{
  206. uni.showToast({
  207. icon: 'none',
  208. title: res.msg || '请求数据失败!'
  209. });
  210. }
  211. })
  212. }
  213. // 获取院区列表
  214. function getBranchs(){
  215. uni.showLoading({
  216. title: "加载中",
  217. mask: true,
  218. });
  219. let postData = {
  220. "idx": 0,
  221. "sum": 9999,
  222. };
  223. api_branch(postData).then(res => {
  224. uni.hideLoading();
  225. if(res.status == 200){
  226. res.list = res.list || [];
  227. dataInfo.branchList = res.list.map(v => ({
  228. text: v.hosName,
  229. value: v.id,
  230. }));
  231. if(loginUserStore.loginUser.user.duty){
  232. // 当前的所属责任科室
  233. dataInfo.branchId = loginUserStore.loginUser.user.duty.branch;
  234. changeBranch();
  235. dataInfo.dutyId = loginUserStore.loginUser.user.duty.id;
  236. changeDuty();
  237. }else if(loginUserStore.loginUser.user.branch){
  238. // 当前的所属院区
  239. dataInfo.branchId = loginUserStore.loginUser.user.branch.id;
  240. changeBranch();
  241. }
  242. }else{
  243. uni.showToast({
  244. icon: 'none',
  245. title: res.msg || '请求数据失败!'
  246. });
  247. }
  248. })
  249. }
  250. // 获取责任科室列表
  251. function getDutys(){
  252. uni.showLoading({
  253. title: "加载中",
  254. mask: true,
  255. });
  256. let postData = {
  257. "idx": 0,
  258. "sum": 9999,
  259. "dutyDepartment": {
  260. "branch": dataInfo.branchId,
  261. }
  262. };
  263. api_dutyDepartment(postData).then(res => {
  264. uni.hideLoading();
  265. if(res.status == 200){
  266. res.list = res.list || [];
  267. dataInfo.dutyList = res.list.map(v => ({
  268. text: v.dept,
  269. value: v.id,
  270. }));
  271. }else{
  272. uni.showToast({
  273. icon: 'none',
  274. title: res.msg || '请求数据失败!'
  275. });
  276. }
  277. })
  278. }
  279. // 获取工作组列表
  280. function getGroups(){
  281. uni.showLoading({
  282. title: "加载中",
  283. mask: true,
  284. });
  285. let duty = undefined;
  286. if(dataInfo.tabActiveValue === 'redeploy'){
  287. duty = dataInfo.incidentData.duty;
  288. }else if(dataInfo.tabActiveValue === 'assign'){
  289. duty = { id: dataInfo.dutyId };
  290. }
  291. let postData = {
  292. "idx": 0,
  293. "sum": 9999,
  294. "group": {
  295. "duty": duty,
  296. "selectType": "nouser"
  297. }
  298. };
  299. api_group(postData).then(res => {
  300. uni.hideLoading();
  301. if(res.status == 200){
  302. res.list = res.list || [];
  303. dataInfo.groupList = res.list.map(v => ({
  304. text: v.groupName,
  305. value: v.id,
  306. }));
  307. }else{
  308. uni.showToast({
  309. icon: 'none',
  310. title: res.msg || '请求数据失败!'
  311. });
  312. }
  313. })
  314. }
  315. // 获取用户列表
  316. function getUsers(){
  317. uni.showLoading({
  318. title: "加载中",
  319. mask: true,
  320. });
  321. let postData = {
  322. "idx": 0,
  323. "sum": 9999,
  324. "user": {
  325. "groupdata":{
  326. "id": dataInfo.groupId,
  327. },
  328. "roledata": {
  329. "rolecode": "first-line support"
  330. },
  331. "roledata2": {
  332. "rolecode": "second-line support"
  333. },
  334. "selectType": "1",
  335. "selectDetails": 1,
  336. "simple": true,
  337. "engineer": 1
  338. }
  339. };
  340. api_user(postData).then(res => {
  341. uni.hideLoading();
  342. if(res.status == 200){
  343. res.list = res.list || [];
  344. dataInfo.userList = res.list.map(v => ({
  345. text: v.name,
  346. value: v.id,
  347. }));
  348. }else{
  349. uni.showToast({
  350. icon: 'none',
  351. title: res.msg || '请求数据失败!'
  352. });
  353. }
  354. })
  355. }
  356. // 选择院区
  357. function changeBranch(){
  358. dataInfo.dutyId = undefined;
  359. dataInfo.dutyList = [];
  360. dataInfo.groupId = undefined;
  361. dataInfo.groupList = [];
  362. dataInfo.userId = undefined;
  363. dataInfo.userList = [];
  364. getDutys();
  365. }
  366. // 选择责任科室
  367. function changeDuty(){
  368. dataInfo.groupId = undefined;
  369. dataInfo.groupList = [];
  370. dataInfo.userId = undefined;
  371. dataInfo.userList = [];
  372. getGroups();
  373. }
  374. // 选择工作组
  375. function changeGroup(){
  376. dataInfo.userId = undefined;
  377. dataInfo.userList = [];
  378. getUsers();
  379. }
  380. // 选择是否转派到人
  381. function changeIsAssignUser(){
  382. dataInfo.userId = undefined;
  383. }
  384. // 提交
  385. function submit(){
  386. isSubmit.value = true;
  387. if(dataInfo.tabActiveValue === 'redeploy'){
  388. submitRedeploy();
  389. }else if(dataInfo.tabActiveValue === 'assign'){
  390. submitAssign();
  391. }else if(dataInfo.tabActiveValue === 'reassign'){
  392. submitReassign();
  393. }
  394. }
  395. // 转派提交
  396. function submitRedeploy(){
  397. if(!dataInfo.groupId){
  398. uni.showToast({
  399. icon: 'none',
  400. title: '请选择工作组'
  401. });
  402. return;
  403. }
  404. if(dataInfo.isAssignUser == 1 && !dataInfo.userId){
  405. uni.showToast({
  406. icon: 'none',
  407. title: '请选择指派对象'
  408. });
  409. return;
  410. }
  411. uni.showLoading({
  412. title: "加载中",
  413. mask: true,
  414. });
  415. let postData = {
  416. incident: dataInfo.incidentData,
  417. }
  418. if(dataInfo.userId){
  419. // 派人
  420. postData.incident.assignee = dataInfo.userId;
  421. } else {
  422. // 派组
  423. postData.incident.candidateGroups = dataInfo.groupId;
  424. }
  425. api_incidentTask(dataInfo.tabActiveValue, postData).then(res => {
  426. uni.hideLoading();
  427. if(res.state == 200){
  428. uni.showToast({
  429. icon: 'none',
  430. title: '转派成功',
  431. mask: true,
  432. });
  433. setTimeout(() => {
  434. uni.reLaunch({
  435. url: '/pages/incidentList/incidentList',
  436. })
  437. }, 1500)
  438. }else{
  439. uni.showToast({
  440. icon: 'none',
  441. title: res.msg || '请求数据失败!'
  442. });
  443. }
  444. })
  445. }
  446. // 指派提交
  447. function submitAssign(){
  448. if(!dataInfo.branchId){
  449. uni.showToast({
  450. icon: 'none',
  451. title: '请选择院区'
  452. });
  453. return;
  454. }
  455. if(!dataInfo.dutyId){
  456. uni.showToast({
  457. icon: 'none',
  458. title: '请选择责任科室'
  459. });
  460. return;
  461. }
  462. if(!dataInfo.groupId){
  463. uni.showToast({
  464. icon: 'none',
  465. title: '请选择工作组'
  466. });
  467. return;
  468. }
  469. if(dataInfo.isAssignUser == 1 && !dataInfo.userId){
  470. uni.showToast({
  471. icon: 'none',
  472. title: '请选择指派对象'
  473. });
  474. return;
  475. }
  476. uni.showLoading({
  477. title: "加载中",
  478. mask: true,
  479. });
  480. let postData = {
  481. incident: dataInfo.incidentData,
  482. }
  483. if(dataInfo.userId){
  484. // 派人
  485. postData.incident.assignee = dataInfo.userId;
  486. } else {
  487. // 派组
  488. postData.incident.candidateGroups = dataInfo.groupId;
  489. }
  490. postData.incident.duty = { id: dataInfo.dutyId };
  491. api_incidentTask(dataInfo.tabActiveValue, postData).then(res => {
  492. uni.hideLoading();
  493. if(res.state == 200){
  494. uni.showToast({
  495. icon: 'none',
  496. title: '指派成功',
  497. mask: true,
  498. });
  499. setTimeout(() => {
  500. uni.reLaunch({
  501. url: '/pages/incidentList/incidentList',
  502. })
  503. }, 1500)
  504. }else{
  505. uni.showToast({
  506. icon: 'none',
  507. title: res.msg || '请求数据失败!'
  508. });
  509. }
  510. })
  511. }
  512. // 退回提交
  513. function submitReassign(){
  514. if(!dataInfo.reassignRemark.trim()){
  515. uni.showToast({
  516. icon: 'none',
  517. title: '请填写退回原因'
  518. });
  519. return;
  520. }
  521. uni.showLoading({
  522. title: "加载中",
  523. mask: true,
  524. });
  525. let postData = {
  526. incident: dataInfo.incidentData,
  527. }
  528. postData.incident.reassignRemark = dataInfo.reassignRemark;
  529. api_incidentTask(dataInfo.tabActiveValue, postData).then(res => {
  530. uni.hideLoading();
  531. if(res.state == 200){
  532. uni.showToast({
  533. icon: 'none',
  534. title: '退回成功',
  535. mask: true,
  536. });
  537. setTimeout(() => {
  538. uni.reLaunch({
  539. url: '/pages/incidentList/incidentList',
  540. })
  541. }, 1500)
  542. }else{
  543. uni.showToast({
  544. icon: 'none',
  545. title: res.msg || '请求数据失败!'
  546. });
  547. }
  548. })
  549. }
  550. onLoad((option) => {
  551. dataInfo.incidentId = option.incidentId;
  552. getIncidentDetail();
  553. })
  554. </script>
  555. <style lang="scss" scoped>
  556. .changeUser{
  557. height: 100%;
  558. display: flex;
  559. flex-direction: column;
  560. justify-content: space-between;
  561. .head{
  562. height: 88rpx;
  563. display: flex;
  564. position: fixed;
  565. z-index: 99;
  566. width: 100%;
  567. background-color: #fff;
  568. font-size: 30rpx;
  569. .tab{
  570. flex: 1;
  571. display: flex;
  572. justify-content: center;
  573. align-items: center;
  574. border-bottom: 4rpx solid transparent;
  575. &.active{
  576. color: $uni-primary;
  577. border-color: $uni-primary;
  578. }
  579. }
  580. }
  581. .body{
  582. margin-top: 88rpx;
  583. padding: 0 24rpx;
  584. box-sizing: border-box;
  585. flex: 1;
  586. min-height: 0;
  587. .form_item{
  588. display: flex;
  589. align-items: center;
  590. padding-top: 24rpx;
  591. min-height: 86rpx;
  592. &.column{
  593. height: auto;
  594. flex-direction: column;
  595. align-items: flex-start;
  596. .title{
  597. margin-right: 0;
  598. }
  599. .value{
  600. margin-top: 10rpx;
  601. padding-left: 20rpx;
  602. box-sizing: border-box;
  603. }
  604. .tips{
  605. padding: 24rpx;
  606. text-align: center;
  607. font-size: 22rpx;
  608. color: #909399;
  609. width: 100%;
  610. box-sizing: border-box;
  611. }
  612. }
  613. .title{
  614. font-size: 26rpx;
  615. display: flex;
  616. align-items: center;
  617. margin-right: 12rpx;
  618. &.select{
  619. width: calc(5em + 20rpx);
  620. }
  621. }
  622. }
  623. }
  624. }
  625. </style>