Memory_LG 7 місяців тому
батько
коміт
985903a03d

+ 1 - 0
lawenforcement-ui/package.json

@@ -58,6 +58,7 @@
     "leaflet.markercluster": "^1.5.3",
     "leaflet.pm": "^2.2.0",
     "lib-flexible": "^0.3.2",
+    "moment": "^2.30.1",
     "nprogress": "0.2.0",
     "quill": "1.3.7",
     "screenfull": "5.0.2",

+ 1 - 3
lawenforcement-ui/src/views/components/DepartmentSelect.vue

@@ -46,7 +46,6 @@ export default {
     selectedDepts: {
       handler(newVal) {
         this.localedDepts = [...newVal];
-        console.log("更新数据===》",this.localedDepts)
       },
       immediate: true // 立即调用 handler 函数
     },
@@ -59,7 +58,6 @@ export default {
   },
   methods: {
     handleChange(selectedIds) {
-      console.log(selectedIds);
       let pushIds = [];
       for (let selectedId of selectedIds) {
         pushIds.push(selectedId[selectedId.length - 1]);
@@ -76,6 +74,6 @@ export default {
 
 <style scoped>
 .el-cascader {
-  width: 100%;
+  width: 80%;
 }
 </style>

+ 5 - 0
lawenforcement-ui/src/views/components/EnforcementUserSelect.vue

@@ -56,3 +56,8 @@ export default {
   },
 };
 </script>
+<style>
+.el-select{
+  width: 80%;
+}
+</style>

+ 2 - 2
lawenforcement-ui/src/views/components/FileUpload/index.vue

@@ -17,12 +17,12 @@
       <!-- 上传按钮 -->
       <el-button size="mini" type="primary">选取文件</el-button>
       <!-- 上传提示 -->
-      <div class="el-upload__tip" slot="tip" v-if="showTip">
+<!--      <div class="el-upload__tip" slot="tip" v-if="showTip">
         请上传
         <template v-if="fileSize"> 大小不超过 <b style="color: #f56c6c">{{ fileSize }}MB</b></template>
         <template v-if="fileType"> 格式为 <b style="color: #f56c6c">{{ fileType.join("/") }}</b></template>
         的文件
-      </div>
+      </div>-->
     </el-upload>
 
     <!-- 文件列表 -->

+ 13 - 11
lawenforcement-ui/src/views/lawenforcement/case/index.vue

@@ -26,7 +26,6 @@
     </el-form>
 
     <el-table v-loading="loading" :data="caseList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center"/>
       <el-table-column label="案件名称" align="center" prop="caseName"/>
       <el-table-column label="案件编号" align="center" prop="caseNumber"/>
       <el-table-column label="处罚对象" align="center" prop="punishTarget">
@@ -55,13 +54,13 @@
             v-hasPermi="['lawenforcement:case:query']"
           >详情
           </el-button>
-          <el-button
+<!--          <el-button
             size="mini"
             type="text"
             icon="el-icon-plus"
             @click="register(scope.row)"
           >立案
-          </el-button>
+          </el-button>-->
         </template>
       </el-table-column>
     </el-table>
@@ -193,15 +192,15 @@
         </el-row>
       </el-form>
       <el-table v-loading="loading" :data="logList" @selection-change="handleSelectionChange">
+        <el-table-column label="所属部门" align="center" prop="deptName"/>
         <el-table-column label="操作人" align="center" prop="createName"/>
         <el-table-column label="操作时间" align="center" prop="createTime"/>
-        <el-table-column label="所属部门" align="center" prop="deptName"/>
-        <el-table-column label="操作内容" align="center" prop="content"/>
         <el-table-column label="状态" align="center" prop="state">
           <template slot-scope="scope">
             <dict-tag :options="dict.type.lawenforcement_caseState" :value="scope.row.state"/>
           </template>
         </el-table-column>
+        <el-table-column label="操作内容" align="center" prop="content"/>
       </el-table>
       <div slot="footer" class="dialog-footer">
         <el-button v-if="type!='1'&&form.state=='state_1'" type="primary" @click="acceptance('state_2')">受理
@@ -417,12 +416,15 @@ export default {
       getCase(id).then(response => {
         this.form = response.data;
         this.logList = response.data.logList
-        this.dataOne = response.data.fileList[0].attachPath
-        this.dataTwo = response.data.fileList[1].attachPath
-        this.dataThree = response.data.fileList[2].attachPath
-        this.describe1 = response.data.fileList[0].describe
-        this.describe2 = response.data.fileList[1].describe
-        this.describe3 = response.data.fileList[2].describe
+        let fileList = response.data.fileList;
+        if(fileList.length > 0){
+          this.dataOne = response.data.fileList[0].attachPath
+          this.dataTwo = response.data.fileList[1].attachPath
+          this.dataThree = response.data.fileList[2].attachPath
+          this.describe1 = response.data.fileList[0].describe
+          this.describe2 = response.data.fileList[1].describe
+          this.describe3 = response.data.fileList[2].describe
+        }
         this.open = true;
         this.title = "案件详情";
       });

+ 240 - 166
lawenforcement-ui/src/views/lawenforcement/record/index.vue

@@ -16,7 +16,7 @@
       </el-form-item>
     </el-form>
 
-    <el-row :gutter="10" class="mb8">
+<!--    <el-row :gutter="10" class="mb8">
       <el-col :span="1.5">
         <el-button
           type="primary"
@@ -64,28 +64,32 @@
         </el-button>
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
-    </el-row>
+    </el-row>-->
 
     <el-table v-loading="loading" :data="recordList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center"/>
-      <el-table-column label="任务类型" align="center" prop="jobType"/>
+<!--      <el-table-column type="selection" width="55" align="center"/>-->
+      <el-table-column label="任务类型" align="center" prop="jobType">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.lawenforcement_jobType" :value="scope.row.jobType"/>
+        </template>
+      </el-table-column>
       <el-table-column label="任务创建人姓名" align="center" prop="creatorName"/>
-      <el-table-column label="任务创建部门名称" align="center" prop="deptName"/>
+      <el-table-column label="任务创建部门" align="center" prop="deptName"/>
       <el-table-column label="任务名称" align="center" prop="jobName"/>
       <el-table-column label="任务状态" align="center" prop="gender">
         <template slot-scope="scope">
           <dict-tag :options="dict.type.lawenforcement_type" :value="scope.row.recordStatus"/>
         </template>
       </el-table-column>
-      <el-table-column label="任务检查类型" align="center" prop="checkType"/>
+<!--      <el-table-column label="任务检查类型" align="center" prop="checkType"/>-->
       <el-table-column label="检查对象类型" align="center" prop="checkObjectType"/>
       <el-table-column label="检查对象代码" align="center" prop="checkObjectCode"/>
       <el-table-column label="检查对象名称" align="center" prop="checkObjectName"/>
-      <el-table-column label="检查对象联系电话" align="center" prop="checkObjectPhone"/>
-      <el-table-column label="检查开始时间" align="center" prop="checkStartTime"/>
-      <el-table-column label="检查结束时间" align="center" prop="checkEndTime"/>
+<!--      <el-table-column label="检查对象联系电话" align="center" prop="checkObjectPhone"/>-->
+      <el-table-column label="检查开始时间" align="center" prop="checkStartTime" :formatter="formatDate" />
+      <el-table-column label="检查结束时间" align="center" prop="checkEndTime" :formatter="formatDate" />
       <el-table-column label="检查子项数量" align="center" prop="subitemCount"/>
-      <el-table-column label="备注" align="center" prop="remark"/>
+<!--      <el-table-column label="备注" align="center" prop="remark"/>-->
       <el-table-column label="创建方式" align="center">
         <template v-slot="scope">
           <span v-if="scope.row.createMethod === 1">自建</span>
@@ -112,7 +116,29 @@
             @click="showBindDeviceDialog(scope.row)"
           >绑定设备
           </el-button>
+<!--    v-if="scope.row.recordStatus === 'lawenforcement_type_2' || scope.row.recordStatus === 'lawenforcement_type_5'"      -->
           <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-paper-plus"
+            @click="registerLiAn(scope.row)"
+          >立案
+          </el-button>
+          <el-dropdown v-if="scope.row.createMethod === 1" size="mini" @command="(command) => handleCommand(command, scope.row)"
+                       v-hasPermi="['system:role:edit']">
+            <span class="el-dropdown-link">
+              <i class="el-icon-d-arrow-right el-icon--right"></i>更多
+            </span>
+            <el-dropdown-menu slot="dropdown">
+              <el-dropdown-item command="edit" icon="el-icon-edit"
+                                v-hasPermi="['lawenforcement:record:edit']">修改
+              </el-dropdown-item>
+              <el-dropdown-item command="remove" icon="el-icon-delete"
+                                v-hasPermi="['lawenforcement:record:remove']">删除
+              </el-dropdown-item>
+            </el-dropdown-menu>
+          </el-dropdown>
+<!--          <el-button
             v-if="scope.row.createMethod === 1"
             size="mini"
             type="text"
@@ -129,7 +155,7 @@
             @click="handleDelete(scope.row)"
             v-hasPermi="['lawenforcement:record:remove']"
           >删除
-          </el-button>
+          </el-button>-->
         </template>
       </el-table-column>
     </el-table>
@@ -143,113 +169,82 @@
     />
 
     <!-- 添加或修改任务数据对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="任务创建人ID" prop="creatorId">
-          <el-input v-model="form.creatorId" placeholder="请输入任务创建人ID"/>
-        </el-form-item>
-        <el-form-item label="任务创建人姓名" prop="creatorName">
-          <el-input v-model="form.creatorName" placeholder="请输入任务创建人姓名"/>
-        </el-form-item>
-        <el-form-item label="任务创建部门ID" prop="deptId">
-          <el-input v-model="form.deptId" placeholder="请输入任务创建部门ID"/>
-        </el-form-item>
-        <el-form-item label="任务创建部门名称" prop="deptName">
-          <el-input v-model="form.deptName" placeholder="请输入任务创建部门名称"/>
-        </el-form-item>
-        <el-form-item label="地区ID" prop="areaId">
-          <el-input v-model="form.areaId" placeholder="请输入地区ID"/>
-        </el-form-item>
-        <el-form-item label="任务名称" prop="jobName">
-          <el-input v-model="form.jobName" placeholder="请输入任务名称"/>
-        </el-form-item>
-        <el-form-item label="检查对象ID" prop="checkObjectId">
-          <el-input v-model="form.checkObjectId" placeholder="请输入检查对象ID"/>
-        </el-form-item>
-        <el-form-item label="检查对象代码" prop="checkObjectCode">
-          <el-input v-model="form.checkObjectCode" placeholder="请输入检查对象代码"/>
-        </el-form-item>
-        <el-form-item label="检查对象名称" prop="checkObjectName">
-          <el-input v-model="form.checkObjectName" placeholder="请输入检查对象名称"/>
-        </el-form-item>
-        <el-form-item label="检查对象联系电话" prop="checkObjectPhone">
-          <el-input v-model="form.checkObjectPhone" placeholder="请输入检查对象联系电话"/>
-        </el-form-item>
-        <el-form-item label="检查开始时间" prop="checkStartTime">
-          <el-input v-model="form.checkStartTime" placeholder="请输入检查开始时间"/>
-        </el-form-item>
-        <el-form-item label="检查结束时间" prop="checkEndTime">
-          <el-input v-model="form.checkEndTime" placeholder="请输入检查结束时间"/>
-        </el-form-item>
-        <el-form-item label="检查子项数量" prop="subitemCount">
-          <el-input v-model="form.subitemCount" placeholder="请输入检查子项数量"/>
-        </el-form-item>
-        <el-form-item label="备注" prop="remark">
-          <el-input v-model="form.remark" placeholder="请输入备注"/>
-        </el-form-item>
-        <el-form-item label="是否核验(0未核验 1已核验 2无法核验)" prop="verify">
-          <el-input v-model="form.verify" placeholder="请输入是否核验(0未核验 1已核验 2无法核验)"/>
-        </el-form-item>
-        <el-form-item label="无法核验原因" prop="unableVerifyReason">
-          <el-input v-model="form.unableVerifyReason" placeholder="请输入无法核验原因"/>
-        </el-form-item>
-        <el-form-item label="扫码人身份证号" prop="scanId">
-          <el-input v-model="form.scanId" placeholder="请输入扫码人身份证号"/>
-        </el-form-item>
-        <el-form-item label="扫码人姓名" prop="scanName">
-          <el-input v-model="form.scanName" placeholder="请输入扫码人姓名"/>
-        </el-form-item>
-        <el-form-item label="扫码时间" prop="scanTime">
-          <el-input v-model="form.scanTime" placeholder="请输入扫码时间"/>
-        </el-form-item>
-        <el-form-item label="核验人ID" prop="verifyPeopleId">
-          <el-input v-model="form.verifyPeopleId" placeholder="请输入核验人ID"/>
-        </el-form-item>
-        <el-form-item label="核验人姓名" prop="verifyPeopleName">
-          <el-input v-model="form.verifyPeopleName" placeholder="请输入核验人姓名"/>
-        </el-form-item>
-        <el-form-item label="核验时间" prop="verifyTime">
-          <el-input v-model="form.verifyTime" placeholder="请输入核验时间"/>
-        </el-form-item>
-        <el-form-item label="评价(0待评价 1 好评 2一般 3差评)" prop="evaluation">
-          <el-input v-model="form.evaluation" placeholder="请输入评价(0待评价 1 好评 2一般 3差评)"/>
-        </el-form-item>
-        <el-form-item label="评价内容">
-          <editor v-model="form.evaluationContent" :min-height="192"/>
-        </el-form-item>
-        <el-form-item label="评价时间" prop="evaluationTime">
-          <el-input v-model="form.evaluationTime" placeholder="请输入评价时间"/>
-        </el-form-item>
-        <el-form-item label="是否有检查结果(0未填 1已填)" prop="result">
-          <el-input v-model="form.result" placeholder="请输入是否有检查结果(0未填 1已填)"/>
-        </el-form-item>
-        <el-form-item label="检查结果录入时间" prop="resultTime">
-          <el-input v-model="form.resultTime" placeholder="请输入检查结果录入时间"/>
-        </el-form-item>
-        <el-form-item label="检查结果录入人员" prop="resultPersonId">
-          <el-input v-model="form.resultPersonId" placeholder="请输入检查结果录入人员"/>
-        </el-form-item>
-        <el-form-item label="是否延续检查" prop="isLast">
-          <el-input v-model="form.isLast" placeholder="请输入是否延续检查"/>
-        </el-form-item>
-        <el-form-item label="原任务Id" prop="jobId">
-          <el-input v-model="form.jobId" placeholder="请输入原任务Id"/>
-        </el-form-item>
-        <el-form-item label="数据来源" prop="source">
-          <el-input v-model="form.source" placeholder="请输入数据来源"/>
-        </el-form-item>
-        <el-form-item label="创建方式(1自建,2API对接;3数据同步)" prop="createMethod">
-          <el-input v-model="form.createMethod" placeholder="请输入创建方式(1自建,2API对接;3数据同步)"/>
-        </el-form-item>
-        <el-form-item label="是否跨部门" prop="isCrossDept">
-          <el-input v-model="form.isCrossDept" placeholder="请输入是否跨部门"/>
-        </el-form-item>
-        <el-form-item label="设备id" prop="deviceId">
-          <el-input v-model="form.deviceId" placeholder="请输入设备id"/>
-        </el-form-item>
-        <el-form-item label="设备名称" prop="deviceName">
-          <el-input v-model="form.deviceName" placeholder="请输入设备名称"/>
-        </el-form-item>
+    <el-dialog :title="title" :visible.sync="open" width="1000px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="130px">
+        <el-row :gutter="24">
+          <el-col :span="12">
+            <el-form-item label="任务名称" prop="jobName">
+              <el-input v-model="form.jobName" placeholder="请输入任务名称"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="地区ID" prop="areaId">
+              <el-input v-model="form.areaId" placeholder="请输入地区ID"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="24">
+          <el-col :span="12">
+            <el-form-item label="任务类型" prop="jobType">
+              <el-input v-model="form.jobType" placeholder="请选择任务类型"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="检查对象类型" prop="checkObjectType">
+              <el-input v-model="form.checkObjectType" placeholder="请选择检查对象类型"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="24">
+          <el-col :span="12">
+            <el-form-item label="检查对象ID" prop="checkObjectId">
+              <el-input v-model="form.checkObjectId" placeholder="请输入检查对象ID"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="检查对象代码" prop="checkObjectCode">
+              <el-input v-model="form.checkObjectCode" placeholder="请输入检查对象代码"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="24">
+          <el-col :span="12">
+            <el-form-item label="检查对象名称" prop="checkObjectName">
+              <el-input v-model="form.checkObjectName" placeholder="请输入检查对象名称"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="检查对象联系电话" prop="checkObjectPhone">
+              <el-input v-model="form.checkObjectPhone" placeholder="请输入检查对象联系电话"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="24">
+          <el-col :span="12">
+            <el-form-item label="检查开始时间" prop="checkStartTime">
+              <el-input v-model="form.checkStartTime" placeholder="请输入检查开始时间"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="检查结束时间" prop="checkEndTime">
+              <el-input v-model="form.checkEndTime" placeholder="请输入检查结束时间"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="24">
+          <el-col :span="12">
+            <el-form-item label="检查子项数量" prop="subitemCount">
+              <el-input v-model="form.subitemCount" placeholder="请输入检查子项数量"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="24">
+          <el-col :span="24">
+            <el-form-item label="备注" prop="remark">
+              <el-input v-model="form.remark" placeholder="请输入备注"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
@@ -259,38 +254,48 @@
 
 
     <!-- 派发事件弹窗 -->
-    <el-dialog :visible.sync="dialogVisible" title="派发任务">
+    <el-dialog :visible.sync="dialogVisible" title="派发任务" width="800px">
       <el-form :model="form">
-        <el-form-item label="选择部门">
-          <DepartmentSelect
-            ref="departmentSelect"
-            :deptOptions="deptOptions"
-            :selectedDepts="selectedDepts"
-            :reset="reset"
-            @selection-change="handleDeptSelectionChange"
-          />
-        </el-form-item>
-
-        <el-form-item label="选择人员">
-          <EnforcementUserSelect
-            ref="enforcementUserSelect"
-            :userList="userList"
-            :selectedUserList="selectedUserList"
-            :reset="reset"
-            @user-selected="handleUserSelected"
-          />
-        </el-form-item>
-
-        <el-form-item v-if="useredList != null" label="主办人员">
-          <el-select v-model="mainPerson" placeholder="请选择" @change="seeMainPerson">
-            <el-option
-              v-for="user in useredList"
-              :key="user.userId"
-              :label="user.nickName"
-              :value="user.certificateNumber"
-            ></el-option>
-          </el-select>
-        </el-form-item>
+        <el-row :gutter="24">
+          <el-col :span="24">
+            <el-form-item label="选择部门">
+              <DepartmentSelect
+                ref="departmentSelect"
+                :deptOptions="deptOptions"
+                :selectedDepts="selectedDepts"
+                :reset="reset"
+                @selection-change="handleDeptSelectionChange"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col>
+            <el-form-item label="选择人员">
+              <EnforcementUserSelect
+                ref="enforcementUserSelect"
+                :userList="userList"
+                :selectedUserList="selectedUserList"
+                :reset="reset"
+                @user-selected="handleUserSelected"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col>
+            <el-form-item v-if="useredList != null" label="主办人员">
+              <el-select v-model="mainPerson" placeholder="请选择" @change="seeMainPerson">
+                <el-option
+                  v-for="user in useredList"
+                  :key="user.userId"
+                  :label="user.nickName"
+                  :value="user.certificateNumber"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
       </el-form>
       <div slot="footer">
         <el-button @click="dialogVisible = false">取消</el-button>
@@ -299,10 +304,10 @@
     </el-dialog>
 
     <!-- 绑定设备弹窗 -->
-    <el-dialog :visible.sync="bindDialogVisible" title="绑定设备">
+    <el-dialog :visible.sync="bindDialogVisible" title="绑定设备" width="500px">
       <el-form>
         <el-form-item label="任务名称" prop="jobName">
-          <el-input v-model="form.jobName" placeholder="请输入任务名称"/>
+          <el-input style="width: 80%" v-model="form.jobName" placeholder="请输入任务名称"/>
         </el-form-item>
         <el-form-item label="设备信息" prop="deviceId">
           <el-select v-model="form.deviceId" @change="onDeviceChange" placeholder="请选择设备">
@@ -320,6 +325,14 @@
         <el-button type="primary" @click="submitBindHandle">确定</el-button>
       </div>
     </el-dialog>
+
+    <el-dialog :visible.sync="dialogVisibleLiAn" :title="title" width="1200px" class="form-style">
+      <register @send-ok="sendOk" ref="register" :caseNumber="recordId"/>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFormLiAn">确 定</el-button>
+        <el-button @click="cancelLiAn">取 消</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
@@ -338,12 +351,15 @@ import {
 import {treeselect} from "@/api/system/dept";
 import DepartmentSelect from "@/views/components/DepartmentSelect.vue";
 import EnforcementUserSelect from "@/views/components/EnforcementUserSelect.vue";
+import register from "@/views/lawenforcement/register/index.vue";
+import moment from 'moment';
 
 export default {
   name: "Record",
-  components: {EnforcementUserSelect, DepartmentSelect},
+  components: {register, EnforcementUserSelect, DepartmentSelect},
   dicts: [
-    'lawenforcement_type'
+    'lawenforcement_type',
+    'lawenforcement_jobType'
   ],
   data() {
     return {
@@ -391,6 +407,9 @@ export default {
       // 选中的执法部门
       selectedDepts: [],
       departmentMap: {},
+      //立案弹窗
+      dialogVisibleLiAn:false,
+      recordId: null,
 
     };
   },
@@ -399,6 +418,20 @@ export default {
     this.getTreeselectToDept();
   },
   methods: {
+    // 更多操作触发
+    handleCommand(command, row) {
+      switch (command) {
+        case 'edit':
+          this.handleUpdate(row)
+          break
+        case 'remove':
+          this.handleDelete(row)
+          break
+        default:
+          break
+      }
+
+    },
     /** 查询任务数据列表 */
     getList() {
       this.loading = true;
@@ -525,6 +558,13 @@ export default {
       }).catch(() => {
       });
     },
+    formatDate(row, column) {
+      const date = row[column.property];
+      if (date) {
+        return moment(date).format('YYYY-MM-DD');
+      }
+      return '';
+    },
     /** 导出按钮操作 */
     handleExport() {
       this.download('lawenforcement/record/export', {
@@ -545,7 +585,7 @@ export default {
     },
     flattenToMap(data, parentId = null) {
       return data.reduce((map, node) => {
-        map[node.id] = { ...node, parentId }; // 将节点添加到 map 中
+        map[node.id] = {...node, parentId}; // 将节点添加到 map 中
         if (node.children) {
           Object.assign(map, this.flattenToMap(node.children, node.id)); // 递归处理子节点
         }
@@ -571,36 +611,48 @@ export default {
     showDispatchDialog(row) {
       //获取工单详情信息
       getRecord(row.id).then(res => {
+        //将工单详情信息赋值到form
         this.form = res.data
+        //获取执法人员集合
         let personList = res.data.personList;
+        //获取主办人员id
         this.mainPerson = res.data.mainPerson
+        //初始化部门集合:用作查询人员集合
         let path = []
-        personList.forEach(person=>{
+        //初始化 选中的执法人员列表
+        this.selectedUserList = []
+        //遍历数据
+        personList.forEach(person => {
+          //调用函数,处理复选选中的部门
           this.findPath(person.deptId)
+          //赋值
           path.push(person.deptId)
+          //将选中的执法人员证号放入到集合,传递给子页面使用
           this.selectedUserList.push(person.certificateNumber)
         })
+        //获取选中的部门中对应的人员集合
         this.handleDeptSelectionChange(path)
       })
       //打开派发弹窗
       this.dialogVisible = true;
       this.$nextTick(() => {
+        //触发将选中的部门数据给子页面
         this.$refs.departmentSelect.localedDepts = [...this.selectedDepts];
       });
     },
     /** 选中执法部门回调 */
     handleDeptSelectionChange(selectedIds) {
-      getUserListByDeptId(selectedIds).then(res => {
-        this.userList = res.data
-      })
-
+      if(selectedIds.length > 0){
+        getUserListByDeptId(selectedIds).then(res => {
+          //选中的部门中所有的执法人员信息
+          this.userList = res.data
+        })
+      }
     },
     /** 选中的执法人员回调事件 */
     handleUserSelected(selectedUsersIds) {
-      console.log("--->",selectedUsersIds)
       let usered = [];
       selectedUsersIds.forEach(userId => {
-        console.log(this.userList)
         // 在userList中查找对应的用户对象
         const user = this.userList.find(user => user.certificateNumber === userId);
         // 如果找到了用户对象,则将其添加到selectedUserList中
@@ -610,7 +662,6 @@ export default {
       });
       // 在这里处理选中的用户对象
       this.useredList = usered;
-      console.log("这里处理选中的用户对象", this.useredList)
       this.form.personList = usered;
     },
     /** 选中的主办人员回调 */
@@ -621,10 +672,9 @@ export default {
     handleDispatch() {
       // 处理派发逻辑,这里可以写你的逻辑,比如保存数据或者提交请求
       distributeRecord(this.form).then(res => {
-        console.log("派发成功");
-        this.dialogVisible = false;
+          this.$modal.msgSuccess("派发成功");
+          this.dialogVisible = false;
       })
-
     },
 
     /** 绑定设备按钮事件 */
@@ -646,9 +696,28 @@ export default {
     submitBindHandle() {
       this.form.recordStatus = "lawenforcement_type_6"
       addRecordLog(this.form).then(res => {
+        this.$modal.msgSuccess("绑定成功, 开始执法!");
         this.bindDialogVisible = false;
       })
-    }
+    },
+    /** 立案函数 */
+    registerLiAn(row){
+      this.dialogVisibleLiAn = true;
+      this.title = "立案";
+      this.recordId = row.id;
+    },
+    sendOk() {
+      this.dialogVisibleLiAn = false;
+      this.$refs.register.reset();
+    },
+    submitFormLiAn() {
+      this.$refs.register.submitForm();
+    },
+    cancelLiAn() {
+      this.dialogVisibleLiAn = false;
+      this.$refs.register.reset()
+    },
+
   },
   watch: {
     dialogVisible(newVal) {
@@ -661,6 +730,11 @@ export default {
         // 关闭弹窗时不重置子组件
         this.reset = false;
       }
+    },
+    userList(newValue){
+      if(this.form.mainPerson){
+        this.handleUserSelected(this.$refs.enforcementUserSelect.selectedUserList)
+      }
     }
   }
 };

+ 66 - 0
src/main/java/com/sooka/sponest/lawenforcement/base/domain/BaseBusinessEntity.java

@@ -0,0 +1,66 @@
+package com.sooka.sponest.lawenforcement.base.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.annotation.Excel;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+@Data
+public class BaseBusinessEntity {
+
+    private Long dataDeptId;
+
+    /**
+     * 创建人
+     */
+    private String createBy;
+
+    private int version;
+
+    /**
+     * 创建人姓名
+     */
+    @Excel(name = "创建人")
+    private String createName;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "创建时间",dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    /**
+     * 更新人
+     */
+    private Long updateBy;
+
+    /**
+     * 更新人姓名
+     */
+    @Excel(name = "修改人")
+    private String updateName;
+
+    /**
+     * 更新时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "修改时间",dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+
+    /**
+     * 请求参数
+     */
+    Map<String, Object> params = new HashMap();
+
+    private String database_data;
+
+    private String database_event;
+
+    private String database_monitor;
+
+    private String database_system;
+}

+ 24 - 0
src/main/java/com/sooka/sponest/lawenforcement/base/domain/ESVo.java

@@ -0,0 +1,24 @@
+package com.sooka.sponest.lawenforcement.base.domain;
+
+import com.ruoyi.common.log.enums.BusinessType;
+import lombok.Data;
+
+@Data
+public class ESVo {
+
+    public ESVo() {
+
+    }
+
+    public ESVo(String indexName, BusinessType type, String modelStr) {
+        this.indexName = indexName;
+        this.modelStr = modelStr;
+        this.type = type;
+    }
+
+    String indexName;
+
+    String modelStr;
+
+    BusinessType type;
+}

+ 17 - 0
src/main/java/com/sooka/sponest/lawenforcement/base/mapper/BaseMapper.java

@@ -0,0 +1,17 @@
+package com.sooka.sponest.lawenforcement.base.mapper;
+
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+public interface BaseMapper {
+
+    int uniqueCheck(@Param("tableName") String tableName, @Param("params") List<Map<String, String>> params);
+
+    List<Map<String, Object>> getLocationWithCamera(Object object);
+
+    List<Map<String, Object>> getCameraList(@Param("monitorDB") String monitorDB, @Param("ids") List<String> ids);
+
+    List<Map<String, Object>> getCountGroupByDept(Object object);
+}

+ 18 - 0
src/main/java/com/sooka/sponest/lawenforcement/base/service/IBaseService.java

@@ -0,0 +1,18 @@
+package com.sooka.sponest.lawenforcement.base.service;
+
+
+import com.sooka.sponest.lawenforcement.base.domain.BaseBusinessEntity;
+
+import java.util.List;
+import java.util.Map;
+
+public interface IBaseService {
+
+    void setSookaDataBase(BaseBusinessEntity entity);
+
+    boolean uniqueCheck(String tableName, String[] keys, String[] values);
+
+    List<Map<String, Object>> getLocationWithCamera(Object object);
+
+    List<Map<String, Object>> getCountGroupByDept(Object object);
+}

+ 99 - 0
src/main/java/com/sooka/sponest/lawenforcement/base/service/impl/BaseServiceImpl.java

@@ -0,0 +1,99 @@
+package com.sooka.sponest.lawenforcement.base.service.impl;
+
+import com.ruoyi.common.core.utils.StringUtils;
+import com.sooka.sponest.lawenforcement.base.domain.BaseBusinessEntity;
+import com.sooka.sponest.lawenforcement.base.mapper.BaseMapper;
+import com.sooka.sponest.lawenforcement.base.service.IBaseService;
+import org.apache.commons.collections4.MapUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Service
+public class BaseServiceImpl implements IBaseService {
+
+    @Value("${sooka.database.database_data:}")
+    public String database_data;
+
+    @Value("${sooka.database.database_event:}")
+    public String database_event;
+
+    @Value("${sooka.database.database_monitor:}")
+    public String database_monitor;
+
+    @Value("${sooka.database.database_system:}")
+    public String database_system;
+
+    public void setSookaDataBase(BaseBusinessEntity entity) {
+        entity.setDatabase_data(this.database_data);
+        entity.setDatabase_event(this.database_event);
+        entity.setDatabase_monitor(this.database_monitor);
+        entity.setDatabase_system(this.database_system);
+    }
+
+    protected Logger logger = LoggerFactory.getLogger(this.getClass());
+
+    @Autowired
+    private BaseMapper baseMapper;
+
+    public boolean uniqueCheck(String tableName, String[] keys, String[] values) {
+        if (StringUtils.isBlank(tableName) || StringUtils.isEmpty(keys) || StringUtils.isEmpty(values)) {
+            logger.error("参数必输校验失败");
+            return false;
+        }
+        int result = 1;
+        // 判定: keys 与 values 的长度不一致, 返回false
+        if (keys.length != values.length) {
+            logger.error("key/value长度不一致");
+        } else {
+            List<Map<String, String>> params = new ArrayList<>();
+            Map<String, String> param = null;
+            for (int i = 0; i < keys.length; i++) {
+                param = new HashMap<>();
+                param.put("key", keys[i]);
+                param.put("value", values[i]);
+                params.add(param);
+            }
+            try {
+                result = baseMapper.uniqueCheck(tableName, params);
+            } catch (Exception e) {
+                logger.error("唯一校验查询异常,请检查参数是否正确:{}", e.getMessage());
+            }
+        }
+        return 0 == result;
+    }
+
+    @Override
+    public List<Map<String, Object>> getLocationWithCamera(Object object) {
+        List<Map<String, Object>> pointList = baseMapper.getLocationWithCamera(object);
+        List<String> ids = pointList.stream().map(item -> MapUtils.getString(item, "id")).collect(Collectors.toList());
+        List<Map<String, Object>> cameraList = getCameraList(ids);
+        pointList.forEach(point -> {
+            List<Map<String, Object>> list = new ArrayList<>();
+            cameraList.forEach(camera -> {
+                if (MapUtils.getString(point, "id").equals(MapUtils.getString(camera, "businessId"))) {
+                    list.add(camera);
+                }
+            });
+            point.put("cameraList", list);
+        });
+        return pointList;
+    }
+
+    public List<Map<String, Object>> getCameraList(List<String> ids) {
+        return baseMapper.getCameraList(database_monitor, ids);
+    }
+
+    @Override
+    public List<Map<String, Object>> getCountGroupByDept(Object object) {
+        return baseMapper.getCountGroupByDept(object);
+    }
+}

+ 2 - 4
src/main/java/com/sooka/sponest/lawenforcement/user/domain/LawenforcementUser.java

@@ -1,9 +1,7 @@
 package com.sooka.sponest.lawenforcement.user.domain;
 
-import com.alibaba.nacos.api.cmdb.pojo.Entity;
 import com.ruoyi.common.core.annotation.Excel;
-import com.ruoyi.common.core.web.domain.BaseEntity;
-import com.ruoyi.common.datascope.base.domain.BaseBusinessEntity;
+import com.sooka.sponest.lawenforcement.base.domain.BaseBusinessEntity;
 import lombok.Getter;
 import lombok.Setter;
 import org.apache.commons.lang3.builder.ToStringBuilder;
@@ -17,7 +15,7 @@ import org.apache.commons.lang3.builder.ToStringStyle;
  */
 @Setter
 @Getter
-public class LawenforcementUser extends BaseEntity {
+public class LawenforcementUser extends BaseBusinessEntity {
     private static final long serialVersionUID = 1L;
 
     /**

+ 5 - 1
src/main/java/com/sooka/sponest/lawenforcement/user/service/impl/LawenforcementUserServiceImpl.java

@@ -1,5 +1,7 @@
 package com.sooka.sponest.lawenforcement.user.service.impl;
 
+import com.ruoyi.common.datascope.annotation.DataScopeMutiDept;
+import com.sooka.sponest.lawenforcement.base.service.impl.BaseServiceImpl;
 import com.sooka.sponest.lawenforcement.user.domain.LawenforcementUser;
 import com.sooka.sponest.lawenforcement.user.mapper.LawenforcementUserMapper;
 import com.sooka.sponest.lawenforcement.user.service.ILawenforcementUserService;
@@ -15,7 +17,7 @@ import java.util.List;
  * @date 2024-10-11
  */
 @Service
-public class LawenforcementUserServiceImpl implements ILawenforcementUserService {
+public class LawenforcementUserServiceImpl extends BaseServiceImpl implements ILawenforcementUserService {
     @Autowired
     private LawenforcementUserMapper lawenforcementUserMapper;
 
@@ -37,7 +39,9 @@ public class LawenforcementUserServiceImpl implements ILawenforcementUserService
      * @return 人员信息管理
      */
     @Override
+    @DataScopeMutiDept(deptAlias = "d")
     public List<LawenforcementUser> selectLawenforcementUserList(LawenforcementUser lawenforcementUser) {
+        setSookaDataBase(lawenforcementUser);
         return lawenforcementUserMapper.selectLawenforcementUserList(lawenforcementUser);
     }
 

+ 31 - 16
src/main/resources/mapper/lawenforcement/LawenforcementUserMapper.xml

@@ -23,27 +23,42 @@
     </resultMap>
 
     <sql id="selectLawenforcementUserVo">
-        select user_id,
-               nick_name,
-               phonenumber,
-               sex,
-               card_number,
-               professional,
-               educational,
-               job,
-               level,
-               office_location,
-               home_address,
-               certificate_number,
-               certificate,
-               dept_id,
-               dept_name
-        from lawenforcement_user
+        select a.user_id,
+               a.nick_name,
+               a.phonenumber,
+               a.sex,
+               a.card_number,
+               a.professional,
+               a.educational,
+               a.job,
+               a.level,
+               a.office_location,
+               a.home_address,
+               a.certificate_number,
+               a.certificate,
+               a.dept_id,
+               a.dept_name
+        from lawenforcement_user a
     </sql>
 
     <select id="selectLawenforcementUserList" parameterType="LawenforcementUser" resultMap="LawenforcementUserResult">
         <include refid="selectLawenforcementUserVo"/>
+        left join ${database_system}.sys_dept d on a.dept_id = d.dept_id
         <where>
+            <if test="nickName != null and nickName != ''">
+                and nick_name like CONCAT('%', #{nickName}, '%')
+            </if>
+            <if test="deptId != null and deptId != ''">
+                <choose>
+                    <when test="deptName != null and deptName == 0">
+                        and FIND_IN_SET( #{deptId}, CONCAT( d.ancestors, ",", d.dept_id) )
+                    </when>
+                    <otherwise>
+                        and d.dept_id = #{deptId}
+                    </otherwise>
+                </choose>
+            </if>
+            ${params.dataScope}
         </where>
     </select>