shopdetail.vue 28 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001
  1. <template>
  2. <view class="shopdetail">
  3. <Header :title="title"></Header>
  4. <view class="" style="height: 94upx;"></view>
  5. <view class="shopdetail-content">
  6. <!-- 所属店铺 -->
  7. <view class="shop detail-list">
  8. <view class="menu">
  9. <view class="uni-list-cell">
  10. <view class="uni-list-cell-db">
  11. <picker
  12. class="selectlist"
  13. mode="selector"
  14. @change="changeStore"
  15. :value="storeIndex"
  16. :range="storeList"
  17. :disabled="storeDisable"
  18. range-key="name"
  19. >
  20. <view class="uni-input title">{{
  21. storeList[storeIndex].name
  22. }}</view>
  23. </picker>
  24. <image
  25. src="../../static/images/moreicon.png"
  26. class="more"
  27. ></image>
  28. </view>
  29. </view>
  30. </view>
  31. </view>
  32. <!-- 商品类型 -->
  33. <view class="shoptype detail-list noborder">
  34. <view class="menu">
  35. <view class="uni-list-cell">
  36. <view class="uni-list-cell-db">
  37. <picker
  38. @change="changeType"
  39. :value="typeIndex"
  40. :range="typeList"
  41. :disabled="typeDisabled"
  42. range-key="name"
  43. class="selectlist"
  44. >
  45. <view class="uni-input title">{{
  46. typeList[typeIndex].name
  47. }}</view>
  48. </picker>
  49. <image
  50. src="../../static/images/moreicon.png"
  51. class="more"
  52. ></image>
  53. </view>
  54. </view>
  55. </view>
  56. </view>
  57. <!-- 商品名称 -->
  58. <view class="shopname detail-list">
  59. <view class="menu" v-if="hasNameList === 1">
  60. <view class="uni-list-cell">
  61. <view class="uni-list-cell-db">
  62. <picker
  63. @change="changeShop"
  64. :value="shopIndex"
  65. :range="shopList"
  66. range-key="name"
  67. class="selectlist"
  68. >
  69. <view class="uni-input title">{{
  70. shopList[shopIndex].name
  71. }}</view>
  72. </picker>
  73. <image
  74. src="../../static/images/moreicon.png"
  75. class="more"
  76. ></image>
  77. </view>
  78. </view>
  79. </view>
  80. <view class="menu" v-if="hasNameList === 0">
  81. <input
  82. class="input-shopname"
  83. type="text"
  84. v-model="shopname"
  85. placeholder-style="color:#a2a8a8;font-size:30upx"
  86. placeholder="请输入商品名称"
  87. />
  88. </view>
  89. </view>
  90. <!-- 自定义分类 -->
  91. <view class="classify detail-list noborder">
  92. <view class="menu">
  93. <view class="title bigtitle">自定义分类</view>
  94. <view class="txt" @tap="toClassify">管理分类</view>
  95. </view>
  96. </view>
  97. <!-- 西线推荐 -->
  98. <view class="xiline detail-list">
  99. <view class="menu">
  100. <view class="uni-list-cell">
  101. <view class="uni-list-cell-db">
  102. <picker
  103. @change="changeClassify"
  104. :value="lineIndex"
  105. :range="lineList"
  106. :disabled="lineDidsable"
  107. range-key="name"
  108. class="selectlist"
  109. >
  110. <view class="uni-input title">{{
  111. lineList[lineIndex].name
  112. }}</view>
  113. </picker>
  114. <image
  115. src="../../static/images/moreicon.png"
  116. class="more"
  117. ></image>
  118. </view>
  119. </view>
  120. </view>
  121. </view>
  122. <!-- 账号限制 -->
  123. <view class="idastrict detail-list">
  124. <view class="menu">
  125. <view class="title astricttitle">账号限制</view>
  126. <switch :checked="showoperat" @change="Change" />
  127. </view>
  128. </view>
  129. <!-- 账号限制 -->
  130. <view class="detail-list operat" v-if="showoperat">
  131. <view class="menu">
  132. <view class="title">同一账号在</view>
  133. <view class="sub" @tap="subtractUser">-</view>
  134. <text class="num1">{{ num1 }}</text>
  135. <view class="add" @tap="addUser">+</view>
  136. <view class="txt">天内最多购买</view>
  137. <view class="sub" @tap="subtractDate">-</view
  138. ><text class="num2">{{ num2 }}</text
  139. ><view class="add" @tap="addDate">+</view><text class="unit">张</text>
  140. </view>
  141. </view>
  142. <!-- 卖价 -->
  143. <view class="price-warp" v-if="typeProperty === '0'">
  144. <view class="name">卖价:</view>
  145. <input
  146. class="price"
  147. type="text"
  148. v-model="price"
  149. placeholder="请输入卖价"
  150. />
  151. </view>
  152. <!-- 打折价 -->
  153. <view class="price-warp" v-if="typeProperty === '0'">
  154. <view class="name">划线价:</view>
  155. <input
  156. class="price"
  157. type="text"
  158. v-model="rateprice"
  159. placeholder="请输入划线价"
  160. />
  161. </view>
  162. <!-- 销售属性 -->
  163. <view class="property" v-if="typeProperty === 1">
  164. <view class="property-warp">
  165. <view class="title">销售属性</view>
  166. <view class="date">
  167. <view class="namebar">过期日期:</view>
  168. <view class="num">2020-07</view>
  169. </view>
  170. <view class="pattern">
  171. <view class="uni-list">
  172. <radio-group @change="radioChange">
  173. <label
  174. class="uni-list-cell uni-list-cell-pd pattern-item"
  175. v-for="(item, index) in items"
  176. :key="item.value"
  177. >
  178. <view class="checkth">
  179. <radio :value="item.value" :checked="index === current" />
  180. </view>
  181. <view class="txt">
  182. <text class="txt1"> {{ item.name }}</text>
  183. <text> {{ item.know }}</text>
  184. </view>
  185. </label>
  186. </radio-group>
  187. </view>
  188. </view>
  189. </view>
  190. </view>
  191. <!-- 商品库存 -->
  192. <view class="property" v-if="typeProperty === 1">
  193. <view class="property-warp">
  194. <view class="title">商品库存</view>
  195. <view class="pattern">
  196. <view class="uni-list">
  197. <radio-group @change="radioChange">
  198. <label
  199. class="uni-list-cell uni-list-cell-pd pattern-item"
  200. v-for="(item, index) in items"
  201. :key="item.value"
  202. >
  203. <view class="checkth">
  204. <radio :value="item.value" :checked="index === current" />
  205. </view>
  206. <view class="txt">
  207. <text class="txt1"> {{ item.name }}</text>
  208. <text> {{ item.know }}</text>
  209. </view>
  210. </label>
  211. </radio-group>
  212. </view>
  213. </view>
  214. </view>
  215. </view>
  216. <!-- 商品图标 -->
  217. <view class="shopicon">商品图标</view>
  218. <view class="iconcontent">
  219. <image class="shopLogo" :src="iconurl" v-if="iconurl"></image>
  220. <text class="icon" @tap="uploadImg">点击上传</text>
  221. <text class="per">{{ progress }}%</text>
  222. </view>
  223. <view class="shopicon">商品图册</view>
  224. <view class="uploading">
  225. <view class="item-warp" v-for="(item, index) in pickList" :key="index">
  226. <view class="img-warp">
  227. <image :src="item" class="item list"></image>
  228. <view class="delete">
  229. <image
  230. src="../../static/images/delete.png"
  231. class="delete-icon"
  232. @tap="deleteThisImg(index)"
  233. ></image>
  234. </view>
  235. </view>
  236. </view>
  237. <view class="item-warp">
  238. <image
  239. src="../../static/images/upload.png"
  240. class="item upload"
  241. @tap="uploadList"
  242. ></image>
  243. </view>
  244. </view>
  245. <!-- 购票须知 -->
  246. <view class="shopicon">商品描述(购票须知)</view>
  247. <view class="know">
  248. <view class="container">
  249. <editor
  250. id="editor"
  251. class="ql-container"
  252. :placeholder="placeholder"
  253. @input="saveTxt"
  254. @ready="onEditorReady"
  255. ></editor>
  256. </view>
  257. </view>
  258. <view class="btn" @tap="submitMesage">确认</view>
  259. <rf-loading v-if="loading"></rf-loading>
  260. </view>
  261. </view>
  262. </template>
  263. <script>
  264. let myCloud;
  265. import Header from '../components/header.vue';
  266. export default {
  267. components: {
  268. Header,
  269. },
  270. data() {
  271. return {
  272. loading: false,
  273. scenicId: uni.getStorageSync('scenicId'),
  274. title: '商品详情',
  275. num1: 1,
  276. num2: 10,
  277. showoperat: false,
  278. placeholder: '请输入内容...',
  279. mastKnow: '',
  280. storeList: [{ name: '所属店铺', id: '', type: '' }],
  281. storeIndex: 0,
  282. storeId: '',
  283. storeDisable: true,
  284. typeProperty: 1, // 判断所属店铺是否是自营店铺 1分销 0自营
  285. typeList: [{ name: '商品类型(请先选择所属店铺)', id: '' }],
  286. typeIndex: 0,
  287. typeId: '',
  288. typeDisabled: true,
  289. shopList: [{ name: '商品名称(请先选择商品类型)', id: '' }],
  290. shopIndex: 0,
  291. shopId: '',
  292. shopname: '',
  293. hasNameList: 0, // 判断是否有商品名称列表
  294. lineList: [{ name: '分类(请先选择所属商品)', id: '' }],
  295. lineIndex: 0,
  296. lineId: '',
  297. lineDidsable: true,
  298. // 图标上传
  299. progress: 0,
  300. iconurl: '',
  301. pickList: [],
  302. Icon: '',
  303. Imglist: [],
  304. price: 0.0,
  305. rateprice: 0.0,
  306. // -------------- 编辑分界线 ------------------------------------
  307. SHOPID: 0,
  308. shopData: {},
  309. items: [
  310. {
  311. value: 'USA',
  312. name: '有效期模式',
  313. know: '无需用户指定使用日,在过期时间前均可使用。'
  314. },
  315. {
  316. value: 'CHN',
  317. name: '使用旧模式',
  318. know: '用户购买时需选择游玩日,并在游玩日当天使用。',
  319. checked: 'true',
  320. },
  321. ],
  322. current: 0,
  323. };
  324. },
  325. onUnload() {
  326. uni.removeStorageSync('Id');
  327. },
  328. onLoad() {
  329. myCloud = uniCloud.init({
  330. provider: 'aliyun',
  331. spaceId: 'db8671a1-69bd-470d-ad59-ba927c88f4a4',
  332. clientSecret: '8nOzV70edtpCd0El6qce3g==',
  333. });
  334. this.getShopList();
  335. // ---------------------------------------------------
  336. this.SHOPID = uni.getStorageSync('Id');
  337. if (this.SHOPID) {
  338. this.getShopBuyId();
  339. }
  340. },
  341. methods: {
  342. // 单选
  343. radioChange: function (evt) {
  344. for (let i = 0; i < this.items.length; i++) {
  345. if (this.items[i].value === evt.target.value) {
  346. this.current = i;
  347. break;
  348. }
  349. }
  350. },
  351. // 获取单个商品信息
  352. async getShopBuyId() {
  353. if (!this.SHOPID) return;
  354. await this.$http
  355. .get('/goods/getById/' + this.SHOPID)
  356. .then(async (res) => {
  357. if (res.code === 200 && res.msg === 'OK') {
  358. this.shopData = res.data;
  359. this.getShopList();
  360. // 限制购票回显
  361. if (this.shopData.saleRule === '1') {
  362. let sale = JSON.parse(this.shopData.saleRuleJson);
  363. this.showoperat = true;
  364. this.num1 = sale.data.saleDay;
  365. this.num2 = sale.data.saleNum;
  366. } else {
  367. this.showoperat = false;
  368. }
  369. // 图标回显
  370. if (this.shopData.icon) {
  371. this.iconurl = this.shopData.icon;
  372. } else {
  373. this.iconurl = '';
  374. }
  375. }
  376. });
  377. },
  378. // 初始化编辑器
  379. onEditorReady() {
  380. uni
  381. .createSelectorQuery()
  382. .select('#editor')
  383. .context((res) => {
  384. this.editorCtx = res.context;
  385. this.editorCtx.setContents({
  386. html: this.shopData.describ, //this.EditGoodsDetail.content为赋值内容。
  387. });
  388. })
  389. .exec();
  390. },
  391. // -----------------------------------------------------------------
  392. // 跳转到管理分类页面
  393. toClassify() {
  394. if (this.storeId) {
  395. uni.setStorageSync('shopid', this.storeId);
  396. this.$mRouter.push({ route: '/pages/shop/classify' });
  397. } else {
  398. this.$mHelper.toast('请选择所属店铺后再进行自定义分类管理');
  399. }
  400. },
  401. // 选择店铺
  402. changeStore(e) {
  403. this.storeIndex = e.detail.value;
  404. this.storeId = this.storeList[this.storeIndex].id;
  405. this.typeProperty = this.storeList[this.storeIndex].type;
  406. // 未选择商铺不能进行商铺类型选择
  407. if (this.storeId != '') {
  408. this.getType();
  409. this.getLine(); // 判断是否有商品名称列表
  410. }
  411. },
  412. // 选择商品类型
  413. changeType(e) {
  414. this.typeIndex = e.detail.value;
  415. this.typeId = this.typeList[this.typeIndex].id;
  416. if (this.typeId != '') {
  417. this.getShopName();
  418. }
  419. },
  420. // 商品名称选择
  421. changeShop(e) {
  422. this.shopIndex = e.detail.value;
  423. this.shopId = this.shopList[this.shopIndex].id;
  424. },
  425. // 分类
  426. changeClassify(e) {
  427. this.lineIndex = e.detail.value;
  428. this.lineId = this.lineList[this.lineIndex].id;
  429. },
  430. // 所属店铺
  431. async getShopList() {
  432. this.storeList = [{ name: '所属店铺', id: '', type: '' }];
  433. await this.$http
  434. .get('/shop/getList', {
  435. mid: this.scenicId,
  436. })
  437. .then(async (res) => {
  438. if (res.data) {
  439. console.log(res);
  440. let arr = [];
  441. res.data.forEach((element) => {
  442. arr.push({
  443. name: element.name,
  444. id: element.id,
  445. type: element.shopFrom,
  446. });
  447. });
  448. this.storeList = this.storeList.concat(arr);
  449. this.storeDisable = false;
  450. // 所属店铺回显
  451. if (this.shopData.shopId) {
  452. this.storeList.forEach((item, index) => {
  453. if (this.shopData.shopId === item.id) {
  454. this.storeIndex = index;
  455. }
  456. });
  457. this.storeId = this.storeList[this.storeIndex].id;
  458. // 商品类型回显
  459. this.getType();
  460. this.getLine();
  461. }
  462. }
  463. });
  464. },
  465. // 商品类型
  466. async getType() {
  467. this.typeList = [{ name: '商品类型(请先选择所属店铺)', id: '' }];
  468. this.$http
  469. .get('/type/getTypeListByShopId', {
  470. id: this.storeId,
  471. })
  472. .then((res) => {
  473. let arr = [];
  474. res.data[0].children.forEach((element) => {
  475. arr.push({ name: element.name, id: element.id });
  476. });
  477. this.typeList = this.typeList.concat(arr);
  478. this.typeDisabled = false;
  479. // 商品类型回显
  480. if (this.shopData.typeId) {
  481. this.typeList.forEach((item, index) => {
  482. if (this.shopData.typeId === item.id) {
  483. this.typeIndex = index;
  484. }
  485. });
  486. this.typeId = this.typeList[this.typeIndex].id;
  487. this.shopname = this.shopData.name;
  488. }
  489. });
  490. },
  491. // 商品名称
  492. async getShopName() {
  493. this.shopList = [{ name: '商品名称(请先选择商品类型)', id: '' }];
  494. await this.$http
  495. .get('/goods/getTicketGoods', {
  496. typeId: this.typeId,
  497. shopId: this.storeId,
  498. })
  499. .then(async (res) => {
  500. let arr = [];
  501. res.data.forEach((element) => {
  502. arr.push({ name: element.ticket_name, id: element.ticket_no });
  503. });
  504. this.shopList = this.shopList.concat(arr);
  505. });
  506. },
  507. // 线路分配
  508. async getLine() {
  509. await this.$http
  510. .get('/goods/getCustomGroupList', {
  511. shopId: this.storeId,
  512. })
  513. .then(async (res) => {
  514. let arr = [];
  515. this.hasNameList = +res.data.shopFrom;
  516. res.data.customGroupList.forEach((element) => {
  517. arr.push({ name: element.name, id: element.id });
  518. });
  519. this.lineList = this.lineList.concat(arr);
  520. this.lineDidsable = false;
  521. // 可选择商品名称回显
  522. if (this.shopData.name) {
  523. this.getShopName();
  524. this.shopList.forEach((item, index) => {
  525. if (this.shopData.name === item.name) {
  526. this.shopIndex = index;
  527. } else {
  528. this.shopIndex = 0;
  529. }
  530. });
  531. this.shopId = this.shopList[this.shopIndex].id;
  532. }
  533. // 分类回显
  534. if (this.shopData.customGroupId) {
  535. this.lineList.forEach((item, index) => {
  536. if (this.shopData.customGroupId === item.id) {
  537. this.lineIndex = index;
  538. }
  539. });
  540. this.lineId = this.lineList[this.lineIndex].id;
  541. }
  542. });
  543. },
  544. // 账号限制
  545. Change(e) {
  546. this.showoperat = e.detail.value;
  547. },
  548. subtractUser() {
  549. if (this.num1 <= 1) {
  550. this.$mHelper.toast('最少一天');
  551. return;
  552. } else {
  553. this.num1--;
  554. }
  555. },
  556. addUser() {
  557. this.num1++;
  558. },
  559. subtractDate() {
  560. if (this.num2 <= 1) {
  561. this.$mHelper.toast('最少一张票');
  562. return;
  563. } else {
  564. this.num2--;
  565. }
  566. },
  567. addDate() {
  568. this.num2++;
  569. },
  570. // 图标上传
  571. uploadImg() {
  572. let _self = this;
  573. uni.chooseImage({
  574. count: 1,
  575. sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
  576. sourceType: ['album'], // camera 使用相机 album 从相册中选
  577. success: function (res) {
  578. // 成功则返回图片的本地文件路径列表 tempFilePaths
  579. _self.iconurl = res.tempFilePaths[0];
  580. myCloud.uploadFile({
  581. url: 'http://192.168.100.135:83/merch/common/upload/oss',
  582. filePath: _self.iconurl, // 要上传的文件对象
  583. cloudPath: _self.iconurl, // 要上传的文件对象
  584. name: 'file',
  585. success: (res) => {
  586. if (res.fileID) {
  587. _self.Icon = res.fileID;
  588. }
  589. },
  590. onUploadProgress: function (progressEvent) {
  591. _self.progress = Math.round(
  592. (progressEvent.loaded * 100) / progressEvent.total
  593. );
  594. },
  595. });
  596. },
  597. });
  598. },
  599. // 图册上传
  600. uploadList() {
  601. let _self = this;
  602. uni.chooseImage({
  603. count: 6,
  604. sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
  605. sourceType: ['album'], // camera 使用相机 album 从相册中选
  606. success: function (res) {
  607. // 成功则返回图片的本地文件路径列表 tempFilePaths
  608. let img = [];
  609. img.push(res.tempFilePaths);
  610. if (_self.pickList.length >= 6) {
  611. _self.$mHelper.toast('最多只可上传6张图片');
  612. } else {
  613. _self.pickList = _self.pickList.concat(img);
  614. // for (let i = 0; i < _self.pickList.length; i++) {
  615. // let element = _self.pickList[i];
  616. // myCloud.uploadFile({
  617. // url: 'http://192.168.100.135:83/merch/common/upload/oss',
  618. // filePath: element, // 要上传的文件对象
  619. // cloudPath: element,
  620. // name: 'file',
  621. // onUploadProgress: function (progressEvent) {
  622. // // 上传进度回调
  623. // let percentCompleted = Math.round(
  624. // (progressEvent.loaded * 100) / progressEvent.total
  625. // );
  626. // },
  627. // success: (res) => {
  628. // },
  629. // });
  630. // }
  631. }
  632. },
  633. });
  634. },
  635. // 删除图册中的图片
  636. deleteThisImg(index) {
  637. this.pickList.splice(index, 1);
  638. },
  639. // 富文本失去焦点保存内容
  640. saveTxt(e) {
  641. this.mastKnow = e.detail.html;
  642. },
  643. // 内容提交
  644. submitMesage() {
  645. let _this = this;
  646. this.loading = true;
  647. let astrictDate = {};
  648. // 判断是否限制账号购买
  649. if (this.showoperat) {
  650. this.showoperat = '1';
  651. astrictDate = {
  652. data: {
  653. saleDay: this.num1,
  654. saleNum: this.num2,
  655. },
  656. };
  657. } else {
  658. this.showoperat = '0';
  659. astrictDate = '';
  660. }
  661. // 判断是否可以自定义商品名称
  662. let name = '';
  663. if (this.shopList.length === 1) {
  664. name = this.shopname;
  665. } else {
  666. name = this.shopList[this.shopIndex].id;
  667. }
  668. if (!this.storeId) {
  669. this.$mHelper.toast('请选择所属商铺');
  670. this.loading = false;
  671. return;
  672. }
  673. if (!this.typeId) {
  674. this.$mHelper.toast('请选择商品类型');
  675. this.loading = false;
  676. return;
  677. }
  678. if (!name) {
  679. this.$mHelper.toast('请选择商品名称或者输入商品名称');
  680. this.loading = false;
  681. return;
  682. }
  683. this.$http
  684. .post('/goods/add', {
  685. id: this.shopData.id || '',
  686. mid: this.scenicId,
  687. shopId: this.storeId,
  688. typeId: this.typeId,
  689. name: name,
  690. customGroupId: this.lineId,
  691. saleRule: this.showoperat,
  692. saleRuleJson: JSON.stringify(astrictDate),
  693. describ: this.mastKnow,
  694. icon: this.Icon || '',
  695. del: this.shopData.del || '',
  696. upDown: this.shopData.upDown || '',
  697. })
  698. .then((res) => {
  699. if (res.code === 200 && res.msg === 'OK') {
  700. if (this.shopData.id) {
  701. this.$mHelper.toast('保存成功,请联系管理员进行审核');
  702. } else {
  703. this.$mHelper.toast('添加成功');
  704. }
  705. this.loading = false;
  706. setTimeout(() => {
  707. this.$mRouter.back();
  708. }, 500);
  709. }
  710. });
  711. },
  712. },
  713. };
  714. </script>
  715. <style lang="scss" scoped>
  716. .shopdetail {
  717. .shopdetail-content {
  718. padding: 24upx 0 0upx;
  719. .detail-list {
  720. padding: 0 33upx;
  721. background-color: #ffffff;
  722. border-bottom: 1px solid #e7e7e7;
  723. box-sizing: border-box;
  724. .menu {
  725. display: flex;
  726. justify-content: space-between;
  727. align-items: center;
  728. height: 93upx;
  729. .uni-list-cell {
  730. width: 100%;
  731. display: flex;
  732. align-items: center;
  733. height: 93upx;
  734. .uni-list-cell-db {
  735. height: 100%;
  736. display: flex;
  737. justify-content: space-between;
  738. align-items: center;
  739. .selectlist {
  740. width: 100%;
  741. }
  742. }
  743. }
  744. .title {
  745. font-size: 30upx;
  746. color: #a3a8a8;
  747. }
  748. .more {
  749. width: 15upx;
  750. height: 26upx;
  751. }
  752. .bigtitle {
  753. font-size: 34upx;
  754. color: #232828;
  755. font-weight: 700;
  756. }
  757. .input-shopname {
  758. width: 100%;
  759. height: 100%;
  760. }
  761. .txt {
  762. color: #a95cff;
  763. font-weight: 700;
  764. }
  765. .linetitle {
  766. color: #232828;
  767. }
  768. .astricttitle {
  769. font-weight: 700;
  770. font-size: 32upx;
  771. color: #232828;
  772. }
  773. }
  774. }
  775. .noborder {
  776. border-bottom: none;
  777. }
  778. .classify {
  779. background-color: #f9f9f9;
  780. }
  781. .idastrict {
  782. background-color: #fff;
  783. }
  784. .operat {
  785. background-color: #f9f9f9;
  786. .menu {
  787. .title {
  788. font-size: 28upx;
  789. color: #232828;
  790. }
  791. .sub,
  792. .add {
  793. width: 44upx;
  794. height: 44upx;
  795. border-radius: 50%;
  796. border: 1px solid #b4b8b7;
  797. color: #b4b8b7;
  798. text-align: center;
  799. line-height: 40upx;
  800. font-weight: 700;
  801. }
  802. .txt {
  803. color: #232828;
  804. font-weight: normal;
  805. }
  806. .unit {
  807. color: #232828;
  808. }
  809. }
  810. }
  811. .shopicon {
  812. height: 100upx;
  813. padding: 0 33upx;
  814. font-size: 32upx;
  815. color: #232828;
  816. font-weight: 700;
  817. line-height: 100upx;
  818. }
  819. .iconcontent {
  820. padding: 25upx 33upx;
  821. background-color: #f9f9f9;
  822. display: flex;
  823. align-items: center;
  824. .icon {
  825. display: inline-block;
  826. height: 56upx;
  827. font-size: 28upx;
  828. color: #a3a8a8;
  829. border-radius: 50%;
  830. margin-left: 20upx;
  831. border: 1px dashed #ccc;
  832. border-radius: 5%;
  833. text-align: center;
  834. line-height: 56upx;
  835. padding: 0 15upx;
  836. }
  837. .shopLogo {
  838. width: 56upx;
  839. height: 56upx;
  840. border-radius: 50%;
  841. }
  842. .per {
  843. margin-left: 50upx;
  844. color: #a3a8a8;
  845. }
  846. }
  847. .uploading {
  848. padding: 25upx 33upx;
  849. display: flex;
  850. align-items: center;
  851. flex-wrap: wrap;
  852. background-color: #fff;
  853. .item-warp {
  854. border-radius: 17upx;
  855. margin-right: 15upx;
  856. margin-bottom: 15upx;
  857. box-sizing: border-box;
  858. overflow: hidden;
  859. .img-warp {
  860. position: relative;
  861. }
  862. .item {
  863. width: 160upx;
  864. height: 160upx;
  865. }
  866. &:nth-child(4) {
  867. margin-right: 0;
  868. }
  869. .delete {
  870. position: absolute;
  871. right: -35upx;
  872. top: -35upx;
  873. width: 70upx;
  874. height: 70upx;
  875. border-radius: 50%;
  876. background-color: #8064f7;
  877. .delete-icon {
  878. position: absolute;
  879. left: 13upx;
  880. bottom: 13upx;
  881. width: 14upx;
  882. height: 14upx;
  883. }
  884. }
  885. }
  886. }
  887. .know {
  888. padding: 24upx 33upx;
  889. background-color: #fff;
  890. #editor {
  891. width: 100%;
  892. height: 300px;
  893. }
  894. }
  895. .btn {
  896. width: 100%;
  897. height: 98upx;
  898. color: #ffffff;
  899. font-size: 32upx;
  900. text-align: center;
  901. line-height: 98upx;
  902. background-color: #8064f7;
  903. margin-top: 27upx;
  904. letter-spacing: 2upx;
  905. }
  906. .price-warp {
  907. padding: 0 33upx;
  908. background-color: #ffffff;
  909. border-bottom: 1px solid #e7e7e7;
  910. box-sizing: border-box;
  911. display: flex;
  912. align-items: center;
  913. height: 93upx;
  914. .name {
  915. font-size: 32upx;
  916. color: #a3a8a8;
  917. }
  918. .price {
  919. flex: 1;
  920. }
  921. }
  922. .property {
  923. .property-warp {
  924. .title {
  925. padding: 20upx 33upx;
  926. font-size: 34rpx;
  927. color: #232828;
  928. font-weight: 700;
  929. }
  930. .date {
  931. padding: 0 33upx;
  932. display: flex;
  933. align-items: center;
  934. border-bottom: 1px solid #e7e7e7;
  935. background-color: #fff;
  936. height: 93upx;
  937. .namebar {
  938. font-size: 30upx;
  939. line-height: 93upx;
  940. color: #a3a8a8;
  941. }
  942. .num {
  943. flex: 1;
  944. height: 100%;
  945. line-height: 93upx;
  946. }
  947. }
  948. }
  949. }
  950. .pattern {
  951. .pattern-item {
  952. display: flex;
  953. border-bottom: 1px solid #e7e7e7;
  954. .checkth {
  955. width: 100upx;
  956. }
  957. .txt {
  958. flex: 1;
  959. display: flex;
  960. justify-content: center;
  961. flex-direction: column;
  962. color: #a3a8a8;
  963. .txt1 {
  964. color: #232828;
  965. }
  966. }
  967. }
  968. }
  969. }
  970. }
  971. </style>