5 changed files with 818 additions and 2 deletions
@ -0,0 +1,64 @@ |
|||
<template> |
|||
<div class="header_body"> |
|||
<header-nav |
|||
:slefBack="true" |
|||
@goBack="goBack" |
|||
> |
|||
</header-nav> |
|||
</div> |
|||
<div class="m-pdf"> |
|||
<div id="pdf-content"></div> |
|||
</div> |
|||
</template> |
|||
<script > |
|||
import Pdfh5 from "pdfh5"; |
|||
import "pdfh5/css/pdfh5.css"; |
|||
export default { |
|||
name: "Pdfh5", |
|||
data() { |
|||
return { |
|||
pdfh5: null, |
|||
// 可引入网络文件或者本地文件 |
|||
pdfUrl: "http://192.168.110.36:85/profile/upload/2024/03/29/40eb1a97ca27c3369370e90632d92db0.pdf", // 如果引入本地pdf文件,需要将pdf放在public文件夹下,引用时使用绝对路径(/:表示public文件夹) |
|||
}; |
|||
}, |
|||
mounted() { |
|||
console.log("pdf地址",this.$route.query.url) |
|||
this.pdfUrl = this.$route.query.url; |
|||
this.initPdf(); |
|||
}, |
|||
methods: { |
|||
initPdf() { |
|||
// pdfh5实例化时传两个参数:selector选择器,options配置项参数,会返回一个pdfh5实例对象,可以用来操作pdf,监听相关事件 |
|||
// pdfh5 = new Pdfh5(selector, options) goto初始到第几页,logo设置每一页pdf上的水印 |
|||
this.pdfh5 = new Pdfh5("#pdf-content", { |
|||
pdfurl: this.pdfUrl, |
|||
goto: 1, |
|||
// 设置每一页pdf上的水印 |
|||
|
|||
}); |
|||
this.pdfh5.scrollEnable(true); // 允许pdf滚动 |
|||
// 监听pdf准备开始渲染,此时可以拿到pdf总页数 |
|||
this.pdfh5.on("ready", function () { |
|||
console.log("总页数:" + this.totalNum); |
|||
}); |
|||
// 监听pdf加载完成事件,加载失败、渲染成功都会触发 |
|||
this.pdfh5.on("complete", (status, msg, time) => { |
|||
console.log("状态:" + status + ",信息:" + msg + ",耗时:" + time + "毫秒"); |
|||
}); |
|||
}, |
|||
}, |
|||
// 返回 |
|||
goBack(){ |
|||
console.log(11111) |
|||
this.$router.go(-1) |
|||
} |
|||
}; |
|||
</script> |
|||
<style scoped> |
|||
.m-pdf{ |
|||
height: 100%; |
|||
} |
|||
</style> |
|||
|
|||
|
|||
@ -0,0 +1,138 @@ |
|||
<style scoped> |
|||
.scan-area { |
|||
width: 100%; |
|||
height: 680px; |
|||
} |
|||
</style> |
|||
|
|||
<template> |
|||
<div class="scan-area"> |
|||
<qrcode-stream @click="handleClick" :paused="scanPause" :track="paintOutLineAndCenterText" @error="handleError" @camera-on="onCameraOn"> |
|||
<div v-if="!cameraReady"> |
|||
loading... |
|||
</div> |
|||
</qrcode-stream> |
|||
<!-- <audio ref="audioRef" src="/src/assets/Di.mp3"></audio> --> |
|||
</div> |
|||
</template> |
|||
|
|||
<script setup lang="ts"> |
|||
import Vconsole from "vconsole"; |
|||
import { QrcodeStream } from "vue-qrcode-reader"; |
|||
import {ref} from 'vue' |
|||
const audioRef = ref(null); |
|||
const errorInfo = ref(''); |
|||
const cameraReady = ref(false); |
|||
const scanPause = ref(false); |
|||
const reactAngles = ref<any>([]); |
|||
const onCameraOn = function () { |
|||
cameraReady.value = true; |
|||
new Vconsole(); |
|||
} |
|||
const handleError = function (err) { |
|||
errorInfo.value = `[${err.name}]: ` |
|||
if (err.name === 'NotAllowedError') { |
|||
errorInfo.value += '您需要授予相机访问权限' |
|||
} else if (err.name === 'NotFoundError') { |
|||
errorInfo.value = '此设备上没有检测到摄像头'; |
|||
} else if (err.name === 'NotReadableError') { |
|||
errorInfo.value = '相机被占用' |
|||
} else if (err.name === 'NotSupportedError') { |
|||
errorInfo.value = 'secure context required (HTTPS, localhost)' |
|||
} else if (err.name === 'OverconstrainedError') { |
|||
errorInfo.value += '' |
|||
} else if (err.name === 'StreamApiNotSupportedError') { |
|||
errorInfo.value += 'Stream API is not supported in this browser' |
|||
} else if (err.name === 'InsecureContextError') { |
|||
errorInfo.value += 'Camera access is only permitted in secure context. Use HTTPS or localhost rather than HTTP.' |
|||
} else { |
|||
errorInfo.value += err.message |
|||
} |
|||
console.log(errorInfo.value); |
|||
errorInfo.value = ''; |
|||
} |
|||
const created = () =>{ |
|||
new Vconsole(); |
|||
} |
|||
|
|||
const paintOutLineAndCenterText = (detectedCodes, ctx) => { |
|||
// 暂停页面 |
|||
scanPause.value = true; |
|||
// 播放语音 |
|||
// audioRef.value.play(); |
|||
// 画边框和文本 |
|||
reactAngles.value.splice(); |
|||
for (const detectedCode of detectedCodes) { |
|||
// 画边框 |
|||
ctx.lineWidth = 1; |
|||
const [firstPoint, ...otherPoints] = detectedCode.cornerPoints |
|||
ctx.strokeStyle = 'red' |
|||
ctx.beginPath() |
|||
ctx.moveTo(firstPoint.x, firstPoint.y) |
|||
for (const { x, y } of otherPoints) { |
|||
ctx.lineTo(x, y) |
|||
} |
|||
ctx.lineTo(firstPoint.x, firstPoint.y) |
|||
ctx.closePath(); |
|||
ctx.stroke(); |
|||
// 画文字 |
|||
const { boundingBox, rawValue } = detectedCode |
|||
const centerX = boundingBox.x + boundingBox.width / 2 |
|||
const centerY = boundingBox.y + boundingBox.height / 2 |
|||
const fontSize = Math.max(12, (50 * boundingBox.width) / ctx.canvas.width) |
|||
console.log(boundingBox.width, ctx.canvas.width) |
|||
ctx.lineWidth = 2; |
|||
ctx.font = `${fontSize}px sans-serif` |
|||
ctx.textAlign = 'center' |
|||
ctx.strokeStyle = '#35e5a7' |
|||
ctx.strokeText('>', centerX, centerY) |
|||
// 配置矩形内容 |
|||
if (detectedCode.cornerPoints.length==4) { |
|||
reactAngles.value.push({ |
|||
leftTop: {x: firstPoint.x, y:firstPoint.y}, |
|||
rightTop: {x: otherPoints[0].x, y:otherPoints[0].y}, |
|||
rightBottom: {x: otherPoints[1].x, y:otherPoints[1].y}, |
|||
leftBottom: {x: otherPoints[2].x, y:otherPoints[2].y}, |
|||
text: detectedCode.rawValue |
|||
}); |
|||
} |
|||
} |
|||
}; |
|||
// 获取事件的发生位置 |
|||
const getEventPosition = (ev) => { |
|||
var x, y; |
|||
if (ev.layerX || ev.layerX == 0) { |
|||
x = ev.layerX; |
|||
y = ev.layerY; |
|||
} else if (ev.offsetX || ev.offsetX == 0) { // Opera |
|||
x = ev.offsetX; |
|||
y = ev.offsetY; |
|||
} |
|||
return {x: x, y: y}; |
|||
}; |
|||
|
|||
const handleClick = function (event) { |
|||
// 1. 获取点击点的位置 |
|||
var eventPosition = getEventPosition(event); |
|||
// 2. 判断在不在已有的矩形内部,在的话获取二维码解析的结果,并进行业务处理 |
|||
var resolveText = handleClickRectAngle(eventPosition); |
|||
if (resolveText != undefined) { |
|||
alert(resolveText); |
|||
} |
|||
// 3. 业务处理完,如果决定跳转就跳转,不决定跳转的话就关闭暂停 |
|||
scanPause.value = false; |
|||
} |
|||
|
|||
// 判断一个点在不在某个矩形内部的算法,后面可以采取凸包算法,优化判断的实现,不过这里已经能实现了,没必要深究 |
|||
const handleClickRectAngle = function (eventPosition) { |
|||
for (let i = 0; i < reactAngles.value.length; i++) { |
|||
let reactAngle = reactAngles.value[i]; |
|||
if ( ((eventPosition.x >= Math.min(reactAngle.leftTop.x, reactAngle.leftBottom.x)) && (eventPosition.x <= Math.max(reactAngle.rightTop.x, reactAngle.rightBottom.x))) |
|||
&& ((eventPosition.y >= Math.min(reactAngle.leftTop.y, reactAngle.rightTop.y)) && (eventPosition.y <= Math.max(reactAngle.leftBottom.y, reactAngle.rightBottom.y))) |
|||
) { |
|||
return reactAngle.text; |
|||
} |
|||
} |
|||
return undefined; |
|||
} |
|||
</script> |
|||
@ -0,0 +1,215 @@ |
|||
<template> |
|||
<div class="address_edit"> |
|||
<!-- 导航栏 --> |
|||
<div class="header_body"> |
|||
<header-nav :slefBack="true" @goBack="goBack" :titelText="`详情`"></header-nav> |
|||
</div> |
|||
<!-- 中间 --> |
|||
<div> |
|||
<!-- <van-cell-group>--> |
|||
<van-form @failed="onFailed" @submit="submit"> |
|||
<van-field |
|||
v-model="submitData.lawEnforcementCode" |
|||
label="登记编号" |
|||
readonly |
|||
/> |
|||
<van-field |
|||
v-model="submitData.enterpriseName" |
|||
label="企业名称" |
|||
required |
|||
readonly |
|||
:rules="[{ required: true, message: '必填项' }]" |
|||
/> |
|||
<van-field |
|||
v-model="submitData.linkMan" |
|||
label="企业联系人" |
|||
readonly |
|||
/> |
|||
<van-field |
|||
v-model="submitData.linkTel" |
|||
label="联系人电话" |
|||
:rules="[{ validator, message: '请输入正确内容' }]" |
|||
readonly |
|||
/> |
|||
<van-field |
|||
v-model="submitData.checkTime" |
|||
required |
|||
readonly |
|||
label="检查时间" |
|||
:rules="[{ required: true, message: '必填项' }]" |
|||
|
|||
/> |
|||
<van-field |
|||
v-model="submitData.checkItem" |
|||
required |
|||
label="检查事项" |
|||
:rules="[{ required: true, message: '必填项' }]" |
|||
readonly |
|||
/> |
|||
<van-field |
|||
v-model="submitData.checkRequire" |
|||
required |
|||
label="检查要求" |
|||
:rules="[{ required: true, message: '必填项' }]" |
|||
readonly |
|||
/> |
|||
<van-field |
|||
v-model="submitData.lawEnforcement" |
|||
readonly |
|||
label="执法部门" |
|||
:rules="[{ required: true, message: '必填项' }]" |
|||
|
|||
/> |
|||
<van-field |
|||
v-model="submitData.lawEnforcer" |
|||
readonly |
|||
label="执法人员" |
|||
/> |
|||
<van-field |
|||
v-model="submitData.lawEnforcerTwo" |
|||
readonly |
|||
label="执法人员2" |
|||
/> |
|||
<van-field |
|||
v-model="submitData.remark" |
|||
label="备注" |
|||
rows="2" |
|||
autosize |
|||
type="textarea" |
|||
maxlength="50" |
|||
placeholder="请输入备注" |
|||
show-word-limit |
|||
readonly |
|||
/> |
|||
</van-form> |
|||
<!-- </van-cell-group>--> |
|||
</div> |
|||
|
|||
<!-- <div class="warp_body">--> |
|||
<!-- <van-action-bar>--> |
|||
<!-- <van-action-bar-button color="#be99ff" text="保存" @click="submit" />--> |
|||
<!-- </van-action-bar>--> |
|||
<!-- </div>--> |
|||
|
|||
<van-popup v-model:show="data.showLawEnforcerFlag" position="bottom" :style="{ height: '30%' }" /> |
|||
|
|||
<van-popup v-model:show="data.showTimePicker" position="bottom" :style="{ height: '30%' }" > |
|||
<van-date-picker |
|||
type="time" |
|||
@confirm="onConfirm" |
|||
@cancel="data.showTimePicker = false" |
|||
/> |
|||
</van-popup> |
|||
</div> |
|||
</template> |
|||
|
|||
<script setup name="register"> |
|||
|
|||
import {getEnterpriseLawEnforcement} from '../../api/administrative' |
|||
import { reactive, ref } from "vue"; |
|||
|
|||
const router = useRouter(); |
|||
const route = useRoute(); |
|||
let queryaddressId = ref(""); |
|||
const data = reactive({ |
|||
showLawEnforcerFlag:false, |
|||
showTimePicker:false, |
|||
}); |
|||
//保存参数 |
|||
let submitData = reactive({ |
|||
/** 登记编号 */ |
|||
lawEnforcementCode:"", |
|||
/** 企业名称 */ |
|||
enterpriseName:"", |
|||
/** 企业ID */ |
|||
enterpriseId:"", |
|||
/** 企业联系人 */ |
|||
linkMan:"", |
|||
/** 联系人电话 */ |
|||
linkTel:"", |
|||
/** 检查时间 */ |
|||
checkTime:"", |
|||
/** 检查事项 */ |
|||
checkItem:"", |
|||
/** 检查要求 */ |
|||
checkRequire:"", |
|||
/** 执法部门 */ |
|||
lawEnforcement:"", |
|||
/** 执法部门ID */ |
|||
lawEnforcementId:"", |
|||
/** 执法人员 */ |
|||
lawEnforcer:"", |
|||
/** 执法人员ID */ |
|||
lawEnforcerId:"", |
|||
/** 执法人员2 */ |
|||
lawEnforcerTwo:"", |
|||
/** 执法人员ID2 */ |
|||
lawEnforcerIdTwo:"", |
|||
/** 备注 */ |
|||
remark:"", |
|||
}) |
|||
|
|||
const onConfirm = (time) => { |
|||
if(time != null) { |
|||
var times = time.selectedValues; |
|||
submitData.checkTime = times[0] +"-"+ times[1] +"-"+ times[2]; |
|||
} |
|||
data.showTimePicker = false; |
|||
}; |
|||
|
|||
const validator = (val) => /^1[34578]\d{9}$/.test(val); |
|||
|
|||
const onFailed = (errorInfo) => { |
|||
console.log('failed', errorInfo); |
|||
}; |
|||
|
|||
// 返回 |
|||
const goBack = () => { |
|||
router.go(-1); |
|||
}; |
|||
|
|||
//初始化参数,获取扫码的企业统一信用编码 |
|||
onMounted(() =>{ |
|||
getEnterpriseLawEnforcement(route?.query?.id,success =>{ |
|||
//跳转企业二维码地址 |
|||
if(success.success){ |
|||
submitData.lawEnforcementCode = success.data.lawEnforcementCode; |
|||
submitData.lawEnforcement = success.data.lawEnforcement; |
|||
submitData.lawEnforcer = success.data.lawEnforcer; |
|||
submitData.lawEnforcerTwo = success.data.lawEnforcerTwo; |
|||
submitData.checkItem = success.data.checkItem; |
|||
submitData.checkRequire = success.data.checkRequire; |
|||
submitData.enterpriseName = success.data.enterpriseName; |
|||
submitData.linkMan = success.data.linkMan; |
|||
submitData.linkTel = success.data.linkTel; |
|||
submitData.checkTime = success.data.checkTime; |
|||
submitData.remark = success.data.remark; |
|||
} |
|||
},error=>{ |
|||
console.log("登记失败") |
|||
}) |
|||
}) |
|||
|
|||
</script> |
|||
<style lang="less" scoped> |
|||
.address_edit { |
|||
display: flex; |
|||
flex-direction: column; |
|||
height: 100%; |
|||
overflow: hidden; |
|||
background-color: #f4f4f4; |
|||
} |
|||
/* vant4的 Toast 和 Popup 样式冲突,会导致 Toast 变成白底 */ |
|||
.van-popup.van-toast{ |
|||
background: var(--van-toast-background) !important; |
|||
box-sizing: content-box !important; |
|||
/* 下面3条css,影响不大 */ |
|||
transition: all var(--van-duration-fast) !important; |
|||
width: var(--van-toast-default-width) !important; |
|||
max-width: var(--van-toast-max-width) !important; |
|||
} |
|||
.van-popup.van-toast .van-toast__icon{ |
|||
font-size: var(--van-toast-icon-size) !important; |
|||
} |
|||
|
|||
</style> |
|||
@ -0,0 +1,399 @@ |
|||
<template> |
|||
<div class="address_edit"> |
|||
<!-- 导航栏 --> |
|||
<div class="header_body"> |
|||
<header-nav :slefBack="true" @goBack="goBack" :titelText="`执法信息详情`"></header-nav> |
|||
</div> |
|||
<!-- 中间 --> |
|||
<div class="warp_body"> |
|||
<van-form @failed="onFailed" @submit="submit"> |
|||
<van-cell-group> |
|||
<div style="font-size:large" class="zf-name">执法信息</div> |
|||
<van-field |
|||
v-model="submitData.lawEnforcement" |
|||
label="执法部门" |
|||
readonly |
|||
/> |
|||
<van-field |
|||
v-model="submitData.lawEnforcer" |
|||
label="执法人员1" |
|||
readonly |
|||
/> |
|||
<van-field |
|||
v-model="submitData.lawEnforcerTwo" |
|||
label="执法人员2" |
|||
readonly |
|||
placeholder="请选择" |
|||
right-icon="add-o" |
|||
@click="showPopup" |
|||
/> |
|||
<van-field |
|||
v-model="submitData.subsidiaryer" |
|||
label="辅助人员" |
|||
readonly |
|||
placeholder="请选择" |
|||
right-icon="add-o" |
|||
@click="showPopup2" |
|||
/> |
|||
<van-field |
|||
v-model="submitData.lawEnforcementItem" |
|||
required |
|||
label="执法事项" |
|||
:rules="[{ required: true, message: '必填项' }]" |
|||
placeholder="必填 执法事项" |
|||
readonly |
|||
/> |
|||
<van-field |
|||
v-model="submitData.lawEnforcementBasis" |
|||
required |
|||
label="执法依据" |
|||
:rules="[{ required: true, message: '必填项' }]" |
|||
placeholder="必填 执法依据" |
|||
readonly |
|||
/> |
|||
<van-field |
|||
v-model="submitData.reslut" |
|||
required |
|||
label="执法结果" |
|||
:rules="[{ required: true, message: '必填项' }]" |
|||
readonly |
|||
> |
|||
<template #input> |
|||
<div> |
|||
<van-tag :color="data.good">合格</van-tag> |
|||
<van-tag :color="data.bad" style="margin-left: 15px;">不合格</van-tag> |
|||
</div> |
|||
</template> |
|||
</van-field> |
|||
<van-field |
|||
v-model="submitData.remark" |
|||
label="备注" |
|||
rows="2" |
|||
autosize |
|||
type="textarea" |
|||
maxlength="50" |
|||
placeholder="请输入备注" |
|||
show-word-limit |
|||
readonly |
|||
/> |
|||
|
|||
<van-divider class="divdsty" /> |
|||
|
|||
<div class="file-upload"> |
|||
<!-- <div class="file-upload-center"> |
|||
<label>上传附件</label> <span>(不多于9张)</span> |
|||
</div> --> |
|||
<!-- <van-uploader v-model="submitData.fileListObj" accept="" class="file" multiple :max-size="500 * 1024" :after-read="uploadFiles" :before-delete="deleteFile"> |
|||
<template #preview-cover="{ file }"> |
|||
<div class="preview-cover van-ellipsis">{{ file.name }}</div> |
|||
</template> |
|||
</van-uploader> --> |
|||
<div class="zoom"> |
|||
<img |
|||
v-for="(item, index) in imgstr && imgstr.split(',')" |
|||
class="img" |
|||
:src="item" |
|||
alt="预览图片" |
|||
@click="imagePreview(index)" |
|||
/> |
|||
</div> |
|||
</div> |
|||
</van-cell-group> |
|||
|
|||
<van-divider class="divdsty" /> |
|||
|
|||
<van-cell-group> |
|||
<div style="padding-top:10px; font-size:large" class="qy-name">企业信息</div> |
|||
<van-field |
|||
v-model="submitData.enterpriseName" |
|||
required |
|||
label="企业名称" |
|||
:rules="[{ required: true, message: '必填项' }]" |
|||
placeholder="必填 企业名称" |
|||
readonly |
|||
/> |
|||
<van-field |
|||
v-model="submitData.enterpriseNumber" |
|||
required |
|||
label="统一信用码" |
|||
:rules="[{ required: true, message: '必填项' }]" |
|||
placeholder="必填 纳税人识别号" |
|||
readonly |
|||
/> |
|||
</van-cell-group> |
|||
|
|||
<!-- <van-action-bar> |
|||
<van-button round block color="#be99ff" type="info" native-type="submit">提交</van-button> |
|||
</van-action-bar> --> |
|||
</van-form> |
|||
</div> |
|||
<!-- |
|||
<Popup :visible="data.popupVisible" :content="data.popupContent" @close="closePopup" @reciveData="reciveData" /> |
|||
<Popup :visible="data.popupVisible2" :content="data.popupContent2" @close="closePopup" @reciveData="reciveData2" /> --> |
|||
</div> |
|||
</template> |
|||
|
|||
<script setup name="register"> |
|||
|
|||
import { showSuccessToast,showImagePreview } from 'vant'; |
|||
import {queryEnforcementRegistrationById} from '../../api/enforce' |
|||
import { reactive, ref } from "vue"; |
|||
import {uploadFile} from "../../util/fileUpload"; |
|||
//用户筛选弹窗 |
|||
// import Popup from './userFilter.vue'; |
|||
|
|||
const { useMy } = $globalStore |
|||
|
|||
const router = useRouter(); |
|||
//路由参数 |
|||
const route = useRoute(); |
|||
const data = reactive({ |
|||
showLawEnforcerFlag:false, |
|||
currentPage: 1, |
|||
good:"#7FFFD4", |
|||
bad:"#D3D3D3", |
|||
popupVisible: false, |
|||
popupContent: '', |
|||
popupVisible2: false, |
|||
popupContent2: '', |
|||
}); |
|||
// 图片imagelist |
|||
const imgstr = "https://fastly.jsdelivr.net/npm/@vant/assets/cat.jpeg,https://fastly.jsdelivr.net/npm/@vant/assets/cat.jpeg"; |
|||
const imgstrArr = imgstr.split(","); |
|||
//保存参数 |
|||
const submitData = reactive({ |
|||
//执法部门 |
|||
lawEnforcement:"", |
|||
lawEnforcementId:"", |
|||
//执法人员1 |
|||
lawEnforcer:"", |
|||
lawEnforcerId:"", |
|||
//执法人员2 |
|||
lawEnforcerTwo: "", |
|||
lawEnforcerIdTwo: "", |
|||
//辅助人员 |
|||
subsidiaryer: "", |
|||
subsidiaryerId: "", |
|||
//执法事项 |
|||
lawEnforcementItem:"", |
|||
//执法依据 |
|||
lawEnforcementBasis:"", |
|||
//执法结果 |
|||
reslut:0, |
|||
//备注 |
|||
remark:"", |
|||
//企业名称 |
|||
enterpriseName:"", |
|||
//统一信用码 |
|||
enterpriseNumber:"", |
|||
//后台保存图片列表 |
|||
fileList:[], |
|||
//vant组件上传照片列表 |
|||
fileListObj:[], |
|||
}) |
|||
|
|||
const tapGood = () => { |
|||
data.good = "#7FFFD4"; |
|||
data.bad = "#D3D3D3"; |
|||
submitData.reslut = 0; |
|||
} |
|||
const tapBad = () => { |
|||
data.good = "#D3D3D3"; |
|||
data.bad = "#7FFFD4"; |
|||
submitData.reslut = 1; |
|||
} |
|||
const imagePreview = (index) =>{ |
|||
showImagePreview({ |
|||
images:imgstrArr, |
|||
startPosition: index, |
|||
}); |
|||
} |
|||
//3a0096181c184e5aa56f70923680856d$6e74ceda1463c165fd43eeeadce4f7cd |
|||
//初始化参数,获取扫码的企业统一信用编码 |
|||
onMounted(() =>{ |
|||
//查询执法登记信息 |
|||
queryEnforcementRegistrationById(route?.query?.id,success =>{ |
|||
console.log(success.data); |
|||
submitData.enterpriseName = success.data.enterpriseName; |
|||
submitData.enterpriseNumber = success.data.enterpriseNumber; |
|||
submitData.lawEnforcement = success.data.lawEnforcement; |
|||
submitData.lawEnforcementId = success.data.lawEnforcementId; |
|||
submitData.lawEnforcementItem = success.data.lawEnforcementItem; |
|||
submitData.lawEnforcementBasis = success.data.lawEnforcementBasis; |
|||
submitData.lawEnforcerIdTwo = success.data.lawEnforcerIdTwo; |
|||
submitData.lawEnforcer = success.data.lawEnforcer; |
|||
submitData.remark = success.data.remark; |
|||
if(success.data.reslut == 0){ |
|||
data.good = "#7FFFD4"; |
|||
data.bad = "#D3D3D3"; |
|||
}else{ |
|||
data.good = "#D3D3D3"; |
|||
data.bad = "#7FFFD4"; |
|||
} |
|||
},error=>{ |
|||
|
|||
}) |
|||
}) |
|||
|
|||
// 返回 |
|||
const goBack = () => { |
|||
router.go(-1); |
|||
}; |
|||
|
|||
|
|||
|
|||
const uploadFiles = (file) =>{ |
|||
uploadFile(file,(res) =>{ |
|||
console.log(res); |
|||
submitData.fileList.push(res.url) |
|||
console.log(submitData.fileList); |
|||
}); |
|||
|
|||
} |
|||
|
|||
const deleteFile = (file,index) =>{ |
|||
console.log(index); |
|||
submitData.fileListObj.filter((item, indexs) => { |
|||
if (index.index == indexs) { |
|||
submitData.fileListObj.splice(indexs, 1);//splice 删除 |
|||
} |
|||
}); |
|||
submitData.fileList.filter((item, indexs) => { |
|||
if (index.index == indexs) { |
|||
submitData.fileList.splice(indexs, 1);//splice 删除 |
|||
} |
|||
}); |
|||
console.log(submitData.fileList); |
|||
return true; |
|||
} |
|||
|
|||
const submit = () =>{ |
|||
addEnforcementRegistration(submitData,success =>{ |
|||
//跳转首页 |
|||
if(success.success){ |
|||
showSuccessToast('登记成功'); |
|||
router.push({ path: "/home" }); |
|||
} |
|||
},error=>{ |
|||
console.log("登记失败") |
|||
}) |
|||
} |
|||
|
|||
const showPopup = () =>{ |
|||
data.popupVisible = true; |
|||
} |
|||
const showPopup2 = () =>{ |
|||
data.popupVisible2 = true; |
|||
} |
|||
const closePopup = () =>{ |
|||
data.popupVisible = false; |
|||
data.popupVisible2 = false; |
|||
} |
|||
const reciveData = (item) =>{ |
|||
submitData.lawEnforcerTwo = item.userName; |
|||
submitData.lawEnforcerIdTwo = item.userId; |
|||
} |
|||
const reciveData2 = (item) =>{ |
|||
submitData.subsidiaryer = item.userName; |
|||
submitData.subsidiaryerId = item.userId; |
|||
} |
|||
|
|||
</script> |
|||
|
|||
<style lang="less" scoped> |
|||
.address_edit { |
|||
display: flex; |
|||
flex-direction: column; |
|||
height: 100%; |
|||
overflow: hidden; |
|||
background-color: #ebf3fb; |
|||
} |
|||
|
|||
.warp_body { |
|||
margin: 0 3%; |
|||
padding-bottom: 3rem; |
|||
width: 94%; |
|||
height: 100%; |
|||
//border-radius: 0.25rem; |
|||
background-image: linear-gradient(to bottom, #ebf3fb, #fff); |
|||
overflow-y: auto; |
|||
} |
|||
|
|||
.qy-name{ |
|||
font-size: large; |
|||
margin-left: 5%; |
|||
height: 34px; |
|||
margin-top: 0%; |
|||
font-weight: 600; |
|||
} |
|||
.zf-name{ |
|||
font-size: 15px; |
|||
height: 33px; |
|||
background-color: white; |
|||
padding-left: 4%; |
|||
padding-top: 2%; |
|||
font-weight: 600; |
|||
} |
|||
|
|||
/* vant4的 Toast 和 Popup 样式冲突,会导致 Toast 变成白底 */ |
|||
.van-popup.van-toast{ |
|||
background: var(--van-toast-background) !important; |
|||
box-sizing: content-box !important; |
|||
/* 下面3条css,影响不大 */ |
|||
transition: all var(--van-duration-fast) !important; |
|||
width: var(--van-toast-default-width) !important; |
|||
max-width: var(--van-toast-max-width) !important; |
|||
} |
|||
.van-popup.van-toast .van-toast__icon{ |
|||
font-size: var(--van-toast-icon-size) !important; |
|||
} |
|||
|
|||
.divdsty { |
|||
margin: auto; |
|||
width: 100%; |
|||
height: 0.25rem; |
|||
background-color: #f4f4f4; |
|||
border: 0; |
|||
} |
|||
.file-upload{ |
|||
min-height: 4.5rem; |
|||
position: relative; |
|||
} |
|||
.file-upload-center{ |
|||
position: absolute; |
|||
height: 20%; |
|||
top: 10%; |
|||
left: 2%; |
|||
font-size: 0.38rem; |
|||
span { |
|||
font-size: 0.32rem; |
|||
color: rgb(221, 229, 227); |
|||
} |
|||
} |
|||
.file{ |
|||
position: absolute; |
|||
bottom: 10%; |
|||
left: 2%; |
|||
} |
|||
|
|||
.preview-cover { |
|||
position: absolute; |
|||
bottom: 0; |
|||
box-sizing: border-box; |
|||
width: 100%; |
|||
padding: 4px; |
|||
color: #fff; |
|||
font-size: 0.32rem; |
|||
text-align: center; |
|||
background: rgba(0, 0, 0, 0.3); |
|||
} |
|||
.zoom{ |
|||
padding-top: 10px; |
|||
padding-left: 10px; |
|||
img{ |
|||
width: 2rem; |
|||
height: 2rem; |
|||
padding-right: 10px |
|||
} |
|||
} |
|||
</style> |
|||
Loading…
Reference in new issue