index.vue 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431
  1. <template>
  2. <view class="content">
  3. <!-- 搜索 -->
  4. <tab-search :leftwith="checkPermi(['system:check:app'])?'80':'0'" :rightwith="checkPermi(['system:notice:list'])?'90':'0'" @clickLeft='clickLeft' @clickRight='clickRight' :noticenum="noticenum" @getSearch='getSearch'></tab-search>
  5. <!-- banner -->
  6. <block v-if="bannerlist.length">
  7. <banner :bannerlist="bannerlist"></banner>
  8. </block>
  9. <!-- <view class="home_tz" @click="getMessage" v-if="noticenum">
  10. <image :src="tzimg"></image>
  11. <view class="c34 f15 f500 over flex1">当前收到{{noticenum}}条消息,点击查看详情…</view>
  12. <view class="f15 c6 ml4 flex0">02-21</view>
  13. </view> -->
  14. <view class="home_tz" @click="getDuFn" v-if="checkPermi(['projectV2:dbd:list'])">
  15. <image :src="tzimg"></image>
  16. <view class="c34 f15 f500 over flex1">当前收到{{dunoticenum}}条督办事项,点击查看详情…</view>
  17. <view class="f15 c6 ml4 flex0">{{currentdate}}</view>
  18. </view>
  19. <!-- 模块 -->
  20. <view>
  21. <view class="flexc allpage_zd">
  22. <!-- <view class="allpage_zdl">共计<text>{{total||0}}</text>个</view> -->
  23. <time-year @bindDateChange="bindDateChange" fields='year' textAlign='right' timetxt='选择年份'></time-year>
  24. <view class="allpage_zdl">按年份统计,默认本年度</view>
  25. </view>
  26. <view class="homelist">
  27. <view class="list" @click="handleToAll(1)" v-if="checkPermi(['projectV2:sbbzb:list'])">
  28. <image :src="homeaimg"></image>
  29. <view class="tit">项目线索</view>
  30. <view class="txt co1">{{census.st}}</view>
  31. </view>
  32. <view class="list" @click="handleToAll(2)" v-if="checkPermi(['projectV2:sbbzb:list'])">
  33. <image :src="homebimg"></image>
  34. <view class="tit">项目签约</view>
  35. <view class="txt co2">{{census.qy}}</view>
  36. </view>
  37. <view class="list" @click="handleToAll(3)" v-if="checkPermi(['projectV2:sbbzb:list'])">
  38. <image :src="homecimg"></image>
  39. <view class="tit">项目开工</view>
  40. <view class="txt co3">{{census.kg}}</view>
  41. </view>
  42. <view class="list" @click="handleToAll(4)" v-if="checkPermi(['projectV2:sbbzb:list'])">
  43. <image :src="homedimg"></image>
  44. <view class="tit">项目投产</view>
  45. <view class="txt co4">{{census.tc}}</view>
  46. </view>
  47. <view class="list" @click="handleTosk" v-if="checkPermi(['projectV2:skxm:list'])">
  48. <image :src="homeeimg"></image>
  49. <view class="tit">省库项目</view>
  50. <view class="txt co2">{{census.sk}}</view>
  51. </view>
  52. <view class="list" @click="handleTowt" v-if="checkPermi(['projectV2:shyj:list'])">
  53. <image :src="homefimg"></image>
  54. <view class="tit">问题项目</view>
  55. <view class="txt co3">{{census.wt}}</view>
  56. <!-- <view class="list_not">2</view> -->
  57. </view>
  58. <view class="list" @click="handleTold" v-if="checkPermi(['projectV2:sbbzb:ldps:list'])">
  59. <image :src="homegimg"></image>
  60. <view class="tit">领导批示</view>
  61. <view class="txt co4">{{census.ps}}</view>
  62. <!-- <view class="list_not">99+</view> -->
  63. </view>
  64. <!-- -->
  65. <view class="list" @click="handleToAll(0)" v-if="checkPermi(['projectV2:sbbzb:list'])">
  66. <image :src="homehimg"></image>
  67. <view class="tit">全部项目</view>
  68. <view class="txt co1">{{census.all}}</view>
  69. </view>
  70. </view>
  71. </view>
  72. <!-- 统计表 -->
  73. <view class="cont_box " @click="getContFn" v-if="checkPermi(['system:qktj:show'])">
  74. <image :src="centimg" class="climg"></image>
  75. <view class="flex1 f16 c64 fw">潜山市招商情况月统计</view>
  76. <image :src="rimg" class="crimg"></image>
  77. </view>
  78. <!-- 重大项目 -->
  79. <view>
  80. <view class="home_more" v-if="checkPermi(['projectV2:sbbzb:list'])">
  81. <view class="flexc pdlr14 pdtb8" @click="handleTozd">
  82. <view class="tit">重大项目</view>
  83. <view class='flexc home_morer'>查看更多
  84. <image :src="mrimg"></image>
  85. </view>
  86. </view>
  87. <project-list :datalist="list" @getDetail='goDetail'></project-list>
  88. <view class="shax" v-if="list.length" @click="handleTozd">查看更多</view>
  89. </view>
  90. <!-- 列表 -->
  91. </view>
  92. <!-- <voice v-if='voiceflag' @closePopup='closePopup' @voiceResult='voiceResult'></voice> -->
  93. <!-- <block v-if="showfooter == 1"> -->
  94. <!-- <footers v-if="isfootflag" :footerindex="footerindex" :isHomeIndex="true"></footers> -->
  95. <footers v-if="isfootflag" :footlist="footlist" :footerindex="footerindex" :color_checked="color_checked" :color_nochecked="color_nochecked" :isHomeIndex="true"></footers>
  96. <!-- </block> -->
  97. <!-- 弹窗 -->
  98. <!-- 弹窗 -->
  99. <view class="bgbox" v-if="tsflag"></view>
  100. <!-- 弹窗 -->
  101. <view class="fixedbox" v-if="tsflag">
  102. <!-- <image :src="closeimg" class="choseimg" @click="getClose"></image> -->
  103. <view class="top">温馨提示</view>
  104. <view class="boxs">
  105. <view class="c34 f16 fw">您有15天未填写签约信息的记录信息,请填写</view>
  106. </view>
  107. <view class="fixedbtn" @click="getKnow">去查看</view>
  108. </view>
  109. </view>
  110. </template>
  111. <script>
  112. import timeYear from "@/components/timedata/timeyear.vue"
  113. import tabSearch from "@/components/toptab/search.vue"
  114. import banner from "@/components/toptab/banner.vue"
  115. import projectList from "@/components/projectlist/list.vue"
  116. import {getBannerlist,getNoticenumber,getCommonCensus,getdbdnumber} from "@/api/work/index.js"
  117. import { getsbbzblist,gettslist} from '@/api/work/clue.js'
  118. import footers from '@/components/footer/footer.vue'
  119. // import voice from "@/pages/seep.vue"
  120. import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
  121. export default {
  122. data(){
  123. return{
  124. tzimg:require('@/static/images/index/tzicon.png'),
  125. homeaimg:require('@/static/images/index/homea.png'),
  126. homebimg:require('@/static/images/index/homeb.png'),
  127. homecimg:require('@/static/images/index/homec.png'),
  128. homedimg:require('@/static/images/index/homed.png'),
  129. homeeimg:require('@/static/images/index/homee.png'),
  130. homefimg:require('@/static/images/index/homef.png'),
  131. homegimg:require('@/static/images/index/homeg.png'),
  132. homehimg:require('@/static/images/index/homeh.png'),
  133. mrimg:require("@/static/images/index/mrore.png") ,
  134. closeimg:require('@/static/images/close.png'),
  135. rimg:require('@/static/images/mine/rimg.png'),
  136. centimg:require("@/static/images/index/centicon.png"),
  137. list:[],
  138. bannerlist:[],
  139. noticenum:0,
  140. census:{},//统计
  141. footlist:[
  142. {module:'home',title:'首页',icon_checked:require('@/static/images/tabbar/home_.png'),icon_nochecked:require('@/static/images/tabbar/home.png')},
  143. {module:'center',title:'引荐项目',icon_checked:require('@/static/images/tabbar/cen_.png'),icon_nochecked:require('@/static/images/tabbar/cen.png')},
  144. {module:'mine',title:'我的',icon_checked:require('@/static/images/tabbar/mine_.png'),icon_nochecked:require('@/static/images/tabbar/mine.png')},
  145. ],
  146. footerindex:'home',
  147. showfooter: 0,
  148. isfootflag:true,
  149. color_checked :'343434',
  150. color_nochecked :'666666',
  151. dunoticenum:0,
  152. voiceflag:false,
  153. deptId:'',
  154. tsflag:false,
  155. currentdate:'',
  156. }
  157. },
  158. components:{tabSearch,banner,projectList,footers,timeYear},
  159. onUnload(){
  160. uni.$off('refreshdatalist')
  161. },
  162. onLoad() {
  163. this.deptId=this.$store.state.user.deptId;
  164. // 判断有无切换权限
  165. this.currentdate = this.getNowFormatDate();
  166. this.init()
  167. uni.$on('refreshdatalist',(e) => {
  168. this.list=[];
  169. if(checkPermi(['projectV2:sbbzb:list'])){
  170. this.getsbbzblist()
  171. }
  172. if(e&&e=='ldps'){
  173. }else if(e&&e=='duban'){
  174. this.getdbdnumber();
  175. }else{
  176. this.getCommonCensus();
  177. this.getdbdnumber();
  178. }
  179. })
  180. },
  181. onShow() {
  182. this.gettslist()
  183. },
  184. methods:{
  185. checkPermi, checkRole,
  186. getNowFormatDate(){
  187. let date = new Date();
  188. let y = date.getFullYear();
  189. let m = date.getMonth() + 1;
  190. m = m < 10 ? "0" + m : m;
  191. let d = date.getDate();
  192. d = d < 10 ? "0" + d : d;
  193. this.time=y;
  194. const timeday = m + "-" + d;
  195. return timeday;
  196. },
  197. bindDateChange(e){
  198. this.time=e;
  199. // var timestr=e.split('-');
  200. // this.year=timestr[0];
  201. // this.month=timestr[1];
  202. // this.reachflag=true;
  203. // this.pageNum=1;
  204. // this.list=[];
  205. this.getCommonCensus();
  206. if(checkPermi(['projectV2:sbbzb:list'])){
  207. this.list=[];
  208. this.getsbbzblist()
  209. }
  210. },
  211. gettslist(){
  212. gettslist().then(res=>{
  213. if(res.code==200){
  214. if(res.rows&&res.rows.length){
  215. this.tsflag=true;
  216. }else{
  217. this.tsflag=false;
  218. }
  219. }else{
  220. this.$toast(res.msg)
  221. }
  222. })
  223. },
  224. getKnow(){
  225. this.$tab.navigateTo('/pages/work/tslist')
  226. },
  227. init(){
  228. this.getNoticenumber()
  229. this.getBanList()
  230. this.getCommonCensus()
  231. if(checkPermi(['projectV2:sbbzb:list'])){
  232. this.getsbbzblist()
  233. }
  234. this.getdbdnumber()
  235. },
  236. //左侧点击
  237. clickLeft(){
  238. if(checkPermi(['system:check:app'])){
  239. this.$tab.reLaunch('/pages/indexs')
  240. }
  241. // this.voiceflag=true;
  242. // this.$refs.voice.show()
  243. },
  244. //右侧点击
  245. clickRight(e){
  246. if(checkPermi(['system:notice:list'])){
  247. this.$tab.navigateTo('/pages/work/message')
  248. }
  249. },
  250. getMessage(){
  251. if(checkPermi(['system:notice:list'])){
  252. this.$tab.navigateTo('/pages/work/message')
  253. }
  254. },
  255. getContFn(){
  256. this.$tab.navigateTo('/pages/work/count/count')
  257. },
  258. closePopup(){
  259. },
  260. voiceResult(){
  261. this.voiceflag=false;
  262. this.$refs.voice.hide();
  263. this.$refs.voice.afterHide()
  264. let params={
  265. ...this.searchTabObj,
  266. voice:true,
  267. data:data
  268. }
  269. },
  270. getdbdnumber(){
  271. var params={
  272. deptId:this.deptId,
  273. isHf: 'N',
  274. }
  275. getdbdnumber(params).then(res=>{
  276. if(res.code==200){
  277. this.dunoticenum=res.data
  278. }else{
  279. this.$toast(res.msg)
  280. }
  281. })
  282. },
  283. getNoticenumber(){
  284. var params={
  285. deptId:this.deptId
  286. }
  287. getNoticenumber(params).then(res=>{
  288. if(res.code==200){
  289. this.noticenum=Number(res.data)
  290. }else{
  291. this.$toast(res.msg)
  292. }
  293. })
  294. },
  295. getBanList(){
  296. var params={
  297. deptId:this.deptId
  298. }
  299. getBannerlist(params).then(res=>{
  300. if(res.code==200){
  301. this.bannerlist=res.rows
  302. }else{
  303. this.$toast(res.msg)
  304. }
  305. })
  306. },
  307. getCommonCensus(){
  308. var objs={
  309. params:{
  310. year:this.time
  311. }
  312. }
  313. getCommonCensus(objs).then(res=>{
  314. if(res.code==200){
  315. this.census=res.data
  316. }else{
  317. this.$toast(res.msg)
  318. }
  319. })
  320. },
  321. //重大项目
  322. getsbbzblist(){
  323. var params={
  324. pageSize:5,
  325. pageNum: 1,
  326. sfwlhxxxm:'Y',
  327. deptId:this.deptId,
  328. }
  329. params['params[beginTime]']=this.time+'0101';
  330. params['params[endTime]']=this.time+'1231';
  331. getsbbzblist(params).then(res=>{
  332. if(res.code==200){
  333. this.list = res.rows;
  334. }else{
  335. this.$toast(res.msg)
  336. }
  337. })
  338. },
  339. // 督办
  340. getDuFn(){
  341. this.$tab.navigateTo('/pages/work/idea')
  342. },
  343. getSearch(data){
  344. this.$tab.navigateTo('/pages/work/allitems?idx=0&xmmc='+data)
  345. },
  346. handleToAll(idx){
  347. this.$tab.navigateTo('/pages/work/allitems?idx='+idx+'&time='+this.time)
  348. },
  349. handleTosk(){
  350. this.$tab.navigateTo('/pages/work/skitem?time='+this.time)
  351. },
  352. handleTowt(){
  353. this.$tab.navigateTo('/pages/work/wtitem?time='+this.time)
  354. },
  355. handleTold(){
  356. this.$tab.navigateTo('/pages/work/lditem?time='+this.time)
  357. },
  358. handleTozd(){
  359. this.$tab.navigateTo('/pages/work/zditem?time='+this.time)
  360. },
  361. goDetail(e){
  362. this.$tab.navigateTo('/pages/work/cluedetails?id='+e.id)
  363. }
  364. },
  365. }
  366. </script>
  367. <style lang="scss" scoped>
  368. .content{min-height: 100vh;background-color: #ffffff;}
  369. .home_tz{display: flex;align-items: center;padding: 0 28rpx;height: 80rpx;background: #FFE9D5;
  370. image{width: 66rpx;height: 30rpx;margin-right: 24rpx;flex: 0 0 auto;}
  371. }
  372. .homelist{display: flex;flex-wrap: wrap;padding: 40rpx 20rpx;
  373. .list{width: 25%;display: flex;flex-direction: column;align-items: center;padding: 20rpx 0;position: relative;
  374. .list_not{ position: absolute; background: #F63030;color: #ffffff;font-size: 18rpx;left: 50%;top: 24rpx;border-radius: 50%;min-width: 40rpx;height: 40rpx;text-align: center;padding: 0 4rpx;box-sizing: border-box;line-height: 40rpx;margin-left: 30rpx;}
  375. image{width: 108rpx;height: 108rpx;margin-bottom: 20rpx;}
  376. .tit{font-size: 30rpx;font-weight: bold;
  377. color: #444444;margin-bottom: 12rpx;}
  378. .txt{font-size: 30rpx;font-weight: bold;
  379. &.co1{color: #F84E57;}
  380. &.co2{color: #26C240;}
  381. &.co3{color: #F74E32;}
  382. &.co4{color: #3C9BCD;}
  383. }
  384. }
  385. }
  386. .home_more{padding-top: 20rpx;
  387. .tit{font-size: 32rpx;font-weight: bold;color: #343434;position: relative;padding-left: 22rpx;flex: 0 0 auto;
  388. &::before{content: '';width: 8rpx;height: 40rpx;position: absolute;left: 0;top: 50%;margin-top: -20rpx;background-color: #FC7300;}
  389. }
  390. .home_morer{flex: 1;display: flex;align-items: center;justify-content: flex-end;
  391. view{font-size: 30rpx;color: #AAAAAA;font-weight: 500;}
  392. image{width: 24rpx;height: 24rpx;margin-left: 14rpx;}
  393. }
  394. }
  395. .fixedbox{
  396. height: 480rpx;box-sizing: border-box;z-index: 3000;
  397. .boxs{padding: 90rpx 0 70rpx;}
  398. .fixedbtn{width:100%;height: 80rpx;background: #FF6400;
  399. border-radius: 10rpx;display: flex;align-items: center;justify-content: center;font-size: 32rpx;font-weight: bold;color: #FFFFFF;
  400. &.btn1{background-color: #20ACCF;margin-bottom: 36rpx;}
  401. }
  402. }
  403. .bgbox{z-index:2000;}
  404. .cont_box{width: 706rpx;height: 100rpx;background: #EDF5FF;border-radius: 10rpx;margin: 0 auto 80rpx;padding: 0 40rpx;box-sizing: border-box;display: flex;align-items: center;
  405. .climg{width: 68rpx;height: 60rpx;margin-right: 28rpx;flex: 0 0 auto;}
  406. .crimg{width: 16rpx;height: 26rpx;flex: 0 0 auto;}
  407. }
  408. .allpage_zd{background-color:#F2F2F2;padding: 0 28rpx;justify-content: space-between;
  409. .allpage_zdl{font-size: 24rpx;font-weight: 500;color: #666666;
  410. text{font-weight: bold;color: #FE5706;margin: 0 8rpx;}
  411. }
  412. }
  413. </style>