产品方案、订单客户等

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. 27
      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) => {
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) => {
@ -39,4 +43,8 @@ export const updateCustomer = (data) => {
export const getProductsSubscribedByCustomers = (data) => {
return get('nakadai/nakadai/customer/getProductsSubscribedByCustomers', data)
}
export const getTeamsByAccountId = (data) => {
return post('nakadai/applets/customer/getTeamsByAccountId', data)
}

@ -19,4 +19,8 @@ export const getDetail = (data) => {
export const 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, {
token: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyIiwiaWF0IjoxNjUzODc2NDczLCJleHAiOjE2NTM5MTk2NzMsImFjY291bnRJZCI6IjEifQ.sX2qEUJk_EzltbrLOos_ZFuyj_5OrXFhvq_qahbIfmc'
token: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyIiwiaWF0IjoxNjU0MTM1MDg4LCJleHAiOjE2NTQxNzgyODgsImFjY291bnRJZCI6IjEifQ.wSb1OgO7vfJoRRNe9tHirTAiTd7vHQLsKFU58cQTe84'
})
return new Promise((resolve, reject)=>{
const { url } = options

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

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

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

@ -1,14 +1,6 @@
<template>
<view>
<uni-card :is-shadow="false" :border="false" is-full>
<view class="tool">
<view class="download" @click="toPage">下载</view>
</view>
<view class="content">
</view>
</uni-card>
<view class="page">
<web-view :webview-styles="webviewStyles" :src="src"></web-view>
</view>
</template>
@ -16,20 +8,45 @@
export default {
data() {
return {
//
toPage() {
this.$util.to('../send/send')
}
};
files: [
'https://huoran.oss-cn-shenzhen.aliyuncs.com/20220530/docx/1531155187057057792.docx',
'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>
<style scoped lang="scss">
.tool {
.download {
font-size: 13px;
color: #1f83ff;
}
.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>

@ -125,6 +125,9 @@
row.endTime = time + optionsData
let dt = new Date(endTime)
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 useUnit = row.periodOfUse // 使
//
@ -168,7 +171,7 @@
const unit = row.options // 使
const useUnit = row.periodOfUse // 使
let sPrice = ''
if (row.settlementMethod === '0') {
if (row.settlementMethod == 0) {
// **/**(1)
const priceUnit = row.settlementPriceUnit
sPrice = ((!unit ?
@ -235,8 +238,8 @@
break
}
if (e.accountNum === '') {
// msg = ''
// break
msg = '请输入数量!'
break
}
if (e.finalPrice === '') {
msg = '请输入成交价!'

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

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

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

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

@ -9,28 +9,28 @@
<li v-for="(tab, i) in tabs" :class="{active: curTab === tab.id}" @click="tabChange(tab)">{{ tab.name }}</li>
</ul>
<ul class="list">
<li>
<view class="name">金融科技实验方案</view>
<view class="block">
<view class="info">
<view class="line">
<view class="label">产品</view>
<view class="val">程序设计量化投资</view>
</view>
<view class="line">
<view class="label">更新日期</view>
<view class="val">201212</view>
</view>
<view class="line">
<view class="label">适用专业</view>
<view class="val">金融大数据</view>
</view>
<ul class="list">
<li v-for="(item, i) in list">
<view class="name">{{ item.name }}</view>
<view class="content">
<view class="info">
<view class="line">
<view class="label">产品</view>
<view class="val" v-html="item.product"></view>
</view>
<view class="line">
<view class="label">更新日期</view>
<view class="val">{{ item.date }}</view>
</view>
<view class="line">
<view class="label">适用专业</view>
<view class="val">{{ item.major }}</view>
</view>
<view class="detail" @click="toDetail">详情</view>
</view>
</li>
</ul>
<view class="detail" @click="toDetail(i + 2)">详情</view>
</view>
</li>
</ul>
</view>
</template>
@ -45,16 +45,69 @@
id: 0
},
{
name: '金融科技',
name: '标准方案',
id: 1
},
{
name: '大数据实验室',
name: '智信云方案',
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: {
search(res) {
uni.showToast({
@ -65,10 +118,11 @@
// tab
tabChange(tab) {
this.curTab = tab.id
this.list = this.all.filter(e => e.type === tab.id)
},
//
toDetail() {
this.$util.to('../detail/detail')
toDetail(id) {
this.$util.to('../detail/detail?id=' + id)
}
}
}
@ -88,38 +142,41 @@
.list {
background-color: #fff;
li {
padding: 20px;
border-bottom: 2px solid #f8f8f8;
padding: 40rpx;
border-bottom: 1px solid #f8f8f8;
}
.name {
font-size: 14px;
font-size: 28rpx;
color: #333;
}
.line {
display: flex;
margin-bottom: 10px;
margin-bottom: 20rpx;
}
.block {
.content {
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 10px;
margin-top: 20rpx;
}
.info {
margin: 5px 0;
margin: 10rpx 0;
}
.label {
width: 70px;
font-size: 12px;
width: 140rpx;
font-size: 24rpx;
color: #898989;
}
.val {
font-size: 12px;
font-size: 24rpx;
line-height: 1.8;
color: #898989;
}
.detail {
font-size: 13px;
margin-left: 20rpx;
font-size: 26rpx;
color: #1f83ff;
white-space: nowrap;
}
}
</style>

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