deploy.vue 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995
  1. <template>
  2. <view class="">
  3. <view class="step">
  4. <uni-steps active-color="#07c160" :options="options" :active="2"></uni-steps>
  5. </view>
  6. <view style="height: 130rpx;"></view>
  7. <view class="home">
  8. <form @submit="save">
  9. <view class="box-pack-between item flex-y-center border-b">
  10. <text>基本信息</text>
  11. </view>
  12. <view class="bgf" style="padding: 0 30rpx;">
  13. <view class="box-pack-between list flex-y-center border-b ft28">
  14. <text>小程序APPID</text>
  15. <view @click="copy(info.appid)">{{info.appid||''}} <text class="ft26"
  16. style="color:#3387FF;margin-left: 20rpx;">复制</text></view>
  17. </view>
  18. <view class="bgf">
  19. <view class="box-pack-between list flex-y-center br">
  20. <text class="ft28">小程序名称</text>
  21. <text class="setup_a" v-if="!info.nickname" @click="setup(1)">设置</text>
  22. <view class="flex-grow-1 tr ft28" v-else>
  23. {{info.nickname||''}}
  24. </view>
  25. </view>
  26. </view>
  27. <view class="box-pack-between border-b header-version flex-y-center">
  28. <view class="header-img ft28">
  29. 小程序头像
  30. <view class="ft22">
  31. (最大宽度 500px,最大高度 500px,不超过2M,如果头像过大,加载会慢点)
  32. <view style="margin-top: 20rpx;color: red;">
  33. 一年内可申请修改{{info.head_image_info.modify_quota}}次
  34. </view>
  35. <view style="color: red;">
  36. 今年还可修改{{info.head_image_info.modify_quota-info.head_image_info.modify_used_count}}次
  37. </view>
  38. </view>
  39. </view>
  40. <text class="setup_a" v-if="!xcx_logo" @click="setup(3)">设置</text>
  41. <view class="home-img" v-else @click="setup(3)">
  42. <image :src="xcx_logo" class="home-img-icon"></image>
  43. </view>
  44. </view>
  45. <view class="bgf">
  46. <view class="box-pack-between list flex-y-center br" style="height: auto;padding: 20rpx 0;">
  47. <view class="ft28" style="min-width: 200rpx;">
  48. 小程序简介
  49. <view class="modify_quota">
  50. 一年内可申请修改{{info.signature_info.modify_quota}}次
  51. </view>
  52. <view class="modify_quota">
  53. 今年还可修改{{info.signature_info.modify_quota-info.signature_info.modify_used_count}}次
  54. </view>
  55. </view>
  56. <view>
  57. <view class="setup_a" style="text-align: right;"
  58. v-if="(info.signature_info.modify_quota-info.signature_info.modify_used_count)>0"
  59. @click="setup(2)">设置</view>
  60. <view class="flex-grow-1 break tr ft28" @click="setup(2)">
  61. {{info.signature_info.signature}}
  62. </view>
  63. </view>
  64. </view>
  65. </view>
  66. <!-- <view class="flex-center pof">
  67. <button formType="submit" class="flex-center login-btn">提交审核</button>
  68. </view> -->
  69. </view>
  70. </form>
  71. </view>
  72. <view class="home">
  73. <view class="box-pack-between flex-y-center border-b itemTitle">
  74. <view class="">
  75. <text>服务类目</text>
  76. <view class="ft24">
  77. (已添加{{category.length}}个,最多5个,一个月只能修改5次)
  78. </view>
  79. </view>
  80. <view class="deploy-add flex-center ft26" @click="open" hover="true" hover-class="detail-hover">
  81. 添加类目
  82. </view>
  83. </view>
  84. <view class="bgf" style="padding: 0 30rpx;">
  85. <template v-for="(item,index) of category">
  86. <view class="list flex flex-y-center" style="height: auto;" :key='index'>
  87. <text class="ft28" style="margin-right: 10rpx;">{{item.first_name}}>{{item.second_name}}</text>
  88. <text class="setup_a" style="min-width: 120rpx;">
  89. {{item.audit_status==1? '审核中':item.audit_status==2? '审核不通过' :item.audit_status==3? '审核通过':''}}
  90. </text>
  91. <view class="iconfont iconshanjian item-del" style="margin-left: 10rpx;"
  92. @click.stop="deleteItem(index)" v-if="item.audit_status != 3"></view>
  93. </view>
  94. <view class="reason" v-if="item.audit_status == 2">{{item.audit_reason}}</view>
  95. <view class="br"></view>
  96. </template>
  97. </view>
  98. </view>
  99. <view class="home">
  100. <view class="box-pack-between item flex-y-center">
  101. <text>体验版成员</text>
  102. <button class="deploy-add flex-center" hover="true" hover-class="detail-hover"
  103. @click="setup(4)">新增</button>
  104. </view>
  105. <view class="deploy-list" v-if="deplist.length>0">
  106. <view class="item-bg">
  107. <view class="box-pack-between mar64 flex-y-center" v-for="(item,index) of deplist" :key='index'>
  108. <view class="flex-y-center flex-grow-1 pdr-20">
  109. <view class="deploy-list-nick text-1">
  110. {{item.wechatid}}
  111. </view>
  112. </view>
  113. <view class="iconfont iconshanjian item-del" @click="del(index)"></view>
  114. </view>
  115. </view>
  116. </view>
  117. </view>
  118. <view class="home">
  119. <view class="box-pack-between item flex-y-center">
  120. <text>服务器域名</text>
  121. <button class="deploy-add flex-center" hover="true" hover-class="detail-hover"
  122. @click="setup(5)">设置</button>
  123. </view>
  124. <view class="flex-y-center box-pack-between ft28 border-b pd2-3">
  125. <view class="word flex-grow-0">
  126. 服务器域名
  127. </view>
  128. <view class="qr_link flex-grow-1 tr">
  129. {{info.fwq_url||''}}
  130. </view>
  131. </view>
  132. </view>
  133. <view class="home">
  134. <view class="box-pack-between item flex-y-center">
  135. <text>业务域名</text>
  136. <button class="deploy-add flex-center" hover="true" hover-class="detail-hover"
  137. @click="setup(6)">设置</button>
  138. </view>
  139. <view class="flex-y-center box-pack-between ft28 border-b pd2-3">
  140. <view class="word flex-grow-0">
  141. 业务域名
  142. </view>
  143. <view class="qr_link flex-grow-1 tr">
  144. {{info.yw_url||''}}
  145. </view>
  146. </view>
  147. </view>
  148. <view class="home">
  149. <view class="box-pack-between item flex-y-center pd20" style="height: auto;">
  150. <view class="">
  151. <text>二维码规则配置 <text class="ft26" style="color: #999999;">(小程序发布上线之后再配置)</text>
  152. </text>
  153. </view>
  154. <view class="flex">
  155. <!-- -->
  156. <block v-if="info.file==1">
  157. <!-- <button style="min-width:170rpx;" class="deploy-add flex-center" hover="true"
  158. hover-class="detail-hover" @click="ConfigRule">配置规则</button> -->
  159. <button style="min-width:170rpx;" class="deploy-add flex-center" hover="true"
  160. hover-class="detail-hover" @click="AppendRule">配置规则</button>
  161. </block>
  162. <button v-else class="deploy-add flex-center" hover="true" style="min-width:170rpx;"
  163. hover-class="detail-hover" @click="qrcodejumpdownload">上传文件</button>
  164. </view>
  165. </view>
  166. <view class="flex-y-center box-pack-between ft28 border-b pd2-3" v-for="(item,index) of linkArr"
  167. :key='index'>
  168. <view class="word">
  169. <view class="qr_link">
  170. 地址:{{item.prefix}}
  171. </view>
  172. <view class="qr_link">
  173. 路径:{{item.path}}
  174. </view>
  175. </view>
  176. <view class="iconfont iconshanjian item-del" @click="DelRule(index)"></view>
  177. </view>
  178. </view>
  179. <uni-popup ref="uniScroll" type="bottom">
  180. <uni-scroll :Prov_arr="Prov_arr" @select="select"></uni-scroll>
  181. </uni-popup>
  182. <uni-popup ref="popup" type="center">
  183. <view class="model">
  184. <view v-if="type==3">
  185. <view class="model-refund-title ft28">
  186. 小程序头像
  187. </view>
  188. <view class="box-pack-between flex-y-center" style="padding: 0 40rpx;">
  189. <view class="home-img" @click="uploadFile" data-type='1'>
  190. <image class="home-img-icon" :src="URL+xcx_logo"></image>
  191. </view>
  192. <view class="home-upload flex-center" @click="uploadFile" data-type='1'>上传文件</view>
  193. </view>
  194. <view class="tips">
  195. 新头像不允许涉及政治敏感与色情;
  196. 图片格式必须为:png,bmp,jpeg,jpg,gif;不可大于2M;建议使用png格式图片,以保持最佳效果;建议图片尺寸为144px*144px
  197. </view>
  198. <view class="flex-y-center model-refund-btn">
  199. <view class="flex-grow-1 flex-center cancel ft26" @click="cancel">
  200. 取消
  201. </view>
  202. <button hover-class="none" @click="saveImg" class="flex-grow-1 flex-center submit ft28">
  203. 确定
  204. </button>
  205. </view>
  206. </view>
  207. <block v-else>
  208. <form @submit="saveName">
  209. <view class="model-refund-title ft28">
  210. {{type==1?'小程序名称':type==2?'小程序简介':type==4?'添加体验者':type==5?'服务器域名':type == 6?'业务域名':''}}
  211. </view>
  212. <view style="padding: 20rpx;">
  213. <view class="amount-input">
  214. <textarea v-if="type==1" type="text" maxlength="15" auto-height="true" name="nickname"
  215. placeholder="请输入小程序名称" />
  216. <textarea v-if="type==2" type="text"
  217. :value="info.signature_info.signature || signature_info" auto-height="true"
  218. name="signature" placeholder="请输入小程序简介" />
  219. <textarea v-if="type==4" type="text" auto-height="true" name="wechatid"
  220. placeholder="请添加体验者" />
  221. <textarea v-if="type==5" type="text" :value="info.fwq_url || URL_DEF || ''"
  222. auto-height="true" name="fwq_url" placeholder="请添加服务器域名" />
  223. <textarea v-if="type==6" type="text" :value="info.yewu_url || URL || ''"
  224. auto-height="true" name="yw_url" placeholder="请添加业务域名" />
  225. </view>
  226. </view>
  227. <view class="tips" v-if="type!=4">
  228. {{type==1?'Tip:小程序名称可以由中文、数字、英文、空格及部分特殊符号组成。长度在4-30个字符之间,一个中文字等于2个字符,名称设置完成不可更改,起名请谨慎。':
  229. type==2?'●功能介绍长度不超过120个字符,一个中文字等于2个字符,请确认介绍内容不含国家相关法律法规禁止内容':
  230. type==5?'设置小程序服务器地址,无需加https前缀,但域名必须可以通过https访问,多个使用;隔开':''}}
  231. </view>
  232. <view class="flex-y-center model-refund-btn">
  233. <view class="flex-grow-1 flex-center cancel ft26" @click="cancel">
  234. 取消
  235. </view>
  236. <button hover-class="none" form-type="submit" class="flex-grow-1 flex-center submit ft28">
  237. 确定
  238. </button>
  239. </view>
  240. </form>
  241. </block>
  242. </view>
  243. </uni-popup>
  244. </view>
  245. </template>
  246. <script>
  247. import optionsData from './data.js'
  248. import uniScroll from '../components/uni-scroll/uni-scroll-cate.vue'
  249. export default {
  250. components: {
  251. uniScroll,
  252. },
  253. data() {
  254. return {
  255. URL: getApp().globalData.URL,
  256. URL_DEF: "",
  257. info: null,
  258. xcx_logo: '',
  259. type: 1,
  260. category: [],
  261. Prov_arr: [],
  262. deplist: [],
  263. linkArr: [],
  264. signature_info: "智慧经营系统,会员积分管理,DIY模块化,积分商城,无痕赋能。",
  265. options: optionsData.options
  266. }
  267. },
  268. onLoad() {
  269. this.wechat_info();
  270. this.wechat_category();
  271. this.wechat_firstcategory();
  272. this.listMember();
  273. this.ewmguizhe();
  274. this.URL_DEF = this.URL ? this.URL.split('//')[1] : ''
  275. },
  276. methods: {
  277. // 删除类目
  278. deleteItem(index) {
  279. console.log("lll")
  280. let {
  281. first,
  282. second,
  283. second_name,
  284. audit_status
  285. } = this.category[index];
  286. if (audit_status == 3) {
  287. return false
  288. }
  289. uni.showModal({
  290. title: '提示',
  291. content: `确定要删除${second_name}类目吗?`,
  292. showCancel: true,
  293. cancelText: '取消',
  294. confirmText: '确定',
  295. success: res => {
  296. if (res.confirm) {
  297. this.request({
  298. url: 'setting/delcategory',
  299. data: {
  300. admin_id: uni.getStorageSync("admin_id"),
  301. first,
  302. second,
  303. },
  304. }).then(res => {
  305. console.log(res, "res")
  306. if (res.code === "200") {
  307. uni.showToast({
  308. title: res.message,
  309. icon: 'none'
  310. })
  311. setTimeout(() => {
  312. this.wechat_category();
  313. }, 2000)
  314. }
  315. });
  316. }
  317. },
  318. fail: () => {},
  319. complete: () => {}
  320. });
  321. },
  322. // 获取分类
  323. select(e) {
  324. console.log(e)
  325. // this.Mcc = e;
  326. let {
  327. code1,
  328. code2,
  329. special_license_pic,
  330. zzzs_name,
  331. } = e;
  332. this.request({
  333. url: 'setting/addcategory',
  334. data: {
  335. admin_id: uni.getStorageSync("admin_id"),
  336. code1,
  337. code2,
  338. special_license_pic,
  339. zzzs_name,
  340. },
  341. }).then(res => {
  342. console.log(res, "res")
  343. if (res.code === "200") {
  344. uni.showToast({
  345. title: res.message,
  346. icon: 'none'
  347. })
  348. setTimeout(() => {
  349. this.wechat_category();
  350. }, 2000)
  351. }
  352. });
  353. },
  354. open(e) {
  355. this.$refs.uniScroll.open();
  356. },
  357. cancel() {
  358. this.$refs.popup.close();
  359. },
  360. setup(type) {
  361. this.type = type;
  362. if (type == 2 && this.info.signature_info.modify_quota - this.info.signature_info.modify_used_count <=
  363. 0) {
  364. return
  365. }
  366. if (type == 3 && this.info.head_image_info.modify_quota - this.info.head_image_info.modify_used_count <=
  367. 0) {
  368. return
  369. }
  370. this.$refs.popup.open();
  371. },
  372. // 获取一级类目
  373. wechat_firstcategory() {
  374. this.request({
  375. url: 'setting/wechat_firstcategory',
  376. data: {
  377. admin_id: uni.getStorageSync("admin_id"),
  378. },
  379. }).then(res => {
  380. console.log(res, "res")
  381. if (res.code === "200") {
  382. this.Prov_arr = res.data;
  383. }
  384. });
  385. },
  386. // 获取已设置类目
  387. wechat_category() {
  388. this.request({
  389. url: 'setting/wechat_category',
  390. data: {
  391. admin_id: uni.getStorageSync("admin_id"),
  392. },
  393. }).then(res => {
  394. console.log(res, "res")
  395. if (res.code === "200") {
  396. this.category = res.data;
  397. }
  398. });
  399. },
  400. // 获取基础信息
  401. wechat_info() {
  402. this.request({
  403. url: 'setting/wechat_info',
  404. data: {
  405. admin_id: uni.getStorageSync("admin_id"),
  406. },
  407. }).then(res => {
  408. console.log(res, "wechat_info")
  409. if (res.code === "200") {
  410. this.info = res.data;
  411. this.xcx_logo = res.data.head_image_info.head_image_url;
  412. }
  413. });
  414. },
  415. // 设置头像
  416. saveImg(e) {
  417. this.request({
  418. url: 'setting/modifyheadimage',
  419. data: {
  420. admin_id: uni.getStorageSync("admin_id"),
  421. license_pic: this.xcx_logo,
  422. },
  423. }).then(res => {
  424. console.log(res, "res")
  425. if (res.code === "200") {
  426. this.$refs.popup.close();
  427. uni.showToast({
  428. title: res.message,
  429. icon: 'none'
  430. })
  431. setTimeout(() => {
  432. this.wechat_info()
  433. }, 2000)
  434. }
  435. });
  436. },
  437. // 设置名称/简介/体验者
  438. saveName(e) {
  439. console.log(e)
  440. let url, data = {
  441. admin_id: uni.getStorageSync("admin_id"),
  442. };
  443. if (this.type == 1) {
  444. url = 'setting/setnickname';
  445. data.nickname = e.detail.value.nickname;
  446. }
  447. if (this.type == 2) {
  448. url = 'setting/modifysignature';
  449. data.signature = e.detail.value.signature;
  450. }
  451. if (this.type == 4) {
  452. url = 'setting/bindMember';
  453. data.wechatid = e.detail.value.wechatid;
  454. }
  455. if (this.type == 5) {
  456. url = 'setting/modify_domain';
  457. data.fwq_url = e.detail.value.fwq_url;
  458. }
  459. if (this.type == 6) {
  460. url = 'setting/setBusinessDomain';
  461. data.ywurl = e.detail.value.yw_url;
  462. }
  463. this.request({
  464. url,
  465. data,
  466. }).then(res => {
  467. console.log(res, "res")
  468. if (res.code === "200") {
  469. uni.showToast({
  470. title: res.message,
  471. icon: 'none'
  472. })
  473. this.$refs.popup.close();
  474. setTimeout(() => {
  475. this.type == 4 ? this.listMember() : this.wechat_info();
  476. }, 2000)
  477. }
  478. });
  479. },
  480. uploadFile(e) {
  481. var type = e.currentTarget.dataset.type,
  482. url = type == 3 ? "setting/logo_upload" : "setting/upload";
  483. uni.chooseImage({
  484. success: (res) => {
  485. res.tempFilePaths.forEach((v, i) => {
  486. console.log(v)
  487. this.Upload({
  488. url: url,
  489. data: {
  490. url: v,
  491. admin_id: uni.getStorageSync("admin_id"),
  492. }
  493. }).then(res => {
  494. console.log(res, "res")
  495. type == 1 ? (this.xcx_logo = res.src) :
  496. type == 2 ? (this.special_license_pic = res.src) :
  497. type == 3 ? (this.app_logo = res.src) : '';
  498. }).catch({});
  499. })
  500. }
  501. });
  502. },
  503. // 删除体验者
  504. del(index) {
  505. uni.showModal({
  506. title: '提示',
  507. content: '确定要删除用户吗?',
  508. showCancel: true,
  509. cancelText: '取消',
  510. confirmText: '确定',
  511. success: res => {
  512. if (res.confirm) {
  513. this.request({
  514. url: 'setting/unBindMember',
  515. data: {
  516. admin_id: uni.getStorageSync("admin_id"),
  517. wechatid: this.deplist[index].wechatid,
  518. }
  519. }).then(res => {
  520. uni.showToast({
  521. title: res.message,
  522. icon: 'none'
  523. })
  524. this.deplist.splice(index, 1);
  525. })
  526. }
  527. },
  528. fail: () => {},
  529. complete: () => {}
  530. });
  531. },
  532. qrcodejumpdownload() {
  533. this.request({
  534. url: 'setting/qrcodejumpdownload',
  535. data: {
  536. admin_id: uni.getStorageSync("admin_id"),
  537. }
  538. }).then(res => {
  539. if (res.code == 200) {
  540. uni.showToast({
  541. title: res.message,
  542. icon: 'none'
  543. })
  544. setTimeout(() => {
  545. this.wechat_info()
  546. }, 2000)
  547. }
  548. })
  549. },
  550. // 新增规则
  551. ConfigRule(e) {
  552. this.request({
  553. url: 'setting/oldewmqrcode',
  554. data: {
  555. admin_id: uni.getStorageSync("admin_id"),
  556. }
  557. }).then(res => {
  558. if (res.code == 200) {
  559. uni.showToast({
  560. title: res.message,
  561. icon: 'none'
  562. })
  563. setTimeout(() => {
  564. this.ewmguizhe();
  565. }, 2000)
  566. }
  567. })
  568. },
  569. // 追加规则
  570. AppendRule(e) {
  571. this.request({
  572. url: 'setting/newewmqrcode',
  573. data: {
  574. admin_id: uni.getStorageSync("admin_id"),
  575. }
  576. }).then(res => {
  577. if (res.code == 200) {
  578. uni.showToast({
  579. title: res.message,
  580. icon: 'none'
  581. })
  582. setTimeout(() => {
  583. this.ewmguizhe();
  584. }, 2000)
  585. }
  586. })
  587. },
  588. // 删除规则
  589. DelRule(index) {
  590. uni.showModal({
  591. title: '提示',
  592. content: '确定要删除规则吗?',
  593. showCancel: true,
  594. cancelText: '取消',
  595. confirmText: '确定',
  596. success: res => {
  597. if (res.confirm) {
  598. this.request({
  599. url: 'setting/delqrcodejumpget',
  600. data: {
  601. admin_id: uni.getStorageSync("admin_id"),
  602. prefix: this.linkArr[index].prefix,
  603. }
  604. }).then(res => {
  605. uni.showToast({
  606. title: res.message,
  607. icon: 'none'
  608. })
  609. this.linkArr.splice(index, 1);
  610. })
  611. }
  612. },
  613. fail: () => {},
  614. complete: () => {}
  615. });
  616. },
  617. // 规则列表
  618. ewmguizhe(e) {
  619. this.request({
  620. url: 'setting/qrcodejumpget',
  621. data: {
  622. admin_id: uni.getStorageSync("admin_id"),
  623. }
  624. }).then(res => {
  625. if (res.code == 200) {
  626. this.linkArr = res.data;
  627. }
  628. })
  629. },
  630. // 获取体验者
  631. listMember() {
  632. this.request({
  633. url: 'setting/listMember',
  634. data: {
  635. admin_id: uni.getStorageSync("admin_id"),
  636. }
  637. }).then(res => {
  638. if (res.code == 200) {
  639. this.deplist = res.data;
  640. }
  641. })
  642. },
  643. copy(appid) {
  644. // #ifdef MP-WEIXIN
  645. uni.setClipboardData({
  646. data: appid,
  647. success: function() {
  648. console.log('success');
  649. }
  650. });
  651. // #endif
  652. // #ifdef H5
  653. let content = appid;
  654. if (!document.queryCommandSupported('copy')) {
  655. // 不支持
  656. return false
  657. }
  658. let textarea = document.createElement("input")
  659. textarea.value = content
  660. textarea.readOnly = "readOnly"
  661. document.body.appendChild(textarea)
  662. textarea.select() // 选择对象
  663. textarea.setSelectionRange(0, content.length) //核心
  664. let result = document.execCommand("copy") // 执行浏览器复制命令
  665. textarea.remove();
  666. uni.showToast({
  667. title: "复制成功",
  668. icon: 'none'
  669. })
  670. return result
  671. // #endif
  672. },
  673. }
  674. }
  675. </script>
  676. <style>
  677. @import url("../css/style.css");
  678. page .detail-hover {
  679. opacity: 0.6;
  680. transform: scale(0.8, 0.8);
  681. }
  682. .itemTitle {
  683. padding: 30rpx 20rpx;
  684. }
  685. .setup_a {
  686. flex: none;
  687. color: #576B95;
  688. font-size: 26rpx;
  689. margin-left: auto;
  690. }
  691. .reason {
  692. font-size: 24rpx;
  693. padding: 10rpx;
  694. background-color: #f0f0f0;
  695. color: #f00;
  696. line-height: 1.5;
  697. border-radius: 6rpx;
  698. margin-bottom: 20rpx;
  699. }
  700. .pd20 {
  701. padding: 20rpx;
  702. }
  703. .pd2-3 {
  704. padding: 20rpx 30rpx;
  705. }
  706. .step {
  707. padding: 20rpx 0;
  708. position: fixed;
  709. width: 100%;
  710. background: #FFFFFF;
  711. z-index: 999;
  712. }
  713. .deploy-add {
  714. padding: 0 15rpx;
  715. height: 60rpx;
  716. text-align: center;
  717. border-radius: 10rpx;
  718. background-color: #07C160;
  719. color: #FFFFFF;
  720. margin-left: 20rpx;
  721. }
  722. .deploy-list {
  723. padding: 24rpx;
  724. }
  725. .item-bg {
  726. background: #f6f8fe;
  727. border-radius: 12rpx;
  728. margin: 0 auto;
  729. font-size: 28rpx;
  730. font-family: PingFang SC, PingFang SC-Regular;
  731. font-weight: 400;
  732. color: #333333;
  733. padding: 36rpx 32rpx;
  734. }
  735. .item-del {
  736. flex: none;
  737. color: red;
  738. }
  739. .item-bg-32 {
  740. margin-right: 32rpx;
  741. }
  742. .item-bg .mar64:last-child {
  743. margin-bottom: 0rpx;
  744. }
  745. .deploy-list-nick {
  746. width: 300rpx;
  747. margin-right: 20rpx;
  748. }
  749. .deploy-list-logon {
  750. width: 180rpx;
  751. margin-right: 30rpx;
  752. }
  753. .mar64 {
  754. margin-bottom: 64rpx;
  755. }
  756. .amount-input {
  757. padding: 20rpx;
  758. border: 1rpx solid #F1F1F1;
  759. }
  760. .model {
  761. background: #FFFFFF;
  762. border-radius: 10rpx;
  763. width: 600rpx;
  764. overflow: hidden;
  765. }
  766. .model-refund-title {
  767. text-align: center;
  768. padding: 20rpx 0;
  769. }
  770. .model-refund-btn {
  771. border-top-color: #f5f5f5;
  772. border-top-style: solid;
  773. border-top-width: 1px;
  774. }
  775. .model-refund-btn .cancel {
  776. height: 90rpx;
  777. }
  778. .model-refund-btn .submit {
  779. height: 90rpx;
  780. border-left: 1rpx solid #f1f1f1;
  781. border-radius: 0;
  782. }
  783. .list {
  784. height: auto;
  785. background: #fff;
  786. position: relative;
  787. padding: 30rpx 0;
  788. }
  789. .header-version {
  790. padding: 20rpx 0;
  791. }
  792. .home-img {
  793. font-size: 26rpx;
  794. text-align: center;
  795. display: inline-block;
  796. }
  797. .home-upload {
  798. border: 1rpx solid #e3e4e5;
  799. height: 80rpx;
  800. border-radius: 6rpx;
  801. padding: 0 32rpx;
  802. min-width: 180rpx;
  803. font-size: 28rpx;
  804. letter-spacing: 0;
  805. background: #f6f7f8;
  806. }
  807. .home-img-icon {
  808. border: 1rpx solid #ccc;
  809. width: 200rpx;
  810. height: 200rpx;
  811. }
  812. .header-img {
  813. max-width: 300rpx;
  814. }
  815. button {
  816. background-color: #fff;
  817. padding: 0;
  818. margin: 0;
  819. line-height: 1rpx;
  820. min-height: 0;
  821. font-size: 28rpx;
  822. background: #fff;
  823. border-radius: none;
  824. }
  825. button::after {
  826. border: none;
  827. }
  828. .qr_link {
  829. margin-bottom: 10rpx;
  830. }
  831. .tips {
  832. font-size: 24rpx;
  833. color: red;
  834. padding: 10rpx 20rpx;
  835. }
  836. .model {
  837. background: #FFFFFF;
  838. border-radius: 10rpx;
  839. width: 600rpx;
  840. overflow: hidden;
  841. }
  842. .amount-input textarea {
  843. width: 100%;
  844. }
  845. .model-refund-title {
  846. text-align: center;
  847. padding: 20rpx 0;
  848. }
  849. .model-refund-btn {
  850. border-top-color: #f5f5f5;
  851. border-top-style: solid;
  852. border-top-width: 1px;
  853. }
  854. .model-refund-btn .cancel {
  855. height: 90rpx;
  856. }
  857. .model-refund-btn .submit {
  858. height: 90rpx;
  859. border-left: 1rpx solid #f1f1f1;
  860. border-radius: 0;
  861. }
  862. button {
  863. background-color: #fff;
  864. padding: 0;
  865. margin: 0;
  866. line-height: 1rpx;
  867. /* border: 1px solid #cccccc; */
  868. min-height: 0;
  869. font-size: 28rpx;
  870. background: #fff;
  871. border-radius: none;
  872. }
  873. button::after {
  874. border: none;
  875. }
  876. .modify_quota {
  877. font-size: 20rpx;
  878. margin-top: 10rpx;
  879. color: red;
  880. }
  881. </style>