Compare commits
4 Commits
3f715f361b
...
8ff6b814ad
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8ff6b814ad | ||
| c549fcbe72 | |||
| f0067784fa | |||
| d5cefa31f8 |
@ -3,10 +3,11 @@ import { getRefreshToken } from '@/utils/auth'
|
||||
import service from '@/utils/request'
|
||||
|
||||
// 登录方法
|
||||
export function login(username, password, captchaVerification, socialType, socialCode, socialState) {
|
||||
export function login(username, password, tenantId,captchaVerification, socialType, socialCode, socialState) {
|
||||
const data = {
|
||||
username,
|
||||
password,
|
||||
tenantId,
|
||||
captchaVerification,
|
||||
// 社交相关
|
||||
socialType,
|
||||
|
||||
@ -36,12 +36,13 @@ const user = {
|
||||
Login({ commit }, userInfo) {
|
||||
const username = userInfo.username.trim()
|
||||
const password = userInfo.password
|
||||
const tenantId = userInfo.tenantId
|
||||
const captchaVerification = userInfo.captchaVerification
|
||||
const socialCode = userInfo.socialCode
|
||||
const socialState = userInfo.socialState
|
||||
const socialType = userInfo.socialType
|
||||
return new Promise((resolve, reject) => {
|
||||
login(username, password, captchaVerification, socialType, socialCode, socialState).then(res => {
|
||||
login(username, password, tenantId, captchaVerification, socialType, socialCode, socialState).then(res => {
|
||||
res = res.data;
|
||||
// 设置 token
|
||||
setToken(res)
|
||||
|
||||
1589
src/views/drivingSchool/DriveSchoolFinanceStatistics/index.vue
Normal file
1589
src/views/drivingSchool/DriveSchoolFinanceStatistics/index.vue
Normal file
File diff suppressed because it is too large
Load Diff
@ -14,7 +14,7 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="教练选择" prop="coachUserId">
|
||||
<el-select v-model="formData.coachUserId" placeholder="请选择课程" @change="handleCoachChange()">
|
||||
<el-select v-model="formData.coachUserId" placeholder="请选择教练" @change="handleCoachChange()">
|
||||
<el-option v-for="dict in coachList"
|
||||
:key="dict.userId" :label="dict.name" :value="dict.userId"
|
||||
/>
|
||||
@ -105,7 +105,7 @@ export default {
|
||||
const coachRes = await listCoach()
|
||||
this.coachList = coachRes.data
|
||||
console.log('当前数据', this.coachList);
|
||||
|
||||
|
||||
this.formLoading = false;
|
||||
},
|
||||
/** 提交按钮 */
|
||||
|
||||
@ -31,9 +31,19 @@
|
||||
<el-form-item label="负责教练" prop="coachUserName">
|
||||
<el-input v-model="formData.coachUserName" placeholder="请输入主负责教练姓名" disabled/>
|
||||
</el-form-item>
|
||||
<el-form-item label="订金金额" prop="reserveMoney">
|
||||
<el-input v-model="formData.reserveMoney" placeholder="请输入订金金额"/>
|
||||
</el-form-item>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="订金金额" prop="reserveMoney">
|
||||
<el-input v-model="formData.reserveMoney" placeholder="请输入订金金额"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="尾款" prop="restMoney">
|
||||
<el-input v-model="formData.restMoney" placeholder="请输入尾款"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
@ -138,9 +148,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<el-form-item label="尾款" prop="restMoney">
|
||||
<el-input v-model="formData.restMoney" placeholder="请输入尾款"/>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="8">
|
||||
@ -172,6 +180,10 @@
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-form-item label="订单备注" prop="orderRemark">
|
||||
<el-input type="textarea" v-model="formData.orderRemark" placeholder="请输入订单备注"/>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
@ -226,6 +238,7 @@ export default {
|
||||
passTime: undefined,
|
||||
gradTime: undefined,
|
||||
schemeId: undefined,
|
||||
orderRemark: undefined,
|
||||
},
|
||||
ifEndRadio: [
|
||||
{
|
||||
@ -388,6 +401,7 @@ export default {
|
||||
passTime: undefined,
|
||||
gradTime: undefined,
|
||||
schemeId: undefined,
|
||||
orderRemark: undefined,
|
||||
}
|
||||
this.resetForm('formRef')
|
||||
}
|
||||
|
||||
@ -0,0 +1,432 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<!-- 对话框(添加 / 修改) -->
|
||||
<el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="45%" v-dialogDrag append-to-body>
|
||||
<el-form ref="formRef" :model="formData" :rules="formRules" v-loading="formLoading" label-width="100px">
|
||||
<el-collapse v-model="activeNames">
|
||||
<el-collapse-item title="学员课程情况" name="1">
|
||||
<el-form-item label="订单号" prop="orderNo">
|
||||
<el-input v-model="formData.orderNo" placeholder="请输入订单号" disabled/>
|
||||
</el-form-item>
|
||||
<el-form-item label="用户姓名" prop="userName">
|
||||
<el-input v-model="formData.userName" placeholder="请输入用户姓名" disabled/>
|
||||
</el-form-item>
|
||||
<el-form-item label="用户手机号" prop="userPhone">
|
||||
<el-input v-model="formData.userPhone" placeholder="请输入用户手机号" disabled/>
|
||||
</el-form-item>
|
||||
<el-form-item label="用户身份证号" prop="userNo">
|
||||
<el-input v-model="formData.userNo" placeholder="请输入用户身份证号" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item label="性别" prop="userSex">
|
||||
<el-radio-group v-model="formData.userSex" 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-form-item label="课程名字" prop="courseName">
|
||||
<el-input v-model="formData.courseName" placeholder="请输入课程名字" disabled/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="负责教练" prop="coachUserName">
|
||||
<el-input v-model="formData.coachUserName" placeholder="请输入主负责教练姓名" disabled/>
|
||||
</el-form-item>
|
||||
<el-form-item label="订金金额" prop="reserveMoney">
|
||||
<el-input v-model="formData.reserveMoney" placeholder="请输入订金金额" disabled />
|
||||
</el-form-item>
|
||||
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="毕业时间" prop="gradTime">
|
||||
<el-date-picker clearable v-model="formData.gradTime" type="date" value-format="timestamp"
|
||||
placeholder="请选择毕业时间" disabled
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="拿证时间" prop="passTime">
|
||||
<el-date-picker clearable v-model="formData.passTime" type="date" value-format="timestamp"
|
||||
placeholder="请选择拿证时间" disabled
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-form-item label="是否终止" prop="ifEnd">
|
||||
<el-radio-group v-model="formData.ifEnd" disabled >
|
||||
<el-radio v-for="item in ifEndRadio"
|
||||
:key="item.value" :label="item.value"
|
||||
>{{ item.label }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="终止原因" prop="endReason">
|
||||
<el-input v-model="formData.endReason" placeholder="请输入终止原因" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item label="终止时间" prop="endTime">
|
||||
<el-date-picker clearable v-model="formData.endTime" type="date" value-format="timestamp"
|
||||
placeholder="选择终止时间" disabled
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="订单状态" prop="paymentStatus">
|
||||
<el-select v-model="formData.paymentStatus" placeholder="请选择订单状态" disabled >
|
||||
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.DRIVE_SCHOOL_ORDER_STATUS)"
|
||||
:key="dict.value" :label="dict.label" :value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="是否已面签" prop="isSign">
|
||||
<!-- <el-select v-model="formData.isSign" placeholder="请选择是否已面签">-->
|
||||
<!-- <el-option label="请选择字典生成" :label="item.label" v-for="item in this.getDictDatas(DICT_TYPE.SYSTEM_USER_SEX)"/>-->
|
||||
<!-- </el-select>-->
|
||||
<el-radio-group v-model="formData.isSign" disabled >
|
||||
<el-radio v-for="dict in isSignRadio"
|
||||
:key="dict.value" :label="dict.value"
|
||||
>{{ dict.label }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<!-- <el-form-item label="提成方案" prop="schemeId">
|
||||
<el-select v-model="formData.schemeId" placeholder="请选择提成方案">
|
||||
<el-option
|
||||
v-for="item in schemeList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>-->
|
||||
<div style="display: flex; flex-direction: row; gap: 10px;">
|
||||
<div>
|
||||
<el-form-item label="提成方案" prop="schemeId" >
|
||||
<el-select v-model="formData.schemeId" placeholder="请选择提成方案" disabled style="width: 300px;">
|
||||
<el-option
|
||||
v-for="item in schemeList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
>
|
||||
<div style="display: flex; justify-content: space-between; width: 100%">
|
||||
<span>{{ item.name }}</span>
|
||||
<span style="color: #888; margin-left: 20px;">
|
||||
<span style="color: red;">*科1:</span>{{ item.subject1Deduct }}元,
|
||||
<span style="color: red;">*科2:</span>{{ item.subject2Deduct }}元,
|
||||
<span style="color: red;">*科3:</span>{{ item.subject3Deduct }}元,
|
||||
<span style="color: red;">*科4:</span>{{ item.subject4Deduct }}元,
|
||||
<span style="color: red;">*业务经理:</span>{{ item.subject0Deduct }}元
|
||||
</span>
|
||||
</div>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<span style="color: red">(如果没有合适的方案,请添加)</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<el-form-item label="尾款" prop="restMoney">
|
||||
<el-input v-model="formData.restMoney" placeholder="请输入尾款" disabled />
|
||||
</el-form-item>
|
||||
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="支付类型" prop="payType">
|
||||
<el-select v-model="formData.payType" placeholder="请选择支付类型" disabled >
|
||||
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.DRIVE_SCHOOL_PAY_TYPE)"
|
||||
:key="dict.value" :label="dict.label" :value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="支付渠道" prop="payChannel">
|
||||
<el-select v-model="formData.payChannel" placeholder="请选择支付渠道" disabled >
|
||||
<el-option v-for="dict in this.payChannelList"
|
||||
:key="dict.value" :label="dict.label" :value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="学员是否确认" prop="ifAgree">
|
||||
<el-select v-model="formData.ifAgree" placeholder="请选择学员是否确认" disabled >
|
||||
<el-option v-for="dict in this.ifAgreeList"
|
||||
:key="dict.value" :label="dict.label" :value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-collapse-item>
|
||||
|
||||
<el-collapse-item title="出纳确认" name="2">
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
|
||||
<el-form-item label="是否到账" prop="cashierConfirm" >
|
||||
<el-select v-model="formData.cashierConfirm" placeholder="待确认">
|
||||
<el-option
|
||||
v-for="item in cashierConfirmOption"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="审批意见" prop="cashierConfirmRemark">
|
||||
<el-input type="textarea" v-model="formData.cashierConfirmRemark" placeholder="请输入出纳审批意见" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-collapse-item>
|
||||
</el-collapse>
|
||||
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm" :disabled="formLoading">确 定</el-button>
|
||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<SchemeForm ref="schemeFormRef" @success="fetchSchemeList" />
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import * as SchoolCourseOrderApi from '@/views/drivingSchool/DriveSchoolPay/api'
|
||||
import { getSchemeListByCourseId } from '@/views/drivingSchool/DriveSchoolPay/api'
|
||||
import SchemeForm from '@/views/drivingSchool/schoolCourse/form/schemeForm.vue'
|
||||
|
||||
export default {
|
||||
name: 'cashierConfirmForm',
|
||||
components: {
|
||||
SchemeForm
|
||||
},
|
||||
|
||||
data() {
|
||||
return {
|
||||
// 弹出层标题
|
||||
dialogTitle: '',
|
||||
// 是否显示弹出层
|
||||
dialogVisible: false,
|
||||
// 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||
formLoading: false,
|
||||
// 表单参数
|
||||
formData: {
|
||||
orderNo: undefined,
|
||||
userName: undefined,
|
||||
userPhone: undefined,
|
||||
userNo: undefined,
|
||||
userSex: undefined,
|
||||
courseId: undefined,
|
||||
courseName: undefined,
|
||||
coachUserId: undefined,
|
||||
coachUserName: undefined,
|
||||
reserveMoney: undefined,
|
||||
courseType: undefined,
|
||||
ifEnd: undefined,
|
||||
endReason: undefined,
|
||||
endTime: undefined,
|
||||
paymentStatus: undefined,
|
||||
isSign: undefined,
|
||||
restMoney: undefined,
|
||||
payType: undefined,
|
||||
passTime: undefined,
|
||||
gradTime: undefined,
|
||||
schemeId: undefined,
|
||||
},
|
||||
ifEndRadio: [
|
||||
{
|
||||
label: '是',
|
||||
value: true
|
||||
},
|
||||
{
|
||||
label: '否',
|
||||
value: false
|
||||
}
|
||||
],
|
||||
isSignRadio: [
|
||||
{
|
||||
label: '是',
|
||||
value: 1
|
||||
},
|
||||
{
|
||||
label: '否',
|
||||
value: 0
|
||||
}
|
||||
],
|
||||
payChannelList: [
|
||||
{
|
||||
label: '线下支付',
|
||||
value: '2'
|
||||
},
|
||||
{
|
||||
label: '微信支付',
|
||||
value: '1'
|
||||
}
|
||||
],
|
||||
ifAgreeList: [
|
||||
{
|
||||
label: '未确认',
|
||||
value: '0'
|
||||
},
|
||||
{
|
||||
label: '已同意',
|
||||
value: '1'
|
||||
},
|
||||
{
|
||||
label: '未同意',
|
||||
value: '2'
|
||||
},
|
||||
{
|
||||
label: '非代报名订单',
|
||||
value: null
|
||||
}
|
||||
],
|
||||
cashierConfirmOption:[
|
||||
{
|
||||
value:'0',
|
||||
label:'未到账'
|
||||
},
|
||||
{
|
||||
value:'1',
|
||||
label:'已到账'
|
||||
},
|
||||
],
|
||||
// 表单校验
|
||||
formRules: {},
|
||||
schemeList: [],
|
||||
activeNames: ['2'],
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
/** 打开弹窗 */
|
||||
async open(id) {
|
||||
console.log('id', id)
|
||||
this.dialogVisible = true
|
||||
this.reset()
|
||||
// 修改时,设置数据
|
||||
if (id) {
|
||||
this.formLoading = true
|
||||
try {
|
||||
const res = await SchoolCourseOrderApi.getSchoolCourseOrder(id)
|
||||
this.formData = res.data
|
||||
this.title = '修改驾照报名订单'
|
||||
await this.loadSchemeList(this.formData.courseId);
|
||||
} finally {
|
||||
this.formLoading = false
|
||||
}
|
||||
}
|
||||
this.title = '新增驾照报名订单'
|
||||
},
|
||||
openSchemeDialog() {
|
||||
this.$refs.schemeFormRef.open(null, this.formData.courseId)
|
||||
},
|
||||
async fetchSchemeList() {
|
||||
// 重新拉取方案列表
|
||||
console.log('courseId', this.formData.courseId)
|
||||
const res = await getSchemeListByCourseId(this.formData.courseId)
|
||||
console.log('res', res)
|
||||
this.schemeList = res.data || []
|
||||
},
|
||||
/** 提交按钮 */
|
||||
async submitForm() {
|
||||
// 校验主表
|
||||
await this.$refs['formRef'].validate()
|
||||
// 检查是否选择了提成方案
|
||||
if (!this.formData.schemeId) {
|
||||
try {
|
||||
await this.$confirm('该订单尚未选择提成方案,是否继续?', '提示', {
|
||||
confirmButtonText: '继续',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
// 用户点击继续,继续执行后续操作
|
||||
} catch (error) {
|
||||
// 用户点击取消,不执行操作
|
||||
return
|
||||
}
|
||||
}
|
||||
this.formLoading = true
|
||||
try {
|
||||
const data = this.formData
|
||||
// 修改的提交
|
||||
if (data.id) {
|
||||
await SchoolCourseOrderApi.updateSchoolCourseOrder(data)
|
||||
this.$modal.msgSuccess('修改成功')
|
||||
this.dialogVisible = false
|
||||
this.$emit('success')
|
||||
return
|
||||
}
|
||||
// 添加的提交
|
||||
await SchoolCourseOrderApi.createSchoolCourseOrder(data)
|
||||
this.$modal.msgSuccess('新增成功')
|
||||
this.dialogVisible = false
|
||||
this.$emit('success')
|
||||
} finally {
|
||||
this.formLoading = false
|
||||
}
|
||||
},
|
||||
async loadSchemeList(courseId) {
|
||||
console.log('courseId', courseId)
|
||||
if (!courseId) return;
|
||||
try {
|
||||
const res = await getSchemeListByCourseId(courseId);
|
||||
console.log('res', res)
|
||||
this.schemeList = res.data || [];
|
||||
} catch (error) {
|
||||
this.$message.error('获取提成方案失败');
|
||||
}
|
||||
},
|
||||
async getSchemeListByCourseId(courseId){
|
||||
await SchoolCourseOrderApi.getSchemeListByCourseId(courseId)
|
||||
.then(res => {
|
||||
this.schemeList = res.data
|
||||
})
|
||||
},
|
||||
/** 表单重置 */
|
||||
reset() {
|
||||
this.formData = {
|
||||
orderNo: undefined,
|
||||
userName: undefined,
|
||||
userPhone: undefined,
|
||||
userNo: undefined,
|
||||
userSex: undefined,
|
||||
courseId: undefined,
|
||||
courseName: undefined,
|
||||
coachUserId: undefined,
|
||||
coachUserName: undefined,
|
||||
reserveMoney: undefined,
|
||||
courseType: undefined,
|
||||
ifEnd: undefined,
|
||||
endReason: undefined,
|
||||
endTime: undefined,
|
||||
paymentStatus: undefined,
|
||||
isSign: undefined,
|
||||
restMoney: undefined,
|
||||
payType: undefined,
|
||||
passTime: undefined,
|
||||
gradTime: undefined,
|
||||
schemeId: undefined,
|
||||
}
|
||||
this.resetForm('formRef')
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@ -83,14 +83,110 @@
|
||||
<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">
|
||||
<!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template v-slot="scope">
|
||||
<el-button size="mini" type="text" v-if="scope.row.ifEnd == true">订单已终止</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-edit" @click="openForm(scope.row.id)">修改</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-edit" @click="openAssignmentCoach(scope.row)" v-if="scope.row.paymentStatus == 2 && scope.row.ifAssignmentCoach == 0 && scope.row.ifEnd == false">分配教练</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-close" @click="openEndOrder(scope.row)" v-if="scope.row.paymentStatus == 2 && scope.row.ifEnd == false">终止</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-plus" @click="openAddForm(scope.row)" v-if="scope.row.paymentStatus == 2 && scope.row.ifEnd == true && scope.row.isCreated == false">快速创建订单</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>-->
|
||||
<el-table-column v-if="!showCashierColumnTwo" label="操作" align="center" class-name="small-padding fixed-width" >
|
||||
<template v-slot="scope">
|
||||
<!-- 如果订单已终止,只显示"订单已终止" -->
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
v-if="scope.row.ifEnd == true"
|
||||
disabled
|
||||
>
|
||||
该订单已终止
|
||||
</el-button>
|
||||
|
||||
<!-- 如果订单未终止,显示其他操作按钮 -->
|
||||
<template v-if="scope.row.ifEnd == false">
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-edit"
|
||||
@click="openForm(scope.row.id)"
|
||||
>
|
||||
修改
|
||||
</el-button>
|
||||
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-edit"
|
||||
@click="openAssignmentCoach(scope.row)"
|
||||
v-if="scope.row.paymentStatus == 2 && scope.row.ifAssignmentCoach == 0 && scope.row.ifEnd == false"
|
||||
>
|
||||
分配教练
|
||||
</el-button>
|
||||
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-close"
|
||||
@click="openEndOrder(scope.row)"
|
||||
>
|
||||
终止
|
||||
</el-button>
|
||||
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-delete"
|
||||
@click="handleDelete(scope.row)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
|
||||
<!-- 快速创建订单(仅针对已终止订单) -->
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-plus"
|
||||
@click="openAddForm(scope.row)"
|
||||
v-if="scope.row.ifEnd == true && scope.row.isCreated == false"
|
||||
>
|
||||
快速创建订单
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="showCashierColumn" label="出纳确认" align="center" class-name="small-padding fixed-width" >
|
||||
<template v-slot="scope">
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
v-if="scope.row.ifEnd"
|
||||
disabled
|
||||
>
|
||||
订单已终止
|
||||
</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-plus"
|
||||
@click="openCashierConfirm(scope.row.id)"
|
||||
v-if="scope.row.cashierConfirm !== '1' "
|
||||
>
|
||||
确认收款
|
||||
</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
style="color: RGB(192, 196, 204)"
|
||||
@click="openCashierConfirm(scope.row.id)"
|
||||
v-else-if="scope.row.cashierConfirm == 1 || scope.row.cashierConfirm == '1'"
|
||||
:disabled="true"
|
||||
>
|
||||
已确认
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@ -314,6 +410,7 @@
|
||||
<AssignmentCoach ref="assignmentCoachRef" @success="getList" />
|
||||
<EndOrder ref="endOrderRef" @success="getList" />
|
||||
<SchoolCourseOrderFastAddForm ref="formFastAddRef" @success="getList" />
|
||||
<cashierConfirmForm ref="cashierConfirmRef" @success="getList" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -324,9 +421,11 @@ import AssignmentCoach from "@/views/drivingSchool/DriveSchoolPay/form/assignmen
|
||||
import EndOrder from "@/views/drivingSchool/DriveSchoolPay/form/endOrder.vue";
|
||||
import SchoolCourseOrderFastAddForm from "@/views/drivingSchool/DriveSchoolPay/form/SchoolCourseOrderFastAddForm.vue";
|
||||
import { getSourceUserById } from '@/views/drivingSchool/DriveSchoolPay/api'
|
||||
import CashierConfirmForm from '@/views/drivingSchool/DriveSchoolPay/form/cashierConfirmForm.vue'
|
||||
export default {
|
||||
name: "SchoolCourseOrder",
|
||||
components: {
|
||||
CashierConfirmForm,
|
||||
SchoolCourseOrderFastAddForm,
|
||||
EndOrder,
|
||||
AssignmentCoach,
|
||||
@ -382,6 +481,16 @@ export default {
|
||||
created() {
|
||||
this.getList();
|
||||
},
|
||||
computed: {
|
||||
// 根据角色判断是否显示对应的列
|
||||
showCashierColumn() {
|
||||
// return this.$store.getters.roles.includes('cn')
|
||||
return ['cn', 'jxzjl'].some(role => this.$store.getters.roles.includes(role));
|
||||
},
|
||||
showCashierColumnTwo() {
|
||||
return this.$store.getters.roles.includes('cn')
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
/** 查询列表 */
|
||||
async getList() {
|
||||
@ -420,6 +529,10 @@ export default {
|
||||
openEndOrder(data) {
|
||||
this.$refs["endOrderRef"].open(data);
|
||||
},
|
||||
/** 出纳确认*/
|
||||
openCashierConfirm(data) {
|
||||
this.$refs["cashierConfirmRef"].open(data);
|
||||
},
|
||||
getPhotoList(photoStr) {
|
||||
if (!photoStr) return [];
|
||||
return photoStr.split(',').map(item => item.trim());
|
||||
|
||||
@ -25,7 +25,8 @@ export function getDetailsData(paramsObj) {
|
||||
|
||||
export function getStudentByCoach(paramsObj) {
|
||||
return request({
|
||||
url: '/base/drive-school-staff/pageStaff',
|
||||
// url: '/base/drive-school-staff/pageStaff',
|
||||
url: '/drive/school-course-order/getOrderByCoachId',
|
||||
method: 'GET',
|
||||
params: paramsObj
|
||||
})
|
||||
@ -45,3 +46,38 @@ export function getExamBatchById(id) {
|
||||
method: 'GET'
|
||||
})
|
||||
}
|
||||
|
||||
export function getCoachMoney(params){
|
||||
return request({
|
||||
url: '/drive/school-course-order/getCoachMoney',
|
||||
method: 'GET',
|
||||
params: params
|
||||
})
|
||||
}
|
||||
|
||||
export function getOrderMoneyByCoachId(params){
|
||||
return request({
|
||||
url: '/drive/school-course-order/getOrderMoneyByCoachId',
|
||||
method: 'GET',
|
||||
params: params
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
// 教练提成合计列表
|
||||
export function getCoachTotalCommission(params){
|
||||
return request({
|
||||
url: '/drive/school-commission/getCoachTotalCommission',
|
||||
method: 'GET',
|
||||
params: params
|
||||
})
|
||||
}
|
||||
|
||||
// 教练提成信息列表
|
||||
export function getCommissionListByCoachId(params){
|
||||
return request({
|
||||
url: '/drive/school-commission/getCommissionListByCoachId',
|
||||
method: 'GET',
|
||||
params: params
|
||||
})
|
||||
}
|
||||
|
||||
@ -694,7 +694,16 @@ export default {
|
||||
queryParams.endTime = endTimeStr;
|
||||
console.log('paramsObj', queryParams)
|
||||
getDetailsData(queryParams).then(res => {
|
||||
this.detailsDataList = res.data;
|
||||
if(this.queryParams.timeType === 'all'){
|
||||
this.detailsDataList = res.data;
|
||||
}else if(this.queryParams.timeType === 'month' || this.queryParams.timeType === 'day' || this.queryParams.timeType === 'more'){
|
||||
this.detailsDataList = res.data.sort((a, b) => {
|
||||
const ta = Number(a.timeTotal || 0);
|
||||
const tb = Number(b.timeTotal || 0);
|
||||
return tb - ta; // 倒序:大到小
|
||||
});
|
||||
}
|
||||
|
||||
console.log('initDetailsData', this.detailsDataList)
|
||||
})
|
||||
},
|
||||
|
||||
@ -141,6 +141,28 @@
|
||||
</el-col>
|
||||
</el-row>-->
|
||||
</el-collapse-item>
|
||||
|
||||
<el-collapse-item title="审核信息" name="3">
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="是否通过" prop="financePass">
|
||||
<el-select :disabled="readonly" v-model="formData.financePass" disabled placeholder="待审核">
|
||||
<el-option
|
||||
v-for="item in financePassOption"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="审批意见" prop="financeRemark">
|
||||
<el-input type="textarea" :readonly="readonly" v-model="formData.financeRemark" disabled placeholder="暂无信息"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-collapse-item>
|
||||
</el-collapse>
|
||||
|
||||
</el-form>
|
||||
@ -167,7 +189,7 @@ export default {
|
||||
dialogTitle: "",
|
||||
// 是否显示弹出层
|
||||
dialogVisible: false,
|
||||
activeNames: ['1','2'],
|
||||
activeNames: ['1','2','3'],
|
||||
// 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||
formLoading: false,
|
||||
addressList:[],
|
||||
|
||||
@ -58,7 +58,7 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="累计训练时长" width="120" align="center" prop="trainTime"/>
|
||||
<el-table-column label="更新人" width="120" align="center" prop="updateName"/>
|
||||
<el-table-column label="录入人" width="120" align="center" prop="inputName"/>
|
||||
<el-table-column label="备注" width="90" align="center" prop="remark" show-overflow-tooltip/>
|
||||
<!-- <el-table-column label="财务审核" align="center" prop="financePass">
|
||||
<template v-slot="scope">
|
||||
|
||||
@ -9,6 +9,22 @@ export function getSchoolCommissionPage(params) {
|
||||
})
|
||||
}
|
||||
|
||||
// 根据id获取提成记录详情
|
||||
export function getSchoolCommissionById(id) {
|
||||
return request({
|
||||
url: '/drive/school-commission/get?id=' + id,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
// 出纳确认
|
||||
export function cashierConfirm(data) {
|
||||
return request({
|
||||
url: '/drive/school-commission/cashierConfirm',
|
||||
method: 'put',
|
||||
data: data,
|
||||
})
|
||||
}
|
||||
|
||||
// 财务新增提成记录
|
||||
export function createSchoolCommission(data){
|
||||
return request({
|
||||
|
||||
375
src/views/drivingSchool/driveSchoolExamPass/form/confirmForm.vue
Normal file
375
src/views/drivingSchool/driveSchoolExamPass/form/confirmForm.vue
Normal file
@ -0,0 +1,375 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<!-- 对话框(添加 / 修改) -->
|
||||
<el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="50%" v-dialogDrag append-to-body>
|
||||
<el-form ref="formRef" :model="formData" :rules="formRules" v-loading="formLoading" label-width="100px">
|
||||
<el-collapse v-model="activeNames">
|
||||
<el-collapse-item title="提成情况" name="1">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="教练姓名" prop="coachName">
|
||||
<el-input :readonly="readonly" v-model="formData.coachName" disabled/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="课程名称" prop="courseName">
|
||||
<el-input :readonly="readonly" v-model="formData.courseName" disabled/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="学员姓名" prop="studentName">
|
||||
<el-input :readonly="readonly" v-model="formData.studentName" disabled/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="学员身份证号" prop="studentIdCard">
|
||||
<el-input :readonly="readonly" v-model="formData.studentIdCard" disabled/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="课程类型" prop="courseType">
|
||||
<el-input :readonly="readonly" v-model="formData.courseType" disabled/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="科目" prop="subject">
|
||||
<el-input :readonly="readonly" v-model="formData.subject" disabled/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="提成金额" prop="commissionAmount">
|
||||
<el-input :readonly="readonly" v-model="formData.commissionAmount" disabled/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-collapse-item title="审核信息" name="2">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核人姓名" prop="checkName">
|
||||
<el-input :readonly="readonly" v-model="formData.checkName" disabled/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核日期" prop="createTime">
|
||||
<el-input :readonly="readonly" :value="formattedCreateTime" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="审核意见" prop="checkRemark">
|
||||
<el-input type="textarea" :readonly="readonly" v-model="formData.checkRemark" disabled/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-collapse-item>
|
||||
|
||||
</el-collapse-item>
|
||||
<el-collapse-item title="出纳确认" name="3">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="是否发放" prop="ifPay">
|
||||
<el-select :disabled="readonly" v-model="formData.ifPay" placeholder="待发放">
|
||||
<el-option
|
||||
v-for="item in ifPayOption"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="发放时间" prop="payTime">
|
||||
<el-date-picker :disabled="readonly" clearable v-model="formData.payTime" type="date" value-format="timestamp" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="出纳意见" prop="cashierConfirmRemark">
|
||||
<el-input type="textarea" :disabled="readonly" v-model="formData.cashierConfirmRemark" placeholder="请输入出纳意见" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="证明材料" prop="images" >
|
||||
<image-upload :disabled="readonly" v-model="formData.images" />
|
||||
<!-- <div :class="{ 'upload-disabled': readonly }">
|
||||
<image-upload v-model="formData.images" />
|
||||
</div>-->
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-collapse-item>
|
||||
</el-collapse>
|
||||
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button v-if="!readonly" type="primary" @click="submitForm" :readonly="formLoading">确认发放</el-button>
|
||||
<el-button @click="dialogVisible = false">关 闭</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import * as processApi from '@/views/drivingSchool/process/api';
|
||||
import * as SchoolCommissionApi from "../api/pass";
|
||||
import { cashierConfirm } from '../api/pass'
|
||||
export default {
|
||||
name: "processForm",
|
||||
components: {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
readonly:true,
|
||||
// 弹出层标题
|
||||
dialogTitle: "",
|
||||
// 是否显示弹出层
|
||||
dialogVisible: false,
|
||||
activeNames: ['1','2','3'],
|
||||
// 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||
formLoading: false,
|
||||
statusOptions:[
|
||||
{
|
||||
value:'0',
|
||||
label:'未完成'
|
||||
},
|
||||
{
|
||||
value:'1',
|
||||
label:'训练中'
|
||||
},
|
||||
{
|
||||
value:'2',
|
||||
label:'已完成'
|
||||
}
|
||||
],
|
||||
examStatusOptions:[
|
||||
{
|
||||
value:null,
|
||||
label:'未送考'
|
||||
},{
|
||||
value:'1',
|
||||
label:'已通过'
|
||||
},{
|
||||
value:'9',
|
||||
label:'已送考'
|
||||
},{
|
||||
value:'0',
|
||||
label:'未通过'
|
||||
}
|
||||
],
|
||||
ifPayOption:[
|
||||
{
|
||||
value:false,
|
||||
label:'未发放'
|
||||
},
|
||||
{
|
||||
value:true,
|
||||
label:'已发放'
|
||||
},
|
||||
],
|
||||
// 表单参数
|
||||
formData: {
|
||||
coachName: undefined,
|
||||
courseName: undefined,
|
||||
studentName: undefined,
|
||||
studentIdCard: undefined,
|
||||
courseType: undefined,
|
||||
subject: undefined,
|
||||
commissionAmount: undefined,
|
||||
checkName: undefined,
|
||||
createTime: undefined,
|
||||
checkRemark: undefined,
|
||||
ifPay: undefined,
|
||||
payTime: undefined,
|
||||
cashierConfirmRemark: undefined,
|
||||
images: undefined,
|
||||
|
||||
},
|
||||
// 表单校验
|
||||
formRules: {
|
||||
// userId: [{ required: true, message: '用户(学员)ID不能为空', trigger: 'blur' }],
|
||||
// userName: [{ required: true, message: '用户(学员)姓名不能为空', trigger: 'blur' }],
|
||||
// userMobile: [{ required: true, message: '学员手机号不能为空', trigger: 'blur' }],
|
||||
// coachId: [{ required: true, message: '教练ID不能为空', trigger: 'blur' }],
|
||||
// examNum: [{ required: true, message: '考试次数(第一次考试为1,第二次为2...)不能为空', trigger: 'blur' }],
|
||||
// status: [{ required: true, message: '当前状态(0-未开始;1-训练中;2-已完成)不能为空', trigger: 'blur' }],
|
||||
// examStatus: [{ required: true, message: '考试是否合格(0未通过;1已通过;null 未考试)不能为空', trigger: 'blur' }],
|
||||
// examScore: [{ required: true, message: '考试分数不能为空', trigger: 'blur' }],
|
||||
// images: [{ required: true, message: '图片证明材料不能为空', trigger: 'blur' }],
|
||||
// examTime: [{ required: true, message: '考试时间不能为空', trigger: 'blur' }],
|
||||
// remark: [{ required: true, message: '备注不能为空', trigger: 'blur' }],
|
||||
// trainTime: [{ required: true, message: '本科目累计训练时长不能为空', trigger: 'blur' }],
|
||||
// financePass: [{ required: true, message: '财务审核是否通过不能为空', trigger: 'blur' }],
|
||||
// financeRemark: [{ required: true, message: '财务审核备注不能为空', trigger: 'blur' }],
|
||||
},
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
formattedCreateTime() {
|
||||
if (!this.formData.createTime) return '';
|
||||
|
||||
const date = new Date(this.formData.createTime);
|
||||
const pad = (n) => (n < 10 ? '0' + n : n);
|
||||
|
||||
const year = date.getFullYear();
|
||||
const month = pad(date.getMonth() + 1);
|
||||
const day = pad(date.getDate());
|
||||
const hour = pad(date.getHours());
|
||||
const minute = pad(date.getMinutes());
|
||||
const second = pad(date.getSeconds());
|
||||
|
||||
return `${year}-${month}-${day} ${hour}:${minute}:${second}`;
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
/** 打开弹窗 */
|
||||
async open(id,readonly) {
|
||||
console.log('readonly', readonly)
|
||||
this.dialogVisible = true;
|
||||
this.readonly = readonly
|
||||
this.reset();
|
||||
// 修改时,设置数据
|
||||
if (id) {
|
||||
this.formLoading = true;
|
||||
try {
|
||||
const res = await SchoolCommissionApi.getSchoolCommissionById(id);
|
||||
this.formData = res.data;
|
||||
if(readonly){
|
||||
this.dialogTitle = "查看提成信息";
|
||||
}else{
|
||||
this.dialogTitle = "确认提成信息";
|
||||
}
|
||||
|
||||
} finally {
|
||||
this.formLoading = false;
|
||||
}
|
||||
}
|
||||
this.title = "新增驾校-学员课程进度";
|
||||
},
|
||||
/** 提交按钮 */
|
||||
async submitForm() {
|
||||
// 校验主表
|
||||
await this.$refs["formRef"].validate();
|
||||
|
||||
/* if (this.formData.examStatus !== '1') {
|
||||
try {
|
||||
// 弹出确认框
|
||||
await this.$confirm('当前学员考试状态不是已通过状态,是否继续?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
});
|
||||
// 用户点击"确定",继续执行
|
||||
} catch (error) {
|
||||
// 用户点击"取消",终止操作
|
||||
return;
|
||||
}
|
||||
} */
|
||||
|
||||
this.formLoading = true;
|
||||
try {
|
||||
this.formData.cashierConfirmTime = new Date().getTime();
|
||||
const data = this.formData;
|
||||
// 添加的提交
|
||||
await SchoolCommissionApi.cashierConfirm(data);
|
||||
this.$modal.msgSuccess("已确认");
|
||||
this.dialogVisible = false;
|
||||
this.$emit('success');
|
||||
} finally {
|
||||
this.formLoading = false;
|
||||
}
|
||||
},
|
||||
getSubjectName(subject) {
|
||||
const subjectMap = {
|
||||
1: '科目一',
|
||||
2: '科目二',
|
||||
3: '科目三',
|
||||
4: '科目四'
|
||||
};
|
||||
return subjectMap[subject] || subject;
|
||||
},
|
||||
getExamStatusName(status) {
|
||||
const statusMap = {
|
||||
'0': '未通过',
|
||||
'1': '已通过',
|
||||
'9': '已送考',
|
||||
'null': '未送考'
|
||||
};
|
||||
return statusMap[status] || status;
|
||||
},
|
||||
formatDate(timestamp) {
|
||||
if (!timestamp) return '-'; // 如果无时间戳,返回占位符
|
||||
|
||||
const date = new Date(timestamp);
|
||||
const year = date.getFullYear();
|
||||
const month = String(date.getMonth() + 1).padStart(2, '0'); // 补零
|
||||
const day = String(date.getDate()).padStart(2, '0'); // 补零
|
||||
|
||||
return `${year}-${month}-${day}`;
|
||||
},
|
||||
/** 表单重置 */
|
||||
reset() {
|
||||
this.formData = {
|
||||
coachName: undefined,
|
||||
courseName: undefined,
|
||||
studentName: undefined,
|
||||
studentIdCard: undefined,
|
||||
courseType: undefined,
|
||||
subject: undefined,
|
||||
commissionAmount: undefined,
|
||||
checkName: undefined,
|
||||
createTime: undefined,
|
||||
checkRemark: undefined,
|
||||
ifPay: undefined,
|
||||
payTime: undefined,
|
||||
cashierConfirmRemark: undefined,
|
||||
images: undefined,
|
||||
};
|
||||
this.resetForm("formRef");
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
/* 禁用状态样式 */
|
||||
.upload-disabled {
|
||||
position: relative; /* 为伪元素定位准备 */
|
||||
}
|
||||
|
||||
/* 半透明遮罩层(视觉禁用) */
|
||||
.upload-disabled::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: rgba(255, 255, 255, 0.5);
|
||||
z-index: 10;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
/* 禁用子组件内部交互 */
|
||||
.upload-disabled :deep(.el-upload),
|
||||
.upload-disabled :deep(.el-upload-list__item-actions) {
|
||||
pointer-events: none; /* 禁止所有鼠标事件 */
|
||||
opacity: 0.6; /* 视觉上变灰 */
|
||||
}
|
||||
</style>
|
||||
@ -30,7 +30,7 @@
|
||||
<!-- <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading"-->
|
||||
<!-- v-hasPermi="['drive:school-commission:export']">导出</el-button>-->
|
||||
<!-- </el-col>-->
|
||||
<!-- <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>-->
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="primary"
|
||||
@ -45,11 +45,19 @@
|
||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
|
||||
<el-table-column label="教练姓名" align="center" prop="coachName" />
|
||||
<el-table-column label="学生姓名" align="center" prop="studentName" />
|
||||
<el-table-column label="学生身份证号" align="center" prop="studentIdCard" width="180px"/>
|
||||
<el-table-column label="课程名称" align="center" prop="courseName" />
|
||||
<el-table-column label="课程类型" align="center" prop="courseType" />
|
||||
<el-table-column label="提成金额" align="center" prop="commissionAmount" />
|
||||
<el-table-column label="科目" align="center" prop="subject" />
|
||||
<el-table-column label="审核人姓名" align="center" prop="checkName" />
|
||||
<el-table-column label="审核意见" align="center" prop="checkRemark" show-overflow-tooltip/>
|
||||
<el-table-column label="审核日期" align="center" prop="createTime" :formatter="formatDate"/>
|
||||
<el-table-column label="是否发放" align="center" prop="ifPay" :formatter="formatIfPay"/>
|
||||
<el-table-column label="发放日期" align="center" prop="payTime" :formatter="formatDate"/>
|
||||
<el-table-column label="出纳确认日期" align="center" prop="cashierConfirmTime" :formatter="formatDate"/>
|
||||
<el-table-column label="确认人姓名" align="center" prop="cashierName" />
|
||||
<el-table-column label="出纳备注" align="center" prop="cashierConfirmRemark" show-overflow-tooltip/>
|
||||
<!-- <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)"-->
|
||||
@ -58,6 +66,27 @@
|
||||
<!-- v-hasPermi="['drive:school-commission:delete']">删除</el-button>-->
|
||||
<!-- </template>-->
|
||||
<!-- </el-table-column>-->
|
||||
<el-table-column v-if="showCashierColumn" label="出纳确认" align="center" class-name="small-padding fixed-width" >
|
||||
<template v-slot="scope">
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-view"
|
||||
@click="openForm(scope.row.id,true)"
|
||||
>
|
||||
查看
|
||||
</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-thumb"
|
||||
:disabled="scope.row.ifPay "
|
||||
@click="openForm(scope.row.id,false)"
|
||||
>
|
||||
确认发放
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 分页组件 -->
|
||||
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
|
||||
@ -138,6 +167,7 @@
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<confirmForm ref="confirmRef" @success="getList" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -146,10 +176,13 @@ import * as SchoolCommissionApi from "./api/pass";
|
||||
import { createSchoolCommission, getCourseList } from './api/pass'
|
||||
import { getDlDriveSchoolStudentPage } from "../student/studentApi/index";
|
||||
import { listCoach } from "../drivingSchoolCar/api/car";
|
||||
import processForm from '@/views/drivingSchool/process/form/processForm.vue'
|
||||
import confirmForm from '@/views/drivingSchool/driveSchoolExamPass/form/confirmForm.vue'
|
||||
// import SchoolCommissionForm from './SchoolCommissionForm.vue';
|
||||
export default {
|
||||
name: "SchoolCommission",
|
||||
components: {
|
||||
confirmForm
|
||||
// SchoolCommissionForm,
|
||||
},
|
||||
data() {
|
||||
@ -223,6 +256,16 @@ export default {
|
||||
this.getCoachList();
|
||||
this.getStudentList();
|
||||
},
|
||||
computed: {
|
||||
// 根据角色判断是否显示对应的列
|
||||
showCashierColumn() {
|
||||
// return this.$store.getters.roles.includes('cn')
|
||||
return ['cn', 'jxzjl'].some(role => this.$store.getters.roles.includes(role));
|
||||
},
|
||||
showCashierColumnTwo() {
|
||||
return this.$store.getters.roles.includes('cn')
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
/** 查询列表 */
|
||||
async getList() {
|
||||
@ -246,8 +289,8 @@ export default {
|
||||
this.handleQuery();
|
||||
},
|
||||
/** 添加/修改操作 */
|
||||
openForm(id) {
|
||||
this.$refs["formRef"].open(id);
|
||||
openForm(id,readonly) {
|
||||
this.$refs["confirmRef"].open(id,readonly);
|
||||
},
|
||||
|
||||
/** 新增按钮操作 */
|
||||
@ -379,6 +422,21 @@ export default {
|
||||
this.form.studentName = null; // 清空学生名称
|
||||
}
|
||||
},
|
||||
formatIfPay(row, column, cellValue) {
|
||||
return cellValue ?? false ? '已发放' : '未发放';
|
||||
},
|
||||
formatDate(row, column, cellValue) {
|
||||
return this.formatTimestampToDate(cellValue);
|
||||
},
|
||||
formatTimestampToDate(timestamp) {
|
||||
if (!timestamp) return '';
|
||||
const date = new Date(timestamp);
|
||||
const year = date.getFullYear();
|
||||
const month = String(date.getMonth() + 1).padStart(2, '0');
|
||||
const day = String(date.getDate()).padStart(2, '0');
|
||||
|
||||
return `${year}-${month}-${day}`;
|
||||
},
|
||||
|
||||
// /** 删除按钮操作 */
|
||||
// async handleDelete(row) {
|
||||
|
||||
@ -96,12 +96,47 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form-item label="报名时间" prop="createTime">
|
||||
<el-date-picker :readonly="readonly" clearable v-model="formData.createTime" type="date" value-format="timestamp" disabled=""/>
|
||||
</el-form-item>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="报名时间" prop="createTime">
|
||||
<el-date-picker :readonly="readonly" clearable v-model="formData.createTime" type="date" value-format="timestamp" disabled=""/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="身份证号" prop="studentIdCard">
|
||||
<el-input :readonly="readonly" v-model="formData.studentIdCard" disabled/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
</el-collapse-item>
|
||||
|
||||
<el-collapse-item title="提成信息" name="2">
|
||||
<el-collapse-item title="各科目成绩信息" name="2">
|
||||
<el-table :data="formData.processList" border style="width: 100%">
|
||||
<el-table-column prop="subject" label="科目" >
|
||||
<template slot-scope="scope">
|
||||
{{ getSubjectName(scope.row.subject) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="examStatus" label="考试状态" >
|
||||
<template slot-scope="scope">
|
||||
{{ getExamStatusName(scope.row.examStatus) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="examTime" label="考试时间" >
|
||||
<template slot-scope="scope">
|
||||
{{ formatDate(scope.row.examTime) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="examScore" label="考试分数" >
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.examScore || '-' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-collapse-item>
|
||||
<el-collapse-item title="提成信息" name="3">
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="提成金额" prop="coachCommission">
|
||||
@ -119,9 +154,16 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="出纳确认到账情况:" prop="cashierConfirm" label-width="150px">
|
||||
<div :class="cashierConfirmClass">{{ cashierConfirmText }}</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-collapse-item>
|
||||
|
||||
<el-collapse-item title="财务审核" name="3">
|
||||
<el-collapse-item title="财务审核" name="4">
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
|
||||
@ -167,7 +209,7 @@ export default {
|
||||
dialogTitle: "",
|
||||
// 是否显示弹出层
|
||||
dialogVisible: false,
|
||||
activeNames: ['1','2','3'],
|
||||
activeNames: ['1','3','4'],
|
||||
// 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||
formLoading: false,
|
||||
statusOptions:[
|
||||
@ -232,6 +274,7 @@ export default {
|
||||
coachCommission: undefined,
|
||||
studentPay: undefined,
|
||||
studentRemainingPay: undefined,
|
||||
cashierConfirm: undefined,
|
||||
},
|
||||
// 表单校验
|
||||
formRules: {
|
||||
@ -252,6 +295,21 @@ export default {
|
||||
},
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
cashierConfirmText() {
|
||||
const value = this.formData.cashierConfirm;
|
||||
if (value === '0') return '未到账';
|
||||
if (value === '1') return '已到账';
|
||||
return '待确认';
|
||||
},
|
||||
cashierConfirmClass() {
|
||||
const value = this.formData.cashierConfirm;
|
||||
if (value === '1') {
|
||||
return 'text-success'; // 可以是默认色或黑色
|
||||
}
|
||||
return 'text-danger'; // 红色
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
/** 打开弹窗 */
|
||||
async open(id,readonly) {
|
||||
@ -290,6 +348,17 @@ export default {
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (this.formData.financePass) {
|
||||
try {
|
||||
await this.$confirm('当前记录已审核过,是否继续审核?', '提示', {
|
||||
confirmButtonText: '继续',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
});
|
||||
} catch (error) {
|
||||
return; // 用户取消
|
||||
}
|
||||
}
|
||||
|
||||
this.formLoading = true;
|
||||
try {
|
||||
@ -303,6 +372,34 @@ export default {
|
||||
this.formLoading = false;
|
||||
}
|
||||
},
|
||||
getSubjectName(subject) {
|
||||
const subjectMap = {
|
||||
1: '科目一',
|
||||
2: '科目二',
|
||||
3: '科目三',
|
||||
4: '科目四'
|
||||
};
|
||||
return subjectMap[subject] || subject;
|
||||
},
|
||||
getExamStatusName(status) {
|
||||
const statusMap = {
|
||||
'0': '未通过',
|
||||
'1': '已通过',
|
||||
'9': '已送考',
|
||||
'null': '未送考'
|
||||
};
|
||||
return statusMap[status] || status;
|
||||
},
|
||||
formatDate(timestamp) {
|
||||
if (!timestamp) return '-'; // 如果无时间戳,返回占位符
|
||||
|
||||
const date = new Date(timestamp);
|
||||
const year = date.getFullYear();
|
||||
const month = String(date.getMonth() + 1).padStart(2, '0'); // 补零
|
||||
const day = String(date.getDate()).padStart(2, '0'); // 补零
|
||||
|
||||
return `${year}-${month}-${day}`;
|
||||
},
|
||||
/** 表单重置 */
|
||||
reset() {
|
||||
this.formData = {
|
||||
@ -324,9 +421,23 @@ export default {
|
||||
trainTime: undefined,
|
||||
financePass: undefined,
|
||||
financeRemark: undefined,
|
||||
cashierConfirm: undefined,
|
||||
};
|
||||
this.resetForm("formRef");
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style>
|
||||
.text-danger {
|
||||
color: red;
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
}
|
||||
.text-success {
|
||||
color: RGB(70, 166, 255);
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
@ -90,7 +90,7 @@
|
||||
<el-table-column label="考试分数" align="center" prop="examScore" />
|
||||
<el-table-column label="考试时间" align="center" prop="examTime" width="180">
|
||||
<template v-slot="scope">
|
||||
<span>{{ parseTime(scope.row.examTime) }}</span>
|
||||
<span>{{ parseTime(scope.row.examTime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="累计训练时长" width="120" align="center" prop="trainTime"/>
|
||||
@ -101,11 +101,11 @@
|
||||
<span v-if="scope.row.financePass == 0">未通过</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="财务审核备注" width="120" align="center" prop="financeRemark"/>
|
||||
<el-table-column label="操作" width="120" align="center" class-name="small-padding fixed-width">
|
||||
<el-table-column label="财务审核备注" width="180px" align="center" show-overflow-tooltip prop="financeRemark"/>
|
||||
<el-table-column label="操作" width="120" align="center" class-name="small-padding fixed-width" v-if="showCashierColumn">
|
||||
<template v-slot="scope">
|
||||
<el-button size="mini" type="text" icon="el-icon-edit" @click="openForm(scope.row.id,true)">查看</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-edit" @click="openForm(scope.row.id,false)">审核</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleCheck(scope.row)">审核</el-button>
|
||||
<!-- <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)">删除</el-button>-->
|
||||
</template>
|
||||
</el-table-column>
|
||||
@ -130,7 +130,7 @@ export default {
|
||||
data() {
|
||||
return {
|
||||
activeTab: 'all',
|
||||
showPassedOnly: false,
|
||||
showPassedOnly: true,
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 导出遮罩层
|
||||
@ -162,8 +162,16 @@ export default {
|
||||
},
|
||||
|
||||
created() {
|
||||
this.queryParams.examStatus = '1';
|
||||
this.getList();
|
||||
},
|
||||
computed: {
|
||||
// 根据角色判断是否显示对应的列
|
||||
showCashierColumn() {
|
||||
// return this.$store.getters.roles.includes('cn')
|
||||
return ['kj', 'jxzjl'].some(role => this.$store.getters.roles.includes(role));
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
/** 查询列表 */
|
||||
async getList() {
|
||||
@ -177,6 +185,21 @@ export default {
|
||||
}
|
||||
},
|
||||
|
||||
async handleCheck(row) {
|
||||
if (row.financePass) {
|
||||
try {
|
||||
await this.$confirm('当前记录已审核通过,是否继续审核?', '提示', {
|
||||
confirmButtonText: '继续',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
});
|
||||
} catch (e) {
|
||||
return; // 用户取消,不继续
|
||||
}
|
||||
}
|
||||
this.openForm(row.id, false); // 继续审核
|
||||
},
|
||||
|
||||
/** 搜索按钮操作 */
|
||||
handleQuery() {
|
||||
this.queryParams.pageNo = 1;
|
||||
@ -185,8 +208,8 @@ export default {
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
this.resetForm("queryForm");
|
||||
this.showPassedOnly = false;
|
||||
this.queryParams.examStatus = undefined;
|
||||
this.showPassedOnly = true;
|
||||
this.queryParams.examStatus = '1';
|
||||
this.handleQuery();
|
||||
},
|
||||
/** 添加/修改操作 */
|
||||
|
||||
@ -34,6 +34,11 @@
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="sort" label="排序" width="100">
|
||||
<template v-slot="scope">
|
||||
<el-input v-model="scope.row.sort" @change="updateSort(scope.row)"></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template v-slot="scope">
|
||||
@ -210,6 +215,13 @@ export default {
|
||||
|
||||
});
|
||||
},
|
||||
// 修改排序
|
||||
updateSort(data) {
|
||||
updateBusiness(data).then(response => {
|
||||
this.$modal.msgSuccess("修改成功");
|
||||
this.getList();
|
||||
});
|
||||
},
|
||||
// 取消按钮
|
||||
cancel() {
|
||||
this.open = false;
|
||||
|
||||
251
src/views/inspection/staff/ChooseUserDraw.vue
Normal file
251
src/views/inspection/staff/ChooseUserDraw.vue
Normal file
@ -0,0 +1,251 @@
|
||||
<template>
|
||||
|
||||
<!-- 对话框(添加 / 修改) -->
|
||||
<el-drawer
|
||||
title="选择用户"
|
||||
size="60%"
|
||||
:visible.sync="drawVisible"
|
||||
@close="cancelForm"
|
||||
>
|
||||
<div style="padding: 0 10px;margin-bottom: 70px">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
||||
<el-form-item label="用户名称" prop="username">
|
||||
<el-input v-model="queryParams.username" placeholder="请输入用户名称" clearable style="width: 240px"
|
||||
@keyup.enter.native="handleQuery"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="手机号码" prop="mobile">
|
||||
<el-input v-model="queryParams.mobile" placeholder="请输入手机号码" clearable style="width: 240px"
|
||||
@keyup.enter.native="handleQuery"/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="创建时间" prop="createTime">
|
||||
<el-date-picker v-model="queryParams.createTime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss" type="daterange"
|
||||
range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00', '23:59:59']" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-table
|
||||
v-loading="formLoading"
|
||||
:data="list"
|
||||
:stripe="true"
|
||||
@select="selectRow"
|
||||
@select-all="handleSelectAll">
|
||||
<el-table-column
|
||||
type="selection"
|
||||
width="55">
|
||||
</el-table-column>
|
||||
<el-table-column label="用户编号" align="center" key="id" prop="id" v-if="columns[0].visible" />
|
||||
<el-table-column label="用户名称" align="center" key="username" prop="username" v-if="columns[1].visible" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="用户昵称" align="center" key="nickname" prop="nickname" v-if="columns[2].visible" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="联系方式" align="center" key="mobile" prop="mobile" v-if="columns[4].visible" width="120" />
|
||||
<el-table-column label="创建时间" align="center" prop="createTime" v-if="columns[6].visible" width="160">
|
||||
<template v-slot="scope">
|
||||
<span>{{ parseTime(scope.row.createTime) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
|
||||
@pagination="getList"/>
|
||||
</div>
|
||||
|
||||
<div style="position: absolute;bottom: 0;width: 100%;right: 0;padding: 5px 20px 0;z-index: 999;background: white;text-align: right">
|
||||
<div class="demo-drawer__footer">
|
||||
<el-button @click="cancelForm">取 消</el-button>
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</el-drawer>
|
||||
<!-- 对话框(添加 / 修改) -->
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
import {
|
||||
listUser
|
||||
} from "@/api/system/user";
|
||||
import {DICT_TYPE, getDictDatas} from "@/utils/dict";
|
||||
import * as WorkerApi from '@/api/repair/repairworker';
|
||||
import {getTenantId} from "@/utils/auth";
|
||||
import {addUser, listSelectUser} from "@/views/inspection/staff/api/staff";
|
||||
export default {
|
||||
name: "ChooseCouponDraw",
|
||||
components: {},
|
||||
data() {
|
||||
return {
|
||||
// 弹出层标题
|
||||
// 是否显示弹出层
|
||||
drawVisible: false,
|
||||
// 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||
formLoading: false,
|
||||
// 导出遮罩层
|
||||
exportLoading: false,
|
||||
// 显示搜索条件
|
||||
showSearch: true,
|
||||
//回参
|
||||
formData: {},
|
||||
// 总条数
|
||||
total: 0,
|
||||
// 卡券列表
|
||||
list: [],
|
||||
multipleSelection: [],
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
username: undefined,
|
||||
mobile: undefined,
|
||||
status: undefined,
|
||||
deptId: undefined,
|
||||
createTime: [],
|
||||
tenantId: getTenantId()
|
||||
},
|
||||
// 列信息
|
||||
columns: [
|
||||
{ key: 0, label: `用户编号`, visible: true },
|
||||
{ key: 1, label: `用户名称`, visible: true },
|
||||
{ key: 2, label: `用户昵称`, visible: true },
|
||||
{ key: 3, label: `部门`, visible: true },
|
||||
{ key: 4, label: `手机号码`, visible: true },
|
||||
{ key: 5, label: `状态`, visible: true },
|
||||
{ key: 6, label: `创建时间`, visible: true }
|
||||
],
|
||||
// 数据字典
|
||||
statusDictDatas: getDictDatas(DICT_TYPE.COMMON_STATUS),
|
||||
sexDictDatas: getDictDatas(DICT_TYPE.SYSTEM_USER_SEX),
|
||||
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
|
||||
/** 打开弹窗 */
|
||||
async open(multipleSelection) {
|
||||
this.drawVisible = true;
|
||||
this.formLoading = true;
|
||||
this.reset();
|
||||
try {
|
||||
const res = await listSelectUser(this.queryParams);
|
||||
this.list = res.data.list;
|
||||
this.total = res.data.total;
|
||||
if (multipleSelection){
|
||||
this.multipleSelection = JSON.parse(JSON.stringify(multipleSelection))
|
||||
this.defaultChecked(multipleSelection)
|
||||
}
|
||||
} finally {
|
||||
this.formLoading = false;
|
||||
}
|
||||
},
|
||||
|
||||
/**选中*/
|
||||
selectRow(val, row) {
|
||||
//当前点击是否勾选
|
||||
let selectBool = val.length && val.indexOf(row) !== -1
|
||||
if (!selectBool) {
|
||||
//取消勾选
|
||||
this.multipleSelection.forEach((item, i) => {
|
||||
if (item.id == row.id) {
|
||||
this.multipleSelection.splice(i, 1)
|
||||
}
|
||||
})
|
||||
} else {
|
||||
//选中
|
||||
this.multipleSelection.push(row)
|
||||
}
|
||||
},
|
||||
|
||||
/**全选*/
|
||||
handleSelectAll(val) {
|
||||
if (val.length == this.list.length) { //全选
|
||||
this.multipleSelection = this.multipleSelection.concat(val)
|
||||
//去重
|
||||
let obj = {}
|
||||
let result = []
|
||||
this.multipleSelection.forEach(item => {
|
||||
if (!obj[item.id]) {
|
||||
result.push(item)
|
||||
obj[item.id] = true
|
||||
}
|
||||
})
|
||||
this.multipleSelection = result
|
||||
} else { //取消全选
|
||||
this.list.forEach(item => {
|
||||
this.multipleSelection.forEach((multItem, i) => {
|
||||
if (item.id == multItem.id) {
|
||||
this.multipleSelection.splice(i, 1)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
/**设置默认选中*/
|
||||
defaultChecked(multipleSelection) {
|
||||
const that = this;
|
||||
this.$nextTick(() => {
|
||||
that.list.forEach((v, i) => {
|
||||
multipleSelection.map(item => {
|
||||
if (item.id === v.id) {
|
||||
that.$refs.multipleTable.toggleRowSelection(v, true);
|
||||
}
|
||||
})
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
cancelForm() {
|
||||
this.drawVisible = false
|
||||
},
|
||||
|
||||
/** 查询列表 */
|
||||
async getList() {
|
||||
try {
|
||||
this.formLoading = true
|
||||
const res = await listSelectUser(this.queryParams);
|
||||
this.list = res.data.list;
|
||||
this.total = res.data.total;
|
||||
// this.defaultChecked(this.multipleSelection)
|
||||
} finally {
|
||||
this.formLoading = false
|
||||
}
|
||||
},
|
||||
/** 搜索按钮操作 */
|
||||
handleQuery() {
|
||||
this.queryParams.pageNo = 1;
|
||||
this.getList();
|
||||
},
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
this.resetForm("queryForm");
|
||||
this.handleQuery();
|
||||
},
|
||||
/**重置参数*/
|
||||
reset() {
|
||||
this.queryParams = {
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
name: null,
|
||||
type: null,
|
||||
carModel: null,
|
||||
outRule: null,
|
||||
tenantId: getTenantId()
|
||||
}
|
||||
},
|
||||
/** 提交按钮 */
|
||||
async submitForm() {
|
||||
this.drawVisible = false
|
||||
console.log('提交的数据',this.multipleSelection)
|
||||
const data = {
|
||||
adminUsers : this.multipleSelection
|
||||
}
|
||||
await addUser(data);
|
||||
this.$modal.msgSuccess("保存成功");
|
||||
this.$emit('success', this.multipleSelection)
|
||||
},
|
||||
|
||||
}
|
||||
};
|
||||
</script>
|
||||
@ -168,3 +168,12 @@ export function importTemplate() {
|
||||
responseType: 'blob'
|
||||
})
|
||||
}
|
||||
|
||||
// 查询用户列表
|
||||
export function listSelectUser(query) {
|
||||
return request({
|
||||
url: '/inspectionStaff/listSelectUser',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
@ -45,14 +45,18 @@
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="info" icon="el-icon-upload2" size="mini" @click="handleImport">导入
|
||||
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="chooseUser">选择员工
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="warning" icon="el-icon-download" size="mini" @click="handleExport"
|
||||
:loading="exportLoading">导出
|
||||
<el-button type="info" icon="el-icon-upload2" size="mini" @click="handleImport">导入
|
||||
</el-button>
|
||||
</el-col>
|
||||
<!-- <el-col :span="1.5">-->
|
||||
<!-- <el-button type="warning" icon="el-icon-download" size="mini" @click="handleExport"-->
|
||||
<!-- :loading="exportLoading">导出-->
|
||||
<!-- </el-button>-->
|
||||
<!-- </el-col>-->
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
|
||||
</el-row>
|
||||
|
||||
@ -361,7 +365,7 @@
|
||||
<el-button @click="upload.open = false">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<ChooseUserDraw ref="chooseUserRef" @success="getList"></ChooseUserDraw>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -380,6 +384,7 @@ import {
|
||||
} from "@/views/inspection/staff/api/staff";
|
||||
import Treeselect from "@riophae/vue-treeselect";
|
||||
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
|
||||
import ChooseUserDraw from "@/views/inspection/staff/ChooseUserDraw";
|
||||
|
||||
import {listSimpleDepts} from "@/api/system/dept";
|
||||
import {listSimplePosts} from "@/api/system/post";
|
||||
@ -392,7 +397,7 @@ import {getBaseHeader} from "@/utils/request";
|
||||
|
||||
export default {
|
||||
name: "SystemUser",
|
||||
components: {Treeselect},
|
||||
components: {Treeselect, ChooseUserDraw},
|
||||
data() {
|
||||
return {
|
||||
failList: [],
|
||||
@ -479,9 +484,9 @@ export default {
|
||||
{key: 0, label: `员工编号`, visible: true},
|
||||
{key: 1, label: `员工名称`, visible: true},
|
||||
{key: 2, label: `员工昵称`, visible: true},
|
||||
{key: 3, label: `部门`, visible: true},
|
||||
{key: 3, label: `部门`, visible: false},
|
||||
{key: 4, label: `手机号码`, visible: true},
|
||||
{key: 5, label: `状态`, visible: true},
|
||||
{key: 5, label: `状态`, visible: false},
|
||||
{key: 6, label: `创建时间`, visible: true}
|
||||
],
|
||||
// 表单校验
|
||||
@ -567,6 +572,12 @@ export default {
|
||||
}
|
||||
);
|
||||
},
|
||||
/**
|
||||
* 选择用户
|
||||
**/
|
||||
chooseUser(){
|
||||
this.$refs["chooseUserRef"].open();
|
||||
},
|
||||
addFolder() {
|
||||
if (!this.form.folderId) {
|
||||
addFolder(this.form.id).then(response => {
|
||||
@ -821,6 +832,7 @@ export default {
|
||||
this.failList = []
|
||||
this.isFail = false
|
||||
console.log('执行')
|
||||
this.getList()
|
||||
},
|
||||
handleRemove(file) {
|
||||
console.log(file);
|
||||
|
||||
@ -157,8 +157,8 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
// tenantCode:"lighting",
|
||||
tenantCode:"lanan",
|
||||
tenantCode:"lighting",
|
||||
// tenantCode:"lanan",
|
||||
codeUrl: "",
|
||||
showTenantList:false,
|
||||
tenant:undefined,
|
||||
@ -175,6 +175,7 @@ export default {
|
||||
mobileCode: "",
|
||||
rememberMe: false,
|
||||
tenantName: "租户管理员",
|
||||
tenantId: undefined,
|
||||
},
|
||||
tenantList:[],
|
||||
scene: 21,
|
||||
@ -277,6 +278,7 @@ export default {
|
||||
}
|
||||
console.log('当前租户',this.tenant)
|
||||
setTenantId(this.tenant)
|
||||
this.loginForm.tenantId = this.tenant
|
||||
this.handleLogin()
|
||||
},
|
||||
handleLogin(captchaParams) {
|
||||
@ -315,6 +317,7 @@ export default {
|
||||
});
|
||||
},
|
||||
async getTenantList(){
|
||||
console.log('执行')
|
||||
await getUserTenant(this.loginForm.username).then(res => {
|
||||
console.log('当前登陆人信息', res)
|
||||
// setTenantId(res.data.tenant_id)
|
||||
|
||||
@ -29,8 +29,6 @@ export function getBankAccountList(){
|
||||
return request({
|
||||
url: '/partnerOwn/partner/getBankAccountList',
|
||||
method: 'get',
|
||||
|
||||
|
||||
})
|
||||
}
|
||||
//制证
|
||||
@ -160,3 +158,23 @@ export function getWeorkNodesById(params) {
|
||||
params: params
|
||||
})
|
||||
}
|
||||
export function updateOrderInfo(data) {
|
||||
return request({
|
||||
url: '/inspection/orderInfo/cashier',
|
||||
method: 'put',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
export function getOrderInfo(id) {
|
||||
return request({
|
||||
url: '/inspection/orderInfo/'+id,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
export function getCustomerSource(params) {
|
||||
return request({
|
||||
url: '/channel/tree',
|
||||
method: 'get',
|
||||
params:params
|
||||
})
|
||||
}
|
||||
|
||||
456
src/views/partner/form/InspectionCashierConfirmForm.vue
Normal file
456
src/views/partner/form/InspectionCashierConfirmForm.vue
Normal file
@ -0,0 +1,456 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<!-- 对话框(添加 / 修改) -->
|
||||
<el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="45%" v-dialogDrag append-to-body>
|
||||
<el-form ref="formRef" :model="formData" :rules="formRules" v-loading="formLoading" label-width="100px">
|
||||
<el-collapse v-model="activeNames">
|
||||
<el-collapse-item title="收款信息" name="1">
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="收款金额" prop="cashierConfirm">
|
||||
<el-input disabled v-model="orderInfo.payMoney / 100" placeholder="暂未结算"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="收费备注" prop="cashierConfirm">
|
||||
<el-input disabled v-model="orderInfo.remark" placeholder="暂无备注"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="查看附件" prop="cashierConfirm">
|
||||
<el-button @click="handleViewFiles(orderInfo.files)">查看附件</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-collapse-item>
|
||||
|
||||
<el-collapse-item title="出纳确认" name="2">
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="是否到账" prop="cashierConfirm">
|
||||
<el-select :disabled="type == 'accounting'" v-model="formData.cashierConfirm" placeholder="待确认">
|
||||
<el-option
|
||||
v-for="item in cashierConfirmOption"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="审批意见" prop="cashierConfirmRemark">
|
||||
<el-input :disabled="type == 'accounting'" type="textarea" v-model="formData.cashierConfirmRemark" placeholder="请输入出纳审批意见"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-collapse-item>
|
||||
|
||||
<el-collapse-item title="会计确认" v-if="type == 'accounting'" name="3">
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="是否到账" prop="cashierConfirm">
|
||||
<el-select v-model="formData.accountingConfirm" placeholder="待确认">
|
||||
<el-option
|
||||
v-for="item in cashierConfirmOption"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="审批意见" prop="cashierConfirmRemark">
|
||||
<el-input type="textarea" v-model="formData.accountingConfirmRemark" placeholder="请输入出纳审批意见"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-collapse-item>
|
||||
</el-collapse>
|
||||
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm" :disabled="formLoading">确 定</el-button>
|
||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog :title="'文件预览(' + currentFileName + ')'" :visible.sync="fileDialogVisible" width="70%" append-to-body>
|
||||
<div class="preview-container">
|
||||
<!-- 左侧预览区域 -->
|
||||
<!-- 音频文件 -->
|
||||
<audio v-if="isAudioType" class="preview-iframe" controls>
|
||||
<source :src="currentFileUrl"/>
|
||||
</audio>
|
||||
|
||||
<!-- Office文档/文本/PDF -->
|
||||
<iframe
|
||||
v-else-if="!isImageType && currentFileType !== 'txt' && !isAudioType && currentFileType !== 'pdf'"
|
||||
:src="officePreviewUrl"
|
||||
frameborder="0"
|
||||
class="preview-iframe"
|
||||
></iframe>
|
||||
|
||||
<!-- 图片预览 -->
|
||||
<image-preview
|
||||
v-else-if="isImageType"
|
||||
class="preview-iframe"
|
||||
:src="currentFileUrl"
|
||||
></image-preview>
|
||||
|
||||
<!-- PDF/文本 -->
|
||||
<iframe
|
||||
v-else-if="currentFileType === 'txt' || currentFileType === 'pdf'"
|
||||
:src="currentFileUrl"
|
||||
frameborder="0"
|
||||
class="preview-iframe"
|
||||
></iframe>
|
||||
|
||||
<!-- 右侧文件列表 -->
|
||||
<div class="file-list" v-if="currentFileList.length > 1">
|
||||
<el-table
|
||||
:data="currentFileList"
|
||||
height="100%"
|
||||
@row-click="handleFileClick"
|
||||
:row-class-name="getRowClassName">
|
||||
<el-table-column
|
||||
prop="fileName"
|
||||
label="文件列表"
|
||||
min-width="180">
|
||||
<template #default="{ row }">
|
||||
<div class="file-item">
|
||||
<i :class="getFileIcon(row)"></i>
|
||||
{{ getFileName(row) }}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<!-- <SchemeForm ref="schemeFormRef" @success="fetchSchemeList" />-->
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import * as SchoolCourseOrderApi from '@/views/drivingSchool/DriveSchoolPay/api'
|
||||
import {getSchemeListByCourseId} from '@/views/drivingSchool/DriveSchoolPay/api'
|
||||
import SchemeForm from '@/views/drivingSchool/schoolCourse/form/schemeForm.vue'
|
||||
import {getOrderInfo, updateOrderInfo} from "@/views/partner/api/workOrder";
|
||||
|
||||
export default {
|
||||
name: 'InspectionCashierConfirmForm',
|
||||
components: {
|
||||
SchemeForm
|
||||
},
|
||||
|
||||
data() {
|
||||
return {
|
||||
// 弹出层标题
|
||||
dialogTitle: '',
|
||||
// 是否显示弹出层
|
||||
dialogVisible: false,
|
||||
fileDialogVisible: false,
|
||||
// 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||
formLoading: false,
|
||||
baseUrl: process.env.VUE_APP_BASE_API,
|
||||
currentFileUrl: '',
|
||||
currentFileName: '',
|
||||
currentFileType: '',
|
||||
officePreviewUrl: '',
|
||||
// 表单参数
|
||||
formData: {
|
||||
id: undefined,
|
||||
cashierConfirm: undefined,
|
||||
cashierConfirmRemark: undefined,
|
||||
},
|
||||
ifEndRadio: [
|
||||
{
|
||||
label: '是',
|
||||
value: true
|
||||
},
|
||||
{
|
||||
label: '否',
|
||||
value: false
|
||||
}
|
||||
],
|
||||
isSignRadio: [
|
||||
{
|
||||
label: '是',
|
||||
value: 1
|
||||
},
|
||||
{
|
||||
label: '否',
|
||||
value: 0
|
||||
}
|
||||
],
|
||||
payChannelList: [
|
||||
{
|
||||
label: '线下支付',
|
||||
value: '2'
|
||||
},
|
||||
{
|
||||
label: '微信支付',
|
||||
value: '1'
|
||||
}
|
||||
],
|
||||
ifAgreeList: [
|
||||
{
|
||||
label: '未确认',
|
||||
value: '0'
|
||||
},
|
||||
{
|
||||
label: '已同意',
|
||||
value: '1'
|
||||
},
|
||||
{
|
||||
label: '未同意',
|
||||
value: '2'
|
||||
},
|
||||
{
|
||||
label: '非代报名订单',
|
||||
value: null
|
||||
}
|
||||
],
|
||||
cashierConfirmOption: [
|
||||
{
|
||||
value: '0',
|
||||
label: '未到账'
|
||||
},
|
||||
{
|
||||
value: '1',
|
||||
label: '已到账'
|
||||
},
|
||||
],
|
||||
// 表单校验
|
||||
formRules: {},
|
||||
schemeList: [],
|
||||
currentFileList: [],
|
||||
activeNames: ['2'],
|
||||
orderInfo: {},
|
||||
type: undefined
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
isImageType() {
|
||||
return /\.(jpg|jpeg|png|gif|webp|bmp)$/i.test(this.currentFileUrl);
|
||||
},
|
||||
isAudioType() {
|
||||
const audioExtensions = ['mp3', 'wav', 'ogg', 'aac', 'm4a', 'flac'];
|
||||
return audioExtensions.some(ext => this.currentFileUrl.endsWith(ext));
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
/** 打开弹窗 */
|
||||
async open(data) {
|
||||
let id = data.id
|
||||
this.type = data.type
|
||||
console.log('id', data.id)
|
||||
this.dialogVisible = true
|
||||
this.reset()
|
||||
// 修改时,设置数据
|
||||
this.formData.id = id
|
||||
if (id) {
|
||||
this.formLoading = true
|
||||
try {
|
||||
// 查询检测工单
|
||||
const res = await getOrderInfo(id)
|
||||
this.orderInfo = res.data
|
||||
// const res = await SchoolCourseOrderApi.getSchoolCourseOrder(id)
|
||||
// this.formData = res.data
|
||||
// this.title = '修改驾照报名订单'
|
||||
// await this.loadSchemeList(this.formData.courseId);
|
||||
} finally {
|
||||
this.formLoading = false
|
||||
}
|
||||
}
|
||||
this.title = '新增驾照报名订单'
|
||||
},
|
||||
openSchemeDialog() {
|
||||
this.$refs.schemeFormRef.open(null, this.formData.courseId)
|
||||
},
|
||||
async fetchSchemeList() {
|
||||
// 重新拉取方案列表
|
||||
console.log('courseId', this.formData.courseId)
|
||||
const res = await getSchemeListByCourseId(this.formData.courseId)
|
||||
console.log('res', res)
|
||||
this.schemeList = res.data || []
|
||||
},
|
||||
/** 提交按钮 */
|
||||
async submitForm() {
|
||||
// 校验主表
|
||||
// await this.$refs['formRef'].validate()
|
||||
// 检查是否选择了提成方案
|
||||
this.formLoading = true
|
||||
try {
|
||||
const data = this.formData
|
||||
// 修改的提交
|
||||
if (data.id) {
|
||||
data.type = this.type
|
||||
await updateOrderInfo(data)
|
||||
this.$modal.msgSuccess('修改成功')
|
||||
this.dialogVisible = false
|
||||
this.$emit('success')
|
||||
return
|
||||
}
|
||||
} finally {
|
||||
this.formLoading = false
|
||||
}
|
||||
},
|
||||
async loadSchemeList(courseId) {
|
||||
console.log('courseId', courseId)
|
||||
if (!courseId) return;
|
||||
try {
|
||||
const res = await getSchemeListByCourseId(courseId);
|
||||
console.log('res', res)
|
||||
this.schemeList = res.data || [];
|
||||
} catch (error) {
|
||||
this.$message.error('获取提成方案失败');
|
||||
}
|
||||
},
|
||||
handleViewFiles(filePath) {
|
||||
if (!filePath) {
|
||||
this.$message.warning('没有附件');
|
||||
return;
|
||||
}
|
||||
|
||||
// 初始化数据
|
||||
this.currentFileList = filePath.split(',').filter(item => item.trim());
|
||||
this.fileDialogVisible = true;
|
||||
|
||||
// 默认显示第一个文件
|
||||
if (this.currentFileList.length > 0) {
|
||||
this.previewFile(this.currentFileList[0]);
|
||||
}
|
||||
},
|
||||
|
||||
// 获取完整文件URL(拼接基础API地址)
|
||||
getFullFileUrl(filePath) {
|
||||
if (!filePath) return '';
|
||||
// 已经是完整URL或base64数据
|
||||
if (filePath.startsWith('http') || filePath.startsWith('data:')) {
|
||||
return filePath;
|
||||
}
|
||||
// 拼接基础API地址(来自环境变量)
|
||||
const baseUrl = 'http://122.51.230.86:9000/' || '';
|
||||
return `${baseUrl.replace(/\/$/, '')}/${filePath.replace(/^\//, '')}`;
|
||||
},
|
||||
|
||||
// 从路径中提取文件名
|
||||
getFileName(filePath) {
|
||||
return filePath.split('/').pop() || '未命名文件';
|
||||
},
|
||||
|
||||
// 判断是否为图片
|
||||
isImage(filePath) {
|
||||
return /\.(jpg|jpeg|png|gif|webp|bmp)$/i.test(filePath);
|
||||
},
|
||||
|
||||
// 预览指定文件
|
||||
previewFile(filePath) {
|
||||
this.currentFileUrl = this.getFullFileUrl(filePath);
|
||||
this.currentFileName = this.getFileName(filePath);
|
||||
this.currentFileType = this.getFileExtension(filePath);
|
||||
console.log('filePath', this.currentFileUrl)
|
||||
|
||||
// 生成Office文档预览URL
|
||||
this.officePreviewUrl = 'https://view.officeapps.live.com/op/view.aspx?src=' +
|
||||
encodeURIComponent(this.currentFileUrl);
|
||||
},
|
||||
|
||||
// 获取文件扩展名
|
||||
getFileExtension(filePath) {
|
||||
return filePath.split('.').pop().toLowerCase();
|
||||
},
|
||||
async getSchemeListByCourseId(courseId) {
|
||||
await SchoolCourseOrderApi.getSchemeListByCourseId(courseId)
|
||||
.then(res => {
|
||||
this.schemeList = res.data
|
||||
})
|
||||
},
|
||||
// 获取文件图标
|
||||
getFileIcon(filePath) {
|
||||
return this.isImage(filePath) ? 'el-icon-picture' : 'el-icon-document';
|
||||
},
|
||||
|
||||
// 点击文件列表中的文件
|
||||
handleFileClick(row) {
|
||||
this.previewFile(row);
|
||||
},
|
||||
|
||||
// 表格行类名
|
||||
getRowClassName({row}) {
|
||||
return row === this.currentFileUrl ? 'highlight-row' : '';
|
||||
},
|
||||
/** 表单重置 */
|
||||
reset() {
|
||||
this.formData = {
|
||||
orderNo: undefined,
|
||||
userName: undefined,
|
||||
userPhone: undefined,
|
||||
userNo: undefined,
|
||||
userSex: undefined,
|
||||
courseId: undefined,
|
||||
courseName: undefined,
|
||||
coachUserId: undefined,
|
||||
coachUserName: undefined,
|
||||
reserveMoney: undefined,
|
||||
courseType: undefined,
|
||||
ifEnd: undefined,
|
||||
endReason: undefined,
|
||||
endTime: undefined,
|
||||
paymentStatus: undefined,
|
||||
isSign: undefined,
|
||||
restMoney: undefined,
|
||||
payType: undefined,
|
||||
passTime: undefined,
|
||||
gradTime: undefined,
|
||||
schemeId: undefined,
|
||||
}
|
||||
this.resetForm('formRef')
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
.preview-container {
|
||||
display: flex;
|
||||
height: 80vh;
|
||||
}
|
||||
|
||||
.image-preview img {
|
||||
max-height: 500px;
|
||||
max-width: 100%;
|
||||
border: 1px solid #eee;
|
||||
}
|
||||
.preview-iframe {
|
||||
flex: 6;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.file-list {
|
||||
flex: 1;
|
||||
border-left: 1px solid #ebeef5;
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
.file-item {
|
||||
cursor: pointer;
|
||||
padding: 8px;
|
||||
transition: background 0.3s;
|
||||
}
|
||||
|
||||
.file-item:hover {
|
||||
background: #f5f7fa;
|
||||
}
|
||||
|
||||
/* 调整表格高度 */
|
||||
:deep(.el-table) {
|
||||
height: calc(100% - 2px) !important;
|
||||
}
|
||||
|
||||
/* 隐藏表格头 */
|
||||
:deep(.el-table__header-wrapper) {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
@ -2,34 +2,35 @@
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
||||
<el-form-item label="车牌号" prop="carNum">
|
||||
<el-input v-model="queryParams.carNum" placeholder="请输入车牌号" clearable @keyup.enter.native="handleQuery" />
|
||||
<el-input v-model="queryParams.carModelOrCarYear" placeholder="请输入车牌号" clearable @keyup.enter.native="handleQuery"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="检测类型" prop="goodsTitle">
|
||||
<el-input v-model="queryParams.goodsTitle" placeholder="请输入检测类型" clearable @keyup.enter.native="handleQuery" />
|
||||
<el-select v-model="queryParams.skuName" placeholder="请选择客户来源" clearable>
|
||||
<el-option v-for="dict in skuNames" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="业务渠道" prop="businessChannel">
|
||||
<el-select v-model="queryParams.businessChannel" filterable clearable placeholder="请选择客户来源">
|
||||
<el-option v-for="dict in businessList" :key="dict.id" :label="dict.name" :value="dict.name"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="客户来源" prop="customerSource">
|
||||
<el-select v-model="queryParams.customerSource" placeholder="请选择客户来源">
|
||||
<el-option v-for="dict in customerData" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
|
||||
<el-select v-model="queryParams.customerSource" filterable clearable placeholder="请选择客户来源">
|
||||
<el-option v-for="dict in customerData" :key="dict.id" :label="dict.name" :value="dict.name"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="支付方式" prop="payType">
|
||||
<template slot-scope="scope">
|
||||
<el-select v-model="queryParams.payType" placeholder="支付方式" clearable style="width: 240px">
|
||||
<el-option v-for="dict in dict.type.pay_type" :key="dict.value" :label="dict.label" :value="dict.value" />
|
||||
<el-option v-for="dict in dict.type.pay_type" :key="dict.value" :label="dict.label" :value="dict.value"/>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-form-item>
|
||||
<el-form-item label="检测时间" prop="startTime">
|
||||
<el-date-picker v-model="queryParams.jcTime" type="daterange" value-format="yyyy-MM-dd" range-separator="至"
|
||||
start-placeholder="开始日期" end-placeholder="结束日期">
|
||||
start-placeholder="开始日期" end-placeholder="结束日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="角色" prop="status">
|
||||
<el-select v-model="queryParams.roleId" placeholder="角色" clearable style="width: 240px">
|
||||
<el-option v-for="dict in dict.type.inspection_use_role" :key="dict.value" :label="dict.label"
|
||||
:value="dict.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
@ -57,8 +58,12 @@
|
||||
|
||||
|
||||
<el-table v-loading="loading" :data="infoList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="车牌号" align="center" prop="carNum" />
|
||||
<el-table-column type="selection" width="55" align="center"/>
|
||||
<el-table-column label="车牌号" align="center">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.carNum || scope.row.certificateNum || '----' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="客户来源" align="center" prop="customerSource">
|
||||
</el-table-column>
|
||||
<el-table-column label="检测结果" align="center" prop="isPass">
|
||||
@ -68,8 +73,8 @@
|
||||
<span v-else>进行中</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="车辆类型" align="center" prop="goodsTitle" />
|
||||
<el-table-column label="检测项目" align="center" prop="skuName" />
|
||||
<el-table-column label="车辆类型" align="center" prop="goodsTitle"/>
|
||||
<el-table-column label="检测项目" align="center" prop="skuName"/>
|
||||
<el-table-column label="公示应收价格" align="center" prop="realPayMoney" width="100">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.goodsPrice / 100 }}</span>
|
||||
@ -80,44 +85,108 @@
|
||||
<span>{{ scope.row.realPayMoney / 100 }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="收款时间" align="center" prop="payTime" />
|
||||
<el-table-column label="收款时间" align="center" prop="payTime"/>
|
||||
<!-- <el-table-column label="客户" align="center" prop="buyName" />-->
|
||||
<el-table-column label="客户手机号" align="center" prop="buyPhone" />
|
||||
<el-table-column label="客户手机号" align="center" prop="buyPhone"/>
|
||||
<!-- <el-table-column label="接待员" align="center" prop="workerName"/>-->
|
||||
<el-table-column label="接待员手机号" align="center" prop="workerPhone" />
|
||||
<el-table-column label="接待员手机号" align="center" prop="workerPhone"/>
|
||||
<el-table-column label="支付方式" align="center" prop="payType">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.pay_type" :value="scope.row.payType" />
|
||||
<dict-tag :options="dict.type.pay_type" :value="scope.row.payType"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="开始时间" align="center" prop="startTime" />
|
||||
<el-table-column label="结束时间" align="center" prop="endTime" />
|
||||
<el-table-column label="备注" align="center" prop="remark" />
|
||||
<el-table-column label="开始时间" align="center" prop="startTime"/>
|
||||
<el-table-column label="结束时间" align="center" prop="endTime"/>
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" icon="el-icon-edit" @click="watchWork(scope.row)">打印
|
||||
</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-edit" @click="xinWork(scope.row)">结算
|
||||
<el-button size="mini" type="text" icon="el-icon-edit" @click="xinWork(scope.row)">
|
||||
结算
|
||||
</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-edit"
|
||||
v-if="scope.row.status && scope.row.status == 1 && scope.row.isPass && scope.row.isPass == 1 && scope.row.makeCert != 1"
|
||||
@click="zhizheng(scope.row)">制证
|
||||
v-if="scope.row.status && scope.row.status == 1 && scope.row.isPass && scope.row.isPass == 1 && scope.row.makeCert != 1"
|
||||
@click="zhizheng(scope.row)">制证
|
||||
</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-edit" @click="detail(scope.row)">详情
|
||||
</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-edit" v-if="scope.row.status && scope.row.status == 0"
|
||||
@click="jieshu(scope.row)">完工
|
||||
</el-button>
|
||||
<!-- <el-button size="mini" type="text" icon="el-icon-edit" v-if="scope.row.status && scope.row.status == 0"-->
|
||||
<!-- @click="jieshu(scope.row)">完工-->
|
||||
<!-- </el-button>-->
|
||||
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)">修改
|
||||
</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleDelete(scope.row)">删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="出纳备注" align="center" prop="cashierConfirmRemark"/>
|
||||
<el-table-column v-if="showCashierColumn" label="出纳确认" align="center" class-name="small-padding fixed-width">
|
||||
<template v-slot="scope">
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
v-if="!scope.row.realPayMoney"
|
||||
disabled
|
||||
style="color: red"
|
||||
>
|
||||
暂未结算
|
||||
</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-plus"
|
||||
@click="openCashierConfirm(scope.row.inspectionOrderId, 'cashier')"
|
||||
v-if="scope.row.realPayMoney && scope.row.cashierConfirm !== '1'"
|
||||
>
|
||||
确认收款
|
||||
</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
style="color: RGB(192, 196, 204)"
|
||||
v-else-if="scope.row.cashierConfirm == 1 || scope.row.cashierConfirm == '1'"
|
||||
:disabled="true"
|
||||
>
|
||||
已确认
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="showAccountingColumn" label="会计确认" align="center" class-name="small-padding fixed-width">
|
||||
<template v-slot="scope">
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
v-if="!scope.row.cashierConfirm || scope.row.cashierConfirm != 1"
|
||||
style="color: red"
|
||||
disabled
|
||||
>
|
||||
出纳未确认
|
||||
</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-plus"
|
||||
@click="openCashierConfirm(scope.row.inspectionOrderId, 'accounting')"
|
||||
v-if="scope.row.realPayMoney && scope.row.cashierConfirm == '1' && scope.row.accountingConfirm !== '1'"
|
||||
>
|
||||
确认收款
|
||||
</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
style="color: RGB(192, 196, 204)"
|
||||
v-else-if="scope.row.accountingConfirm == 1 || scope.row.accountingConfirm == '1'"
|
||||
:disabled="true"
|
||||
>
|
||||
已确认
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="会计备注" align="center" prop="accountingConfirmRemark"/>
|
||||
</el-table>
|
||||
|
||||
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
|
||||
@pagination="getList" />
|
||||
@pagination="getList"/>
|
||||
|
||||
<!-- 添加或修改道路救援模块对话框 -->
|
||||
<el-dialog :title="title" :visible.sync="open" width="900px" append-to-body>
|
||||
@ -162,7 +231,7 @@
|
||||
</el-form-item>
|
||||
<el-form-item label="优惠金额">
|
||||
<el-input-number :min="0" @input="jisuan" :max="goodsPrice / 100" type="text"
|
||||
v-model="reduceMoney"></el-input-number>
|
||||
v-model="reduceMoney"></el-input-number>
|
||||
</el-form-item>
|
||||
<el-form-item label="实付金额">
|
||||
<el-input-number type="text" v-model="payMoney"></el-input-number>
|
||||
@ -171,7 +240,7 @@
|
||||
<!-- <el-input type="text" v-model="receivablesAccount"></el-input>-->
|
||||
<el-select v-model="payType" placeholder="请选择付款方式">
|
||||
<el-option v-for="dict in dict.type.pay_type" :key="dict.value" :label="dict.label"
|
||||
:value="dict.value"></el-option>
|
||||
:value="dict.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="收款账号">
|
||||
@ -182,6 +251,9 @@
|
||||
<el-form-item label="备注">
|
||||
<el-input type="text" v-model="payRemark"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="附件">
|
||||
<file-upload v-model="fileUrls"></file-upload>
|
||||
</el-form-item>
|
||||
<el-button type="primary" @click="tijiao()">确 定</el-button>
|
||||
</el-form>
|
||||
</el-dialog>
|
||||
@ -228,27 +300,27 @@
|
||||
|
||||
<el-select v-model="form.carNature" placeholder="请选择使用性质">
|
||||
<el-option v-for="dict in dict.type.car_use_nature" :key="dict.value" :label="dict.label"
|
||||
:value="dict.value"></el-option>
|
||||
:value="dict.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="请选择客户来源">
|
||||
<el-select v-model="form.customerSource" placeholder="请选择客户来源">
|
||||
<el-select disabled v-model="form.customerSource" placeholder="请选择客户来源">
|
||||
<el-option v-for="dict in customerData" :key="dict.value" :label="dict.label"
|
||||
:value="dict.value"></el-option>
|
||||
:value="dict.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="代办人手机号">
|
||||
<el-input v-model="form.otherPhone" placeholder="请选择代办人手机号" />
|
||||
<el-input v-model="form.otherPhone" placeholder="请选择代办人手机号"/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="选择商品">
|
||||
<el-cascader v-model="form.skuId" :options="options" @change="handleChange"
|
||||
:disabled="!isInsert"></el-cascader>
|
||||
:disabled="!isInsert"></el-cascader>
|
||||
</el-form-item>
|
||||
<el-form-item label="新旧车">
|
||||
<el-select v-model="form.carStatus" placeholder="请选择新旧车">
|
||||
<el-option v-for="dict in dict.type.car_status" :key="dict.value" :label="dict.label"
|
||||
:value="dict.value"></el-option>
|
||||
:value="dict.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="引车员">
|
||||
@ -267,7 +339,7 @@
|
||||
<div class="available-projects-title">可选检测项目:</div>
|
||||
<div class="available-projects-container">
|
||||
<div class="project-button" :class="{ 'selected': selectInspectionProjectIds.includes(item.id) }"
|
||||
v-for="item in projectList" :key="item.id" @click="clickProject(item)">
|
||||
v-for="item in projectList" :key="item.id" @click="clickProject(item)">
|
||||
{{ item.projectName }}
|
||||
</div>
|
||||
</div>
|
||||
@ -289,19 +361,15 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- </el-form-item>-->
|
||||
|
||||
|
||||
|
||||
|
||||
</el-form>
|
||||
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<InspectionCashierConfirmForm ref="cashierConfirmRef" @success="getList"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -324,13 +392,15 @@ import {
|
||||
delWorkInfo,
|
||||
detail,
|
||||
getINspectionProject,
|
||||
getWeorkNodesById
|
||||
getWeorkNodesById, getCustomerSource
|
||||
} from "./api/workOrder";
|
||||
import { getCustomerSource } from "./api/index";
|
||||
import print from 'vue-print-nb'
|
||||
import moment from 'moment';
|
||||
import request from "@/utils/request";
|
||||
import DictTag from "@/components/DictTagOld/index.vue";
|
||||
import CashierConfirmForm from "@/views/drivingSchool/DriveSchoolPay/form/cashierConfirmForm.vue";
|
||||
import InspectionCashierConfirmForm from "@/views/partner/form/InspectionCashierConfirmForm.vue";
|
||||
import FileUpload from "@/components/FileUpload/index.vue";
|
||||
|
||||
export default {
|
||||
name: "Info",
|
||||
@ -338,7 +408,7 @@ export default {
|
||||
directives: {
|
||||
print
|
||||
},
|
||||
components: { DictTag },
|
||||
components: {InspectionCashierConfirmForm, CashierConfirmForm, DictTag, FileUpload},
|
||||
data() {
|
||||
return {
|
||||
moneyData: {
|
||||
@ -346,6 +416,28 @@ export default {
|
||||
goodsPriceSum: 0
|
||||
},
|
||||
projectList: [],
|
||||
skuNames: [
|
||||
{
|
||||
label: "年审",
|
||||
value: "年审",
|
||||
},
|
||||
{
|
||||
label: "上户",
|
||||
value: "上户",
|
||||
},
|
||||
{
|
||||
label: "非定检",
|
||||
value: "非定检",
|
||||
},
|
||||
{
|
||||
label: "双燃料",
|
||||
value: "双燃料",
|
||||
},
|
||||
{
|
||||
label: "其他检测",
|
||||
value: "其他检测",
|
||||
},
|
||||
],
|
||||
isPass: 1,
|
||||
isRetrial: '',
|
||||
remark: '',
|
||||
@ -370,6 +462,7 @@ export default {
|
||||
payType: '',
|
||||
receivablesAccount: '',
|
||||
payRemark: '',
|
||||
fileUrls: '',
|
||||
inspectionId: '',
|
||||
size: '',
|
||||
workId: '',
|
||||
@ -387,6 +480,7 @@ export default {
|
||||
// 显示搜索条件
|
||||
showSearch: true,
|
||||
customerData: [],
|
||||
businessList: [],
|
||||
BankAccountList: [],
|
||||
// 总条数
|
||||
total: 0,
|
||||
@ -420,6 +514,7 @@ export default {
|
||||
destinationInfo: null,
|
||||
rescueStatus: null,
|
||||
rescueAmount: null,
|
||||
businessChannel: null,
|
||||
},
|
||||
// 表单参数
|
||||
form: {},
|
||||
@ -427,34 +522,34 @@ export default {
|
||||
// 表单校验
|
||||
rules: {
|
||||
connectionName: [
|
||||
{ required: true, message: "联系人名称不能为空", trigger: "blur" }
|
||||
{required: true, message: "联系人名称不能为空", trigger: "blur"}
|
||||
],
|
||||
connectionPhone: [
|
||||
{ required: true, message: "联系人手机号不能为空", trigger: "blur" }
|
||||
{required: true, message: "联系人手机号不能为空", trigger: "blur"}
|
||||
],
|
||||
licenseNum: [
|
||||
{ required: true, message: "车牌号不能为空", trigger: "blur" }
|
||||
{required: true, message: "车牌号不能为空", trigger: "blur"}
|
||||
],
|
||||
isAppointment: [
|
||||
{ required: true, message: "是否为预约单不能为空", trigger: "change" }
|
||||
{required: true, message: "是否为预约单不能为空", trigger: "change"}
|
||||
],
|
||||
rescueType: [
|
||||
{ required: true, message: "救援类型 1拖车2送油3搭电4换台5扣车不能为空", trigger: "change" }
|
||||
{required: true, message: "救援类型 1拖车2送油3搭电4换台5扣车不能为空", trigger: "change"}
|
||||
],
|
||||
carType: [
|
||||
{ required: true, message: "车辆类型 大中小不能为空", trigger: "change" }
|
||||
{required: true, message: "车辆类型 大中小不能为空", trigger: "change"}
|
||||
],
|
||||
rescuePosition: [
|
||||
{ required: true, message: "救援地点 详细描述不能为空", trigger: "blur" }
|
||||
{required: true, message: "救援地点 详细描述不能为空", trigger: "blur"}
|
||||
],
|
||||
feeType: [
|
||||
{ required: true, message: "收费类型不能为空", trigger: "change" }
|
||||
{required: true, message: "收费类型不能为空", trigger: "change"}
|
||||
],
|
||||
}
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.dict = { type: {} }
|
||||
this.dict = {type: {}}
|
||||
for (let i = 0; i < this.$options.dicts.length; i++) {
|
||||
request({
|
||||
url: '/rescue/dict/data/type/' + this.$options.dicts[i],
|
||||
@ -466,6 +561,22 @@ export default {
|
||||
// this.getpid()
|
||||
this.getList();
|
||||
this.customerSource();
|
||||
this.business();
|
||||
},
|
||||
computed: {
|
||||
// 根据角色判断是否显示对应的列
|
||||
showCashierColumn() {
|
||||
// return this.$store.getters.roles.includes('cn')
|
||||
return ['jccn', 'tenant_admin'].some(role => this.$store.getters.roles.includes(role));
|
||||
},
|
||||
// 根据角色判断是否显示对应的列
|
||||
showAccountingColumn() {
|
||||
// return this.$store.getters.roles.includes('cn')
|
||||
return ['jckj', 'tenant_admin'].some(role => this.$store.getters.roles.includes(role));
|
||||
},
|
||||
showCashierColumnTwo() {
|
||||
return this.$store.getters.roles.includes('jccn')
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
jieshutij() {
|
||||
@ -482,6 +593,14 @@ export default {
|
||||
this.getList()
|
||||
})
|
||||
},
|
||||
/** 出纳确认*/
|
||||
openCashierConfirm(data,type) {
|
||||
const dataNew = {
|
||||
id: data,
|
||||
type:type
|
||||
}
|
||||
this.$refs["cashierConfirmRef"].open(dataNew);
|
||||
},
|
||||
clickProject(data) {
|
||||
let idx = this.selectInspectionProjectIds.indexOf(data.id)
|
||||
if (idx > -1) {
|
||||
@ -529,6 +648,10 @@ export default {
|
||||
this.payMoney = (this.goodsPrice / 100) - this.reduceMoney
|
||||
},
|
||||
tijiao() {
|
||||
console.log(this.fileUrls)
|
||||
if (Array.isArray(this.fileUrls)) {
|
||||
this.fileUrls = '';
|
||||
}
|
||||
let data = {
|
||||
reduceMoney: this.reduceMoney ? this.reduceMoney * 100 : 0,
|
||||
payMoney: this.payMoney * 100,
|
||||
@ -536,6 +659,7 @@ export default {
|
||||
receivablesAccount: this.receivablesAccount,
|
||||
payRemark: this.payRemark,
|
||||
inspectionId: this.inspectionId,
|
||||
files: this.fileUrls,
|
||||
}
|
||||
offlineCharging(data).then(res => {
|
||||
this.openxin = false
|
||||
@ -554,10 +678,21 @@ export default {
|
||||
})
|
||||
},
|
||||
customerSource() {
|
||||
getCustomerSource().then(res => {
|
||||
const data = {
|
||||
type:1
|
||||
}
|
||||
getCustomerSource(data).then(res => {
|
||||
this.customerData = res.data
|
||||
})
|
||||
},
|
||||
business() {
|
||||
const data = {
|
||||
type:0
|
||||
}
|
||||
getCustomerSource(data).then(res => {
|
||||
this.businessList = res.data
|
||||
})
|
||||
},
|
||||
watchWork(row) {
|
||||
workOrderView(row.id).then(res => {
|
||||
this.htmlStr = res.data
|
||||
@ -576,6 +711,10 @@ export default {
|
||||
inspectionDetail(row.id).then(res => {
|
||||
this.offline = res.data
|
||||
this.goodsPrice = res.data.goodsPrice
|
||||
this.payMoney = res.data.payMoney ? res.data.payMoney / 100 : null
|
||||
this.payType = res.data.payType ? res.data.payType : null
|
||||
this.fileUrls = res.data.files ? res.data.files : []
|
||||
this.payRemark = res.data.payRemark ? res.data.payRemark : null
|
||||
console.log(res)
|
||||
})
|
||||
this.openxin = true
|
||||
@ -783,7 +922,7 @@ export default {
|
||||
},
|
||||
/** 提交按钮 */
|
||||
submitForm() {
|
||||
console.log('事件',this.form.carRegisterDate);
|
||||
console.log('事件', this.form.carRegisterDate);
|
||||
if (this.form.id) {
|
||||
this.updateForm()
|
||||
} else {
|
||||
@ -903,7 +1042,10 @@ export default {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
* 对话框整体样式 * / .custom-dialog {
|
||||
* 对话框整体样式 *
|
||||
|
||||
/
|
||||
.custom-dialog {
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
@ -246,6 +246,7 @@ import {DICT_TYPE, getDictDatas} from "@/utils/dict";
|
||||
import {assignUserRole, listUserRoles} from "@/api/system/permission";
|
||||
import {listSimpleRoles} from "@/api/system/role";
|
||||
import {getBaseHeader} from "@/utils/request";
|
||||
import {getTenantId} from "@/utils/auth";
|
||||
|
||||
export default {
|
||||
name: "SystemUser",
|
||||
@ -307,7 +308,8 @@ export default {
|
||||
mobile: undefined,
|
||||
status: undefined,
|
||||
deptId: undefined,
|
||||
createTime: []
|
||||
createTime: [],
|
||||
tenantId: getTenantId()
|
||||
},
|
||||
// 列信息
|
||||
columns: [
|
||||
@ -457,7 +459,8 @@ export default {
|
||||
status: "0",
|
||||
remark: undefined,
|
||||
postIds: [],
|
||||
roleIds: []
|
||||
roleIds: [],
|
||||
tenantId: getTenantId()
|
||||
};
|
||||
this.resetForm("form");
|
||||
},
|
||||
@ -527,6 +530,8 @@ export default {
|
||||
},
|
||||
/** 提交按钮 */
|
||||
submitForm: function() {
|
||||
this.form.tenantId = getTenantId();
|
||||
console.log('当前租户', getTenantId())
|
||||
this.$refs["form"].validate(valid => {
|
||||
if (valid) {
|
||||
if (this.form.id !== undefined) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user