Commit eab5869b03e5c5a63279253f1892e071bb24a0ed

Authored by 杨泽宇
1 parent 990f4a72

login

src/api/login/index.ts 0 → 100644
  1 +import request from '../request'
  2 +import { AxiosRequestConfig } from 'axios';
  3 +
  4 +export const login = async ( params: any, data: any ) => {
  5 + // let res: any = await request.post( '/login', data, {userName: '123', password: 'cmnt123'} )
  6 + let res: any = await request({
  7 + url: '/login',
  8 + method: 'post',
  9 + data: {
  10 + userName: '123',
  11 + password: 'cmnt123'
  12 + }
  13 + })
  14 + // let res: any = await request( {url: '/neighborhood/getList', params:{propertyId: 1, type: 1}, method: 'post' })
  15 + return res
  16 +}
0 17 \ No newline at end of file
... ...
src/api/property/index.ts
... ... @@ -20,6 +20,12 @@ export function propertyList (params) {
20 20 })
21 21 }
22 22  
  23 +export const property_list = async ( params: any ) => {
  24 + let res: any = await request.get( '/property/list', { params } )
  25 + // let res: any = await request( {url: '/neighborhood/getList', params:{propertyId: 1, type: 1}, method: 'post' })
  26 + return res
  27 +}
  28 +
23 29 /**
24 30 * @description 新增物业
25 31 * @function propertyAdd
... ... @@ -42,4 +48,4 @@ export function propertyStatus (params) {
42 48 url: '/property/updateStatus',
43 49 params: params
44 50 })
45   -}
46 51 \ No newline at end of file
  52 +}
47 53 \ No newline at end of file
... ...
src/api/request.ts
1 1 import axios from 'axios'
  2 +import * as store from "@/pinia/index";
  3 +import router from '@/router'
2 4  
3 5 // 不这样写报ts类型错误,import...有一个多余的boolean类型
4 6 let url: any = import.meta.env
5 7 let instance = axios.create({
6 8 baseURL: url.VITE_BASE_URL,
  9 + withCredentials: true,
7 10 timeout: 10000
8 11 })
9 12  
10 13 instance.interceptors.request.use(
11 14 config => {
12 15 config.headers['Accept'] = 'application/json'
  16 + config.headers['Access-Control-Allow-Origin'] = '*'
13 17 // config.headers['type'] = 'formData'
14   - // config.headers['X-Token'] = 'my token'
  18 + config.headers['X-Token'] = store.family.loginStore().token
15 19 return config
16 20 },
17 21 error => {
... ... @@ -21,6 +25,17 @@ instance.interceptors.request.use(
21 25  
22 26 instance.interceptors.response.use(
23 27 response => {
  28 + if(response) {
  29 + console.log(response?.data?.errorCode)
  30 + }
  31 + switch(~~response?.data?.errorCode) {
  32 + case 10002:
  33 + console.log('跳转')
  34 + router.push({
  35 + path: 'login'
  36 + })
  37 + break;
  38 + }
24 39 return response
25 40 },
26 41 error => {
... ...
src/components/Pagination/index.vue
... ... @@ -75,7 +75,7 @@ const emit = defineEmits<{
75 75 </template>
76 76  
77 77 <style scoped lang="scss">
78   - .pagination-container {
79   - padding: 10px;
80   - }
81   -</style>
82 78 \ No newline at end of file
  79 +.pagination-container {
  80 + padding: 10px;
  81 +}
  82 +</style>
... ...
src/layout/menu.vue
... ... @@ -49,240 +49,6 @@ let styleData = computed(()=&gt;{
49 49 <el-menu-item index="1-4-1">item one</el-menu-item>
50 50 </el-sub-menu>
51 51 </el-sub-menu>
52   - <el-sub-menu index="1">
53   - <template #title>
54   - <el-icon><location /></el-icon>
55   - <span>Navigator One</span>
56   - </template>
57   - <el-menu-item-group>
58   - <template #title><span>Group One</span></template>
59   - <el-menu-item index="1-1">item one</el-menu-item>
60   - <el-menu-item index="1-2">item two</el-menu-item>
61   - </el-menu-item-group>
62   - <el-menu-item-group title="Group Two">
63   - <el-menu-item index="1-3">item three</el-menu-item>
64   - </el-menu-item-group>
65   - <el-sub-menu index="1-4">
66   - <template #title><span>item four</span></template>
67   - <el-menu-item index="1-4-1">item one</el-menu-item>
68   - </el-sub-menu>
69   - </el-sub-menu>
70   - <el-sub-menu index="1">
71   - <template #title>
72   - <el-icon><location /></el-icon>
73   - <span>Navigator One</span>
74   - </template>
75   - <el-menu-item-group>
76   - <template #title><span>Group One</span></template>
77   - <el-menu-item index="1-1">item one</el-menu-item>
78   - <el-menu-item index="1-2">item two</el-menu-item>
79   - </el-menu-item-group>
80   - <el-menu-item-group title="Group Two">
81   - <el-menu-item index="1-3">item three</el-menu-item>
82   - </el-menu-item-group>
83   - <el-sub-menu index="1-4">
84   - <template #title><span>item four</span></template>
85   - <el-menu-item index="1-4-1">item one</el-menu-item>
86   - </el-sub-menu>
87   - </el-sub-menu>
88   - <el-sub-menu index="1">
89   - <template #title>
90   - <el-icon><location /></el-icon>
91   - <span>Navigator One</span>
92   - </template>
93   - <el-menu-item-group>
94   - <template #title><span>Group One</span></template>
95   - <el-menu-item index="1-1">item one</el-menu-item>
96   - <el-menu-item index="1-2">item two</el-menu-item>
97   - </el-menu-item-group>
98   - <el-menu-item-group title="Group Two">
99   - <el-menu-item index="1-3">item three</el-menu-item>
100   - </el-menu-item-group>
101   - <el-sub-menu index="1-4">
102   - <template #title><span>item four</span></template>
103   - <el-menu-item index="1-4-1">item one</el-menu-item>
104   - </el-sub-menu>
105   - </el-sub-menu>
106   - <el-sub-menu index="1">
107   - <template #title>
108   - <el-icon><location /></el-icon>
109   - <span>Navigator One</span>
110   - </template>
111   - <el-menu-item-group>
112   - <template #title><span>Group One</span></template>
113   - <el-menu-item index="1-1">item one</el-menu-item>
114   - <el-menu-item index="1-2">item two</el-menu-item>
115   - </el-menu-item-group>
116   - <el-menu-item-group title="Group Two">
117   - <el-menu-item index="1-3">item three</el-menu-item>
118   - </el-menu-item-group>
119   - <el-sub-menu index="1-4">
120   - <template #title><span>item four</span></template>
121   - <el-menu-item index="1-4-1">item one</el-menu-item>
122   - </el-sub-menu>
123   - </el-sub-menu>
124   - <el-sub-menu index="1">
125   - <template #title>
126   - <el-icon><location /></el-icon>
127   - <span>Navigator One</span>
128   - </template>
129   - <el-menu-item-group>
130   - <template #title><span>Group One</span></template>
131   - <el-menu-item index="1-1">item one</el-menu-item>
132   - <el-menu-item index="1-2">item two</el-menu-item>
133   - </el-menu-item-group>
134   - <el-menu-item-group title="Group Two">
135   - <el-menu-item index="1-3">item three</el-menu-item>
136   - </el-menu-item-group>
137   - <el-sub-menu index="1-4">
138   - <template #title><span>item four</span></template>
139   - <el-menu-item index="1-4-1">item one</el-menu-item>
140   - </el-sub-menu>
141   - </el-sub-menu>
142   - <el-sub-menu index="1">
143   - <template #title>
144   - <el-icon><location /></el-icon>
145   - <span>Navigator One</span>
146   - </template>
147   - <el-menu-item-group>
148   - <template #title><span>Group One</span></template>
149   - <el-menu-item index="1-1">item one</el-menu-item>
150   - <el-menu-item index="1-2">item two</el-menu-item>
151   - </el-menu-item-group>
152   - <el-menu-item-group title="Group Two">
153   - <el-menu-item index="1-3">item three</el-menu-item>
154   - </el-menu-item-group>
155   - <el-sub-menu index="1-4">
156   - <template #title><span>item four</span></template>
157   - <el-menu-item index="1-4-1">item one</el-menu-item>
158   - </el-sub-menu>
159   - </el-sub-menu>
160   - <el-sub-menu index="1">
161   - <template #title>
162   - <el-icon><location /></el-icon>
163   - <span>Navigator One</span>
164   - </template>
165   - <el-menu-item-group>
166   - <template #title><span>Group One</span></template>
167   - <el-menu-item index="1-1">item one</el-menu-item>
168   - <el-menu-item index="1-2">item two</el-menu-item>
169   - </el-menu-item-group>
170   - <el-menu-item-group title="Group Two">
171   - <el-menu-item index="1-3">item three</el-menu-item>
172   - </el-menu-item-group>
173   - <el-sub-menu index="1-4">
174   - <template #title><span>item four</span></template>
175   - <el-menu-item index="1-4-1">item one</el-menu-item>
176   - </el-sub-menu>
177   - </el-sub-menu>
178   - <el-sub-menu index="1">
179   - <template #title>
180   - <el-icon><location /></el-icon>
181   - <span>Navigator One</span>
182   - </template>
183   - <el-menu-item-group>
184   - <template #title><span>Group One</span></template>
185   - <el-menu-item index="1-1">item one</el-menu-item>
186   - <el-menu-item index="1-2">item two</el-menu-item>
187   - </el-menu-item-group>
188   - <el-menu-item-group title="Group Two">
189   - <el-menu-item index="1-3">item three</el-menu-item>
190   - </el-menu-item-group>
191   - <el-sub-menu index="1-4">
192   - <template #title><span>item four</span></template>
193   - <el-menu-item index="1-4-1">item one</el-menu-item>
194   - </el-sub-menu>
195   - </el-sub-menu>
196   - <el-sub-menu index="1">
197   - <template #title>
198   - <el-icon><location /></el-icon>
199   - <span>Navigator One</span>
200   - </template>
201   - <el-menu-item-group>
202   - <template #title><span>Group One</span></template>
203   - <el-menu-item index="1-1">item one</el-menu-item>
204   - <el-menu-item index="1-2">item two</el-menu-item>
205   - </el-menu-item-group>
206   - <el-menu-item-group title="Group Two">
207   - <el-menu-item index="1-3">item three</el-menu-item>
208   - </el-menu-item-group>
209   - <el-sub-menu index="1-4">
210   - <template #title><span>item four</span></template>
211   - <el-menu-item index="1-4-1">item one</el-menu-item>
212   - </el-sub-menu>
213   - </el-sub-menu>
214   - <el-sub-menu index="1">
215   - <template #title>
216   - <el-icon><location /></el-icon>
217   - <span>Navigator One</span>
218   - </template>
219   - <el-menu-item-group>
220   - <template #title><span>Group One</span></template>
221   - <el-menu-item index="1-1">item one</el-menu-item>
222   - <el-menu-item index="1-2">item two</el-menu-item>
223   - </el-menu-item-group>
224   - <el-menu-item-group title="Group Two">
225   - <el-menu-item index="1-3">item three</el-menu-item>
226   - </el-menu-item-group>
227   - <el-sub-menu index="1-4">
228   - <template #title><span>item four</span></template>
229   - <el-menu-item index="1-4-1">item one</el-menu-item>
230   - </el-sub-menu>
231   - </el-sub-menu>
232   - <el-sub-menu index="1">
233   - <template #title>
234   - <el-icon><location /></el-icon>
235   - <span>Navigator One</span>
236   - </template>
237   - <el-menu-item-group>
238   - <template #title><span>Group One</span></template>
239   - <el-menu-item index="1-1">item one</el-menu-item>
240   - <el-menu-item index="1-2">item two</el-menu-item>
241   - </el-menu-item-group>
242   - <el-menu-item-group title="Group Two">
243   - <el-menu-item index="1-3">item three</el-menu-item>
244   - </el-menu-item-group>
245   - <el-sub-menu index="1-4">
246   - <template #title><span>item four</span></template>
247   - <el-menu-item index="1-4-1">item one</el-menu-item>
248   - </el-sub-menu>
249   - </el-sub-menu>
250   - <el-sub-menu index="1">
251   - <template #title>
252   - <el-icon><location /></el-icon>
253   - <span>Navigator One</span>
254   - </template>
255   - <el-menu-item-group>
256   - <template #title><span>Group One</span></template>
257   - <el-menu-item index="1-1">item one</el-menu-item>
258   - <el-menu-item index="1-2">item two</el-menu-item>
259   - </el-menu-item-group>
260   - <el-menu-item-group title="Group Two">
261   - <el-menu-item index="1-3">item three</el-menu-item>
262   - </el-menu-item-group>
263   - <el-sub-menu index="1-4">
264   - <template #title><span>item four</span></template>
265   - <el-menu-item index="1-4-1">item one</el-menu-item>
266   - </el-sub-menu>
267   - </el-sub-menu>
268   - <el-sub-menu index="1">
269   - <template #title>
270   - <el-icon><location /></el-icon>
271   - <span>Navigator One</span>
272   - </template>
273   - <el-menu-item-group>
274   - <template #title><span>Group One</span></template>
275   - <el-menu-item index="1-1">item one</el-menu-item>
276   - <el-menu-item index="1-2">item two</el-menu-item>
277   - </el-menu-item-group>
278   - <el-menu-item-group title="Group Two">
279   - <el-menu-item index="1-3">item three</el-menu-item>
280   - </el-menu-item-group>
281   - <el-sub-menu index="1-4">
282   - <template #title><span>item four</span></template>
283   - <el-menu-item index="1-4-1">item one</el-menu-item>
284   - </el-sub-menu>
285   - </el-sub-menu>
286 52 <el-menu-item index="2">
287 53 <el-icon><icon-menu /></el-icon>
288 54 <template #title>Navigator Two</template>
... ...
src/pinia/index.ts
... ... @@ -5,7 +5,7 @@ import menu from &#39;./modules/menu&#39;
5 5  
6 6 // 获取modules文件夹下面所有ts文件
7 7 let files = import.meta.globEager('./modules/*.ts')
8   -let modules = {}, allStore = {}, family = {}
  8 +let modules:any = {}, allStore:any = {}, family: any = {}
9 9 for(let file in files) {
10 10 const moduleName = file.replace(/(.*\/)*([^.]+).*/gi, '$2')
11 11 modules = { ...modules, ...files[file] }
... ...
src/pinia/modules/login.ts 0 → 100644
  1 +const id = 'login'
  2 +const state = () => ({
  3 + token: '',
  4 +})
  5 +const getters = {
  6 + // getCollapseStatus () {
  7 + // return this.isCollapse
  8 + // }
  9 + getToken() {
  10 + return this.token
  11 + }
  12 +}
  13 +const actions = {
  14 + setToken(tokenStr: string) {
  15 + this.token = tokenStr
  16 + }
  17 +}
  18 +
  19 +export default {
  20 + namespace: true,
  21 + actions,
  22 + getters,
  23 + state,
  24 + id
  25 +}
0 26 \ No newline at end of file
... ...
src/utils/progress.ts
... ... @@ -6,21 +6,24 @@ NProgress.configure({ showSpinner: false })
6 6  
7 7 router.beforeEach((to: any, from: any, next: any) => {
8 8 NProgress.start()
9   - const hasToken = 1 && 1
  9 + const hasToken = true
10 10 const whiteList = ['/login']
11 11  
12 12 // TIP 页面标题设置
13 13 globalThis.document.title = to.meta.title? to.meta.title: import.meta.env.VITE_APP_TITLE
14 14  
15 15 if (hasToken) {
  16 + console.log('has')
16 17 if (to.path === '/login') {
17   - next({ path: '/about' })
  18 + // next({ path: '/about' })
  19 + next()
18 20 NProgress.done()
19 21 } else {
20 22 next()
21 23 NProgress.done()
22 24 }
23 25 } else {
  26 + console.log('hasno t')
24 27 if (whiteList.indexOf(to.path) !== -1) {
25 28 next()
26 29 } else {
... ...
src/views/property/index.vue
1 1 <script setup lang="ts">
2   -import { reactive, ref } from "vue";
3   -import { propertyList } from "@/api/tengxi";
  2 +import { reactive, ref, onMounted } from "vue";
  3 +import { property_list } from "@/api/property";
4 4 import Pagination from "@/components/Pagination/index.vue";
5   -let data = reactive([]);
  5 +let data = reactive({
  6 + list: []
  7 +})
6 8 let loading = ref(false);
7 9 let params = reactive({
8 10 total: 0,
9 11 query: {
10 12 page: 1,
11   - pageSize: 10
12   - }
13   -})
  13 + pageSize: 10,
  14 + },
  15 +});
14 16 const handlePageChange = (page, size) => {
15   - params.query.page = page
16   - params.query.pageSize = size
17   -}
18   -propertyList()
19   - .then((res) => {
20   - console.log(res);
21   - })
22   - .catch((error) => {
23   - console.log(error);
24   - });
  17 + params.query.page = page;
  18 + params.query.pageSize = size;
  19 +};
  20 +const handleLogin = async () => {
  21 + try {
  22 + const res = await property_list();
  23 + console.log(res.data.data.list);
  24 + data.list = res.data.data.list
  25 + } catch (e) {
  26 + console.log(e)
  27 + }
  28 +};
  29 +
  30 +onMounted(() => {
  31 + try{
  32 + handleLogin()
  33 + } catch(e) {
  34 + console.log(e)
  35 + }
  36 +});
25 37 </script>
26 38  
27 39 <template>
28 40 <div class="page-container">
  41 + <h1>物业列表</h1>
29 42 <el-table
30   - :data="data"
  43 + :data="data.list"
31 44 style="width: 100%"
32 45 border
33 46 v-loading="loading"
  47 + align="center"
34 48 element-loading-text="拼命加载中"
35 49 >
36   - <el-table-column prop="date" label="日期" width="180"> </el-table-column>
37   - <el-table-column prop="name" label="姓名" width="180"> </el-table-column>
38   - <el-table-column prop="address" label="地址"> </el-table-column>
  50 + <el-table-column prop="location" label="地区" width="180">
  51 + </el-table-column>
  52 + <el-table-column prop="address" label="详细地址" width="180">
  53 + </el-table-column>
  54 + <el-table-column prop="name" label="公司名称" width="180">
  55 + </el-table-column>
  56 + <el-table-column prop="userName" label="联系人" width="180">
  57 + </el-table-column>
  58 + <el-table-column prop="userPhone" label="联系电话" width="180">
  59 + </el-table-column>
  60 + <el-table-column prop="businessLicense" label="营业执照" width="180">
  61 + </el-table-column>
  62 + <el-table-column prop="createTime" label="入驻时间" width="180">
  63 + </el-table-column>
  64 + <el-table-column prop="contractNumber" label="合同编号" width="180">
  65 + </el-table-column>
39 66 <el-table-column prop="status" label="状态">
40 67 <template #default="scope">
41 68 {{ scope.row.status }}
42 69 </template>
43 70 </el-table-column>
44   - <el-table-column label="按钮">
  71 + <el-table-column label="操作">
45 72 <template #default="scope">
46   - <el-button type="primary">哈哈</el-button>
  73 + <el-button type="primary">代理登录</el-button>
  74 + <el-button type="primary">删除</el-button>
47 75 </template>
48 76 </el-table-column>
49 77 </el-table>
... ...
src/views/resident/index.vue
1 1 <script setup lang="ts">
  2 +import { reactive, ref } from "vue";
  3 +import { propertyList } from "@/api/tengxi";
  4 +import Pagination from "@/components/Pagination/index.vue";
  5 +let data = reactive([]);
  6 +let loading = ref(false);
  7 +let params = reactive({
  8 + total: 0,
  9 + query: {
  10 + page: 1,
  11 + pageSize: 10,
  12 + },
  13 +});
  14 +const handlePageChange = (page, size) => {
  15 + params.query.page = page;
  16 + params.query.pageSize = size;
  17 +};
2 18 </script>
3 19  
4 20 <template>
5 21 <div class="page-container">
6   - resident index
  22 + <h1>居民列表</h1>
  23 + <el-table
  24 + :data="data"
  25 + style="width: 100%"
  26 + border
  27 + v-loading="loading"
  28 + element-loading-text="拼命加载中"
  29 + >
  30 + <el-table-column prop="date" label="日期" width="180"> </el-table-column>
  31 + <el-table-column prop="name" label="姓名" width="180"> </el-table-column>
  32 + <el-table-column prop="address" label="地址"> </el-table-column>
  33 + <el-table-column prop="status" label="状态">
  34 + <template #default="scope">
  35 + {{ scope.row.status }}
  36 + </template>
  37 + </el-table-column>
  38 + <el-table-column label="按钮">
  39 + <template #default="scope">
  40 + <el-button type="primary">哈哈</el-button>
  41 + </template>
  42 + </el-table-column>
  43 + </el-table>
  44 + <Pagination
  45 + :total="params.total"
  46 + :currentPage="params.query.page"
  47 + :pageSize="params.query.pageSize"
  48 + @pageChange="handlePageChange"
  49 + ></Pagination>
7 50 </div>
8 51 </template>
... ...
src/views/user/login.vue
1 1 <script setup lang="ts">
  2 +import { login } from '@/api/login'
  3 +import * as store from "@/pinia/index";
  4 +login().then(res => {
  5 + console.log(res)
  6 + console.log(store.family.loginStore().token)
  7 + if(res) {
  8 + store.family.loginStore().setToken(res.data.data.token)
  9 + }
  10 +})
2 11 </script>
3 12  
4 13 <template>
... ...