skillsTraining - 副本.vue 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283
  1. <template>
  2. <view>
  3. <image class="banner" src="../../static/img/banner-skillsTraining.png" mode="scaleToFill"></image>
  4. <view class="statistics u-flex u-row-between f-padding f-mb">
  5. <view class="statistics-item u-flex">我的学习时长:206小时</view>
  6. <view class="statistics-item u-flex">我的考试通过数:32</view>
  7. </view>
  8. <u-card class="iconNav no-head" :border="false" :head-border-bottom="false" :foot-border-top="false" :full="true" border-radius="0">
  9. <view class="card-head" slot="head">
  10. <view class="card-head-title">综合服务</view>
  11. </view>
  12. <view class="iconNav-body u-flex u-flex-wrap u-row-left" slot="body">
  13. <view class="iconNav-item" @click="openPage('pages/inbuild/inbuild')">
  14. <image class="iconNav-item-img" src="../../static/img/index-service-01.png" mode="aspectFill"></image>
  15. <view class="iconNav-item-text">网络课程</view>
  16. </view>
  17. <view class="iconNav-item" @click="openPage('pages/inbuild/inbuild')" >
  18. <image class="iconNav-item-img" src="../../static/img/index-service-02.png" mode="aspectFill"></image>
  19. <view class="iconNav-item-text">线下实训</view>
  20. </view>
  21. <view class="iconNav-item" @click="openPage('pages/inbuild/inbuild')" >
  22. <image class="iconNav-item-img" src="../../static/img/index-service-03.png" mode="aspectFill"></image>
  23. <view class="iconNav-item-text">参加考试</view>
  24. </view>
  25. <view class="iconNav-item" @click="openPage('pages/inbuild/inbuild')" >
  26. <image class="iconNav-item-img" src="../../static/img/index-service-04.png" mode="aspectFill"></image>
  27. <view class="iconNav-item-text">我的班级</view>
  28. </view>
  29. </view>
  30. </u-card>
  31. <u-search class="search f-padding" placeholder="搜索课程" v-model="keyword" @focus="selectShow = true" @search="search" @custom="search" ></u-search>
  32. <u-select v-model="selectShow" mode="mutil-column-auto" :list="selectList" @confirm="selectConfirm"></u-select>
  33. <u-card class="skill-list"
  34. :body-style="{'padding-bottom':'0'}"
  35. :border="false"
  36. :foot-border-top="false"
  37. :full="true" border-radius="0">
  38. <view class="card-head" slot="head">
  39. <view class="card-head-title">技能包</view>
  40. </view>
  41. <view class="news-list-body u-flex u-row-between u-flex-wrap" slot="body">
  42. <u-nodata notice="暂无新闻" v-if="skillList.length==0"></u-nodata>
  43. <view v-for="(item,index) in skillList"
  44. @click="skillClick(item)"
  45. :key="item.artId"
  46. class="u-body-item">
  47. <image :src="item.img" mode="scaleToFill"></image>
  48. <view class="text">
  49. <view class="name">{{item.name}}</view>
  50. <view class="school">{{item.school}}</view>
  51. </view>
  52. </view>
  53. </view>
  54. </u-card>
  55. <u-card class="school-list"
  56. :body-style="{'margin-bottom':'0','padding-bottom':'0'}"
  57. :border="false"
  58. :foot-border-top="false"
  59. :full="true" border-radius="0">
  60. <view class="card-head u-flex u-row-between" slot="head">
  61. <view class="card-head-title">合作院校</view>
  62. <view class="right" @click="openPage('pages/schools/schools')">
  63. 查看更多
  64. <u-icon name="arrow-right" color="#969799" size="28"></u-icon>
  65. </view>
  66. </view>
  67. <view class="school-list-body" slot="body">
  68. <u-nodata notice="暂无合作院校" v-if="schoolList.length==0"></u-nodata>
  69. <view class="school-logo-wrap u-flex u-row-between">
  70. <image
  71. @click="schoolToggle(index)"
  72. :class="{active:schoolActive==index}"
  73. class="school-logo"
  74. v-for="(item,index) in schoolList" :key="item.id"
  75. :src="item.schoolLogoUrl"
  76. mode="aspectFit"></image>
  77. </view>
  78. <view class="name u-flex u-row-between" @click="schoolClick(schoolList[schoolActive])">
  79. <view class="text">{{schoolList[schoolActive].schoolName}}</view>
  80. <u-icon name="arrow-right" color="#969799" size="28"></u-icon>
  81. </view>
  82. <view class="content">
  83. {{schoolList[schoolActive].detatil}}
  84. </view>
  85. </view>
  86. </u-card>
  87. <u-card class="support"
  88. :body-style="{'margin-bottom':'24rpx'}"
  89. :border="false"
  90. :foot-border-top="false"
  91. :full="true" border-radius="0">
  92. <view class="card-head u-flex u-row-between" slot="head">
  93. <view class="card-head-title">政策支持</view>
  94. </view>
  95. <view class="support-body" slot="body">
  96. <u-nodata notice="暂无新闻" v-if="schoolList.length==0"></u-nodata>
  97. <view class="big-news" @click="$u.route('/pages/newsDetails/newsDetails',{artId:bigNews.artId})">
  98. <image :src="bigNews.artImage" mode="aspectFill"></image>
  99. <view class="text">{{bigNews.artTitle}}</view>
  100. </view>
  101. <view v-for="(item,index) in newsList"
  102. @click="$u.route('/pages/newsDetails/newsDetails',{artId:item.artId})"
  103. :key="item.artId"
  104. class="u-body-item u-flex u-border-bottom u-col-between u-row-between">
  105. <view class="news-text">
  106. <view class="u-body-item-title u-line-2">{{item.artTitle}}</view>
  107. <view class="foot u-flex">
  108. <view class="">{{item.artCategoryName}}</view>
  109. <view class="time">{{$u.timeFormat(item.createTime.replace(/-/g, '/'), 'mm月dd日 hh时MM分')}}</view>
  110. </view>
  111. </view>
  112. <image :src="item.artImage" mode="aspectFill"></image>
  113. </view>
  114. </view>
  115. </u-card>
  116. </view>
  117. </template>
  118. <script>
  119. import mock from "../../static/js/mock.js";
  120. export default{
  121. data(){
  122. return{
  123. schoolActive:0,
  124. keyword:'',
  125. selectShow:false,
  126. newsList:[],
  127. bigNews:[],
  128. skillList:mock.skillList,
  129. schoolList:[],
  130. selectList:[
  131. {
  132. value: 1,
  133. label: '贵州交通职业技术学院',
  134. children: [
  135. {
  136. value: 2,
  137. label: '技术1'
  138. },
  139. {
  140. value: 5,
  141. label: '技术2'
  142. }
  143. ]
  144. },
  145. {
  146. value: 8,
  147. label: '贵州医学院',
  148. children: [
  149. {
  150. value: 9,
  151. label: '技术3'
  152. }
  153. ]
  154. }
  155. ],
  156. }
  157. },
  158. onLoad(){
  159. this.getNewsList();
  160. this.getSchoolList();
  161. },
  162. onShow(){
  163. },
  164. methods:{
  165. getSchoolList(){
  166. this.$u.api.getSchoolList({pageNum:1,pageSize:5}).then(res=>{
  167. if(res.code ==200){
  168. this.schoolList = res.rows
  169. }else{
  170. uni.showToast({
  171. icon:'none',
  172. title:res.msg
  173. })
  174. }
  175. })
  176. },
  177. openPage(path,msg) {
  178. this.$u.route({
  179. url: path,
  180. params:{
  181. msg:msg
  182. }
  183. })
  184. },
  185. getNewsList(){
  186. let params ={
  187. artCategoryId:2,
  188. pageNum:1,
  189. pageSize:10
  190. }
  191. this.$u.api.indexApi.getIndexNewsListApi(params)
  192. .then(res=>{
  193. this.newsList = res.rows;
  194. this.bigNews = this.newsList[0];
  195. this.newsList.shift();
  196. console.log('this.newsList', this.newsList)
  197. // console.log('newsList',JSON.parse(JSON.stringify(res.rows)));
  198. })
  199. },
  200. selectConfirm(e){
  201. console.log('selectConfirm',e);
  202. this.keyword = e[0].label +' ' + e[1].label
  203. },
  204. search(e){
  205. this.$u.route({
  206. url: 'pages/index/index',
  207. type:'switchTab'
  208. });
  209. console.log('selectConfirm',e)
  210. },
  211. schoolToggle(index){
  212. this.schoolActive = index;
  213. console.log('schoolToggle index',index)
  214. },
  215. skillClick(item){
  216. console.log('item',item);
  217. let analysisParams ={
  218. platform:'1',//平台:1-H5 2-APP 3-小程序 4-PC端
  219. pages:location.href,//页面路径
  220. btnName:'',//按钮名称
  221. btnEvent:'1',//按钮事件: 1-点击 2-长按 3-滑动
  222. ipAddress:'',//IP地址
  223. typeName:'技能培训关注度',//类型名称 例:学校关注度 、适应性考试等
  224. typeCode:'',//类型编码 例:类型名称首字母缩写(XXGZD)
  225. categoryName:item.name,//类别名称 例:XX学校,SS考试
  226. };
  227. // uni.request({
  228. // url:'/apis/cityjson?ie=utf-8',
  229. // method:'GET',
  230. // success: (res) => {
  231. // // console.log('this',this);
  232. // const reg = /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/;
  233. // let ip = reg.exec(res.data);
  234. // analysisParams.ipAddress = ip[0];
  235. // console.log('analysisParams',analysisParams);
  236. // }
  237. // });
  238. this.$u.api.postAnalysis(analysisParams).then(res=>{
  239. console.log('res',res);
  240. });
  241. this.$u.route({
  242. url: '/pages/inbuild/inbuild',
  243. params: {
  244. msg: '',
  245. artId:item.artId
  246. }
  247. });
  248. },
  249. schoolClick(item){
  250. console.log('schoolClick item',item);
  251. let analysisParams ={
  252. platform:'1',//平台:1-H5 2-APP 3-小程序 4-PC端
  253. pages:location.href,//页面路径
  254. btnName:'',//按钮名称
  255. btnEvent:'1',//按钮事件: 1-点击 2-长按 3-滑动
  256. ipAddress:'',//IP地址
  257. typeName:'学校关注度',//类型名称 例:学校关注度 、适应性考试等
  258. typeCode:'',//类型编码 例:类型名称首字母缩写(XXGZD)
  259. categoryName:item.schoolName,//类别名称 例:XX学校,SS考试
  260. };
  261. this.$u.api.postAnalysis(analysisParams).then(res=>{
  262. console.log('res',res);
  263. if(res.code == 200){
  264. location.href = item.schoolUrl
  265. }else{
  266. uni.showToast({
  267. icon:'none',
  268. title:res.msg
  269. })
  270. }
  271. });
  272. }
  273. }
  274. }
  275. </script>
  276. <style lang="scss" scoped>
  277. @import './skillsTraining.scss'
  278. </style>