index.php 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730
  1. <?php
  2. use common\helpers\ComponentHelper;
  3. ComponentHelper::loadComponentView('com-share-pop');
  4. ComponentHelper::loadComponentView('com-image');
  5. ?>
  6. <div id="app" v-cloak>
  7. <el-card shadow="never" style="border:0;min-width: 1000px;"
  8. body-style="background-color: #f3f3f3;padding: 10px 0 0;">
  9. <div slot="header">
  10. <span>小店列表</span>
  11. <!-- <el-form size="small" :inline="true" :model="search" style="float: right;margin-top: -5px;">
  12. <el-form-item>
  13. <com-export-dialog :field_list='exportList' :params="search" @selected="confirmSubmit">
  14. </com-export-dialog>
  15. </el-form-item>
  16. </el-form> -->
  17. <el-button type="primary" size="small"
  18. style="padding: 9px 15px !important; float: right; position: relative; bottom: 8px;"
  19. @click="addStore">添加小店
  20. </el-button>
  21. </div>
  22. <div class="table-body">
  23. <el-alert style="margin-bottom:20px;" type="info" title="小店管理端登录入口链接:" :closable="false">
  24. <template>
  25. <span id="target">{{store_login_url}}</span>
  26. <el-button type="text" id="copy_btn" data-clipboard-action="copy" data-clipboard-target="#target"
  27. size="mini">复制链接
  28. </el-button>
  29. </template>
  30. </el-alert>
  31. <div style="padding-bottom: 20px;">
  32. <div class="flex">
  33. <div class="flex" style="margin-right: 20px;">
  34. <div class="input-title" style="flex-shrink: 0;">小店名称</div>
  35. <el-input size="small" style="width: 130px;" placeholder="请输入门店名称"
  36. v-model="searchData.store_name"></el-input>
  37. </div>
  38. <div class="flex" style="margin-right: 20px;">
  39. <div class="input-title" style="flex-shrink: 0;">店长</div>
  40. <el-input size="small" style="width: 130px;" placeholder="请输入店长姓名"
  41. v-model="searchData.storeowner">
  42. </el-input>
  43. </div>
  44. <div class="flex" style="margin-right: 20px;">
  45. <div class="input-title" style="flex-shrink: 0;">绑定会员</div>
  46. <el-input size="small" style="width: 130px;" placeholder="请输入会员名称"
  47. v-model="searchData.nickname">
  48. </el-input>
  49. </div>
  50. <!-- <div class="item-box" flex="dir:left cross:center">
  51. <div class="label">门店分类</div>
  52. <el-select v-model="searchData.cate_id" @change='searchs' class="select" size="small" style="width: 130px;">
  53. <el-option :key="0" label="所有分类" :value="0"></el-option>
  54. <el-option :key="item.id" :label="item.name" :value="item.id" v-for="item in categorys"></el-option>
  55. </el-select>
  56. </div> -->
  57. <div class="item-box" flex="dir:left cross:center">
  58. <div class="label">小店状态</div>
  59. <el-select v-model="searchData.status" @change='searchs' class="select" size="small"
  60. style="width: 130px;">
  61. <el-option :key="0" label="全部" :value="0"></el-option>
  62. <el-option :key="1" label="正常" :value="1"></el-option>
  63. <el-option :key="3" label="禁用" :value="3"></el-option>
  64. </el-select>
  65. </div>
  66. <el-button style="padding: 9px 15px !important;" size="small" type="primary" @click="searchs">搜索
  67. </el-button>
  68. <el-button type="warning" @click="clereSearch"
  69. v-if="searchData.store_name || searchData.storeowner || searchData.nickname || searchData.cate_id || searchData.status"
  70. style="padding: 9px 15px !important;">清除搜索条件
  71. </el-button>
  72. </div>
  73. </div>
  74. <el-table :data="list" stripe v-loading="loading" size="small" style="margin-bottom: 15px; width: 100%">
  75. <el-table-column prop="id" label="小店ID" width="100" align="center"></el-table-column>
  76. <el-table-column label="小店名称" width="200" prop="store_name" align="center">
  77. <template slot-scope="scope">
  78. <com-image style="float: left;margin-right: 10px;" mode="aspectFill"
  79. :src="scope.row.logo_img"></com-image>
  80. <div>{{scope.row.store_name}}</div>
  81. <div>{{scope.row.shop_mobile}}</div>
  82. </template>
  83. </el-table-column>
  84. <!-- <el-table-column label="门店分类" prop="category" width="100" align="center">
  85. <template slot-scope="scope">
  86. <div>{{scope.row.category}}</div>
  87. </template>
  88. </el-table-column> -->
  89. <el-table-column label="小店地址" prop="store_address" width="180" align="center">
  90. <template slot-scope="scope">
  91. <div>{{scope.row.store_address}}</div>
  92. </template>
  93. </el-table-column>
  94. <el-table-column label="会员" width="150" align="center">
  95. <template slot-scope="scope">
  96. <com-image style="float: left;margin-right: 5px;" mode="aspectFill"
  97. :src="scope.row.avatar_url"></com-image>
  98. <div>{{scope.row.nickname}}</div>
  99. <div>{{scope.row.user_mobile}}</div>
  100. </template>
  101. </el-table-column>
  102. <el-table-column label="店长姓名" prop="shop_owner" width="120" align="center">
  103. <template slot-scope="scope">
  104. <div>{{scope.row.shop_owner}}</div>
  105. </template>
  106. </el-table-column>
  107. <el-table-column label="所属业务" width="170" align="center">
  108. <template slot-scope="scope">
  109. <com-image style="float: left;margin-right: 5px;" mode="aspectFill" :src="scope.row
  110. .business.avatar_url"></com-image>
  111. <div>{{scope.row.business.nickname}}</div>
  112. <div>{{scope.row.business.mobile}}</div>
  113. </template>
  114. </el-table-column>
  115. <!-- <el-table-column label="业务等级" prop="shop_owner" width="150" align="center">-->
  116. <!-- <template slot-scope="scope">-->
  117. <!-- <div>{{scope.row.business_level}}</div>-->
  118. <!-- </template>-->
  119. <!-- </el-table-column>-->
  120. <!-- <el-table-column label="门店有效期" prop="expire_time" width="190" align="center">
  121. <template slot-scope="scope">
  122. <div>
  123. <samp v-if="scope.row.expire_time==0">无限期</samp>
  124. <samp v-else>{{scope.row.expire_time | dateTimeFormat('Y-m-d H:i:s')}} 到期</samp>
  125. </div>
  126. </template>
  127. </el-table-column> -->
  128. <el-table-column label="" prop="" width="160" align="center">
  129. <template slot="header">
  130. 小店资产
  131. <el-tooltip placement="top">
  132. <div slot="content">
  133. 总收入:小店累计收入<br/>
  134. 当前可提现余额:小店当前余额<br/>
  135. 冻结金额:小店被冻结的金额<br/>
  136. 罚款金额:小店被处罚的金额
  137. </div>
  138. <i class="el-icon-question grid-icon"></i>
  139. </el-tooltip>
  140. </template>
  141. <template slot-scope="scope">
  142. <div>
  143. 累计收入:<span style="color: #409EFF;">{{scope.row.total_money || 0}}</span><br/>
  144. 当前可提现金额:<span style="color: #409EFF;">{{scope.row.balance || 0}}</span><br/>
  145. 冻结金额:<span style="color: #409EFF;">{{scope.row.frozen_balance || 0}}</span><br/>
  146. 罚款金额:<span style="color: #409EFF;">{{scope.row.fine_money || 0}}</span>
  147. </div>
  148. </template>
  149. </el-table-column>
  150. <el-table-column label="会员总数" prop="user_nums" width="100" align="center">
  151. <template slot-scope="scope">
  152. <div>
  153. {{scope.row.user_nums}}
  154. </div>
  155. </template>
  156. </el-table-column>
  157. <el-table-column label="状态" prop="store_status" width="80" align="center">
  158. <template slot-scope="scope">
  159. <div>
  160. <span>{{storeStatus[scope.row.store_status]}}</span>
  161. </div>
  162. </template>
  163. </el-table-column>
  164. <el-table-column label="创建时间" prop="user_count" width="100" align="center">
  165. <template slot-scope="scope">
  166. <div>
  167. {{scope.row.created_at | dateTimeFormat('Y-m-d H:i:s')}}
  168. </div>
  169. </template>
  170. </el-table-column>
  171. <el-table-column label="操作" style="width: 200px;" fixed="right" align="center">
  172. <template slot-scope="scope">
  173. <el-button type="text" size="small" @click="goToDetail(scope.row.id)">详情</el-button>
  174. <!-- <el-button type="text" size="small" @click="showPromotionCode(scope.row.id)">推广码</el-button> -->
  175. <!-- <com-share-pop :url="scope.row.promotion_code">
  176. <template slot="share-button" slot-scope="data">
  177. <el-button circle size="mini" type="text" @click="showPromotionCode(scope.row.id, data.show)">推广码(公众号) </el-button>
  178. </template>
  179. </com-share-pop>
  180. <com-share-pop :url="scope.row.promotion_code">
  181. <template slot="share-button" slot-scope="data">
  182. <el-button circle size="mini" type="text" @click="showMiniPromotionCode(scope.row.id,1)">推广码(小程序) </el-button>
  183. </template>
  184. </com-share-pop> -->
  185. <el-button v-if="scope.row.store_status==1" type="text" size="small"
  186. @click="switchStatus(scope.$index, 3)">禁用
  187. </el-button>
  188. <el-button v-else-if="scope.row.store_status==3" type="text" size="small"
  189. @click="switchStatus(scope.$index, 1)">启用
  190. </el-button>
  191. <el-button type="text" size="small" @click="showSend(scope.row.id)">发放提货券</el-button>
  192. <el-button type="text" size="small" @click="storeDelete(scope.row)">删除</el-button>
  193. <!-- <com-share-pop :url="store_collection_url" :show-share-link="false">
  194. <template slot="share-button" slot-scope="data">
  195. <el-button circle size="mini" type="text" @click="showCollectionCode(scope.row.store_collection_url, data.show)">收款码(公众号)</el-button>
  196. </template>
  197. </com-share-pop>
  198. <com-share-pop :url="scope.row.promotion_code">
  199. <template slot="share-button" slot-scope="data">
  200. <el-button circle size="mini" type="text" @click="showMiniPromotionCode(scope.row.id,2)">收款码(小程序)</el-button>
  201. </template>
  202. </com-share-pop>
  203. <com-share-pop :url="scope.row.promotion_code">
  204. <template slot="share-button" slot-scope="data">
  205. <el-button circle size="mini" type="text" @click="goToStoreMember(scope.row.id)">门店会员</el-button>
  206. </template>
  207. </com-share-pop> -->
  208. </template>
  209. </el-table-column>
  210. </el-table>
  211. <div style="text-align: right;margin: 20px 0;">
  212. <el-pagination @current-change="pagination" background layout="prev, pager, next"
  213. :page-count="pageCount"></el-pagination>
  214. </div>
  215. </div>
  216. </el-card>
  217. <el-dialog
  218. title=""
  219. :visible.sync="dialogVisible"
  220. width="30%"
  221. :before-close="handleClose">
  222. <el-image class="table-info-img circle" :src="applet_url">
  223. </el-image>
  224. <span slot="footer" class="dialog-footer">
  225. <el-button @click="dialogVisible = false">取 消</el-button>
  226. </span>
  227. </el-dialog>
  228. <el-dialog
  229. title=""
  230. :visible.sync="dialogSendVisible"
  231. width="30%"
  232. :before-close="handleSendClose">
  233. <el-form ref="form" label-width="120px">
  234. <el-form-item label="发放提货券">
  235. <el-select v-model="recharge" size="small" placeholder="请选择">
  236. <el-option
  237. v-for="item in recharge_list"
  238. :key="item.number"
  239. :label="item.number"
  240. :value="item.number">
  241. </el-option>
  242. </el-select>
  243. </el-form-item>
  244. </el-form>
  245. <span slot="footer" class="dialog-footer">
  246. <el-button :loading="btnLoading" @click="toSend()" size="small" type="primary">确定</el-button>
  247. <el-button @click="dialogSendVisible = false" size="small">取 消</el-button>
  248. </span>
  249. </el-dialog>
  250. </div>
  251. <script src="/resources/unpkg/clipboard@1.0.0/dist/clipboard.min.js"></script>
  252. <script>
  253. const app = new Vue({
  254. el: '#app',
  255. data: {
  256. searchData: {
  257. cate_id: 0,
  258. nickname: '',
  259. storeowner: '',
  260. store_name: '',
  261. status: 0,
  262. },
  263. currPage: 1,
  264. pageCount: 0,
  265. loading: false,
  266. store_id:0,
  267. recharge: '',
  268. dialogVisible: false,
  269. dialogSendVisible: false,
  270. btnLoading:false,
  271. recharge_list: [],
  272. list: [],
  273. dialogLoading: false,
  274. // exportList: [],
  275. categorys: [],
  276. storeStatus: {
  277. 1: '正常',
  278. 2: '过期',
  279. 3: '禁用',
  280. 4: '冻结',
  281. },
  282. store_login_url: '', // 门店登录 url
  283. store_collection_url: '', // 门店收款码链接
  284. shareData: {
  285. url: "", //链接
  286. img: "", //二维码
  287. qrcode_filename: '', // 二维码文件名
  288. },
  289. applet_url: '',
  290. },
  291. mounted() {
  292. this.loadData();
  293. },
  294. methods: {
  295. toSend()
  296. {
  297. if(this.store_id=='')
  298. {
  299. this.$message.error('请选择小店');
  300. return;
  301. }
  302. if(this.recharge == '')
  303. {
  304. this.$message.error('请选择充值金额');
  305. return;
  306. }
  307. this.btnLoading=true;
  308. request({
  309. params: {
  310. r: 'happiness/store/recharge',
  311. },
  312. data: {
  313. store_id: this.store_id,
  314. number: this.recharge,
  315. },
  316. method: 'post',
  317. }).then(res => {
  318. if (res.data.code == 0) {
  319. this.$message.success(res.data.msg);
  320. this.dialogSendVisible = false;
  321. this.loadData();
  322. this.btnLoading=false;
  323. } else {}
  324. }).catch(e => {
  325. this.btnLoading=false;
  326. });
  327. },
  328. showSend(id) {
  329. this.store_id=id
  330. this.dialogSendVisible = true;
  331. },
  332. searchs() {
  333. this.currPage = 1;
  334. this.loadData();
  335. },
  336. clereSearch() {
  337. this.searchData.cate_id = 0;
  338. this.searchData.nickname = '';
  339. this.searchData.storeowner = '';
  340. this.searchData.store_name = '';
  341. this.searchData.status = 0;
  342. this.currPage = 1;
  343. this.loadData();
  344. },
  345. // 打开推广码弹窗
  346. showPromotionCode(id, fun) {
  347. setTimeout(() => {
  348. fun();
  349. }, 300)
  350. },
  351. showMiniPromotionCode(id, type) {
  352. request({
  353. params: {
  354. r: 'happiness/store/show-mini-promotion-code',
  355. },
  356. data: {
  357. id: id,
  358. type: type
  359. },
  360. method: 'post'
  361. }).then(e => {
  362. if (e.data.code == 0) {
  363. this.dialogVisible = true
  364. this.applet_url = e.data.data.applet_url;
  365. } else {
  366. this.$message.error('操作失败');
  367. }
  368. }).catch(e => {
  369. this.loading = false;
  370. console.log(e);
  371. this.$message.error('网络错误');
  372. });
  373. },
  374. // 打开收款码弹窗
  375. showCollectionCode(url, fun) {
  376. this.store_collection_url = url;
  377. setTimeout(() => {
  378. fun();
  379. }, 300)
  380. },
  381. // 禁用 / 启用门店
  382. switchStatus(index, status) {
  383. let self = this;
  384. let tip = status == 1 ? '启用' : '禁用';
  385. let store_id = self.list[index].id;
  386. self.$confirm(tip + '该门店, 是否继续?', '提示', {
  387. confirmButtonText: '确定',
  388. cancelButtonText: '取消',
  389. type: 'warning'
  390. }).then(() => {
  391. self.loading = true;
  392. request({
  393. params: {
  394. r: 'happiness/store/switch-status',
  395. },
  396. data: {
  397. store_id: store_id,
  398. status: status,
  399. },
  400. method: 'post'
  401. }).then(e => {
  402. self.loading = false;
  403. if (e.data.code == 0) {
  404. this.list[index].store_status = status;
  405. self.$message.success('操作成功');
  406. } else {
  407. self.$message.error('操作失败');
  408. }
  409. }).catch(e => {
  410. self.loading = false;
  411. console.log(e);
  412. self.$message.error('网络错误');
  413. });
  414. }).catch(() => {
  415. });
  416. },
  417. storeDelete(row) {
  418. let self = this;
  419. self.$confirm('删除该门店, 是否继续?', '提示', {
  420. confirmButtonText: '确定',
  421. cancelButtonText: '取消',
  422. type: 'warning'
  423. }).then(() => {
  424. self.listLoading = true;
  425. request({
  426. params: {
  427. r: 'happiness/store/del',
  428. },
  429. method: 'post',
  430. data: {
  431. id: row.id,
  432. }
  433. }).then(e => {
  434. self.listLoading = false;
  435. if (e.data.code === 0) {
  436. self.$message.success(e.data.msg);
  437. this.loadData();
  438. } else {
  439. self.$message.error(e.data.msg);
  440. }
  441. }).catch(e => {
  442. console.log(e);
  443. });
  444. }).catch(() => {
  445. self.$message.info('已取消删除')
  446. });
  447. },
  448. /* confirmSubmit() {
  449. this.search.status
  450. }, */
  451. loadData() {
  452. this.loading = true;
  453. request({
  454. params: {
  455. r: 'happiness/store/index',
  456. page: this.currPage,
  457. ...this.searchData,
  458. },
  459. method: 'get',
  460. }).then(e => {
  461. this.loading = false;
  462. if (e.data.code == 0) {
  463. this.list = e.data.data.list;
  464. this.store_login_url = e.data.data.store_login_url;
  465. this.store_collection_url = e.data.data.store_collection_url;
  466. this.pageCount = e.data.data.page_count;
  467. // this.exportList = e.data.data.export_list;
  468. this.edit_status = e.data.data.edit_status;
  469. this.categorys = e.data.data.cate_list;
  470. this.recharge_list = e.data.data.recharge_list;
  471. console.log(this.recharge_list)
  472. } else {
  473. this.$message.error(e.data.msg);
  474. }
  475. }).catch(e => {
  476. this.loading = false;
  477. });
  478. },
  479. pagination(currentPage) {
  480. let self = this;
  481. self.currPage = currentPage;
  482. self.loadData();
  483. },
  484. addStore(id) {
  485. navigateTo({
  486. r: 'happiness/store/storage',
  487. });
  488. },
  489. // 跳转门店详情页
  490. goToDetail(id) {
  491. navigateTo({
  492. r: 'happiness/store/detail',
  493. store_id: id,
  494. });
  495. },
  496. // 跳转门店会员页
  497. goToStoreMember(id) {
  498. navigateTo({
  499. r: 'happiness/store-user-associated/index',
  500. store_id: id,
  501. });
  502. },
  503. handleClose() {
  504. this.dialogVisible = false;
  505. },
  506. handleSendClose() {
  507. this.dialogSendVisible = false;
  508. }
  509. }
  510. });
  511. var clipboard = new ClipboardJS('#copy_btn');
  512. var self = this;
  513. clipboard.on('success', function (e) {
  514. self.ELEMENT.Message.success('复制成功');
  515. e.clearSelection();
  516. });
  517. clipboard.on('error', function (e) {
  518. self.ELEMENT.Message.success('复制失败,请手动复制');
  519. });
  520. </script>
  521. <style>
  522. .el-tabs__header {
  523. font-size: 16px;
  524. }
  525. .table-body {
  526. padding: 20px;
  527. background-color: #fff;
  528. }
  529. .input-item {
  530. width: 250px;
  531. margin-right: 40px;
  532. }
  533. .input-item .el-input__inner {
  534. border-right: 0;
  535. }
  536. .input-item .el-input__inner:hover {
  537. border: 1px solid #dcdfe6;
  538. border-right: 0;
  539. outline: 0;
  540. }
  541. .input-item .el-input__inner:focus {
  542. border: 1px solid #dcdfe6;
  543. border-right: 0;
  544. outline: 0;
  545. }
  546. .input-item .el-input-group__append {
  547. background-color: #fff;
  548. border-left: 0;
  549. width: 10%;
  550. padding: 0;
  551. }
  552. .input-item .el-input-group__append .el-button {
  553. padding: 0;
  554. }
  555. .input-item .el-input-group__append .el-button {
  556. margin: 0;
  557. }
  558. .table-body {
  559. padding: 20px;
  560. background-color: #fff;
  561. }
  562. .table-body .el-button {
  563. padding: 0 !important;
  564. border: 0;
  565. margin: 0 5px;
  566. }
  567. .input-item {
  568. width: 250px;
  569. margin: 0 0 20px;
  570. display: inline-block;
  571. }
  572. .input-item .el-input__inner {
  573. border-right: 0;
  574. }
  575. .input-item .el-input__inner:hover {
  576. border: 1px solid #dcdfe6;
  577. border-right: 0;
  578. outline: 0;
  579. }
  580. .input-item .el-input__inner:focus {
  581. border: 1px solid #dcdfe6;
  582. border-right: 0;
  583. outline: 0;
  584. }
  585. .input-item .el-input-group__append {
  586. background-color: #fff;
  587. border-left: 0;
  588. width: 10%;
  589. padding: 0;
  590. }
  591. .input-item .el-input-group__append .el-button {
  592. padding: 0;
  593. }
  594. .input-item .el-input-group__append .el-button {
  595. margin: 0;
  596. }
  597. .batch {
  598. margin: 0 0 20px;
  599. display: inline-block;
  600. }
  601. .batch .el-button {
  602. padding: 9px 15px !important;
  603. }
  604. .el-table th > .cell {
  605. color: #333;
  606. font-weight: bold;
  607. font-size: 14px;
  608. }
  609. .el-table__footer-wrapper,
  610. .el-table__header-wrapper {
  611. border-bottom: 1.4px solid #D6D6D6;
  612. }
  613. .el-table .el-button {
  614. padding: 0 !important;
  615. border: 0;
  616. margin: 0 5px;
  617. }
  618. #app .copy .el-input-group__append {
  619. background-color: #409EFF;
  620. border-color: #409EFF;
  621. padding: 0 10px;
  622. }
  623. #app .table-body .copybtn {
  624. color: #fff;
  625. padding: 0 30px;
  626. }
  627. .el-alert {
  628. padding: 0;
  629. padding-left: 5px;
  630. padding-bottom: 5px;
  631. }
  632. .el-alert--info .el-alert__description {
  633. color: #606266;
  634. }
  635. .el-alert .el-button {
  636. margin-left: 20px;
  637. }
  638. .el-alert__content {
  639. display: flex;
  640. align-items: center;
  641. }
  642. .table-body .el-alert__title {
  643. margin-top: 5px;
  644. font-weight: 400;
  645. }
  646. .el-table th > .cell {
  647. color: #333;
  648. font-weight: bold;
  649. font-size: 14px;
  650. }
  651. .el-table__footer-wrapper,
  652. .el-table__header-wrapper {
  653. border-bottom: 1.4px solid #D6D6D6;
  654. }
  655. .item-box {
  656. margin-right: 20px;
  657. }
  658. .flex {
  659. display: flex;
  660. align-items: center;
  661. }
  662. .input-title {
  663. margin-right: 15px;
  664. }
  665. .item-box .label {
  666. margin-right: 8px;
  667. }
  668. .com-share-pop {
  669. display: inline-block;
  670. }
  671. .grid-icon {
  672. color: #999;
  673. cursor: pointer;
  674. font-size: 18px;
  675. }
  676. </style>