9b888601 by lttnew
2 parents 94f120e1 e92d0a31
...@@ -416,6 +416,16 @@ export function audit(data) { ...@@ -416,6 +416,16 @@ export function audit(data) {
416 }) 416 })
417 } 417 }
418 418
419 // 个人会员新版本审核
420 export function auditApi(data) {
421 return request({
422 url: `/person/paymentRangeNew/audit/${data.ids}?reason=${data.reason}&flag=${data.flag}`,
423 method: 'post',
424 params: data
425 })
426 }
427
428
419 // 审核详情 429 // 审核详情
420 export function getHistoryByRelateId(rId) { 430 export function getHistoryByRelateId(rId) {
421 return request({ 431 return request({
...@@ -1950,3 +1960,12 @@ export function GroupGetLogs(id) { ...@@ -1950,3 +1960,12 @@ export function GroupGetLogs(id) {
1950 }) 1960 })
1951 } 1961 }
1952 1962
1963
1964 // 新个人会员审批
1965 export function auditList(params) {
1966 return request({
1967 url: '/person/paymentRangeNew/list',
1968 method: 'get',
1969 params: params
1970 })
1971 }
......
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
1 <template> 1 <template>
2 <view> 2 <view>
3 <view class="text-center whitebg" v-if="userType=='2'"> 3 <!-- <view class="text-center whitebg" v-if="userType=='2'">-->
4 <view class="cardNav" v-if="userType=='2'"> 4 <!-- <view class="cardNav" v-if="userType=='2'">-->
5 <view class="active">审核</view> 5 <!-- <view class="active">审核</view>-->
6 <view @click="goMerge">合并</view> 6 <!-- <view @click="goMerge">合并</view>-->
7 <view @click="goMergeUp">提交</view> 7 <!-- <view @click="goMergeUp">提交</view>-->
8 </view> 8 <!-- </view>-->
9 </view> 9 <!-- </view>-->
10 <uni-segmented-control class="whitebg" :current="current" :values="navs" @clickItem="onClickItem" 10 <uni-segmented-control
11 styleType="text" activeColor="#AD181F"></uni-segmented-control> 11 :current="current"
12 12 :values="navs"
13 <!-- 缴费审核 --> 13 activeColor="#AD181F"
14 <view v-if="total>0" class="vipData" style="flex-wrap: wrap;"> 14 class="whitebg"
15 <view class="w50">人数合计 <text>{{ statistical.personCount }}</text></view> 15 styleType="text"
16 <view class="w50">新会员合计 <text>{{ statistical.newPersonCount }}</text></view> 16 @clickItem="onClickItem">
17 <view class="w50">续费合计 <text>{{ statistical.oldPersonCount }}</text></view> 17 </uni-segmented-control>
18 <view class="w50">年限合计 <text>{{ statistical.totalYear }}</text></view> 18
19 </view> 19 <!-- 缴费审核 -->
20 <view class="appList"> 20 <view v-if="total>0" class="vipData" style="flex-wrap: wrap;">
21 <view class="appItem" v-for="(item,index) in list" :key="index"> 21 <view class="w50">费用合计
22 <view class="status" @click="goDetail(item)"> 22 <text>{{ statistical.totalCost?.toFixed(2) }}</text>
23 <text v-if="item.auditStatus==0" class="text-primary">审核中</text> 23 </view>
24 <text v-if="item.auditStatus==1" class="text-success"> 审核通过</text> 24 <view class="w50">人数合计
25 <text v-if="item.auditStatus==2" class="text-danger"> 审核拒绝</text> 25 <text>{{ statistical.personCount }}</text>
26 <text v-if="item.auditStatus==3" class="text-warning">已撤回</text> 26 </view>
27 </view> 27 <view class="w50">新会员合计
28 <view class="date" @click="goDetail(item)"> 28 <text>{{ statistical.newPersonCount }}</text>
29 <uni-icons type="calendar-filled" size="16" color="#AD181F"></uni-icons> 29 </view>
30 {{item.content.commitTime}} 提交 30 <view class="w50">续费合计
31 </view> 31 <text>{{ statistical.oldPersonCount }}</text>
32 <view class="text-primary" v-if="item.content?.wfCode" @click="goDetail(item)">{{item.content?.wfCode}} 32 </view>
33 </view> 33 <view class="w50">年限合计
34 <view class="name" @click="goDetail(item)">{{item.content.name}}</view> 34 <text>{{ statistical.totalYear }}</text>
35 <view class="flexbox" @click="goDetail(item)"> 35 </view>
36 <view> 36 </view>
37 人数合计 37 <view class="appList">
38 <view>{{item.content.personCount}}</view> 38 <view v-for="(item,index) in list" :key="index" class="appItem">
39 </view> 39 <view class="status" @click="goDetail(item)">
40 <view> 40 <text v-if="item.auditStatus==1" class="text-primary">审核中</text>
41 年限合计 41 <text v-if="item.auditStatus==2" class="text-success"> 审核通过</text>
42 <view>{{item.content.totalYear}}</view> 42 <text v-if="item.auditStatus==3" class="text-danger"> 审核拒绝</text>
43 </view> 43 </view>
44 <view> 44 <view class="date" @click="goDetail(item)">
45 提交单位 45 <uni-icons color="#AD181F" size="16" type="calendar-filled"></uni-icons>
46 <view>{{item.content.memberName}}</view> 46 {{ item.commitTime }} 提交
47 </view> 47 </view>
48 </view> 48 <view v-if="item?.wfCode" class="text-primary" @click="goDetail(item)">{{ item.wfCode }}
49 <view class="func" v-if="item.auditStatus==0"> 49 </view>
50 <button @click="audit(item.recordId,'0')">拒绝</button> 50 <view class="name" @click="goDetail(item)">{{ item.memName }}</view>
51 <button @click="audit(item.recordId,'1')">同意</button> 51 <view class="flexbox" @click="goDetail(item)">
52 </view> 52 <view>
53 <view class="func" v-if="item.auditStatus==1 && item.isView == 1"> 53 人数合计
54 <button @click="handleDelete(item)">撤回</button> 54 <view>{{ item.allCount }}</view>
55 </view> 55 </view>
56 </view> 56 <view>
57 </view> 57 年限合计
58 58 <view>{{ item.yearCount }}</view>
59 59 </view>
60 60 <view>
61 <view class="nodata" v-if="list.length==0"> 61 新会员
62 <image mode="aspectFit" :src="config.baseUrl_api + '/fs/static/nodata.png'"></image> 62 <view>{{ item.newCount }}</view>
63 <text>暂无数据</text> 63 </view>
64 </view> 64 <view>
65 <!-- <view v-if="userType=='2'" class="block-btn-box"> 65 费用
66 <button @click="goMerge" class="btn-red-kx">前往合并 > </button> 66 <view>{{ (item.price * 1).toFixed(2) }}</view>
67 </view> --> 67 </view>
68 </view> 68 </view>
69 <view v-if="item.auditStatus==1" class="func">
70 <button @click="audit(item,'2')">拒绝</button>
71 <button @click="audit(item,'1')">同意</button>
72 </view>
73 <!-- <view v-if="item.auditStatus==1 && item.isView == 1" class="func">-->
74 <!-- <button @click="handleDelete(item)">撤回</button>-->
75 <!-- </view>-->
76 </view>
77 </view>
78
79
80 <view v-if="list.length==0" class="nodata">
81 <image :src="config.baseUrl_api + '/fs/static/nodata.png'" mode="aspectFit"></image>
82 <text>暂无数据</text>
83 </view>
84 <!-- <view v-if="userType=='2'" class="block-btn-box">
85 <button @click="goMerge" class="btn-red-kx">前往合并 > </button>
86 </view> -->
87 </view>
69 </template> 88 </template>
70 89
71 <script setup> 90 <script setup>
72 import * as api from '@/common/api.js' 91 import * as api from '@/common/api.js'
73 import config from '@/config.js' 92 import config from '@/config.js'
74 import { 93 import {ref} from 'vue'
75 onMounted, 94 import {onShow} from '@dcloudio/uni-app'
76 ref
77 } from 'vue'
78 import {
79 onShow
80 } from '@dcloudio/uni-app'
81 const app = getApp();
82 const queryParams = ref({
83 // pageNum: 1,
84 // pageSize: 10
85 auditStatus: '0'
86 })
87 const navs = ref(['待审核', '审核通过', '审核拒绝', '撤回'])
88 const current = ref(0)
89 const list = ref([])
90 const statistical = ref({})
91 const total = ref(0)
92 const deptType = ref('')
93 const userType = ref('')
94 onShow(() => {
95 if (app.globalData.isLogin) {
96 init()
97 } else {
98 app.firstLoadCallback = () => {
99 init()
100 };
101 }
102 })
103
104 function init() {
105 userType.value = app.globalData.userType
106 deptType.value = app.globalData.deptType
107 getList()
108 }
109
110 function onClickItem(e) {
111 console.log(e)
112 queryParams.value.auditStatus = e.currentIndex
113 getList()
114 }
115
116 function getList() {
117 uni.showLoading({
118 title: `加载中`,
119 mask: true
120 })
121 statistical.value = {
122 personCount: 0,
123 newPersonCount: 0,
124 oldPersonCount: 0,
125 totalYear: 0
126 }
127 if (deptType.value == 2 || deptType.value == 3) {
128 queryParams.value.mergeFlag = 0
129 }
130 api.getVerifyList(queryParams.value).then(res => {
131 list.value = res.rows
132 list.value.forEach(item => {
133 item.content = JSON.parse(item.content)
134 statistical.value.personCount += (item.content.personCount * 1)
135 statistical.value.newPersonCount += (item.content.newPersonCount * 1)
136 statistical.value.oldPersonCount += (item.content.oldPersonCount * 1)
137 statistical.value.totalYear += (item.content.totalYear * 1)
138 95
139 }) 96 const app = getApp();
140 total.value = res.total 97 const queryParams = ref({
141 uni.hideLoading() 98 // pageNum: 1,
142 }) 99 // pageSize: 10
143 } 100 auditStatus: "1",
101 auditFlag: "1"
102
103 })
104 const navs = ref(['待审核', '审核通过', '审核拒绝',])
105 const current = ref(0)
106 const list = ref([])
107 const statistical = ref({})
108 const total = ref(0)
109 const deptType = ref('')
110 const userType = ref('')
111 onShow(() => {
112 if (app.globalData.isLogin) {
113 init()
114 } else {
115 app.firstLoadCallback = () => {
116 init()
117 };
118 }
119 })
144 120
145 function handleDelete(row) { 121 function init() {
146 uni.showModal({ 122 userType.value = app.globalData.userType
147 title: '提示', 123 deptType.value = app.globalData.deptType
148 content: `确定撤回 ${row.content.name}?`, 124 getList()
149 success: function(res) { 125 }
150 if (res.confirm) {
151 api.withDraw({
152 recordId: row.recordId,
153 reason: row.reason
154 }).then(res => {
155 uni.showToast({
156 title: `操作成功`
157 })
158 getList()
159 })
160 }
161 }
162 })
163 }
164 126
165 function audit(recordId, flag) { 127 function onClickItem(e) {
166 if (flag == '0') { 128 queryParams.value.auditStatus = e.currentIndex + 1
167 // 拒绝 129 console.log(queryParams.value.auditStatus)
168 // 弹出框填写理由 130 getList()
169 uni.showModal({ 131 }
170 title: '请输入拒绝理由',
171 editable: true,
172 success: function(res) {
173 if (res.confirm) {
174 if (!res.content) {
175 uni.showToast({
176 title: '请输入拒绝理由',
177 icon: 'none'
178 })
179 } else {
180 doApproval(recordId, flag, res.content)
181 }
182 }
183 }
184 })
185 } else if (flag == '1') {
186 // 二次确认
187 uni.showModal({
188 title: '提示',
189 content: `确定审批通过吗`,
190 success: function(res) {
191 if (res.confirm) {
192 doApproval(recordId, flag)
193 }
194 }
195 })
196 }
197 }
198 132
199 function doApproval(recordId, flag, reason) { 133 async function getList() {
200 var obj = { 134 uni.showLoading({
201 flag: flag, 135 title: `加载中`,
202 reason: reason || '', 136 mask: true
203 recordIds: [] 137 })
204 } 138 if (deptType.value == 2 || deptType.value == 3) {
205 obj.recordIds.push(recordId) 139 queryParams.value.mergeFlag = 0
206 console.log(obj) 140 }
207 uni.showLoading({ 141 const res = await api.auditList(queryParams.value)
208 title: '加载中', 142 list.value = res.rows
209 mask: true 143 total.value = res.total
210 }) 144 statistical.value = {
211 api.audit(obj).then((res) => { 145 totalCost: 0,
212 uni.hideLoading() 146 personCount: 0,
213 uni.showToast({ 147 newPersonCount: 0,
214 title: '操作成功', 148 oldPersonCount: 0,
215 icon: 'none' 149 totalYear: 0
216 }) 150 }
217 getList() 151 for (const val of list.value) {
218 }) 152 statistical.value.totalCost += val.price * 1
219 } 153 statistical.value.personCount += val.allCount * 1
154 statistical.value.newPersonCount += val.newCount * 1
155 statistical.value.oldPersonCount += val.oldCount * 1
156 statistical.value.totalYear += val.yearCount * 1
157 }
158 uni.hideLoading()
159
160 }
220 161
221 function goDetail(item) { 162 function handleDelete(row) {
222 const form = encodeURIComponent(JSON.stringify(item)) 163 uni.showModal({
223 // console.log(userType.value) 164 title: '提示',
165 content: `确定撤回 ${row.name}?`,
166 success: function (res) {
167 if (res.confirm) {
168 api.withDraw({
169 recordId: row.recordId,
170 reason: row.reason
171 }).then(res => {
172 uni.showToast({
173 title: `操作成功`
174 })
175 getList()
176 })
177 }
178 }
179 })
180 }
224 181
225 let path = 182 function audit(item, flag) {
226 `/personalVip/auditDetail?form=${form}` 183 if (flag == '2') {
227 uni.navigateTo({ 184 // 拒绝
228 url: path 185 // 弹出框填写理由
229 }); 186 uni.showModal({
187 title: '请输入拒绝理由',
188 editable: true,
189 success: function (res) {
190 if (res.confirm) {
191 if (!res.content) {
192 uni.showToast({
193 title: '请输入拒绝理由',
194 icon: 'none'
195 })
196 return
197 } else {
198 doApproval(item.rangId, flag, res.content)
199 }
200 }
201 }
202 })
203 }
204 if (flag == '1') {
205 // 二次确认
206 uni.showModal({
207 title: '提示',
208 content: `确定审批通过吗`,
209 success: function (res) {
210 if (res.confirm) {
211 doApproval(item.rangId, flag)
212 }
213 }
214 })
215 }
216 }
230 217
218 function doApproval(recordId, flag, reason) {
219 let obj = {
220 flag: flag,
221 reason: reason || '',
222 ids: []
223 }
224 obj.ids.push(recordId)
225 console.log(obj)
226 uni.showLoading({
227 title: '加载中',
228 mask: true
229 })
230 api.auditApi(obj).then((res) => {
231 uni.hideLoading()
232 uni.showToast({
233 title: '操作成功',
234 icon: 'none'
235 })
236 getList()
237 })
238 }
231 239
232 } 240 function goDetail(item) {
241 const form = encodeURIComponent(JSON.stringify(item))
242 // console.log(userType.value)
243
244 // let path =
245 // `/personalVip/auditDetail?form=${form}`
246 // uni.navigateTo({
247 // url: path
248 // });
249
250 let path =
251 `/personalVip/paymentDetail?form=${form}`
252 uni.navigateTo({
253 url: path
254 });
255
256
257 }
233 258
234 function goMerge() { 259 function goMerge() {
235 let path = `/personalVip/sheng/merge` 260 let path = `/personalVip/sheng/merge`
236 uni.redirectTo({ 261 uni.redirectTo({
237 url: path 262 url: path
238 }); 263 });
239 } 264 }
240 265
241 function goMergeUp() { 266 function goMergeUp() {
242 let path = `/personalVip/sheng/mergeUp` 267 let path = `/personalVip/sheng/mergeUp`
243 uni.redirectTo({ 268 uni.redirectTo({
244 url: path 269 url: path
245 }); 270 });
246 } 271 }
247 </script> 272 </script>
248 273
249 <style> 274 <style>
250 275
251 </style>
...\ No newline at end of file ...\ No newline at end of file
276 </style>
......
1 <template> 1 <template>
2 <view> 2 <view>
3 <view class="wBox"> 3 <view class="wBox">
4 <view class="tt">{{form.paymentName}}</view> 4 <view class="tt">{{ form.memName }}</view>
5 <view class="info"> 5 <view class="info" style="flex-wrap: wrap;">
6 <view><text>{{list.length}}</text></view> 6 <view class="w45">
7 </view> 7 <text class="text-danger"> {{ form?.allCount }}</text>
8 <view class="userlist"> 8
9 <view class="item" v-for="(n,index) in list" :key="index"> 9 </view>
10 <view> 10 <view class="w45">新会员
11 <view class="name">{{n.perName}}<text v-if="n.memberInfoName">({{n.memberInfoName || ''}})</text></view> 11 <text class="text-primary"> {{ form?.newCount }}</text>
12 <view class="date">原有效期至 {{n.originValidityDate ? n.originValidityDate.slice(0,10) : '--'}}</view> 12
13 </view> 13 </view>
14 <view class="nian"> 14 <view class="w45">续费合计
15 {{n.payYear}} 15 <text class="text-primary"> {{ form?.oldCount }}</text>
16 </view> 16
17 </view> 17 </view>
18 </view> 18 <view class="w45">费用合计
19 </view> 19 <text class="text-danger">{{ form?.price }}</text>
20 20
21 <view class="h3-padding" v-if="feelList.length>0">审核流程</view> 21 </view>
22 <view class="wBox" v-if="feelList.length>0"> 22 </view>
23 <view class="stepItem" v-for="(n,index) in feelList" :key="index"> 23 </view>
24 <view class="time">{{n.auditTime || '待审批'}}</view> 24
25 <view class="content"> 25
26 <view class="status"> 26 <view class="wBox">
27 <text v-if="n.auditResult==0" class="text-primary"> 审核中</text> 27 <!-- <view class="tt">{{ // form.paymentName }}</view>-->
28 <text v-if="n.auditResult==1" class="text-success">审核通过</text> 28 <view class="info">
29 <text v-if="n.auditResult==2" class="text-danger"> 审核拒绝</text> 29 <view>
30 <text v-if="n.auditResult==3" class="text-warning"> 已撤回</text> 30 <text>{{ list.length }}</text>
31 </view> 31
32 <view class="name">{{index+1}}</view> 32 </view>
33 <view class="deptName">{{n.auditDeptName || n.auditBy}}</view> 33 </view>
34 <view>备注:{{n.auditMsg || '/' }}</view> 34 <view class="userlist">
35 </view> 35 <view v-for="(n,index) in list" :key="index" class="item">
36 </view> 36 <view>
37 </view> 37 <view class="name">{{ n.perName }}
38 </view> 38 <text v-if="n.memberInfoName">({{ n.memberInfoName || '' }})</text>
39 </view>
40 <view class="date">原有效期至 {{ n.originValidityDate ? n.originValidityDate.slice(0, 10) : '--' }}</view>
41 </view>
42 <view class="nian">
43 {{ n.payYear }}
44 </view>
45 </view>
46 </view>
47 </view>
48
49 <view v-if="feelList.length>0" class="h3-padding">审核流程</view>
50 <view v-if="feelList.length>0" class="wBox">
51 <view v-for="(n,index) in feelList" :key="index" class="stepItem">
52 <view class="time">{{ n.auditTime || '待审批' }}</view>
53 <view class="content">
54 <view class="status">
55 <text v-if="n.auditResult==0" class="text-primary"> 审核中</text>
56 <text v-if="n.auditResult==1" class="text-success">审核通过</text>
57 <text v-if="n.auditResult==2" class="text-danger"> 审核拒绝</text>
58 <text v-if="n.auditResult==3" class="text-warning"> 已撤回</text>
59 </view>
60 <view class="name">{{ index + 1 }}</view>
61 <view class="deptName">{{ n.auditDeptName || n.auditBy }}</view>
62 <view>备注:{{ n.auditMsg || '/' }}</view>
63 </view>
64 </view>
65 </view>
66 </view>
39 </template> 67 </template>
40 68
41 <script setup> 69 <script setup>
42 import * as api from '@/common/api.js' 70 import * as api from '@/common/api.js'
43 import { ref } from 'vue' 71 import {ref} from 'vue'
44 import { onLoad } from '@dcloudio/uni-app' 72 import {onLoad} from '@dcloudio/uni-app'
45 73
46 // 查询参数(和PC保持一致) 74 // 查询参数(和PC保持一致)
47 const queryParams = ref({ 75 const queryParams = ref({
48 rangeId: '', 76 rangeId: '',
49 pageNum: 1, 77 pageNum: 1,
50 pageSize: 999 78 pageSize: 999
51 }) 79 })
52 80
53 const form = ref({}) 81 const form = ref({})
54 const list = ref([]) 82 const list = ref([])
55 const feelList = ref([]) 83 const feelList = ref([])
56 84
57 onLoad((option) => { 85 onLoad((option) => {
58 if (option.form) { 86 if (option.form) {
59 form.value = JSON.parse(decodeURIComponent(option.form)) 87 form.value = JSON.parse(decodeURIComponent(option.form))
60 queryParams.value.rangeId = form.value.rangId || form.value.rangeId 88 queryParams.value.rangeId = form.value.rangId || form.value.rangeId
61 89 getList()
62 getList() 90 getAuditLogs()
63 getAuditLogs() 91 }
64 } 92
65 }) 93 console.log(form.value)
66 94 })
67 async function getList() { 95
68 try { 96 async function getList() {
69 const res = await api.listAPI(queryParams.value) 97 try {
70 list.value = res.rows || [] 98 const res = await api.listAPI(queryParams.value)
71 } catch (e) { 99 list.value = res.rows || []
72 list.value = [] 100 } catch (e) {
73 console.error('获取成员失败', e) 101 list.value = []
74 } 102 console.error('获取成员失败', e)
75 } 103 }
76 104 }
77 function getAuditLogs() { 105
78 if (form.value.auditLogs) { 106 function getAuditLogs() {
79 try { 107 if (form.value.auditLogs) {
80 feelList.value = JSON.parse(form.value.auditLogs) 108 try {
81 } catch (e) { 109 feelList.value = JSON.parse(form.value.auditLogs)
82 feelList.value = [] 110 } catch (e) {
83 } 111 feelList.value = []
84 } 112 }
85 } 113 }
114 }
86 </script> 115 </script>
87 116
88 <style scoped lang="scss">
89 .wBox {
90 width: 700rpx;
91 padding: 30rpx;
92 margin: 20rpx auto 0;
93 background: #FFFFFF;
94 box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1);
95 border-radius: 15rpx;
96
97 .tt {
98 color: #0A1629;
99 font-size: 30rpx;
100 }
101 }
102
103 .userlist {
104 .item {
105 border-bottom: 1px dashed #e5e5e5;
106 position: relative;
107 padding: 20rpx 0;
108
109 .date {
110 margin-top: 10rpx;
111 font-size: 24rpx;
112 color: #999;
113 }
114
115 .name {
116 font-size: 30rpx;
117 text {
118 margin-left: 1em;
119 color: #4C5359;
120 font-size: 26rpx;
121 }
122 }
123
124 .nian {
125 position: absolute;
126 right: 0;
127 top: 30rpx;
128 font-size: 30rpx;
129 color: #AD181F;
130 }
131 }
132 }
133
134 .info {
135 display: flex;
136 margin: 30rpx 0 20rpx;
137 font-size: 28rpx;
138
139 view {
140 color: #7D8592;
141 margin-right: 20rpx;
142 text {
143 color: #AD181F;
144 }
145 }
146 }
147
148 .h3-padding {
149 padding: 20rpx 30rpx 0;
150 font-size: 30rpx;
151 font-weight: 500;
152 }
153
154 .stepItem {
155 border-left: 2rpx solid #E60012;
156 padding-left: 20rpx;
157 position: relative;
158 margin-bottom: 30rpx;
159
160 &:before {
161 content: '';
162 width: 12rpx;
163 height: 12rpx;
164 background: #E60012;
165 border-radius: 50%;
166 position: absolute;
167 left: -7rpx;
168 top: 0;
169 }
170
171 .time {
172 font-size: 24rpx;
173 color: #999;
174 }
175
176 .content {
177 margin-top: 10rpx;
178 font-size: 28rpx;
179
180 .status {
181 margin-bottom: 8rpx;
182 }
183
184 .name {
185 font-weight: 500;
186 }
187
188 .deptName {
189 margin: 6rpx 0;
190 color: #666;
191 }
192 }
193 }
194 </style>
...\ No newline at end of file ...\ No newline at end of file
117 <style lang="scss" scoped>
118 .wBox {
119 width: 700rpx;
120 padding: 30rpx;
121 margin: 20rpx auto 0;
122 background: #FFFFFF;
123 box-shadow: 0rpx 12rpx 116rpx 0rpx rgba(196, 203, 214, 0.1);
124 border-radius: 15rpx;
125
126 .tt {
127 color: #0A1629;
128 font-size: 30rpx;
129 }
130 }
131
132 .userlist {
133 .item {
134 border-bottom: 1px dashed #e5e5e5;
135 position: relative;
136 padding: 20rpx 0;
137
138 .date {
139 margin-top: 10rpx;
140 font-size: 24rpx;
141 color: #999;
142 }
143
144 .name {
145 font-size: 30rpx;
146
147 text {
148 margin-left: 1em;
149 color: #4C5359;
150 font-size: 26rpx;
151 }
152 }
153
154 .nian {
155 position: absolute;
156 right: 0;
157 top: 30rpx;
158 font-size: 30rpx;
159 color: #AD181F;
160 }
161 }
162 }
163
164 .info {
165 display: flex;
166 margin: 30rpx 0 20rpx;
167 font-size: 28rpx;
168
169 view {
170 color: #7D8592;
171 margin-right: 20rpx;
172
173 text {
174 color: #AD181F;
175 }
176 }
177 }
178
179 .h3-padding {
180 padding: 20rpx 30rpx 0;
181 font-size: 30rpx;
182 font-weight: 500;
183 }
184
185 .stepItem {
186 border-left: 2rpx solid #E60012;
187 padding-left: 20rpx;
188 position: relative;
189 margin-bottom: 30rpx;
190
191 &:before {
192 content: '';
193 width: 12rpx;
194 height: 12rpx;
195 background: #E60012;
196 border-radius: 50%;
197 position: absolute;
198 left: -7rpx;
199 top: 0;
200 }
201
202 .time {
203 font-size: 24rpx;
204 color: #999;
205 }
206
207 .content {
208 margin-top: 10rpx;
209 font-size: 28rpx;
210
211 .status {
212 margin-bottom: 8rpx;
213 }
214
215 .name {
216 font-weight: 500;
217 }
218
219 .deptName {
220 margin: 6rpx 0;
221 color: #666;
222 }
223 }
224 }
225 </style>
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!