index.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287
  1. <template>
  2. <hc-sys :tabbar="false" isNavBar>
  3. <template #navBar>
  4. <view class="hc-home-nav-bar px-5 py-4">
  5. <view class="title">应用主页</view>
  6. <view class="icon">
  7. <text class="i-ri-layout-masonry-fill" v-if="isListType" @click="isListType = false"/>
  8. <text class="i-material-symbols-view-list-rounded" v-else @click="isListType = true"/>
  9. </view>
  10. </view>
  11. </template>
  12. <view class="relative px-5" v-if="msgCountData.taskCount > 0">
  13. <uni-notice-bar show-icon :text="`您有${msgCountData.taskCount}条待办任务,请注意及时处理`" @click="toTaskPage"/>
  14. </view>
  15. <template v-if="!isListType">
  16. <view class="hc-flex-conten mt-4">
  17. <view class="left-col-card-1" :class="isAnimation?'is-animation':''" @click="isDataFill">
  18. <view class="card-bg">
  19. <view class="icon">
  20. <text class="i-solar-calendar-search-outline"/>
  21. </view>
  22. </view>
  23. <view class="text-box">
  24. <text class="text">资料填报</text>
  25. </view>
  26. </view>
  27. <view class="right-col-card-1" :class="isAnimation?'is-animation':''">
  28. <view class="card-bg">
  29. <text class="text">进度查询</text>
  30. </view>
  31. <view class="icon">
  32. <text class="i-ic-outline-list-alt"/>
  33. </view>
  34. </view>
  35. <view class="right-col-card-2"
  36. :class="isAnimation?'is-animation':''"
  37. @click="homeToPage('/pages/ledger/index')"
  38. >
  39. <view class="card-bg">
  40. <text class="text">日志填报</text>
  41. </view>
  42. <view class="icon">
  43. <text class="i-mdi-text-box-edit-outline"/>
  44. </view>
  45. </view>
  46. </view>
  47. <view class="hc-flex-conten __150 mt-4">
  48. <view class="left-col-card-2"
  49. :class="isAnimation?'is-animation':''"
  50. @click="toTaskPage"
  51. >
  52. <view class="card-bg">
  53. <view class="icon">
  54. <text class="i-fluent-task-list-square-settings-20-filled"/>
  55. </view>
  56. <view class="text-box">
  57. <text class="text">任务管理</text>
  58. </view>
  59. </view>
  60. </view>
  61. </view>
  62. <view class="hc-flex-conten __180 mt-4">
  63. <view class="left-col-card-3"
  64. :class="isAnimation?'is-animation':''"
  65. @click="homeToPage('/pages/image/index')"
  66. >
  67. <view class="card-bg">
  68. <view class="icon">
  69. <text class="i-solar-videocamera-record-linear"/>
  70. </view>
  71. </view>
  72. <view class="text-box">
  73. <text class="text">声像资料</text>
  74. </view>
  75. </view>
  76. <view class="right-col-card-3" :class="isAnimation?'is-animation':''">
  77. <view class="card-bg">
  78. <view class="icon">
  79. <text class="i-icon-park-outline-history-query"/>
  80. </view>
  81. <text class="text">资料查询</text>
  82. </view>
  83. </view>
  84. <view class="right-col-card-4" :class="isAnimation?'is-animation':''">
  85. <view class="card-bg">
  86. <text class="text">工单消息</text>
  87. </view>
  88. <view class="icon">
  89. <text class="i-icon-park-outline-message"/>
  90. </view>
  91. </view>
  92. </view>
  93. </template>
  94. <template v-else>
  95. <view class="hc-list-container">
  96. <view class="hc-list-item shadow-sm" :class="isAnimation?'a-l':''" @click="isDataFill">
  97. <view class="icon bg-1">
  98. <text class="i-solar-calendar-search-outline"/>
  99. </view>
  100. <view class="container">
  101. <view class="title">资料填报</view>
  102. <view class="text">派发监理通知单及监理指令</view>
  103. </view>
  104. </view>
  105. <view class="hc-list-item shadow-sm" :class="isAnimation?'a-r':''">
  106. <view class="icon bg-2">
  107. <text class="i-ic-outline-list-alt"/>
  108. </view>
  109. <view class="container">
  110. <view class="title">进度查询</view>
  111. <view class="text">资料进度数据统计查询</view>
  112. </view>
  113. </view>
  114. <view class="hc-list-item shadow-sm"
  115. :class="isAnimation?'a-l':''"
  116. @click="homeToPage('/pages/ledger/index')"
  117. >
  118. <view class="icon bg-3">
  119. <text class="i-mdi-text-box-edit-outline"/>
  120. </view>
  121. <view class="container">
  122. <view class="title">日志填报</view>
  123. <view class="text">施工及监理日志填报</view>
  124. </view>
  125. </view>
  126. <view class="hc-list-item shadow-sm" :class="isAnimation?'a-r':''">
  127. <view class="icon bg-4">
  128. <text class="i-fluent-form-48-regular"/>
  129. </view>
  130. <view class="container">
  131. <view class="title">资料填报</view>
  132. <view class="text">质检资料及试验资料数据填报</view>
  133. </view>
  134. </view>
  135. <view class="hc-list-item shadow-sm"
  136. :class="isAnimation?'a-l':''"
  137. @click="homeToPage('/pages/image/index')"
  138. >
  139. <view class="icon bg-5">
  140. <text class="i-solar-videocamera-record-linear"/>
  141. </view>
  142. <view class="container">
  143. <view class="title">声像资料</view>
  144. <view class="text">拍照及上传影像资料</view>
  145. </view>
  146. </view>
  147. <view class="hc-list-item shadow-sm" :class="isAnimation?'a-r':''">
  148. <view class="icon bg-6">
  149. <text class="i-icon-park-outline-history-query"/>
  150. </view>
  151. <view class="container">
  152. <view class="title">资料查询</view>
  153. <view class="text">质检及试验报表资料查看</view>
  154. </view>
  155. </view>
  156. <view class="hc-list-item shadow-sm" :class="isAnimation?'a-l':''">
  157. <view class="icon bg-7">
  158. <text class="i-solar-calendar-linear"/>
  159. </view>
  160. <view class="container">
  161. <view class="title">施工台账</view>
  162. <view class="text">完善外业台账数据</view>
  163. </view>
  164. </view>
  165. </view>
  166. </template>
  167. <!--弹窗-->
  168. <view class="hc-popover-box" :class="isPopovershow ? 'show' : ''">
  169. <view class="img-box">
  170. <view class="img-bg"/>
  171. </view>
  172. <view class="close-icon" @click="closePopover">
  173. <text class="i-material-symbols-cancel-rounded"/>
  174. </view>
  175. <view class="hc-popover-container">
  176. <view class="project-name">项目名称</view>
  177. <view class="contrac-name">合同段名称</view>
  178. <view class="tip-title">填报规则温馨提示</view>
  179. <view class="tip-content-box">
  180. <view class="tip-item">
  181. <view class="icon">
  182. <text class="i-ri-magic-fill"/>
  183. </view>
  184. <view class="text">填报之后务必点击保存按钮,避免数据丢失</view>
  185. </view>
  186. <view class="tip-item">
  187. <view class="icon">
  188. <text class="i-ri-magic-fill"/>
  189. </view>
  190. <view class="text">灰色按键为非必填项,系统已内置公式模型,可不用手动填写</view>
  191. </view>
  192. <view class="tip-item">
  193. <view class="icon">
  194. <text class="i-ri-magic-fill"/>
  195. </view>
  196. <view class="text">当前工序上报的报表数据必填项少于90%的填报率,系统不允许上报</view>
  197. </view>
  198. </view>
  199. <view class="mt-16">
  200. <uni-data-checkbox multiple v-model="checkbox1" :localdata="hobby"/>
  201. </view>
  202. <view class="mt-10">
  203. <button class="hc-btn rounded-36" type="primary" @click="startDataFill">开始填报</button>
  204. </view>
  205. </view>
  206. </view>
  207. </hc-sys>
  208. </template>
  209. <script setup>
  210. import {ref} from "vue";
  211. import {useAppStore} from "@/store";
  212. import {onShow, onHide} from '@dcloudio/uni-app'
  213. import mainApi from '~api/user/index';
  214. //变量
  215. const store = useAppStore()
  216. const isListType = ref(false);
  217. const checkbox1 = ref([])
  218. const hobby = [{text: '以后忽略此页面提示', value: 0}]
  219. //是否动画
  220. const isAnimation = ref(store.isAnimation)
  221. const msgCountData = ref(store.msgCountData)
  222. onShow(()=>{
  223. if(store.isAnimation) {
  224. isAnimation.value = true
  225. }
  226. userConfigInfo()
  227. })
  228. onHide(() => {
  229. isAnimation.value = false
  230. })
  231. //获取配置
  232. const appCheck = ref(1)
  233. const userConfigInfo = async () => {
  234. const { data } = await mainApi.userConfigInfo()
  235. appCheck.value = data?.appCheck ?? 1
  236. }
  237. //资料填报
  238. const isPopovershow = ref(false);
  239. const isDataFill = () => {
  240. if (appCheck.value === 2) {
  241. homeToPage('/pages/data-fill/index')
  242. } else {
  243. isPopovershow.value = true;
  244. }
  245. }
  246. //关闭弹窗
  247. const closePopover = () => {
  248. isPopovershow.value = false;
  249. }
  250. //开始填报
  251. const startDataFill = async () => {
  252. isPopovershow.value = false;
  253. if (checkbox1.value.length > 0) {
  254. mainApi.userConfigSave({
  255. appCheck: 2
  256. }).then()
  257. }
  258. homeToPage('/pages/data-fill/index')
  259. }
  260. //跳转页面
  261. const homeToPage = (url) => {
  262. uni.navigateTo({
  263. url: url
  264. })
  265. }
  266. //跳转到任务页面
  267. const toTaskPage = () => {
  268. uni.switchTab({
  269. url: '/pages/task/index'
  270. })
  271. }
  272. </script>
  273. <style lang="scss" scoped>
  274. @import "@/style/index/index.scoped.scss";
  275. </style>