结算
This commit is contained in:
parent
6ec6c1cf61
commit
8e2f59cb96
44
src/views/base/chargeCompany/api/chargeCompanyApi.js
Normal file
44
src/views/base/chargeCompany/api/chargeCompanyApi.js
Normal file
@ -0,0 +1,44 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 查询挂账单位列表
|
||||
export function getChargeCompanyList(params) {
|
||||
return request({
|
||||
url: '/base-charge-company/page',
|
||||
method: 'get',
|
||||
params
|
||||
})
|
||||
}
|
||||
|
||||
// 获取挂账单位详情
|
||||
export function getChargeCompany(id) {
|
||||
return request({
|
||||
url: `/base-charge-company/get?id=${id}`,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
// 新增挂账单位
|
||||
export function addChargeCompany(data) {
|
||||
return request({
|
||||
url: '/base-charge-company/create',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 修改挂账单位
|
||||
export function updateChargeCompany(data) {
|
||||
return request({
|
||||
url: '/base-charge-company/update',
|
||||
method: 'put',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 删除挂账单位
|
||||
export function deleteChargeCompany(ids) {
|
||||
return request({
|
||||
url: `/base-charge-company/delete?id=${ids}`,
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
||||
219
src/views/base/chargeCompany/form/ChargeCompanyForm.vue
Normal file
219
src/views/base/chargeCompany/form/ChargeCompanyForm.vue
Normal file
@ -0,0 +1,219 @@
|
||||
<template>
|
||||
<el-form ref="form" :model="formData" :rules="rules" label-width="120px">
|
||||
<el-form-item label="单位名称" prop="companyName">
|
||||
<el-input v-model="formData.companyName" placeholder="请输入单位名称" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="联系人" prop="contactPerson">
|
||||
<el-input v-model="formData.contactPerson" placeholder="请输入联系人" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="联系电话" prop="contactPhone">
|
||||
<el-input v-model="formData.contactPhone" placeholder="请输入联系电话" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="单位地址" prop="address">
|
||||
<el-input v-model="formData.address" placeholder="请输入单位地址" />
|
||||
</el-form-item>
|
||||
<!--
|
||||
<el-form-item label="状态" prop="status">
|
||||
<el-switch v-model="formData.status" active-text="启用" inactive-text="禁用" />
|
||||
</el-form-item> -->
|
||||
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="formData.remark" placeholder="请输入备注" type="textarea" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'ChargeCompanyForm',
|
||||
props: {
|
||||
// 用于 v-model 的 value(对象)
|
||||
value: {
|
||||
type: Object,
|
||||
default: () => ({})
|
||||
},
|
||||
// systemCode 允许字符串或数字
|
||||
systemCode: {
|
||||
type: [String, Number],
|
||||
default: ''
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
// 本地表单数据 — 保持对象引用(方便 el-form resetFields)
|
||||
formData: {
|
||||
id: null,
|
||||
companyName: null,
|
||||
contactPerson: null,
|
||||
contactPhone: null,
|
||||
address: null,
|
||||
status: false,
|
||||
systemCode: '', // 会在 created 中初始化
|
||||
remark: null
|
||||
},
|
||||
// 防止同步回流的标志
|
||||
isSyncingFromParent: false,
|
||||
rules: {
|
||||
companyName: [
|
||||
{ required: true, message: '单位名称不能为空', trigger: 'blur' }
|
||||
],
|
||||
contactPerson: [
|
||||
{ required: true, message: '联系人不能为空', trigger: 'blur' }
|
||||
],
|
||||
contactPhone: [
|
||||
{ required: true, message: '联系电话不能为空', trigger: 'blur' },
|
||||
{ pattern: /^1[3-9]\d{9}$/, message: '请输入正确的手机号码', trigger: 'blur' }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
// 当外部传入 systemCode 变化时,更新本地 field(外部 systemCode 优先)
|
||||
systemCode: {
|
||||
handler(newVal) {
|
||||
// 使用 $set 保证响应式(Vue2)
|
||||
this.$set(this.formData, 'systemCode', newVal === undefined || newVal === null ? '' : newVal)
|
||||
},
|
||||
immediate: true
|
||||
},
|
||||
|
||||
// 监听 value(父组件通过 v-model 传入的数据)变化并同步到本地表单
|
||||
value: {
|
||||
handler(newVal) {
|
||||
// 标志:正在同步来自父组件的数据,避免触发 emit 回父组件
|
||||
this.isSyncingFromParent = true
|
||||
|
||||
if (newVal && Object.keys(newVal).length > 0) {
|
||||
// 保持 systemCode 优先为当前本地 systemCode(外部 systemCode Prop 会单独处理)
|
||||
const keepSystemCode = this.formData.systemCode
|
||||
|
||||
// 使用 Object.assign 保持 formData 对象引用,避免意外破坏 el-form 的绑定
|
||||
Object.assign(this.formData, { ...newVal })
|
||||
|
||||
// 恢复/保持本地 systemCode(如果你需要让 value 中的 systemCode 覆盖,改这里)
|
||||
this.$set(this.formData, 'systemCode', keepSystemCode)
|
||||
} else {
|
||||
// 如果 newVal 为空对象或 null,则只清空可编辑字段(保持 systemCode)
|
||||
const keepSystemCode = this.formData.systemCode
|
||||
Object.assign(this.formData, {
|
||||
id: null,
|
||||
companyName: null,
|
||||
contactPerson: null,
|
||||
contactPhone: null,
|
||||
address: null,
|
||||
status: false,
|
||||
remark: null
|
||||
})
|
||||
this.$set(this.formData, 'systemCode', keepSystemCode)
|
||||
}
|
||||
|
||||
// 等下一个 tick 再允许 emit(保证同步完成后不回流)
|
||||
this.$nextTick(() => {
|
||||
this.isSyncingFromParent = false
|
||||
})
|
||||
},
|
||||
immediate: true,
|
||||
deep: true
|
||||
},
|
||||
|
||||
// 本地表单变化时向外 emit(用于 v-model 双向绑定)
|
||||
// 但如果是我们从父组件同步过来的改动,则不 emit(避免回流)
|
||||
formData: {
|
||||
handler(newVal) {
|
||||
if (this.isSyncingFromParent) {
|
||||
// 来自父组件的同步,不应再次 emit
|
||||
return
|
||||
}
|
||||
// 发出副本,防止父组件直接修改传入对象引用
|
||||
this.$emit('input', { ...newVal })
|
||||
},
|
||||
deep: true
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 验证表单:callback 接收 (valid, fields)
|
||||
validate(callback) {
|
||||
if (!this.$refs.form) {
|
||||
const error = new Error('form ref not found')
|
||||
if (typeof callback === 'function') callback(false, error)
|
||||
return Promise.reject(error)
|
||||
}
|
||||
// Element UI validate 支持回调或 Promise
|
||||
return new Promise((resolve, reject) => {
|
||||
this.$refs.form.validate((valid, fields) => {
|
||||
if (typeof callback === 'function') callback(valid, fields)
|
||||
if (valid) resolve(true)
|
||||
else reject(fields)
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 重置表单验证与字段(保留 systemCode)
|
||||
resetFields() {
|
||||
if (!this.$refs.form) return
|
||||
// resetFields 会根据 model 将字段恢复为 model 中的初始值
|
||||
this.$refs.form.resetFields()
|
||||
// 重新确保 systemCode 设置为 props 的值(或空字符串)
|
||||
this.$set(this.formData, 'systemCode', this.systemCode || '')
|
||||
},
|
||||
|
||||
// 清除校验提示
|
||||
clearValidate() {
|
||||
if (!this.$refs.form) return
|
||||
this.$refs.form.clearValidate()
|
||||
},
|
||||
|
||||
// 彻底重置 formData(保持 systemCode)
|
||||
resetFormData() {
|
||||
const keepSystemCode = this.systemCode || this.formData.systemCode || ''
|
||||
Object.assign(this.formData, {
|
||||
id: null,
|
||||
companyName: null,
|
||||
contactPerson: null,
|
||||
contactPhone: null,
|
||||
address: null,
|
||||
status: false,
|
||||
remark: null
|
||||
})
|
||||
this.$set(this.formData, 'systemCode', keepSystemCode)
|
||||
|
||||
this.$nextTick(() => {
|
||||
this.clearValidate()
|
||||
// 主动 emit 一次空的表单状态(如果需要通知父组件)
|
||||
this.$emit('input', { ...this.formData })
|
||||
})
|
||||
},
|
||||
|
||||
// 外部主动传入数据设置到表单(不会改变 systemCode)
|
||||
setFormData(data = {}) {
|
||||
if (!data) return
|
||||
const keepSystemCode = this.formData.systemCode
|
||||
// 阻止在同步过程中 emit
|
||||
this.isSyncingFromParent = true
|
||||
Object.assign(this.formData, { ...data })
|
||||
this.$set(this.formData, 'systemCode', keepSystemCode)
|
||||
this.$nextTick(() => {
|
||||
this.isSyncingFromParent = false
|
||||
})
|
||||
}
|
||||
},
|
||||
created() {
|
||||
// 初始时确保 systemCode 使用 props 值(或空字符串)
|
||||
this.$set(this.formData, 'systemCode', this.systemCode || '')
|
||||
// 如果父组件通过 value 传入初始数据,value watcher 的 immediate 会处理同步
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.el-form {
|
||||
padding: 20px 10px 0 0;
|
||||
}
|
||||
.el-input,
|
||||
.el-textarea {
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
||||
313
src/views/base/chargeCompany/index.vue
Normal file
313
src/views/base/chargeCompany/index.vue
Normal file
@ -0,0 +1,313 @@
|
||||
<template>
|
||||
<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="companyName">
|
||||
<el-input
|
||||
v-model="queryParams.companyName"
|
||||
placeholder="请输入单位名称"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="状态" prop="status">
|
||||
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable>
|
||||
<el-option label="启用" :value="true"></el-option>
|
||||
<el-option label="禁用" :value="false"></el-option>
|
||||
</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>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<!-- 工具栏 -->
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-plus"
|
||||
size="mini"
|
||||
@click="handleAdd"
|
||||
>新增
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="danger"
|
||||
icon="el-icon-delete"
|
||||
size="mini"
|
||||
:disabled="multiple"
|
||||
@click="handleDelete"
|
||||
>删除
|
||||
</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<!-- 数据表格 -->
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
:data="chargeCompanyList"
|
||||
@selection-change="handleSelectionChange"
|
||||
style="width: 100%"
|
||||
>
|
||||
<el-table-column type="selection" width="55" align="center"></el-table-column>
|
||||
<el-table-column label="单位名称" prop="companyName" min-width="180"></el-table-column>
|
||||
<el-table-column label="联系人" prop="contactPerson" min-width="120"></el-table-column>
|
||||
<el-table-column label="联系电话" prop="contactPhone" min-width="150"></el-table-column>
|
||||
<el-table-column label="单位地址" prop="address" min-width="200"></el-table-column>
|
||||
<el-table-column label="状态" prop="status" min-width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-switch
|
||||
v-model="scope.row.status"
|
||||
active-text="启用"
|
||||
inactive-text="禁用"
|
||||
@change="handleStatusChange(scope.row)"
|
||||
:disabled="!checkPermi(['chargeCompany:status:edit'])"
|
||||
></el-switch>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="备注" prop="remark" min-width="180"></el-table-column>
|
||||
<!-- <el-table-column label="创建时间" prop="createTime" min-width="180"></el-table-column> -->
|
||||
<el-table-column label="操作" min-width="120" fixed="right">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
type="text"
|
||||
icon="el-icon-edit"
|
||||
size="mini"
|
||||
@click="handleUpdate(scope.row)"
|
||||
>编辑</el-button>
|
||||
<el-button
|
||||
type="text"
|
||||
icon="el-icon-delete"
|
||||
size="mini"
|
||||
@click="handleDelete(scope.row)"
|
||||
>删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 分页组件 -->
|
||||
<pagination
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
:page.sync="queryParams.pageNo"
|
||||
:limit.sync="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
|
||||
<!-- 添加或修改挂账单位对话框 -->
|
||||
<el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
|
||||
<ChargeCompanyForm
|
||||
ref="chargeCompanyForm"
|
||||
v-model="formData"
|
||||
:systemCode="queryParams.systemCode || systemCode || ''"
|
||||
/>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getChargeCompanyList, getChargeCompany, addChargeCompany, updateChargeCompany, deleteChargeCompany } from './api/chargeCompanyApi'
|
||||
import Pagination from '@/components/Pagination'
|
||||
import { getLastPathSegment } from '@/utils/ruoyi'
|
||||
import ChargeCompanyForm from './form/ChargeCompanyForm'
|
||||
|
||||
export default {
|
||||
name: 'ChargeCompany',
|
||||
components: {
|
||||
Pagination,
|
||||
ChargeCompanyForm
|
||||
},
|
||||
props: {
|
||||
// 接收systemCode参数,默认为null,将在created钩子中初始化
|
||||
systemCode: {
|
||||
type: String,
|
||||
default: null
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 选中数组
|
||||
ids: [],
|
||||
// 非单个禁用
|
||||
single: true,
|
||||
// 非多个禁用
|
||||
multiple: true,
|
||||
// 显示搜索条件
|
||||
showSearch: true,
|
||||
// 总条数
|
||||
total: 0,
|
||||
// 挂账单位表格数据
|
||||
chargeCompanyList: [],
|
||||
// 弹出层标题
|
||||
title: '',
|
||||
// 是否显示弹出层
|
||||
open: false,
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
companyName: null,
|
||||
status: null,
|
||||
systemCode: ''
|
||||
},
|
||||
// 表单数据
|
||||
formData: {
|
||||
id: null,
|
||||
companyName: null,
|
||||
contactPerson: null,
|
||||
contactPhone: null,
|
||||
address: null,
|
||||
status: false,
|
||||
systemCode: '',
|
||||
remark: null
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
// 设置systemCode,如果未传入则从路由中获取,并确保是字符串类型
|
||||
const currentSystemCode = String(this.systemCode || getLastPathSegment(this.$route.path))
|
||||
this.queryParams.systemCode = currentSystemCode
|
||||
this.formData.systemCode = currentSystemCode
|
||||
this.getList()
|
||||
},
|
||||
watch: {
|
||||
// 监听systemCode变化,确保传入字符串类型
|
||||
systemCode: function(newVal) {
|
||||
const systemCodeStr = String(newVal || '')
|
||||
this.queryParams.systemCode = systemCodeStr
|
||||
this.formData.systemCode = systemCodeStr
|
||||
this.getList()
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
/** 查询挂账单位列表 */
|
||||
getList() {
|
||||
this.loading = true
|
||||
getChargeCompanyList(this.queryParams).then(response => {
|
||||
this.chargeCompanyList = response.data.records
|
||||
this.total = response.data.total
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
/** 搜索按钮操作 */
|
||||
handleQuery() {
|
||||
this.queryParams.pageNo = 1
|
||||
this.getList()
|
||||
},
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
this.resetForm('queryForm')
|
||||
this.handleQuery()
|
||||
},
|
||||
// 多选框选中数据
|
||||
handleSelectionChange(selection) {
|
||||
this.ids = selection.map(item => item.id)
|
||||
this.single = selection.length !== 1
|
||||
this.multiple = !selection.length
|
||||
},
|
||||
/** 新增按钮操作 */
|
||||
handleAdd() {
|
||||
this.reset()
|
||||
// 确保新增时带入systemCode
|
||||
this.formData.systemCode = this.queryParams.systemCode
|
||||
this.open = true
|
||||
this.title = '新增挂账单位'
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
this.reset()
|
||||
const id = row.id || this.ids
|
||||
getChargeCompany(id).then(response => {
|
||||
this.formData = response.data
|
||||
this.open = true
|
||||
this.title = '修改挂账单位'
|
||||
})
|
||||
},
|
||||
/** 状态变更 */
|
||||
handleStatusChange(row) {
|
||||
const statusMsg = row.status ? '启用' : '禁用'
|
||||
this.$modal.confirm(`是否确认${statusMsg}该挂账单位?`).then(() => {
|
||||
updateChargeCompany(row).then(() => {
|
||||
this.$modal.msgSuccess(`${statusMsg}成功`)
|
||||
this.getList()
|
||||
}).catch(() => {
|
||||
row.status = !row.status // 回滚状态
|
||||
this.$modal.msgError(`${statusMsg}失败`)
|
||||
})
|
||||
}).catch(() => {
|
||||
row.status = !row.status // 回滚状态
|
||||
})
|
||||
},
|
||||
/** 提交按钮 */
|
||||
submitForm() {
|
||||
this.$refs.chargeCompanyForm.validate(valid => {
|
||||
if (valid) {
|
||||
if (this.formData.id != null) {
|
||||
updateChargeCompany(this.formData).then(() => {
|
||||
this.$modal.msgSuccess('修改成功')
|
||||
this.open = false
|
||||
this.getList()
|
||||
})
|
||||
} else {
|
||||
addChargeCompany(this.formData).then(() => {
|
||||
this.$modal.msgSuccess('新增成功')
|
||||
this.open = false
|
||||
this.getList()
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
/** 取消按钮 */
|
||||
cancel() {
|
||||
this.open = false
|
||||
this.reset()
|
||||
},
|
||||
/** 重置表单 */
|
||||
reset() {
|
||||
this.formData = {
|
||||
id: null,
|
||||
companyName: null,
|
||||
contactPerson: null,
|
||||
contactPhone: null,
|
||||
address: null,
|
||||
status: false,
|
||||
systemCode: this.queryParams.systemCode,
|
||||
remark: null
|
||||
}
|
||||
if (this.$refs.chargeCompanyForm) {
|
||||
this.$refs.chargeCompanyForm.resetFields()
|
||||
}
|
||||
},
|
||||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
const ids = row.id || this.ids
|
||||
this.$modal.confirm('是否确认删除所选挂账单位?').then(() => {
|
||||
return deleteChargeCompany(ids)
|
||||
}).then(() => {
|
||||
this.getList()
|
||||
this.$modal.msgSuccess('删除成功')
|
||||
}).catch(() => {})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.app-container {
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.mb8 {
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
</style>
|
||||
@ -348,7 +348,8 @@ export default {
|
||||
isInsert: false,
|
||||
// 表单参数
|
||||
form: {
|
||||
driverLicenseTypeArr: []
|
||||
driverLicenseTypeArr: [],
|
||||
roleIds:[]
|
||||
},
|
||||
defaultProps: {
|
||||
children: "children",
|
||||
|
||||
@ -221,6 +221,7 @@
|
||||
label="参考成本"
|
||||
align="center"
|
||||
prop="accessoriesMoney"
|
||||
v-if="checkPermi(['repair:tick:profit'])"
|
||||
width="180"
|
||||
/>
|
||||
|
||||
|
||||
@ -285,6 +285,40 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="1">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="支付方式" prop="payType">
|
||||
<el-radio-group v-model="settlementFormData.payType" @change="handlePayTypeChange">
|
||||
<el-radio label="xj">现结</el-radio>
|
||||
<el-radio label="gz">挂账</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="1" v-if="settlementFormData.payType === 'gz'">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="挂账单位" prop="chargeCompanyId">
|
||||
<el-select
|
||||
v-model="settlementFormData.chargeCompanyId"
|
||||
placeholder="请选择挂账单位"
|
||||
filterable
|
||||
remote
|
||||
:remote-method="searchChargeCompany"
|
||||
:loading="searchLoading"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in chargeCompanyList"
|
||||
:key="item.id"
|
||||
:label="item.companyName"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
<el-button type="text" @click="handleAddChargeCompany">申请新增</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<!-- <el-row :gutter="1">-->
|
||||
<!-- <el-col :span="24">-->
|
||||
<!-- <el-form-item label="结算备注" prop="remark">-->
|
||||
@ -374,6 +408,45 @@
|
||||
<p>数据加载中...</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 新增挂账单位弹窗 -->
|
||||
<el-dialog title="申请新增挂账单位" :visible.sync="chargeCompanyDialogVisible" width="500px" append-to-body>
|
||||
<el-form ref="chargeCompanyFormRef" :model="chargeCompanyForm" :rules="chargeCompanyRules" label-width="120px">
|
||||
<el-form-item label="单位名称" prop="companyName">
|
||||
<el-input v-model="chargeCompanyForm.companyName" placeholder="请输入单位名称" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="联系人" prop="contactPerson">
|
||||
<el-input v-model="chargeCompanyForm.contactPerson" placeholder="请输入联系人" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="联系电话" prop="contactPhone">
|
||||
<el-input v-model="chargeCompanyForm.contactPhone" placeholder="请输入联系电话" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="单位地址" prop="address">
|
||||
<el-input v-model="chargeCompanyForm.address" placeholder="请输入单位地址" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="chargeCompanyForm.remark" placeholder="请输入备注" type="textarea" />
|
||||
</el-form-item>
|
||||
|
||||
<!-- 隐藏字段 -->
|
||||
<el-form-item label="" prop="status" style="display: none;">
|
||||
<el-input v-model="chargeCompanyForm.status" type="hidden" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="" prop="systemCode" style="display: none;">
|
||||
<el-input v-model="chargeCompanyForm.systemCode" type="hidden" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitChargeCompany">确 定</el-button>
|
||||
<el-button @click="cancelChargeCompany">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -391,6 +464,7 @@ import {
|
||||
import TicketsShow from "@/views/repair/tickets/Components/TicketsShow.vue";
|
||||
import {getByNameAndMobile} from "@/api/base/customer";
|
||||
import EditTickets from "@/views/repair/tickets/form/EditTickets.vue";
|
||||
import { getChargeCompanyList, addChargeCompany } from '@/views/base/chargeCompany/api/chargeCompanyApi'
|
||||
|
||||
export default {
|
||||
name: "TicketTable",
|
||||
@ -428,8 +502,28 @@ export default {
|
||||
settlementFormData: {
|
||||
actualMoney: 0,
|
||||
discountType: this.defaultDiscountType,
|
||||
discount: 0
|
||||
discount: 0,
|
||||
payType: 'xj', // 默认现结
|
||||
chargeCompanyId: null
|
||||
},
|
||||
chargeCompanyList: [], // 挂账单位列表
|
||||
searchLoading: false, // 搜索加载状态
|
||||
// 新增挂账单位表单
|
||||
chargeCompanyForm: {
|
||||
companyName: '',
|
||||
contactPerson: '',
|
||||
contactPhone: '',
|
||||
address: '',
|
||||
status: false, // 默认为禁用状态
|
||||
systemCode: 'repair',
|
||||
remark: ''
|
||||
},
|
||||
chargeCompanyRules: {
|
||||
companyName: [{ required: true, message: '单位名称不能为空', trigger: 'blur' }],
|
||||
contactPerson: [{ required: true, message: '联系人不能为空', trigger: 'blur' }],
|
||||
contactPhone: [{ required: true, message: '联系电话不能为空', trigger: 'blur' }]
|
||||
},
|
||||
chargeCompanyDialogVisible: false, // 新增挂账单位弹窗显示状态
|
||||
formRules: {
|
||||
payType: [{required: true, message: '支付方式不能为空', trigger: 'blur'}],
|
||||
isPaid: [{required: true, message: '请选择是否支付', trigger: 'blur'}],
|
||||
@ -557,6 +651,55 @@ export default {
|
||||
console.log(this.settlementFormData)
|
||||
},
|
||||
|
||||
// 处理支付方式变化
|
||||
async handlePayTypeChange(value) {
|
||||
if (value === 'gz') {
|
||||
// 获取启用状态的挂账单位(systemCode为repair)
|
||||
try {
|
||||
const res = await getChargeCompanyList({
|
||||
status: 1,
|
||||
systemCode: 'repair'
|
||||
});
|
||||
this.chargeCompanyList = res.data.records || [];
|
||||
} catch (err) {
|
||||
console.error('获取挂账单位列表失败:', err);
|
||||
this.$modal.msgError('获取挂账单位列表失败');
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// 搜索挂账单位
|
||||
async searchChargeCompany(query) {
|
||||
if (query !== '') {
|
||||
this.searchLoading = true;
|
||||
try {
|
||||
const res = await getChargeCompanyList({
|
||||
companyName: query,
|
||||
status: 1,
|
||||
systemCode: 'repair'
|
||||
});
|
||||
this.chargeCompanyList = res.data.records || [];
|
||||
} catch (err) {
|
||||
console.error('搜索挂账单位失败:', err);
|
||||
this.$modal.msgError('搜索挂账单位失败');
|
||||
} finally {
|
||||
this.searchLoading = false;
|
||||
}
|
||||
} else {
|
||||
// 如果搜索关键词为空,重新加载所有启用的挂账单位
|
||||
try {
|
||||
const res = await getChargeCompanyList({
|
||||
status: 1,
|
||||
systemCode: 'repair'
|
||||
});
|
||||
this.chargeCompanyList = res.data.records || [];
|
||||
} catch (err) {
|
||||
console.error('获取挂账单位列表失败:', err);
|
||||
this.$modal.msgError('获取挂账单位列表失败');
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
//收款
|
||||
handlePaid(row) {
|
||||
this.formData = {
|
||||
@ -627,13 +770,16 @@ export default {
|
||||
}
|
||||
},
|
||||
async doSettlement() {
|
||||
console.log('提交的数据',this.settlementFormData);
|
||||
try {
|
||||
await this.$refs['formRefSettlement'].validate()
|
||||
if (this.settlementType === 'jssh') {
|
||||
await settlementReview(this.settlementFormData)
|
||||
} else {
|
||||
await setTicketsSettlement(this.settlementFormData)
|
||||
}
|
||||
|
||||
|
||||
// if (this.settlementType === 'jssh') {
|
||||
// await settlementReview(this.settlementFormData)
|
||||
// } else {
|
||||
// await setTicketsSettlement(this.settlementFormData)
|
||||
// }
|
||||
this.$modal.msgSuccess("提交成功")
|
||||
this.dialogVisibleSettlement = false
|
||||
this.$emit("setVoid")
|
||||
@ -749,6 +895,47 @@ export default {
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
// 处理新增挂账单位按钮点击
|
||||
handleAddChargeCompany() {
|
||||
// 重置表单
|
||||
this.chargeCompanyForm = {
|
||||
companyName: '',
|
||||
contactPerson: '',
|
||||
contactPhone: '',
|
||||
address: '',
|
||||
status: false, // 默认为禁用状态
|
||||
systemCode: 'repair',
|
||||
remark: ''
|
||||
};
|
||||
this.chargeCompanyDialogVisible = true;
|
||||
},
|
||||
|
||||
// 提交新增挂账单位
|
||||
async submitChargeCompany() {
|
||||
this.$refs.chargeCompanyFormRef.validate(async (valid) => {
|
||||
if (valid) {
|
||||
try {
|
||||
await addChargeCompany(this.chargeCompanyForm);
|
||||
this.$modal.msgSuccess('挂账单位申请成功,请等待审核');
|
||||
this.chargeCompanyDialogVisible = false;
|
||||
// 如果当前是挂账方式,则重新加载挂账单位列表
|
||||
if (this.settlementFormData.payType === 'gz') {
|
||||
await this.searchChargeCompany(''); // 重新加载列表
|
||||
}
|
||||
} catch (err) {
|
||||
console.error('新增挂账单位失败:', err);
|
||||
this.$modal.msgError('新增挂账单位失败');
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
// 取消新增挂账单位
|
||||
cancelChargeCompany() {
|
||||
this.chargeCompanyDialogVisible = false;
|
||||
this.$refs.chargeCompanyFormRef && this.$refs.chargeCompanyFormRef.resetFields();
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user