myUserList.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984
  1. <template>
  2. <view class="border-box">
  3. <view class="content">
  4. <view class="top-box">
  5. <view class="back-box x-f">
  6. <image src="/static/image/device/back_icon32.png"></image>
  7. <view @click="goBack()">返回</view>
  8. </view>
  9. <view class="tab-box">
  10. <view v-for="(item,index) in tabs" :key="index" :class="aIndex==item.val?'item active':'item'"
  11. @click="getTab(item)">
  12. {{item.name}}
  13. </view>
  14. </view>
  15. <view :style="{width: width < height ?'18px':'138px'}"></view>
  16. </view>
  17. <view class="btn-box x-bc" :class="{ 'flex-box': width < height }">
  18. <view class="x-f dl">
  19. <view class="search">
  20. <image src="/static/image/device/search_icon25.png"></image>
  21. <input type="text" placeholder="请输入客户姓名或者手机号" v-model="keyword" @confirm="rightTap" />
  22. </view>
  23. <view class="dateBox">
  24. <picker mode="date" @change="createTimesChange" style="width: 100%;">
  25. <view class="date x-bc">
  26. <text class="text" :style="{color:createTimes!=='' ?'#222':'#999'}">
  27. {{createTimes!=='' ? createTimes: '请选择服务时间'}}
  28. </text>
  29. <image src="/static/image/device/calendar_icon24.png"></image>
  30. </view>
  31. </picker>
  32. </view>
  33. </view>
  34. <view class="x-f dr">
  35. <view class="rest" @click="clear">重置</view>
  36. <view class="export" @click="toExport">
  37. <image src="/static/image/device/cp_download_icon24.png"></image>
  38. 导出
  39. </view>
  40. </view>
  41. </view>
  42. <view class="user-list" :class="{ 'flex-box': width < height }">
  43. <view class="table-title x-f">
  44. <view class="col col-1">序号</view>
  45. <view class="col col-2">客户账号</view>
  46. <view class="col col-2">名称</view>
  47. <view class="col col-1">性别</view>
  48. <!-- <view class="col col-2">客户关系</view> -->
  49. <!-- <view class="col col-1">年龄</view> -->
  50. <view class="col col-2">手机号</view>
  51. <view class="col col-3">上次服务时间</view>
  52. <view class="col col-2">服务类型</view>
  53. <view class="col col-2">推荐产品</view>
  54. <view class="col col-3">操作</view>
  55. </view>
  56. <view class="table-item" v-for="(item,index) in dataList" :key="index">
  57. <view class="col col-1">{{index+1}}</view>
  58. <view class="col col-2">{{item.username||'--'}}</view>
  59. <view class="col col-2">{{item.nickName||'--'}}</view>
  60. <view class="col col-1">{{item.sex==1?"男":"女"}}</view>
  61. <!-- <view class="col col-2">--</view> -->
  62. <!-- <view class="col col-1">{{item.birthday||'--'}}</view> -->
  63. <view class="col col-2">{{item.phone||'--'}}</view>
  64. <view class="col col-3">{{item.createTimes||'--'}}</view>
  65. <view class="col col-2">体质辨识</view>
  66. <view class="col col-2">{{item.product||'无'}}</view>
  67. <view class="col col-3 btn-box">
  68. <view class="btn" @click="goList(item.userId)">体质辨识</view>
  69. <view class="btn">开方详情</view>
  70. </view>
  71. </view>
  72. </view>
  73. <view v-if="showDetail" class="mask">
  74. <view class="popup-container2">
  75. <view class="title-t">温馨提示</view>
  76. <view class="title-r">检测报告请下载芳华未来APP查看</view>
  77. <view class="btn-r" @click="closeP">确认</view>
  78. </view>
  79. </view>
  80. <view v-if="showList" class="mask">
  81. <!-- 弹窗内容 -->
  82. <view class="popup-container">
  83. <!-- 弹窗头部 -->
  84. <view class="popup-header">
  85. <text class="popup-title">选择体质辨识</text>
  86. <view class="close-btn" @click="onCloseList">
  87. <image src="/static/image/device/close_icon32.png"></image>
  88. </view>
  89. </view>
  90. <!-- 弹窗主体内容 -->
  91. <view class="popup-content">
  92. <view class="userList-box">
  93. <view class="userList" v-if="reportList.length>0">
  94. <view class="item" v-for="(item,index) in reportList" :key="index">
  95. <view class="title x-f">
  96. <view>报告日期:{{item.createTimes||''}}</view>
  97. <view style="margin-left: 30px;">报告编号:{{item.numberId||''}}</view>
  98. </view>
  99. <view class="right-box">
  100. <view class="rest" @click="onOpenDetail(item)">
  101. 查看
  102. </view>
  103. </view>
  104. </view>
  105. </view>
  106. </view>
  107. <view v-if="reportList.length==0" class="isNull">暂无数据</view>
  108. </view>
  109. </view>
  110. </view>
  111. </view>
  112. </view>
  113. </template>
  114. <script>
  115. import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
  116. import {
  117. selectUsernameOrPhoneOrTime,
  118. getExport,
  119. selectNotGeneratedReport,
  120. selectSuccessGeneratedReport
  121. } from '@/api/user.js'
  122. import {
  123. getDictByKey
  124. } from '@/api/common.js'
  125. import {
  126. tr
  127. } from "date-fns/locale";
  128. export default {
  129. mixins: [MescrollMixin], // 使用mixin
  130. data() {
  131. return {
  132. height: uni.getSystemInfoSync().screenHeight,
  133. width: uni.getSystemInfoSync().screenWidth,
  134. statusBarHeight: uni.getSystemInfoSync().statusBarHeight,
  135. hosLevelOptions: [],
  136. tabs: [{
  137. val: '',
  138. name: '全部客户'
  139. },
  140. {
  141. val: '0',
  142. name: '待问诊客户'
  143. },
  144. {
  145. val: '1',
  146. name: '购买客户'
  147. },
  148. ],
  149. total: 10,
  150. aIndex: '',
  151. createTimes: '',
  152. keyword: '',
  153. type: 0,
  154. mescroll: null,
  155. downOption: { //下拉刷新
  156. use: true,
  157. auto: false // 不自动加载 (mixin已处理第一个tab触发downCallback)
  158. },
  159. upOption: {
  160. onScroll: false,
  161. use: true, // 是否启用上拉加载; 默认true
  162. page: {
  163. pae: 0, // 当前页码,默认0,回调之前会加1,即callback(page)会从1开始
  164. size: 10 // 每页数据的数量,默认10
  165. },
  166. noMoreSize: 10, // 配置列表的总数量要大于等于5条才显示'-- END --'的提示
  167. textNoMore: "已经到底了",
  168. empty: {
  169. icon: 'https://cos.his.cdwjyyh.com/fs/20240423/cf4a86b913a04341bb44e34bb4d37aa2.png',
  170. tip: '暂无数据'
  171. }
  172. },
  173. dataList: [],
  174. reportList: [],
  175. showList: false,
  176. showDetail: false
  177. }
  178. },
  179. onLoad(options) {
  180. this.selectUsernameOrPhoneOrTime()
  181. //this.getDictByKey("sys_hospital_level");
  182. },
  183. onShow() {
  184. },
  185. methods: {
  186. goBack() {
  187. // uni.navigateBack({
  188. // delta:1
  189. // })
  190. // uni.redirectTo({
  191. // url: '/pages/index/index'
  192. // });
  193. uni.navigateBack({
  194. delta:1
  195. })
  196. //设置50ms延时跳转目标界面
  197. // setTimeout(() => {
  198. // uni.navigateTo({
  199. // url: '/pages/index/index',
  200. // })
  201. // }, 50);
  202. },
  203. onCloseList() {
  204. this.showList = false
  205. },
  206. onOpenDetail(item) {
  207. this.showDetail = true
  208. this.showList = false
  209. },
  210. closeP() {
  211. this.showDetail = false
  212. },
  213. getTab(item) {
  214. this.aIndex = item.val
  215. if (item.val == '0') {
  216. this.selectNotGeneratedReport()
  217. } else {
  218. this.selectUsernameOrPhoneOrTime()
  219. }
  220. },
  221. rightTap(e) {
  222. this.keyword = e.target.value
  223. this.selectUsernameOrPhoneOrTime()
  224. },
  225. clear() {
  226. this.keyword = ''
  227. this.createTimes = ''
  228. this.selectUsernameOrPhoneOrTime()
  229. },
  230. createTimesChange(e) {
  231. console.log('e', e)
  232. this.createTimes = e.detail.value
  233. this.selectUsernameOrPhoneOrTime()
  234. },
  235. goList(id) {
  236. var data = {
  237. userId: id
  238. }
  239. selectSuccessGeneratedReport(data).then(res => {
  240. if (res.code == 200) {
  241. this.reportList = res.data
  242. this.reportList.forEach(item => {
  243. item.createTimes = this.$timeFormat(item.createTimes, 'yyyy年mm月dd日')
  244. })
  245. this.showList = true
  246. } else {
  247. uni.showToast({
  248. title: res.msg,
  249. icon: 'none'
  250. });
  251. }
  252. },
  253. rej => {}
  254. );
  255. },
  256. selectNotGeneratedReport() {
  257. var data = {
  258. nickName: this.keyword,
  259. phone: this.keyword,
  260. createTimes: this.createTimes
  261. }
  262. selectNotGeneratedReport(data).then(res => {
  263. if (res.code == 200) {
  264. console.log('res', res)
  265. this.dataList = res.data
  266. this.total = res.data.length
  267. } else {
  268. uni.showToast({
  269. title: res.msg,
  270. icon: 'none'
  271. });
  272. }
  273. },
  274. rej => {}
  275. );
  276. },
  277. selectUsernameOrPhoneOrTime() {
  278. var data = {
  279. nickName: this.keyword,
  280. phone: this.keyword,
  281. createTimes: this.createTimes
  282. }
  283. // var user=uni.getStorageSync('userInfo');
  284. selectUsernameOrPhoneOrTime(data).then(res => {
  285. if (res.code == 200) {
  286. console.log('res', res)
  287. this.dataList = res.data
  288. this.total = res.data.length
  289. } else {
  290. uni.showToast({
  291. title: res.msg,
  292. icon: 'none'
  293. });
  294. }
  295. },
  296. rej => {}
  297. );
  298. },
  299. toExport() {
  300. var data = {
  301. nickName: this.keyword,
  302. phone: this.keyword,
  303. createTimes: this.createTimes
  304. }
  305. // var user=uni.getStorageSync('userInfo');
  306. getExport(data).then(res => {
  307. if (res.code == 200) {
  308. uni.showToast({
  309. icon: 'success',
  310. title: "导出成功",
  311. });
  312. } else {
  313. uni.showToast({
  314. title: res.msg,
  315. icon: 'none'
  316. });
  317. }
  318. },
  319. rej => {}
  320. );
  321. },
  322. typeChange(item) {
  323. this.type = item.index
  324. console.log(this.type)
  325. this.mescroll.resetUpScroll()
  326. },
  327. navTo(url) {
  328. uni.navigateTo({
  329. url: url
  330. })
  331. },
  332. mescrollInit(mescroll) {
  333. this.mescroll = mescroll;
  334. },
  335. /*下拉刷新的回调 */
  336. downCallback() {
  337. this.mescroll.resetUpScroll()
  338. },
  339. /*上拉加载的回调*/
  340. upCallback(page) {
  341. //联网加载数据
  342. var that = this;
  343. var data = {
  344. type: this.type + 1,
  345. pageNum: page.num,
  346. pageSize: page.size
  347. };
  348. getMyDoctorList(data).then(res => {
  349. if (res.code == 200) {
  350. if (page.num == 1) {
  351. res.data.list.forEach(function(value, index, array) {
  352. value.prices = JSON.parse(value.priceJson)
  353. });
  354. that.dataList = res.data.list;
  355. } else {
  356. that.dataList = that.dataList.concat(res.data.list);
  357. }
  358. that.mescroll.endBySize(res.data.list.length, res.data.total);
  359. } else {
  360. uni.showToast({
  361. icon: 'none',
  362. title: "请求失败",
  363. });
  364. that.dataList = null;
  365. that.mescroll.endErr();
  366. }
  367. });
  368. },
  369. }
  370. }
  371. </script>
  372. <style lang="scss">
  373. page {
  374. height: 100%;
  375. background: #f6f6f6;
  376. }
  377. </style>
  378. <style scoped lang="scss">
  379. .border-box {
  380. width: 100vw;
  381. height: 100vh;
  382. overflow: hidden;
  383. background-image: url(/static/image/device/ipad_yjf_boder.png);
  384. background-repeat: no-repeat;
  385. position: relative;
  386. background-size: 100% 100%;
  387. box-sizing: border-box;
  388. padding: 10px;
  389. }
  390. .content {
  391. // height: 100%;
  392. width: 100%;
  393. height: 100%;
  394. background-image: url(/static/image/device/inner_page_bg.png);
  395. background-repeat: no-repeat;
  396. background-size: 100% 100%;
  397. position: relative;
  398. padding: 30px;
  399. .top-box {
  400. width: 100%;
  401. display: flex;
  402. align-items: center;
  403. justify-content: space-between;
  404. margin-bottom: 50px;
  405. .back-box {
  406. width: 102px;
  407. height: 47px;
  408. background: #FFFFFF;
  409. border-radius: 6px 6px 6px 6px;
  410. border: 1px solid #8F6726;
  411. // padding: 12px 8px;
  412. justify-content: center;
  413. view {
  414. font-family: PingFang SC, PingFang SC;
  415. font-weight: 400;
  416. font-size: 18px;
  417. color: #8F6726;
  418. text-align: center;
  419. margin-left: 10px;
  420. }
  421. // position: absolute;
  422. // left: 30px;
  423. image {
  424. width: 24px;
  425. height: 24px;
  426. }
  427. }
  428. .tab-box {
  429. display: flex;
  430. align-items: center;
  431. justify-content: center;
  432. .item {
  433. display: flex;
  434. align-items: center;
  435. justify-content: center;
  436. width: 144px;
  437. height: 43px;
  438. background: #FBF4EE;
  439. border-radius: 4px;
  440. border: 1px solid rgba(143,103,38,0.3);
  441. font-family: Source Han Serif CN, Source Han Serif CN;
  442. font-weight: 500;
  443. font-size: 24px;
  444. color: #8F6726;
  445. text-align: center;
  446. margin-right: 26px;
  447. &.active {
  448. background: linear-gradient(180deg, #E3B379 0%, #8F6726 100%);
  449. border: 1px solid #8F6726;
  450. font-weight: bold;
  451. font-size: 24px;
  452. color: #FFFFFF;
  453. }
  454. &:last-child {
  455. margin-right: 0;
  456. }
  457. }
  458. }
  459. }
  460. .btn-box {
  461. &.flex-box{
  462. flex-direction: column;
  463. .dl{
  464. width: 100%;
  465. justify-content: left;
  466. }
  467. .dr{
  468. margin-top: 20px;
  469. width: 100%;
  470. justify-content: right;
  471. }
  472. }
  473. image {
  474. width: 18px;
  475. height: 18px;
  476. }
  477. input {
  478. font-family: PingFang SC, PingFang SC;
  479. font-weight: 400;
  480. font-size: 18px;
  481. color: #9B9B9B;
  482. text-align: left;
  483. }
  484. .search {
  485. width: 311px;
  486. height: 47px;
  487. background: #FFFFFF;
  488. border-radius: 6px 6px 6px 6px;
  489. border: 1px solid #8F6726;
  490. display: flex;
  491. align-items: center;
  492. padding: 15px;
  493. margin-right: 16px;
  494. box-sizing: border-box;
  495. uni-input{
  496. width: 100%;
  497. }
  498. image {
  499. margin-right: 10px;
  500. }
  501. }
  502. .dateBox {
  503. width: 230px;
  504. height: 47px;
  505. background: #FFFFFF;
  506. border-radius: 6px 6px 6px 6px;
  507. border: 1px solid #8F6726;
  508. padding: 15px;
  509. display: flex;
  510. align-items: center;
  511. justify-content: space-between;
  512. image {
  513. margin-left: 10px;
  514. }
  515. .date {
  516. width: 100%;
  517. display: flex;
  518. align-items: center;
  519. justify-content: space-between;
  520. }
  521. .text {
  522. font-family: PingFang SC, PingFang SC;
  523. font-weight: 400;
  524. font-size: 18px;
  525. text-align: left;
  526. }
  527. }
  528. .rest {
  529. width: 83px;
  530. height: 47px;
  531. background: #FFFFFF;
  532. border-radius: 6px 6px 6px 6px;
  533. border: 1px solid #8F6726;
  534. font-family: PingFang SC, PingFang SC;
  535. font-weight: 400;
  536. font-size:18px;
  537. color: #8F6726;
  538. display: flex;
  539. align-items: center;
  540. justify-content: center;
  541. }
  542. .export {
  543. display: flex;
  544. align-items: center;
  545. justify-content: center;
  546. width: 108px;
  547. height: 47px;
  548. background: #8F6726;
  549. border-radius: 6px 6px 6px 6px;
  550. color: #fff;
  551. font-size: 18px;
  552. margin-left: 16px;
  553. image {
  554. margin-right: 5px;
  555. }
  556. }
  557. }
  558. .user-list {
  559. border-radius: 16px 16px 0 0;
  560. background: #FFFFFF;
  561. margin-top: 30px;
  562. width: 100%;
  563. /* 横向滚动:适配小屏设备,避免列挤压 */
  564. height: calc(100vh - 270px);
  565. overflow-y: auto;
  566. overflow-x: auto;
  567. &.flex-box{
  568. height: calc(100vh - 370px);
  569. }
  570. &::-webkit-scrollbar {
  571. display: block !important;
  572. width: 10px !important;
  573. /* 滚动条宽度 */
  574. }
  575. &::-webkit-scrollbar-thumb {
  576. background: #8F6726 !important;
  577. /* 滚动条滑块颜色 */
  578. border-radius: 5px !important;
  579. /* 滑块圆角 */
  580. }
  581. .table-title {
  582. position: sticky;
  583. top: 0;
  584. /* 滚动时吸附在顶部 */
  585. z-index: 10;
  586. width: 100%; /* 确保宽度占满容器 */
  587. min-width: max-content; /* 标准写法 */
  588. background: #E9DDCD;
  589. height: 47px;
  590. justify-content: space-between;
  591. view {
  592. background: #E9DDCD;
  593. line-height: 47px;
  594. font-family: PingFang SC, PingFang SC;
  595. font-weight: 500;
  596. font-size: 16px;
  597. color: #8F6726;
  598. text-align: center;
  599. }
  600. }
  601. }
  602. .table-item {
  603. background: #FFFFFF;
  604. height: 47px;
  605. display: flex;
  606. align-items: center;
  607. justify-content: space-between;
  608. // min-width: 1200px;
  609. width:100%; /* 确保宽度占满容器 */
  610. min-width: max-content; /* 关键:如果内容超出容器宽度,表头宽度跟随内容撑开 */
  611. /* 最小宽度:确保小屏可横向滚动,列不挤压 */
  612. .btn-box {
  613. width: 100%;
  614. .btn {
  615. font-family: PingFang SC, PingFang SC;
  616. font-weight: 400;
  617. font-size: 16px;
  618. color: #A14212;
  619. text-align: center;
  620. &:last-child {
  621. margin-left: 16px;
  622. }
  623. }
  624. }
  625. }
  626. }
  627. /* 遮罩层样式 */
  628. .mask {
  629. position: fixed;
  630. top: 0;
  631. left: 0;
  632. right: 0;
  633. bottom: 0;
  634. background-color: rgba(0, 0, 0, 0.5);
  635. display: flex;
  636. justify-content: center;
  637. align-items: center;
  638. z-index: 999;
  639. animation: fadeIn 0.3s ease;
  640. }
  641. .isNull {
  642. text-align: center;
  643. color: #8F6726;
  644. font-size: 18px;
  645. }
  646. /* 弹窗容器样式 */
  647. .popup-container2 {
  648. //width: 50%;
  649. height: 250px;
  650. background: #FBF4EE;
  651. border-radius: 12px;
  652. box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
  653. animation: scaleIn 0.3s ease;
  654. overflow: hidden;
  655. display: flex;
  656. flex-direction: column;
  657. align-items: center;
  658. justify-content: space-between;
  659. padding: 30px 50px;
  660. .title-t {
  661. font-size: 24px;
  662. font-weight: bold;
  663. color: #8F6726;
  664. text-align: center;
  665. }
  666. .title-r {
  667. font-size: 20px;
  668. color: #8F6726;
  669. text-align: center;
  670. }
  671. .btn-r {
  672. text-align: center;
  673. background: #8F6726;
  674. font-size: 20px;
  675. color: #FBF4EE;
  676. border-radius: 12px;
  677. width: 60%;
  678. height: 50px;
  679. line-height: 50px;
  680. }
  681. }
  682. /* 弹窗容器样式 */
  683. .popup-container {
  684. width: 80%;
  685. // min-width: 840px;
  686. background: #FBF4EE;
  687. border-radius: 16px;
  688. box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
  689. animation: scaleIn 0.3s ease;
  690. overflow: hidden;
  691. }
  692. /* 弹窗头部样式 */
  693. .popup-header {
  694. padding: 20px;
  695. display: flex;
  696. justify-content: space-between;
  697. align-items: center;
  698. background: #E9DDCD;
  699. .goback {
  700. background: #FFFFFF;
  701. border-radius: 4px;
  702. border: 1px solid #8F6726;
  703. padding: 10px 16px;
  704. font-size: 24px;
  705. color: #8F6726;
  706. text-align: center;
  707. }
  708. }
  709. .popup-title {
  710. flex: 1;
  711. font-family: Source Han Serif CN, Source Han Serif CN;
  712. font-weight: bold;
  713. font-size: 24px;
  714. color: #8F6726;
  715. text-align: center;
  716. }
  717. .close-btn {
  718. display: flex;
  719. justify-content: center;
  720. align-items: center;
  721. transition: all 0.2s ease;
  722. image {
  723. width: 24px;
  724. height: 24px;
  725. }
  726. }
  727. /* 弹窗内容样式 */
  728. .popup-content {
  729. // width: 90%;
  730. padding: 40px 30px;
  731. font-size: 24px;
  732. color: #666;
  733. line-height: 1.6;
  734. background: #FBF4EE;
  735. display: flex;
  736. flex-direction: column;
  737. align-items: center;
  738. margin: auto;
  739. .form-item {
  740. display: flex;
  741. align-items: center;
  742. margin-bottom: 30px;
  743. .label {
  744. width: 164px;
  745. font-family: PingFang SC, PingFang SC;
  746. font-weight: 500;
  747. font-size: 28px;
  748. color: #8F6726;
  749. text-align: right;
  750. }
  751. .form-input {
  752. width: 540px;
  753. height: 64px;
  754. box-sizing: border-box;
  755. background: #FFFFFF;
  756. border-radius: 8px;
  757. border: 2px solid #8F6726;
  758. padding: 15px 26px;
  759. }
  760. .text-input {
  761. font-family: PingFang SC, PingFang SC;
  762. font-weight: 400;
  763. font-size: 24px;
  764. color: #9B9B9B;
  765. text-align: left;
  766. }
  767. .r-box {
  768. width: 540px;
  769. height: 64px;
  770. }
  771. .picker-box {
  772. // width: 540px;
  773. // height: 64px;
  774. // box-sizing: border-box;
  775. // background: #FFFFFF;
  776. // border-radius: 8px;
  777. // border: 2px solid #8F6726;
  778. // padding: 15px 26px;
  779. .date {
  780. image {
  781. width: 32px;
  782. height: 32px;
  783. }
  784. }
  785. }
  786. }
  787. }
  788. .userList-box {
  789. // margin-top: 30px;
  790. width: 100%;
  791. background: #FFFFFF;
  792. border-radius: 16px;
  793. overflow: hidden;
  794. }
  795. .userList {
  796. width: 100%;
  797. height: 330px;
  798. overflow-y: auto;
  799. &::-webkit-scrollbar {
  800. display: block !important;
  801. width: 10px !important;
  802. /* 滚动条宽度 */
  803. }
  804. &::-webkit-scrollbar-thumb {
  805. background: #8F6726 !important;
  806. /* 滚动条滑块颜色 */
  807. border-radius: 5px !important;
  808. /* 滑块圆角 */
  809. }
  810. .item {
  811. width: 100%;
  812. padding: 17px 22px;
  813. display: flex;
  814. align-items: center;
  815. justify-content: space-between;
  816. border-bottom: 1px solid #8F6726;
  817. .title {
  818. flex: 1;
  819. font-family: PingFang SC, PingFang SC;
  820. font-weight: 400;
  821. font-size: 18px;
  822. color: #8F6726;
  823. text-align: left;
  824. }
  825. .right-box {
  826. display: flex;
  827. align-items: center;
  828. justify-content: space-between;
  829. .rest {
  830. display: flex;
  831. align-items: center;
  832. justify-content: center;
  833. width: 59px;
  834. height: 33px;
  835. border-radius: 6px 6px 6px 6px;
  836. border: 1px solid #8F6726;
  837. font-family: PingFang SC, PingFang SC;
  838. font-weight: 400;
  839. font-size: 16px;
  840. color: #8F6726;
  841. margin-right: 16px;
  842. }
  843. .select {
  844. display: flex;
  845. align-items: center;
  846. justify-content: center;
  847. width: 80px;
  848. height: 44px;
  849. border-radius: 8px;
  850. border: 2px solid #8F6726;
  851. font-family: PingFang SC, PingFang SC;
  852. font-weight: 400;
  853. font-size: 20px;
  854. color: #8F6726;
  855. &.active {
  856. background: #8F6726;
  857. color: #fff;
  858. }
  859. }
  860. }
  861. &:last-child {
  862. border-bottom: none;
  863. }
  864. }
  865. }
  866. .footer {
  867. position: fixed;
  868. bottom: 80px;
  869. right: 80px;
  870. }
  871. /* 统一列样式:控制对齐、溢出、内边距 */
  872. .col {
  873. display: flex;
  874. align-items: center;
  875. justify-content: center;
  876. width: 100%;
  877. padding: 0 10px;
  878. line-height: 47px;
  879. /* 适配多行文本 */
  880. font-size: 16px;
  881. color: #8F6726;
  882. white-space: nowrap;
  883. /* 禁止换行(可选,根据需求调整) */
  884. overflow: hidden;
  885. text-overflow: ellipsis;
  886. /* 长文本省略号 */
  887. }
  888. /* 列宽规则:按内容重要性分配宽度(核心优化) */
  889. .col-1 {
  890. flex: 0 0 60px;
  891. }
  892. /* 窄列:序号、性别、年龄(内容短) */
  893. .col-2 {
  894. flex: 0 0 120px;
  895. }
  896. /* 中列:客户账号、客户关系(内容中等) */
  897. .col-3 {
  898. flex: 0 0 180px;
  899. }
  900. /* 宽列:名称、手机号、时间(内容长) */
  901. .col-4 {
  902. flex: 0 0 220px;
  903. }
  904. </style>