| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253 | <template>    <view>        <calendar :date="date" showShrink shrinkState="week" weekType="" :signList="signList" @dayChange="dayChange" />        <view v-if="dates[viewDate] && dates[viewDate].attinfos.length">            <swiper class="poster" :current="current" circular v-if="dates[viewDate].attinfos.length" indicator-dots                indicator-active-color="#fff" @change="swiperChange">                <swiper-item v-for="item in dates[viewDate].attinfos" :key="item.attachmentid">                    <image class="image" v-if="item.fileType == 'image'" :src="item.url" mode="aspectFit" lazy-load="true"                        @click="previewImage(item.url)" />                    <video class="video" :id="'Video' + item.attachmentid" v-if="item.fileType == 'video'"                        :poster="item.subfiles[0].url" :src="item.url" />                </swiper-item>            </swiper>            <view class="text-box">                <view class="title">分享海报宣传文本,例如:</view>                <textarea class="textarea" :value="dates[viewDate].notes" @input="notesSava" maxlength="499"                    placeholder="分享海报宣传文本" />            </view>        </view>        <view v-else style="padding-top: 50px;">            <u-empty mode="data" text="暂无数据" />        </view>        <view style="height: 80px;" />        <view class="bottom" v-if="dates[viewDate] && dates[viewDate].attinfos.length">            <view class="but up" @click="copyNotes(dates[viewDate].notes)" hover-class="navigator-hover">                复制文本            </view>            <view v-if="dates[viewDate].attinfos[current].fileType == 'image'" class="but submit"                hover-class="navigator-hover" @click="makePoster(dates[viewDate].attinfos[current])">                自定义海报及保存            </view>            <view v-else class="but submit" hover-class="navigator-hover"                @click="saveVideo(dates[viewDate].attinfos[current])">                保存视频            </view>        </view>    </view></template><script>import calendar from "../../uni_modules/lunc-calendar/components/lunc-calendar/lunc-calendar.vue";import { formattedFiles, viewImage, wxSaveFile } from "../../utils/settleFiles";export default {    components: { calendar },    data() {        return {            current: 0,            date: new Date(),            signList: [],            "content": {                "pageNumber": 1,                "pageSize": 9999,                "where": {                    "condition": "",                    "year": "",                    "month": ""                }            },            viewDate: "",            dates: {}        }    },    onLoad() {        wx.setNavigationBarTitle({            title: this.getApps('资料库', '/packageA/dailyYttendance/index').remark || '每日一签',        });        this.viewDate = this.formatTime().split(" ")[0]        const time = this.viewDate.split("-")        this.content.where.year = time[0];        this.content.where.month = time[1];        this.getList(true)    },    onShow() {        if (this.content.pageNumber && this.content.pageNumber >= 2) this.getList(true)    },    methods: {        getList(init = false) {            if (this.paging(this.content, init)) return;            this.$Http.basic({                "id": "20240319104102",                content: this.content            }).then(res => {                console.log("获取每日一签列表", res)                if (this.cutoff(res.msg)) return;                let dates = {};                this.signList = res.data.map(v => {                    v.attinfos = formattedFiles(v.attinfos)                    v.videoIds = v.attinfos.filter(v => v.fileType == 'video').map(v => `Video${v.attachmentid}`)                    dates[v.ondate] = v;                    return { date: v.ondate }                })                this.dates = dates;                this.record();                console.log("date", this.dates[this.viewDate])            })        },        dayChange(e) {            this.viewDate = e.date;            this.current = 0;            const {                year, month            } = this.content.where;            if (year != e.year || month != e.month) {                this.content.where.year = e.year;                this.content.where.month = e.month;                this.getList(true)            }            console.log("date", this.dates[this.viewDate])            this.record();        },        swiperChange(e) {            this.current = e.detail.current;            this.dates[this.viewDate].videoIds.forEach(v => uni.createVideoContext(v).pause())        },        previewImage(url) {            viewImage(url)        },        saveVideo(file) {            wxSaveFile(file)            this.record(1)        },        notesSava(e) {            this.dates[this.viewDate].notes = e.detail.value;        },        copyNotes(notes) {            if (!notes.length) uni.showToast({                title: '还未输入宣传文本',                duration: 2000,                icon: "none"            });            uni.setClipboardData({                data: notes,            })        },        //0:阅读记录 1:下载记录:2:发送邮件        record(type = 0, sat_sharematerialid = 0) {            try {                if (sat_sharematerialid == 0) sat_sharematerialid = this.dates[this.viewDate].sat_sharematerialid;                this.$Http.basic({                    "id": 20240319142702,                    "content": {                        sat_sharematerialid, type                    }                }).then(res => {                    console.log(type, '记录', res)                })            } catch (error) {            }        },        makePoster(file) {            this.$Http.data = {                detail: this.dates[this.viewDate],                file            }            uni.navigateTo({                url: "/packageA/dailyYttendance/makePoster",            });        }    },}</script><style lang="scss">.poster {    height: 356px;    width: 100vw;    margin: 20px 0;    box-sizing: border-box;    .image,    .video {        width: 100%;        height: 100%;    }}.text-box {    width: 100vw;    background: #fff;    border-radius: 8px;    padding: 10px;    box-sizing: border-box;    .title {        height: 20px;        line-height: 20px;        font-family: Source Han Sans SC, Source Han Sans SC;        font-size: 14px;        color: #333333;    }    .textarea {        width: 100%;        height: 100px;        background: #FFFFFF;        border-radius: 8px;        border: 1px solid #CCCCCC;        padding: 10px;        margin-top: 10px;        box-sizing: border-box;    }}.bottom {    display: flex;    position: fixed;    bottom: 0;    width: 375px;    height: 64px;    background: #FFFFFF;    box-shadow: 0px -2px 6px 1px rgba(0, 0, 0, 0.16);    padding-right: 10px;    box-sizing: border-box;    z-index: 9999999;    .but {        display: flex;        align-items: center;        justify-content: center;        margin-left: 10px;        width: 168px;        height: 45px;        border-radius: 5px;        margin-top: 4px;        box-sizing: border-box;    }    .up {        background: #FFFFFF;        border: 1px solid #999999;        font-size: 16px;        color: #666666;        width: 82px;    }    .down,    .submit {        background: #095DE0;        font-family: PingFang SC, PingFang SC;        font-size: 16px;        color: #FFFFFF;    }    .submit {        flex: 1;        background: #C30D23;        width: 263px;    }}</style>
 |