产品方案、订单客户等

master
yujialong 3 years ago
parent c28867f2d0
commit 323c52a972
  1. 10
      apis/modules/client.js
  2. 4
      apis/modules/order.js
  3. 2
      apis/request.js
  4. 2
      manifest.json
  5. 33
      pages.json
  6. 4
      pages/addCourse/addCourse.vue
  7. 45
      pages/agreement/agreement.vue
  8. 63
      pages/clients/clients.vue
  9. 57
      pages/detail/detail.vue
  10. 9
      pages/editCourse/editCourse.vue
  11. 48
      pages/index/index.vue
  12. 25
      pages/login/login.vue
  13. 13
      pages/orderDetail/orderDetail.vue
  14. 113
      pages/orders/orders.vue
  15. 127
      pages/plans/plans.vue
  16. 3
      pages/products/products.vue
  17. BIN
      static/image/avatar.png
  18. BIN
      static/image/course1.png
  19. BIN
      static/image/login1.png
  20. BIN
      static/image/login2.png
  21. BIN
      static/image/logo.png
  22. BIN
      static/image/none.png
  23. BIN
      static/image/person-bg.png
  24. BIN
      static/image/person1.png
  25. BIN
      static/image/person2.png
  26. BIN
      static/image/person3.png
  27. BIN
      static/image/phone.png
  28. BIN
      static/image/qrcode.png
  29. BIN
      static/image/tab1-1.png
  30. BIN
      static/image/tab1.png
  31. BIN
      static/image/tab2-1.png
  32. BIN
      static/image/tab2.png
  33. BIN
      static/image/tab3-1.png
  34. BIN
      static/image/tab3.png
  35. BIN
      static/image/wechat.png

@ -6,7 +6,11 @@ export const queryCustomer = (data) => {
} }
export const list = (data) => { export const list = (data) => {
return post('nakadai/nakadai/customer/GetCustomerListBasedOnBusinessManagerId', data) return post('nakadai/applets/customer/getCustomerListBasedOnBusinessManagerId', data)
}
export const all = (data) => {
return post('nakadai/applets/customer/allClientsOfTheTeam', data)
} }
export const queryCustomerDetails = (data) => { export const queryCustomerDetails = (data) => {
@ -40,3 +44,7 @@ export const updateCustomer = (data) => {
export const getProductsSubscribedByCustomers = (data) => { export const getProductsSubscribedByCustomers = (data) => {
return get('nakadai/nakadai/customer/getProductsSubscribedByCustomers', data) return get('nakadai/nakadai/customer/getProductsSubscribedByCustomers', data)
} }
export const getTeamsByAccountId = (data) => {
return post('nakadai/applets/customer/getTeamsByAccountId', data)
}

@ -20,3 +20,7 @@ export const getDetail = (data) => {
export const renew = (data) => { export const renew = (data) => {
return post('nakadai/nakadai/orderOther/renew', data) return post('nakadai/nakadai/orderOther/renew', data)
} }
export const list = (data) => {
return post('nakadai/applets/order/getOrderBasedOnBusinessManagerId', data)
}

@ -12,7 +12,7 @@ const request = options => {
}) })
} }
const header = Object.assign({}, config.headers, { const header = Object.assign({}, config.headers, {
token: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyIiwiaWF0IjoxNjUzODc2NDczLCJleHAiOjE2NTM5MTk2NzMsImFjY291bnRJZCI6IjEifQ.sX2qEUJk_EzltbrLOos_ZFuyj_5OrXFhvq_qahbIfmc' token: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyIiwiaWF0IjoxNjU0MTM1MDg4LCJleHAiOjE2NTQxNzgyODgsImFjY291bnRJZCI6IjEifQ.wSb1OgO7vfJoRRNe9tHirTAiTd7vHQLsKFU58cQTe84'
}) })
return new Promise((resolve, reject)=>{ return new Promise((resolve, reject)=>{
const { url } = options const { url } = options

@ -49,7 +49,7 @@
/* */ /* */
"mp-weixin" : { "mp-weixin" : {
/* */ /* */
"appid" : "wx3a64f97291b0b976", "appid" : "wx77a8a2a23138998b",
"setting" : { "setting" : {
"urlCheck" : false "urlCheck" : false
}, },

@ -1,5 +1,11 @@
{ {
"pages": [ "pages": [
{
"path": "pages/index/index",
"style": {
"navigationBarTitleText": "首页"
}
},
{ {
"path" : "pages/login/login", "path" : "pages/login/login",
"style" : "style" :
@ -16,19 +22,19 @@
"enablePullDownRefresh": true "enablePullDownRefresh": true
} }
}, },
{ {
"path" : "pages/products/products", "path" : "pages/clients/clients",
"style" : "style" :
{ {
"navigationBarTitleText": "产品", "navigationBarTitleText": "客户列表",
"enablePullDownRefresh": true "enablePullDownRefresh": true
} }
}, },
{ {
"path" : "pages/clients/clients", "path" : "pages/products/products",
"style" : "style" :
{ {
"navigationBarTitleText": "客户列表", "navigationBarTitleText": "产品",
"enablePullDownRefresh": true "enablePullDownRefresh": true
} }
}, },
@ -40,12 +46,6 @@
"enablePullDownRefresh": true "enablePullDownRefresh": true
} }
}, },
{
"path": "pages/index/index",
"style": {
"navigationBarTitleText": "首页"
}
},
{ {
"path" : "pages/clientDetail/clientDetail", "path" : "pages/clientDetail/clientDetail",
"style" : "style" :
@ -158,15 +158,6 @@
"enablePullDownRefresh": false "enablePullDownRefresh": false
} }
} }
,{
"path" : "pages/agreement/agreement",
"style" :
{
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
}
], ],
"condition": { // "condition": { //
"current": 0, //list "current": 0, //list

@ -11,7 +11,7 @@
<ul class="list"> <ul class="list">
<li v-for="item in list"> <li v-for="item in list">
<uni-data-checkbox class="check" multiple v-model="item.check" :localdata="item.checkData"></uni-data-checkbox> <uni-data-checkbox class="check" multiple v-model="item.check" :localdata="item.checkData"></uni-data-checkbox>
<image class="icon" src="../../static/image/course1.png" mode="widthFix"></image> <image v-if="item.miniProgramPictureAddress" class="icon" :src="item.miniProgramPictureAddress" mode="widthFix"></image>
{{ item.productName }} {{ item.productName }}
</li> </li>
</ul> </ul>
@ -167,7 +167,7 @@
marketPrice: e.marketPrice, // marketPrice: e.marketPrice, //
finalPrice: this.orderType === 2 ? 0 : '', // finalPrice: this.orderType === 2 ? 0 : '', //
discountRate: '', // discountRate: '', //
accountNum: '', // accountNum: e.productType === 2 ? '' : 1, //
totalAmount: '', // totalAmount: '', //
isEnable: 1, // 10 isEnable: 1, // 10
ship: 0, // 01 ship: 0, // 01

@ -1,45 +0,0 @@
<template>
<view class="page">
<web-view :webview-styles="webviewStyles" :src="src"></web-view>
</view>
</template>
<script>
export default {
data() {
return {
src: '',
webviewStyles: {
progress: {
color: '#FF3333'
}
},
}
},
onShow() {
const pages = getCurrentPages()
const { options } =
this.src = `http://view.xdocin.com/xdoc?_xdoc=${pages[pages.length - 1].options.id == 1 ? 'https://huoran.oss-cn-shenzhen.aliyuncs.com/20220530/docx/1531155187057057792.docx' : 'https://huoran.oss-cn-shenzhen.aliyuncs.com/20220530/docx/1531156166884220928.docx'}`
},
methods: {
}
}
</script>
<style scoped lang="scss">
.page {
padding: 60rpx 40rpx;
background-color: #fff;
}
.title {
margin-bottom: 30rpx;
font-size: 38rpx;
text-align: center;
color: #333;
}
.content {
white-space: pre-wrap;
font-size: 28rpx;
}
</style>

@ -11,29 +11,33 @@
</view> </view>
</uni-card> </uni-card>
<ul class="list"> <template v-if="list.length">
<li v-for="item in list" @click="toDetail(item)"> <ul class="list">
<view class="name">{{ item.customerName }}</view> <li v-for="item in list" @click="toDetail(item)">
<view class="info"> <view class="name">{{ item.customerName }}</view>
<view class="left"> <view class="info">
<view class="text">联系人{{ item.orderContact }}</view> <view class="left">
<view class="text">账号{{ item.account }}</view> <view class="text">联系人{{ item.orderContact }}</view>
<view class="text">产品到期时间{{ item.expireDate.replace(' 00:00:00', '') }}</view> <view class="text">账号{{ item.account }}</view>
<view class="text">商务经理{{ item.account }}</view> <view class="text">产品到期时间{{ item.expireDate.replace(' 00:00:00', '') }}</view>
<view class="text">商务经理{{ item.account }}</view>
</view>
<view class="type">
{{ menuList[0].detailList.find(e => e.value === item.customerType).title }}客户
</view>
</view> </view>
<view class="type"> </li>
{{ menuList[0].detailList.find(e => e.value === item.customerType).title }}客户 </ul>
</view> <uni-load-more :status="status" />
</view> </template>
</li> <empty v-else></empty>
</ul>
<uni-load-more :status="status" />
<uni-icons class="plus" type="plus-filled" size="60" color="#007eff" @click="$util.to('../clientDetail/clientDetail')"></uni-icons> <uni-icons class="plus" type="plus-filled" size="60" color="#007eff" @click="$util.to('../clientDetail/clientDetail')"></uni-icons>
</view> </view>
</template> </template>
<script> <script>
import { list } from '@/apis/modules/client.js' import { list, all } from '@/apis/modules/client.js'
import slFilter from '@/components/sl-filter/sl-filter.vue' import slFilter from '@/components/sl-filter/sl-filter.vue'
export default { export default {
data() { data() {
@ -112,7 +116,8 @@
}, },
methods: { methods: {
getList() { getList() {
list({ const method = this.curTab ? all : list
method({
businessManagerId: 112, businessManagerId: 112,
customerType: this.customerType, customerType: this.customerType,
keywords: this.keyword, keywords: this.keyword,
@ -140,6 +145,7 @@
// tab // tab
tabChange(tab) { tabChange(tab) {
this.curTab = tab.id this.curTab = tab.id
this.initList()
}, },
// //
toDetail(item) { toDetail(item) {
@ -165,30 +171,31 @@
} }
} }
.list { .list {
margin-top: 10px; margin-top: 20rpx;
background-color: #fff; background-color: #fff;
li { li {
padding: 10px 20px; padding: 20rpx 40rpx;
border-bottom: 2px solid #f1f1f1; border-bottom: 1px solid #f1f1f1;
} }
.name { .num {
font-size: 16px; font-size: 32rpx;
color: #333; color: #333;
} }
.info { .info {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
margin-top: 10px; margin-top: 10rpx;
} }
.text { .text {
font-size: 13px; padding: 8rpx 0;
line-height: 24px; font-size: 26rpx;
color: #ccc; color: #ccc;
} }
.type { .type {
font-size: 14px; font-size: 28rpx;
color: $uni-primary; color: #ff7b2d;
white-space: nowrap;
} }
} }
</style> </style>

@ -1,14 +1,6 @@
<template> <template>
<view> <view class="page">
<uni-card :is-shadow="false" :border="false" is-full> <web-view :webview-styles="webviewStyles" :src="src"></web-view>
<view class="tool">
<view class="download" @click="toPage">下载</view>
</view>
<view class="content">
</view>
</uni-card>
</view> </view>
</template> </template>
@ -16,20 +8,45 @@
export default { export default {
data() { data() {
return { return {
// files: [
toPage() { 'https://huoran.oss-cn-shenzhen.aliyuncs.com/20220530/docx/1531155187057057792.docx',
this.$util.to('../send/send') 'https://huoran.oss-cn-shenzhen.aliyuncs.com/20220530/docx/1531156166884220928.docx',
} 'https://huoran.oss-cn-shenzhen.aliyuncs.com/20220601/docx/1531930503312596992.docx', //
}; 'https://huoran.oss-cn-shenzhen.aliyuncs.com/20220601/docx/1531930756791164928.docx', //
'https://huoran.oss-cn-shenzhen.aliyuncs.com/20220601/docx/1531929864150999040.docx', //
],
src: '',
webviewStyles: {
progress: {
color: '#FF3333'
}
},
}
},
onShow() {
const pages = getCurrentPages()
const { options } =
this.src = `http://view.xdocin.com/xdoc?_xdoc=${this.files[pages[pages.length - 1].options.id]}`
},
methods: {
} }
} }
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.tool { .page {
.download { padding: 60rpx 40rpx;
font-size: 13px; background-color: #fff;
color: #1f83ff; }
} .title {
margin-bottom: 30rpx;
font-size: 38rpx;
text-align: center;
color: #333;
}
.content {
white-space: pre-wrap;
font-size: 28rpx;
} }
</style> </style>

@ -125,6 +125,9 @@
row.endTime = time + optionsData row.endTime = time + optionsData
let dt = new Date(endTime) let dt = new Date(endTime)
row.endTime = (dt.getFullYear()) + "-" + (dt.getMonth() + 1) + "-" + (dt.getDate()) row.endTime = (dt.getFullYear()) + "-" + (dt.getMonth() + 1) + "-" + (dt.getDate())
let endYear = endTime - time
let endYears = endYear/1000/60/60/24
row.remainingPeriod = endYears
const unit = row.options // 使 const unit = row.options // 使
const useUnit = row.periodOfUse // 使 const useUnit = row.periodOfUse // 使
// //
@ -168,7 +171,7 @@
const unit = row.options // 使 const unit = row.options // 使
const useUnit = row.periodOfUse // 使 const useUnit = row.periodOfUse // 使
let sPrice = '' let sPrice = ''
if (row.settlementMethod === '0') { if (row.settlementMethod == 0) {
// **/**(1) // **/**(1)
const priceUnit = row.settlementPriceUnit const priceUnit = row.settlementPriceUnit
sPrice = ((!unit ? sPrice = ((!unit ?
@ -235,8 +238,8 @@
break break
} }
if (e.accountNum === '') { if (e.accountNum === '') {
// msg = '' msg = '请输入数量!'
// break break
} }
if (e.finalPrice === '') { if (e.finalPrice === '') {
msg = '请输入成交价!' msg = '请输入成交价!'

@ -1,5 +1,9 @@
<template> <template>
<view class="page"> <view class="page">
<view class="team">
<uni-data-picker class="picker-input" placeholder="切换团队" popup-title="切换团队" preload :clear-icon="false" :localdata="list" v-model="partnerId" @change="teamChange"></uni-data-picker>
</view>
<image class="banner" src="../../static/image/index/index1.png" mode="widthFix"></image> <image class="banner" src="../../static/image/index/index1.png" mode="widthFix"></image>
<ul class="entry"> <ul class="entry">
<li @click="$util.to('../clients/clients')"> <li @click="$util.to('../clients/clients')">
@ -14,7 +18,7 @@
<image class="icon" src="../../static/image/index/index5.png" mode="widthFix"></image> <image class="icon" src="../../static/image/index/index5.png" mode="widthFix"></image>
<view class="text">订单</view> <view class="text">订单</view>
</li> </li>
<li> <li @click="$util.to('../products/products')">
<image class="icon" src="../../static/image/index/index6.png" mode="widthFix"></image> <image class="icon" src="../../static/image/index/index6.png" mode="widthFix"></image>
<view class="text">产品</view> <view class="text">产品</view>
</li> </li>
@ -23,30 +27,34 @@
</template> </template>
<script> <script>
import { getTeamsByAccountId } from '@/apis/modules/client.js'
export default { export default {
data() { data() {
return { return {
text: '' partnerId: uni.getStorageSync('partnerId') || '',
list: [],
} }
}, },
onLoad() { onShow() {
this.getInfo()
}, },
methods: { methods: {
login1() { //
uni.login({ getInfo() {
provider: 'weixin', getTeamsByAccountId().then(({ data }) => {
success: function (loginRes) { const result = []
console.log(loginRes); data.map(e => {
// result.push({
uni.getUserInfo({ text: e.partnerClassificationName,
provider: 'weixin', value: e.partnerId
success: function (infoRes) { })
console.log('用户昵称为:' + JSON.stringify(infoRes)); })
} this.list = result
}); }).catch(e => {})
} },
}); //
teamChange() {
uni.setStorageSync('partnerId', this.partnerId)
} }
} }
} }
@ -58,6 +66,10 @@
padding: 30rpx 22rpx; padding: 30rpx 22rpx;
background: url(../../static/image/index/index2.png) 0 0/100% 100% no-repeat; background: url(../../static/image/index/index2.png) 0 0/100% 100% no-repeat;
} }
.team {
width: 200rpx;
margin-bottom: 30rpx;
}
.banner { .banner {
width: 100%; width: 100%;
} }

@ -21,8 +21,8 @@
<view class="agree"> <view class="agree">
<uni-data-checkbox class="check" multiple v-model="agree" :localdata="agreeData"></uni-data-checkbox> <uni-data-checkbox class="check" multiple v-model="agree" :localdata="agreeData"></uni-data-checkbox>
同意 同意
<text @click="toAgreement(1)">用户服务协议</text> <text @click="toAgreement(0)">用户服务协议</text>
<text @click="toAgreement(2)">用户隐私协议</text> <text @click="toAgreement(1)">用户隐私协议</text>
</view> </view>
</view> </view>
</view> </view>
@ -72,7 +72,7 @@
if (code) { if (code) {
this.isLogin = true this.isLogin = true
login({ code }).then(({ data }) => { login({ code }).then(({ data }) => {
// this.sessionKey = this.sessionKey = data.sessionKeyOpenId.session_key
// uni.setStorageSync('token', userInfo.avatarUrl) // uni.setStorageSync('token', userInfo.avatarUrl)
}).catch(e => {}) }).catch(e => {})
} else { } else {
@ -90,19 +90,16 @@
} }
}, },
onGetPhoneNumber(e){ onGetPhoneNumber(e){
var encryptedData =e.detail.encryptedData; const { encryptedData, iv } = e.detail
var iv = e.detail.iv; //1.使js2.使
//1.使js2.使使js const WXBizDataCrypt = require('@/libs/WXBizDataCrypt')
//WXBizDataCryptjsjs const accountInfo = uni.getAccountInfoSync() // appid
var WXBizDataCrypt = require('@/libs/WXBizDataCrypt'); //WXBizDataCrypt.js const pc = new WXBizDataCrypt(accountInfo.miniProgram.appId , this.sessionKey)
const accountInfo = uni.getAccountInfoSync(); //appid const data = pc.decryptData(encryptedData , iv)
let appid = accountInfo.miniProgram.appId console.log(222, data)
return console.log(11, appid)
var pc = new WXBizDataCrypt(appid , this.sessionKey);
var data = pc.decryptData(encryptedData , iv);
}, },
toAgreement(id) { toAgreement(id) {
this.$util.to('../agreement/agreement?id=' + id) this.$util.to('../detail/detail?id=' + id)
} }
} }
} }

@ -1,5 +1,5 @@
<template> <template>
<view class="page"> <view :class="['page', { show: isDetail }]">
<view class="block"> <view class="block">
<view class="l-title">基本信息</view> <view class="l-title">基本信息</view>
<view class="form-list"> <view class="form-list">
@ -52,7 +52,7 @@
</view> </view>
</view> </view>
<view class="block pro-wrap" v-for="c in courses"> <view class="block pro-wrap" v-for="c in courseList">
<view class="l-title">{{ c.name }}</view> <view class="l-title">{{ c.name }}</view>
<uni-icons class="arrow" type="top" size="20" color="#007EFF"></uni-icons> <uni-icons class="arrow" type="top" size="20" color="#007EFF"></uni-icons>
<ul class="pro-list"> <ul class="pro-list">
@ -117,7 +117,7 @@
<text class="num">{{ profit }}</text> <text class="num">{{ profit }}</text>
</view> </view>
</view> </view>
<view class="btn" @click="submit">提交</view> <view v-if="!isDetail" class="btn" @click="submit">提交</view>
</view> </view>
</view> </view>
@ -162,7 +162,7 @@
customerName: '', customerName: '',
businessManager: '' businessManager: ''
}, },
courseList: [], courseList: {},
courses: [], // courses: [], //
purchase: 0, purchase: 0,
profit: 0, profit: 0,
@ -243,6 +243,7 @@
list: [] list: []
} }
} }
console.log(111, list)
// 3push(0-> 1- 2 ) // 3push(0-> 1- 2 )
list.map(e => { list.map(e => {
const type = e.productType const type = e.productType
@ -256,6 +257,7 @@
courses.practice.list.length || delete courses.practice courses.practice.list.length || delete courses.practice
courses.theory.list.length || delete courses.theory courses.theory.list.length || delete courses.theory
courses.data.list.length || delete courses.data courses.data.list.length || delete courses.data
console.log(222, courses)
this.courseList = courses this.courseList = courses
}, },
// //
@ -382,6 +384,9 @@
height: calc(100vh - 300rpx); height: calc(100vh - 300rpx);
overflow: auto; overflow: auto;
} }
.show {
height: calc(100vh - 130rpx);
}
.pro-wrap { .pro-wrap {
position: relative; position: relative;
padding: 0; padding: 0;

@ -5,34 +5,33 @@
</ul> </ul>
<uni-card :is-shadow="false" :border="false" padding="0" is-full> <uni-card :is-shadow="false" :border="false" padding="0" is-full>
<uni-search-bar class="search" radius="5" placeholder="请输入姓名、订单号" clearButton="auto" cancelButton="none" /> <uni-search-bar class="search" radius="5" placeholder="请输入姓名、订单号" v-model="keyword" clearButton="auto" cancelButton="none" />
</uni-card> </uni-card>
<view class="filter"> <view class="filter">
<sl-filter :independence="true" :menuList="menuList" @result="result"></sl-filter> <sl-filter :independence="true" :menuList="menuList" @result="result"></sl-filter>
</view> </view>
<uni-card :is-shadow="false" :border="false" is-full> <template v-if="list.length">
<view class="list-wrap"> <ul class="list">
<ul class="list"> <li v-for="item in list" @click="toDetail(item)">
<li @click="toDetail({})"> <view class="num">{{ item.orderNumber }}</view>
<view class="num">1652163515968</view> <view class="info">
<view class="info"> <view class="left">
<view class="left"> <view class="text">客户名称{{ item.customerName }}</view>
<view class="text">客户名称海文</view> <view class="text">订单金额{{ item.orderAmount }}</view>
<view class="text">订单金额海文</view> <view class="text">订单内容{{ item.orderContent }}</view>
<view class="text">订单内容海文</view> <view class="text">下单日期{{ item.createTime }}</view>
<view class="text">下单日期海文</view>
</view>
<view class="type">
待审核发货
</view>
</view> </view>
</li> <view :class="['type', 'type' + item.orderStatus]">
</ul> {{ menuList[0].detailList.find(e => e.value === item.orderStatus).title }}
<!-- <empty></empty> --> </view>
</view> </view>
</uni-card> </li>
</ul>
<uni-load-more :status="status" />
</template>
<empty v-else></empty>
<uni-icons class="plus" type="plus-filled" size="60" color="#007eff" @click="$util.to('../orderDetail/orderDetail')"></uni-icons> <uni-icons class="plus" type="plus-filled" size="60" color="#007eff" @click="$util.to('../orderDetail/orderDetail')"></uni-icons>
</view> </view>
@ -40,8 +39,8 @@
<script> <script>
import { queryCustomer } from '@/apis/modules/client.js' import { queryCustomer } from '@/apis/modules/client.js'
import { list } from '@/apis/modules/order.js'
import slFilter from '@/components/sl-filter/sl-filter.vue' import slFilter from '@/components/sl-filter/sl-filter.vue'
import empty from '@/components/empty/empty.vue'
export default { export default {
data() { data() {
return { return {
@ -65,17 +64,17 @@
{ {
'title': '排序', 'title': '排序',
'detailTitle': '请选择排序(按下单日期)', 'detailTitle': '请选择排序(按下单日期)',
'key': 'key_3', 'key': 'sort',
'isSort': true, 'isSort': true,
'isMutiple': false, 'isMutiple': false,
'detailList': [ 'detailList': [
{ {
'title': '序', 'title': '序',
'value': 1 'value': 'desc'
}, },
{ {
'title': '序', 'title': '序',
'value': 2 'value': 'asc'
} }
] ]
} }
@ -95,7 +94,8 @@
isFilter: 0, // 0->,1-> isFilter: 0, // 0->,1->
status: 'more', // more|loading|noMore status: 'more', // more|loading|noMore
searchTimer: null, searchTimer: null,
customerType: '', orderStatus: '',
sort: 'desc',
keyword: '', keyword: '',
list: [], list: [],
page: 1, page: 1,
@ -104,13 +104,11 @@
}, },
components: { components: {
slFilter, slFilter,
empty
}, },
watch: { watch: {
keyword (newName, oldName) { keyword () {
clearTimeout(this.searchTimer) clearTimeout(this.searchTimer)
this.searchTimer = setTimeout(() => { this.searchTimer = setTimeout(() => {
this.isFilter = 1
this.initList() this.initList()
}, 500) }, 500)
} }
@ -135,35 +133,37 @@
try { try {
uni.removeStorageSync('courses') uni.removeStorageSync('courses')
} catch (e) {} } catch (e) {}
// this.getList() this.initList()
}, },
methods: { methods: {
getList() { getList() {
queryCustomer({ list({
countries: '中国', businessManagerId: 111,
provinceId: '', keywords: this.keyword,
cityId: '', pageNum: this.page,
searchContent: this.keyword, pageSize: this.pageSize,
page: this.page, sort: this.sort,
size: this.pageSize orderStatus: this.orderStatus
}).then(({ message }) => { }).then(({ data }) => {
// list // list
this.list = (this.reachBottom >= 0 && !this.isFilter) ? [...this.list, ...message.list] : message.list this.list = this.reachBottom > 0 ? [...this.list, ...data.records] : data.records
this.page++ // page+1 this.page++ // page+1
const noMore = this.list.length === message.totalCount // const noMore = this.list.length === data.total //
this.status = noMore ? 'noMore' : 'more' // noMore this.status = noMore ? 'noMore' : 'more' // noMore
this.reachBottom = noMore ? -1 : 0 // -1 this.reachBottom = noMore ? -1 : 0 // -1
this.isFilter = 0 // 0
}).catch(e => {}) }).catch(e => {})
}, },
initList() { initList() {
this.page = 1 this.page = 1
this.reachBottom = 0
this.getList() this.getList()
}, },
// //
result(val) { result(val) {
console.log(val) console.log(33, val)
this.customerType = val.customerType this.orderStatus = val.orderStatus !== '' ? val.orderStatus : 0
this.sort = val.sort || 'desc'
this.initList()
}, },
// tab // tab
tabChange(tab) { tabChange(tab) {
@ -181,27 +181,36 @@
.filter { .filter {
margin-bottom: 10px; margin-bottom: 10px;
} }
.list-wrap {
min-height: calc(100vh - 400rpx);
}
.list { .list {
margin-top: 20rpx;
background-color: #fff;
li {
padding: 20rpx 40rpx;
border-bottom: 1px solid #f1f1f1;
}
.num { .num {
font-size: 16px; font-size: 32rpx;
color: #333; color: #333;
} }
.info { .info {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
margin-top: 10px; margin-top: 10rpx;
} }
.text { .text {
font-size: 13px; padding: 8rpx 0;
font-size: 26rpx;
color: #ccc; color: #ccc;
} }
.type { .type {
font-size: 14px; margin-left: 20rpx;
font-size: 28rpx;
color: #ff7b2d; color: #ff7b2d;
white-space: nowrap;
}
.type1 {
color: #bdbdbd;
} }
} }
</style> </style>

@ -9,28 +9,28 @@
<li v-for="(tab, i) in tabs" :class="{active: curTab === tab.id}" @click="tabChange(tab)">{{ tab.name }}</li> <li v-for="(tab, i) in tabs" :class="{active: curTab === tab.id}" @click="tabChange(tab)">{{ tab.name }}</li>
</ul> </ul>
<ul class="list"> <ul class="list">
<li> <li v-for="(item, i) in list">
<view class="name">金融科技实验方案</view> <view class="name">{{ item.name }}</view>
<view class="block"> <view class="content">
<view class="info"> <view class="info">
<view class="line"> <view class="line">
<view class="label">产品</view> <view class="label">产品</view>
<view class="val">程序设计量化投资</view> <view class="val" v-html="item.product"></view>
</view> </view>
<view class="line"> <view class="line">
<view class="label">更新日期</view> <view class="label">更新日期</view>
<view class="val">201212</view> <view class="val">{{ item.date }}</view>
</view> </view>
<view class="line"> <view class="line">
<view class="label">适用专业</view> <view class="label">适用专业</view>
<view class="val">金融大数据</view> <view class="val">{{ item.major }}</view>
</view>
</view> </view>
<view class="detail" @click="toDetail">详情</view>
</view> </view>
</li> <view class="detail" @click="toDetail(i + 2)">详情</view>
</ul> </view>
</li>
</ul>
</view> </view>
</template> </template>
@ -45,16 +45,69 @@
id: 0 id: 0
}, },
{ {
name: '金融科技', name: '标准方案',
id: 1 id: 1
}, },
{ {
name: '大数据实验室', name: '智信云方案',
id: 2 id: 2
} }
],
list: [],
all: [
{
type: 1,
name: '人工智能实验室建设方案-2020.1',
product: `python程序设计实验教学系统<br>
Docker技术实验教学系统<br>
JAVA语言程序设计实验教学系统<br>
大数据开发实验教学系统<br>
Openstack云计算实验教学系统`,
date: '2022-06-02',
major: '人工智能方向'
},
{
type: 1,
name: '大数据管理与应用专业建设方案',
product: `python程序设计实验教学系统<br>
量化投资实验教学系统<br>
区块链数字货币交易实验系统<br>
大数分析实验教学系统<br>
数据可视化实验教学系统<br>
大数据实证科研平台<br>
全球宏观经济<br>
数据库全球金融交易数据库 `,
date: '2022-06-02',
major: '大数据方向'
},
{
type: 1,
name: '金融科技实验室建设方案V2.0',
product: `python程序设计实验教学系统<br>
量化投资实验教学系统<br>
区块链数字货币交易实验教学系统<br>
大数据采集实验教学系统<br>
大数据分析实验教学系统<br>
金融建模实验教学系统<br>
互联网小贷实验教学系统<br>
互联网支付实验教学系统<br>
R语言实验教学系统<br>
供应链金融实验教学系统<br>
Python数据清洗实验教学系统<br>
数据可视化实验教学系统<br>
金融随机过程实验教学系统<br>
银行综合系统<br>
大数据实证科研平台<br>
财经数据库`,
date: '2022-06-02',
major: '金融科技,大数据方向'
}
] ]
} }
}, },
onShow() {
this.list = JSON.parse(JSON.stringify(this.all))
},
methods: { methods: {
search(res) { search(res) {
uni.showToast({ uni.showToast({
@ -65,10 +118,11 @@
// tab // tab
tabChange(tab) { tabChange(tab) {
this.curTab = tab.id this.curTab = tab.id
this.list = this.all.filter(e => e.type === tab.id)
}, },
// //
toDetail() { toDetail(id) {
this.$util.to('../detail/detail') this.$util.to('../detail/detail?id=' + id)
} }
} }
} }
@ -88,38 +142,41 @@
.list { .list {
background-color: #fff; background-color: #fff;
li { li {
padding: 20px; padding: 40rpx;
border-bottom: 2px solid #f8f8f8; border-bottom: 1px solid #f8f8f8;
} }
.name { .name {
font-size: 14px; font-size: 28rpx;
color: #333; color: #333;
} }
.line { .line {
display: flex; display: flex;
margin-bottom: 10px; margin-bottom: 20rpx;
} }
.block { .content {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
margin-top: 10px; margin-top: 20rpx;
} }
.info { .info {
margin: 5px 0; margin: 10rpx 0;
} }
.label { .label {
width: 70px; width: 140rpx;
font-size: 12px; font-size: 24rpx;
color: #898989; color: #898989;
} }
.val { .val {
font-size: 12px; font-size: 24rpx;
line-height: 1.8;
color: #898989; color: #898989;
} }
.detail { .detail {
font-size: 13px; margin-left: 20rpx;
font-size: 26rpx;
color: #1f83ff; color: #1f83ff;
white-space: nowrap;
} }
} }
</style> </style>

@ -14,8 +14,7 @@
<ul class="list"> <ul class="list">
<li v-for="item in list"> <li v-for="item in list">
<view class="pro-name"> <view class="pro-name">
<!-- <image v-if="item.id != 13" class="icon" :src="require('../../static/image/product/' + item.id + '.png)" mode="widthFix"></image> --> <image v-if="item.miniProgramPictureAddress" class="icon" :src="item.miniProgramPictureAddress" mode="widthFix"></image>
<image class="icon" src="../../static/image/course1.png" mode="widthFix"></image>
{{ item.productName }} {{ item.productName }}
</view> </view>
<view class="info"> <view class="info">

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 97 KiB

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 658 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 754 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 643 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 367 B

After

Width:  |  Height:  |  Size: 332 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 666 B

After

Width:  |  Height:  |  Size: 346 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 702 B

After

Width:  |  Height:  |  Size: 444 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 724 B

After

Width:  |  Height:  |  Size: 441 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 645 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 612 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 790 B

After

Width:  |  Height:  |  Size: 487 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 805 B

After

Width:  |  Height:  |  Size: 467 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 698 B

After

Width:  |  Height:  |  Size: 597 B

Loading…
Cancel
Save