いくつかの単語の男は、コードに直接、言いました
<テンプレート> <ビュークラス=「カート・チケットフルハイト全幅」> <! - カルーセル図 - > <swiper V- 場合 = "brandList.length> 0":インジケータードット= "真":自動再生= "偽": "3000"間隔=:継続= "1000" クラス = "swiper"インジケータ色= "# swiperChange "> "変更= @" currentId:FF9900"インジケーター-アクティブ・カラー= "#FFFFFFの"現在=" <swiper項目V- ため = "brandListで(IMG、インデックス)":キー= "インデックス"クラス= "swiper項目"> <画像:SRC = "img.posterImg" モード= "aspectFill" クラス= "フルハイト全幅"> </画像> </ swiper項目> </ swiper> V- <ボタンであればタップ= "onSaveToPhone"スタイル=」@ = "!isAuthSavePhoto" 背景:#294D7C。 国境半径:40upx。テキスト整列:センター; 色:#FFFFFF; 幅:50%; マージン:自動; 位置:絶対; トップ:90%; 左:50%を、変換:(-50%、 - 50%)を変換。"> お使いの携帯電話に画像を保存 </ button>の V- <ボタンであればタップ= "showModal"スタイル=」@ = "isAuthSavePhoto" 背景:#294D7C。 国境半径:40upx。テキスト整列:センター; 色:#FFFFFF; "> お使いの携帯電話に画像を保存 </ button>の </ビュー> </テンプレート> <スクリプト> からの輸入couponService '@ /サービス/ CouponService' ; 輸出のデフォルト{ 成分:{ }、 計算:{ }、 データ(){ リターン{ photoUrl: "https://cz-mall.oss-cn-shenzhen.aliyuncs.com/mall/images/null/20200324/1585041343359vp2.png" 、 isAuthSavePhoto:偽、 火災リスト:[] }。 }、 方法:{ swiperChange(E){ VaRのインデックス= e.target.current || e.detail.current; console.log(インデックス) この .photoUrl = この.brandList [インデックス] .posterImg }、 // 保存图片到手机 onSaveToPhone(){ 場合(この .photoUrl.indexOf( "HTTPS")<0 ){ この .photoUrl = この .photoUrl.replace( "HTTP"、 "HTTPS" )。 } console.log(この.photoUrl) この .getSetting()。その後、((RES)=> { //は、ユーザーがローカル権限を保存することを許可するかどうかを決定する IF(!res.authSetting [ 'scope.writePhotosAlbum' ]){ この。次いで、(()=>)(.AUTHORIZE { この .savedownloadFile(この.photoUrl) // this.setData({ // :falseにisAuthSavePhoto // }) この .isAuthSavePhoto = falseに 。})キャッチ(()=> { wx.showToast({ タイトル:「あなたは承認を拒否されました」、 アイコン:「なし」、 期間: 1500年 }) この .isAuthSavePhoto = 真 // this.setData({ // isAuthSavePhoto:真 // }) }) } 他{ この .savedownloadFile(この.photoUrl) } }) }、 // オープン設定、ユーザ認証ガイド onOpenSetting(){ wx.openSetting({ 成功:(RES) => { console.log(res.authSetting) もし(!res.authSetting [ 'scope.writePhotosAlbum' ]){ wx.showToast({ タイトル:「あなたは許可されていません」、 アイコン:「なし」、 期間: 1500年 }) この .isAuthSavePhotoは= 真 } 他 { //が受け入れることを許可 この = .isAuthSavePhotoを falseに この .onSaveToPhone()// 画像を保存する許可を受信した後 } } }) }、 // ユーザーがどのような権利を付与されています (のGetSetting){ 返す 新しい新しい約束((解決、拒否)=>を{ wx.getSetting({ 成功:RES => { 解決(RES) } }) }) }、 //が初めて認可要求開始 AUTHORIZE(){ 戻り 新しい新しい((解決、拒否)約束を=> { wx.authorize({ スコープ: 'scope.writePhotosAlbum' 、 成功:() => { 決意() }、 不合格:RES => { // このコールバック許可ユーザが拒否される (「認可を拒否」にconsole.logを) 拒否() } }) }) }、 ダウンロードしたファイル(IMG){保存 wx.showLoading({ タイトル:「で... '保存、 マスク:真、 }); wx.downloadFile({ URL:IMG、 成功:機能(RES){ wx.showToast({ タイトル:RES、 アイコン:「成功」、 期間: 2000年 }); console.log(RES) もし(res.statusCode === 200 ){ IMGましょう = res.tempFilePath。 wx.saveImageToPhotosAlbum({ filePathに:IMG、 成功(RES){ wx.showToast({ タイトル:「保存の成功」、 アイコン:「成功」、 期間: 2000年 }); }、 フェイル(RES){ wx.showToast({ タイトル:「保存」は失敗しました、 アイコン:「成功」、 期間: 2000年 }); } }); } } }) // this.downLoadFile(IMG).then((RES)=> { // リターンthis.saveImageToPhotosAlbum(res.tempFilePath) // })。次に、(()=> { // }) }、 // 単一ファイルのダウンロード(ローカルリソースにファイルをダウンロード)、クライアントが直接HTTPS GETリクエスト、ローカルの一時ファイルのリターンパスを開始します。 DownloadFile(IMG){ 戻り 新しい新しいプロミス((解決、拒否)=> { wx.downloadFile({ URL:IMG、 成功:(RES) => { console.log( 'downloadfile' 、RES) 解決(RES) } }) }) }、 // 安全への画像の保存 saveImageToPhotosAlbum(saveUrl){ 返す 新しい新しい約束((解決、拒否)=> { wx.saveImageToPhotosAlbum({ filePathに:saveUrl、 成功:(RES) => { wx.showToast({ タイトル:「保存の成功」、 期間: 1000年、 }) 決意() } }) }) }、 // 認証設定ページにするかどうかをモーダルボックスのプロンプトにユーザーをポップ {)showModal( wx.showModal({ タイトル:「あなたがアルバムを開くために保存する権限を持っていないことを検出したが、オープンにするかどうかを設定]に移動?" 、 成功:(RES) => { 場合(res.confirm){ console.log( 'ユーザーが[OK]をクリックする' ) この .onOpenSetting()//は、[設定]ページ開く } 他の IF (res.cancelを){ console.log(「ユーザーが[キャンセル]をクリック」) } } }) }、 データを読み込む() {} }、 ONLOAD(オプション){ // 海报列表 couponService.getAllPoster({})。次に、(結果=> { この .brandList = result.list この .photoUrl = result.list [0 ] .posterImg })。キャッチ(ERR => { console.log(ERR) }); } }。 </ SCRIPT> <スタイルLANG = "SCSS"> ページ{ 位置:相対; 幅: 100%; 高さ: 100%; // 回転図 .swiper { 高さ: 100%; マージン:0upx。 幅: 100%; 画像{ 幅: 100%; } } .cart - チケット{ 幅: 100%; 高さ: 100%; 背景:#FFFFFF; } .save_btn { フォント - サイズ:30rpx。 行 - 高さ:72rpx。 色:#FFF; 幅: 100%; 高さ: 100%; テキスト - 整列:センター; 国境 - 半径:36rpx。 Z -index:10 。 背景:#294D7C。 } } </スタイル>