From fb67153f3df0c25863f388b199c5706f4ba801ea Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: 星期一, 13 三月 2023 16:27:51 +0800
Subject: [PATCH] 作业申请新增设备

---
 src/views/specialWorkSystem/workTicket/zysq/components/broken.vue |   16 +++
 src/views/specialWorkSystem/workTicket/zysq/components/height.vue |   32 +++++++
 src/views/specialWorkSystem/workTicket/zysq/components/plate.vue  |   18 ++++
 src/views/specialWorkSystem/workTicket/zysq/components/space.vue  |   16 +++
 src/views/specialWorkSystem/workTicket/zysq/components/hoist.vue  |   18 ++++
 src/views/specialWorkSystem/workTicket/zysq/components/power.vue  |   16 +++
 src/api/specialWorkSystem/workApply/index.ts                      |   10 ++
 src/views/specialWorkSystem/workTicket/zysq/components/ground.vue |   16 +++
 src/views/specialWorkSystem/workTicket/zysq/index.vue             |   34 ++++++--
 src/views/specialWorkSystem/workTicket/zysq/components/fire.vue   |   18 ++++
 10 files changed, 176 insertions(+), 18 deletions(-)

diff --git a/src/api/specialWorkSystem/workApply/index.ts b/src/api/specialWorkSystem/workApply/index.ts
index 6258f0e..8afaf8f 100644
--- a/src/api/specialWorkSystem/workApply/index.ts
+++ b/src/api/specialWorkSystem/workApply/index.ts
@@ -20,7 +20,7 @@
             });
         },
 
-        // 分页获取申请列表
+        // 获取所有用户
         getAllUsers: () => {
             return request({
                 url: import.meta.env.VITE_API_URL + `/account/list`,
@@ -28,6 +28,14 @@
             });
         },
 
+        // 获取所有设备
+        getAllDevices: () => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/sysAdmin/camera/find/byAll`,
+                method: 'get'
+            });
+        },
+
         // 导出打印接口
         postPrinting: (data: object) => {
             return request({
diff --git a/src/views/specialWorkSystem/workTicket/zysq/components/broken.vue b/src/views/specialWorkSystem/workTicket/zysq/components/broken.vue
index da141bb..c6ad8bf 100644
--- a/src/views/specialWorkSystem/workTicket/zysq/components/broken.vue
+++ b/src/views/specialWorkSystem/workTicket/zysq/components/broken.vue
@@ -61,6 +61,18 @@
 						/>
 					</el-form-item>
 				</el-col>
+        <el-col :span="12">
+          <el-form-item label="关联设备" prop="cameraIds">
+            <el-select v-model="form.cameraIds" multiple>
+              <el-option
+                  v-for="item in deviceList"
+                  :key="item.id"
+                  :label="item.name"
+                  :value="item.id"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
 			</el-row>
 				<el-divider border-style="dashed"/>
 			<el-row>
@@ -169,7 +181,7 @@
 		components: {
       materialDialog: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/zysq/components/materialDialog.vue')),
     },
-		props:['workerList','departList'],
+		props:['workerList','departList','deviceList'],
 		setup(props: any, context: any) {
 			const userInfo = useUserInfo()
 			const { userInfos } = storeToRefs(userInfo);
@@ -181,6 +193,7 @@
 					workContent: '',
 					workLocation: '',
 					hazardIdentification: '',
+          cameraIds: [],
           maBaseId: null,
 					workDetail:{
 						operationDepId: null,
@@ -250,6 +263,7 @@
 				workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				hazardIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        cameraIds: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				"workDetail.operationDepId": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				"workDetail.bcReason": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
diff --git a/src/views/specialWorkSystem/workTicket/zysq/components/fire.vue b/src/views/specialWorkSystem/workTicket/zysq/components/fire.vue
index 9af9738..66ecf67 100644
--- a/src/views/specialWorkSystem/workTicket/zysq/components/fire.vue
+++ b/src/views/specialWorkSystem/workTicket/zysq/components/fire.vue
@@ -74,6 +74,20 @@
 					</el-form-item>
 				</el-col>
 			</el-row>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="关联设备" prop="cameraIds">
+            <el-select v-model="form.cameraIds" multiple>
+              <el-option
+                  v-for="item in deviceList"
+                  :key="item.id"
+                  :label="item.name"
+                  :value="item.id"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+      </el-row>
 				<el-divider border-style="dashed"/>
 			<el-row>
 				<el-col :span="12">
@@ -137,7 +151,7 @@
 		components: {
       materialDialog: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/zysq/components/materialDialog.vue')),
     },
-		props:['workerList'],
+		props:['workerList','deviceList'],
 		setup(props: any, context: any) {
 			const userInfo = useUserInfo()
 			const { userInfos } = storeToRefs(userInfo);
@@ -151,6 +165,7 @@
 					workLocation: '',
           maBaseId: null,
 					hazardIdentification: '',
+          cameraIds: [],
 					workDetail:{
 						hotMethod: '',
 						otherSpecialWork: []
@@ -218,6 +233,7 @@
 				workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				hazardIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        cameraIds: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				"workDetail.hotMethod": [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
 			});
diff --git a/src/views/specialWorkSystem/workTicket/zysq/components/ground.vue b/src/views/specialWorkSystem/workTicket/zysq/components/ground.vue
index 26a089b..d4b17a0 100644
--- a/src/views/specialWorkSystem/workTicket/zysq/components/ground.vue
+++ b/src/views/specialWorkSystem/workTicket/zysq/components/ground.vue
@@ -61,6 +61,18 @@
 						/>
 					</el-form-item>
 				</el-col>
+        <el-col :span="12">
+          <el-form-item label="关联设备" prop="cameraIds">
+            <el-select v-model="form.cameraIds" multiple>
+              <el-option
+                  v-for="item in deviceList"
+                  :key="item.id"
+                  :label="item.name"
+                  :value="item.id"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
 			</el-row>
 				<el-divider border-style="dashed"/>
 			<el-row>
@@ -172,7 +184,7 @@
 		components: {
       materialDialog: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/zysq/components/materialDialog.vue')),
     },
-		props:['workerList','departList'],
+		props:['workerList','departList', 'deviceList'],
 		setup(props: any, context: any) {
 			const userInfo = useUserInfo()
 			const { userInfos } = storeToRefs(userInfo);
@@ -185,6 +197,7 @@
 					workContent: '',
 					workLocation: '',
 					hazardIdentification: '',
+          cameraIds: [],
           maBaseId: null,
 					workDetail:{
 						operationDepId: null,
@@ -281,6 +294,7 @@
 				workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				hazardIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        cameraIds: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				"workDetail.operationDepId": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				"workDetail.gbScope": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
diff --git a/src/views/specialWorkSystem/workTicket/zysq/components/height.vue b/src/views/specialWorkSystem/workTicket/zysq/components/height.vue
index 0fcee6b..0cecd52 100644
--- a/src/views/specialWorkSystem/workTicket/zysq/components/height.vue
+++ b/src/views/specialWorkSystem/workTicket/zysq/components/height.vue
@@ -74,6 +74,34 @@
 					</el-form-item>
 				</el-col>
 			</el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="关联设备" prop="cameraIds">
+              <el-select v-model="form.cameraIds" multiple>
+                <el-option
+                    v-for="item in deviceList"
+                    :key="item.id"
+                    :label="item.name"
+                    :value="item.id"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="关联设备" prop="cameraIds">
+              <el-select v-model="form.cameraIds" multiple>
+                <el-option
+                    v-for="item in deviceList"
+                    :key="item.id"
+                    :label="item.name"
+                    :value="item.id"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
 				<el-divider border-style="dashed"/>
 			<el-row>
 				<el-col :span="12">
@@ -156,7 +184,7 @@
 		components: {
       materialDialog: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/zysq/components/materialDialog.vue')),
     },
-		props:['workerList','departList'],
+		props:['workerList','departList','deviceList'],
 		setup(props: any, context: any) {
 			const userInfo = useUserInfo()
 			const { userInfos } = storeToRefs(userInfo);
@@ -169,6 +197,7 @@
 					workContent: '',
 					workLocation: '',
 					hazardIdentification: '',
+          cameraIds: [],
           maBaseId: null,
 					workDetail:{
 						operationDepId: '',
@@ -286,6 +315,7 @@
 				workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				hazardIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        cameraIds: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				"workDetail.operationDepId": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				"workDetail.operationHeight": [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
diff --git a/src/views/specialWorkSystem/workTicket/zysq/components/hoist.vue b/src/views/specialWorkSystem/workTicket/zysq/components/hoist.vue
index f9ae96f..98bfb45 100644
--- a/src/views/specialWorkSystem/workTicket/zysq/components/hoist.vue
+++ b/src/views/specialWorkSystem/workTicket/zysq/components/hoist.vue
@@ -74,6 +74,20 @@
 					</el-form-item>
 				</el-col>
 			</el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="关联设备" prop="cameraIds">
+              <el-select v-model="form.cameraIds" multiple>
+                <el-option
+                    v-for="item in deviceList"
+                    :key="item.id"
+                    :label="item.name"
+                    :value="item.id"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
 				<el-divider border-style="dashed"/>
 			<el-row>
 				<el-col :span="12">
@@ -136,7 +150,7 @@
 		components: {
       materialDialog: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/zysq/components/materialDialog.vue')),
     },
-		props:['workerList'],
+		props:['workerList','deviceList'],
 		setup(props: any, context: any) {
 			const userInfo = useUserInfo()
 			const { userInfos } = storeToRefs(userInfo);
@@ -150,6 +164,7 @@
 					workLocation: '',
           maBaseId: null,
 					hazardIdentification: '',
+          cameraIds: [],
 					workDetail:{
 						hoistingToolName: '',
 						weightMass: null
@@ -183,6 +198,7 @@
 				workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				hazardIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        cameraIds: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				"workDetail.hoistingToolName": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				"workDetail.weightMass": [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
diff --git a/src/views/specialWorkSystem/workTicket/zysq/components/plate.vue b/src/views/specialWorkSystem/workTicket/zysq/components/plate.vue
index f0e9544..e86df83 100644
--- a/src/views/specialWorkSystem/workTicket/zysq/components/plate.vue
+++ b/src/views/specialWorkSystem/workTicket/zysq/components/plate.vue
@@ -74,6 +74,20 @@
 					</el-form-item>
 				</el-col>
 			</el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="关联设备" prop="cameraIds">
+              <el-select v-model="form.cameraIds" multiple>
+                <el-option
+                    v-for="item in deviceList"
+                    :key="item.id"
+                    :label="item.name"
+                    :value="item.id"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
 				<el-divider border-style="dashed"/>
 			<el-row>
 				<el-col :span="12">
@@ -247,7 +261,7 @@
 		components: {
       materialDialog: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/zysq/components/materialDialog.vue')),
     },
-		props:['workerList'],
+		props:['workerList','deviceList'],
 		setup(props: any, context: any) {
 			const userInfo = useUserInfo()
 			const { userInfos } = storeToRefs(userInfo);
@@ -261,6 +275,7 @@
 					workLocation: '',
           maBaseId: null,
 					hazardIdentification: '',
+          cameraIds: [],
 					workDetail:{
 						bpCode: '',
 						mainMedia: '',
@@ -366,6 +381,7 @@
 				workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				hazardIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        cameraIds: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				"workDetail.bpCode": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				"workDetail.mainMedia": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
diff --git a/src/views/specialWorkSystem/workTicket/zysq/components/power.vue b/src/views/specialWorkSystem/workTicket/zysq/components/power.vue
index 07d84b4..257dac6 100644
--- a/src/views/specialWorkSystem/workTicket/zysq/components/power.vue
+++ b/src/views/specialWorkSystem/workTicket/zysq/components/power.vue
@@ -61,6 +61,18 @@
 						/>
 					</el-form-item>
 				</el-col>
+        <el-col :span="12">
+          <el-form-item label="关联设备" prop="cameraIds">
+            <el-select v-model="form.cameraIds" multiple>
+              <el-option
+                  v-for="item in deviceList"
+                  :key="item.id"
+                  :label="item.name"
+                  :value="item.id"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
 			</el-row>
 				<el-divider border-style="dashed"/>
 			<el-row>
@@ -133,7 +145,7 @@
 		components: {
       materialDialog: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/zysq/components/materialDialog.vue')),
     },
-		props:['workerList'],
+		props:['workerList','deviceList'],
 		setup(props: any, context: any) {
 			const userInfo = useUserInfo()
 			const { userInfos } = storeToRefs(userInfo);
@@ -147,6 +159,7 @@
 					workLocation: '',
           maBaseId: null,
 					hazardIdentification: '',
+          cameraIds: [],
 					workDetail:{
 						powerAccessPoint: '',
 						workingVoltage: null,
@@ -166,6 +179,7 @@
 				workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				hazardIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        cameraIds: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				"workDetail.powerAccessPoint": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				"workDetail.workingVoltage": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
diff --git a/src/views/specialWorkSystem/workTicket/zysq/components/space.vue b/src/views/specialWorkSystem/workTicket/zysq/components/space.vue
index a474192..24e9837 100644
--- a/src/views/specialWorkSystem/workTicket/zysq/components/space.vue
+++ b/src/views/specialWorkSystem/workTicket/zysq/components/space.vue
@@ -61,6 +61,18 @@
 						/>
 					</el-form-item>
 				</el-col>
+        <el-col :span="12">
+          <el-form-item label="关联设备" prop="cameraIds">
+            <el-select v-model="form.cameraIds" multiple>
+              <el-option
+                  v-for="item in deviceList"
+                  :key="item.id"
+                  :label="item.name"
+                  :value="item.id"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
 			</el-row>
 				<el-divider border-style="dashed" />
 			<el-row>
@@ -147,7 +159,7 @@
 		components: {
       materialDialog: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/zysq/components/materialDialog.vue')),
     },
-		props:['workerList','departList'],
+		props:['workerList','departList','deviceList'],
 		setup(props: any, context: any) {
 			const userInfo = useUserInfo()
 			const { userInfos } = storeToRefs(userInfo);
@@ -161,6 +173,7 @@
 					workLocation: '',
           maBaseId: null,
 					hazardIdentification: '',
+          cameraIds: [],
 					workDetail:{
 						csDepId: null,
 						csName: '',
@@ -249,6 +262,7 @@
 				workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				hazardIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        cameraIds: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				"workDetail.csDepId": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				"workDetail.csName": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
diff --git a/src/views/specialWorkSystem/workTicket/zysq/index.vue b/src/views/specialWorkSystem/workTicket/zysq/index.vue
index fea4f09..3584dfc 100644
--- a/src/views/specialWorkSystem/workTicket/zysq/index.vue
+++ b/src/views/specialWorkSystem/workTicket/zysq/index.vue
@@ -2,28 +2,28 @@
 	<div class="home-container">
 		<el-tabs type="border-card" @tab-change="switchTab">
 			<el-tab-pane label="动火作业">
-				<fire-form ref="fire" :workerList = allWorkers></fire-form>
+				<fire-form ref="fire" :workerList = allWorkers :deviceList = allDevices></fire-form>
 			</el-tab-pane>
 			<el-tab-pane label="受限空间作业">
-				<space-form ref="space" :workerList = allWorkers :departList = departmentList></space-form>
+				<space-form ref="space" :workerList = allWorkers :departList = departmentList :deviceList = allDevices></space-form>
 			</el-tab-pane>
 			<el-tab-pane label="吊装作业">
-				<hoist-form ref="hoist" :workerList = allWorkers></hoist-form>
+				<hoist-form ref="hoist" :workerList = allWorkers :deviceList = allDevices></hoist-form>
 			</el-tab-pane>
 			<el-tab-pane label="动土作业">
-				<ground-form ref="ground" :workerList = allWorkers :departList = departmentList></ground-form>
+				<ground-form ref="ground" :workerList = allWorkers :departList = departmentList :deviceList = allDevices></ground-form>
 			</el-tab-pane>
 			<el-tab-pane label="断路作业">
-				<broken-form ref="broken" :workerList = allWorkers :departList = departmentList></broken-form>
+				<broken-form ref="broken" :workerList = allWorkers :departList = departmentList :deviceList = allDevices></broken-form>
 			</el-tab-pane>
 			<el-tab-pane label="高处作业">
-				<height-form ref="height" :workerList = allWorkers :departList = departmentList></height-form>
+				<height-form ref="height" :workerList = allWorkers :departList = departmentList :deviceList = allDevices></height-form>
 			</el-tab-pane>
 			<el-tab-pane label="临时用电作业">
-				<power-form ref="power" :workerList = allWorkers></power-form>
+				<power-form ref="power" :workerList = allWorkers :deviceList = allDevices></power-form>
 			</el-tab-pane>
 			<el-tab-pane label="盲板抽堵作业">
-				<plate-form ref="plate" :workerList = allWorkers></plate-form>
+				<plate-form ref="plate" :workerList = allWorkers :deviceList = allDevices></plate-form>
 			</el-tab-pane>
 		</el-tabs>
     <material-dialog ref="material"></material-dialog>
@@ -45,6 +45,7 @@
 	interface stateType {
 		allWorkers: Array<any>
 		departmentList: Array<any>
+    allDevices: Array<any>
 	}
 	export default defineComponent({
 		name: 'apply',
@@ -64,7 +65,8 @@
 			const { userInfos } = storeToRefs(userInfo);
 			const state  = reactive<stateType>({
 				allWorkers: [],
-				departmentList: []
+				departmentList: [],
+        allDevices: []
 			});
       const fire = ref()
       const space = ref()
@@ -101,6 +103,19 @@
 				}
 			};
 
+      // 获取设备列表
+      const getAllDevice = async ()=>{
+        const res = await workApplyApi().getAllDevices()
+        if (res.data.code === '200') {
+          state.allDevices = JSON.parse(JSON.stringify(res.data.data))
+        } else {
+          ElMessage({
+            type: 'warning',
+            message: res.data.msg
+          });
+        }
+      };
+
       const switchTab = (name)=>{
         console.log(name,'name')
         fire.value.form.resetFields()
@@ -113,6 +128,7 @@
 			onMounted(() => {
 				getAll();
 				getAllDepartment();
+        getAllDevice()
 			});
 
 			return {

--
Gitblit v1.9.2