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 \ No newline at end of file 17 \ No newline at end of file
src/api/property/index.ts
@@ -20,6 +20,12 @@ export function propertyList (params) { @@ -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 * @description 新增物业 30 * @description 新增物业
25 * @function propertyAdd 31 * @function propertyAdd
@@ -42,4 +48,4 @@ export function propertyStatus (params) { @@ -42,4 +48,4 @@ export function propertyStatus (params) {
42 url: '/property/updateStatus', 48 url: '/property/updateStatus',
43 params: params 49 params: params
44 }) 50 })
45 -}  
46 \ No newline at end of file 51 \ No newline at end of file
  52 +}
47 \ No newline at end of file 53 \ No newline at end of file
src/api/request.ts
1 import axios from 'axios' 1 import axios from 'axios'
  2 +import * as store from "@/pinia/index";
  3 +import router from '@/router'
2 4
3 // 不这样写报ts类型错误,import...有一个多余的boolean类型 5 // 不这样写报ts类型错误,import...有一个多余的boolean类型
4 let url: any = import.meta.env 6 let url: any = import.meta.env
5 let instance = axios.create({ 7 let instance = axios.create({
6 baseURL: url.VITE_BASE_URL, 8 baseURL: url.VITE_BASE_URL,
  9 + withCredentials: true,
7 timeout: 10000 10 timeout: 10000
8 }) 11 })
9 12
10 instance.interceptors.request.use( 13 instance.interceptors.request.use(
11 config => { 14 config => {
12 config.headers['Accept'] = 'application/json' 15 config.headers['Accept'] = 'application/json'
  16 + config.headers['Access-Control-Allow-Origin'] = '*'
13 // config.headers['type'] = 'formData' 17 // config.headers['type'] = 'formData'
14 - // config.headers['X-Token'] = 'my token' 18 + config.headers['X-Token'] = store.family.loginStore().token
15 return config 19 return config
16 }, 20 },
17 error => { 21 error => {
@@ -21,6 +25,17 @@ instance.interceptors.request.use( @@ -21,6 +25,17 @@ instance.interceptors.request.use(
21 25
22 instance.interceptors.response.use( 26 instance.interceptors.response.use(
23 response => { 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 return response 39 return response
25 }, 40 },
26 error => { 41 error => {
src/components/Pagination/index.vue
@@ -75,7 +75,7 @@ const emit = defineEmits<{ @@ -75,7 +75,7 @@ const emit = defineEmits<{
75 </template> 75 </template>
76 76
77 <style scoped lang="scss"> 77 <style scoped lang="scss">
78 - .pagination-container {  
79 - padding: 10px;  
80 - }  
81 -</style>  
82 \ No newline at end of file 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,240 +49,6 @@ let styleData = computed(()=&gt;{
49 <el-menu-item index="1-4-1">item one</el-menu-item> 49 <el-menu-item index="1-4-1">item one</el-menu-item>
50 </el-sub-menu> 50 </el-sub-menu>
51 </el-sub-menu> 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 <el-menu-item index="2"> 52 <el-menu-item index="2">
287 <el-icon><icon-menu /></el-icon> 53 <el-icon><icon-menu /></el-icon>
288 <template #title>Navigator Two</template> 54 <template #title>Navigator Two</template>
src/pinia/index.ts
@@ -5,7 +5,7 @@ import menu from &#39;./modules/menu&#39; @@ -5,7 +5,7 @@ import menu from &#39;./modules/menu&#39;
5 5
6 // 获取modules文件夹下面所有ts文件 6 // 获取modules文件夹下面所有ts文件
7 let files = import.meta.globEager('./modules/*.ts') 7 let files = import.meta.globEager('./modules/*.ts')
8 -let modules = {}, allStore = {}, family = {} 8 +let modules:any = {}, allStore:any = {}, family: any = {}
9 for(let file in files) { 9 for(let file in files) {
10 const moduleName = file.replace(/(.*\/)*([^.]+).*/gi, '$2') 10 const moduleName = file.replace(/(.*\/)*([^.]+).*/gi, '$2')
11 modules = { ...modules, ...files[file] } 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 \ No newline at end of file 26 \ No newline at end of file
src/utils/progress.ts
@@ -6,21 +6,24 @@ NProgress.configure({ showSpinner: false }) @@ -6,21 +6,24 @@ NProgress.configure({ showSpinner: false })
6 6
7 router.beforeEach((to: any, from: any, next: any) => { 7 router.beforeEach((to: any, from: any, next: any) => {
8 NProgress.start() 8 NProgress.start()
9 - const hasToken = 1 && 1 9 + const hasToken = true
10 const whiteList = ['/login'] 10 const whiteList = ['/login']
11 11
12 // TIP 页面标题设置 12 // TIP 页面标题设置
13 globalThis.document.title = to.meta.title? to.meta.title: import.meta.env.VITE_APP_TITLE 13 globalThis.document.title = to.meta.title? to.meta.title: import.meta.env.VITE_APP_TITLE
14 14
15 if (hasToken) { 15 if (hasToken) {
  16 + console.log('has')
16 if (to.path === '/login') { 17 if (to.path === '/login') {
17 - next({ path: '/about' }) 18 + // next({ path: '/about' })
  19 + next()
18 NProgress.done() 20 NProgress.done()
19 } else { 21 } else {
20 next() 22 next()
21 NProgress.done() 23 NProgress.done()
22 } 24 }
23 } else { 25 } else {
  26 + console.log('hasno t')
24 if (whiteList.indexOf(to.path) !== -1) { 27 if (whiteList.indexOf(to.path) !== -1) {
25 next() 28 next()
26 } else { 29 } else {
src/views/property/index.vue
1 <script setup lang="ts"> 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 import Pagination from "@/components/Pagination/index.vue"; 4 import Pagination from "@/components/Pagination/index.vue";
5 -let data = reactive([]); 5 +let data = reactive({
  6 + list: []
  7 +})
6 let loading = ref(false); 8 let loading = ref(false);
7 let params = reactive({ 9 let params = reactive({
8 total: 0, 10 total: 0,
9 query: { 11 query: {
10 page: 1, 12 page: 1,
11 - pageSize: 10  
12 - }  
13 -}) 13 + pageSize: 10,
  14 + },
  15 +});
14 const handlePageChange = (page, size) => { 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 </script> 37 </script>
26 38
27 <template> 39 <template>
28 <div class="page-container"> 40 <div class="page-container">
  41 + <h1>物业列表</h1>
29 <el-table 42 <el-table
30 - :data="data" 43 + :data="data.list"
31 style="width: 100%" 44 style="width: 100%"
32 border 45 border
33 v-loading="loading" 46 v-loading="loading"
  47 + align="center"
34 element-loading-text="拼命加载中" 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 <el-table-column prop="status" label="状态"> 66 <el-table-column prop="status" label="状态">
40 <template #default="scope"> 67 <template #default="scope">
41 {{ scope.row.status }} 68 {{ scope.row.status }}
42 </template> 69 </template>
43 </el-table-column> 70 </el-table-column>
44 - <el-table-column label="按钮"> 71 + <el-table-column label="操作">
45 <template #default="scope"> 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 </template> 75 </template>
48 </el-table-column> 76 </el-table-column>
49 </el-table> 77 </el-table>
src/views/resident/index.vue
1 <script setup lang="ts"> 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 </script> 18 </script>
3 19
4 <template> 20 <template>
5 <div class="page-container"> 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 </div> 50 </div>
8 </template> 51 </template>
src/views/user/login.vue
1 <script setup lang="ts"> 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 </script> 11 </script>
3 12
4 <template> 13 <template>