392 lines
15 KiB
Vue
392 lines
15 KiB
Vue
<template>
|
||
<view class="min-height bg-main-light p-30">
|
||
<HeaderItem title="司法鉴定预约"/>
|
||
<TitleItem title="基础信息"/>
|
||
<view class="card mt-25 p-30">
|
||
<u-form label-width="160rpx" :label-style="{fontSize: '24rpx'}">
|
||
<u-form-item label="司法鉴定机构" border-bottom @click="showOrg = true">
|
||
<u-input v-model="orgName" border="none" placeholder="请选择司法鉴定机构" readonly>
|
||
<u-icon
|
||
slot="right"
|
||
name="arrow-right"
|
||
></u-icon>
|
||
</u-input>
|
||
</u-form-item>
|
||
<template v-if="formData.orgId">
|
||
<u-form-item label="委托人姓名" border-bottom>
|
||
<u-input v-model="formData.name" border="none" placeholder="请输入委托人姓名"/>
|
||
</u-form-item>
|
||
<u-form-item label="性别" border-bottom>
|
||
<view class="flex justify-start items-center">
|
||
<view class="tag" @click="formData.gender = 0" :class="[formData.gender === 0 ? 'tag-active' : '']">男
|
||
</view>
|
||
<view class="tag ml-20" @click="formData.gender = 1" :class="[formData.gender === 1 ? 'tag-active' : '']">
|
||
女
|
||
</view>
|
||
</view>
|
||
</u-form-item>
|
||
<u-form-item label="联系电话" border-bottom>
|
||
<u-input v-model="formData.phone" border="none" placeholder="请输入联系电话"/>
|
||
</u-form-item>
|
||
<u-form-item label="出生日期" border-bottom @click="showDate = true">
|
||
<u-input v-model="formData.birthday" border="none" placeholder="请输入出生日期" readonly>
|
||
<u-icon
|
||
slot="right"
|
||
name="arrow-right"
|
||
></u-icon>
|
||
</u-input>
|
||
</u-form-item>
|
||
<u-form-item label="身份证号" border-bottom>
|
||
<u-input v-model="formData.idCard" border="none" placeholder="请输入身份证号"/>
|
||
</u-form-item>
|
||
<u-form-item label="住所地址" border-bottom>
|
||
<u-input v-model="formData.liveAddress" border="none" placeholder="请输入住所地址"/>
|
||
</u-form-item>
|
||
<u-form-item label="户籍地址" border-bottom>
|
||
<u-input v-model="formData.householdAddress" border="none" placeholder="请输入户籍地址"/>
|
||
</u-form-item>
|
||
<u-form-item label="基本案情" border-bottom>
|
||
<u-textarea maxlength="-1" v-model="formData.detail" border="none"
|
||
placeholder="请输入与鉴定又关的基本案情"/>
|
||
</u-form-item>
|
||
<template v-if="formData.orgId === 25">
|
||
<u-form-item label="委托鉴定事项" border-bottom>
|
||
<u-textarea maxlength="-1" v-model="formData.content" border="none" placeholder="请输入委托鉴定事项"/>
|
||
</u-form-item>
|
||
<u-form-item label="是否重新鉴定" border-bottom>
|
||
<view class="flex justify-start items-center">
|
||
<view class="tag" style="width: 200rpx" @click="formData.isNew = 0"
|
||
:class="[formData.isNew === 0 ? 'tag-active' : '']">不属于重新鉴定
|
||
</view>
|
||
<view class="tag ml-20" style="width: 200rpx" @click="formData.isNew = 1"
|
||
:class="[formData.isNew === 1 ? 'tag-active' : '']">
|
||
属于重新鉴定
|
||
</view>
|
||
</view>
|
||
</u-form-item>
|
||
</template>
|
||
<template v-else-if="formData.orgId === 26">
|
||
<u-form-item label="委托鉴定事项" border-bottom>
|
||
<view class="flex flex-col justify-start items-start">
|
||
<view v-for="(item, index) in contentConfigList" :key="index" class="mb-15">
|
||
<u-icon @click="changeContent(item)"
|
||
:label="item" label-pos="right"
|
||
:name="contentList.includes(item) ? '/onlineSheetPages/static/checkbox-selected.png' : '/onlineSheetPages/static/checkbox.png'"/>
|
||
</view>
|
||
</view>
|
||
</u-form-item>
|
||
<u-form-item label="鉴定用途" border-bottom>
|
||
<view class="flex flex-col justify-start items-start">
|
||
<view class="mb-15">
|
||
<u-icon label="诉讼" label-pos="right" @click="changeApplication('诉讼')"
|
||
:name="applicationList.includes('诉讼') ? '/onlineSheetPages/static/checkbox-selected.png' : '/onlineSheetPages/static/checkbox.png'"/>
|
||
</view>
|
||
<view class="mb-15">
|
||
<u-icon label="仲裁" label-pos="right" @click="changeApplication('仲裁')"
|
||
:name="applicationList.includes('仲裁') ? '/onlineSheetPages/static/checkbox-selected.png' : '/onlineSheetPages/static/checkbox.png'"/>
|
||
</view>
|
||
<view class="mb-15">
|
||
<u-icon label="调解" label-pos="right" @click="changeApplication('调解')"
|
||
:name="applicationList.includes('调解') ? '/onlineSheetPages/static/checkbox-selected.png' : '/onlineSheetPages/static/checkbox.png'"/>
|
||
</view>
|
||
<u-icon label="行政执法" label-pos="right" @click="changeApplication('行政执法')"
|
||
:name="applicationList.includes('行政执法') ? '/onlineSheetPages/static/checkbox-selected.png' : '/onlineSheetPages/static/checkbox.png'"/>
|
||
</view>
|
||
</u-form-item>
|
||
</template>
|
||
</template>
|
||
</u-form>
|
||
</view>
|
||
<template v-if="formData.orgId">
|
||
<TitleItem title="鉴定要求/标准"/>
|
||
<view class="card mt-25 p-30">
|
||
<view class="flex justify-start items-center py-20 border-bottom"
|
||
@click="changeStandard(item.title)"
|
||
v-for="(item, index) in standardList" :key="index">
|
||
<u-icon
|
||
:name="standardSelectedList.includes(item.title) ? '/onlineSheetPages/static/checkbox-selected.png' : '/onlineSheetPages/static/checkbox.png'"/>
|
||
<text class="text-25 mb-15">{{ item.title }}</text>
|
||
</view>
|
||
</view>
|
||
<TitleItem title="鉴定材料"/>
|
||
<view class="card mt-25 p-30">
|
||
<view class="flex flex-col justify-start items-start py-20 border-bottom"
|
||
v-for="(item, index) in fileList" :key="index">
|
||
<text class="text-25 mb-15">{{ item.title }}</text>
|
||
<view class="flex flex-col justify-start items-start">
|
||
<view class="flex justify-start items-start flex-wrap">
|
||
<view class="album-item pos-r" v-for="(file, fileIndex) in item.fileList" :key="fileIndex">
|
||
<u-image :src="file" width="190rpx" height="190rpx"/>
|
||
<view class="del-wrap" @click="removeFile(index, fileIndex)">
|
||
<u-icon name="trash" color="white" size="30rpx"/>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view>
|
||
<u-button size="mini" @click="uploadFile(index)" type="primary" icon="arrow-upward">上传材料</u-button>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</template>
|
||
<view class="mt-30">
|
||
<u-button type="primary" shape="circle" @click="save"
|
||
:hairline="false"
|
||
:custom-style="{border: 0, background: 'linear-gradient(91.28deg, rgba(14,146,252,1) 27.63%,rgba(29,188,188,1) 80.08%);'}">
|
||
提交
|
||
</u-button>
|
||
</view>
|
||
<u-datetime-picker
|
||
:show="showDate"
|
||
v-model="checkDate"
|
||
mode="date"
|
||
:min-date="minDate"
|
||
@confirm="selectDate"
|
||
@cancel="showDate = false"
|
||
/>
|
||
<u-picker :show="showOrg" :columns="[orgList]" @cancel="showOrg = false"
|
||
@confirm="selectOrg" key-name="title"
|
||
/>
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
import HeaderItem from "@/components/HeaderItem.vue";
|
||
import TitleItem from "@/components/TitleItem.vue";
|
||
import dayjs from "dayjs";
|
||
import {
|
||
lawLegalAidReq,
|
||
lawLegalAppraisalReq,
|
||
lawLegalArbitrateReq,
|
||
lawOrgCheckActionReq,
|
||
listLawOrgReq
|
||
} from "@/api/lawOrg";
|
||
import {chooseImg} from "@/util";
|
||
|
||
export default {
|
||
name: "newRequest",
|
||
components: {TitleItem, HeaderItem},
|
||
data() {
|
||
return {
|
||
formData: {
|
||
name: '',
|
||
gender: 0,
|
||
isNew: 0,
|
||
phone: '',
|
||
birthday: '',
|
||
idCard: '',
|
||
liveAddress: '',
|
||
householdAddress: '',
|
||
content: '',
|
||
orgId: '',
|
||
detail: '',
|
||
fileList: '',
|
||
standard: '',
|
||
},
|
||
showDate: false,
|
||
showOrg: false,
|
||
orgName: '',
|
||
checkDate: Number(new Date()),
|
||
minDate: dayjs().subtract(100, 'year').valueOf(),
|
||
orgList: [],
|
||
fileList: [],
|
||
standardList: [],
|
||
standardSelectedList: [],
|
||
contentList: [],
|
||
contentConfigList: ['损伤程度鉴定', '致残程度鉴定', '劳动能力鉴定', '护理依赖评定', '听觉功能评定视觉功能评定', '误工、护理、营养时限评定',
|
||
'伤病关系鉴定', '后续治疗项目和时限评定', '医疗过错评定医疗损害后果评定', '治疗时限评定医疗费合理性评定', '致伤物和致伤方式推',],
|
||
applicationList: [],
|
||
}
|
||
},
|
||
methods: {
|
||
setFileData() {
|
||
switch (this.formData.orgId) {
|
||
case 25 : {
|
||
this.fileList = [
|
||
{
|
||
title: '道路交通事故现场图',
|
||
fileList: []
|
||
},
|
||
{
|
||
title: '现场勘查笔录',
|
||
fileList: []
|
||
},
|
||
{
|
||
title: '现场照片',
|
||
fileList: []
|
||
},
|
||
{
|
||
title: '现场复核照片',
|
||
fileList: []
|
||
},
|
||
{
|
||
title: '询问笔录',
|
||
fileList: []
|
||
},
|
||
{
|
||
title: '相关视频监控资料',
|
||
fileList: []
|
||
},
|
||
{
|
||
title: '行驶证复印件',
|
||
fileList: []
|
||
},
|
||
{
|
||
title: '行驶证复印件、机动车信息查询结果单',
|
||
fileList: []
|
||
},
|
||
{
|
||
title: '其他材料',
|
||
fileList: []
|
||
},
|
||
]
|
||
}
|
||
break;
|
||
case 26 : {
|
||
this.fileList = [
|
||
{
|
||
title: '交通事故责任认定书复印件',
|
||
fileList: []
|
||
},
|
||
{
|
||
title: '身份复印件',
|
||
fileList: []
|
||
},
|
||
{
|
||
title: '病历复印件',
|
||
fileList: []
|
||
},
|
||
{
|
||
title: '放射片',
|
||
fileList: []
|
||
},
|
||
{
|
||
title: '其他材料',
|
||
fileList: []
|
||
},
|
||
]
|
||
}
|
||
break;
|
||
}
|
||
},
|
||
setStandardList() {
|
||
switch (this.formData.orgId) {
|
||
case 25 : {
|
||
this.standardList = [
|
||
{title: '《道路交通事故现场痕迹物证勘验》(GA/T41-2019)'},
|
||
{title: '《道路交通事故痕迹鉴定》(GA/T1087-2021)'},
|
||
{title: '《道路交通事故车辆安全技术检验鉴定》(GA/T642-2020)'},
|
||
{title: '《机动车运行安全技术条件》(GB7258-2017)'},
|
||
{title: '《道路交通事故车辆速度鉴定》(GB/T33195-2016)'},
|
||
{title: '《基于视频图像的车辆行驶速度技术鉴定》(GA/T1133-2014)'},
|
||
{title: '《手印鉴定程序》(GA/T724-2007)'},
|
||
]
|
||
}
|
||
break;
|
||
case 26: {
|
||
this.standardList = [
|
||
{title: '《法医临床检验规范》(SF/T 0111-2021)'},
|
||
{title: '《人身损害护理依赖程度评定》GB/T31147-2014'},
|
||
{title: '《人身伤害致残程度评定(试行)》'},
|
||
{title: '《人体损伤程度鉴定标准》'},
|
||
{title: '《道路交通事故受伤人员治疗终结时间》GA/T 1088-2013'},
|
||
{title: '《人身损害后续诊疗项目评定指南》(试用)/《法庭科学 人身损害后续诊疗项目评定技术规程》'},
|
||
{title: '《人身损害误工期、护理期、营养期评定规范》GA/T1193-2014'},
|
||
{title: '《人身保险伤残评定标准及代码》GB/T 44893-2024'},
|
||
{title: '《劳动能力鉴定 职工工伤与职业病致残等级》GB/T16180-2014'},
|
||
{title: '《人体损伤致残程度分级》'},
|
||
{title: '《人身损害与疾病因果关系判定指南》(SF/T0095 2021)'},
|
||
]
|
||
}
|
||
}
|
||
},
|
||
changeApplication(content) {
|
||
const index = this.applicationList.findIndex(i => i === content)
|
||
if (index === -1) this.applicationList.push(content)
|
||
else this.applicationList.splice(index, 1)
|
||
},
|
||
changeContent(content) {
|
||
const index = this.contentList.findIndex(i => i === content)
|
||
if (index === -1) this.contentList.push(content)
|
||
else this.contentList.splice(index, 1)
|
||
},
|
||
changeStandard(content) {
|
||
const index = this.standardSelectedList.findIndex(i => i === content)
|
||
if (index === -1) this.standardSelectedList.push(content)
|
||
else this.standardSelectedList.splice(index, 1)
|
||
},
|
||
selectDate({value}) {
|
||
this.showDate = false
|
||
this.formData.birthday = dayjs(value).format("YYYY-MM-DD")
|
||
},
|
||
selectOrg({value}) {
|
||
this.formData.orgId = value[0].id
|
||
this.orgName = value[0].title
|
||
this.showOrg = false
|
||
this.setFileData()
|
||
this.setStandardList()
|
||
},
|
||
async save() {
|
||
if (!this.formData.name) return this.$toast('请输入姓名')
|
||
if (!this.formData.phone) return this.$toast('请输入联系方式')
|
||
if (!this.formData.idCard) return this.$toast('请输入身份证号')
|
||
if (!this.formData.orgId) return this.$toast('请选择鉴定机构')
|
||
if (this.formData.orgId === 25 && !this.formData.content) return this.$toast('请输入委托鉴定事项')
|
||
if (!this.formData.detail) return this.$toast('请输入基本案情')
|
||
if (this.standardSelectedList.length) {
|
||
this.formData.standard = this.standardSelectedList.join(',')
|
||
}
|
||
if (this.applicationList.length) {
|
||
this.formData.application = this.applicationList.join(',')
|
||
}
|
||
if (this.formData.orgId === 26){
|
||
if (!this.contentList.length) return this.$toast('请选择鉴定事项')
|
||
else this.formData.content = this.contentList.join(',')
|
||
}
|
||
this.formData.fileList = JSON.stringify(this.fileList)
|
||
const res = await lawLegalAppraisalReq(this.formData)
|
||
if (res) {
|
||
this.$toast('提交成功')
|
||
setTimeout(() => {
|
||
uni.navigateBack()
|
||
}, 500)
|
||
}
|
||
},
|
||
async uploadFile(index) {
|
||
const res = await chooseImg(9)
|
||
this.fileList[index].fileList = [...this.fileList[index].fileList, ...res.map(item => item.path)]
|
||
},
|
||
removeFile(index, fileIndex) {
|
||
this.fileList[index].fileList.splice(fileIndex, 1)
|
||
},
|
||
async getOrgList() {
|
||
const {data} = await listLawOrgReq({
|
||
type: '司法鉴定机构'
|
||
})
|
||
this.orgList = data
|
||
}
|
||
},
|
||
onLoad() {
|
||
this.getOrgList()
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style lang="scss" scoped>
|
||
.tag {
|
||
border: 1px dashed #999;
|
||
padding: 10rpx;
|
||
border-radius: 15rpx;
|
||
color: #999;
|
||
font-size: 25rpx;
|
||
width: 60rpx;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
}
|
||
|
||
.tag-active {
|
||
color: #3c9cff !important;
|
||
border-color: #3c9cff !important;
|
||
}
|
||
</style> |