Xiao_123 7 månader sedan
förälder
incheckning
b0f16a037e

+ 1 - 1
components/FilterList/index.vue

@@ -16,7 +16,7 @@
         </view>
         <view v-else class="d-flex">
           <view
-            class="selectText"
+            class="selectText font-weight-bold"
             :style="`color: ${item.value? '#008978' : ''}`"
           >
             {{ item[labelValue] }}

+ 36 - 0
components/Navbar/index.vue

@@ -0,0 +1,36 @@
+<template>
+  <view class="navbar-box">
+    <image src="https://minio.citupro.com/dev/menduner/poster.png" class="navbar-box-logo"></image>
+    <view class="navbar-box-title">{{ title }}</view>
+  </view>
+</template>
+
+<script setup>
+defineProps({
+  title: {
+    type: String,
+    default: '门墩儿'
+  }
+})
+</script>
+
+<style scoped lang="scss">
+.navbar-box {
+  height: 64px;
+  width: 100%;
+  position: relative;
+  background: linear-gradient(90deg, #66BB6A 0, #64FFDA 100%);
+  &-logo {
+    width: 100px;
+    height: 42px;
+    margin: 10px 0 0 10px;
+  }
+  &-title {
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    transform: translate(-50%, -50%);
+    color: #fff;
+  }
+}
+</style>

+ 13 - 18
components/PositionList/index.vue

@@ -1,6 +1,6 @@
 <template>
-  <view>
-    <view v-if="list.length > 0">
+  <view class="ss-m-x-20">
+    <view v-if="list.length > 0" class="ss-p-b-30 ss-p-t-20">
       <view v-for="(item, index) in list" :key="index" class="mList" :class="{ 'disable': item.job?.status === '1'}">
         <!-- 职位信息 -->
         <view class="list-shape" @click="toDetail(1, item)">
@@ -17,7 +17,7 @@
           </view>
           <!-- 工作地 -->
           <view style="font-size: 13px;" class="mt">
-            <span class="tag-gap">
+            <span class="tag-gap" style="color: #808080;">
               <span>{{item.job?.areaName }}</span>
               <span class="divider-mx" v-if="item.job?.areaName && item.job?.eduName">|</span>
               <span>{{item.job?.eduName }}</span>
@@ -57,14 +57,13 @@
             <!-- 企业简称 -->
             <span
               class="mr"
-              style="font-weight: bold;"
               @click="toDetail(0, item)"
             >
               {{ item.enterprise?.anotherName || ' -- ' }}
             </span>
-            <span>{{ item.enterprise?.industryName || '行业未知' }}</span>
+            <span class="color-999">{{ item.enterprise?.industryName || '行业未知' }}</span>
             <span class="divider tag-gap1"> | </span>
-            <span class="mr">{{ item.enterprise?.scaleName || '规模未知' }}</span>
+            <span class="mr color-999">{{ item.enterprise?.scaleName || '规模未知' }}</span>
           </view>
         </view>
       </view>
@@ -76,26 +75,20 @@
     </view>
   </view>
 </template>
+
 <script setup>
 import { commissionCalculation } from '@/utils/position'
-// import { ref } from 'vue'
 const props = defineProps({
   list: { type: Array, default: () => [] },
   noMore: { type: Boolean, default: false },
   showWelfareTag: { type: Boolean, default: true }
-  // toDetail: Function
 })
 
 //岗位详情
 const toDetail = (isPosition, item) =>{
-	// if (props.toDetail) {
-	// 	props.toDetail(item)
-	// 	return
-	// }
   const url = isPosition
     ? `/pagesB/positionDetail/index?id=${item.job?.id}`
     : `/pagesB/companyDetail/index?id=${item.enterprise?.id}`
-  //
   uni.navigateTo({ url })
 }
 
@@ -128,7 +121,7 @@ const toDetail = (isPosition, item) =>{
 .job-name {
   font-size: 16px;
   font-weight: 700;
-  color: black;
+  color: #345768;
   max-width: 50vw;
   overflow: hidden;
   white-space: nowrap;
@@ -138,9 +131,10 @@ const toDetail = (isPosition, item) =>{
 .sub-li-bottom {
   display: flex;
   align-items: center;
-  background: linear-gradient(90deg, #f5fcfc 0, #fcfbfa 100%);
+  background-color: #fff;
   font-size: 13px;
   padding: 5px;
+  border-radius: 0 0 12px 12px;
   .avatarBox {
     max-width: 40px;
     max-height: 40px;
@@ -149,12 +143,13 @@ const toDetail = (isPosition, item) =>{
 
 .salary-text {
 	float: right;
-	color: #fe574a;
+	color: #CEC149;
+  font-weight: 700;
 }
 .list-shape {
 	padding: 10px 30rpx 10px;
-  // margin-top: 10px;
   background-color: #fff;
+  border-radius: 12px 12px 0 0;
   .titleBox {
     display: flex;
     align-items: center;
@@ -200,7 +195,7 @@ const toDetail = (isPosition, item) =>{
 }
 /* 列表触底暂无更多 */
 .noMore{ text-align:center; color:grey; }
-.mt { margin-top: 10rpx; }
+.mt { margin-top: 15rpx; }
 .mb { margin-bottom: 10rpx; }
 .ml { margin-left: 20rpx; }
 .mr { margin-right: 20rpx; }

+ 9 - 10
components/SwiperAd/index.vue

@@ -1,5 +1,5 @@
 <template>
-	<view v-if="!props.hide" :style="`width: ${props.width}; height: ${props.height};`">
+	<view v-if="!props.hide" :style="`height: ${props.height}; margin: 10px;`">
 		<view v-if="props.list?.length">
 			<swiper
         class="swiper"
@@ -10,20 +10,19 @@
         :duration="props.duration"
         indicator-active-color="#fff"
       >
-				<swiper-item v-for="(item, index) in list" :key="'swiperItem'+index">
-					<view>
-            <image
-              :mode="strType ? props.mode : item.mode"
-              :src="strType ? item : item[props.imgUrlKey]"
-               :style="`width: ${props.width}; height: ${props.height};`"
-              @error="imageError"
-            ></image>
-          </view>
+				<swiper-item v-for="(item, index) in list" :key="'swiperItem'+index" style="border-radius: 10px;">
+          <image
+            :mode="strType ? props.mode : item.mode"
+            :src="strType ? item : item[props.imgUrlKey]"
+             :style="`width: ${props.width}; height: ${props.height};`"
+            @error="imageError"
+          ></image>
 				</swiper-item>
 			</swiper>
 		</view>
 	</view>
 </template>
+
 <script setup>
 const props = defineProps({
   list: { type: Array, default: () => [] },

+ 2 - 2
layout/components/authModal/login/index.vue

@@ -160,8 +160,8 @@ const state = ref({
     code: ''
   },
   account: {
-    phone: '13229740092',
-    password: 'Citu123456'
+    phone: '',
+    password: ''
   },
   rules: {
     phone: mobile,

+ 3 - 1
pages.json

@@ -4,7 +4,9 @@
 			"path": "pages/index/position",
 			"style": {
 				"navigationBarTitleText": "门墩儿",
-				"enablePullDownRefresh": true
+				"enablePullDownRefresh": true,
+				"backgroundColorBottom":"#f4f4f5",
+				"navigationStyle": "custom" 
 			}
 		},
 		{

+ 4 - 3
pages/index/crowdsourcing.vue

@@ -66,6 +66,7 @@ const swiperAdList = [
   'https://minio.citupro.com/dev/menduner/miniProgram/banner1.gif',
   'https://minio.citupro.com/dev/menduner/miniProgram/banner2.jpg',
   'https://minio.citupro.com/dev/menduner/miniProgram/banner3.jpg',
+	'https://minio.citupro.com/dev/menduner/miniProgram/banner4.jpg'
 ]
 const items = reactive([])
 const pageInfo = ref({
@@ -168,9 +169,9 @@ $defaultColor: #999;
 				align-items: flex-end;
 			}
 		}
-		&-carousel {
-			padding: 24rpx;
-		}
+		// &-carousel {
+		// 	padding: 24rpx;
+		// }
 		&-recommend {
 			padding: 0 24rpx;
 			margin-bottom: 20rpx;

+ 87 - 37
pages/index/position.vue

@@ -1,34 +1,53 @@
 <template>
-  <layout-page>
-    <view class="box defaultBgc">
-      <scroll-view class="scrollBox" scroll-y="true" @scrolltolower="loadingMore" style="position:relative;">
-        <view>
-          <view class="white-bgc stick">
-            <uni-search-bar
-              v-model="query.content"
-              radius="8"
-              placeholder="请输入关键字"
-              cancelButton="none"
-              :focus="false"
-              @confirm="onSearch($event.value)"
-              @clear="query.content = ''; onSearch()"
-            />
+  <view>
+    <Navbar></Navbar>
+    <layout-page>
+      <view class="box defaultBgc">
+        <scroll-view class="scrollBox" scroll-y="true" @scrolltolower="loadingMore" style="position:relative;">
+          <view>
+            <SwiperAd :list="swiperAdList"></SwiperAd>
+            <!-- 五宫格菜单 -->
+            <view class="white-bgc ss-p-t-10">
+              <uni-grid :column="5" @change="handleGrid" :showBorder="false">
+                <uni-grid-item v-for="(val, index) in gridList" :index="index" :key="index">
+                  <view class="d-flex align-center flex-column justify-center" style="width: 100%; height: 100%; border: none;">
+                    <image :src="val.icon" style="width: 40px; height: 40px;"></image>
+                    <text class="text color-666 font-size-14 ss-m-t-10">{{ val.label }}</text>
+                  </view>
+                </uni-grid-item>
+              </uni-grid>
+            </view>
+            <!-- 搜索条 -->
+            <view class="white-bgc stick ss-p-t-10">
+              <view style="position: relative;">
+                <uni-search-bar
+                  v-model="query.content"
+                  placeholder="请输入职位/公司关键字"
+                  cancelButton="none"
+                  :focus="false"
+                  bgColor="#fff"
+                  @confirm="onSearch($event.value)"
+                  @clear="query.content = ''; onSearch()"
+                >
+                </uni-search-bar>
+                <button class="search-btn" @tap.stop="onSearch">搜索</button>
+              </view>
+            </view>
+            <view class="white-bgc px-10 stickFilter">
+              <FilterList :list="filterList" idValue="label" @change="handleSearch"></FilterList>
+            </view>
+            <PositionList :list="positionListData" :noMore="false"></PositionList>
+            <uni-load-more :status="more" />
           </view>
-          <SwiperAd :list="swiperAdList"></SwiperAd>
-          <view class="white-bgc px-10 mb-10 stickFilter">
-            <FilterList :list="filterList" idValue="label" @change="handleSearch"></FilterList>
-          </view>
-          <PositionList :list="positionListData" :noMore="false"></PositionList>
-          <uni-load-more :status="more" />
-          
-        </view>
-      </scroll-view>
-      <AdvertisePop @login="showAuthModal()"></AdvertisePop>
-    </view>
-  </layout-page>
+        </scroll-view>
+        <AdvertisePop @login="showAuthModal()"></AdvertisePop>
+      </view>
+    </layout-page>
+  </view>
 </template>
 
 <script setup>
+import { ref, reactive } from 'vue'
 import SwiperAd from '@/components/SwiperAd'
 import FilterList from '@/components/FilterList'
 import PositionList from '@/components/PositionList'
@@ -38,8 +57,8 @@ import { getJobAdvertisedSearch } from '@/api/position'
 import { showAuthModal } from '@/hooks/useModal'
 import { onShow } from '@dcloudio/uni-app'
 import layoutPage from '@/layout'
+import Navbar from '@/components/Navbar'
 
-import { ref, reactive } from 'vue'
 // 设置自定义tabbar选中值
 onShow(() => {
   const currentPage = getCurrentPages()[0];  // 获取当前页面实例
@@ -53,15 +72,31 @@ const swiperAdList = [
   'https://minio.citupro.com/dev/menduner/miniProgram/banner1.gif',
   'https://minio.citupro.com/dev/menduner/miniProgram/banner2.jpg',
   'https://minio.citupro.com/dev/menduner/miniProgram/banner3.jpg',
+  'https://minio.citupro.com/dev/menduner/miniProgram/banner4.jpg'
 ]
 const filterList = ref([
   { label: '城市', dictType: 'areaTreeData', key: 'areaIds', map: { text: 'name', value: 'id' } },
   { label: '行业', dictType: 'industryTreeData',key: 'industryIds', map: { text: 'nameCn', value: 'id' } },
   { label: '求职类型', dictType: 'menduner_job_type', key: 'jobType' },
   { label: '薪资待遇', dictType: 'menduner_pay_scope', key: 'payScope' },
-  { label: '工作经验', dictType: 'menduner_exp_type', key: 'expType' },
+  // { label: '工作经验', dictType: 'menduner_exp_type', key: 'expType' },
 ])
 
+const gridList = [
+  { label: '优选集团', icon: '/static/svg/jituan.svg', path: '' },
+  { label: '精选企业', icon: '/static/svg/qiye.svg', path: '' },
+  { label: '门墩儿猎头', icon: '/static/svg/lietou.svg', path: '' },
+  { label: '早报资讯', icon: '/static/svg/zixun.svg', specifications: 50, path: '' },
+  { label: '联系我们', icon: '/static/svg/kefu.svg', path: '' }
+]
+
+const handleGrid = (e) => {
+  uni.showToast({
+    icon: 'none',
+    title: '建设中...,敬请期待'
+  })
+}
+
 // 
 const positionListData = ref([])
 const query = reactive({ 
@@ -80,12 +115,12 @@ const getData = async () => {
     const res = await getJobAdvertisedSearch(query)
     const list = res?.data?.list || []
     positionListData.value.push(...list.map(e => {
-        if (!e) {
-          return e
-        }
-        e.job = { ...e.job, ...dealDictObjData({}, e.job) }
-        e.enterprise = { ...e.enterprise, ...dealDictObjData({}, e.enterprise)}
+      if (!e) {
         return e
+      }
+      e.job = { ...e.job, ...dealDictObjData({}, e.job) }
+      e.enterprise = { ...e.enterprise, ...dealDictObjData({}, e.enterprise)}
+      return e
     }))
     if (positionListData.value.length === +res.data.total) {
       more.value = 'noMore'
@@ -145,18 +180,33 @@ const loadingMore = () => { // 加载更多
   height: 100vh;
   overflow: hidden;
   padding-bottom: 120rpx;
-  // box-sizing: border-box;
-  // padding-bottom: 160rpx;
   box-sizing: border-box;
   display: flex;
   flex-direction: column;
 }
 .scrollBox{
-  // height: 100%;
   flex: 1;
   height: 0 !important;
   padding-bottom: 24rpx;
   box-sizing: border-box;
-  // padding-bottom: 160rpx;
+}
+:deep(.uni-searchbar__box) {
+  width: calc(100% - 105px);
+  height: 40px !important;
+  border: 1px solid #00897B;
+  padding-right: 20px;
+  flex: none;
+}
+.search-btn {
+  position: absolute;
+  right: 11px;
+  top: 10px;
+  width: 110px;
+  height: 40px;
+  font-size: 16px;
+  background-color: #00897B;
+  color: #fff;
+  border-radius: 0 5px 5px 0;
+  z-index: 9;
 }
 </style>

+ 3 - 3
pagesA/collect/company.vue

@@ -1,11 +1,11 @@
 <template>
-  <view class="defaultBgc">
+  <view class="ss-m-x-20">
     <scroll-view class="scrollBox" scroll-y="true" @scrolltolower="loadingMore" style="height: 100vh;">
       <view v-if="items.length">
         <view v-for="(item, index) in items" :key="index" class="ss-m-t-20" @click="toDetail(item)">
-          <view style="background-color: #fff;" class="ss-p-30">
+          <view style="background-color: #fff; border-radius: 12px;" class="ss-p-30">
             <view class="d-flex align-center">
-              <image :src="item.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'" class="avatar" style="width: 60px; height: 60px;"></image>
+              <image :src="item.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'" class="avatar" style="width: 50px; height: 50px; object-fit: contain"></image>
               <view style="flex: 1;" class="ss-m-l-30">
                 <view class="enterprise-name ellipsis">{{ item.name }}</view>
                 <view class="ss-m-y-15 font-size-12">

+ 7 - 5
pagesA/collect/index.vue

@@ -1,8 +1,8 @@
 <template>
-  <view>
-    <uni-segmented-control :current="current" :values="controlList" @clickItem="handleChange" styleType="text" activeColor="#00897B"></uni-segmented-control>
-      <Position v-if="current === 0"></Position>
-      <Company v-else></Company>
+  <view class="defaultBgc">
+    <uni-segmented-control :current="current" :values="controlList" @clickItem="handleChange" styleType="text" activeColor="#00897B" style="background-color: #fff;"></uni-segmented-control>
+    <Position v-if="current === 0"></Position>
+    <Company v-else></Company>
   </view>
 </template>
 
@@ -22,5 +22,7 @@ const loadingMore = () => {}
 </script>
 
 <style scoped lang="scss">
-
+:deep(.segmented-control) {
+  background-color: #fff !important;
+}
 </style>

+ 7 - 4
pagesA/interview/item.vue

@@ -1,12 +1,12 @@
 <template>
-  <view v-if="list.length > 0">
+  <view v-if="list.length > 0" class="ss-m-x-20">
     <view v-for="(item, index) in list" :key="index">
       <view class="sub-li-bottom" @click.stop="toDetail(0, item)">
         <view class="avatarBox">
           <image class="enterAvatar" :src="item.enterprise?.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'"></image>
         </view>
         <view>
-          <span class="ss-m-x-20" style="font-weight: bold;">{{ item.contact?.name || ' -- ' }}</span>
+          <span class="ss-m-x-20 color-66" style="font-weight: bold;">{{ item.contact?.name || ' -- ' }}</span>
           <span>{{ item.contact?.postNameCn }}</span>
           <span class="divider tag-gap1 ss-m-x-10" v-if="item.contact?.postNameCn && item.invitePhone"> | </span>
           <span class="mr">{{ item.invitePhone }}</span>
@@ -15,7 +15,7 @@
       <!-- 职位信息 -->
       <view class="list-shape">
         <view class="titleBox my-5" @click="toDetail(1, item)">
-          <span style="font-size: 16px;font-weight: 700;color: black;">{{item.job?.name}}</span>
+          <span style="font-size: 16px;font-weight: 700; color: #345768;">{{item.job?.name}}</span>
           <span class="salary-text">{{ item.job?.payFrom }}-{{ item.job?.payTo }}/{{ item.job?.payName }}</span>
         </view>
         <!-- 面试时间、地点 -->
@@ -89,6 +89,7 @@ const handleAction = (item, type) => {
   background: linear-gradient(90deg, #f5fcfc 0, #fcfbfa 100%);
   font-size: 13px;
   padding: 5px 30rpx;
+  border-radius: 12px 12px 0 0;
   .avatarBox {
     max-width: 40px;
     max-height: 40px;
@@ -97,11 +98,13 @@ const handleAction = (item, type) => {
 
 .salary-text {
 	float: right;
-	color: #fe574a;
+	color: #CEC149;
+  font-weight: 700;
 }
 .list-shape {
 	padding: 10px 30rpx 10px;
   background-color: #fff;
+  border-radius: 0 0 12px 12px;
   .titleBox {
     display: flex;
     align-items: center;

+ 7 - 6
pagesA/seenMe/index.vue

@@ -1,5 +1,5 @@
 <template>
-  <view class="defaultBgc" style="height: 100vh;">
+  <view class="defaultBgc ss-p-x-20" style="height: 100vh;">
     <scroll-view class="scrollBox" scroll-y="true" @scrolltolower="loadingMore">
       <view v-if="list.length > 0">
         <view v-for="(item, index) in list" :key="index" class="ss-m-t-20" @click="toDetail(item)">
@@ -8,14 +8,14 @@
               <image class="r-avatar" :src="getUserAvatar(item.contact.avatar, item.contact.sex)"></image>
             </view>
             <view class="ss-m-l-30">
-              <span>{{ item.contact?.name || ' -- ' }}</span>
-              <span class="ss-m-x-10"> | </span>
-              <span>{{ item.post?.nameCn || '--' }}</span>
+              <span>{{ item.contact?.name }}</span>
+              <span class="ss-m-x-10" v-if="item.contact?.name && item.contact?.nameCn"> | </span>
+              <span>{{ item.post?.nameCn }}</span>
             </view>
           </view>
-          <view style="background-color: #fff;" class="ss-p-30">
+          <view style="background-color: #fff; border-radius: 0 0 12px 12px;" class="ss-p-30">
             <view class="d-flex align-center">
-              <image :src="item.enterprise.logoUrl" class="avatar" style="width: 60px; height: 60px;"></image>
+              <image :src="item.enterprise.logoUrl" class="avatar" style="width: 50px; height: 50px;"></image>
               <view style="flex: 1;" class="ss-m-l-30">
                 <view class="enterprise-name ellipsis">{{ item.enterprise.name }}</view>
                 <!-- 行业规模 -->
@@ -104,6 +104,7 @@ const toDetail = (item) => {
   background: linear-gradient(90deg, #f5fcfc 0, #fcfbfa 100%);
   font-size: 13px;
   padding: 5px 30rpx;
+  border-radius: 12px 12px 0 0;
   .avatarBox {
     max-width: 40px;
     max-height: 40px;

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
static/svg/jituan.svg


+ 1 - 0
static/svg/kefu.svg

@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1729499264576" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2590" xmlns:xlink="http://www.w3.org/1999/xlink" width="30" height="30"><path d="M512 0c282.779826 0 512 229.220174 512 512S794.779826 1024 512 1024 0 794.779826 0 512 229.220174 0 512 0z m-1.135304 225.925565c-138.017391 0-250.278957 114.287304-250.278957 255.777392 0 1.157565 0.089043 2.29287 0.222609 3.428173-0.222609 1.825391-0.222609 3.695304-0.222609 5.565218v71.858087c-1.914435 37.62087 28.360348 69.654261 67.82887 71.746782h16.962782c39.535304-2.070261 69.854609-34.170435 67.895652-71.835826v-71.791304c1.936696-37.62087-28.338087-69.676522-67.806608-71.791304h-16.985044a64.111304 64.111304 0 0 0-7.234782 0.400695c17.92-65.313391 71.457391-116.335304 140.020869-133.431652 104.759652-26.112 211.878957 33.613913 239.304348 133.431652a64.155826 64.155826 0 0 0-7.279304-0.400695h-16.962783c-39.513043 2.048-69.832348 34.148174-67.895652 71.791304v71.902609c-1.958957 37.64313 28.382609 69.765565 67.895652 71.813565h12.510609a186.479304 186.479304 0 0 1-88.909913 80.428522 36.59687 36.59687 0 0 0-36.173913-9.728l-49.196522 13.935304c-20.992 7.346087-32.589913 28.805565-26.713043 49.374609l0.512 2.159304c5.030957 19.389217 25.6 31.254261 45.990956 26.445913l49.174261-13.935304c15.805217-5.075478 26.86887-18.69913 28.048696-34.504348 57.032348-25.132522 100.886261-71.257043 121.36626-127.799652a73.104696 73.104696 0 0 0 28.204522-58.278957v-71.813565l-0.222609-5.565217c0.155826-1.113043 0.222609-2.270609 0.222609-3.405913 0-141.490087-112.261565-255.777391-250.278956-255.777392z" fill="#2196F3" p-id="2591"></path></svg>

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
static/svg/lietou.svg


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
static/svg/qiye.svg


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
static/svg/zixun.svg


+ 1 - 1
utils/request.js

@@ -200,7 +200,7 @@ http.interceptors.response.use(
 		// 请求成功后触发获取积分
     if (response.config.header?.Authorization) {
       const url = getSuffixAfterPrefix(response.config.url)
-      if (!url || !requestCompletionTrigger.length) return data
+      if (!url || !requestCompletionTrigger.length) return response.data
       const _obj = requestCompletionTrigger.find(e => e.url === url)
       if (_obj) {
         getIntegral(_obj.url)

Vissa filer visades inte eftersom för många filer har ändrats