Browse Source

Merge branch 'dev-2.19.0' of http://101.36.160.140:21044/province-vue-qh/province-vue-all into dev

chenghanbin 4 months ago
parent
commit
b4ed9572ec

BIN
public/img/login/LOGO.png


BIN
public/img/login/left2.png


BIN
public/img/login_bg.png


+ 20 - 2
src/api/financialSupervision.info/financialSupervision.js

@@ -113,12 +113,30 @@ export default {
113
         return request(`priceApproval/getApprovalThreeRKMX/${orgId}`, {}, 'get')
113
         return request(`priceApproval/getApprovalThreeRKMX/${orgId}`, {}, 'get')
114
     },
114
     },
115
 
115
 
116
-
117
     // 添加财务监管-省级储备粮清算管理-轮换费用利息补贴清算表
116
     // 添加财务监管-省级储备粮清算管理-轮换费用利息补贴清算表
118
     fsrpcostinterestsettleAddd(data) {
117
     fsrpcostinterestsettleAddd(data) {
119
-        return request('/financialSupervision/fsrpcostinterestsettle/add', data, 'post')
118
+        return request('/fsrpcostinterestsettle/add', data, 'post')
119
+    },
120
+
121
+    // 获取销售收入上报分页  
122
+    fsSaleRevenuePage(data) {
123
+        return request('/fsSaleRevenue/page', data, 'get')
124
+    },
125
+
126
+    // 编辑销售收入上报 
127
+    fsSaleRevenueEdit(data) {
128
+        return request('/fsSaleRevenue/edit', data, 'post')
129
+    },
130
+
131
+    // 销售收入上报详情 
132
+    fsSaleRevenueDetail(data) {
133
+        return request('fsSaleRevenue/detail', data, 'get')
120
     },
134
     },
121
 
135
 
136
+    // 三账一致性-出库明细
137
+    getOutStorageDetailedBy(contractNumber) {
138
+        return request(`/fsSaleRevenue/getOutStorageDetailed/${contractNumber}`, {}, 'get')
139
+    },
122
 }
140
 }
123
 
141
 
124
 
142
 

+ 8 - 0
src/api/previewPlayback/index.js

@@ -5,3 +5,11 @@ const request = (url, ...arg) => baseRequest(`/previewPlayback` + url, ...arg)
5
 export const getPreview = (query) => {
5
 export const getPreview = (query) => {
6
 	return request('/getPreview', query, 'get')
6
 	return request('/getPreview', query, 'get')
7
 }
7
 }
8
+
9
+export const controlling = (data) => {
10
+	return request('/controlling', data, 'get')
11
+}
12
+
13
+export const getPlayback = (data) => {
14
+	return request('/getPlayback', data, 'get')
15
+}

+ 17 - 2
src/components/video/Live.vue

@@ -1,6 +1,6 @@
1
 <!-- 实时视频监控 -->
1
 <!-- 实时视频监控 -->
2
 <script setup>
2
 <script setup>
3
-	import { getPreview } from '@/api/previewPlayback'
3
+	import { getPreview, controlling } from '@/api/previewPlayback'
4
 	import { useRoute } from 'vue-router'
4
 	import { useRoute } from 'vue-router'
5
 	import commonSelect from '@/components/CommonSelector/index.vue'
5
 	import commonSelect from '@/components/CommonSelector/index.vue'
6
 	import api from '@/api/orgInfo/info'
6
 	import api from '@/api/orgInfo/info'
@@ -180,9 +180,25 @@
180
 		)
180
 		)
181
 	}
181
 	}
182
 
182
 
183
+	const findCameraByCameraId = (cameraId) => {
184
+		for (const root of cameraListData.value) {
185
+			const list = root.children || []
186
+			for (const d of list) {
187
+				if (d.cameraId == cameraId) {
188
+					return d
189
+				}
190
+			}
191
+		}
192
+		return undefined
193
+	}
194
+
183
 	const doControl = (command, action = 0, speed = 50, presetIndex = 10) => {
195
 	const doControl = (command, action = 0, speed = 50, presetIndex = 10) => {
184
 		if (videoMap[currentWindowIndex]) {
196
 		if (videoMap[currentWindowIndex]) {
185
 			const data = videoMap[currentWindowIndex]
197
 			const data = videoMap[currentWindowIndex]
198
+			const c = findCameraByCameraId(cameraId)
199
+			if (c.cameraType !== '1') {
200
+				return message.warning('该操作必须是球形摄像机')
201
+			}
186
 			const cmd = {
202
 			const cmd = {
187
 				action,
203
 				action,
188
 				command,
204
 				command,
@@ -282,7 +298,6 @@
282
 		getOrgData()
298
 		getOrgData()
283
 		init()
299
 		init()
284
 		createPlayer()
300
 		createPlayer()
285
-		getPreview({ cameraIndexCode: '0' })
286
 	})
301
 	})
287
 </script>
302
 </script>
288
 
303
 

+ 98 - 9
src/components/video/Replay.vue

@@ -1,5 +1,5 @@
1
 <script setup>
1
 <script setup>
2
-	import { getPreview } from '@/api/previewPlayback'
2
+	import { getPlayback, getPreview } from '@/api/previewPlayback'
3
 	import { useRoute } from 'vue-router'
3
 	import { useRoute } from 'vue-router'
4
 	import commonSelect from '@/components/CommonSelector/index.vue'
4
 	import commonSelect from '@/components/CommonSelector/index.vue'
5
 	import api from '@/api/orgInfo/info'
5
 	import api from '@/api/orgInfo/info'
@@ -20,6 +20,7 @@
20
 	let videoMap = {}
20
 	let videoMap = {}
21
 	let currentWindowIndex = 0
21
 	let currentWindowIndex = 0
22
 	const mode = 0 // 0 普通模式  1 高级模式
22
 	const mode = 0 // 0 普通模式  1 高级模式
23
+	const date = ref([])
23
 
24
 
24
 	const init = () => {
25
 	const init = () => {
25
 		window.addEventListener('resize', () => {
26
 		window.addEventListener('resize', () => {
@@ -171,11 +172,100 @@
171
 		})
172
 		})
172
 	}
173
 	}
173
 
174
 
175
+	const cameraSelect = (cameraId, event) => {
176
+		const camera = event.node
177
+		if (camera.root) return
178
+		console.log('选择摄像头', camera)
179
+		if (!date.value || date.value.length <= 0) {
180
+			return message.warning('请先选择日期')
181
+		}
182
+		const { cameraIndexCode } = camera
183
+		getPlaybackVideo({ cameraIndexCode }).then((resp) => {
184
+			const { url } = resp
185
+			if (url) {
186
+				const { startTime, endTime } = date.value
187
+				player.value.JS_Play(url, { playURL: url, mode }, 0, startTime, endTime).then(
188
+					() => {
189
+						console.log('playbackStart success')
190
+					},
191
+					(e) => {
192
+						console.error(e)
193
+					}
194
+				)
195
+			} else {
196
+				message.error('无法获取视频地址')
197
+			}
198
+		})
199
+	}
200
+
201
+	const getPlaybackVideo = ({ cameraIndexCode }) => {
202
+		const [beginTime, endTime] = date.value
203
+		return getPlayback({
204
+			beginTime,
205
+			endTime,
206
+			cameraIndexCode,
207
+			recordLocation: 1,
208
+			protocol: 'WSS'
209
+		})
210
+	}
211
+
212
+	const slow = () => {
213
+		player.value.JS_Slow().then(
214
+			(rate) => {
215
+				// this.playback.rate = rate
216
+			},
217
+			(e) => {
218
+				console.error(e)
219
+			}
220
+		)
221
+	}
222
+
223
+	const fast = () => {
224
+		player.value.JS_Fast().then(
225
+			(rate) => {
226
+				// this.playback.rate = rate
227
+			},
228
+			(e) => {
229
+				console.error(e)
230
+			}
231
+		)
232
+	}
233
+
234
+	const pause = () => {
235
+		player.value.JS_Pause().then(
236
+			() => {
237
+				console.log('playbackPause success')
238
+			},
239
+			(e) => {
240
+				console.error(e)
241
+			}
242
+		)
243
+	}
244
+
245
+	const resume = () => {
246
+		player.value.JS_Resume().then(
247
+			() => {
248
+				console.log('playbackResume success')
249
+			},
250
+			(e) => {
251
+				console.error(e)
252
+			}
253
+		)
254
+	}
255
+
256
+	const stop = () => {
257
+		player.value.JS_Stop().then(
258
+			() => {},
259
+			(e) => {
260
+				console.error(e)
261
+			}
262
+		)
263
+	}
264
+
174
 	onMounted(() => {
265
 	onMounted(() => {
175
 		getOrgData()
266
 		getOrgData()
176
 		init()
267
 		init()
177
 		createPlayer()
268
 		createPlayer()
178
-		getPreview({ cameraIndexCode: '0' })
179
 	})
269
 	})
180
 </script>
270
 </script>
181
 
271
 
@@ -196,7 +286,7 @@
196
 		<div class="control w-[20%] h-full">
286
 		<div class="control w-[20%] h-full">
197
 			<a-tabs v-model:activeKey="activeKey">
287
 			<a-tabs v-model:activeKey="activeKey">
198
 				<a-tab-pane key="1" tab="摄像头列表">
288
 				<a-tab-pane key="1" tab="摄像头列表">
199
-					回放日期 <a-range-picker value-format="YYYY-MM-DD HH:mm:ss" show-time />
289
+					回放日期 <a-range-picker v-model:value="date" value-format="YYYY-MM-DDTHH:mm:ssZ" show-time />
200
 					<div class="mt-5">
290
 					<div class="mt-5">
201
 						<a-tree :tree-data="cameraListData" @select="cameraSelect" class="w-full">
291
 						<a-tree :tree-data="cameraListData" @select="cameraSelect" class="w-full">
202
 							<template #title="{ title, key }">
292
 							<template #title="{ title, key }">
@@ -208,14 +298,13 @@
208
 				</a-tab-pane>
298
 				</a-tab-pane>
209
 				<a-tab-pane key="2" tab="操作" force-render>
299
 				<a-tab-pane key="2" tab="操作" force-render>
210
 					<div class="row">
300
 					<div class="row">
211
-						<a-button type="primary" class="mr-5 btn">&lt;&lt; 慢放</a-button>
212
-						<a-button type="primary" class="btn">快放 &gt;&gt;</a-button>
301
+						<a-button type="primary" class="mr-5 btn" @click="slow">&lt;&lt; 慢放</a-button>
302
+						<a-button type="primary" class="btn" @click="fast">快放 &gt;&gt;</a-button>
213
 					</div>
303
 					</div>
214
 					<div class="row">
304
 					<div class="row">
215
-						<a-button type="primary" class="mr-1 w-[60px]">暂停</a-button>
216
-						<a-button type="primary" class="mr-1 w-[60px]">恢复</a-button>
217
-						<a-button type="primary" class="mr-1 w-[60px]">停止</a-button>
218
-						<a-button type="primary" class="w-[120px]">全部停止</a-button>
305
+						<a-button type="primary" class="mr-1 w-[60px]" @click="pause">暂停</a-button>
306
+						<a-button type="primary" class="mr-1 w-[60px]" @click="resume">恢复</a-button>
307
+						<a-button type="primary" class="mr-1 w-[60px]" @click="stop">停止</a-button>
219
 					</div>
308
 					</div>
220
 				</a-tab-pane>
309
 				</a-tab-pane>
221
 			</a-tabs>
310
 			</a-tabs>

File diff suppressed because it is too large
+ 826 - 214
src/views/Arevenue/ARSales/ARSalesDel.vue


+ 66 - 79
src/views/Arevenue/ARSales/index.vue

@@ -1,4 +1,5 @@
1
 <template>
1
 <template>
2
+	<!-- 销售收入上报 -->
2
 	<div class="pricemoitorrecord">
3
 	<div class="pricemoitorrecord">
3
 		<a-card :bordered="false">
4
 		<a-card :bordered="false">
4
 			<a-space class="search">
5
 			<a-space class="search">
@@ -6,39 +7,25 @@
6
 					<span style="width: 70px; margin-right: 8px; text-align: right; display: block; line-height: 30px">
7
 					<span style="width: 70px; margin-right: 8px; text-align: right; display: block; line-height: 30px">
7
 						企业名称
8
 						企业名称
8
 					</span>
9
 					</span>
9
-					<a-input style="width: 220px" v-model:value="SearchFormDel.unitName" placeholder="请输入" />
10
+					<a-input style="width: 220px" v-model:value="SearchFormDel.dwmc" placeholder="请输入" />
10
 				</div>
11
 				</div>
11
 				<div class="silt-title">
12
 				<div class="silt-title">
12
 					<span style="width: 70px; margin-right: 8px; text-align: right; display: block; line-height: 30px">
13
 					<span style="width: 70px; margin-right: 8px; text-align: right; display: block; line-height: 30px">
13
 						库区名称
14
 						库区名称
14
 					</span>
15
 					</span>
15
-					<a-input style="width: 220px" v-model:value="SearchFormDel.unitName" placeholder="请输入" />
16
-					<!-- <a-select style="width: 220px" v-model:value="SearchFormDel.unitName">
17
-						<a-select-option :value="1">1</a-select-option>
18
-					</a-select> -->
16
+					<a-input style="width: 220px" v-model:value="SearchFormDel.orgName" placeholder="请输入" />
19
 				</div>
17
 				</div>
20
 				<div class="btnBox">
18
 				<div class="btnBox">
21
 					<a-button type="primary" class="primarySele" @click="Search"> 查询 </a-button>
19
 					<a-button type="primary" class="primarySele" @click="Search"> 查询 </a-button>
22
 					<a-button class="primarySele snowy-buttom-left" @click="onReset"> 重置 </a-button>
20
 					<a-button class="primarySele snowy-buttom-left" @click="onReset"> 重置 </a-button>
23
-					<a-button type="primary" class="primarySele" @click="onView('add', {})"> 新增 </a-button>
24
 				</div>
21
 				</div>
25
 			</a-space>
22
 			</a-space>
26
 		</a-card>
23
 		</a-card>
27
-
28
 		<div class="list" style="margin-top: 10px">
24
 		<div class="list" style="margin-top: 10px">
29
 			<a-table :dataSource="tableData" :pagination="pagination" :columns="tableColumns">
25
 			<a-table :dataSource="tableData" :pagination="pagination" :columns="tableColumns">
30
 				<template #bodyCell="{ column, record }">
26
 				<template #bodyCell="{ column, record }">
31
-					<template v-if="column.dataIndex === 'creditLevel'">
32
-						<div v-if="record.creditLevel == '1'">一级</div>
33
-						<div v-if="record.creditLevel == '2'">二级</div>
34
-						<div v-if="record.creditLevel == '3'">三级</div>
35
-					</template>
36
 					<template v-if="column.key === '操作'">
27
 					<template v-if="column.key === '操作'">
37
 						<a-button type="link" @click="onView('view', record)">查看</a-button>
28
 						<a-button type="link" @click="onView('view', record)">查看</a-button>
38
-						<a-button type="link" @click="onView('edit', record)">编辑</a-button>
39
-						<a-popconfirm title="确定要删除吗?" @confirm="onView('del', record)">
40
-							<a-button type="link">删除</a-button>
41
-						</a-popconfirm>
42
 					</template>
29
 					</template>
43
 				</template>
30
 				</template>
44
 			</a-table>
31
 			</a-table>
@@ -46,74 +33,74 @@
46
 	</div>
33
 	</div>
47
 </template>
34
 </template>
48
 <script setup name="sharing">
35
 <script setup name="sharing">
49
-	import { listPagination } from '@/hook/listlistPagination.js'
50
-	import { reactive, ref } from 'vue'
51
-	import business from '@/api/basic.info/verifyQuery.js'
52
-	import { useRouter } from 'vue-router'
53
-	import { defineComponent } from 'vue'
54
-	const formRef = ref(null)
55
-	const router = useRouter()
56
-	const tableColumns = [
57
-		{
58
-			title: '序号',
59
-			dataIndex: 'Index',
60
-			align: 'center',
61
-			customRender: ({ text, record, index }) => {
62
-				return `${index + 1}`
63
-			}
64
-		},
65
-		{ title: '企业名称', align: 'center', dataIndex: 'unitName' },
66
-		{ title: '库区名称', align: 'center', dataIndex: 'dwdm' },
67
-		{ title: '结算金额', align: 'center', dataIndex: 'fddbr' },
68
-		{ title: '结算时间', align: 'center', dataIndex: 'creditLevel' },
69
-		{ title: '合同编号', align: 'center', dataIndex: 'updateTime' },
70
-		{ title: '操作', align: 'center', key: '操作' }
71
-	]
36
+import { listPagination } from '@/hook/listlistPagination.js'
37
+import { useRouter } from 'vue-router'
38
+import financialSupervisionApi from '@/api/financialSupervision.info/financialSupervision.js'
72
 
39
 
73
-	const { DEl, change, tableData, onSearch, handlePageChange, pagination, Search, onReset, SearchFormDel } =
74
-		listPagination({ unitName: '', fddbr: '' }, business.XYDAlist, business.XYDAXdel, { sortOrder: 'ASCEND' })
75
-	setTimeout(() => {
76
-		tableData.value = [{ 1: 1 }]
77
-	}, 1000)
78
-	// 查看表单数据
79
-	const onView = (record, row) => {
80
-		switch (record) {
81
-			case 'add':
82
-				router.push('/Arevenue/ARSalesDel?add')
83
-				break
84
-			case 'del':
85
-				DEl(row)
86
-				break
87
-			case 'view':
88
-				router.push(`/Arevenue/ARSalesDel?codeLJH=${true}&id=${row.id}`)
89
-				break
90
-			case 'edit':
91
-				router.push(`/Arevenue/ARSalesDel?codeLJH=1&id=${row.id}`)
92
-				break
93
-			default:
94
-				// router.push('/business/personnelDel')
95
-				break
40
+const router = useRouter()
41
+const tableColumns = [
42
+	{
43
+		title: '序号',
44
+		dataIndex: 'Index',
45
+		align: 'center',
46
+		customRender: ({ text, record, index }) => {
47
+			return `${index + 1}`
96
 		}
48
 		}
49
+	},
50
+	{ title: '标题', align: 'center', dataIndex: 'unitName' },
51
+	{ title: '企业名称', align: 'center', dataIndex: 'dwmc' },
52
+	{ title: '库区名称', align: 'center', dataIndex: 'orgName' },
53
+	{ title: '上报时间', align: 'center', dataIndex: 'reportTime' },
54
+	{ title: '操作', align: 'center', key: '操作' }
55
+]
56
+
57
+const { DEl, change, tableData, onSearch, handlePageChange, pagination, Search, onReset, SearchFormDel } =
58
+	listPagination(
59
+		{ orgName: '', dwmc: '' },
60
+		financialSupervisionApi.fsSaleRevenuePage,
61
+		financialSupervisionApi.fsSaleRevenueDetail,
62
+		{
63
+			sortOrder: 'ASCEND'
64
+		}
65
+	)
66
+// 查看表单数据
67
+const onView = (record, row) => {
68
+	switch (record) {
69
+		case 'add':
70
+			router.push('/Arevenue/ARSalesDel?add')
71
+			break
72
+		case 'del':
73
+			DEl(row)
74
+			break
75
+		case 'view':
76
+			router.push(`/Arevenue/ARSalesDel?codeLJH=${true}&id=${row.id}`)
77
+			break
78
+		case 'edit':
79
+			router.push(`/Arevenue/ARSalesDel?codeLJH=1&id=${row.id}`)
80
+			break
81
+		default:
82
+			break
97
 	}
83
 	}
84
+}
98
 </script>
85
 </script>
99
 <style lang="less" scoped>
86
 <style lang="less" scoped>
100
-	.search {
101
-		padding-top: 20px;
102
-		// padding-left: 50px;
103
-		margin-bottom: 32px;
104
-		.btnBox {
105
-			width: 100%;
106
-			display: inline-block;
107
-			display: flex;
108
-			justify-content: space-around;
109
-			align-items: center;
110
-			.primarySele {
111
-				margin-left: 20px;
112
-				margin-right: 20px;
113
-			}
114
-		}
115
-	}
116
-	.silt-title {
87
+.search {
88
+	padding-top: 20px;
89
+	// padding-left: 50px;
90
+	margin-bottom: 32px;
91
+	.btnBox {
92
+		width: 100%;
93
+		display: inline-block;
117
 		display: flex;
94
 		display: flex;
95
+		justify-content: space-around;
96
+		align-items: center;
97
+		.primarySele {
98
+			margin-left: 20px;
99
+			margin-right: 20px;
100
+		}
118
 	}
101
 	}
102
+}
103
+.silt-title {
104
+	display: flex;
105
+}
119
 </style>
106
 </style>

File diff suppressed because it is too large
+ 799 - 420
src/views/Arevenue/Averification/AverificationDel.vue


+ 180 - 0
src/views/Arevenue/Averification/form.vue

@@ -0,0 +1,180 @@
1
+<template>
2
+	<div>
3
+		<a-modal
4
+			class="btn-box"
5
+			v-model:visible="visible"
6
+			width="80%"
7
+			:footer="null"
8
+			:maskClosable="false"
9
+			:title="titleText"
10
+			@ok="isClose"
11
+		>
12
+			<a-row>
13
+				<a-col :span="24">
14
+					<a-table
15
+						:dataSource="crkList"
16
+						:row-key="(record) => record.key"
17
+						:pagination="false"
18
+						@change="onChangePage"
19
+						bordered
20
+						:columns="columns"
21
+					>
22
+						<template #summary>
23
+							<a-table-summary-row>
24
+								<a-table-summary-cell class="tc">合计</a-table-summary-cell>
25
+								<a-table-summary-cell>
26
+									<a-typography-text class="tc"></a-typography-text>
27
+								</a-table-summary-cell>
28
+								<a-table-summary-cell> <a-typography-text class="tc"></a-typography-text> </a-table-summary-cell
29
+								><a-table-summary-cell>
30
+									<a-typography-text class="tc"></a-typography-text>
31
+								</a-table-summary-cell>
32
+								<a-table-summary-cell>
33
+									<a-typography-text class="tc">{{ summary.totalMz }}</a-typography-text>
34
+								</a-table-summary-cell>
35
+								<a-table-summary-cell>
36
+									<a-typography-text class="tc">{{ summary.totalPz }}</a-typography-text>
37
+								</a-table-summary-cell>
38
+								<a-table-summary-cell>
39
+									<a-typography-text class="tc">{{ summary.totalKl }}</a-typography-text>
40
+								</a-table-summary-cell>
41
+								<a-table-summary-cell>
42
+									<a-typography-text class="tc"></a-typography-text>
43
+								</a-table-summary-cell>
44
+							</a-table-summary-row>
45
+						</template>
46
+					</a-table>
47
+				</a-col>
48
+			</a-row>
49
+		</a-modal>
50
+	</div>
51
+</template>
52
+
53
+<script setup>
54
+import { message } from 'ant-design-vue'
55
+import financialSupervisionApi from '@/api/financialSupervision.info/financialSupervision.js'
56
+const columns = [
57
+	{
58
+		title: '合同编号',
59
+		dataIndex: 'htbh',
60
+		align: 'center',
61
+		key: 'htbh'
62
+	},
63
+	{
64
+		title: '仓房名称',
65
+		dataIndex: 'storehouseName',
66
+		align: 'center',
67
+		key: 'storehouseName'
68
+	},
69
+	{
70
+		title: '货位名称',
71
+		dataIndex: 'warehouseName',
72
+		align: 'center',
73
+		key: 'warehouseName'
74
+	},
75
+	{
76
+		title: '车牌号',
77
+		dataIndex: 'qcph',
78
+		align: 'center',
79
+		key: 'qcph'
80
+	},
81
+	{
82
+		title: '毛重',
83
+		dataIndex: 'mzzl',
84
+		align: 'center',
85
+		key: 'mzzl'
86
+	},
87
+	{
88
+		title: '皮重',
89
+		dataIndex: 'pz',
90
+		align: 'center',
91
+		key: 'pz'
92
+	},
93
+	{
94
+		title: '扣量',
95
+		dataIndex: 'bzwkl',
96
+		align: 'center',
97
+		key: 'bzwkl'
98
+	},
99
+	{
100
+		title: '出入库时间',
101
+		dataIndex: 'cpzsj',
102
+		align: 'center',
103
+		key: 'cpzsj'
104
+	}
105
+]
106
+const props = defineProps({
107
+	dataObj: {
108
+		type: Object,
109
+		default: () => {}
110
+	}
111
+})
112
+
113
+const visible = ref(false)
114
+const titleText = ref('')
115
+const formState = ref({})
116
+const emit = defineEmits(['isVisible'])
117
+const crkList = ref([])
118
+// 详情
119
+const detailData = (contractNumber) => {
120
+	financialSupervisionApi.getOutStorageDetailedBy(contractNumber).then((res) => {
121
+		crkList.value = res
122
+	})
123
+}
124
+
125
+const isClose = () => {
126
+	visible.value = false
127
+	emit('isVisible', false)
128
+	formState.value = {}
129
+}
130
+
131
+// 新增/查询/编辑控制器
132
+const flag = ref('')
133
+// 监听点击事件更新数据
134
+watch(
135
+	() => props.dataObj,
136
+	async (newValue, oldvalue) => {
137
+		formState.value = {}
138
+		await nextTick()
139
+		titleText.value = newValue.titleText
140
+		visible.value = newValue.visible
141
+		flag.value = newValue.flag
142
+		detailData(newValue.contractNumber)
143
+	},
144
+	{ deep: true }
145
+)
146
+
147
+const summary = computed(() => {
148
+	let totalMz = 0
149
+	let totalPz = 0
150
+	let totalKl = 0
151
+	crkList.value.forEach(({ mzzl, pz, bzwkl }) => {
152
+		totalMz += Number(mzzl)
153
+		totalPz += Number(pz)
154
+		totalKl += Number(bzwkl)
155
+	})
156
+	return { totalMz, totalPz, totalKl }
157
+})
158
+
159
+onMounted(() => {})
160
+</script>
161
+<style lang="less" scoped>
162
+.btn-box {
163
+	text-align: center;
164
+	width: 100%;
165
+	display: flex;
166
+	justify-content: center;
167
+	align-items: center;
168
+	button {
169
+		margin: 0 50px;
170
+		width: 100px;
171
+		border-radius: 5px;
172
+	}
173
+}
174
+
175
+.tc {
176
+	display: flex;
177
+	justify-content: center;
178
+	align-items: center;
179
+}
180
+</style>

+ 66 - 79
src/views/Arevenue/Averification/index.vue

@@ -1,4 +1,5 @@
1
 <template>
1
 <template>
2
+	<!-- 销售收入核定 -->
2
 	<div class="pricemoitorrecord">
3
 	<div class="pricemoitorrecord">
3
 		<a-card :bordered="false">
4
 		<a-card :bordered="false">
4
 			<a-space class="search">
5
 			<a-space class="search">
@@ -6,21 +7,17 @@
6
 					<span style="width: 70px; margin-right: 8px; text-align: right; display: block; line-height: 30px">
7
 					<span style="width: 70px; margin-right: 8px; text-align: right; display: block; line-height: 30px">
7
 						企业名称
8
 						企业名称
8
 					</span>
9
 					</span>
9
-					<a-input style="width: 220px" v-model:value="SearchFormDel.unitName" placeholder="请输入" />
10
+					<a-input style="width: 220px" v-model:value="SearchFormDel.dwmc" placeholder="请输入" />
10
 				</div>
11
 				</div>
11
 				<div class="silt-title">
12
 				<div class="silt-title">
12
 					<span style="width: 70px; margin-right: 8px; text-align: right; display: block; line-height: 30px">
13
 					<span style="width: 70px; margin-right: 8px; text-align: right; display: block; line-height: 30px">
13
 						库区名称
14
 						库区名称
14
 					</span>
15
 					</span>
15
-					<a-input style="width: 220px" v-model:value="SearchFormDel.unitName" placeholder="请输入" />
16
-					<!-- <a-select style="width: 220px" v-model:value="SearchFormDel.unitName">
17
-						<a-select-option :value="1">1</a-select-option>
18
-					</a-select> -->
16
+					<a-input style="width: 220px" v-model:value="SearchFormDel.orgName" placeholder="请输入" />
19
 				</div>
17
 				</div>
20
 				<div class="btnBox">
18
 				<div class="btnBox">
21
 					<a-button type="primary" class="primarySele" @click="Search"> 查询 </a-button>
19
 					<a-button type="primary" class="primarySele" @click="Search"> 查询 </a-button>
22
 					<a-button class="primarySele snowy-buttom-left" @click="onReset"> 重置 </a-button>
20
 					<a-button class="primarySele snowy-buttom-left" @click="onReset"> 重置 </a-button>
23
-					<a-button type="primary" class="primarySele" @click="onView('add', {})"> 新增 </a-button>
24
 				</div>
21
 				</div>
25
 			</a-space>
22
 			</a-space>
26
 		</a-card>
23
 		</a-card>
@@ -28,17 +25,9 @@
28
 		<div class="list" style="margin-top: 10px">
25
 		<div class="list" style="margin-top: 10px">
29
 			<a-table :dataSource="tableData" :pagination="pagination" :columns="tableColumns">
26
 			<a-table :dataSource="tableData" :pagination="pagination" :columns="tableColumns">
30
 				<template #bodyCell="{ column, record }">
27
 				<template #bodyCell="{ column, record }">
31
-					<template v-if="column.dataIndex === 'creditLevel'">
32
-						<div v-if="record.creditLevel == '1'">一级</div>
33
-						<div v-if="record.creditLevel == '2'">二级</div>
34
-						<div v-if="record.creditLevel == '3'">三级</div>
35
-					</template>
36
 					<template v-if="column.key === '操作'">
28
 					<template v-if="column.key === '操作'">
37
 						<a-button type="link" @click="onView('view', record)">查看</a-button>
29
 						<a-button type="link" @click="onView('view', record)">查看</a-button>
38
-						<a-button type="link" @click="onView('edit', record)">编辑</a-button>
39
-						<a-popconfirm title="确定要删除吗?" @confirm="onView('del', record)">
40
-							<a-button type="link">删除</a-button>
41
-						</a-popconfirm>
30
+						<a-button type="link" @click="onView('edit', record)">修改</a-button>
42
 					</template>
31
 					</template>
43
 				</template>
32
 				</template>
44
 			</a-table>
33
 			</a-table>
@@ -46,74 +35,72 @@
46
 	</div>
35
 	</div>
47
 </template>
36
 </template>
48
 <script setup name="sharing">
37
 <script setup name="sharing">
49
-	import { listPagination } from '@/hook/listlistPagination.js'
50
-	import { reactive, ref } from 'vue'
51
-	import business from '@/api/basic.info/verifyQuery.js'
52
-	import { useRouter } from 'vue-router'
53
-	import { defineComponent } from 'vue'
54
-	const formRef = ref(null)
55
-	const router = useRouter()
56
-	const tableColumns = [
57
-		{
58
-			title: '序号',
59
-			dataIndex: 'Index',
60
-			align: 'center',
61
-			customRender: ({ text, record, index }) => {
62
-				return `${index + 1}`
63
-			}
64
-		},
65
-		{ title: '企业名称', align: 'center', dataIndex: 'unitName' },
66
-		{ title: '库区名称', align: 'center', dataIndex: 'dwdm' },
67
-		{ title: '合同编号', align: 'center', dataIndex: 'updateTime' },
68
-		{ title: '结算金额', align: 'center', dataIndex: 'fddbr' },
69
-		{ title: '结算时间', align: 'center', dataIndex: 'creditLevel' },
70
-		{ title: '操作', align: 'center', key: '操作' }
71
-	]
72
-
73
-	const { DEl, change, tableData, onSearch, handlePageChange, pagination, Search, onReset, SearchFormDel } =
74
-		listPagination({ unitName: '', fddbr: '' }, business.XYDAlist, business.XYDAXdel, { sortOrder: 'ASCEND' })
75
-	setTimeout(() => {
76
-		tableData.value = [{ 1: 1 }]
77
-	}, 1000)
78
-	// 查看表单数据
79
-	const onView = (record, row) => {
80
-		switch (record) {
81
-			case 'add':
82
-				router.push('/Arevenue/AverificationDel?add')
83
-				break
84
-			case 'del':
85
-				DEl(row)
86
-				break
87
-			case 'view':
88
-				router.push(`/Arevenue/AverificationDel?codeLJH=${true}&id=${row.id}`)
89
-				break
90
-			case 'edit':
91
-				router.push(`/Arevenue/AverificationDel?codeLJH=1&id=${row.id}`)
92
-				break
93
-			default:
94
-				// router.push('/business/personnelDel')
95
-				break
38
+import { listPagination } from '@/hook/listlistPagination.js'
39
+import { useRouter } from 'vue-router'
40
+import financialSupervisionApi from '@/api/financialSupervision.info/financialSupervision.js'
41
+const router = useRouter()
42
+const tableColumns = [
43
+	{
44
+		title: '序号',
45
+		dataIndex: 'Index',
46
+		align: 'center',
47
+		customRender: ({ text, record, index }) => {
48
+			return `${index + 1}`
96
 		}
49
 		}
50
+	},
51
+	{ title: '企业名称', align: 'center', dataIndex: 'dwmc' },
52
+	{ title: '库区名称', align: 'center', dataIndex: 'orgName' },
53
+	{ title: '合同编号', align: 'center', dataIndex: 'contractNumber' },
54
+	{ title: '结算金额', align: 'center', dataIndex: 'moneyQuantity' },
55
+	{ title: '核定时间', align: 'center', dataIndex: 'updatedate' },
56
+	{ title: '操作', align: 'center', key: '操作' }
57
+]
58
+
59
+const { DEl, change, tableData, onSearch, handlePageChange, pagination, Search, onReset, SearchFormDel } =
60
+	listPagination({ orgName: '', dwmc: '' }, financialSupervisionApi.fsSaleRevenuePage, financialSupervisionApi.fsSaleRevenueDetail, {
61
+		sortOrder: 'ASCEND'
62
+	})
63
+// setTimeout(() => {
64
+// 	tableData.value = [{ 1: 1 }]
65
+// }, 1000)
66
+
67
+// 查看表单数据
68
+const onView = (record, row) => {
69
+	switch (record) {
70
+		case 'add':
71
+			router.push('/Arevenue/AverificationDel?add')
72
+			break
73
+		case 'del':
74
+			DEl(row)
75
+			break
76
+		case 'view':
77
+			router.push(`/Arevenue/AverificationDel?codeLJH=${true}&id=${row.id}`)
78
+			break
79
+		case 'edit':
80
+			router.push(`/Arevenue/AverificationDel?codeLJH=1&id=${row.id}`)
81
+			break
82
+		default:
83
+			break
97
 	}
84
 	}
85
+}
98
 </script>
86
 </script>
99
 <style lang="less" scoped>
87
 <style lang="less" scoped>
100
-	.search {
101
-		padding-top: 20px;
102
-		// padding-left: 50px;
103
-		margin-bottom: 32px;
104
-		.btnBox {
105
-			width: 100%;
106
-			display: inline-block;
107
-			display: flex;
108
-			justify-content: space-around;
109
-			align-items: center;
110
-			.primarySele {
111
-				margin-left: 20px;
112
-				margin-right: 20px;
113
-			}
114
-		}
115
-	}
116
-	.silt-title {
88
+.search {
89
+	padding-top: 20px;
90
+	margin-bottom: 32px;
91
+	.btnBox {
92
+		width: 100%;
93
+		display: inline-block;
117
 		display: flex;
94
 		display: flex;
95
+		justify-content: space-around;
96
+		align-items: center;
97
+		.primarySele {
98
+			margin-left: 20px;
99
+			margin-right: 20px;
100
+		}
118
 	}
101
 	}
102
+}
103
+.silt-title {
104
+	display: flex;
105
+}
119
 </style>
106
 </style>

+ 3 - 2
src/views/Grain/template/index.vue

@@ -16,7 +16,6 @@
16
 						<!-- 生效状态 0:未生效 1:生效 -->
16
 						<!-- 生效状态 0:未生效 1:生效 -->
17
 						<a-select-option :value="0">未生效</a-select-option>
17
 						<a-select-option :value="0">未生效</a-select-option>
18
 						<a-select-option :value="1">生效</a-select-option>
18
 						<a-select-option :value="1">生效</a-select-option>
19
-
20
 					</a-select>
19
 					</a-select>
21
 				</div>
20
 				</div>
22
 				<div class="btnBox">
21
 				<div class="btnBox">
@@ -80,7 +79,9 @@
80
 	]
79
 	]
81
 
80
 
82
 	const { DEl, change, tableData, onSearch, handlePageChange, pagination, Search, onReset, SearchFormDel } =
81
 	const { DEl, change, tableData, onSearch, handlePageChange, pagination, Search, onReset, SearchFormDel } =
83
-		listPagination({ inspectionName: '', effectiveStatus: '' }, Grain.LHJCLISTlist, Grain.LHJCLISTdel, { sortOrder: 'ASCEND' })
82
+		listPagination({ inspectionName: '', effectiveStatus: '' }, Grain.LHJCLISTlist, Grain.LHJCLISTdel, {
83
+			sortOrder: 'ASCEND'
84
+		})
84
 
85
 
85
 	// 查看表单数据
86
 	// 查看表单数据
86
 	const onView = (record, row) => {
87
 	const onView = (record, row) => {

+ 4 - 4
src/views/Grain/template/templateDel.vue

@@ -105,8 +105,8 @@
105
 		formState.value = res
105
 		formState.value = res
106
 		tableData.value = []
106
 		tableData.value = []
107
 		tableData.value = res.items
107
 		tableData.value = res.items
108
-		checked1.value = res.effectiveStatus == 0 ? true : false
109
-		checked2.value = res.effectiveStatus == 1 ? true : false
108
+		checked1.value = res.effectiveStatus == 1 ? true : false
109
+		checked2.value = res.effectiveStatus == 0 ? true : false
110
 	}
110
 	}
111
 	const optionsGender = ref([])
111
 	const optionsGender = ref([])
112
 	const getGender = async () => {
112
 	const getGender = async () => {
@@ -208,13 +208,13 @@
208
 
208
 
209
 	// 新增
209
 	// 新增
210
 	const pustFrom = async (value) => {
210
 	const pustFrom = async (value) => {
211
-		value.effectiveStatus = checked1.value == true ? 0 : checked2.value == true ? 1 : ''
211
+		value.effectiveStatus = checked1.value == true ? 1 : checked2.value == true ? 0 : ''
212
 		const delDate = { ...value, items: tableData.value }
212
 		const delDate = { ...value, items: tableData.value }
213
 		const res = await Grain.LHJCLISTadd(delDate)
213
 		const res = await Grain.LHJCLISTadd(delDate)
214
 	}
214
 	}
215
 	// 编辑
215
 	// 编辑
216
 	const pustEdit = async (value) => {
216
 	const pustEdit = async (value) => {
217
-		value.effectiveStatus = checked1.value == true ? 0 : checked2.value == true ? 1 : ''
217
+		value.effectiveStatus = checked1.value == true ? 1 : checked2.value == true ? 0 : ''
218
 		const delDate = { ...value, items: tableData.value }
218
 		const delDate = { ...value, items: tableData.value }
219
 		const res = await Grain.LHJCLISTedit(delDate)
219
 		const res = await Grain.LHJCLISTedit(delDate)
220
 	}
220
 	}

+ 233 - 222
src/views/auth/login/login.vue

@@ -1,6 +1,9 @@
1
 <template>
1
 <template>
2
 	<div class="login_background">
2
 	<div class="login_background">
3
 		<div class="login_background_front"></div>
3
 		<div class="login_background_front"></div>
4
+		<div class="login_left">
5
+			<img src="/img/login/left2.png" alt="" />
6
+		</div>
4
 		<div class="login_main">
7
 		<div class="login_main">
5
 			<div class="login_head">
8
 			<div class="login_head">
6
 				<span class="text">欢迎登录系统</span>
9
 				<span class="text">欢迎登录系统</span>
@@ -41,255 +44,263 @@
41
 	</div>
44
 	</div>
42
 </template>
45
 </template>
43
 <script setup>
46
 <script setup>
44
-	import LoginInput from './LoginInput.vue'
47
+import LoginInput from './LoginInput.vue'
45
 
48
 
46
-	const showPWD = ref(false)
47
-	import loginApi from '@/api/auth/loginApi'
48
-	import PhoneLoginForm from './phoneLoginForm.vue'
49
-	import ThreeLogin from './threeLogin.vue'
50
-	import smCrypto from '@/utils/smCrypto'
51
-	import { required } from '@/utils/formRules'
52
-	import { afterLogin } from './util'
53
-	import configData from '@/config'
54
-	import configApi from '@/api/dev/configApi'
55
-	import tool from '@/utils/tool'
56
-	import { message } from 'ant-design-vue'
49
+const showPWD = ref(false)
50
+import loginApi from '@/api/auth/loginApi'
51
+import PhoneLoginForm from './phoneLoginForm.vue'
52
+import ThreeLogin from './threeLogin.vue'
53
+import smCrypto from '@/utils/smCrypto'
54
+import { required } from '@/utils/formRules'
55
+import { afterLogin } from './util'
56
+import configData from '@/config'
57
+import configApi from '@/api/dev/configApi'
58
+import tool from '@/utils/tool'
59
+import { message } from 'ant-design-vue'
57
 
60
 
58
-	import { globalStore, iframeStore, keepAliveStore, viewTagsStore, enumMaplistStore } from '@/store'
59
-	const { proxy } = getCurrentInstance()
61
+import { globalStore, iframeStore, keepAliveStore, viewTagsStore, enumMaplistStore } from '@/store'
62
+const { proxy } = getCurrentInstance()
60
 
63
 
61
-	const activeKey = ref('userAccount')
62
-	const captchaOpen = ref(configData.SYS_BASE_CONFIG.SNOWY_SYS_DEFAULT_CAPTCHA_OPEN)
63
-	const validCodeBase64 = ref('')
64
-	const loading = ref(false)
64
+const activeKey = ref('userAccount')
65
+const captchaOpen = ref(configData.SYS_BASE_CONFIG.SNOWY_SYS_DEFAULT_CAPTCHA_OPEN)
66
+const validCodeBase64 = ref('')
67
+const loading = ref(false)
65
 
68
 
66
-	const ruleForm = reactive({
67
-		// account: 'superAdmin',
68
-		// password: '123456',
69
-		account: '',
70
-		password: '',
71
-		validCode: '',
72
-		validCodeReqNo: '',
73
-		autologin: false
74
-	})
69
+const ruleForm = reactive({
70
+	// account: 'superAdmin',
71
+	// password: '123456',
72
+	account: '',
73
+	password: '',
74
+	validCode: '',
75
+	validCodeReqNo: '',
76
+	autologin: false
77
+})
75
 
78
 
76
-	const rules = reactive({
77
-		account: [required(proxy.$t('login.accountError'), 'blur')],
78
-		password: [required(proxy.$t('login.PWError'), 'blur')]
79
-	})
80
-	const lang = ref([
81
-		{
82
-			name: '简体中文',
83
-			value: 'zh-cn'
84
-		},
85
-		{
86
-			name: 'English',
87
-			value: 'en'
88
-		}
89
-	])
90
-	const config = ref({
91
-		lang: tool.data.get('APP_LANG') || proxy.$CONFIG.LANG,
92
-		theme: tool.data.get('APP_THEME') || 'default'
93
-	})
79
+const rules = reactive({
80
+	account: [required(proxy.$t('login.accountError'), 'blur')],
81
+	password: [required(proxy.$t('login.PWError'), 'blur')]
82
+})
83
+const lang = ref([
84
+	{
85
+		name: '简体中文',
86
+		value: 'zh-cn'
87
+	},
88
+	{
89
+		name: 'English',
90
+		value: 'en'
91
+	}
92
+])
93
+const config = ref({
94
+	lang: tool.data.get('APP_LANG') || proxy.$CONFIG.LANG,
95
+	theme: tool.data.get('APP_THEME') || 'default'
96
+})
94
 
97
 
95
-	const store = globalStore()
96
-	const kStore = keepAliveStore()
97
-	const iStore = iframeStore()
98
-	const vStore = viewTagsStore()
99
-	// const StoreDEl = enumMaplistStore()
98
+const store = globalStore()
99
+const kStore = keepAliveStore()
100
+const iStore = iframeStore()
101
+const vStore = viewTagsStore()
102
+// const StoreDEl = enumMaplistStore()
100
 
103
 
101
-	const setSysBaseConfig = store.setSysBaseConfig
102
-	const clearKeepLive = kStore.clearKeepLive
103
-	const clearIframeList = iStore.clearIframeList
104
-	const clearViewTags = vStore.clearViewTags
105
-	// const businessDElasync = StoreDEl.businessDElasync
104
+const setSysBaseConfig = store.setSysBaseConfig
105
+const clearKeepLive = kStore.clearKeepLive
106
+const clearIframeList = iStore.clearIframeList
107
+const clearViewTags = vStore.clearViewTags
108
+// const businessDElasync = StoreDEl.businessDElasync
106
 
109
 
107
-	const sysBaseConfig = computed(() => {
108
-		return store.sysBaseConfig
109
-	})
110
+const sysBaseConfig = computed(() => {
111
+	return store.sysBaseConfig
112
+})
110
 
113
 
111
-	onMounted(() => {
112
-		let formData = ref(configData.SYS_BASE_CONFIG)
113
-		configApi.configSysBaseList().then((data) => {
114
-			if (data) {
115
-				data.forEach((item) => {
116
-					formData.value[item.configKey] = item.configValue
117
-				})
118
-				captchaOpen.value = formData.value.SNOWY_SYS_DEFAULT_CAPTCHA_OPEN
119
-				tool.data.set('SNOWY_SYS_BASE_CONFIG', formData.value)
120
-				setSysBaseConfig(formData.value)
121
-				refreshSwitch()
122
-			}
123
-		})
114
+onMounted(() => {
115
+	let formData = ref(configData.SYS_BASE_CONFIG)
116
+	configApi.configSysBaseList().then((data) => {
117
+		if (data) {
118
+			data.forEach((item) => {
119
+				formData.value[item.configKey] = item.configValue
120
+			})
121
+			captchaOpen.value = formData.value.SNOWY_SYS_DEFAULT_CAPTCHA_OPEN
122
+			tool.data.set('SNOWY_SYS_BASE_CONFIG', formData.value)
123
+			setSysBaseConfig(formData.value)
124
+			refreshSwitch()
125
+		}
124
 	})
126
 	})
127
+})
125
 
128
 
126
-	onBeforeMount(() => {
127
-		clearViewTags()
128
-		clearKeepLive()
129
-		clearIframeList()
130
-	})
129
+onBeforeMount(() => {
130
+	clearViewTags()
131
+	clearKeepLive()
132
+	clearIframeList()
133
+})
131
 
134
 
132
-	// 监听语言
133
-	watch(
134
-		() => config.value.lang,
135
-		(newValue) => {
136
-			proxy.$i18n.locale = newValue
137
-			tool.data.set('APP_LANG', newValue)
138
-		}
139
-	)
140
-	// 主题
141
-	watch(
142
-		() => config.value.theme,
143
-		(newValue) => {
144
-			document.body.setAttribute('data-theme', newValue)
145
-		}
146
-	)
147
-	// 通过开关加载内容
148
-	const refreshSwitch = () => {
149
-		// 判断是否开启验证码
150
-		if (captchaOpen.value === 'true') {
151
-			// 加载验证码
152
-			loginCaptcha()
153
-			// 加入校验
154
-			rules.validCode = [required(proxy.$t('login.validError'), 'blur')]
155
-		}
135
+// 监听语言
136
+watch(
137
+	() => config.value.lang,
138
+	(newValue) => {
139
+		proxy.$i18n.locale = newValue
140
+		tool.data.set('APP_LANG', newValue)
141
+	}
142
+)
143
+// 主题
144
+watch(
145
+	() => config.value.theme,
146
+	(newValue) => {
147
+		document.body.setAttribute('data-theme', newValue)
156
 	}
148
 	}
149
+)
150
+// 通过开关加载内容
151
+const refreshSwitch = () => {
152
+	// 判断是否开启验证码
153
+	if (captchaOpen.value === 'true') {
154
+		// 加载验证码
155
+		loginCaptcha()
156
+		// 加入校验
157
+		rules.validCode = [required(proxy.$t('login.validError'), 'blur')]
158
+	}
159
+}
157
 
160
 
158
-	// 获取验证码
159
-	const loginCaptcha = () => {
160
-		loginApi.getPicCaptcha().then((data) => {
161
-			validCodeBase64.value = data.validCodeBase64
162
-			ruleForm.validCodeReqNo = data.validCodeReqNo
163
-		})
161
+// 获取验证码
162
+const loginCaptcha = () => {
163
+	loginApi.getPicCaptcha().then((data) => {
164
+		validCodeBase64.value = data.validCodeBase64
165
+		ruleForm.validCodeReqNo = data.validCodeReqNo
166
+	})
167
+}
168
+//登陆
169
+const loginForm = ref()
170
+const login = async () => {
171
+	if (!ruleForm.account) {
172
+		message.error('请输入账号')
173
+		return
164
 	}
174
 	}
165
-	//登陆
166
-	const loginForm = ref()
167
-	const login = async () => {
168
-		if (!ruleForm.account) {
169
-			message.error('请输入账号')
170
-			return
171
-		}
172
-		if (!ruleForm.password) {
173
-			message.error('请输入密码')
174
-			return
175
-		}
176
-		loading.value = true
177
-		const loginData = {
178
-			account: ruleForm.account,
179
-			// 密码进行SM2加密,传输过程中看到的只有密文,后端存储使用hash
180
-			password: smCrypto.doSm2Encrypt(ruleForm.password),
181
-			validCode: ruleForm.validCode,
182
-			validCodeReqNo: ruleForm.validCodeReqNo
183
-		}
184
-		// 获取token
185
-		try {
186
-			const loginToken = await loginApi.login(loginData)
187
-			afterLogin(loginToken)
188
-		} catch (err) {
189
-			loading.value = false
190
-			loginCaptcha()
191
-		}
192
-		// businessDElasync()
175
+	if (!ruleForm.password) {
176
+		message.error('请输入密码')
177
+		return
193
 	}
178
 	}
194
-	const configLang = (key) => {
195
-		config.value.lang = key
179
+	loading.value = true
180
+	const loginData = {
181
+		account: ruleForm.account,
182
+		// 密码进行SM2加密,传输过程中看到的只有密文,后端存储使用hash
183
+		password: smCrypto.doSm2Encrypt(ruleForm.password),
184
+		validCode: ruleForm.validCode,
185
+		validCodeReqNo: ruleForm.validCodeReqNo
196
 	}
186
 	}
187
+	// 获取token
188
+	try {
189
+		const loginToken = await loginApi.login(loginData)
190
+		afterLogin(loginToken)
191
+	} catch (err) {
192
+		loading.value = false
193
+		loginCaptcha()
194
+	}
195
+	// businessDElasync()
196
+}
197
+const configLang = (key) => {
198
+	config.value.lang = key
199
+}
197
 </script>
200
 </script>
198
 <style lang="less">
201
 <style lang="less">
199
-	.login_background {
200
-		background: url('/img/login_bg.jpg') no-repeat center;
201
-		position: relative;
202
+.login_background {
203
+	background: url('/img/login_bg.png') no-repeat center;
204
+	position: relative;
205
+	width: 100%;
206
+	height: 100%;
207
+	.login_left {
208
+		position: absolute;
209
+		top: 204px;
210
+		left: 190px;
211
+		img {
212
+			width: 700px;
213
+		}
214
+	}
215
+	.login_background_front {
216
+		background: url('/img/login/LOGO.png') no-repeat center;
217
+		width: 800px;
218
+		height: 92px;
219
+		position: absolute;
220
+		left: 10%;
221
+		top: 10%;
222
+	}
223
+	.login_main {
224
+		width: 570px;
225
+		height: 500px;
226
+		position: absolute;
227
+		right: 80px;
228
+		top: 200px;
229
+		background: rgba(255, 255, 255, 0.75);
230
+		border-radius: 8px;
231
+	}
232
+	.login_head {
202
 		width: 100%;
233
 		width: 100%;
203
-		height: 100%;
204
-		.login_background_front {
205
-			background: url('/img/LOGO2.png') no-repeat center;
206
-			width: 800px;
207
-			height: 92px;
208
-			position: absolute;
209
-			left: 10%;
210
-			top: 10%;
234
+		display: flex;
235
+		justify-content: space-between;
236
+		align-items: center;
237
+		overflow: hidden;
238
+		white-space: nowrap;
239
+		padding: 50px 0 40px;
240
+		user-select: none;
241
+		.text {
242
+			padding: 0 30px;
243
+			font-size: 25px;
211
 		}
244
 		}
212
-		.login_main {
213
-			width: 570px;
214
-			height: 640px;
215
-			position: absolute;
216
-			right: 290px;
217
-			top: 200px;
218
-			background: rgba(255, 255, 255, 0.75);
219
-			border-radius: 8px;
245
+		&:before,
246
+		&:after {
247
+			width: 50%;
248
+			height: 1px;
249
+			content: '';
250
+			background: rgba(0, 0, 0, 0.3);
220
 		}
251
 		}
221
-		.login_head {
252
+	}
253
+	.login_form {
254
+		margin: 0 50px;
255
+		.icon {
256
+			font-size: 16px;
257
+			padding: 0 6px;
258
+			color: #666;
259
+		}
260
+		.LoginInput {
261
+			font-size: 15px;
262
+			box-shadow: 0 0 3px rgba(0, 0, 0, 0.06);
263
+			margin-top: 30px;
264
+		}
265
+		.login_auto {
266
+			margin-top: 20px;
267
+			.auto_text {
268
+				color: #444;
269
+			}
270
+		}
271
+		.login_btn {
272
+			cursor: pointer;
222
 			width: 100%;
273
 			width: 100%;
274
+			border: none;
275
+			background: url('/img/login_btn.png') no-repeat center;
276
+			height: 74px;
277
+			line-height: 50px;
278
+			color: #fff;
279
+			font-size: 18px;
280
+			font-weight: bold;
281
+			letter-spacing: 10px;
282
+			margin-top: 50px;
223
 			display: flex;
283
 			display: flex;
224
-			justify-content: space-between;
225
-			align-items: center;
226
-			overflow: hidden;
227
-			white-space: nowrap;
228
-			padding: 50px 0 40px;
229
-			user-select: none;
230
-			.text {
231
-				padding: 0 30px;
232
-				font-size: 25px;
233
-			}
234
-			&:before,
235
-			&:after {
236
-				width: 50%;
237
-				height: 1px;
238
-				content: '';
239
-				background: rgba(0, 0, 0, 0.3);
240
-			}
284
+			justify-content: center;
285
+			align-items: flex-start;
241
 		}
286
 		}
242
-		.login_form {
243
-			margin: 0 50px;
244
-			.icon {
245
-				font-size: 16px;
246
-				padding: 0 6px;
247
-				color: #666;
248
-			}
249
-			.LoginInput {
250
-				font-size: 15px;
251
-				box-shadow: 0 0 3px rgba(0, 0, 0, 0.06);
252
-				margin-top: 30px;
253
-			}
254
-			.login_auto {
255
-				margin-top: 20px;
256
-				.auto_text {
257
-					color: #444;
258
-				}
259
-			}
260
-			.login_btn {
261
-				cursor: pointer;
262
-				width: 100%;
263
-				border: none;
264
-				background: url('/img/login_btn.png') no-repeat center;
265
-				height: 74px;
266
-				line-height: 50px;
267
-				color: #fff;
268
-				font-size: 18px;
269
-				font-weight: bold;
270
-				letter-spacing: 10px;
271
-				margin-top: 50px;
272
-				display: flex;
273
-				justify-content: center;
274
-				align-items: flex-start;
275
-			}
276
-			.login_forgetbox {
277
-				margin-top: 20px;
278
-				text-align: right;
279
-				.login_forget {
280
-					color: #444;
281
-				}
287
+		.login_forgetbox {
288
+			margin-top: 20px;
289
+			text-align: right;
290
+			.login_forget {
291
+				color: #444;
282
 			}
292
 			}
283
 		}
293
 		}
284
-		@media (max-width: 1000px) {
285
-			.login_background_front {
286
-				left: 50%;
287
-				margin-left: -400px;
288
-			}
289
-			.login_main {
290
-				left: calc(50% - 285px);
291
-				top: 24%;
292
-			}
294
+	}
295
+	@media (max-width: 1000px) {
296
+		.login_background_front {
297
+			left: 50%;
298
+			margin-left: -400px;
299
+		}
300
+		.login_main {
301
+			left: calc(50% - 285px);
302
+			top: 24%;
293
 		}
303
 		}
294
 	}
304
 	}
305
+}
295
 </style>
306
 </style>

+ 2 - 2
src/views/emergencySupport/moduleView/yjccqyAdd.vue

@@ -413,7 +413,8 @@
413
 		getCityDicList()
413
 		getCityDicList()
414
 		// 查看详情
414
 		// 查看详情
415
 		if (props.modalData.type == 'look' || props.modalData.type == 'edit') {
415
 		if (props.modalData.type == 'look' || props.modalData.type == 'edit') {
416
-			pageTitle.value = '查看应急配送企业详情'
416
+			let str = props.modalData.type == 'look' ? '查看' : '修改'
417
+			pageTitle.value = str + '应急仓储企业详情'
417
 			api.getDetails({ id: props.modalData.id }).then((res) => {
418
 			api.getDetails({ id: props.modalData.id }).then((res) => {
418
 				formData.value = res
419
 				formData.value = res
419
 				formData.value.emergencyLevel = []
420
 				formData.value.emergencyLevel = []
@@ -474,7 +475,6 @@
474
 			}
475
 			}
475
 		})
476
 		})
476
 		dictList.sjjyProvince.map((item) => {
477
 		dictList.sjjyProvince.map((item) => {
477
-			console.log(item.id, formData.value.actualAddressProvince)
478
 			if (item.id == formData.value.actualAddressProvince) {
478
 			if (item.id == formData.value.actualAddressProvince) {
479
 				if (item.dictLabel == '北京市' || item.dictLabel == '上海市' || item.dictLabel == '重庆市') {
479
 				if (item.dictLabel == '北京市' || item.dictLabel == '上海市' || item.dictLabel == '重庆市') {
480
 					dictList.sjjyCity.push(item)
480
 					dictList.sjjyCity.push(item)

+ 4 - 89
src/views/provincialMedia/live.vue

@@ -1,94 +1,9 @@
1
-<script setup>
2
-	import control from '@/components/player/control1.vue'
3
-	import api from '@/api/orgInfo/info'
4
-	import cameraApi from '@/api/camera/index'
5
-	const orgTreeData = ref([])
6
-
7
-	const getOrgData = () => {
8
-		orgTreeData.value = []
9
-		api.getAllList({}).then((resp) => {
10
-			const list = resp || []
11
-
12
-			// list[0].parentId = 12
13
-
14
-			const temp = {}
15
-			const leaf = []
16
-			list.forEach((d) => {
17
-				d.children = []
18
-				d.title = d.orgName
19
-				d.key = d.orgId
20
-				temp[d.orgId] = d
21
-			})
22
-			list.forEach((d) => {
23
-				const pid = d.parentId
24
-				if (temp[pid]) {
25
-					temp[pid].children.push(d)
26
-					leaf.push(d.orgId)
27
-				}
28
-			})
29
-			orgTreeData.value = list.filter((d) => !leaf.includes(d.orgId))
30
-			// console.log('ttttt', list, orgTreeData.value)
31
-		})
32
-	}
33
-	const orgSelect = (n, e) => {
34
-		cameraApi.getNVRVideo({ orgId: n[0] }).then((resp) => {
35
-			console.log('nnnnn', resp)
36
-		})
37
-	}
38
-	onMounted(() => {
39
-		getOrgData()
40
-	})
1
+<script setup name="provincialMediaLive">
2
+	import Live from '@/components/video/Live.vue'
41
 </script>
3
 </script>
42
 
4
 
43
 <template>
5
 <template>
44
-	<div class="live-main">
45
-		<div class="left">
46
-			<a-tree :tree-data="orgTreeData" @select="orgSelect">
47
-				<template #title="{ title, key }">
48
-					<span v-if="key === '0-0-1-0'" style="color: #1890ff">{{ title }}</span>
49
-					<template v-else>{{ title }}</template>
50
-				</template>
51
-			</a-tree>
52
-		</div>
53
-		<div class="middle">
54
-			<div class="player">No Signal</div>
55
-		</div>
56
-		<div class="right">
57
-			<control />
58
-		</div>
59
-	</div>
6
+	<live />
60
 </template>
7
 </template>
61
 
8
 
62
-<style scoped lang="less">
63
-	.live-main {
64
-		display: flex;
65
-		height: 100%;
66
-		margin-top: 10px;
67
-		.left {
68
-			min-width: 20%;
69
-			height: 100%;
70
-			margin-top: 10px;
71
-		}
72
-		.middle {
73
-			min-width: 50%;
74
-			height: 100%;
75
-			display: flex;
76
-			justify-content: center;
77
-			align-items: flex-start;
78
-			.player {
79
-				width: 90%;
80
-				min-height: 600px;
81
-				background-color: black;
82
-				display: flex;
83
-				justify-content: center;
84
-				align-items: center;
85
-				color: white;
86
-				font-size: 10em;
87
-			}
88
-		}
89
-		.right {
90
-			min-width: 30%;
91
-			height: 100%;
92
-		}
93
-	}
94
-</style>
9
+<style scoped lang="less"></style>

+ 3 - 89
src/views/provincialMedia/record.vue

@@ -1,94 +1,8 @@
1
 <script setup>
1
 <script setup>
2
-	import control from '@/components/player/control3.vue'
3
-	import api from '@/api/orgInfo/info'
4
-	import cameraApi from '@/api/camera/index'
5
-	const orgTreeData = ref([])
6
-
7
-	const getOrgData = () => {
8
-		orgTreeData.value = []
9
-		api.getAllList({}).then((resp) => {
10
-			const list = resp || []
11
-
12
-			// list[0].parentId = 12
13
-
14
-			const temp = {}
15
-			const leaf = []
16
-			list.forEach((d) => {
17
-				d.children = []
18
-				d.title = d.orgName
19
-				d.key = d.orgId
20
-				temp[d.orgId] = d
21
-			})
22
-			list.forEach((d) => {
23
-				const pid = d.parentId
24
-				if (temp[pid]) {
25
-					temp[pid].children.push(d)
26
-					leaf.push(d.orgId)
27
-				}
28
-			})
29
-			orgTreeData.value = list.filter((d) => !leaf.includes(d.orgId))
30
-			// console.log('ttttt', list, orgTreeData.value)
31
-		})
32
-	}
33
-	const orgSelect = (n, e) => {
34
-		cameraApi.getNVRVideo({ orgId: n[0] }).then((resp) => {
35
-			console.log('nnnnn', resp)
36
-		})
37
-	}
38
-	onMounted(() => {
39
-		getOrgData()
40
-	})
2
+	import Replay from '@/components/video/Replay.vue'
41
 </script>
3
 </script>
42
-
43
 <template>
4
 <template>
44
-	<div class="live-main">
45
-		<div class="left">
46
-			<a-tree :tree-data="orgTreeData">
47
-				<template #title="{ title, key }">
48
-					<span v-if="key === '0-0-1-0'" style="color: #1890ff">{{ title }}</span>
49
-					<template v-else>{{ title }}</template>
50
-				</template>
51
-			</a-tree>
52
-		</div>
53
-		<div class="middle">
54
-			<div class="player">No Signal</div>
55
-		</div>
56
-		<div class="right">
57
-			<control />
58
-		</div>
59
-	</div>
5
+	<replay />
60
 </template>
6
 </template>
61
 
7
 
62
-<style scoped lang="less">
63
-	.live-main {
64
-		display: flex;
65
-		height: 100%;
66
-		margin-top: 10px;
67
-		.left {
68
-			min-width: 20%;
69
-			height: 100%;
70
-			margin-top: 10px;
71
-		}
72
-		.middle {
73
-			min-width: 60%;
74
-			height: 100%;
75
-			display: flex;
76
-			justify-content: center;
77
-			align-items: flex-start;
78
-			.player {
79
-				width: 90%;
80
-				min-height: 600px;
81
-				background-color: black;
82
-				display: flex;
83
-				justify-content: center;
84
-				align-items: center;
85
-				color: white;
86
-				font-size: 10em;
87
-			}
88
-		}
89
-		.right {
90
-			min-width: 20%;
91
-			height: 100%;
92
-		}
93
-	}
94
-</style>
8
+<style scoped lang="less"></style>