Browse Source

Merge remote-tracking branch 'origin/dev' into dev

dev-v1.0.2
庄锐波 2 months ago
parent
commit
3790c3b75f
  1. 10
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enterprise/AppEntLawEnforcementCaseController.java
  2. 2
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnforcementRegistrationServiceImpl.java
  3. 2
      zdxt-web-client/zdxt-efcode-enforcement-app/src/api/enforcement/index.js
  4. 109
      zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/EnforcementInfoSection.vue
  5. 17
      zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/enforce/enforcementRegister.vue
  6. 2
      zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/home/enforcementHome.vue

10
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enterprise/AppEntLawEnforcementCaseController.java

@ -49,8 +49,8 @@ public class AppEntLawEnforcementCaseController extends BaseController {
*/
@ApiResponse(description = "企业端-执法案件信息详情")
@GetMapping("/lawCasedetail")
public AppLawEnforcementCaseVo lawCasedetail(AppLawEnforcementCaseBo bo) {
return appLawEnforcementCaseService.selectAppLawEnforcementCaseById(bo);
public R<AppLawEnforcementCaseVo> lawCasedetail(AppLawEnforcementCaseBo bo) {
return R.ok(appLawEnforcementCaseService.selectAppLawEnforcementCaseById(bo));
}
/**
@ -60,9 +60,9 @@ public class AppEntLawEnforcementCaseController extends BaseController {
*/
@ApiResponse(description = "企业端-执法信息详情")
@GetMapping("/lawDetail")
public AppEnforcementRegistrationVo lawDetail(AppLawEnforcementCaseBo bo) {
return null;
// return appLawEnforcementCaseService.selectAppLawEnforcementLawDetailById(bo);
public R<AppEnforcementRegistrationVo> lawDetail(AppLawEnforcementCaseBo bo) {
AppEnforcementRegistrationVo result = appLawEnforcementCaseService.selectAppLawEnforcementLawDetailById(bo);
return R.ok("获取成功", result);
}
}

2
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EnforcementRegistrationServiceImpl.java

@ -1057,7 +1057,7 @@ public class EnforcementRegistrationServiceImpl implements IEnforcementRegistrat
for (Map.Entry<String, List<EnforcementRegistration>> entry : groupedByNo.entrySet()) {
Map<String, Object> map = new HashMap<>();
for (EnforcementRegistration e : entry.getValue()) {
map.put(e.getId(), e);
map.put(null, e);
}
result.add(map);
}

2
zdxt-web-client/zdxt-efcode-enforcement-app/src/api/enforcement/index.js

@ -52,6 +52,8 @@ export const queryAccordingList = (params, success, error) => _get(baseUrl + "/a
export const queryEnfRegistrationList = (params, success, error) => _get(baseUrl + "/enfRegistration/queryList", params, success, error);
export const queryUnionByHour = (params, success, error) => _get(baseUrl + "/enfRegistration/queryUnionByHour", params, success, error);
// 行政执法保存
export const saveEnfRegistration = (params, success, error) => _post(baseUrl + "/enfRegistration/add", params, success, error);

109
zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/EnforcementInfoSection.vue

@ -88,6 +88,24 @@
<!-- 联合执法选择"是"时显示的内容 -->
<div v-if="formData.jointEnforcement === '1'" class="joint-enforcement-options">
<van-checkbox v-model="formData.isNewJoint">创建新的联合执法</van-checkbox>
<!-- 联合执法列表未选择创建新的联合执法时显示 -->
<div v-if="!formData.isNewJoint" class="union-list-container">
<van-loading v-if="unionLoading" size="20" />
<div v-else-if="unionList.length === 0" class="empty-tip">暂无联合执法数据</div>
<div v-else class="union-list">
<div
v-for="item in unionList"
:key="item.id"
class="union-item"
:class="{ active: formData.uniteCheck === item.id }"
@click="selectUnion(item)"
>
<div class="union-item-title">{{ item.bureauDeptName || '联合执法' }}</div>
<div class="union-item-desc">{{ item.deptTexts || item.lawText || '' }}</div>
</div>
</div>
</div>
</div>
<!-- 隐藏字段用于验证联合执法 -->
<van-field v-model="jointEnforcementValue" name="jointEnforcement"
@ -128,13 +146,15 @@
</template>
<script setup name="EnforcementInfoSection">
import { computed, ref, onMounted } from 'vue';
import { computed, ref, onMounted, watch } from 'vue';
import { showToast } from 'vant';
import { uploadFile } from '@/util/fileUpload';
import {
getEnforcementTimeDateRange,
parseEnforcementTimeToPicker,
buildEnforcementTimeFromPicker,
} from '@/util/enforcementTimePicker';
import { queryUnionByHour } from '@/api/enforcement';
const props = defineProps({
formData: {
@ -148,6 +168,10 @@ const props = defineProps({
additionalPersons: {
type: Array,
default: () => []
},
enterpriseNumber: {
type: String,
default: ''
}
});
@ -170,6 +194,9 @@ const minDate = ref(new Date());
const maxDate = ref(new Date());
let defaultPickerValue = [];
const unionList = ref([]);
const unionLoading = ref(false);
onMounted(() => {
const range = getEnforcementTimeDateRange(10);
minDate.value = range.minDate;
@ -178,6 +205,37 @@ onMounted(() => {
datePickerValue.value = [...range.currentDate];
});
watch(() => props.formData.jointEnforcement, (newVal) => {
if (newVal === '1') {
if (!props.enterpriseNumber) {
showToast('请先选择企业');
props.formData.jointEnforcement = '0';
return;
}
fetchUnionList();
} else {
unionList.value = [];
}
});
const fetchUnionList = () => {
unionLoading.value = true;
queryUnionByHour({ enterpriseNumber: props.enterpriseNumber }, (res) => {
unionLoading.value = false;
if (res && res.data) {
unionList.value = res.data;
}
}, (err) => {
unionLoading.value = false;
console.error('获取联合执法列表失败:', err);
});
};
const selectUnion = (item) => {
props.formData.unionNo = item.unionNo || '';
props.formData.uniteCheck = item.id || '';
};
const openTimePicker = () => {
const parsed = parseEnforcementTimeToPicker(props.formData.enforcementTime);
datePickerValue.value = parsed ? [...parsed] : [...defaultPickerValue];
@ -385,6 +443,55 @@ const onAfterReadImage = (file) => {
.joint-enforcement-options {
padding: 0.32rem;
padding-bottom: 30px;
.union-list-container {
margin-top: 0.24rem;
padding: 0.24rem;
background: #f5f7fa;
border-radius: 0.1rem;
.empty-tip {
text-align: center;
color: #999;
font-size: 14px;
padding: 0.4rem;
}
}
.union-list {
display: flex;
flex-direction: column;
gap: 0.16rem;
}
.union-item {
padding: 0.2rem;
background: #fff;
border-radius: 0.08rem;
border: 1px solid #e8e8e8;
transition: all 0.2s;
&:active {
transform: scale(0.98);
}
&.active {
border-color: #1367fe;
background: rgba(19, 103, 254, 0.05);
}
.union-item-title {
font-size: 14px;
color: #333;
font-weight: 500;
}
.union-item-desc {
font-size: 12px;
color: #999;
margin-top: 0.08rem;
}
}
}
:deep(.van-field__value) {

17
zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/enforce/enforcementRegister.vue

@ -15,6 +15,7 @@
<!-- 执法信息组件行政执法模式 -->
<EnforcementInfoSection v-if="!isNonEnforcement" :form-data="formData"
:default-person="enforcementPersons[0]" :additional-persons="additionalPersons"
:enterprise-number="enterpriseData.enterpriseNumber"
@show-notice-picker="showPopups.notice = true" @open-person-picker="handleOpenPersonPicker"
@remove-person="handleRemovePerson" @show-category-picker="showPopups.category = true"
@show-task-source-picker="showPopups.taskSource = true" @open-basis-picker="handleOpenBasisPicker"
@ -88,6 +89,7 @@ const formData = reactive({
reason: '系统未能有效生成监管码',
enforcementTime: '',
jointEnforcement: '0',
isNewJoint: false,
entrustedEnforcement: '0',
entrustedAgency: '',
entrustedAgencyId: '',
@ -316,6 +318,17 @@ const buildSubmitPayload = () => {
// ID
const lawEnforcementBasis = formData.enforcementBasesIds ? formData.enforcementBasesIds.join(',') : '';
const getCurrentDateTime = () => {
const now = new Date();
const year = now.getFullYear();
const month = String(now.getMonth() + 1).padStart(2, '0');
const day = String(now.getDate()).padStart(2, '0');
const hour = String(now.getHours()).padStart(2, '0');
const minute = String(now.getMinutes()).padStart(2, '0');
const second = String(now.getSeconds()).padStart(2, '0');
return `${year}-${month}-${day} ${hour}:${minute}:${second}`;
};
// payload
if (isNonEnforcement.value) {
//
@ -327,7 +340,7 @@ const buildSubmitPayload = () => {
enterpriseName: enterpriseData.value.enterpriseName || '',
enterpriseNumber: enterpriseData.value.enterpriseNumber || '',
enterpriseAddress: enterpriseData.value.enterpriseAddress || '',
enforcementTime: formData.enforcementTime || '',
enforcementTime: formData.enforcementTime || getCurrentDateTime(),
lawEnforcer: lawEnforcer,
lawEnforcerId: lawEnforcerId,
lawEnforcerTel: lawEnforcerTel,
@ -374,7 +387,7 @@ const buildSubmitPayload = () => {
enterpriseName: enterpriseData.value.enterpriseName || '',
enterpriseNumber: enterpriseData.value.enterpriseNumber || '',
enterpriseAddress: enterpriseData.value.enterpriseAddress || '',
enforcementTime: formData.enforcementTime || '',
enforcementTime: formData.enforcementTime || getCurrentDateTime(),
updateTimeFlag: 0,
fileList: buildFileList(),
fileListObj: formData.fileListObj || [],

2
zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/home/enforcementHome.vue

@ -13,7 +13,7 @@
<div class="notice-bar">
<img src="@/assets/images/icon_notice.png" class="notice-icon" alt="" />
<van-notice-bar v-if="noticeList.length > 0" class="notice-scroll"
:scrollable="noticeList.length > 1 || (noticeList[0]?.title || '').length > 16"
:scrollable="noticeList.length > 0 || (noticeList[0]?.title || '').length > 16"
background="transparent" color="#8c8c8c" :text="noticeText" />
<span v-else class="notice-text">暂无新通知</span>
</div>

Loading…
Cancel
Save