Commit d5aab126 authored by xinzhedeai's avatar xinzhedeai

add:新增接口对接

parent cde37d44
......@@ -20,7 +20,7 @@
</van-search>
</div>
<!-- 功能 -->
<button v-if="userType=='shop'" type="info" class="func_btn" @click="viewDetail"><span>+</span>新增{{clickTab==0?'安全培训':'应急演练'}}</button>
<button v-if="userType!=='shop'" type="info" class="func_btn" @click="viewDetail"><span>+</span>新增{{activeTab==0?'安全培训':'应急演练'}}</button>
<!-- Tab栏 -->
<van-tabs v-model:active="activeTab" @click="clickTab" title-active-color="#1989fa" line-height="2px"
......@@ -43,7 +43,7 @@
<div class="msgTip">
该商家4/5/6月份未进行特种作业培训 5月份未进行培训演练
</div>
<van-cell v-for="item in hazardList" :key="item.id" @click="viewDetail(item.id)">
<van-cell v-for="item in hazardList" :key="item.id" @click="viewDetail(item)">
<div style="width: 100%;position: relative;">
<!-- 第一行:商户名称 -->
<div class="tab1-row1 bold">{{ item.title }}</div>
......
......@@ -50,7 +50,6 @@ window.addEventListener("load", function() {
mounted() {
let params = gemhoUtil.getUrlParams()
console.log(params);
this.merId = params.merId
this.init() // 获取隐患记录
this.getDict4tab1()
this.getDict4tab2()
......@@ -151,25 +150,18 @@ window.addEventListener("load", function() {
this.formData.businessHours = time;
this.showTimePicker = false;
},
viewDetail(item, type) {
viewDetail(item) {
let params = {
id: item.id,
merId: this.merId,
pageName: '_shanghu_home'
id: item.id ||'',
merId: gemhoUtil.getParameter('merId'),
pageName: '_peixun_yanlian'
}
// 这里添加跳转逻辑
if (type === 'YH_XQ') {
params = {
...params,
flag: item.rectificationStatus,
}
} else {
params = {
...params,
flag: 'JC_XQ',
}
let pageUrl = '_peixun_yanlian_detail-anquan.html' // 安全培训详情页面
if (item.exerciseType == '2') { // 跳转应急演练详情
pageUrl = '_peixun_yanlian_detail-yingji.html'
}
let url = gemhoUtil.setParameter('_check_info.html', params)
let url = gemhoUtil.setParameter(pageUrl, params)
gemhoUtil.navigatePage(url, '跳转中...')
},
getList() {
......@@ -185,7 +177,6 @@ window.addEventListener("load", function() {
interfacePrivateKey: API_KEY_MAP['page']['privateKey'],
reqParams: {
sign: 30,
merId: this.merId,
title: this.title,
exerciseType: this.activeTab + 1,
safetyTrainingType: this.activeTab == 1 ? 0 : this.subActiveTab,
......
......@@ -337,4 +337,19 @@ body {
/* 可选:统一背景色 */
background-color: white;
}
\ No newline at end of file
.form-label-div {
height: 50px;
line-height: 50px;
padding: 0 12px;
font-size: .28rem;
font-weight: 500;
margin-bottom: -.3rem;
}
.img-wrapper {
display: flex;
gap: .16rem;
margin-top: 0.25rem;
margin-bottom: 0.15rem;
}
\ No newline at end of file
......@@ -9,6 +9,10 @@
<!-- 在 includeHead.js 之后添加环境判断 -->
<script src="../sdk/includeHead.js"></script>
<script type="text/javascript" src="../sdk/axios_http3.js"></script>
<script>
alert(http2)
</script>
</head>
<body>
<div id="app" class="page_wrapper" v-cloak>
......@@ -19,7 +23,7 @@
<div class="form-item">
<span class="form-label title_require">培训标题</span>
<div class="form-input-wrap">
<input type="text" v-model="formData.contactName" :disabled="flag=='XQ'" class="form-input"
<input type="text" v-model="formData.title" :disabled="flag=='XQ'" class="form-input"
placeholder="">
</div>
</div>
......@@ -27,8 +31,8 @@
<div class="form-item">
<span class="form-label title_require">培训演练类别</span>
<div class="form-input-wrap">
<select class="selector" v-model="formData.industryType" :disabled="flag=='XQ'">
<option v-for="(item, i) in 10" :key="i" :label="item.industryName" :value="item.id">
<select class="selector" v-model="formData.safetyTrainingType" :disabled="flag=='XQ'">
<option v-for="(item, i) in tabList4lv2" v-if="item.dictValue!='0'" :key="i" :label="item.dictLabel" :value="item.dictValue">
</option>
</select>
</div>
......@@ -36,14 +40,14 @@
<div class="form-item">
<span class="form-label title_require">培训人数(人)</span>
<div class="form-input-wrap">
<input type="text" v-model="formData.contactDetails" :disabled="flag=='XQ'"
<input type="text" v-model="formData.participantsNum" :disabled="flag=='XQ'"
class="form-input" placeholder="">
</div>
</div>
<div class="form-item">
<span class="form-label title_require">负责人</span>
<div class="form-input-wrap">
<input type="text" v-model="formData.contactDetails" :disabled="flag=='XQ'"
<input type="text" v-model="formData.responsiblePerson" :disabled="flag=='XQ'"
class="form-input" placeholder="">
</div>
</div>
......@@ -53,7 +57,7 @@
<span class="form-label title_require">培训日期</span>
<div class="form-input-wrap">
<van-field readonly v-model="formData.date" :disabled="flag=='XQ'" placeholder=""
<van-field readonly v-model="formData.exerciseDate" :disabled="flag=='XQ'" placeholder=""
class="form-input" @click="showDatePickerModal" />
</div>
......@@ -74,17 +78,16 @@
</div>
</div> -->
<!-- 详情模式 -->
<div class="img-wrapper" style="display: flex;gap:.16rem; margin-top: 0.25rem;
margin-bottom: 0.15rem;">
<div class="form-label title_require">培训照片</div>
<div style="position: relative;" v-for="(imgItem, index) in formData.floorPlanPhotos">
<div class="form-label form-label-div">培训照片</div>
<div class="img-wrapper">
<div style="position: relative;" v-for="(imgItem, index) in formData.images">
<img :src="previewUrl + imgItem" style="width: 1.6rem; height: 1.6rem;"
@click="showImage(formData.floorPlanPhotos, index)" />
@click="showImage(formData.images, index)" />
<div v-if="flag=='XG'" class="van-uploader__preview-delete"
@click="handleDeleteFloorPlan(index, 'floorPlan')"><i
class="van-icon van-icon-cross van-uploader__preview-delete-icon"></i></div>
</div>
<div v-if="formData.floorPlanPhotos.length<6 && flag=='ADD' ">
<div v-if="formData.images.length<6 && flag=='ADD' ">
<van-uploader :before-read="beforeRead" :after-read="(file) => afterRead(file, 'floorPlan')"
class="uploader-wrapper" :deletable="false" :preview-image="false"
>
......
......@@ -15,11 +15,12 @@ window.addEventListener("load", function () {
showDatePicker: false, // 控制日期选择器显示
minDate: new Date(gemhoUtil.getTargetDateYMD()), // 最小可选日期
maxDate: new Date(2099, 11, 31), // 最大可选日期
tabList4lv2:[],
// 日期选择的最小范围,这里设置为当前日期的前 10 年
// maxDate: new Date(new Date().getFullYear() + 10, 11),
// 新增以下数据
formData: {
floorPlanPhotos: '',
images: [],
submitDate: gemhoUtil.getTargetDateYMD(),
createDate: gemhoUtil.getTargetDateYMD(),
date: gemhoUtil.getTargetDateYMD(),
......@@ -41,11 +42,44 @@ window.addEventListener("load", function () {
}else{
this.flag = 'ADD'
}
this.getDict4tab2()
},
methods: {
getDict4tab2() {
http2.post({
serviceId: API_KEY_MAP["page"]['id'],
interfacePublicKey: API_KEY_MAP["page"]["publicKey"],
interfacePrivateKey: API_KEY_MAP["page"]["privateKey"],
reqParams: {
page: 1,
size: 9999,
sign: 15,
dictType: 'safety_training_category'
}
}, (res) => {
if (!res) { // 中台返回为undefined 重新请求
vant.Toast.clear()
setTimeout(() => {
this.getDict4businessType()
}, 0);
return
}
if (res) {
console.log('接口回调数据=生产经营类型', JSON.parse(res))
setTimeout(() => {
this.$nextTick(() => {
vant.Toast.clear()
})
}, 0);
var result = JSON.parse(res)
this.tabList4lv2 = result.rows
}
})
},
// 处理平面图删除
handleDeleteFloorPlan(index, type) {
this.formData.floorPlanPhotos.splice(index, 1);
this.formData.images.splice(index, 1);
},
beforeRead(file) {
if(!['image/png','image/jpeg','image/jpg'].includes(file.type)){
......@@ -65,7 +99,6 @@ window.addEventListener("load", function () {
return true;
},
afterRead(file, type) { // 调用爱山东中台系统,将数据流传递过去
alert(type)
vant.Toast.loading({
message: '正在处理...',
forbidClick: true,
......@@ -93,7 +126,7 @@ window.addEventListener("load", function () {
.then(value => {
console.log(value, 'value图片上********'); // 处理后端返回的数据
if(value){ // 返回信息不为空,则进行解密操作
this.formData.floorPlanPhotos.push(value.fileName)
this.formData.images.push(value.fileName)
// 可根据后端返回的数据做进一步处理,如显示上传成功信息等
setTimeout(() => {
vant.Toast.clear()
......@@ -133,7 +166,7 @@ window.addEventListener("load", function () {
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0');
const day = String(date.getDate()).padStart(2, '0');
this.formData.date = `${year}-${month}-${day}`;
this.formData.exerciseDate = `${year}-${month}-${day}`;
this.showDatePicker = false;
},
......@@ -144,31 +177,31 @@ window.addEventListener("load", function () {
},
submitForm() {
if (!this.formData.content) {
if (!this.formData.title) {
vant.Dialog.alert({
message: '培训标题不可为空',
})
return;
}
if (!this.formData.content) {
if (!this.formData.safetyTrainingType) {
vant.Dialog.alert({
message: '培训演练类别不可为空',
})
return;
}
if (!this.formData.content) {
if (!this.formData.participantsNum) {
vant.Dialog.alert({
message: '培训人数不可为空',
})
return;
}
if (!this.formData.content) {
if (!this.formData.responsiblePerson) {
vant.Dialog.alert({
message: '培训人不可为空',
})
return;
}
if (!this.formData.content) {
if (!this.formData.images.length) {
vant.Dialog.alert({
message: '图片不可为空',
})
......@@ -180,15 +213,16 @@ window.addEventListener("load", function () {
loadingType: 'spinner',
});
var reqParam = {
merId: this.merId,
merId: gemhoUtil.getParameter('merId'),
exerciseType: '1', // 安全培训
...this.formData,
}
// var url = "/gq/checkRecord/safeCheckRecord"
http3.post('/gq/consumer', reqParam).then((res) => {
reqParam.images = this.formData.images.join(',')
http3.post('/gaoqu/exercise', reqParam).then((res) => {
console.log('添加结果', res)
vant.Toast({
message: '操作成功',
message: res.code === 200 ? '操作成功': '操作失败',
})
location.reload()
})
......@@ -207,14 +241,15 @@ window.addEventListener("load", function () {
interfacePublicKey: API_KEY_MAP['no-page']['publicKey'],
interfacePrivateKey: API_KEY_MAP['no-page']['privateKey'],
reqParams: {
sign: 11,
sign: 31,
pageNum: this.page++, // 每次请求增加下一页
pageSize: this.size,
merId: this.merId,
exerciseId: this.id,
sort: 'lawId,desc',
},
},
(res) => {
console.log('res', JSON.parse(res))
if (!res) {
// 中台返回为undefined 重新请求
vant.Toast.clear()
......@@ -225,7 +260,13 @@ window.addEventListener("load", function () {
}
if (res) {
var result = JSON.parse(res)
this.formData = { ...this.formData, ...result.data }
// 图片数据结构处理
let tempData = result.data
if(tempData['images']){
tempData['images'] = tempData['images'] ? tempData['images'].split(',') : []
}
this.formData = tempData
}
}
)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment