李志伟 il y a 2 ans
Parent
révision
f443ea2efa

+ 2
- 3
src/components/OrgPicker/index.vue Voir le fichier

@@ -42,8 +42,9 @@ watch(props.modelValue, (val) => {
42 42
 })
43 43
 
44 44
 const queryData = (params) => {  
45
-  getOrgList({ ...params, isSystem: true })
45
+  getOrgList({ ...params })
46 46
     .then((res) => {
47
+      //是否为第一页
47 48
       const first = res.current === 1
48 49
       if (first) {
49 50
         orgResult.value = res
@@ -74,7 +75,6 @@ const onCancel = () => {
74 75
 // 组件加载, onLoad 就会执行一次
75 76
 // 所以 onMounted 里面不需要初始化执行了
76 77
 const onLoad = () => {
77
-  console.info('----------invoiceId-------->',props.invoiceId)
78 78
   const pageNum = orgResult.value.current ? orgResult.value.current + 1 : 1
79 79
   queryData({ pageNum, pageSize, name: searchValue.value,invoiceId:props.invoiceId })
80 80
 }
@@ -84,7 +84,6 @@ const onClick = (org) => {
84 84
 }
85 85
 
86 86
 const onSubmit = () => {
87
-  console.info(orgSelected.value)
88 87
   emit('update:modelValue', orgSelected.value.invoiceOrgId)
89 88
   if (orgSelected.value.invoiceOrgId && orgSelected.value.name) {
90 89
     emit('change', orgSelected.value)

+ 9
- 22
src/components/PersonPicker/index.vue Voir le fichier

@@ -16,11 +16,11 @@
16 16
       >
17 17
         <van-cell
18 18
           v-for="org in orgList"
19
-          :key="org.orgId"
19
+          :key="org.invoiceOrgId"
20 20
           :title="org.name"
21 21
           @click="onClick(org)"
22 22
         >
23
-          <template #right-icon v-if="org.orgId === orgSelected.orgId">
23
+          <template #right-icon v-if="org.invoiceOrgId === orgSelected.invoiceOrgId">
24 24
             <van-icon name="success" />
25 25
           </template>
26 26
         </van-cell>
@@ -53,18 +53,15 @@ const emit = defineEmits(['update:modelValue', 'change'])
53 53
 
54 54
 const orgList = computed(() => orgResult.value.records || [])
55 55
 watch(props.modelValue, (val) => {
56
-  orgSelected.value = { orgId: val }
56
+  orgSelected.value = { invoiceOrgId: val }
57 57
 })
58
-watch(() => props.orgId, (val) => {
59
-  if (!props.orgId) {
60
-    alert('请先选则所属公司')
61
-  } else {
62
-    queryData({ pageNum:1, pageSize, name: searchValue.value, invoiceId: props.invoiceId, invoiceOrgId: props.orgId })
63
-  }
58
+watch(()=>props.orgId,(val)=>{
59
+  const pageNum = 1
60
+  queryData({ pageNum, pageSize, name: searchValue.value, invoiceId: props.invoiceId, invoiceOrgId: val })
64 61
 })
65 62
 
66 63
 const queryData = (params) => {
67
-  getPersonList({ ...params, isSystem: true })
64
+  getPersonList(params)
68 65
     .then((res) => {
69 66
       const first = res.current === 1
70 67
       if (first) {
@@ -75,7 +72,6 @@ const queryData = (params) => {
75 72
           records: orgResult.value.records.concat(res.records)
76 73
         }
77 74
       }
78
-
79 75
       loading.value = false
80 76
       finished.value = res.current >= res.pages
81 77
     })
@@ -86,11 +82,7 @@ const queryData = (params) => {
86 82
 }
87 83
 
88 84
 const onSearch = (val) => {
89
-  if (!props.orgId) {
90
-    alert('请先选则所属公司')
91
-  } else {
92
-    queryData({ pageNum:1, pageSize, name: searchValue.value, invoiceId: props.invoiceId, invoiceOrgId: props.orgId })
93
-  }
85
+  queryData({ pageNum: 1, pageSize, name: searchValue.value, invoiceId: props.invoiceId, invoiceOrgId: props.orgId })
94 86
 }
95 87
 
96 88
 const onCancel = () => {
@@ -101,11 +93,7 @@ const onCancel = () => {
101 93
 // 所以 onMounted 里面不需要初始化执行了
102 94
 const onLoad = () => {
103 95
   const pageNum = orgResult.value.current ? orgResult.value.current + 1 : 1
104
-  if (!props.orgId) {
105
-    alert('请先选则所属公司')
106
-  } else {
107
-    queryData({ pageNum, pageSize, name: searchValue.value, invoiceId: props.invoiceId, invoiceOrgId: props.orgId })
108
-  }
96
+  queryData({ pageNum, pageSize, name: searchValue.value, invoiceId: props.invoiceId, invoiceOrgId: props.orgId })
109 97
 }
110 98
 
111 99
 const onClick = (org) => {
@@ -113,7 +101,6 @@ const onClick = (org) => {
113 101
 }
114 102
 
115 103
 const onSubmit = () => {
116
-  console.info(orgSelected.value)
117 104
   emit('update:modelValue', orgSelected.value.invoicePersonId)
118 105
   if (orgSelected.value.invoicePersonId && orgSelected.value.name) {
119 106
     emit('change', orgSelected.value)

+ 15
- 2
src/pages/index.vue Voir le fichier

@@ -13,6 +13,7 @@
13 13
         round
14 14
         :style="{ width: '40vw', margin: 'auto' }"
15 15
         type="primary"
16
+        @click="goRecord"
16 17
       >
17 18
         填写记录
18 19
       </van-button>
@@ -21,6 +22,7 @@
21 22
         class="mybutton"
22 23
         :style="{ width: '40vw', margin: 'auto' }"
23 24
         type="primary"
25
+        @click="goPromulgate"
24 26
       >
25 27
         信息公示
26 28
       </van-button>
@@ -52,11 +54,22 @@ const formData = reactive({
52 54
 })
53 55
 
54 56
 const goForm = () => {
55
-  router.push({ name: 'invoice.fill', params: { id: formData.data.invoiceId } })
57
+  router.push({ name: 'invoice.fill', 
58
+  params: { 
59
+    invoiceId: formData.data.invoiceId,
60
+    invoiceName: formData.data.name,
61
+    status:formData.data.status
62
+  } })
63
+}
64
+const goRecord = () => {
65
+  router.push({ name: 'invoice.records'})
66
+}
67
+const goPromulgate = () => {
68
+  router.push({ name: 'invoice.promulgate'})
56 69
 }
57 70
 onMounted(() => {
58 71
   getInvoiceFill(formData.data.invoiceId).then(res => {
59
-    formData.data = res.invoice
72
+    formData.data = res
60 73
   }).catch(err => {
61 74
     console.log(err)
62 75
   })

+ 25
- 14
src/pages/invoice/fill.vue Voir le fichier

@@ -1,7 +1,7 @@
1 1
 <template>
2 2
   <van-form @failed="onFailed" @submit="onSubmit">
3 3
     <h2 :style="{ textAlign: 'center' }">{{ formData.invoiceName }}</h2>
4
-    <van-cell-group title="开票单位">
4
+    <van-cell-group title="报销人信息">
5 5
       <van-field
6 6
         label="所属公司"
7 7
         v-model="formData.invoiceOrgName"
@@ -27,7 +27,7 @@
27 27
         v-model="formData.personName"
28 28
         name="personName"
29 29
         readonly
30
-        @click="showPersonPicker = true"
30
+        @click="showOrgPopup"
31 31
         placeholder="请输入报销人"
32 32
         :rules="[{ required: true, message: '请输入报销人' }]"
33 33
       />
@@ -134,7 +134,7 @@
134 134
 <script setup>
135 135
 import { onMounted, reactive, ref } from 'vue';
136 136
 import { useRouter } from 'vue-router'
137
-import {getInvoiceFill} from '@/services/invoice'
137
+import { getInvoiceModel } from '@/services/invoice'
138 138
 
139 139
 const formData = reactive({
140 140
   //班级名称
@@ -159,7 +159,7 @@ const formData = reactive({
159 159
   charge: undefined,
160 160
   mergeRemark: undefined,
161 161
   stayRemark: undefined,
162
-  status:undefined
162
+  status: undefined
163 163
 })
164 164
 const showOrgPicker = ref(false)
165 165
 const showPersonPicker = ref(false)
@@ -172,20 +172,15 @@ const validator = (val) => /1\d{10}/.test(val);
172 172
 const validatorMessage = (val) => `${val} 不合法,请重新输入`;
173 173
 
174 174
 onMounted(() => {
175
-  formData.invoiceId=router.currentRoute._rawValue.params.id
176
-  getInvoiceFill(formData.invoiceId).then(res=>{
177
-    formData.invoiceName=res.invoice.name;
178
-    formData.status=res.invoice.status;
179
-  }).catch(err=>{
180
-    console.log(err)
181
-  })
175
+  formData.invoiceId = router.currentRoute._rawValue.params.invoiceId
176
+  formData.invoiceName = router.currentRoute._rawValue.params.invoiceName
177
+  formData.status = router.currentRoute._rawValue.params.status
182 178
 })
183 179
 
184 180
 // 校验函数可以返回 Promise,实现异步校验
185 181
 const asyncValidator = (val) =>
186 182
   new Promise((resolve) => {
187 183
     Toast.loading('验证中...');
188
-
189 184
     setTimeout(() => {
190 185
       Toast.clear();
191 186
       resolve(val === '1234');
@@ -199,15 +194,31 @@ const onOrgConfirm = (value) => {
199 194
   if (value) {
200 195
     formData.orgId = value.invoiceOrgId
201 196
     formData.invoiceOrgName = value.name
197
+    formData.personName = ''
198
+    formData.invoicePersonId=''
202 199
   }
203 200
   showOrgPicker.value = false;
204 201
 };
205
-const getDetail=()=>{
206
-  
202
+const showOrgPopup = () => {
203
+  if (formData.orgId) {
204
+    showPersonPicker.value = true
205
+  } else {
206
+    alert('请先选择所属公司')
207
+  }
208
+}
209
+//获取模板详情
210
+const getDetail = () => {
211
+  getInvoiceModel(formData.invoiceId, { invoicePersonId: formData.invoicePersonId,personId:formData.invoicePersonId }).then(res => {
212
+    console.log(res)
213
+  }).catch(err => {
214
+    console.log(err);
215
+  })
207 216
 }
208 217
 const onPersonConfirm = (value) => {
209 218
   if (value) {
219
+    console.log(value);
210 220
     formData.personName = value.name
221
+    formData.invoicePersonId= value.invoicePersonId
211 222
     getDetail()
212 223
   }
213 224
   showPersonPicker.value = false;

+ 65
- 0
src/pages/invoice/promulgate.vue Voir le fichier

@@ -0,0 +1,65 @@
1
+<template>
2
+  <div class="list">
3
+    <h2>信息公示</h2>
4
+    <van-list>
5
+      <van-cell
6
+        class="item"
7
+        v-for="item in recordList"
8
+        :key="item.invoiceId"
9
+        :title="item.orgName"
10
+        @click="() => goDetail(item.invoiceId)"
11
+      >
12
+        <template #value>
13
+          <span>{{ item.name }}</span>
14
+        </template>
15
+      </van-cell>
16
+    </van-list>
17
+  </div>
18
+</template>
19
+<script setup>
20
+import { onMounted, ref } from "vue"
21
+import { useRouter } from 'vue-router'
22
+
23
+const router = useRouter();
24
+
25
+const recordList = ref([
26
+  {
27
+    orgName:'江苏林业集团',
28
+    name: '张九九',
29
+    invoiceId: '1',
30
+  },
31
+  {
32
+    orgName:'南京云致科技有限公司',
33
+    name: '李盼',
34
+    invoiceId: '2',
35
+  },
36
+  {
37
+    orgName:'邓州市源盛农机专业合作社',
38
+    name: '印雪彬',
39
+    invoiceId: '3',
40
+  },
41
+  {
42
+    orgName:'杭州昱恒科技有限公司',
43
+    name: '陈康',
44
+    invoiceId: '4',
45
+  },
46
+])
47
+
48
+onMounted(() => {
49
+  //获取提交记录
50
+})
51
+const goDetail = (val) => {
52
+  router.push({ name: 'invoice.fill', params: { id: val } })
53
+}
54
+</script>
55
+<style lang="less" scoped>
56
+.list {
57
+  padding: 16px;
58
+  h2 {
59
+    text-align: center;
60
+  }
61
+  .item + .item {
62
+    margin-top: 16px;
63
+  }
64
+}
65
+</style>

+ 65
- 0
src/pages/invoice/records.vue Voir le fichier

@@ -0,0 +1,65 @@
1
+<template>
2
+  <div class="list">
3
+    <h2>填写记录</h2>
4
+    <van-list>
5
+      <van-cell
6
+        class="item"
7
+        v-for="item in recordList"
8
+        :key="item.invoiceId"
9
+        :title="item.name"
10
+        @click="() => goDetail(item.invoiceId)"
11
+      >
12
+        <template #value>
13
+          <span>{{ item.createDate }} >></span>
14
+        </template>
15
+      </van-cell>
16
+    </van-list>
17
+  </div>
18
+</template>
19
+<script setup>
20
+import { onMounted, ref } from "vue"
21
+import { useRouter } from 'vue-router'
22
+
23
+const router = useRouter();
24
+
25
+const recordList = ref([
26
+  {
27
+    name: '电网一班',
28
+    invoiceId: '1',
29
+    createDate: '2022-4-8'
30
+  },
31
+  {
32
+    name: '电网二班',
33
+    invoiceId: '2',
34
+    createDate: '2022-6-8'
35
+  },
36
+  {
37
+    name: '电网三班',
38
+    invoiceId: '3',
39
+    createDate: '2022-9-8'
40
+  },
41
+  {
42
+    name: '电网四班',
43
+    invoiceId: '4',
44
+    createDate: '2022-2-8'
45
+  },
46
+])
47
+
48
+onMounted(() => {
49
+  //获取提交记录
50
+})
51
+const goDetail = (val) => {
52
+  router.push({ name: 'invoice.fill', params: { id: val } })
53
+}
54
+</script>
55
+<style lang="less" scoped>
56
+.list {
57
+  padding: 16px;
58
+  h2 {
59
+    text-align: center;
60
+  }
61
+  .item + .item {
62
+    margin-top: 16px;
63
+  }
64
+}
65
+</style>

+ 2
- 0
src/router/index.js Voir le fichier

@@ -6,6 +6,8 @@ import store from '@/store';
6 6
 const routes = [
7 7
   { path: '/', name: 'index', component: () => import('@/pages/index.vue') },
8 8
   { path: '/invoice/fill', name: 'invoice.fill', component: () => import('@/pages/invoice/fill.vue') },
9
+  { path: '/invoice/records', name: 'invoice.records', component: () => import('@/pages/invoice/records.vue') },
10
+  { path: '/invoice/promulgate', name: 'invoice.promulgate', component: () => import('@/pages/invoice/promulgate.vue') },
9 11
   { path: '/login', name: 'login', component: () => import('@/pages/login.vue') },
10 12
 ];
11 13
 

+ 5
- 0
src/services/invoice.js Voir le fichier

@@ -4,3 +4,8 @@ import request from "@/utils/request";
4 4
 export function getInvoiceFill(id) {
5 5
   return request.get(`/invoice/${id}`)
6 6
 }
7
+
8
+// 获取报销模板详情
9
+export function getInvoiceModel(id,params) {
10
+  return request.get(`/invoice/${id}/detail/info`,{params})
11
+}