Browse Source

部分问题处理

master
kola-web 3 months ago
parent
commit
01ba5605de
  1. 7
      src/components/uploadFile/index.json
  2. 30
      src/components/uploadFile/index.scss
  3. 184
      src/components/uploadFile/index.ts
  4. 19
      src/components/uploadFile/index.wxml
  5. 3
      src/pages/my/index.json
  6. 11
      src/pages/my/index.scss
  7. 23
      src/pages/my/index.wxml
  8. 2
      src/pages/topic/index.ts

7
src/components/uploadFile/index.json

@ -0,0 +1,7 @@ @@ -0,0 +1,7 @@
{
"component": true,
"usingComponents": {
"van-popup": "@vant/weapp/popup/index",
"van-uploader": "@vant/weapp/uploader/index"
}
}

30
src/components/uploadFile/index.scss

@ -0,0 +1,30 @@ @@ -0,0 +1,30 @@
.button {
padding: 0;
line-height: 1;
background-color: transparent;
&::after {
border: none;
outline: none;
}
}
.popup1 {
position: relative;
width: 580rpx;
height: 590rpx;
box-sizing: border-box;
.bg {
width: 100%;
height: 100%;
}
.sure {
position: absolute;
width: 100%;
bottom: 40rpx;
left: 0;
text-align: center;
font-size: 32rpx;
color: rgba(0, 180, 197, 1);
line-height: 48rpx;
}
}

184
src/components/uploadFile/index.ts

@ -0,0 +1,184 @@ @@ -0,0 +1,184 @@
const app = getApp<IAppOption>();
// pages/story/a.ts
Component({
/**
*
*/
properties: {
chooseAvatar: {
type: Boolean,
value: false,
},
chooseMessage: {
type: Boolean,
value: false,
},
accept: {
type: String,
value: "image",
},
obscure: {
type: Boolean,
value: false,
},
edit: {
type: Boolean,
value: false,
},
},
/**
*
*/
data: {
show1: false,
fileTypeList: {
doc: 5,
docx: 5,
pdf: 4,
xls: 6,
xlsx: 6,
ppt: 7,
},
cacheEditParams: {},
},
/**
*
*/
methods: {
GetExtensionFileName(pathfilename) {
const reg = /(\\+)/g;
const pString = pathfilename.replace(reg, "#"); //用正则表达式来将\或\\替换成#
const arr = pString.split("#"); // 以“#”为分隔符,将字符分解为数组 例如 D Program Files bg.png
const lastString = arr[arr.length - 1]; //取最后一个字符
const arr2 = lastString.split("."); // 再以"."作为分隔符
return arr2[arr2.length - 1]; //将后缀名返回出来
},
handleAfterRead(e, editEnd = false) {
if (this.data.edit && !editEnd) {
this.setData({
show1: true,
cacheEditParams: e,
});
return;
}
if (this.data.obscure) {
wx.editImage({
src: e.detail.file.url || e.detail.file.tempFilePath,
success: (res: any) => {
this.uploadFile({
...e.detail.file,
tempFilePath: res.tempFilePath,
}).then((res) => {
this.triggerEvent("file", res as object);
});
},
fail: (err) => {
if (err.errMsg.includes("开发者工具")) {
this.uploadFile(e.detail.file).then((res) => {
this.triggerEvent("file", res as object);
});
}
},
});
} else {
this.uploadFile(e.detail.file).then((res) => {
this.triggerEvent("file", res as object);
});
}
},
handleEditEnd() {
this.setData({
show1: false,
});
this.handleAfterRead(this.data.cacheEditParams, true);
},
handleChooseAvatar(e) {
this.uploadFile({
fileType: "image",
tempFilePath: e.detail.avatarUrl,
size: 0,
}).then((res) => {
this.triggerEvent("file", res as object);
});
},
handleChooseFile() {
wx.chooseMessageFile({
type: "file",
count: 1,
success: (res) => {
this.uploadFile({
...res.tempFiles[0],
fileType: res.tempFiles[0].type,
tempFilePath: res.tempFiles[0].path,
}).then((res) => {
this.triggerEvent("file", res as object);
});
},
fail() {
wx.showToast({
icon: "none",
title: "取消选择",
});
},
});
},
uploadFile(item) {
wx.showLoading({
title: "正在上传",
});
return new Promise((resolve, reject) => {
let url = `${app.globalData.upFileUrl}?r=file-service/upload-`;
if (item.fileType === "image") {
url += "img";
} else if (item.fileType === "video" || item.type === "video") {
url += "video";
item.tempFilePath = item.url;
} else if (item.fileType === "audio") {
url += "audio";
} else {
url += "doc";
}
wx.uploadFile({
filePath: item.tempFilePath,
name: "file",
url,
success: (res) => {
wx.hideLoading();
const data = JSON.parse(res.data);
const suffix = this.GetExtensionFileName(data.data.Url);
const expandJson = {
fileId: "",
name: item.name || `病历相关文件.${suffix}`,
size: (item.size / 1024).toFixed(2),
fileUrl: data.data.Url,
suffix,
type: item.fileType,
imgUrl: "",
duration: 0,
fileType: this.data.fileTypeList[suffix] || 99,
videoUrl: "",
hash: "",
};
if (item.fileType === "image") {
expandJson.imgUrl = data.data.Url;
} else if (item.fileType === "video" || item.type === "video") {
expandJson.imgUrl = data.data.SnapshotUrl;
} else if (item.fileType === "audio") {
expandJson.duration = Number.parseInt(String(item.duration / 1000));
}
resolve(expandJson);
},
fail() {
wx.hideLoading();
reject(new Error("上传失败"));
},
});
});
},
},
});
export {};

19
src/components/uploadFile/index.wxml

@ -0,0 +1,19 @@ @@ -0,0 +1,19 @@
<button class="button" wx:if="{{chooseAvatar}}" open-type="chooseAvatar" bindchooseavatar="handleChooseAvatar">
<slot></slot>
</button>
<button class="button" wx:elif="{{chooseMessage}}" bind:tap="handleChooseFile">
<slot></slot>
</button>
<van-uploader wx:else accept="{{accept}}" max-count="{{1}}" bind:after-read="handleAfterRead">
<slot></slot>
</van-uploader>
<van-popup show="{{ show1 }}" bind:close="onClose" round>
<view class="popup1">
<image class="bg" src="{{imageUrl}}daub.gif?t={{Timestamp}}"></image>
<view class="sure" bind:tap="handleEditEnd">
我知道了 去涂抹
<van-icon name="arrow" />
</view>
</view>
</van-popup>

3
src/pages/my/index.json

@ -1,6 +1,7 @@ @@ -1,6 +1,7 @@
{
"usingComponents": {
"van-icon": "@vant/weapp/icon/index",
"global-toast":"/components/global-toast/index"
"global-toast": "/components/global-toast/index",
"uploadFile": "/components/uploadFile/index"
}
}

11
src/pages/my/index.scss

@ -22,10 +22,13 @@ page { @@ -22,10 +22,13 @@ page {
display: flex;
align-items: center;
gap: 24rpx;
.avatar {
width: 160rpx;
height: 160rpx;
border-radius: 50%;
.upload {
flex-shrink: 0;
.avatar {
width: 160rpx;
height: 160rpx;
border-radius: 50%;
}
}
.user {
flex: 1;

23
src/pages/my/index.wxml

@ -1,7 +1,26 @@ @@ -1,7 +1,26 @@
<view class="page" style="padding-top:{{ menuButtonInfo.bottom }}px;">
<view class="login" wx:if="{{userInfo.isLogin===1}}">
<image wx:if="{{userInfo.avatar}}" class="avatar" mode="aspectFill" src="{{userInfo.avatar}}"></image>
<image wx:else class="avatar" mode="aspectFill" src="/images/user.png"></image>
<uploadFile
class="upload"
chooseAvatar
bind:file="handleFile"
data-key="Img"
>
<image
wx:if="{{userInfo.avatar}}"
class="avatar"
mode="aspectFill"
src="{{userInfo.avatar}}"
></image>
<image
wx:else
class="avatar"
mode="aspectFill"
src="/images/user.png"
></image>
</uploadFile>
<view class="user">
<view class="name">{{userInfo.username}}</view>
<view class="tel">{{userInfo.telephone}}</view>

2
src/pages/topic/index.ts

@ -26,8 +26,6 @@ Page({ @@ -26,8 +26,6 @@ Page({
const { index, id } = e.currentTarget.dataset;
const { question, nav } = this.data;
question[index].answer = id;
console.log(nav);
console.log(question.length);
this.setData({
question,
nav: nav === question.length - 1 ? nav : nav + 1,

Loading…
Cancel
Save