Compare commits

...

4 Commits

Author SHA1 Message Date
xiaofajia
3b532d153d Merge branch 'dev' of http://122.51.230.86:3000/dianliang/lanan-system-vue into dev 2024-10-26 21:30:32 +08:00
xiaofajia
3a55c93d2f 跑通流程 2024-10-26 21:30:12 +08:00
xiaofajia
6e9d9ac508 Merge branch 'dev' of http://122.51.230.86:3000/dianliang/lanan-system-vue into dev 2024-10-26 12:02:38 +08:00
xiaofajia
678e404569 暂提 2024-10-26 12:01:55 +08:00
7 changed files with 356 additions and 152 deletions

View File

@ -52,3 +52,12 @@ export function confirmBack(id){
method: 'get' method: 'get'
}) })
} }
// 采购入库
export function inWare(data){
return request({
url: preUrl + "/inWare",
method: 'post',
data
})
}

View File

@ -8,6 +8,7 @@
<script> <script>
import {getStaffList} from "@/api/company/staff"; import {getStaffList} from "@/api/company/staff";
import {getUserProfile} from "@/api/system/user";
export default { export default {
name: "StaffChoose", name: "StaffChoose",
@ -19,6 +20,9 @@ export default {
type: String, type: String,
default: '', default: '',
required: false required: false
},
roleCode:{
type: String,
} }
}, },
data() { data() {
@ -47,14 +51,23 @@ export default {
}, },
mounted() { mounted() {
this.listStaff() this.listStaff()
this.getNow()
}, },
methods: { methods: {
async listStaff() { async listStaff() {
this.selectLoading = true this.selectLoading = true
try { try {
if (!this.isGet) return; if (!this.isGet) return;
const res = await getStaffList(this.query) if (this.roleCode){
this.staffList = res.data // todo
}else {
const res = await getStaffList(this.query)
this.staffList = res.data
if (this.query){
this.staffSelected = this.staffList.filter(item => item.tel === this.query)[0].id
this.query = null
}
}
} finally { } finally {
this.selectLoading = false this.selectLoading = false
} }
@ -62,6 +75,11 @@ export default {
changeQuery(val) { changeQuery(val) {
this.query = val this.query = val
this.listStaff() this.listStaff()
},
async getNow(){
//
const res = await getUserProfile()
this.changeQuery(res.data.mobile)
} }
} }
} }

View File

@ -108,9 +108,9 @@
<el-button size="mini" type="text" icon="el-icon-view" @click="handleShow(scope.row)" <el-button size="mini" type="text" icon="el-icon-view" @click="handleShow(scope.row)"
>查看 >查看
</el-button> </el-button>
<!-- <el-button size="mini" type="text" icon="el-icon-edit-outline"--> <el-button @click="handleInWares(scope.row)" v-if="scope.row.soStatus === '02'" size="mini" type="text" icon="el-icon-edit-outline"
<!-- >修改--> >入库
<!-- </el-button>--> </el-button>
<el-button size="mini" type="text" icon="el-icon-close" @click="handleVoidSo(scope.row)" <el-button size="mini" type="text" icon="el-icon-close" @click="handleVoidSo(scope.row)"
>作废 >作废
</el-button> </el-button>
@ -123,6 +123,33 @@
/> />
<SoShow :so-by-type="soByType" :is-back="isBack" ref="soShow" /> <SoShow :so-by-type="soByType" :is-back="isBack" ref="soShow" />
<el-dialog title="入库" :visible.sync="dialogVisible" width="80%" v-dialogDrag append-to-body>
<el-table v-loading="inLoading" :data="inItems" :stripe="true" :show-overflow-tooltip="true"
@selection-change="selectRow"
@cell-mouse-enter="handleCellEnter"
@cell-mouse-leave="handleCellLeave"
@cell-click="handleCellClick"
:key="tableKey"
>
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="商品名称" align="center" prop="repairWares.name" />
<el-table-column label="商品编码" align="center" prop="repairWares.code" width="180" />
<el-table-column label="条形码" align="center" prop="repairWares.barCode" width="180" />
<el-table-column label="规格" align="center" prop="repairWares.model" width="180" />
<el-table-column label="采购数量" align="center" prop="goodsCount" width="150" />
<el-table-column label="入库数量" align="center" prop="inCount" width="150">
<div class="item" slot-scope="scope">
<el-input @blur="save(scope.row)" class="item__input" v-model="scope.row.inCount"/>
<span class="item__txt">{{ scope.row.inCount }}</span>
</div>
</el-table-column>
</el-table>
<div slot="footer" class="dialog-footer">
<el-button type="primary" :disabled="selectRows.length === 0" @click="doInWares">确定</el-button>
<el-button @click="dialogVisible = false">取消</el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
@ -132,8 +159,10 @@ import SupplierChoose from "@/views/repair/Components/SupplierChoose.vue";
import CorpChoose from "@/views/repair/Components/CorpChoose.vue"; import CorpChoose from "@/views/repair/Components/CorpChoose.vue";
import StaffChoose from "@/views/repair/Components/StaffChoose.vue"; import StaffChoose from "@/views/repair/Components/StaffChoose.vue";
import {DICT_TYPE} from "@/utils/dict"; import {DICT_TYPE} from "@/utils/dict";
import {getRepairSoPage, voidSo, getRepairSoById} from "@/api/repair/stockOperate/stockOperate"; import {getRepairSoPage, voidSo, getRepairSoById, inWare} from "@/api/repair/stockOperate/stockOperate";
import SoShow from "@/views/repair/stockOperate/Components/SoSow.vue"; import SoShow from "@/views/repair/stockOperate/Components/SoSow.vue";
import {getRepairSoiByIds} from "@/api/repair/stockOperate/stockOperateItem";
import {createUniqueCodeByHead} from "@/utils/createUniqueCode";
export default { export default {
name: "SoIndex", name: "SoIndex",
@ -203,7 +232,19 @@ export default {
showSearch: true, showSearch: true,
list: [], list: [],
loading: false, loading: false,
total: 0 total: 0,
dialogVisible: false,
inItems: [],
inLoading: false,
selectRows: [],
inWaresFormData:{
id: null,
soiList: [],
soNo: null
},
editProp: ['inCount'],
clickCellMap: {},
tableKey: 0
} }
}, },
mounted() { mounted() {
@ -283,11 +324,136 @@ export default {
async handleShow(row){ async handleShow(row){
const res = await getRepairSoById(row.id) const res = await getRepairSoById(row.id)
await this.$refs.soShow.open(res.data) await this.$refs.soShow.open(res.data)
} },
//
async handleInWares(row){
this.inWaresFormData = {
id: null,
soiList: []
}
this.inWaresFormData['id'] = row.id
try {
this.dialogVisible = true
this.inLoading = true
const resRow = await getRepairSoById(row.id)
const ids = resRow.data.goodsList.map(item => item.id)
const res = await getRepairSoiByIds(ids)
this.inItems = res.data
this.inItems = this.inItems.filter(item => item.inCount !== item.goodsCount)
this.inItems = [...this.inItems.map(item => {
return {
...item,
goodsCount: item.goodsCount - item?.inCount | 0,
inCount: item.goodsCount - item?.inCount | 0
}
})]
}finally {
this.inLoading = false
}
},
selectRow(val){
this.selectRows = val
},
async doInWares(){
try {
this.inWaresFormData.soiList = this.selectRows
this.inWaresFormData.soNo = createUniqueCodeByHead("RC")
this.inLoading = true
await inWare(this.inWaresFormData)
this.dialogVisible = false
this.$modal.msgSuccess("入库成功")
await this.pageSo()
}catch{}
},
/** 鼠标移入cell */
handleCellEnter(row, column, cell, event) {
const property = column.property
if (row.id && this.editProp.includes(property)) {
cell.querySelector('.item__txt').classList.add('item__txt--hover')
}
},
/** 鼠标移出cell */
handleCellLeave(row, column, cell, event) {
const property = column.property
if (row.id && this.editProp.includes(property)) {
cell.querySelector('.item__txt').classList.remove('item__txt--hover')
}
},
/** 点击cell */
handleCellClick(row, column, cell, event) {
const property = column.property
if (this.editProp.includes(property)) {
if (!row.id || property !== 'goods') {
// cell
this.saveCellClick(row, cell)
cell.querySelector('.item__txt').style.display = 'none'
cell.querySelector('.item__input').style.display = 'inline'
cell.querySelector('input').focus()
}
}
},
/** 取消编辑状态 */
cancelEditable(cell) {
cell.querySelector('.item__txt').style.display = 'inline'
cell.querySelector('.item__input').style.display = 'none'
},
/** 保存进入编辑的cell */
saveCellClick(row, cell) {
const id = row.id
if (this.clickCellMap[id] !== undefined) {
if (!this.clickCellMap[id].includes(cell)) {
this.clickCellMap[id].push(cell)
}
} else {
this.clickCellMap[id] = [cell]
}
},
/** 保存数据 */
save(row) {
const id = row.id
// cell
this.clickCellMap[id].forEach(cell => {
this.cancelEditable(cell)
})
this.clickCellMap[id] = []
this.tableKey++
this.selectRows = []
},
} }
} }
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.item {
.item__input {
display: none;
width: 100px;
/* 调整elementUI中样式 如果不需要调整请忽略 */
.el-input__inner {
height: 24px !important;
}
/* 调整elementUI中样式 如果不需要调整请忽略 */
.el-input__suffix {
i {
font-size: 12px !important;
line-height: 26px !important;
}
}
}
.item__txt {
box-sizing: border-box;
border: 1px solid transparent;
width: 100px;
line-height: 24px;
padding: 0 8px;
}
.item__txt--hover {
border: 1px solid #dddddd;
border-radius: 4px;
cursor: text;
}
}
</style> </style>

View File

@ -21,15 +21,15 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="单据号" align="center" prop="no" width="200"/> <el-table-column label="单据号" align="center" prop="no" width="200"/>
<el-table-column label="客户车牌" align="center" prop="licenseNumber" /> <el-table-column label="客户车牌" align="center" prop="licenseNumber"/>
<el-table-column label="服务顾问" align="center" prop="adviserName" /> <el-table-column label="服务顾问" align="center" prop="adviserName"/>
<el-table-column label="申请人" align="center" prop="repairName" /> <el-table-column label="申请人" align="center" prop="repairName"/>
<el-table-column label="状态" align="center" prop="status"> <el-table-column label="状态" align="center" prop="status">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :type="DICT_TYPE.TICKET_WARES_STATUS" v-model="scope.row.status" /> <dict-tag :type="DICT_TYPE.TICKET_WARES_STATUS" v-model="scope.row.status"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="备注" align="center" prop="remark" /> <el-table-column label="备注" align="center" prop="remark"/>
<el-table-column label="操作" align="center"> <el-table-column label="操作" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" size="mini" @click="handleDispose(scope.row)" icon="el-icon-edit"> <el-button type="text" size="mini" @click="handleDispose(scope.row)" icon="el-icon-edit">
@ -55,7 +55,7 @@
@selection-change="handleSelect" @selection-change="handleSelect"
:key="tableKey" :key="tableKey"
> >
<el-table-column type="selection" width="80" align="center" /> <el-table-column type="selection" width="80" align="center"/>
<el-table-column label="名称" align="center" prop="waresName" :show-overflow-tooltip="true"/> <el-table-column label="名称" align="center" prop="waresName" :show-overflow-tooltip="true"/>
<el-table-column label="规格" align="center" prop="wares.model" width="180"/> <el-table-column label="规格" align="center" prop="wares.model" width="180"/>
<el-table-column label="领料数量" v-if="type" align="center" prop="waresCount" width="180"> <el-table-column label="领料数量" v-if="type" align="center" prop="waresCount" width="180">
@ -76,10 +76,12 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button type="primary" v-if="type" @click="handlePass" :disabled="selections.length === 0 || selections.filter(item => !item.isStock).length !== 0"> <el-button type="primary" v-if="type" @click="handlePass"
:disabled="selections.length === 0 || selections.filter(item => !item.isStock).length !== 0">
通知领料 通知领料
</el-button> </el-button>
<el-button type="primary" v-else @click="handlePass" :disabled="selections.length === 0 || selections.filter(item => !item.isStock).length !== 0"> <el-button type="primary" v-else @click="handlePass"
:disabled="selections.length === 0 || selections.filter(item => !item.isStock).length !== 0">
通知退料 通知退料
</el-button> </el-button>
<el-button v-if="type" type="primary" @click="handleCreate" :disabled="selections.length === 0"> <el-button v-if="type" type="primary" @click="handleCreate" :disabled="selections.length === 0">
@ -90,14 +92,14 @@
<el-dialog title="采购单" :visible.sync="inStockDialog" width="80%" v-dialogDrag append-to-body> <el-dialog title="采购单" :visible.sync="inStockDialog" width="80%" v-dialogDrag append-to-body>
<el-table <el-table
:data="partList" :data="partList"
:stripe="true" :stripe="true"
:show-overflow-tooltip="true" :show-overflow-tooltip="true"
show-summary show-summary
:summary-method="getSummaries" :summary-method="getSummaries"
@cell-mouse-enter="handleCellEnter" @cell-mouse-enter="handleCellEnter"
@cell-mouse-leave="handleCellLeave" @cell-mouse-leave="handleCellLeave"
@cell-click="handleCellClick" @cell-click="handleCellClick"
> >
<el-table-column label="序号" align="center"> <el-table-column label="序号" align="center">
<template scope="scope"> <template scope="scope">
@ -163,7 +165,7 @@
</el-col> </el-col>
</el-row> </el-row>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button type="danger" @click="handleSubmit">结算</el-button> <el-button type="primary" @click="handleSubmit">确定</el-button>
</div> </div>
</el-dialog> </el-dialog>
</div> </div>
@ -182,12 +184,12 @@ import {getUserProfile} from "@/api/system/user";
export default { export default {
name: "WaresItem", name: "WaresItem",
components: {WarehouseChoose, SoTable}, components: {WarehouseChoose, SoTable},
props:{ props: {
type: Boolean, type: Boolean,
}, },
data(){ data() {
return{ return {
queryParams:{ queryParams: {
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10,
query: null, query: null,
@ -196,13 +198,13 @@ export default {
}, },
showSearch: true, showSearch: true,
loading: false, loading: false,
list:[], list: [],
total: 0, total: 0,
dialogVisible: false, dialogVisible: false,
items:[], items: [],
dialogLoading: false, dialogLoading: false,
selections:[], selections: [],
formData:{}, formData: {},
inStockDialog: false, inStockDialog: false,
partList: [], partList: [],
includeColumn: ['count', 'totalPrice'], includeColumn: ['count', 'totalPrice'],
@ -217,86 +219,75 @@ export default {
mounted() { mounted() {
this.getList() this.getList()
}, },
methods:{ methods: {
// truefalse // truefalse
async handlePass(){ async handlePass() {
// 退 // 退
this.formData.repairSo = { this.formData.repairSo = {
soType: this.type ? "02" : "04", soType: this.type ? "02" : "04",
soNo: createUniqueCodeByHead(this.type ? "LL" : "TL"), soNo: createUniqueCodeByHead(this.type ? "LL" : "TL"),
userId: this.formData.repairId, userId: this.formData.repairId,
userName: this.formData.repairName, userName: this.formData.repairName,
soTime: parseTime(Date.now(), '{y}-{m}-{d}'), soTime: parseTime(Date.now(), '{y}-{m}-{d}'),
soStatus: this.type ? "04" : "07", soStatus: this.type ? "04" : "07",
// purchaseType: "01" // purchaseType: "01"
}
this.formData.repairSois = [...this.selections.map(item => {
return {
soiType: this.type ? '02' : "04",
goodsId: item.waresId,
goodsCount: item.waresCount,
} }
this.formData.repairSois = [...this.selections.map(item => { })]
if (this.type) {
this.formData.items = [...this.selections.map(item => {
return { return {
soiType: this.type ? '02' : "04", id: item.id,
goodsId: item.waresId,
goodsCount: item.waresCount,
}
})]
if (this.type){
this.formData.items = [...this.selections.map(item => {
return {
id: item.id,
}
})]
}
try {
await pass(this.formData)
this.$modal.msgSuccess("处理成功")
await this.getList()
}finally {
this.dialogVisible = false
}
},
// truefalse
async handleCreate(flag){
this.inStockDialog = true
if (flag){
this.partList = [...this.items.map(item => {
return {
...item.wares,
count: item.waresCount,
newPrice: item.wares.purPrice,
totalPrice: item.waresCount * item.wares.purPrice
}
})]
}else {
this.partList = [...this.selections.map(item => {
return {
...item.wares,
count: item.waresCount,
newPrice: item.wares.price,
totalPrice: item.waresCount * item.wares.price
} }
})] })]
} }
try {
await pass(this.formData)
this.$modal.msgSuccess("处理成功")
await this.getList()
} finally {
this.dialogVisible = false
}
},
// truefalse
async handleCreate() {
this.inStockDialog = true
this.partList = [...this.selections.map(item => {
return {
...item.wares,
count: item.waresCount,
newPrice: item.wares.purPrice,
totalPrice: item.waresCount * item.wares.purPrice
}
})]
this.dialogVisible = false this.dialogVisible = false
}, },
async getList(){ async getList() {
try { try {
this.loading = true this.loading = true
const res = await getPage(this.queryParams) const res = await getPage(this.queryParams)
if (res.data){ if (res.data) {
this.list = res.data.records this.list = res.data.records
this.total = res.data.total this.total = res.data.total
} }
}finally { } finally {
this.loading = false this.loading = false
} }
}, },
handleQuery(){ handleQuery() {
this.queryParams.pageNo = 1 this.queryParams.pageNo = 1
this.getList() this.getList()
}, },
resetQuery(){ resetQuery() {
this.resetForm('queryForm') this.resetForm('queryForm')
this.handleQuery() this.handleQuery()
}, },
async handleDispose(row){ async handleDispose(row) {
this.formData = {} this.formData = {}
this.formData = { this.formData = {
...row ...row
@ -308,25 +299,25 @@ export default {
const res = await listTwItem(data) const res = await listTwItem(data)
this.items = res.data this.items = res.data
this.items.forEach(item => { this.items.forEach(item => {
const count = item.waresAlreadyCount ? parseInt(item.waresCount) - parseInt(item.waresAlreadyCount) : item.waresCount const count = item.waresAlreadyCount ? parseInt(item.waresCount) - parseInt(item.waresAlreadyCount) : item.waresCount
item.waresCount = this.type ? count : item.waresAlreadyCount item.waresCount = this.type ? count : item.waresAlreadyCount
item.isStock = this.type ? count <= item.wares.stock : true item.isStock = this.type ? count <= item.wares.stock : true
}) })
this.items = this.items.filter(item => this.type ? item.waresStatus === '02' : item.waresAlreadyCount) this.items = this.items.filter(item => this.type ? item.waresStatus === '02' : item.waresAlreadyCount)
if (!this.type){ if (!this.type) {
this.items = this.items.filter(item => item.waresAlreadyCount !== item.waresBackCount) this.items = this.items.filter(item => item.waresAlreadyCount !== item.waresBackCount)
} }
}finally { } finally {
this.dialogLoading = false this.dialogLoading = false
} }
}, },
getRowClass(row){ getRowClass(row) {
if (this.type && !row.row.isStock){ if (this.type && !row.row.isStock) {
return 'stock' return 'stock'
} }
return '' return ''
}, },
handleSelect(row){ handleSelect(row) {
this.selections = row this.selections = row
}, },
// //
@ -397,8 +388,10 @@ export default {
/** 保存数据 */ /** 保存数据 */
save(row) { save(row) {
// //
row.isStock = this.type ? row.waresCount <= row.wares.stock : row.waresCount <= row.waresAlreadyCount if (row.wares) {
if (!this.type && !row.isStock){ row.isStock = this.type ? row.waresCount <= row.wares.stock : row.waresCount <= row.waresAlreadyCount
}
if (!this.type && !row.isStock) {
this.$modal.msgWarning("退料数量不能超过领取数量") this.$modal.msgWarning("退料数量不能超过领取数量")
row.waresCount = row.waresAlreadyCount row.waresCount = row.waresAlreadyCount
} }
@ -424,18 +417,18 @@ export default {
this.partList.splice(index, 1) this.partList.splice(index, 1)
}, },
// //
async handleSubmit(){ async handleSubmit() {
try { try {
await this.createInit() await this.createInit()
await createRepairSo(this.formData) await createRepairSo(this.formData)
this.inStockDialog = false this.inStockDialog = false
this.$modal.msgSuccess("新增成功") this.$modal.msgSuccess("新增成功")
await this.getList() await this.getList()
}catch{ } catch {
} }
}, },
// //
async createInit(){ async createInit() {
const res = await getUserProfile() const res = await getUserProfile()
this.formData = {} this.formData = {}
this.formData = { this.formData = {
@ -446,8 +439,10 @@ export default {
userName: res.data.nickname, userName: res.data.nickname,
soTime: parseTime(Date.now(), '{y}-{m}-{d}'), soTime: parseTime(Date.now(), '{y}-{m}-{d}'),
itemCount: this.partList.length, itemCount: this.partList.length,
totalPrice: this.partList.reduce((x, y) => {return x + y.totalPrice}, 0), totalPrice: this.partList.reduce((x, y) => {
soStatus: "03", return x + y.totalPrice
}, 0),
soStatus: "02",
remark: this.remark, remark: this.remark,
} }
this.formData.goodsList = [...this.partList.map(item => { this.formData.goodsList = [...this.partList.map(item => {
@ -467,9 +462,10 @@ export default {
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
::v-deep .el-table .stock td{ ::v-deep .el-table .stock td {
color: #ff0000 !important; /* 红色背景 */ color: #ff0000 !important; /* 红色背景 */
} }
.item { .item {
.item__input { .item__input {
display: none; display: none;

View File

@ -14,16 +14,17 @@
end-placeholder="结束日期"> end-placeholder="结束日期">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item v-if="TicketType === 'tp'" label="服务顾问" prop="userId"> <el-form-item v-if="TicketType === 'tp'" label="服务顾问" prop="userId">
<StaffChoose /> <StaffChoose/>
</el-form-item> </el-form-item>
<el-form-item v-if="TicketType === 'tu'" label="维修类别" prop="repairType"> <el-form-item v-if="TicketType === 'tu'" label="维修类别" prop="repairType">
<el-select v-model="queryParams.repairType" size="small"> <el-select v-model="queryParams.repairType" size="small">
<el-option v-for="item in this.getDictDatas(DICT_TYPE.REPAIR_TYPE)" :key="item.value" :label="item.label" :value="item.value" /> <el-option v-for="item in this.getDictDatas(DICT_TYPE.REPAIR_TYPE)" :key="item.value" :label="item.label"
:value="item.value"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item v-if="TicketType === 'tp'" label="类型" prop="repairType"> <el-form-item v-if="TicketType === 'tp'" label="类型" prop="repairType">
<RepairTypeChoose @selected="getRepairType" /> <RepairTypeChoose @selected="getRepairType"/>
</el-form-item> </el-form-item>
<el-form-item label="门店" prop="corpId"> <el-form-item label="门店" prop="corpId">
<CorpChoose v-model="queryParams.corp"/> <CorpChoose v-model="queryParams.corp"/>
@ -41,8 +42,9 @@
</el-col> </el-col>
<right-toolbar :showSearch.sync="showSearch"></right-toolbar> <right-toolbar :showSearch.sync="showSearch"></right-toolbar>
</el-row> </el-row>
<TicketTable :ticket-type="TicketType" :list="list" @setVoid="getPage" :is-w-x-c-w="isWXCW"/> <TicketTable :ticket-type="TicketType" :list="list" @setVoid="getPage" :is-w-x-c-w="isCW"/>
<pagination @pagination="getPage" v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" <pagination @pagination="getPage" v-show="total > 0" :total="total" :page.sync="queryParams.pageNo"
:limit.sync="queryParams.pageSize"
/> />
</div> </div>
</template> </template>
@ -63,8 +65,8 @@ export default {
RepairTypeChoose, RepairTypeChoose,
CorpChoose CorpChoose
}, },
props:{ props: {
TicketType:{ TicketType: {
type: String, type: String,
defaultValue: 'tp', defaultValue: 'tp',
required: true required: true
@ -72,7 +74,7 @@ export default {
}, },
data() { data() {
return { return {
queryParams:{ queryParams: {
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10,
ticketsStatus: null, ticketsStatus: null,
@ -85,25 +87,30 @@ export default {
showSearch: true, showSearch: true,
total: 0, total: 0,
list: [], list: [],
isWXCW: false isCW: false
} }
}, },
mounted() { mounted() {
this.getPage() this.getPage()
this.getIsWXCW() this.getIsCW()
}, },
methods: { methods: {
// //
async getIsWXCW(){ async getIsCW() {
const res = await checkRole("wxcw") const kjRes = await checkRole("kj")
this.isWXCW = res.data if (kjRes.data) {
this.isCW = kjRes.data
} else {
const cnRes = await checkRole("cn")
this.isCW = cnRes.data
}
}, },
// //
getRepairType(data){ getRepairType(data) {
console.log(data) console.log(data)
}, },
async getPage(){ async getPage() {
switch (this.TicketType){ switch (this.TicketType) {
case "tu": case "tu":
this.queryParams.ticketsStatus = "01" this.queryParams.ticketsStatus = "01"
break break
@ -121,11 +128,11 @@ export default {
this.list = res.data.records this.list = res.data.records
this.total = res.data.total this.total = res.data.total
}, },
handleQuery(){ handleQuery() {
this.queryParams.pageNo = 1 this.queryParams.pageNo = 1
this.getPage() this.getPage()
}, },
handleReset(){ handleReset() {
this.resetForm("queryForm") this.resetForm("queryForm")
this.queryParams.corp = null this.queryParams.corp = null
this.handleQuery() this.handleQuery()

View File

@ -104,7 +104,7 @@
<el-button size="mini" type="text" icon="el-icon-view" @click="handleShow(scope.row)" <el-button size="mini" type="text" icon="el-icon-view" @click="handleShow(scope.row)"
>查看 >查看
</el-button> </el-button>
<el-button v-if="TicketType === 'tu' && isWXCW && !scope.row.payType" size="mini" type="text" icon="el-icon-finished" <el-button v-if="TicketType === 'tu' && isWXCW && scope.row.isFinish === '1'" size="mini" type="text" icon="el-icon-finished"
@click="handlePaid(scope.row)" @click="handlePaid(scope.row)"
>结算 >结算
</el-button> </el-button>

View File

@ -1,6 +1,6 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-dialog title="客户信息" :visible.sync="dialogVisible" width="80%" v-dialogDrag append-to-body> <el-dialog title="客户信息" ref="dialogRef" :visible.sync="dialogVisible" width="80%" v-dialogDrag append-to-body v-loading="dialogLoading">
<el-form size="small" ref="formRef" :model="formData" :rules="formRules" v-loading="formLoading" <el-form size="small" ref="formRef" :model="formData" :rules="formRules" v-loading="formLoading"
label-width="100px"> label-width="100px">
<el-collapse v-model="activeNames"> <el-collapse v-model="activeNames">
@ -68,16 +68,16 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="2"> <!-- <el-row :gutter="2">-->
<el-col :span="12"> <!-- <el-col :span="12">-->
<el-form-item label="选择会员" prop="userInfo.memberLevelId"> <!-- <el-form-item label="选择会员" prop="userInfo.memberLevelId">-->
<el-select v-model="formData.userInfo.memberLevelId" placeholder="请选择会员"> <!-- <el-select v-model="formData.userInfo.memberLevelId" placeholder="请选择会员">-->
<el-option v-for="(item,index) in levelList" :key="item.id" <!-- <el-option v-for="(item,index) in levelList" :key="item.id"-->
:label="item.name" :value="item.id"/> <!-- :label="item.name" :value="item.id"/>-->
</el-select> <!-- </el-select>-->
</el-form-item> <!-- </el-form-item>-->
</el-col> <!-- </el-col>-->
</el-row> <!-- </el-row>-->
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="联系地址" prop="userInfo.address"> <el-form-item label="联系地址" prop="userInfo.address">
@ -318,26 +318,34 @@ export default {
sexDictDatas: getDictDatas(DICT_TYPE.DICT_SYS_USER_SEX), sexDictDatas: getDictDatas(DICT_TYPE.DICT_SYS_USER_SEX),
cusBusiTypeDictDatas: getDictDatas(DICT_TYPE.DICT_CUS_BUSI_TYPE), cusBusiTypeDictDatas: getDictDatas(DICT_TYPE.DICT_CUS_BUSI_TYPE),
buttonLoading: false, buttonLoading: false,
dialogLoading: null,
} }
}, },
methods: { methods: {
async open(data) { async open(data) {
this.reset()
if (data?.userInfo?.id){
this.formData.userInfo = {
...this.formData.userInfo,
...data.userInfo
}
}
if (data?.carInfo?.id){
this.formData.carInfo = {
...this.formData.carInfo,
...data.carInfo,
brandAndModel: [data.carInfo?.carBrand, data.carInfo?.carModel]
}
}
await this.listLevel()
this.dialogVisible = true this.dialogVisible = true
try {
this.reset()
// this.dialogLoading = this.$loading({
// target: this.$refs.dialogRef.$el
// })
if (data?.userInfo?.id){
this.formData.userInfo = {
...this.formData.userInfo,
...data.userInfo
}
}
if (data?.carInfo?.id){
this.formData.carInfo = {
...this.formData.carInfo,
...data.carInfo,
brandAndModel: [data.carInfo?.carBrand, data.carInfo?.carModel]
}
}
// await this.listLevel()
}finally {
// this.dialogLoading.close()
}
}, },
async compute(){ async compute(){
this.buttonLoading = true this.buttonLoading = true