0527
This commit is contained in:
parent
a43b0f904e
commit
774246bdcc
@ -68,3 +68,17 @@ export function fastCreateSchoolCourseOrder(data) {
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
export function getContractDetail(userId) {
|
||||
return request({
|
||||
url: '/system/driveSchool/contract/getContractByUserId?userId=' + userId,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
export function getStudentDetail(userId) {
|
||||
return request({
|
||||
url: '/base/dl-drive-school-student/getByUserId?id=' + userId,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
@ -70,6 +70,12 @@
|
||||
<dict-tag :type="DICT_TYPE.DRIVE_SCHOOL_PAY_TYPE" :value="scope.row.payType"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="信息" align="center" class-name="small-padding fixed-width">
|
||||
<template v-slot="scope">
|
||||
<el-button size="mini" type="text" icon="el-icon-edit" @click="viewStudentInfo(scope.row)">学员信息</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-edit" @click="viewContract(scope.row)">合同信息</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template v-slot="scope">
|
||||
<el-button size="mini" type="text" icon="el-icon-edit" @click="openForm(scope.row.id)">修改</el-button>
|
||||
@ -80,6 +86,251 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- <el-dialog title="合同信息" :visible.sync="viewFlag" width="65%" append-to-body>
|
||||
<div
|
||||
style="box-sizing: border-box; padding: 15px; overflow: hidden"
|
||||
v-html="content"
|
||||
></div>
|
||||
<div style="text-align: right;" v-if="userUrl">
|
||||
<el-image
|
||||
:src="baseImageUrl + userUrl"
|
||||
fit="cover"
|
||||
:preview-src-list="[baseImageUrl + userUrl]"
|
||||
lazy
|
||||
alt="身份证照片"
|
||||
/>
|
||||
</div>
|
||||
</el-dialog>-->
|
||||
|
||||
<el-dialog
|
||||
title="合同信息"
|
||||
:visible.sync="viewFlag"
|
||||
width="65%"
|
||||
append-to-body
|
||||
v-if="hasContract"
|
||||
>
|
||||
<div style="box-sizing: border-box; padding: 15px; overflow: hidden" v-html="content"></div>
|
||||
<div style="text-align: right; margin-top: 15px;" v-if="userUrl">
|
||||
<el-image
|
||||
:src="baseImageUrl + userUrl"
|
||||
fit="cover"
|
||||
:preview-src-list="[baseImageUrl + userUrl]"
|
||||
lazy
|
||||
alt="身份证照片"
|
||||
/>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<!-- 无合同信息的提示弹窗 -->
|
||||
<el-dialog
|
||||
title="提示"
|
||||
:visible.sync="viewFlag"
|
||||
width="300px"
|
||||
append-to-body
|
||||
v-else
|
||||
>
|
||||
<div style="text-align: center; padding: 20px 0; color: #999;">
|
||||
暂无合同信息
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog :title="studentDialog.title" :visible.sync="studentDialog.visible" width="45%" v-dialogDrag append-to-body>
|
||||
<el-form ref="formRef" :model="studentDialog.studentInfo" v-loading="studentDialog.loading" label-width="100px">
|
||||
<el-form-item label="头像" prop="avatar">
|
||||
<el-image
|
||||
v-if="studentDialog.studentInfo.avatar"
|
||||
:src=" baseImageUrl + studentDialog.studentInfo.avatar"
|
||||
style="width: 100px; height: 100px; border-radius: 50%;"
|
||||
fit="cover"
|
||||
/>
|
||||
<el-avatar v-else icon="el-icon-user-solid" :size="100" />
|
||||
</el-form-item>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="姓名" prop="name">
|
||||
<el-input v-model="studentDialog.studentInfo.name" placeholder="请输入姓名" :disabled="true"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="年龄" prop="age">
|
||||
<el-input v-model="studentDialog.studentInfo.age" placeholder="请输入年龄" :disabled="true"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="性别" prop="sex">
|
||||
<el-radio-group v-model="studentDialog.studentInfo.sex" disabled>
|
||||
<el-radio v-for="dict in this.getDictDatas(DICT_TYPE.SYSTEM_USER_SEX)"
|
||||
:key="dict.value" :label="dict.value">{{ dict.label }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="联系电话" prop="phone">
|
||||
<el-input v-model="studentDialog.studentInfo.phone" placeholder="请输入联系电话" :disabled="true"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="身份证号" prop="idCard">
|
||||
<el-input v-model="studentDialog.studentInfo.idCard" placeholder="请输入身份证号" :disabled="true"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="工作单位" prop="workName">
|
||||
<el-input v-model="studentDialog.studentInfo.workName" placeholder="请输入工作单位" :disabled="true"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="户籍地址" prop="registAddress">
|
||||
<el-input v-model="studentDialog.studentInfo.registAddress" placeholder="请输入户籍地址" :disabled="true"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="家庭住址" prop="address">
|
||||
<el-input v-model="studentDialog.studentInfo.address" placeholder="请输入家庭住址" :disabled="true"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input type="textarea" v-model="studentDialog.studentInfo.remark" placeholder="请输入备注" :disabled="true"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<!-- <el-form-item label="证件照" prop="idPhoto">
|
||||
<div style="display: flex; flex-wrap: wrap; gap: 10px;">
|
||||
<el-image
|
||||
v-for="(photo, index) in getPhotoList(studentDialog.studentInfo.idPhoto)"
|
||||
:key="index"
|
||||
:src="baseImageUrl + photo"
|
||||
style="width: 200px; height: 150px;"
|
||||
:preview-src-list="getPhotoPreviewList(studentDialog.studentInfo.idPhoto)"
|
||||
fit="contain"
|
||||
/>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="生活照" prop="lifePhoto">
|
||||
<div style="display: flex; flex-wrap: wrap; gap: 10px;">
|
||||
<el-image
|
||||
v-for="(photo, index) in getPhotoList(studentDialog.studentInfo.lifePhoto)"
|
||||
:key="'life-'+index"
|
||||
:src="baseImageUrl + photo"
|
||||
style="width: 200px; height: 150px;"
|
||||
:preview-src-list="getPhotoPreviewList(studentDialog.studentInfo.lifePhoto)"
|
||||
fit="contain"
|
||||
/>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="其他照片" prop="otherPhoto">
|
||||
<div style="display: flex; flex-wrap: wrap; gap: 10px;">
|
||||
<el-image
|
||||
v-for="(photo, index) in getPhotoList(studentDialog.studentInfo.otherPhoto)"
|
||||
:key="'other-'+index"
|
||||
:src="baseImageUrl + photo"
|
||||
style="width: 200px; height: 150px;"
|
||||
:preview-src-list="getPhotoPreviewList(studentDialog.studentInfo.otherPhoto)"
|
||||
fit="contain"
|
||||
/>
|
||||
</div>
|
||||
</el-form-item>-->
|
||||
<!-- <el-form-item label="体检报告" prop="examinationReport">
|
||||
<div style="display: flex; flex-wrap: wrap; gap: 10px;">
|
||||
<el-image
|
||||
v-for="(photo, index) in getPhotoList(studentDialog.studentInfo.examinationReport)"
|
||||
:key="'exam-'+index"
|
||||
:src="baseImageUrl + photo"
|
||||
style="width: 200px; height: 150px;"
|
||||
:preview-src-list="getPhotoPreviewList(studentDialog.studentInfo.examinationReport)"
|
||||
fit="contain"
|
||||
/>
|
||||
</div>
|
||||
</el-form-item>-->
|
||||
<el-form-item label="证件照" prop="idPhoto">
|
||||
<div style="display: flex; flex-wrap: wrap; gap: 10px;">
|
||||
<template v-if="getPhotoList(studentDialog.studentInfo.idPhoto).length > 0">
|
||||
<el-image
|
||||
v-for="(photo, index) in getPhotoList(studentDialog.studentInfo.idPhoto)"
|
||||
:key="'id-'+index"
|
||||
:src="baseImageUrl + photo"
|
||||
style="width: 200px; height: 150px;"
|
||||
:preview-src-list="getPhotoPreviewList(studentDialog.studentInfo.idPhoto)"
|
||||
fit="contain"
|
||||
/>
|
||||
</template>
|
||||
<template v-else>
|
||||
<div style="color: #999;">暂无图片</div>
|
||||
</template>
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="生活照" prop="lifePhoto">
|
||||
<div style="display: flex; flex-wrap: wrap; gap: 10px;">
|
||||
<template v-if="getPhotoList(studentDialog.studentInfo.lifePhoto).length > 0">
|
||||
<el-image
|
||||
v-for="(photo, index) in getPhotoList(studentDialog.studentInfo.lifePhoto)"
|
||||
:key="'life-'+index"
|
||||
:src="baseImageUrl + photo"
|
||||
style="width: 200px; height: 150px;"
|
||||
:preview-src-list="getPhotoPreviewList(studentDialog.studentInfo.lifePhoto)"
|
||||
fit="contain"
|
||||
/>
|
||||
</template>
|
||||
<template v-else>
|
||||
<div style="color: #999;">暂无图片</div>
|
||||
</template>
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="其他照片" prop="otherPhoto">
|
||||
<div style="display: flex; flex-wrap: wrap; gap: 10px;">
|
||||
<template v-if="getPhotoList(studentDialog.studentInfo.otherPhoto).length > 0">
|
||||
<el-image
|
||||
v-for="(photo, index) in getPhotoList(studentDialog.studentInfo.otherPhoto)"
|
||||
:key="'other-'+index"
|
||||
:src="baseImageUrl + photo"
|
||||
style="width: 200px; height: 150px;"
|
||||
:preview-src-list="getPhotoPreviewList(studentDialog.studentInfo.otherPhoto)"
|
||||
fit="contain"
|
||||
/>
|
||||
</template>
|
||||
<template v-else>
|
||||
<div style="color: #999;">暂无图片</div>
|
||||
</template>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="体检报告" prop="examinationReport">
|
||||
<div style="display: flex; flex-wrap: wrap; gap: 10px;">
|
||||
<template v-if="getPhotoList(studentDialog.studentInfo.examinationReport).length > 0">
|
||||
<el-image
|
||||
v-for="(photo, index) in getPhotoList(studentDialog.studentInfo.examinationReport)"
|
||||
:key="'exam-' + index"
|
||||
:src="baseImageUrl + photo"
|
||||
style="width: 200px; height: 150px;"
|
||||
:preview-src-list="getPhotoPreviewList(studentDialog.studentInfo.examinationReport)"
|
||||
fit="contain"
|
||||
/>
|
||||
</template>
|
||||
<template v-else>
|
||||
<div style="color: #999;">暂无图片</div>
|
||||
</template>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-dialog>
|
||||
|
||||
<!-- 分页组件 -->
|
||||
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
|
||||
@pagination="getList"/>
|
||||
@ -133,6 +384,21 @@ export default {
|
||||
coachUserName: null,
|
||||
isSign: null,
|
||||
},
|
||||
// 控制合同查看对话框显示
|
||||
viewFlag: false,
|
||||
// 合同内容
|
||||
content: "",
|
||||
// 用户身份证照片URL
|
||||
userUrl: "",
|
||||
hasContract: false,
|
||||
baseImageUrl: "http://122.51.230.86:9000/",
|
||||
studentDialog: {
|
||||
visible: false,
|
||||
title: '学员信息详情',
|
||||
loading: false,
|
||||
// 学员信息
|
||||
studentInfo: {}
|
||||
}
|
||||
};
|
||||
},
|
||||
created() {
|
||||
@ -176,6 +442,57 @@ export default {
|
||||
openEndOrder(data) {
|
||||
this.$refs["endOrderRef"].open(data);
|
||||
},
|
||||
getPhotoList(photoStr) {
|
||||
if (!photoStr) return [];
|
||||
return photoStr.split(',').map(item => item.trim());
|
||||
},
|
||||
|
||||
// 生成预览列表(带完整URL)
|
||||
getPhotoPreviewList(photoStr) {
|
||||
if (!photoStr) return [];
|
||||
return photoStr.split(',').map(item => this.baseImageUrl + item.trim());
|
||||
},
|
||||
/* async viewContract(row) {
|
||||
try {
|
||||
this.loading = true;
|
||||
// 假设有一个获取合同详情的API
|
||||
const response = await SchoolCourseOrderApi.getContractDetail(row.userId);
|
||||
this.content = response.data.content; // 合同内容
|
||||
this.userUrl = response.data.userUrl; // 用户身份证照片
|
||||
this.viewFlag = true; // 显示对话框
|
||||
} finally {
|
||||
this.loading = false;
|
||||
}
|
||||
}, */
|
||||
async viewContract(row) {
|
||||
try {
|
||||
this.loading = true;
|
||||
const response = await SchoolCourseOrderApi.getContractDetail(row.userId);
|
||||
this.content = response.data.content || "";
|
||||
this.userUrl = response.data.userUrl || "";
|
||||
this.hasContract = !!this.content; // 如果有内容,标记为 true
|
||||
} catch (error) {
|
||||
this.content = "";
|
||||
this.userUrl = "";
|
||||
this.hasContract = false;
|
||||
} finally {
|
||||
this.viewFlag = true;
|
||||
this.loading = false;
|
||||
}
|
||||
},
|
||||
async viewStudentInfo(row) {
|
||||
this.studentDialog.visible = true
|
||||
this.studentDialog.loading = true
|
||||
|
||||
try {
|
||||
// 这里调用API获取学员详细信息
|
||||
const res = await SchoolCourseOrderApi.getStudentDetail(row.userId)
|
||||
this.studentDialog.studentInfo = res.data
|
||||
console.log('res',res.data)
|
||||
} finally {
|
||||
this.studentDialog.loading = false
|
||||
}
|
||||
},
|
||||
/** 删除按钮操作 */
|
||||
async handleDelete(row) {
|
||||
const id = row.id;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user