index.php 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887
  1. <?php
  2. use common\helpers\ComponentHelper;
  3. ComponentHelper::loadComponentView('com-rich-text');
  4. ComponentHelper::loadComponentView('com-dialog-select');
  5. ?>
  6. <div id="app" v-cloak>
  7. <el-card v-loading="loading" style="border:0" shadow="never" body-style="background-color: #f3f3f3;padding: 0 0;">
  8. <el-tabs v-model="activeName" @tab-click="handleClick">
  9. <el-tab-pane label="基本设置" name="basic">
  10. <?php ComponentHelper::loadComponentView('basic', __DIR__ . '/'); ?>
  11. </el-tab-pane>
  12. <el-tab-pane label="模式设置" name="mode" class="cashier-tabs">
  13. <?php ComponentHelper::loadComponentView('pattern', __DIR__ . '/'); ?>
  14. </el-tab-pane>
  15. <el-tab-pane label="入驻设置" name="enter">
  16. <?php ComponentHelper::loadComponentView('enter', __DIR__ . '/'); ?>
  17. </el-tab-pane>
  18. </el-tabs>
  19. </el-card>
  20. </div>
  21. <script>
  22. const app = new Vue({
  23. el: '#app',
  24. data() {
  25. return {
  26. loading: false,
  27. submitLoading: false,
  28. activeName: 'basic',
  29. basicForm: {
  30. o2o_url: 'plugins/Mch/store/storeindex',
  31. goods_auth: 0,
  32. balance_cash_service_fee: '',
  33. service_fee: 0,
  34. settle_type: 0,
  35. platform_ratio: 0,
  36. risk_management: 0,
  37. risk_management_ratio: 0,
  38. settle_scene: 2,
  39. store_distribution_status: 0,
  40. store_agent_status: 0,
  41. store_area_status: 0,
  42. store_boss_status: 0,
  43. payment_settle_info:[],
  44. payment_settle:[],
  45. },
  46. enterForm: {
  47. is_enable: 0,
  48. time_status: 0,
  49. expired_days: 0,
  50. store_audit: 0,
  51. upload_license_image: 0,
  52. mode: 1,
  53. goods_ids: [],
  54. goods_list: [],
  55. recruit_title: '商户入驻',
  56. recruit_content: '',
  57. recruit_btn_text: '申请入驻',
  58. dow_center_agreement: '',
  59. },
  60. cashierForm: {
  61. is_distribution_enable: 1,
  62. is_agent_enable: 1,
  63. service_fee_ratio: 0,
  64. member_status: 0,
  65. members: [{
  66. level: 0,
  67. level_name: '默认等级',
  68. discount: 0
  69. }],
  70. is_distribution: 0,
  71. deepNames: ['一级分销', '二级分销'],
  72. distribution_settings: [{
  73. level: 0,
  74. level_name: '默认等级',
  75. name: '佣金',
  76. commission_rate: [10, 15]
  77. }, ],
  78. is_agent: 0,
  79. agent_settings: {
  80. team_rewards: [{
  81. level: 0,
  82. level_name: '默认等级',
  83. commission_rate: 0
  84. }, ],
  85. equal_rewards: [{
  86. level: 0,
  87. level_name: '默认等级',
  88. commission_rate: 0
  89. }, ],
  90. over_rewards: [{
  91. level: 0,
  92. level_name: '默认等级',
  93. commission_rate: 0
  94. }, ],
  95. },
  96. },
  97. basicFormRules: {
  98. settle_type: [{
  99. required: true,
  100. message: '请选择计算方式',
  101. trigger: 'blur'
  102. }],
  103. settle_scene: [{
  104. required: true,
  105. message: '请选择结算方式',
  106. trigger: 'blur'
  107. }],
  108. },
  109. enterRules: {},
  110. cashierFormRules: {},
  111. modeForm: {
  112. is_enable_mode: 1,
  113. is_distribution_enable: 1,
  114. is_agent_enable: 1,
  115. is_boss_enable: 1,
  116. is_area_enable: 1,
  117. enable_agent_goods_deduct: 0,
  118. Distribution: {
  119. commission: {
  120. is_enable: 0,
  121. is_percent: 0,
  122. detail: [{
  123. level: 0,
  124. level_name: '默认等级',
  125. first_prize: 0,
  126. second_prize: 0,
  127. third_prize: 0
  128. }],
  129. },
  130. score: {
  131. is_enable: 0,
  132. is_percent: 0,
  133. detail: [{
  134. level: 0,
  135. level_name: '默认等级',
  136. first_prize: 0,
  137. second_prize: 0,
  138. third_prize: 0
  139. }],
  140. }
  141. },
  142. Agent: {
  143. commission: {
  144. is_enable: 0,
  145. is_percent_team: 0,
  146. is_percent_equal: 0,
  147. is_percent_over: 0,
  148. is_percent_extra: 0,
  149. detail: [{
  150. level: 0,
  151. level_name: '默认等级',
  152. agent_team_prize: 0,
  153. agent_equal_prize: 0,
  154. agent_over_prize: 0,
  155. agent_extra_prize: 0
  156. }],
  157. },
  158. score: {
  159. is_enable: 0,
  160. is_percent_team: 0,
  161. is_percent_equal: 0,
  162. is_percent_over: 0,
  163. is_percent_extra: 0,
  164. detail: [{
  165. level: 0,
  166. level_name: '默认等级',
  167. agent_team_prize: 0,
  168. agent_equal_prize: 0,
  169. agent_over_prize: 0,
  170. agent_extra_prize: 0
  171. }],
  172. }
  173. },
  174. Boss: {
  175. commission: {
  176. is_enable: 1,
  177. commission_type: 'commission',
  178. is_extra: 0,
  179. detail: {},
  180. },
  181. digital: {
  182. is_enable: 1,
  183. commission_type: 'digital',
  184. is_extra: 0,
  185. detail: {},
  186. },
  187. },
  188. Area: {
  189. is_enable: 0,
  190. detail: [{
  191. level: 0,
  192. level_name: '默认等级',
  193. prize: 0,
  194. equal_prize: 0
  195. }],
  196. },
  197. area_currency: {},
  198. },
  199. distributionName: 'distribution-commission',
  200. agentName: 'agent-commission',
  201. bossName: 'boss-commission',
  202. areaName: 'area-detail',
  203. };
  204. },
  205. mounted: function() {
  206. this.loadData();
  207. },
  208. methods: {
  209. tabClickHandle(tab, key) {
  210. this[key] = tab.name
  211. },
  212. onSubmit() {
  213. console.log('submit!');
  214. },
  215. assiginObj(target = {}, sources = {}) {
  216. let obj = target;
  217. if (typeof target != 'object' || typeof sources != 'object') {
  218. return sources; // 如果其中一个不是对象 就返回sources
  219. }
  220. for (let key in sources) {
  221. // 如果target也存在 那就再次合并
  222. if (target.hasOwnProperty(key)) {
  223. obj[key] = this.assiginObj(target[key], sources[key]);
  224. } else {
  225. // 不存在就直接添加
  226. obj[key] = sources[key];
  227. }
  228. }
  229. return obj;
  230. },
  231. /* test(event, ...vv) {
  232. console.info(event, vv);
  233. let data = this[vv[0]];
  234. console.log(data);
  235. event = 0;
  236. if (vv.length == 1) {
  237. data = event
  238. } else if (vv.length - 1 == 1) {
  239. data[vv[1]] = event
  240. } else {
  241. // debugger
  242. let newVV = [...vv];
  243. newVV.shift();
  244. for (let index = 1; index < vv.length; index++) {
  245. data = data[vv[index]];
  246. if ((vv.length - newVV.length) == vv.length - 2) {
  247. data[vv[vv.length - 1]] = event
  248. }
  249. newVV.shift();
  250. }
  251. }
  252. console.info(data);
  253. console.info(this.cashierForm);
  254. }, */
  255. // 复制首页链接
  256. copyLink(link) {
  257. link = localStorage.getItem('h5_domain') + link + '?sign=' + localStorage.getItem('mall_sign');
  258. // console.log('link: ', link);
  259. var input = document.getElementById("copy-container");
  260. input.value = link; // 修改文本框的内容
  261. input.select(); // 选中文本
  262. document.execCommand("copy"); // 执行浏览器复制命令
  263. this.$message.success('复制成功');
  264. },
  265. // 输入值过滤处理
  266. changeHandle(key) {
  267. try {
  268. this.flierValue(this.activeName, key);
  269. } catch (err) {
  270. this.$message.error(err);
  271. let formName = this.activeName + 'Form';
  272. if (this[formName][key] < 0) {
  273. this[formName][key] = Math.abs(this[formName][key]);
  274. } else if (this[formName][key] > 100) {
  275. this[formName][key] = 0;
  276. }
  277. return false;
  278. }
  279. },
  280. // 过滤和处理值
  281. flierValue(group, key) {
  282. // console.log(group, key);
  283. let configs = {
  284. // platform_ratio: {
  285. // text: `服务费比例取值在 0~100 之间`,
  286. // max: '100',
  287. // min: '0',
  288. // },
  289. // risk_management_ratio: {
  290. // text: '售价比例取值在 0~100 之间',
  291. // max: '100',
  292. // min: '0',
  293. // },
  294. // expired_days: {
  295. // text: '请填写门店有效天数',
  296. // min: '0',
  297. // },
  298. // service_fee_ratio: {
  299. // text: `服务费比例取值在 0~100 之间`,
  300. // max: '100',
  301. // min: '0',
  302. // },
  303. };
  304. let datas = {
  305. basic: this.basicForm,
  306. cashier: this.cashierForm,
  307. enter: this.enterForm,
  308. };
  309. let val = datas[group][key];
  310. if (configs[key]) {
  311. if (configs[key].max && val > parseInt(configs[key].max)) {
  312. throw new Error(configs[key].text);
  313. }
  314. if (configs[key].min && val <= parseInt(configs[key].min)) {
  315. throw new Error(configs[key].text);
  316. }
  317. }
  318. },
  319. loadData() {
  320. let self = this;
  321. this.loading = true;
  322. request({
  323. params: {
  324. r: 'mch/store-setting/index',
  325. },
  326. }).then(e => {
  327. // console.log('LLLLLLL: ', e);
  328. self.loading = false;
  329. if (e.data.code === 0) {
  330. if (e.data.data.basic) {
  331. self.basicForm = self.assiginObj(self.basicForm,e.data.data.basic);
  332. }
  333. if (e.data.data.enter) {
  334. self.enterForm = e.data.data.enter;
  335. }
  336. if (e.data.data.mode) {
  337. self.modeForm = e.data.data.mode;
  338. }
  339. localStorage.setItem('h5_domain', e.data.data.h5_domain);
  340. localStorage.setItem('mall_sign', e.data.data.mall_sign);
  341. } else {
  342. self.$message.error(e.data.msg);
  343. }
  344. }).catch(e => {
  345. // console.log(e);
  346. self.$message.error('网络错误');
  347. });
  348. },
  349. // 配置提交
  350. submit(formName) {
  351. // console.log('5555555555: ', formName, this.activeName);
  352. let self = this;
  353. let keys = [];
  354. if ('basic' == self.activeName) {
  355. keys = ['platform_ratio', 'risk_management_ratio'];
  356. } else if ('cashier' == self.activeName) {
  357. keys = ['service_fee_ratio'];
  358. // 会员等级折扣验证
  359. if (1 == self.cashierForm.member_status) {
  360. let memberForNum = self.cashierForm.members.length;
  361. for (let i = 0; i < memberForNum; i++) {
  362. let discount_val = self.cashierForm.members[i].discount;
  363. if (discount_val < 0 || discount_val > 100) {
  364. self.$message.error('会员折扣比例取值在 0~100 之间');
  365. return false;
  366. }
  367. }
  368. }
  369. // 分销佣金比例验证
  370. if (1 == self.cashierForm.is_distribution && 1 == self.cashierForm.is_distribution_enable) {
  371. let forNum = self.cashierForm.distribution_settings.length;
  372. for (let i = 0; i < forNum; i++) {
  373. let val = self.cashierForm.distribution_settings[i].commission_rate;
  374. let valForNum = val.length;
  375. for (let i = 0; i < valForNum; i++) {
  376. if (val[i] < 0 || val[i] > 100) {
  377. self.$message.error('分销佣金比例取值在 0~100 之间');
  378. return false;
  379. }
  380. }
  381. }
  382. }
  383. // 经销佣金比例验证
  384. if (1 == self.cashierForm.is_agent && 1 == self.cashierForm.is_agent_enable) {
  385. for (key in self.cashierForm.agent_settings) {
  386. let settings = self.cashierForm.agent_settings[key];
  387. let forNum = settings.length;
  388. for (let i = 0; i < forNum; i++) {
  389. let val = settings[i].commission_rate;
  390. if (val < 0 || val > 100) {
  391. self.$message.error('经销佣金比例取值在 0~100 之间');
  392. return false;
  393. }
  394. }
  395. }
  396. }
  397. } else if ('enter' == self.activeName) {
  398. keys = ['expired_days'];
  399. if (1 == self.enterForm.time_status && !self.enterForm.expired_days) {
  400. self.$message.error('请填写门店有效天数');
  401. return false;
  402. }
  403. if (2 == self.enterForm.mode && !self.enterForm.goods_ids.length) {
  404. self.$message.error('请选择入驻必须消费的商品');
  405. return false;
  406. }
  407. } else if ('pattern' == self.activeName) {
  408. keys = [];
  409. // console.log(self.modeForm, 'pppppppppp==========');
  410. if (self.modeForm.is_enable_mode == 1) {
  411. // 分销佣金比例验证.
  412. let dstInfo = self.modeForm.Distribution;
  413. let dstPrizeMap = ['first_prize', 'second_prize', 'third_prize'];
  414. for (let dk in self.modeForm.Distribution) {
  415. if (dstInfo[dk].is_enable == 1) {
  416. let forNum = dstInfo[dk].detail.length;
  417. for (let i = 0; i < forNum; i++) {
  418. let detail = dstInfo[dk].detail[i];
  419. for (dik in detail) {
  420. if (dstPrizeMap.indexOf(dik) > -1) {
  421. if (detail[dik] < 0) {
  422. self.$message.error('[' + detail.level_name + '] 分销等级比例不能小于 0');
  423. return false;
  424. }
  425. }
  426. if (dstInfo[dk].is_percent == 1 && detail[dik] > 100) {
  427. self.$message.error('[' + detail.level_name + '] 分销等级比例不能大于 100');
  428. return false;
  429. }
  430. }
  431. }
  432. }
  433. }
  434. // 经销佣金比例验证
  435. let agentInfo = self.modeForm.Agent;
  436. let agentPrizeMap = ['agent_team_prize', 'agent_equal_prize', 'agent_over_prize', 'agent_extra_prize'];
  437. let agentPrizePercentMap = {
  438. agent_team_prize: 'is_percent_team',
  439. agent_equal_prize: 'is_percent_equal',
  440. agent_over_prize: 'is_percent_over',
  441. agent_extra_prize: 'is_percent_extra'
  442. };
  443. for (let ak in agentInfo) {
  444. if (agentInfo[ak].is_enable == 1) {
  445. let forNum = agentInfo[ak].detail.length;
  446. for (let i = 0; i < forNum; i++) {
  447. let detail = agentInfo[ak].detail[i];
  448. for (dik in detail) {
  449. if (agentPrizeMap.indexOf(dik) > -1) {
  450. if (detail[dik] < 0) {
  451. self.$message.error('[' + detail.level_name + '] 经销等级比例不能小于 0');
  452. return false;
  453. }
  454. if (agentInfo[ak][agentPrizePercentMap[dik]] == 1 && detail[dik] > 100) {
  455. self.$message.error('[' + detail.level_name + '] 经销等级比例不能大于 100');
  456. return false;
  457. }
  458. }
  459. }
  460. }
  461. }
  462. }
  463. // 股东分红等级比例验证
  464. let bossInfo = self.modeForm.Boss;
  465. if (bossInfo.is_enable == 1) {
  466. let forNum = bossInfo.detail.length;
  467. for (let i = 0; i < forNum; i++) {
  468. let detail = bossInfo.detail[i];
  469. if (detail.prize < 0 || detail.prize > 100) {
  470. self.$message.error('[' + detail.level_name + '] 股东分红比例在 0 ~ 100 之间');
  471. return false;
  472. }
  473. if (bossInfo.is_extra == 1) {
  474. if (detail.extra_prize < 0 || detail.extra_prize > 100) {
  475. self.$message.error('[' + detail.level_name + '] 股东额外分红比例在 0 ~ 100 之间');
  476. return false;
  477. }
  478. }
  479. }
  480. }
  481. // 区域分红等级比例验证
  482. let areaInfo = self.modeForm.Area;
  483. if (areaInfo.is_enable == 1) {
  484. let forNum = areaInfo.detail.length;
  485. for (let i = 0; i < forNum; i++) {
  486. let detail = areaInfo.detail[i];
  487. if (detail.prize < 0 || detail.prize > 100) {
  488. self.$message.error('[' + detail.level_name + '] 区域默认分红比例在 0 ~ 100 之间');
  489. return false;
  490. }
  491. if (detail.equal_prize < 0 || detail.equal_prize > 100) {
  492. self.$message.error('[' + detail.level_name + '] 区域平级奖比例在 0 ~ 100 之间');
  493. return false;
  494. }
  495. }
  496. }
  497. }
  498. }
  499. let forNum = keys.length;
  500. for (let i = 0; i < forNum; i++) {
  501. try {
  502. self.flierValue(self.activeName, keys[i]);
  503. } catch (err) {
  504. self.$message.error(err);
  505. return false;
  506. }
  507. }
  508. self.$refs[formName].validate(valid => {
  509. if (valid) {
  510. self.submitLoading = true;
  511. let activeName = self.activeName;
  512. let formData = {};
  513. formData[activeName] = self[formName];
  514. formData.group = activeName;
  515. // console.log(formData);return null;
  516. request({
  517. params: {
  518. r: 'mch/store-setting/index',
  519. },
  520. method: 'post',
  521. data: formData,
  522. }).then(e => {
  523. self.submitLoading = false;
  524. if (e.data.code === 0) {
  525. self.$message.success(e.data.msg);
  526. } else {
  527. self.$message.error(e.data.msg);
  528. }
  529. }).catch(e => {
  530. console.log(e);
  531. self.$message.error('网络错误');
  532. });
  533. } else {
  534. self.$message.error('参数验证未通过');
  535. }
  536. });
  537. },
  538. handleClick(tab, event) {
  539. this.activeName = tab.name;
  540. },
  541. // 选中商品回调
  542. goodsSelect(list) {
  543. for (let j in list) {
  544. let item = list[j];
  545. if (this.enterForm.goods_ids.length >= 20) {
  546. this.$message.error('指定商品不能大于20个');
  547. return;
  548. }
  549. let flag = true;
  550. for (let i in this.enterForm.goods_ids) {
  551. if (this.enterForm.goods_ids[i] == item.id) {
  552. flag = false;
  553. break;
  554. }
  555. }
  556. if (flag) {
  557. this.enterForm.goods_ids.push(item.id);
  558. this.enterForm.goods_list.push({
  559. id: item.id,
  560. goods_name: item.goods_name,
  561. cover_pic: item.cover_pic,
  562. });
  563. }
  564. }
  565. },
  566. // 删除已选择商品
  567. deleteGoods(index) {
  568. this.enterForm.goods_ids.splice(index, 1);
  569. this.enterForm.goods_list.splice(index, 1);
  570. },
  571. },
  572. computed: {
  573. }
  574. });
  575. </script>
  576. <style>
  577. .table-head {
  578. font-weight: 500;
  579. }
  580. .el-tabs__header {
  581. padding: 0 20px;
  582. height: 56px;
  583. line-height: 56px;
  584. background-color: #fff;
  585. margin-bottom: 0;
  586. }
  587. .title {
  588. padding: 0px 8px;
  589. border-left: 5px solid #1479F0;
  590. background-color: #fff;
  591. font-size: 18px;
  592. position: relative;
  593. left: 32px;
  594. margin: 20px 0;
  595. }
  596. .form-body {
  597. background-color: #fff;
  598. padding: 20px 50% 20px 0;
  599. }
  600. .form-body .item {
  601. width: 300px;
  602. margin-bottom: 50px;
  603. margin-right: 25px;
  604. }
  605. .item-img {
  606. height: 550px;
  607. padding: 25px 10px;
  608. border-radius: 30px;
  609. border: 1px solid #CCCCCC;
  610. background-color: #fff;
  611. }
  612. .item .el-form-item {
  613. width: 300px;
  614. margin: 20px auto;
  615. }
  616. .left-setting-menu {
  617. width: 260px;
  618. }
  619. .left-setting-menu .el-form-item {
  620. height: 60px;
  621. padding-left: 20px;
  622. display: flex;
  623. align-items: center;
  624. margin-bottom: 0;
  625. cursor: pointer;
  626. }
  627. .left-setting-menu .el-form-item .el-form-item__label {
  628. cursor: pointer;
  629. }
  630. .left-setting-menu .el-form-item.active {
  631. background-color: #F3F5F6;
  632. border-top-left-radius: 10px;
  633. width: 105%;
  634. border-bottom-left-radius: 10px;
  635. }
  636. .left-setting-menu .el-form-item .el-form-item__content {
  637. margin-left: 0 !important
  638. }
  639. .no-radius {
  640. border-top-left-radius: 0 !important;
  641. }
  642. .del-btn {
  643. position: absolute;
  644. right: -8px;
  645. top: -8px;
  646. padding: 4px 4px;
  647. }
  648. .reset {
  649. position: absolute;
  650. top: 3px;
  651. left: 90px;
  652. }
  653. .app-tip {
  654. position: absolute;
  655. right: 24px;
  656. top: 16px;
  657. height: 72px;
  658. line-height: 72px;
  659. max-width: calc(100% - 78px);
  660. }
  661. .app-tip:before {
  662. content: ' ';
  663. width: 0;
  664. height: 0;
  665. border-color: inherit;
  666. position: absolute;
  667. top: -32px;
  668. right: 100px;
  669. border-width: 16px;
  670. border-style: solid;
  671. }
  672. .tip-content {
  673. display: block;
  674. white-space: nowrap;
  675. width: 100%;
  676. overflow: hidden;
  677. text-overflow: ellipsis;
  678. margin: 0 28px;
  679. font-size: 28px;
  680. }
  681. .btn-abs {
  682. position: absolute;
  683. top: 12px;
  684. right: 18px;
  685. }
  686. .form-body .app-share {
  687. padding-top: 12px;
  688. border-top: 1px solid #e2e2e2;
  689. margin-top: -20px;
  690. }
  691. .form-body .app-share .app-share-bg {
  692. position: relative;
  693. width: 310px;
  694. height: 360px;
  695. background-repeat: no-repeat;
  696. background-size: contain;
  697. background-position: center
  698. }
  699. .form-body .app-share .app-share-bg .title {
  700. width: 160px;
  701. height: 29px;
  702. line-height: 1;
  703. word-break: break-all;
  704. text-overflow: ellipsis;
  705. display: -webkit-box;
  706. -webkit-box-orient: vertical;
  707. -webkit-line-clamp: 2;
  708. overflow: hidden;
  709. }
  710. .form-body .app-share .app-share-bg .pic-image {
  711. background-repeat: no-repeat;
  712. background-position: 0 0;
  713. background-size: cover;
  714. width: 160px;
  715. height: 130px;
  716. }
  717. .cashier-tabs .el-tabs__header {
  718. padding: 0;
  719. height: 45px;
  720. line-height: 45px;
  721. /* background-color: #F5F7FA; */
  722. margin-bottom: 0;
  723. }
  724. .cashier-tabs .el-tabs__item {
  725. height: 43px;
  726. line-height: 43px;
  727. }
  728. .cashier-tabs .el-tabs__content {
  729. margin-top: 20px;
  730. }
  731. .form-body {
  732. background-color: #fff;
  733. padding: 20px 50% 20px 0;
  734. }
  735. .button-item {
  736. margin-bottom: 18px;
  737. padding: 9px 25px;
  738. }
  739. .form-body .item {
  740. width: 300px;
  741. margin-bottom: 50px;
  742. margin-right: 25px;
  743. }
  744. .item-img {
  745. height: 550px;
  746. padding: 25px 10px;
  747. border-radius: 30px;
  748. border: 1px solid #CCCCCC;
  749. background-color: #fff;
  750. }
  751. .item .el-form-item {
  752. width: 300px;
  753. margin: 20px auto;
  754. }
  755. .left-setting-menu {
  756. width: 260px;
  757. }
  758. .left-setting-menu .el-form-item {
  759. height: 60px;
  760. padding-left: 20px;
  761. display: flex;
  762. align-items: center;
  763. margin-bottom: 0;
  764. cursor: pointer;
  765. }
  766. .left-setting-menu .el-form-item .el-form-item__label {
  767. cursor: pointer;
  768. }
  769. .left-setting-menu .el-form-item.active {
  770. background-color: #F3F5F6;
  771. border-top-left-radius: 10px;
  772. width: 105%;
  773. border-bottom-left-radius: 10px;
  774. }
  775. .left-setting-menu .el-form-item .el-form-item__content {
  776. margin-left: 0 !important
  777. }
  778. .no-radius {
  779. border-top-left-radius: 0 !important;
  780. }
  781. .del-btn {
  782. position: absolute;
  783. right: -8px;
  784. top: -8px;
  785. padding: 4px 4px;
  786. }
  787. .reset {
  788. position: absolute;
  789. top: 3px;
  790. left: 90px;
  791. }
  792. .app-tip {
  793. position: absolute;
  794. right: 24px;
  795. top: 16px;
  796. height: 72px;
  797. line-height: 72px;
  798. max-width: calc(100% - 78px);
  799. }
  800. .app-tip:before {
  801. content: ' ';
  802. width: 0;
  803. height: 0;
  804. border-color: inherit;
  805. position: absolute;
  806. top: -32px;
  807. right: 100px;
  808. border-width: 16px;
  809. border-style: solid;
  810. }
  811. .tip-content {
  812. display: block;
  813. white-space: nowrap;
  814. width: 100%;
  815. overflow: hidden;
  816. text-overflow: ellipsis;
  817. margin: 0 28px;
  818. font-size: 28px;
  819. }
  820. </style>