| | |
| | | "pages/resourceDetails/document/index", |
| | | "pages/sampleBookList/index", |
| | | "pages/sampleBookList/applicationForm/index", |
| | | "pages/teacherCertification/index" |
| | | "pages/teacherCertification/index", |
| | | "pages/publickBookForm/index" |
| | | ], |
| | | "plugins": { |
| | | "t-video": { |
| | |
| | | data |
| | | }); |
| | | }, |
| | | |
| | | |
| | | //使用凭证 |
| | | useTicket(data) { |
| | | return request({ |
| | | url: "/app/api/ApiUseTicket", |
| | | url: "/app/api/ApiUseTicket", |
| | | method: "post", |
| | | data |
| | | }); |
| | |
| | | data |
| | | }); |
| | | }, |
| | | // 新建用户行为 |
| | | creatUserBehavior(data) { |
| | | return request({ |
| | | url: '/app/api/NewUserBehavior', |
| | | method: 'post', |
| | | data |
| | | }) |
| | | }, |
| | | // 获取用户行为记录 |
| | | getUserBehaviorList(data) { |
| | | return request({ |
| | | url: '/app/api/GetUserBehaviorList', |
| | | method: 'post', |
| | | data |
| | | }) |
| | | } |
| | | }; |
| | | |
| | | export default appApi; |
| | | export default appApi; |
| | |
| | | item.learnSelectType == "audio" |
| | | ) { |
| | | url = "/packageDomain/pages/resourceDetails/myAudio/index"; |
| | | } else if (item.selectType == "picture" || item.selectType == "zip") { |
| | | } else if (item.selectType == "picture") { |
| | | url = "/packageDomain/pages/resourceDetails/document/index"; |
| | | } |
| | | if ( |
| | |
| | | "||author*": this.data.searchValue, |
| | | "||isbn*": this.data.searchValue, |
| | | "||seriesName*": this.data.searchValue, |
| | | "||projectLeader*": this.data.searchValue |
| | | }; |
| | | } |
| | | const query = { |
| | |
| | | <view> |
| | | <t-icon name="chevron-left" size="30" data-name="{{item}}" bind:click="goBack" /> |
| | | </view> |
| | | <t-search model:value="{{searchValue}}" shape="round" placeholder="请输入关键词/书名/ISBN/作者" class="navBar-search" style="width: 464rpx" bind:submit="searchBook" /> |
| | | <t-search model:value="{{searchValue}}" shape="round" placeholder="请输入关键词/书名/ISBN/作者/项目负责人" class="navBar-search" style="width: 464rpx" bind:submit="searchBook" /> |
| | | </view> |
| | | |
| | | <view class="bookServices-list"> |
| | |
| | | */ |
| | | onLoad(options) { |
| | | console.log(options) |
| | | const token = wx.getStorageSync(app.config.tokenKey) |
| | | if (!token) { |
| | | loginInfo(app, (data) => { |
| | | // 如果不是第一次登录,会执行回调 |
| | | if (data) { |
| | | // 登录成功,自动记录token和用户信息,并返回true |
| | | } else { |
| | | // 出现错误,返回false |
| | | } |
| | | }) |
| | | } else { |
| | | // 如果是第一次登录,会跳转至绑定用户信息页面,填写完用户信息后进行登录并储存token和用户信息,结束后跳转回当前页面(携带页面参数) |
| | | } |
| | | if (options && options.link) { |
| | | this.setData({ |
| | | src: decodeURIComponent(options.link), |
New file |
| | |
| | | // packageDomain/pages/publickBookForm/index.js |
| | | const app = getApp(); |
| | | import tool from "../../../assets/js/toolClass.js"; |
| | | import { |
| | | loginInfo |
| | | } from '../../../assets/js/login'; |
| | | Page({ |
| | | |
| | | /** |
| | | * 页面的初始数据 |
| | | */ |
| | | data: { |
| | | teacherInfo: { |
| | | topicName: '', //选题名称 |
| | | declarer: '', //申报人 |
| | | declarationUnit: '', //"申报单位" |
| | | disciplineMajor: '', //学科专业 |
| | | authorBasicInformation: '', //"作者基本情况 |
| | | phone: '', //联系电话 |
| | | email: '', //联系邮箱 |
| | | targetReaders: '', //读者对象 |
| | | topicFeatures: '', //选题特色 |
| | | topicImpactAndExpected: '', //选题学术影响与预期社会效益 |
| | | topicProgress: '', //选题的进度安排 |
| | | marketAnalysis: '', //市场分析 |
| | | marketingAndPromotionPlan: '', //营销与宣传推广计划 |
| | | digitalResourceDevelopmentPlan: '', //配套数字资源开发方案 |
| | | otherExistingIssues: '' //存在的其他问题 |
| | | }, |
| | | worksInfo: [], |
| | | keyboardHeight: 0, |
| | | autosize: { |
| | | maxHeight: 120, |
| | | minHeight: 80, |
| | | }, |
| | | phoneError: false, |
| | | emailError: false, |
| | | loading: false |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面加载 |
| | | */ |
| | | onLoad() { |
| | | const token = wx.getStorageSync(app.config.tokenKey) |
| | | if (!token) { |
| | | loginInfo(app, (data) => { |
| | | if (data) {} |
| | | }) |
| | | } else {} |
| | | this.getType() |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面初次渲染完成 |
| | | */ |
| | | onReady() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面显示 |
| | | */ |
| | | onShow() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面隐藏 |
| | | */ |
| | | onHide() { |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 生命周期函数--监听页面卸载 |
| | | */ |
| | | onUnload() { |
| | | |
| | | }, |
| | | //获取字段 |
| | | getType() { |
| | | app.MG.resource.getCmsTypeByRefCode({ |
| | | refCodes: ['jsek_publicationApplication'] |
| | | }).then((res) => { |
| | | this.setData({ |
| | | worksInfo: res[0].cmsTypeLinks[0].children, |
| | | }) |
| | | }) |
| | | }, |
| | | onTopicNameInput(e) { |
| | | this.setData({ |
| | | "teacherInfo.topicName": e.detail.value, |
| | | }); |
| | | }, |
| | | onDeclarerInput(e) { |
| | | this.setData({ |
| | | "teacherInfo.declarer": e.detail.value, |
| | | }); |
| | | }, |
| | | ondeclarationUnitInput(e) { |
| | | this.setData({ |
| | | "teacherInfo.declarationUnit": e.detail.value, |
| | | }); |
| | | }, |
| | | onDisciplineMajorInput(e) { |
| | | this.setData({ |
| | | "teacherInfo.disciplineMajor": e.detail.value, |
| | | }); |
| | | }, |
| | | onAuthorBasicInfoInput(e) { |
| | | this.setData({ |
| | | "teacherInfo.authorBasicInformation": e.detail.value, |
| | | }); |
| | | }, |
| | | //输入手机号 |
| | | onPhoneInput(e) { |
| | | const { |
| | | phoneError |
| | | } = this.data; |
| | | if (e.detail.value) { |
| | | const isPhoneNumber = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/.test(e.detail.value); |
| | | if (phoneError === isPhoneNumber) { |
| | | this.setData({ |
| | | phoneError: !isPhoneNumber, |
| | | "teacherInfo.phone": e.detail.value, |
| | | }); |
| | | } |
| | | } else { |
| | | this.setData({ |
| | | phoneError: false, |
| | | }); |
| | | } |
| | | }, |
| | | |
| | | onEmailInput(e) { |
| | | const { |
| | | emailError |
| | | } = this.data; |
| | | if (e.detail.value) { |
| | | const isPhoneNumber = /^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$/.test(e.detail.value); |
| | | if (emailError === isPhoneNumber) { |
| | | this.setData({ |
| | | emailError: !isPhoneNumber, |
| | | "teacherInfo.email": e.detail.value, |
| | | }); |
| | | } |
| | | } else { |
| | | this.setData({ |
| | | emailError: false, |
| | | }); |
| | | } |
| | | }, |
| | | onTargetReadersInput(e) { |
| | | this.setData({ |
| | | "teacherInfo.targetReaders": e.detail.value, |
| | | }); |
| | | }, |
| | | onTopicFeaturesInput(e) { |
| | | this.setData({ |
| | | "teacherInfo.topicFeatures": e.detail.value, |
| | | }); |
| | | }, |
| | | onTopicImpactAndExpectedInput(e) { |
| | | this.setData({ |
| | | "teacherInfo.topicImpactAndExpected": e.detail.value, |
| | | }); |
| | | }, |
| | | onTopicProgressInput(e) { |
| | | this.setData({ |
| | | "teacherInfo.topicProgress": e.detail.value, |
| | | }); |
| | | }, |
| | | onMarketAnalysisInput(e) { |
| | | this.setData({ |
| | | "teacherInfo.marketAnalysis": e.detail.value, |
| | | }); |
| | | }, |
| | | onMarketingAndPromotionPlanInput(e) { |
| | | this.setData({ |
| | | "teacherInfo.marketingAndPromotionPlan": e.detail.value, |
| | | }); |
| | | }, |
| | | ondigitalResourceInput(e) { |
| | | this.setData({ |
| | | "teacherInfo.digitalResourceDevelopmentPlan": e.detail.value, |
| | | }); |
| | | }, |
| | | onOtherExistingIssuesInput(e) { |
| | | this.setData({ |
| | | "teacherInfo.otherExistingIssues": e.detail.value, |
| | | }); |
| | | }, |
| | | |
| | | submit() { |
| | | let that = this; |
| | | if (!that.data.teacherInfo.topicName) { |
| | | wx.showToast({ |
| | | title: "请填写选题名称!", |
| | | icon: 'none', |
| | | duration: 1000, |
| | | }) |
| | | return |
| | | } |
| | | if (!that.data.teacherInfo.declarer) { |
| | | wx.showToast({ |
| | | title: "请填写申报人姓名!", |
| | | icon: 'none', |
| | | duration: 1000, |
| | | }) |
| | | return |
| | | } |
| | | if (!that.data.teacherInfo.declarationUnit) { |
| | | wx.showToast({ |
| | | title: "请填写申报单位!", |
| | | icon: 'none', |
| | | duration: 1000, |
| | | }) |
| | | return |
| | | } |
| | | if (!that.data.teacherInfo.disciplineMajor) { |
| | | wx.showToast({ |
| | | title: "请填写学科专业!", |
| | | icon: 'none', |
| | | duration: 1000, |
| | | }) |
| | | return |
| | | } |
| | | if (!that.data.teacherInfo.authorBasicInformation) { |
| | | wx.showToast({ |
| | | title: "请填写作者基本情况!", |
| | | icon: 'none', |
| | | duration: 1000, |
| | | }) |
| | | return |
| | | } |
| | | if (!that.data.teacherInfo.phone) { |
| | | wx.showToast({ |
| | | title: "请填写联系电话!", |
| | | icon: 'none', |
| | | duration: 1000, |
| | | }) |
| | | return |
| | | } |
| | | if (!that.data.teacherInfo.email) { |
| | | wx.showToast({ |
| | | title: "请填写联系邮箱!", |
| | | icon: 'none', |
| | | duration: 1000, |
| | | }) |
| | | return |
| | | } |
| | | if (!that.data.teacherInfo.targetReaders) { |
| | | wx.showToast({ |
| | | title: "请填写读者对象!", |
| | | icon: 'none', |
| | | duration: 1000, |
| | | }) |
| | | return |
| | | } |
| | | if (!that.data.teacherInfo.topicFeatures) { |
| | | wx.showToast({ |
| | | title: "请填写选题特色!", |
| | | icon: 'none', |
| | | duration: 1000, |
| | | }) |
| | | return |
| | | } |
| | | that.setData({ |
| | | loading: true, |
| | | }); |
| | | const data = { |
| | | topicIdOrRefCode: 'bookApplication', |
| | | name: that.data.teacherInfo.topicName, |
| | | content: '', |
| | | state: 'WaitAudit', |
| | | type: 'bookApplication', |
| | | cmsTypeRefCode: 'jsek_publicationApplication', |
| | | newDataListRequest: tool.worksDataBytool(that.data.worksInfo, that.data.teacherInfo) |
| | | } |
| | | |
| | | let basicInfo = JSON.parse(JSON.stringify(that.data.teacherInfo)) |
| | | delete basicInfo.worksInfo |
| | | delete basicInfo.state |
| | | app.MG.ugc.newTopicMessage(data).then((res) => { |
| | | console.log(res) |
| | | if (res) { |
| | | wx.showToast({ |
| | | title: "提交成功!请等待联系...", |
| | | icon: 'none', |
| | | duration: 1000, |
| | | }) |
| | | that.setData({ |
| | | loading: false, |
| | | "teacherInfo.topicName": '', |
| | | "teacherInfo.declarer": '', |
| | | "teacherInfo.declarationUnit": '', |
| | | "teacherInfo.disciplineMajor": '', |
| | | "teacherInfo.authorBasicInformation": '', |
| | | "teacherInfo.phone": '', |
| | | "teacherInfo.email": '', |
| | | "teacherInfo.targetReaders": '', |
| | | "teacherInfo.topicImpactAndExpected": '', |
| | | "teacherInfo.topicProgress": '', |
| | | "teacherInfo.marketAnalysis": '', |
| | | "teacherInfo.marketingAndPromotionPlan": '', |
| | | "teacherInfo.digitalResourceDevelopmentPlan": '', |
| | | "teacherInfo.otherExistingIssues": '', |
| | | }); |
| | | } |
| | | }) |
| | | } |
| | | }) |
New file |
| | |
| | | { |
| | | "navigationBarTitleText": "出书申请", |
| | | "usingComponents": { |
| | | "t-cell": "tdesign-miniprogram/cell/cell", |
| | | "t-picker": "tdesign-miniprogram/picker/picker", |
| | | "t-picker-item": "tdesign-miniprogram/picker-item/picker-item", |
| | | "t-input": "tdesign-miniprogram/input/input", |
| | | "t-textarea": "tdesign-miniprogram/textarea/textarea", |
| | | "t-icon": "tdesign-miniprogram/icon/icon", |
| | | "t-loading": "tdesign-miniprogram/loading/loading" |
| | | } |
| | | } |
New file |
| | |
| | | <view class="container" style="height:calc(100vh + {{keyboardHeight ? (keyboardHeight + 'px'):'0'}});padding-bottom:calc(180rpx + {{keyboardHeight ? 120 + 'px':0}}) "> |
| | | <scroll-view class="scroll content" scroll-y> |
| | | <view class="tips"> 诚挚的欢迎您投稿出书,并郑重承诺:我们将认真审阅所有的来稿,以令人信服的效率、质量和稿酬择优出版! </view> |
| | | <view class="page-body"> |
| | | <view class=" baseInfoBox"> |
| | | <view class="from-item"> |
| | | <view class="label"> <text class="icon">*</text>选题名称: </view> |
| | | <view class="item-content"> |
| | | <t-textarea placeholder="丛书要列出总名称和各本书的名称" value="{{teacherInfo.topicName}}" disableDefaultPadding="{{true}}" autosize="{{autosize}}" bindchange="onTopicNameInput" /> |
| | | </view> |
| | | </view> |
| | | <view class="from-item"> |
| | | <view class="label"> <text class="icon">*</text>申报人: </view> |
| | | <view class="item-content"> |
| | | <t-input placeholder="请输入申报人姓名" borderless value="{{teacherInfo.declarer}}" bindchange="onDeclarerInput" /> |
| | | </view> |
| | | </view> |
| | | <view class="from-item"> |
| | | <view class="label"> <text class="icon">*</text>申报单位: </view> |
| | | <view class="item-content"> |
| | | <t-input placeholder="请输入申报单位" borderless value="{{teacherInfo.declarationUnit}}" bindchange="ondeclarationUnitInput" /> |
| | | </view> |
| | | </view> |
| | | <view class="from-item"> |
| | | <view class="label"> <text class="icon">*</text>学科专业: </view> |
| | | <view class="item-content"> |
| | | <t-input placeholder="请输入学科专业" borderless value="{{teacherInfo.disciplineMajor}}" bindchange="onDisciplineMajorInput" /> |
| | | </view> |
| | | </view> |
| | | <view class="from-item"> |
| | | <view class="label"> <text class="icon">*</text>作者基本情况: </view> |
| | | <view class="item-content"> |
| | | <t-textarea placeholder="姓名、职务、研究领域、思想倾向、师德师风、学术水平、研究成果等" value="{{teacherInfo.authorBasicInformation}}" disableDefaultPadding="{{true}}" autosize="{{autosize}}" bindchange="onAuthorBasicInfoInput" /> |
| | | </view> |
| | | </view> |
| | | <view class="from-item"> |
| | | <view class="label"> <text class="icon">*</text>手机号: </view> |
| | | <view class="item-content"> |
| | | <t-input placeholder="输入手机号码" borderless value="{{teacherInfo.phone}}" type="number" tips="{{phoneError ? '手机号输入不正确' : ''}}" bindchange="onPhoneInput" /> |
| | | </view> |
| | | </view> |
| | | <view class="from-item"> |
| | | <view class="label"> <text class="icon">*</text>邮箱: </view> |
| | | <view class="item-content"> |
| | | <t-input placeholder="输入邮箱" borderless value="{{teacherInfo.email}}" tips="{{emailError ? '邮箱输入不正确' : ''}}" bindchange="onEmailInput" /> |
| | | </view> |
| | | </view> |
| | | <view class="from-item"> |
| | | <view class="label"> <text class="icon">*</text>读者对象: </view> |
| | | <view class="item-content"> |
| | | <t-input placeholder="定位、范围、数量等" borderless value="{{teacherInfo.targetReaders}}" bindchange="onTargetReadersInput" /> |
| | | </view> |
| | | </view> |
| | | <view class="from-item"> |
| | | <view class="label"> <text class="icon">*</text>选题特色: </view> |
| | | <view class="item-content"> |
| | | <t-textarea placeholder="选题背景、主要内容、出版价值等" value="{{teacherInfo.topicFeatures}}" disableDefaultPadding="{{true}}" autosize="{{autosize}}" bindchange="onTopicFeaturesInput" /> |
| | | </view> |
| | | </view> |
| | | <view class="from-item"> |
| | | <view class="label"> <text class="empty"></text>选题学术影响与预期社会效益: </view> |
| | | <view class="item-content"> |
| | | <t-textarea placeholder="选题学术影响与预期社会效益" value="{{teacherInfo.topicImpactAndExpected}}" disableDefaultPadding="{{true}}" autosize="{{autosize}}" bindchange="onTopicImpactAndExpectedInput" /> |
| | | </view> |
| | | </view> |
| | | <view class="from-item"> |
| | | <view class="label"> <text class="empty"></text>选题的进度安排: </view> |
| | | <view class="item-content"> |
| | | <t-textarea placeholder="预计来稿时间、出版时间等" value="{{teacherInfo.topicProgress}}" disableDefaultPadding="{{true}}" autosize="{{autosize}}" bindchange="onTopicProgressInput" /> |
| | | </view> |
| | | </view> |
| | | <view class="from-item"> |
| | | <view class="label"> <text class="empty"></text>市场分析: </view> |
| | | <view class="item-content"> |
| | | <t-textarea placeholder="市场需求、与同类书的差异和优势、定价标准、预计销量、盈亏分析等,是否有出版资助费" value="{{teacherInfo.marketAnalysis}}" disableDefaultPadding="{{true}}" autosize="{{autosize}}" bindchange="onMarketAnalysisInput" /> |
| | | </view> |
| | | </view> |
| | | <view class="from-item"> |
| | | <view class="label"> <text class="empty"></text>营销与宣传推广计划: </view> |
| | | <view class="item-content"> |
| | | <t-textarea placeholder="市场需求、与同类书的差异和优势、定价标准、预计销量、盈亏分析等,是否有出版资助费" value="{{teacherInfo.marketingAndPromotionPlan}}" disableDefaultPadding="{{true}}" autosize="{{autosize}}" bindchange="onMarketingAndPromotionPlanInput" /> |
| | | </view> |
| | | </view> |
| | | <view class="from-item"> |
| | | <view class="label"> <text class="empty"></text>配套数字资源开发方案: </view> |
| | | <view class="item-content"> |
| | | <t-textarea placeholder="配套数字资源名称、类型、内容、经费预算、效益分析等" value="{{teacherInfo.digitalResourceDevelopmentPlan}}" disableDefaultPadding="{{true}}" autosize="{{autosize}}" bindchange="ondigitalResourceInput" /> |
| | | </view> |
| | | </view> |
| | | <view class="from-item"> |
| | | <view class="label"> <text class="empty"></text>存在的其他问题: </view> |
| | | <view class="item-content"> |
| | | <t-textarea placeholder="请输入其他问题" value="{{teacherInfo.otherExistingIssues}}" disableDefaultPadding="{{true}}" autosize="{{autosize}}" bindchange="onOtherExistingIssuesInput" /> |
| | | </view> |
| | | </view> |
| | | <view class="btn-area"> |
| | | <button class="submit" bindtap="submit" loading="{{loading}}">提交</button> |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
| | | </scroll-view> |
| | | </view> |
New file |
| | |
| | | /* packageDomain/pages/publickBookForm/index.wxss */ |
| | | page { |
| | | background: #F2F3F8; |
| | | } |
| | | |
| | | .container { |
| | | width: 100vw; |
| | | height: 100vh; |
| | | } |
| | | |
| | | .content { |
| | | height: calc(100vh - env(safe-area-inset-bottom)); |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | .tips { |
| | | line-height: 24px; |
| | | font-size: 28rpx; |
| | | padding: 5px; |
| | | background: rgba(255, 108, 0, 0.1); |
| | | color: #ff6c00; |
| | | /* text-align: center; */ |
| | | margin: 0 auto 20rpx auto; |
| | | } |
| | | |
| | | .page-body { |
| | | font-size: 28rpx; |
| | | } |
| | | |
| | | .baseInfoBox { |
| | | background: #fff; |
| | | margin-top: 20rpx; |
| | | border-radius: 10rpx; |
| | | padding: 30rpx; |
| | | } |
| | | |
| | | .baseInfoBox .from-item { |
| | | margin-bottom: 20rpx; |
| | | } |
| | | |
| | | .baseInfoBox .from-item .label { |
| | | /* height: 68rpx; */ |
| | | line-height: 68rpx; |
| | | } |
| | | |
| | | .t-input__tips, |
| | | .from-item .label .icon { |
| | | color: #f56c6c !important; |
| | | margin-right: 5rpx; |
| | | } |
| | | |
| | | .empty { |
| | | /* padding: 0 10rpx; */ |
| | | } |
| | | |
| | | .t-input { |
| | | padding: 0 !important; |
| | | } |
| | | |
| | | .t-input__content, |
| | | .t-textarea { |
| | | border: 2rpx solid #D9D9D9 !important; |
| | | padding: 10rpx !important; |
| | | } |
| | | |
| | | .from-item .item-content { |
| | | width: 100%; |
| | | } |
| | | |
| | | .t-input__placeholder, |
| | | .t-textarea__placeholder { |
| | | font-size: 28rpx !important |
| | | } |
| | | |
| | | .t-input__wrap .t-input__content, |
| | | .t-input__control { |
| | | font-size: 28rpx !important; |
| | | } |
| | | |
| | | .submit { |
| | | background: #ff6c00; |
| | | color: #fff; |
| | | border-radius: 50rpx; |
| | | } |
| | |
| | | /> |
| | | </view> |
| | | <!-- <video show-center-play-btn="{{false}}" src="{{showData}}" bindloadedmetadata="loadedmetadata" bindtimeupdate="timeUpdate"></video> --> |
| | | <<<<<<< Updated upstream |
| | | <t-video |
| | | id="tvd" |
| | | src="{{showData}}" |
| | |
| | | bindvideoloaded="loadedmetadata" |
| | | bindtimeupdate="timeUpdate" |
| | | > |
| | | ======= |
| | | <t-video id="tvd" src="{{showData}}" style="width:100%;" bindvideoloaded="loadedmetadata" bindtimeupdate="timeUpdate" wx:if="{{!videoLoaidng}}"> |
| | | >>>>>>> Stashed changes |
| | | </t-video> |
| | | </view> |
| | | |
| | |
| | | // pages/personalCenter/publishBooks/index.js |
| | | import moment from 'moment' |
| | | const app = getApp(); |
| | | import { |
| | | getTopicMsgCmsItemFile |
| | | } from '../../../assets/js/middleGround/tool.js' |
| | | Page({ |
| | | |
| | | /** |
| | | * 页面的初始数据 |
| | | */ |
| | | data: { |
| | | |
| | | list: [], |
| | | //分页 |
| | | page: 1, |
| | | limit: 10, |
| | | pageTotalCount: 0, |
| | | bottomLoading: false, |
| | | isMoreData: false, |
| | | // 返回顶部 |
| | | isBackTop: false, |
| | | setScrollValue: 0, |
| | | skeletonLoding: true, |
| | | worksInfo: [], |
| | | info: {}, |
| | | visible: false |
| | | }, |
| | | |
| | | /** |
| | |
| | | */ |
| | | onLoad(options) { |
| | | console.log(options); |
| | | this.getType() |
| | | }, |
| | | |
| | | getType() { |
| | | const data = { |
| | | refCodes: ['jsek_publicationApplication'] |
| | | } |
| | | app.MG.resource.getCmsTypeByRefCode(data).then((res) => { |
| | | this.setData({ |
| | | worksInfo: res[0].cmsTypeLinks[0].children, |
| | | }) |
| | | this.getDataList(false) |
| | | }) |
| | | }, |
| | | getDataList(isReachBottom) { |
| | | app.MG.ugc.getTopicMessageList({ |
| | | appRefCode: app.config.appRefCode, |
| | | topicIdOrRefCode: 'bookApplication', |
| | | start: this.data.page * this.data.limit - this.data.limit, |
| | | size: this.data.limit, |
| | | sort: { |
| | | type: "Desc", |
| | | field: "CreateDate" |
| | | } |
| | | }) |
| | | .then(res => { |
| | | try { |
| | | if (res.datas.length > 0) { |
| | | res.datas.forEach((item) => { |
| | | item.createDate = moment(item.createDate).format("YYYY-MM-DD"); |
| | | let info = getTopicMsgCmsItemFile(this.data.worksInfo, item.cmsItemDataList) |
| | | if (info) { |
| | | item.info = info |
| | | } |
| | | }); |
| | | let dataList = res.datas; |
| | | //触底加载新数据并保留老数据 |
| | | if (isReachBottom) { |
| | | dataList = [...this.data.list, ...dataList] //将新数据加入老数据中 |
| | | } |
| | | this.setData({ |
| | | list: dataList, |
| | | pageTotalCount: res.totalSize, |
| | | bottomLoading: false, |
| | | isMoreData: dataList.length > 0 ? false : true, |
| | | skeletonLoding: false, |
| | | }) |
| | | } else { |
| | | this.setData({ |
| | | skeletonLoding: false, |
| | | }) |
| | | } |
| | | } catch (error) { |
| | | console.log(error) |
| | | } |
| | | }) |
| | | }, |
| | | toList(itemData) { |
| | | let info = itemData.currentTarget.dataset.info; |
| | | this.setData({ |
| | | info: info.info, |
| | | visible: true |
| | | }) |
| | | }, |
| | | onVisibleChange(e) { |
| | | this.setData({ |
| | | visible: e.detail.visible, |
| | | }); |
| | | }, |
| | | onClose() { |
| | | this.setData({ |
| | | visible: false, |
| | | }); |
| | | }, |
| | | /** |
| | | * 生命周期函数--监听页面初次渲染完成 |
| | | */ |
| | |
| | | * 页面相关事件处理函数--监听用户下拉动作 |
| | | */ |
| | | onPullDownRefresh() { |
| | | |
| | | if (this._freshing) return |
| | | this.setData({ |
| | | page: 1, |
| | | limit: 10, |
| | | pageTotalCount: 0, |
| | | bottomLoading: false, |
| | | isMoreData: false |
| | | }) |
| | | this._freshing = true; |
| | | this.setData({ |
| | | triggered: false, |
| | | }) |
| | | this.getDataList(false); |
| | | this._freshing = false |
| | | }, |
| | | |
| | | /** |
| | | * 页面上拉触底事件的处理函数 |
| | | */ |
| | | onReachBottom() { |
| | | |
| | | this.setData({ |
| | | bottomLoading: true, |
| | | isMoreData: false |
| | | }) |
| | | let bool = false; |
| | | if (this.data.pageTotalCount > this.data.list.length) { |
| | | bool = true; |
| | | this.setData({ |
| | | page: this.data.page + 1, |
| | | }) |
| | | } else { |
| | | setTimeout(() => { |
| | | this.setData({ |
| | | bottomLoading: false, |
| | | isMoreData: true |
| | | }) |
| | | }, 100) |
| | | return false; |
| | | } |
| | | this.getDataList(bool); |
| | | }, |
| | | |
| | | // 监听滚动距离 |
| | | onPageScroll(e) { |
| | | if (e && e.scrollTop >= 1000) { |
| | | this.setData({ |
| | | isBackTop: true |
| | | }) |
| | | } else { |
| | | this.setData({ |
| | | isBackTop: false |
| | | }) |
| | | } |
| | | }, |
| | | /** |
| | | * 用户点击右上角分享 |
| | | */ |
| | |
| | | { |
| | | "navigationBarTitleText": "出书申请", |
| | | "usingComponents": {} |
| | | "usingComponents": { |
| | | "t-back-top": "tdesign-miniprogram/back-top/back-top", |
| | | "t-image": "tdesign-miniprogram/image/image", |
| | | "t-pull-down-refresh": "tdesign-miniprogram/pull-down-refresh/pull-down-refresh", |
| | | "t-loading": "tdesign-miniprogram/loading/loading", |
| | | "t-popup": "tdesign-miniprogram/popup/popup", |
| | | "t-icon": "tdesign-miniprogram/icon/icon", |
| | | "t-empty": "tdesign-miniprogram/empty/empty", |
| | | "empty": "/components/empty/index" |
| | | } |
| | | } |
| | |
| | | <!--pages/personalCenter/publishBooks/index.wxml--> |
| | | <text>pages/personalCenter/publishBooks/index.wxml</text> |
| | | <view class="container" wx:if="{{!skeletonLoding}}"> |
| | | <scroll-view class="scroll content" bind:scroll="onPageScroll" model:scroll-top="{{setScrollValue}}" scroll-y refresher-enabled="{{true}}" lower-threshold="{{200}}" refresher-threshold="{{80}}" refresher-default-style="none" refresher-triggered="{{triggered}}" bindrefresherpulling="{{refresh.onPulling}}" bindrefresherrefresh="onPullDownRefresh" bindscrolltolower="onReachBottom"> |
| | | <view slot="refresher" class="refresh-container"> |
| | | <view class="loading"> |
| | | <t-loading theme="circular" size="40rpx" text="正在刷新..." class="wrapper" /> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="pageInfo" wx:if="{{list.length > 0 && !skeletonLoding}}"> |
| | | <view class="pageTotalCount">共{{pageTotalCount}}条记录</view> |
| | | <view class="content-item" wx:for="{{list}}" wx:for-item="item" wx:for-index="index" wx:key="index"> |
| | | <view class="item-con" data-info="{{item}}" bindtap="toList"> |
| | | <view class="titleBox"> |
| | | <view class="item-title">{{item.name}}</view> |
| | | </view> |
| | | <view class="createDate">{{item.createDate}}</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view wx:if="{{list.length == 0 && !skeletonLoding}}" class="empyt"> |
| | | <empty /> |
| | | </view> |
| | | <view class="bottom-loading" wx:if="{{bottomLoading}}"> |
| | | <t-loading theme="circular" size="40rpx" text="加载中..." class="wrapper" /> |
| | | </view> |
| | | <view class="bottom-loading" style="color: #ccc;font-size: 28rpx;" wx:if="{{isMoreData}}"> |
| | | <text>没有更多了</text> |
| | | </view> |
| | | </scroll-view> |
| | | <t-popup visible="{{visible}}" bind:visible-change="onVisibleChange" placement="center"> |
| | | <view class="block"> |
| | | <scroll-view class="srcolbox" scroll-y scroll-height-animation="true"> |
| | | <view class="block-content"> |
| | | <view class="label">选题名称:</view> |
| | | <view class="infoCon">{{info.topicName}}</view> |
| | | <view class="label">申报人:</view> |
| | | <view class="infoCon">{{info.declarer}}</view> |
| | | <view class="label">申报单位:</view> |
| | | <view class="infoCon">{{info.declarationUnit}}</view> |
| | | <view class="label">学科专业:</view> |
| | | <view class="infoCon">{{info.disciplineMajor}}</view> |
| | | <view class="label">作者基本情况:</view> |
| | | <view class="infoCon">{{info.authorBasicInformation}}</view> |
| | | <view class="label">联系电话:</view> |
| | | <view class="infoCon">{{info.phone}}</view> |
| | | <view class="label">邮箱:</view> |
| | | <view class="infoCon">{{info.email}}</view> |
| | | <view class="label">读者对象:</view> |
| | | <view class="infoCon">{{info.targetReaders}}</view> |
| | | <view class="label">选题特色:</view> |
| | | <view class="infoCon">{{info.topicFeatures}}</view> |
| | | <view class="label">选题学术影响与预期社会效益:</view> |
| | | <view class="infoCon">{{info.topicImpactAndExpected || '-'}}</view> |
| | | <view class="label">选题的进度安排:</view> |
| | | <view class="infoCon">{{info.topicProgress || '-'}}</view> |
| | | <view class="label">市场分析:</view> |
| | | <view class="infoCon">{{info.marketAnalysis || '-'}}</view> |
| | | <view class="label">营销与宣传推广计划:</view> |
| | | <view class="infoCon">{{info.marketingAndPromotionPlan || '-'}}</view> |
| | | <view class="label">配套数字资源开发方案:</view> |
| | | <view class="infoCon">{{info.digitalResourceDevelopmentPlan|| '-'}}</view> |
| | | <view class="label">存在的其他问题:</view> |
| | | <view class="infoCon">{{info.otherExistingIssues || '-'}}</view> |
| | | </view> |
| | | </scroll-view> |
| | | <t-icon t-class="close-btn" name="close-circle" size="64rpx" color="#fff" bind:tap="onClose" /> |
| | | </view> |
| | | </t-popup> |
| | | <t-back-top theme="round" wx:if="{{isBackTop}}" text="顶部" bind:to-top="onToTop"></t-back-top> |
| | | </view> |
| | |
| | | /* pages/personalCenter/publishBooks/index.wxss */ |
| | | .container { |
| | | width: 100vw; |
| | | height: 100vh; |
| | | background: #F2F3F8; |
| | | } |
| | | |
| | | .content { |
| | | height: calc(100vh - env(safe-area-inset-bottom)); |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | .pageInfo { |
| | | padding: 40rpx 20rpx; |
| | | } |
| | | |
| | | .pageTotalCount { |
| | | font-size: 28rpx; |
| | | } |
| | | |
| | | .content-item { |
| | | padding: 20rpx 0; |
| | | background: #fff; |
| | | border-radius: 10rpx; |
| | | margin: 30rpx 0; |
| | | } |
| | | |
| | | .content-item .icon { |
| | | width: 58rpx; |
| | | height: 58rpx; |
| | | } |
| | | |
| | | .content-item .icon .img { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .item-con { |
| | | margin-left: 30rpx; |
| | | } |
| | | |
| | | .titleBox .item-title { |
| | | font-weight: bold; |
| | | flex: 1; |
| | | height: 40rpx; |
| | | line-height: 40rpx; |
| | | display: -webkit-box; |
| | | margin-top: 20rpx; |
| | | -webkit-box-orient: vertical; |
| | | -webkit-line-clamp: 1; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .createDate { |
| | | font-size: 24rpx; |
| | | margin: 20rpx 0; |
| | | } |
| | | |
| | | .description { |
| | | font-size: 24rpx; |
| | | height: 80rpx; |
| | | line-height: 40rpx; |
| | | display: -webkit-box; |
| | | margin-top: 20rpx; |
| | | -webkit-box-orient: vertical; |
| | | -webkit-line-clamp: 2; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .refresh-container { |
| | | margin: 0 auto; |
| | | } |
| | | |
| | | .bottom-loading, |
| | | .loading { |
| | | padding: 20rpx; |
| | | text-align: center; |
| | | } |
| | | |
| | | .body-loading { |
| | | padding: 200rpx 0; |
| | | text-align: center; |
| | | } |
| | | |
| | | .block { |
| | | position: relative; |
| | | width: 90vw; |
| | | height: 80vh; |
| | | background: var(--td-bg-color-container); |
| | | border-radius: 16rpx; |
| | | } |
| | | |
| | | .srcolbox { |
| | | width: 100%; |
| | | height: 78vh; |
| | | white-space: nowrap; |
| | | |
| | | } |
| | | |
| | | .block-content { |
| | | padding: 20rpx; |
| | | } |
| | | |
| | | .label { |
| | | font-weight: bold; |
| | | font-size: 28rpx; |
| | | } |
| | | |
| | | .infoCon { |
| | | padding: 10rpx 0; |
| | | font-size: 28rpx; |
| | | color: #666; |
| | | } |
| | | |
| | | .close-btn { |
| | | position: absolute; |
| | | left: 50%; |
| | | margin-left: -32rpx; |
| | | bottom: calc(-1 * (48rpx + 64rpx)); |
| | | } |
| | |
| | | }, |
| | | { |
| | | value: "timeAsc", |
| | | label: "出版时间正序", |
| | | label: "创建时间正序", |
| | | }, |
| | | { |
| | | value: "timeDesc", |
| | | label: "出版时间倒序", |
| | | label: "创建时间倒序", |
| | | }, |
| | | ], |
| | | }, |
| | |
| | | this.setData({ |
| | | "product.value": e.detail.value, |
| | | }); |
| | | |
| | | this.bookExhibitionGet(); |
| | | }, |
| | | onOpend() {}, |
| | |
| | | <view class="menuBox"> |
| | | <t-dropdown-menu> |
| | | <t-dropdown-item options="{{product.options}}" default-value="{{product.value}}" bindchange="onChange" /> |
| | | |
| | | <!-- disabled="{{keynoteDisabled}}" --> |
| | | <t-dropdown-item label=" 重点项目" disabled="{{disbaleProject}}" options="{{multipleSelect.options}}" bindchange="handleMultipleSelect" multiple bind:confirm="handleConfirm" bind:reset="handleReset" value="{{multipleSelect.value}}"> |
| | | </t-dropdown-item> |
| | |
| | | .assembleContent { |
| | | background-color: #F2F3F8; |
| | | min-height: 90vh; |
| | | margin-top: 240rpx; |
| | | margin-top: 268rpx; |
| | | } |
| | | |
| | | .t-dropdown-menu:after, |
| | |
| | | position: fixed; |
| | | top: 0px; |
| | | background-color: #fff; |
| | | height: 120px; |
| | | height: 268rpx; |
| | | z-index: 999; |
| | | } |
| | | |
| | |
| | | <view class="page-header"> |
| | | <!-- 搜索框 --> |
| | | <view class="search"> |
| | | <t-search |
| | | t-class-input="t-search__input" |
| | | t-class-input-container="t-search__input-container" |
| | | placeholder="请输入关键词/书名/ISBN/作者" |
| | | leftIcon="" |
| | | bind:submit="navToSearchPage" |
| | | placeholder-style="{{placeholderstyle}}" |
| | | > |
| | | <t-icon |
| | | slot="left-icon" |
| | | prefix="wr" |
| | | name="search" |
| | | size="40rpx" |
| | | color="#bbb" |
| | | /> |
| | | <t-search t-class-input="t-search__input" t-class-input-container="t-search__input-container" placeholder="请输入关键词/书名/ISBN/作者/项目负责人" leftIcon="" bind:submit="navToSearchPage" placeholder-style="{{placeholderstyle}}"> |
| | | <t-icon slot="left-icon" prefix="wr" name="search" size="40rpx" color="#bbb" /> |
| | | </t-search> |
| | | </view> |
| | | </view> |
| | |
| | | <view class="side-bar-wrapper" wx:if="{{!loading}}"> |
| | | <view class="tab-left"> |
| | | <t-side-bar value="{{assortCheck.code}}" bind:change="changeAssort"> |
| | | <t-side-bar-item |
| | | wx:for="{{assortList}}" |
| | | wx:key="id" |
| | | value="{{item.refCode}}" |
| | | label="{{item.name}}" |
| | | badge-props="{{item.badgeProps}}" |
| | | /> |
| | | <t-side-bar-item wx:for="{{assortList}}" wx:key="id" value="{{item.refCode}}" label="{{item.name}}" badge-props="{{item.badgeProps}}" /> |
| | | </t-side-bar> |
| | | </view> |
| | | <view class="page-right"> |
| | |
| | | <!-- 一级分类 --> |
| | | <view class="tab-top"> |
| | | <view class="myScroll"> |
| | | <view |
| | | wx:for="{{startList}}" |
| | | wx:key="id" |
| | | class="row {{startCheck.id == item.id ? 'tab-active' : ''}}" |
| | | bind:tap="tabClick" |
| | | data-tabData="{{item}}" |
| | | >{{item.name}}</view |
| | | > |
| | | <view wx:for="{{startList}}" wx:key="id" class="row {{startCheck.id == item.id ? 'tab-active' : ''}}" bind:tap="tabClick" data-tabData="{{item}}">{{item.name}}</view> |
| | | </view> |
| | | </view> |
| | | <!-- 内容 --> |
| | | <scroll-view |
| | | scroll-y="{{true}}" |
| | | class="class-list" |
| | | scroll-into-view="{{ 'list' + startCheck.id}}" |
| | | > |
| | | <view |
| | | wx:for="{{startList}}" |
| | | wx:for-item="item" |
| | | wx:key="id" |
| | | id="{{ 'list' + item.id}}" |
| | | class="class-box" |
| | | wx:if="{{!stairListLoading}}" |
| | | > |
| | | <scroll-view scroll-y="{{true}}" class="class-list" scroll-into-view="{{ 'list' + startCheck.id}}"> |
| | | <view wx:for="{{startList}}" wx:for-item="item" wx:key="id" id="{{ 'list' + item.id}}" class="class-box" wx:if="{{!stairListLoading}}"> |
| | | <view class="class-name">{{item.name}}</view> |
| | | <view class="class-content"> |
| | | <view |
| | | wx:for="{{item.children}}" |
| | | wx:for-item="citem" |
| | | wx:key="id" |
| | | class="book-box" |
| | | bind:tap="goPageList" |
| | | data-stair="{{citem}}" |
| | | data-tabData="{{item}}" |
| | | wx:if="{{item.children.length}}" |
| | | > |
| | | <view wx:for="{{item.children}}" wx:for-item="citem" wx:key="id" class="book-box" bind:tap="goPageList" data-stair="{{citem}}" data-tabData="{{item}}" wx:if="{{item.children.length}}"> |
| | | <view class="assort-img"> |
| | | <image |
| | | src="{{citem.icon ? citem.icon : '/static/images/default-book-img.png'}}" |
| | | mode="aspectFit" |
| | | /> |
| | | <image src="{{citem.icon ? citem.icon : '/static/images/default-book-img.png'}}" mode="aspectFit" /> |
| | | </view> |
| | | <view class="classify">{{citem.name}}</view> |
| | | </view> |
| | | <view |
| | | wx:if="{{!item.children.length}}" |
| | | class="book-box" |
| | | bind:tap="goPageList" |
| | | data-tabData="{{item}}" |
| | | > |
| | | <view wx:if="{{!item.children.length}}" class="book-box" bind:tap="goPageList" data-tabData="{{item}}"> |
| | | <view class="assort-img"> |
| | | <image |
| | | src="{{item.icon ? item.icon : '/static/images/default-book-img.png'}}" |
| | | mode="aspectFit" |
| | | /> |
| | | <image src="{{item.icon ? item.icon : '/static/images/default-book-img.png'}}" mode="aspectFit" /> |
| | | </view> |
| | | <text class="classify">全部</text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view |
| | | wx:if="{{stairListLoading}}" |
| | | style="width: 100%; height: min-content" |
| | | > |
| | | <t-skeleton |
| | | row-col="{{rowCol}}" |
| | | theme="paragraph" |
| | | animation="gradient" |
| | | loading="{{stairListLoading}}" |
| | | ></t-skeleton> |
| | | <view wx:if="{{stairListLoading}}" style="width: 100%; height: min-content"> |
| | | <t-skeleton row-col="{{rowCol}}" theme="paragraph" animation="gradient" loading="{{stairListLoading}}"></t-skeleton> |
| | | </view> |
| | | <view class="bottom-box"> </view> |
| | | </scroll-view> |
| | |
| | | /> |
| | | </view> --> |
| | | </view> |
| | | </page-meta> |
| | | </page-meta> |
| | |
| | | const app = getApp(); |
| | | // import { getPublicImage } from '@/assets/js/middleGround/tool.js' |
| | | import { |
| | | loginInfo |
| | | } from '../../assets/js/login'; |
| | |
| | | tabList: [], |
| | | courseList: [], |
| | | searchValue: '', |
| | | active: 0, |
| | | activeItem: null, |
| | | loading: false, |
| | | shoppingCartGetId: [] |
| | |
| | | barHeight: systInfo.statusBarHeight, |
| | | navBarHeight: navBarHeight, |
| | | }); |
| | | if (options.courseTypeActive) { |
| | | this.setData({ |
| | | active: JSON.parse(options.courseTypeActive), |
| | | }); |
| | | } |
| | | this.getCourseTypeListList() |
| | | this.getShoppingCartList() |
| | | }, |
| | |
| | | wx.navigateBack(); |
| | | }, |
| | | getCourseTypeListList() { |
| | | |
| | | this.setData({ |
| | | loading: true |
| | | }) |
| | |
| | | app.MG.store.getStoreChannelList(data).then((res) => { |
| | | // 去除数组最后一个元素 |
| | | const newData = res.datas.slice(0, res.datas.length - 1) |
| | | |
| | | |
| | | |
| | | this.setData({ |
| | | tabList: newData, |
| | | activeItem: newData[0], |
| | | loading: false |
| | | }) |
| | | this.getCourseList(newData[0]) |
| | | if (this.data.active) { |
| | | this.getCourseList(newData[this.data.active]) |
| | | } else { |
| | | this.setData({ |
| | | activeItem: newData[0], |
| | | }) |
| | | this.getCourseList(newData[0]) |
| | | } |
| | | |
| | | }) |
| | | }, |
| | | |
| | |
| | | </view> |
| | | <t-search model:value="{{searchValue}}" shape="round" placeholder="请输入关键词/书名/ISBN/作者" class="navBar-search" style="width: 464rpx" bind:submit="searchBook" /> |
| | | </view> |
| | | <t-tabs defaultValue="{{0}}" bind:change="onTabsChange" t-class="custom-tabs" t-class-content="custom-panel"> |
| | | <t-tabs defaultValue="{{active}}" bind:change="onTabsChange" t-class="custom-tabs" t-class-content="custom-panel"> |
| | | <t-tab-panel wx:for="{{tabList}}" wx:key="index" wx:for-item="item" wx:for-index="index" label="{{item.name}}" value="{{index}}"> |
| | | <view class="contentBox"> |
| | | <view class="titleBox"> |
| | |
| | | <view class="frameBox"></view> |
| | | <view class="titleTextBox"> |
| | | <!-- <image src="/static/images/digitalCourses/zhuantitaolun@2x.png" mode="aspectFit" /> --> |
| | | <view>数字课程列表</view> |
| | | <view>数字教材列表</view> |
| | | </view> |
| | | </view> |
| | | |
| | |
| | | activeItem: 0, //精选课程默认选中 |
| | | courseTypeList: [], //精选课程分类 |
| | | courseList: [], |
| | | courseTypeActive: [], |
| | | bookTypeList: [], //图书类型 |
| | | activeItem1: 0, |
| | | bookTypeData: {}, |
| | |
| | | } else { |
| | | // 如果是第一次登录,会跳转至绑定用户信息页面,填写完用户信息后进行登录并储存token和用户信息,结束后跳转回当前页面(携带页面参数) |
| | | } |
| | | |
| | | this.registe() |
| | | this.init(); |
| | | }, |
| | | onReachBottom() {}, |
| | |
| | | 'baseRefresh.value': false, |
| | | }) |
| | | }, 500); |
| | | }, |
| | | |
| | | registe() { |
| | | app.MG.app.creatUserBehavior({ |
| | | refCode: "sign" |
| | | }).then(res => {}); |
| | | }, |
| | | |
| | | getBannerList() { |
| | |
| | | tabChangeHandle(item) { |
| | | let info = this.data.courseTypeList[item.detail.value] |
| | | this.setData({ |
| | | courseList: [] |
| | | courseList: [], |
| | | courseTypeActive: item.detail.value |
| | | }) |
| | | this.getCourseList(info) |
| | | }, |
| | |
| | | }); |
| | | }, |
| | | goSubjectDetail(e) { |
| | | const { |
| | | book |
| | | } = e.currentTarget.dataset; |
| | | wx.showToast({ |
| | | title: "建设中", |
| | | icon: 'none', |
| | | duration: 1000 |
| | | }) |
| | | const item = e.currentTarget.dataset.book |
| | | console.log(item); |
| | | wx.navigateTo({ |
| | | url: '/pages/specialDiscussion/webView/index?link=' + item.jsek_link |
| | | }); |
| | | }, |
| | | goCourseDetail(e) { |
| | | const { |
| | | book |
| | | } = e.currentTarget.dataset; |
| | | wx.showToast({ |
| | | title: "建设中", |
| | | icon: 'none', |
| | | duration: 1000 |
| | | }) |
| | | wx.navigateTo({ |
| | | url: '/pages/digitalCourses/digitalCoursesDetails/index?id=' + book.id, |
| | | }); |
| | | }, |
| | | goReadBookDetail(e) { |
| | | const { |
| | |
| | | const { |
| | | book |
| | | } = e.currentTarget.dataset; |
| | | wx.showToast({ |
| | | title: "建设中", |
| | | icon: 'none', |
| | | duration: 1000 |
| | | }) |
| | | wx.navigateTo({ |
| | | url: '/pages/digitalTextbooks/digitalTextbooksDetails/index?id=' + book.id, |
| | | }); |
| | | }, |
| | | |
| | | |
| | |
| | | const { |
| | | info |
| | | } = e.currentTarget.dataset; |
| | | wx.showToast({ |
| | | title: "建设中", |
| | | icon: 'none', |
| | | duration: 1000 |
| | | }) |
| | | return; |
| | | if (wx.getStorageSync(app.config.tokenKey)) { |
| | | let query = { |
| | | start: 0, |
| | |
| | | wx.navigateTo({ |
| | | url: '/pages/home/digitalRead/index' |
| | | }) |
| | | } else if (type == "zhuantitaolun") { |
| | | wx.navigateTo({ |
| | | url: '/pages/specialDiscussion/index' |
| | | }) |
| | | |
| | | } else if (type == "jingxuankecheng") { |
| | | wx.navigateTo({ |
| | | url: '/pages/digitalCourses/index?courseTypeActive=' + this.data.courseTypeActive |
| | | }) |
| | | } else if (type == "shuzijiaocai") { |
| | | wx.navigateTo({ |
| | | url: '/pages/digitalTextbooks/index' |
| | | }) |
| | | } else { |
| | | wx.showToast({ |
| | | title: "建设中", |
| | |
| | | </view> |
| | | <view class="t-grid-item__words item--t-grid-item__words t-grid-item__words--vertical item--t-grid-item__words--vertical" id="b8219551--t_grid_item_24"> |
| | | <view class="t-grid-item__text item--t-grid-item__text t-grid-item__text--small item--t-grid-item__text--small t-grid-item__text--vertical item--t-grid-item__text--vertical sk-transparent sk-text-22-7273-927 sk-text" style="background-position-x: 50%;"> |
| | | 专题讨论 |
| | | 专题活动 |
| | | </view> |
| | | </view> |
| | | </view> |
| | |
| | | </view> |
| | | <view class="search"> |
| | | <image class="icon" src="/static/images/home/nav_icon_scan.png" bindtap="onIconScanTap" /> |
| | | <t-search t-class-input="t-search__input" t-class-input-container="t-search__input-container" placeholder="请输入关键词/书名/ISBN/作者" leftIcon="" bind:submit="onRetrievalPage" model:value="{{searchVal}}"> |
| | | <t-search t-class-input="t-search__input" t-class-input-container="t-search__input-container" placeholder="请输入关键词/书名/ISBN/作者/项目负责人" leftIcon="" bind:submit="onRetrievalPage" model:value="{{searchVal}}"> |
| | | <t-icon slot="left-icon" prefix="wr" name="search" size="40rpx" color="#bbb" bind:tap="navToSearchPage" /> |
| | | </t-search> |
| | | </view> |
| | |
| | | </view> |
| | | <view class="tabCardPublic iconTwo"> |
| | | <view class="icon"> |
| | | <image src="/static/images/home/tushufuwu2.png" mode="aspectFit" class="iconImage" /> |
| | | </view> |
| | | <view data-info="{{'tushufuwu'}}" bindtap="onMoreGuide" class="flex"> |
| | | <text class="more">更多</text> |
| | | <t-icon name="chevron-right" size="32rpx" color="#ff6d00" /> |
| | | </view> |
| | | </view> |
| | | <view class="home-page-tabs"> |
| | | <t-tabs t-class="t-tabs" split="{{false}}" position="{{'home'}}" defaultValue="{{activeItem1}}" bind:change="tabBookClick"> |
| | | <t-tab-panel wx:for="{{bookTypeList}}" wx:for-index="index" wx:key="index" label="{{item.name}}" value="{{index}}" /> |
| | | </t-tabs> |
| | | </view> |
| | | <view class="listBox2"> |
| | | <view wx:if="{{booksList.length > 0}}" class="flex"> |
| | | <view wx:for="{{booksList}}" wx:for-item="item" wx:for-index="index" wx:key="index" class="booksListItemBox"> |
| | | <view class="listItem" bind:tap="goDetail" data-book="{{item}}"> |
| | | <view class="specialSubject-img"> |
| | | <image src="{{item.icon ? item.icon : '/static/images/default-book-img.png'}}" mode="aspectFit" class="img" aria-label="{{item.name}}" /> |
| | | </view> |
| | | <view class="body-info"> |
| | | <view class="name">{{item.name}}</view> |
| | | <view class="author">{{item.author}}</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="empyt" wx:else> |
| | | <!-- <t-empty icon="folder-open" description="暂无数据" font-size="80" /> --> |
| | | <empty /> |
| | | </view> |
| | | </view> |
| | | <view class="tabCardPublic iconTwo"> |
| | | <view class="icon"> |
| | | <image src="/static/images/home/jingxuankecheng2.png" mode="aspectFit" class="iconImage" /> |
| | | </view> |
| | | <view data-info="{{'jingxuankecheng'}}" bindtap="onMoreGuide" class="flex"> |
| | |
| | | <empty /> |
| | | </view> |
| | | </view> |
| | | <view class="tabCardPublic iconTwo"> |
| | | <view class="icon"> |
| | | <image src="/static/images/home/tushufuwu2.png" mode="aspectFit" class="iconImage" /> |
| | | </view> |
| | | <view data-info="{{'tushufuwu'}}" bindtap="onMoreGuide" class="flex"> |
| | | <text class="more">更多</text> |
| | | <t-icon name="chevron-right" size="32rpx" color="#ff6d00" /> |
| | | </view> |
| | | </view> |
| | | <view class="home-page-tabs"> |
| | | <t-tabs t-class="t-tabs" split="{{false}}" position="{{'home'}}" defaultValue="{{activeItem1}}" bind:change="tabBookClick"> |
| | | <t-tab-panel wx:for="{{bookTypeList}}" wx:for-index="index" wx:key="index" label="{{item.name}}" value="{{index}}" /> |
| | | </t-tabs> |
| | | </view> |
| | | <view class="listBox2"> |
| | | <view wx:if="{{booksList.length > 0}}" class="flex"> |
| | | <view wx:for="{{booksList}}" wx:for-item="item" wx:for-index="index" wx:key="index" class="booksListItemBox"> |
| | | <view class="listItem" bind:tap="goDetail" data-book="{{item}}"> |
| | | <view class="specialSubject-img"> |
| | | <image src="{{item.icon ? item.icon : '/static/images/default-book-img.png'}}" mode="aspectFit" class="img" aria-label="{{item.name}}" /> |
| | | </view> |
| | | <view class="body-info"> |
| | | <view class="name">{{item.name}}</view> |
| | | <view class="author">{{item.author}}</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="empyt" wx:else> |
| | | <!-- <t-empty icon="folder-open" description="暂无数据" font-size="80" /> --> |
| | | <empty /> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="tabCardPublic iconTwo"> |
| | | <view class="icon"> |
| | | <image src="/static/images/home/shuziyuedu2.png" mode="aspectFit" class="iconImage" /> |
| | |
| | | const app = getApp(); |
| | | import moment from 'moment' |
| | | import { |
| | | loginInfo |
| | | } from '../../assets/js/login'; |
| | |
| | | { |
| | | title: '出书申请', |
| | | icon: '/static/images/personal/chushu.png', |
| | | url: '', |
| | | url: '/packagePersonal/pages/publishBooks/index', |
| | | type: 'publishBooks', |
| | | } |
| | | ]; |
| | |
| | | size: '10rpx', |
| | | }, |
| | | scrollTop: 0, |
| | | visibleIntegral: false, |
| | | recordList: [] |
| | | }, |
| | | /** |
| | | * 生命周期函数--监听页面加载 |
| | |
| | | currAuthStep: 2, |
| | | }); |
| | | this.getUserInfo() |
| | | this.getIntegral() |
| | | } |
| | | }) |
| | | } else { |
| | |
| | | currAuthStep: 3, |
| | | }); |
| | | this.getUserInfo() |
| | | this.getIntegral() |
| | | } |
| | | }, |
| | | /** |
| | |
| | | 'baseRefresh.value': true, |
| | | }) |
| | | this.getUserInfo() |
| | | this.getIntegral() |
| | | wx.stopPullDownRefresh() |
| | | }, |
| | | /** |
| | |
| | | }); |
| | | }, |
| | | |
| | | getIntegral() { |
| | | app.MG.store |
| | | .getUserWallet({ |
| | | type: 'integral' |
| | | }) |
| | | .then((res) => { |
| | | this.setData({ |
| | | integral: res.balance, |
| | | }); |
| | | }) |
| | | }, |
| | | getIntegralList() { |
| | | app.MG.store |
| | | .getWalletHistory({ |
| | | Size: 999, |
| | | Start: 0, |
| | | sort: { |
| | | type: 'Desc', |
| | | field: 'CreateDate' |
| | | }, |
| | | type: 'integral' |
| | | }) |
| | | .then((res) => { |
| | | if (res.datas.length > 0) { |
| | | res.datas.forEach((element) => { |
| | | element.createDate = moment(element.createDate).format('YYYY-MM-DD HH:mm:ss') |
| | | if (element.refType == 'sign') { |
| | | element.type = '每日登录' |
| | | } |
| | | if (element.refType == 'Reward') { |
| | | element.type = '上传资源奖励' |
| | | } |
| | | if (element.refType == 'OrderCoinBonus') { |
| | | element.type = '订单支付奖励' |
| | | } |
| | | if (element.refType == 'Order' && element.value < 0) { |
| | | element.type = '订单支付抵扣' |
| | | } |
| | | if (element.refType == 'Order' && element.value > 0) { |
| | | element.type = '订单取消退回' |
| | | } |
| | | if (element.refType == 'AdminRecharge') { |
| | | element.type = '管理员充值' |
| | | } |
| | | }) |
| | | this.setData({ |
| | | recordList: res.datas, |
| | | visibleIntegral: true |
| | | }); |
| | | } |
| | | }) |
| | | }, |
| | | onVisibleIntegralChange(e) { |
| | | this.setData({ |
| | | visibleIntegral: e.detail.visible, |
| | | }); |
| | | }, |
| | | onClose() { |
| | | this.setData({ |
| | | visibleIntegral: false, |
| | | }); |
| | | }, |
| | | |
| | | //点击目录 |
| | | toPages(item) { |
| | | let info = item.currentTarget.dataset.info |
| | |
| | | "t-user-center-card": "./components/user-center-card/index", |
| | | "t-image": "tdesign-miniprogram/image/image", |
| | | "t-popup": "tdesign-miniprogram/popup/popup", |
| | | "t-icon": "tdesign-miniprogram/icon/icon", |
| | | "t-pull-down-refresh": "tdesign-miniprogram/pull-down-refresh/pull-down-refresh" |
| | | }, |
| | | "enablePullDownRefresh": false |
| | |
| | | </view> |
| | | </view> |
| | | <view class="line"></view> |
| | | <view> |
| | | <view bindtap="getIntegralList"> |
| | | <view>{{integral}}</view> |
| | | <view class="title">积分</view> |
| | | </view> |
| | |
| | | </view> |
| | | </view> |
| | | </t-popup> |
| | | <t-popup visible="{{visibleIntegral}}" bind:visible-change="onVisibleIntegralChange" placement="center"> |
| | | <view class="blockIntegral"> |
| | | <scroll-view class="srcolbox" scroll-y scroll-height-animation="true"> |
| | | <view class="block-content"> |
| | | <view class="tableHeader"> |
| | | <view class="lable">类型</view> |
| | | <view class="value">数量</view> |
| | | <view class="createDate">时间</view> |
| | | </view> |
| | | <view class="content-item" wx:for="{{recordList}}" wx:for-item="item" wx:for-index="index" wx:key="index"> |
| | | <view class="lable">{{item.type}}</view> |
| | | <view class="value yes" wx:if="item.value > 0">{{'+' + item.value}}</view> |
| | | <view class="value no" wx:else>{{item.value}}</view> |
| | | <view class="createDate">{{item.createDate ? item.createDate : '-'}}</view> |
| | | </view> |
| | | <view class="content-item"> |
| | | <view class="lable">总计</view> |
| | | <view class="value totle">{{integral}}</view> |
| | | <view class="createDate"></view> |
| | | </view> |
| | | </view> |
| | | </scroll-view> |
| | | <t-icon t-class="close-btn" name="close-circle" size="64rpx" color="#fff" bind:tap="onClose" /> |
| | | </view> |
| | | </t-popup> |
| | | |
| | | </view> |
| | | </t-pull-down-refresh> |
| | | </view> |
| | |
| | | background: #ff6c00; |
| | | color: #fff; |
| | | border-radius: 50rpx; |
| | | } |
| | | |
| | | .blockIntegral { |
| | | position: relative; |
| | | width: 90vw; |
| | | height: 70vh; |
| | | background: var(--td-bg-color-container); |
| | | border-radius: 16rpx; |
| | | } |
| | | |
| | | .srcolbox { |
| | | width: 100%; |
| | | height: 70vh; |
| | | white-space: nowrap; |
| | | } |
| | | |
| | | .block-content { |
| | | padding: 20rpx; |
| | | font-size: 28rpx; |
| | | color: #606266 |
| | | } |
| | | |
| | | .tableHeader { |
| | | display: flex; |
| | | background-color: #f3f3f3; |
| | | line-height: 48rpx; |
| | | padding: 10rpx; |
| | | border-bottom: 1px solid #f4f4f4; |
| | | } |
| | | |
| | | .blockIntegral .content-item { |
| | | display: flex; |
| | | line-height: 48rpx; |
| | | padding: 10rpx; |
| | | border-bottom: 2rpx solid #f4f4f4; |
| | | } |
| | | |
| | | .blockIntegral .lable { |
| | | width: 260rpx; |
| | | } |
| | | |
| | | .blockIntegral .value { |
| | | width: 100rpx; |
| | | } |
| | | |
| | | .blockIntegral .totle { |
| | | font-weight: bold; |
| | | |
| | | } |
| | | |
| | | .blockIntegral .createDate { |
| | | flex: 1; |
| | | } |
| | | |
| | | .close-btn { |
| | | position: absolute; |
| | | left: 50%; |
| | | margin-left: -32rpx; |
| | | bottom: calc(-1 * (48rpx + 64rpx)); |
| | | } |
| | |
| | | 'Name*': this.data.searchVal.trim(), |
| | | '||author*': this.data.searchVal.trim(), |
| | | '||isbn*': this.data.searchVal.trim(), |
| | | '||seriesName*': this.data.searchVal.trim() |
| | | '||seriesName*': this.data.searchVal.trim(), |
| | | '||projectLeader*': this.data.searchVal.trim() |
| | | } |
| | | |
| | | } |
| | |
| | | 'Name*': this.data.searchVal.trim(), |
| | | '||author*': this.data.searchVal.trim(), |
| | | '||isbn*': this.data.searchVal.trim(), |
| | | '||seriesName*': this.data.searchVal.trim() |
| | | '||seriesName*': this.data.searchVal.trim(), |
| | | '||projectLeader*': this.data.searchVal.trim() |
| | | } |
| | | } |
| | | //课程 |
| | |
| | | console.log(this.data.searchValue); |
| | | this.ceShiList() |
| | | this.specialDiscussionGet(this.data.batList[this.data.batListValue]) |
| | | |
| | | |
| | | }, |
| | | |
| | | }) |
| | |
| | | wx.redirectTo({ |
| | | url: `/packageBookService/pages/bookServices/examination/examination?bookId=${ |
| | | this.data.bookId |
| | | }&productLinkPath=${this.data.productLinkPath}& =${ |
| | | }&productLinkPath=${this.data.productLinkPath}&rootCmsItemId=${ |
| | | this.data.rootCmsItemId |
| | | }&idPathList=${JSON.stringify(idPathList)}&answerTitle=${ |
| | | this.data.answerTitle |
| | |
| | | text: '数字课程', |
| | | key: 2, |
| | | icon: '/static/images/home/shuzikecheng@2x.png', |
| | | // url: '/pages/digitalCourses/index', |
| | | url: '' |
| | | url: '/pages/digitalCourses/index', |
| | | // url: '' |
| | | }, |
| | | { |
| | | text: '数字教材', |
| | | key: 3, |
| | | icon: '/static/images/home/shuzijiaocai@2x.png', |
| | | // url: '/pages/digitalTextbooks/index', |
| | | url: '' |
| | | url: '/pages/digitalTextbooks/index', |
| | | // url: '' |
| | | }, |
| | | { |
| | | text: '专题讨论', |
| | | text: '专题活动', |
| | | key: 4, |
| | | icon: '/static/images/home/zhuantitaolun@2x.png', |
| | | // url: '/pages/specialDiscussion/index', |
| | | url: '' |
| | | url: '/pages/specialDiscussion/index', |
| | | // url: '' |
| | | }, |
| | | { |
| | | text: '线上书展', |
| | |
| | | text: '我要出书', |
| | | key: 9, |
| | | icon: '/static/images/home/xueshuzhuzuo@2x.png', |
| | | url: '', |
| | | url: '/packageDomain/pages/publickBookForm/index', |
| | | // url: '', |
| | | }, |
| | | ], |
| | | }; |