Browse Source

工作报告弹框改写

wangtao 7 months ago
parent
commit
9b1bd3a700

+ 6 - 0
README.md

@@ -2,3 +2,9 @@
 
 
 ### 账号:fire_admin
 ### 账号:fire_admin
 ### 密码:FIRE_admin123
 ### 密码:FIRE_admin123
+
+
+ ## node
+ >18.1.0
+
+

+ 7 - 1
src/api/business/project.js

@@ -41,6 +41,12 @@ export function projectApi() {
                 data: data
                 data: data
             })
             })
         },
         },
+        ReportDelete(params) {
+            return request({
+                url: '/service-iot/pmWorkReport/del/' + params,
+                method: 'delete',
+            })
+        },
         ProjectsSelect(data) {
         ProjectsSelect(data) {
             return request({
             return request({
                 url: '/service-iot/pmProject/projects',
                 url: '/service-iot/pmProject/projects',
@@ -81,5 +87,5 @@ export function projectApi() {
                 method: 'GET',
                 method: 'GET',
             })
             })
         }
         }
-    };
+    }
 }
 }

+ 2 - 2
src/api/login.js

@@ -21,9 +21,9 @@ export function getInfo() {
 }
 }
 
 
 // 退出方法
 // 退出方法
-export function logout() {
+export function logout(params) {
   return request({
   return request({
-    url: "/system/logout",
+    url: "/system/logout" + "?openId=" + params.openId,
     method: "delete",
     method: "delete",
   });
   });
 }
 }

+ 60 - 28
src/pages/business/common/projectMange/list/index.vue

@@ -8,7 +8,7 @@
       </template>
       </template>
       <template #right>
       <template #right>
         <view class="u-navbar__content__right__item">
         <view class="u-navbar__content__right__item">
-          <u-icon name="more-dot-fill" size="20" color="#000" @click="moreClick('insert', {})"></u-icon>
+          <u-icon name="list" size="20" color="#000" @click="handleSubmit('insert')" ></u-icon>
         </view>
         </view>
       </template>
       </template>
     </u-navbar>
     </u-navbar>
@@ -22,7 +22,6 @@
       :scrollable="false"
       :scrollable="false"
     ></u-tabs>
     ></u-tabs>
   </u-sticky>
   </u-sticky>
-
   <oa-scroll
   <oa-scroll
     customClass="list-container scroll-height"
     customClass="list-container scroll-height"
     :pageSize="pageSize"
     :pageSize="pageSize"
@@ -51,13 +50,16 @@
         <view class="list-cell" style="color: #666666; line-height: 25px" v-for="(base, index) in dataList" :key="index">
         <view class="list-cell" style="color: #666666; line-height: 25px" v-for="(base, index) in dataList" :key="index">
           <view class="content-area-top menu-item">
           <view class="content-area-top menu-item">
             <view class="content-area-top-time"> </view>
             <view class="content-area-top-time"> </view>
-            <u-icon class="content-area-top-icon" name="more-dot-fill" size="20" color="#000" @click="moreClick('update', base)"></u-icon>
+            <u-icon class="content-area-top-icon" name="man-delete" size="20" color="orange" @click="tips('warn',`确认退出名为 '${base.projectName}' 的项目?`,base,'exit')" 
+            v-if="base.projectHead != useStore.userId && base.createBy != useStore.name &&  base.projectMember.indexOf(useStore.userId) != -1"></u-icon>
+            <u-icon class="content-area-top-icon" name="edit-pen" size="20" color="rgb(20, 158, 255)" @click="handleSubmit('update',base)" v-if="base.projectHead == useStore.userId || base.createBy == useStore.name"></u-icon>
+            <u-icon class="content-area-top-icon" name="trash" size="20" color="red" @click="tips('error',`确认删除名为 '${base.projectName}' 的项目?`,base,'delete')" v-if="base.projectHead == useStore.userId || base.createBy == useStore.name"></u-icon>
           </view>
           </view>
           <view class="content-area-row_wrap menu-item">
           <view class="content-area-row_wrap menu-item">
-            <view class="content-area-row_wrap-view"> 项目名称:{{ base.projectName }} </view>
-            <view class="content-area-row_wrap-view"> 项目负责人: {{ proxy.$common.mapping("nickName", "userId", base.projectHead, userDate) }} </view>
+            <view class="content-area-row_wrap-view"> <strong>{{ base.projectName }}</strong> </view>
+            <view class="content-area-row_wrap-view"> 负责人: {{ proxy.$common.mapping("nickName", "userId", base.projectHead, userDate) }} </view>
             <view class="content-area-row_wrap-view">
             <view class="content-area-row_wrap-view">
-              项目状态:
+              状态:
               <view class="content-area-row_wrap-view-status" v-if="base.projectStatus == 1" style="background-color: #909399"> 未开始 </view>
               <view class="content-area-row_wrap-view-status" v-if="base.projectStatus == 1" style="background-color: #909399"> 未开始 </view>
               <view class="content-area-row_wrap-view-status" v-if="base.projectStatus == 2" style="background-color: #23dedc"> 进行中 </view>
               <view class="content-area-row_wrap-view-status" v-if="base.projectStatus == 2" style="background-color: #23dedc"> 进行中 </view>
               <view class="content-area-row_wrap-view-status" v-if="base.projectStatus == 3" style="background-color: #16bf00"> 已完成 </view>
               <view class="content-area-row_wrap-view-status" v-if="base.projectStatus == 3" style="background-color: #16bf00"> 已完成 </view>
@@ -65,7 +67,7 @@
               <view class="content-area-row_wrap-view-status" v-if="base.projectStatus == 5" style="background-color: #f56c6c"> 已作废 </view>
               <view class="content-area-row_wrap-view-status" v-if="base.projectStatus == 5" style="background-color: #f56c6c"> 已作废 </view>
             </view>
             </view>
             <view class="content-area-row_wrap-view" style="display: block">
             <view class="content-area-row_wrap-view" style="display: block">
-              项目成员:<span>{{ proxy.$common.mapping("nickName", "userId", base.projectMember, userDate) }} </span>
+              成员:<span>{{ proxy.$common.mapping("nickName", "userId", base.projectMember, userDate) }} </span>
             </view>
             </view>
           </view>
           </view>
         </view>
         </view>
@@ -74,15 +76,10 @@
   </oa-scroll>
   </oa-scroll>
 
 
   <oa-tabbar :tabbarValue="2" :tabbarList="proxy.$constData.projectTabbar" :isSwitchTab="false"></oa-tabbar>
   <oa-tabbar :tabbarValue="2" :tabbarList="proxy.$constData.projectTabbar" :isSwitchTab="false"></oa-tabbar>
-
-  <u-modal :show="modalShow" title="" :cancelText="'取消'" :zoom="false" :showConfirmButton="false" :showCancelButton="true" @cancel="modalShow = false">
-    <view class="slot-content">
-      <view @click="handleSubmit('insert')" v-if="modalType === 'insert'">添加项目</view>
-      <view class="mb20" @click="handleSubmit('update')" v-if="modalType === 'update' && modalEvent.projectHead == useStore.userId">编辑项目</view>
-      <view class="mb20" @click="handleSubmit('delete')" v-if="modalType === 'update' && modalEvent.projectHead == useStore.userId">删除项目</view>
-      <view class="mb20" @click="handleSubmit('exit')" v-if="modalType === 'update' && modalEvent.projectHead != useStore.userId">退出项目</view>
-    </view>
-  </u-modal>
+  <uni-popup ref="alertDialog" type="dialog">
+    <uni-popup-dialog :type="state.tip.type" cancelText="取消" confirmText="确定" title="操作提醒" :content="state.tip.content" @confirm="dialogConfirm"
+      @close="dialogClose"></uni-popup-dialog>
+  </uni-popup>
 </template>
 </template>
 
 
 <script setup>
 <script setup>
@@ -117,6 +114,13 @@ const state = reactive({
   modalShow: false,
   modalShow: false,
   modalType: "",
   modalType: "",
   modalEvent: {},
   modalEvent: {},
+  msgContent:undefined,
+  tip:{
+    type:undefined,//弹框类型
+    content:"",//提示信息
+    data:{},//带入数据
+    operation:undefined,//操作类型
+  }
 });
 });
 
 
 const { tabsList, tabsCurrent, dataList, pageSize, current, total, userDate, modalShow, modalType, modalEvent } = toRefs(state);
 const { tabsList, tabsCurrent, dataList, pageSize, current, total, userDate, modalShow, modalType, modalEvent } = toRefs(state);
@@ -130,31 +134,57 @@ function init() {
   });
   });
   selectListApi();
   selectListApi();
 }
 }
-
-function handleSubmit(type) {
+/**
+ * 操作弹框提醒
+ * @param type  弹框类型
+ * @param content 提示内容
+ * @param item 带入数据
+ * @param operation 操作类型
+ */
+function tips(type,content,item,operation){
+  state.tip.type=type
+  state.tip.content=content
+  state.tip.data=item
+  state.tip.operation=operation
+  proxy.$refs.alertDialog.open()
+}
+/**弹框确定操作 */
+function dialogConfirm(){
+  if(state.tip.operation =='delete'){
+    handleSubmit('delete',state.tip.data)
+  }
+  if(state.tip.operation=='exit'){
+    handleSubmit('exit',state.tip.data)
+  }
+}
+/**弹框取消操作 */
+function dialogClose(){
+  proxy.$refs.alertDialog.close()
+}
+function handleSubmit(type,item) {
   if (type === "insert") {
   if (type === "insert") {
     proxy.$tab.navigateTo(`/pages/business/common/projectMange/list/addEdit`);
     proxy.$tab.navigateTo(`/pages/business/common/projectMange/list/addEdit`);
   } else if (type === "update") {
   } else if (type === "update") {
-    proxy.$tab.navigateTo(`/pages/business/common/projectMange/list/addEdit?id=${state.modalEvent.id}`);
+    proxy.$tab.navigateTo(`/pages/business/common/projectMange/list/addEdit?id=${item.id}`);
   } else if (type === "delete") {
   } else if (type === "delete") {
     projectApi()
     projectApi()
-      .ProjectsDelete(state.modalEvent.id)
-      .then((requset) => {
-        proxy.$modal.msg("删除成功!");
+      .ProjectsDelete(item.id)
+      .then(() => {
+        proxy.$modal.msg("项目删除成功!");
         selectListApi();
         selectListApi();
       })
       })
       .catch((errors) => {
       .catch((errors) => {
-        proxy.$modal.msg("删除失败,请稍后重试!");
+        proxy.$modal.msg(errors);
       });
       });
   } else if (type === "exit") {
   } else if (type === "exit") {
     projectApi()
     projectApi()
-      .ProjectsExit(state.modalEvent.id)
-      .then((requset) => {
-        proxy.$modal.msg("退出成功!");
+      .ProjectsExit(item.id)
+      .then(() => {
+        proxy.$modal.msg("项目退出成功!");
         selectListApi();
         selectListApi();
       })
       })
       .catch((errors) => {
       .catch((errors) => {
-        proxy.$modal.msg("退出失败,请稍后重试!");
+        proxy.$modal.msg(errors);
       });
       });
   }
   }
 
 
@@ -219,6 +249,7 @@ function tabsClick(e) {
 onReady(() => {});
 onReady(() => {});
 
 
 onShow(() => {
 onShow(() => {
+  init();
   //调用系统主题颜色
   //调用系统主题颜色
   proxy.$settingStore.systemThemeColor([1]);
   proxy.$settingStore.systemThemeColor([1]);
 });
 });
@@ -240,7 +271,8 @@ onLoad((options) => {
       font-size: 16px;
       font-size: 16px;
       font-weight: 600;
       font-weight: 600;
       color: #000000;
       color: #000000;
-
+      width:30%;
+      float: right;
       &-time {
       &-time {
         max-width: 70%;
         max-width: 70%;
         margin: auto 0;
         margin: auto 0;

+ 81 - 6
src/pages/business/common/projectMange/record/index.vue

@@ -45,8 +45,13 @@
       <u-loading-page :loading="state.loading" fontSize="16" style="z-index: 99"></u-loading-page>
       <u-loading-page :loading="state.loading" fontSize="16" style="z-index: 99"></u-loading-page>
       <view class="content-area" v-for="(group, date) in proxy.$common.groupedItems(state.dataList, 'submitDate')" :key="date">
       <view class="content-area" v-for="(group, date) in proxy.$common.groupedItems(state.dataList, 'submitDate')" :key="date">
         <view class="content-area-time font14">{{ proxy.$time.jktTimes(date, "否") }}</view>
         <view class="content-area-time font14">{{ proxy.$time.jktTimes(date, "否") }}</view>
-        <view class="content-area-center bg-white" v-for="(el, ind) in group" :key="ind" @click="goContentDetails(el)">
-          <view class="flex mb10">
+        <view class="content-area-center bg-white" v-for="(el, ind) in group" :key="ind">
+          <view class="content-area-top menu-item" style="float:right;padding:10px 0px">
+            <view class="content-area-top-time"> </view>
+            <!-- <u-icon class="content-area-top-icon" name="edit-pen" size="20" color="rgb(20, 158, 255)" @click="handleSubmit('update',el)" v-if="state.tabsCurrent ==1" style="display:inline-block;margin-right:30px;"></u-icon> -->
+            <u-icon class="content-area-top-icon" name="trash" size="20" color="red" @click="tips('error',`确认删除时间为 '${el.submitDate}' 的日报吗?`,el,'delete')" v-if="state.tabsCurrent ==1" style="display:inline-block;"></u-icon>
+          </view>
+          <view class="flex mb10" @click="goContentDetails(el)">
             <u-avatar
             <u-avatar
               class="content-area-center-avatar mr10"
               class="content-area-center-avatar mr10"
               :text="el.createBy.length > 2 ? el.createBy.slice(1, 3) : el.createBy"
               :text="el.createBy.length > 2 ? el.createBy.slice(1, 3) : el.createBy"
@@ -61,10 +66,10 @@
               <view class="content-area-center-time font12">{{ proxy.$time.jktTimes(el.submitDate.replace("T", " ")) }}</view>
               <view class="content-area-center-time font12">{{ proxy.$time.jktTimes(el.submitDate.replace("T", " ")) }}</view>
             </view>
             </view>
           </view>
           </view>
-          <view class="mb5">
+          <view class="mb5" @click="goContentDetails(el)">
             <u-text :text="el.contentText.length >= 100 ? el.contentText.slice(0, 100) + '···' : el.contentText" color="#666666" size="14"></u-text>
             <u-text :text="el.contentText.length >= 100 ? el.contentText.slice(0, 100) + '···' : el.contentText" color="#666666" size="14"></u-text>
           </view>
           </view>
-          <view class="flex" v-if="el.createBy != useStore.nickName">
+          <view class="flex" v-if="el.createBy != useStore.nickName" @click="goContentDetails(el)">
             <u-tag class="mr10" type="info" text="已读" size="mini" plain v-if="el.readFlag === 1" style="margin: 0 auto"></u-tag>
             <u-tag class="mr10" type="info" text="已读" size="mini" plain v-if="el.readFlag === 1" style="margin: 0 auto"></u-tag>
             <u-tag class="mr10" type="error" text="未读" size="mini" plain v-if="el.readFlag === 0" style="margin: 0 auto"></u-tag>
             <u-tag class="mr10" type="error" text="未读" size="mini" plain v-if="el.readFlag === 0" style="margin: 0 auto"></u-tag>
             <u-text text="全文" :color="proxy.$settingStore.themeColor.color" size="14"></u-text>
             <u-text text="全文" :color="proxy.$settingStore.themeColor.color" size="14"></u-text>
@@ -75,6 +80,10 @@
   </oa-scroll>
   </oa-scroll>
 
 
   <oa-tabbar :tabbarValue="0" :tabbarList="proxy.$constData.projectTabbar" :isSwitchTab="false"></oa-tabbar>
   <oa-tabbar :tabbarValue="0" :tabbarList="proxy.$constData.projectTabbar" :isSwitchTab="false"></oa-tabbar>
+  <uni-popup ref="alertDialog" type="dialog">
+    <uni-popup-dialog :type="state.tip.type" cancelText="取消" confirmText="确定" title="操作提醒" :content="state.tip.content" @confirm="dialogConfirm"
+      @close="dialogClose"></uni-popup-dialog>
+  </uni-popup>
 </template>
 </template>
 
 
 <script setup>
 <script setup>
@@ -104,10 +113,42 @@ const state = reactive({
   pageSize: 20,
   pageSize: 20,
   current: 1,
   current: 1,
   total: 0,
   total: 0,
+  modalShow: false,
+  modalType: "",
+  modalEvent: {},
+  reportData:{},
+  tip:{
+    type:undefined,//弹框类型
+    content:"",//提示信息
+    data:{},//带入数据
+    operation:undefined,//操作类型
+  }
 });
 });
 
 
-const { tabsList, tabsCurrent, dataList, pageSize, current, total } = toRefs(state);
-
+const { tabsList, tabsCurrent, dataList, pageSize, current, total} = toRefs(state);
+/**
+ * 操作弹框提醒
+ * @param type  弹框类型
+ * @param content 提示内容
+ * @param item 带入数据
+ * @param operation 操作类型
+ */
+ function tips(type,content,item,operation){
+  state.tip.type=type
+  state.tip.content=content
+  state.tip.data=item
+  state.tip.operation=operation
+  proxy.$refs.alertDialog.open()
+}
+/**弹框确定操作 */
+function dialogConfirm(){
+  if(state.tip.operation =='delete'){
+    handleSubmit('delete',state.tip.data)
+  }
+  if(state.tip.operation=='exit'){
+    handleSubmit('exit',state.tip.data)
+  }
+}
 /**
 /**
  * @初始化
  * @初始化
  */
  */
@@ -166,6 +207,31 @@ function tabsClick(e) {
   state.tabsCurrent = e.index;
   state.tabsCurrent = e.index;
   init();
   init();
 }
 }
+/** 更多按钮点击事件 */
+function moreClick(type, event) {
+  state.modalShow = true;
+  state.modalType = type;
+  state.modalEvent = event;
+  state.reportData = event;
+
+}
+/** 编辑、删除日报*/
+function handleSubmit(type,item) {
+  if (type === "update") {
+    proxy.$tab.navigateTo(`/pages/business/common/projectMange/write/insert?templateId=1&id=${item.id}`);
+  } else if (type === "delete") {
+    projectApi()
+      .ReportDelete(item.id)
+      .then(() => {
+        proxy.$modal.msg("日报删除成功!");
+        init();
+      })
+      .catch((errors) => {
+        proxy.$modal.msg(errors);
+      });
+  } 
+  state.modalShow = false;
+}
 
 
 onReady(() => {});
 onReady(() => {});
 
 
@@ -216,4 +282,13 @@ onUnload(() => {
     }
     }
   }
   }
 }
 }
+
+.pp{
+  text-align: left;
+}
+</style>
+<style>
+.pp .u-modal__content{
+  justify-content: left !important
+}
 </style>
 </style>

+ 2 - 0
src/pages/business/common/projectMange/write/components/template1.vue

@@ -294,6 +294,8 @@ function handleSubmit() {
 watch(
 watch(
   () => props.projectList,
   () => props.projectList,
   (val) => {
   (val) => {
+    console.log(val)
+
     state.userList = [];
     state.userList = [];
     state.projectsCheck = [];
     state.projectsCheck = [];
     state.projectsList = [];
     state.projectsList = [];

+ 26 - 1
src/pages/business/common/projectMange/write/insert.vue

@@ -60,6 +60,7 @@ const props = defineProps({
     default: undefined,
     default: undefined,
   },
   },
 });
 });
+var pages = getCurrentPages(); //获取当前页面栈的实例;
 /*----------------------------------变量声明-----------------------------------*/
 /*----------------------------------变量声明-----------------------------------*/
 const state = reactive({
 const state = reactive({
   modalShow: false,
   modalShow: false,
@@ -71,7 +72,7 @@ function moreClick() {
   state.modalShow = true;
   state.modalShow = true;
 }
 }
 
 
-function handleSubmit(type) {
+function handleSubmit(type,id) {
   if (type === "importPrevious") {
   if (type === "importPrevious") {
     projectApi()
     projectApi()
       .ProjectsWeekList({
       .ProjectsWeekList({
@@ -92,11 +93,35 @@ function handleSubmit(type) {
         state.modalShow = false;
         state.modalShow = false;
       });
       });
   }
   }
+  if (type === "update") {
+    projectApi()
+      .ReportRecord({
+        reportId: id,
+        pageNum: 1,
+        pageSize: 10000,
+      })
+      .then((requset) => {
+        var newData = requset.data.records[0];
+        state.newProjectList = {
+          id: newData.id,
+          tomorrowPlan: newData.tomorrowPlan,
+          coordinateWork: newData.coordinateWork,
+          workContents: newData.workContents,
+          sendDingTalk: newData.sendDingTalk,
+          ccTo: newData.ccTo,
+        };
+      });
+  }
 }
 }
 
 
 onReady(() => {});
 onReady(() => {});
 
 
 onShow(() => {
 onShow(() => {
+  console.log("onShow",pages[pages.length - 1].options)
+  if(pages[pages.length - 1]?.options?.templateId && pages[pages.length - 1]?.options?.id){
+    handleSubmit("update",pages[pages.length - 1]?.options?.id)
+  }
+
   //调用系统主题颜色
   //调用系统主题颜色
   proxy.$settingStore.systemThemeColor([1]);
   proxy.$settingStore.systemThemeColor([1]);
 });
 });

+ 11 - 7
src/store/modules/user.js

@@ -285,7 +285,7 @@ const useStores = defineStore("useStores", {
     // 退出系统
     // 退出系统
     LogOut() {
     LogOut() {
       return new Promise((resolve, reject) => {
       return new Promise((resolve, reject) => {
-        logout()
+        logout({openId:localStorage.getItem("wxOpenId") ? localStorage.getItem("wxOpenId") : ""})
           .then(() => {
           .then(() => {
             setting.setBadge(0); // 设置角标值
             setting.setBadge(0); // 设置角标值
 
 
@@ -294,6 +294,7 @@ const useStores = defineStore("useStores", {
             this.SET_PERMISSIONS([]);
             this.SET_PERMISSIONS([]);
             removeToken();
             removeToken();
             storage.clean();
             storage.clean();
+            localStorage.removeItem("App-Token");
             resolve();
             resolve();
           })
           })
           .catch((error) => {
           .catch((error) => {
@@ -315,9 +316,9 @@ const useStores = defineStore("useStores", {
           }else{
           }else{
             getPageAuthorization({ openId: localStorage.getItem("wxOpenId") }).then((res) => {
             getPageAuthorization({ openId: localStorage.getItem("wxOpenId") }).then((res) => {
               if (res?.data?.openid && res?.data?.accessToken) {
               if (res?.data?.openid && res?.data?.accessToken) {
+                localStorage.setItem("App-Token", res.data.accessToken)
+                this.GetInfo()
                 window.location.href = `${url}pages/index`;
                 window.location.href = `${url}pages/index`;
-              } else {
-                this.LogOut().then()
               }
               }
             })
             })
           }
           }
@@ -326,7 +327,7 @@ const useStores = defineStore("useStores", {
             window.location.href = config.baseUrl + "/service-iot/weChat/getFirst1";
             window.location.href = config.baseUrl + "/service-iot/weChat/getFirst1";
           } else {
           } else {
             localStorage.setItem("wxOpenId", common.getUrlList().openId)
             localStorage.setItem("wxOpenId", common.getUrlList().openId)
-            GetWxOpenId(1)
+            this.GetWxOpenId(1)
           }
           }
         }
         }
       } else if (type == 2 && common.isWechatMp()) {
       } else if (type == 2 && common.isWechatMp()) {
@@ -334,16 +335,19 @@ const useStores = defineStore("useStores", {
           if(!localStorage.getItem("App-Token")){
           if(!localStorage.getItem("App-Token")){
             getPageAuthorization({ openId: localStorage.getItem("wxOpenId") }).then((res) => {
             getPageAuthorization({ openId: localStorage.getItem("wxOpenId") }).then((res) => {
               if (res?.data?.openid && res?.data?.accessToken) {
               if (res?.data?.openid && res?.data?.accessToken) {
-                window.location.href = `${url}pages/index`;
+                localStorage.setItem("App-Token", res.data.accessToken)
+                this.GetInfo()
               } else {
               } else {
                 this.LogOut().then(() => {
                 this.LogOut().then(() => {
                   window.location.href = `${url}pages/login`;
                   window.location.href = `${url}pages/login`;
                 })
                 })
               }
               }
             })
             })
+          }else{
+            this.GetInfo()
           }
           }
         }else{
         }else{
-            window.location.href = config.baseUrl + "/service-iot/weChat/getFirst1";
+          window.location.href = config.baseUrl + "/service-iot/weChat/getFirst1";
         }
         }
       }
       }
     },
     },
@@ -367,4 +371,4 @@ const useStores = defineStore("useStores", {
   },
   },
 });
 });
 
 
-export default useStores;
+export default useStores;