Browse Source

完善预约登记

zhanglei
yunuo970428 1 year ago
parent
commit
399247eff9
  1. 34
      yxt-as-ui/src/api/Common/dictcommons.js
  2. 23
      yxt-as-ui/src/api/operation/preregistration.js
  3. 154
      yxt-as-ui/src/views/operation/preregistration/preregistration.vue
  4. 274
      yxt-as-ui/src/views/operation/preregistration/preregistrationAdd.vue
  5. 170
      yxt-as-ui/src/views/operation/preregistration/preregistrationInfo.vue
  6. 196
      yxt-as-ui/src/views/operation/preregistration/relation/customer.vue

34
yxt-as-ui/src/api/Common/dictcommons.js

@ -99,41 +99,16 @@ export function getGysTypeByOrgSid(data) {
})
}
// 根据分公司全路径sid和车型sid获取合格证公告型号
export function getAnnounceList(data) {
return request({
url: '/base/v1/basevehmodelannouncementmodel/getAnnounceList',
method: 'get',
params: data
})
}
// 根据分公司全路径sid、当前登录用户sid、是否打包获取已备案(有效期内)的产品政策信息
export function selectList(data) {
return request({
url: '/riskcenter/v1/LoanFinPolicy/selectList',
method: 'get',
params: data
})
}
// 获取产品政策下的其它融信息,或分公司下备案通过的其它融
export function selectListByOther(data) {
// 根据当前登录用户的全路径查询相应部门下的所有人
export function selAllByOrgSidPath(data) {
return request({
url: '/riskcenter/v1/LoanFinOtherPolicy/selectList',
method: 'get',
url: '/portal/v1/sysstafforg/selAllByOrgSidPath',
method: 'post',
params: data
})
}
// 销售订单--编辑、详情初始化
export function fetchDetails(data) {
return request({
url: '/buscenter/v1/bussalesorder/fetchDetailsBySid/' + data,
method: 'get'
})
}
// 分公司全路径sid获取工种
export function getServiceType(data) {
return request({
@ -152,7 +127,6 @@ export function selSubjectInfo(data) {
})
}
//
// 查询分页列表 -- 客户列表
export function customerListPage(params) {
return request({

23
yxt-as-ui/src/api/operation/preregistration.js

@ -10,14 +10,6 @@ export default {
headers: { 'Content-Type': 'application/json' }
})
},
customerListPage: function(params) {
return request({
url: '/as/v1/AsServiceItem/listPage',
method: 'post',
data: params,
headers: { 'Content-Type': 'application/json' }
})
},
saveOrUpdate: function(data) {
return request({
url: '/as/v1/asbusreservebill/save',
@ -47,5 +39,20 @@ export default {
data: data,
headers: { 'Content-Type': 'application/json' }
})
},
invalid: function(data) {
return request({
url: '/as/v1/asbusreservebill/invalid',
method: 'post',
params: data
})
},
saveTrackingRecord: function(data) {
return request({
url: '/as/v1/asbusreservebill/saveTrackingRecord',
method: 'post',
data: data,
headers: { 'Content-Type': 'application/json' }
})
}
}

154
yxt-as-ui/src/views/operation/preregistration/preregistration.vue

@ -2,14 +2,43 @@
<div class="app-container">
<!--列表页面-->
<div v-show="viewState == 1">
<button-bar view-title="预约登记管理" ref="btnbar" :btndisabled="btndisabled" @btnhandle="btnHandle"/>
<button-bar view-title="预约管理" ref="btnbar" :btndisabled="btndisabled" @btnhandle="btnHandle"/>
<!--Start查询列表部分-->
<div class="main-content">
<div class="searchcon">
<el-button size="small" class="searchbtn" @click="clicksearchShow">{{ searchxianshitit }}</el-button>
<div v-show="isSearchShow" class="search">
<el-form ref="listQueryform" :inline="true" :model="listQuery" label-width="100px" class="tab-header">
<el-form-item label="单据状态">
<el-form-item label="分公司">
<el-input v-model="listQuery.params.useOrgName" placeholder="" clearable/>
</el-form-item>
<el-form-item label="制单部门">
<el-input v-model="listQuery.params.createDept" placeholder="" clearable/>
</el-form-item>
<el-form-item label="制单人">
<el-input v-model="listQuery.params.createByName" placeholder="" clearable/>
</el-form-item>
<el-form-item label="单据编号">
<el-input v-model="listQuery.params.billNo" placeholder="" clearable/>
</el-form-item>
<el-form-item label="制单日期">
<el-date-picker v-model="listQuery.params.startCreateDate" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
<span style="padding: 0 8px"></span>
<el-date-picker v-model="listQuery.params.endCreateDate" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
</el-form-item>
<el-form-item label="客户名称">
<el-input v-model="listQuery.params.customerName" placeholder="" clearable/>
</el-form-item>
<el-form-item label="车牌号">
<el-input v-model="listQuery.params.vehMark" placeholder="" clearable/>
</el-form-item>
<el-form-item label="车架号">
<el-input v-model="listQuery.params.vinNo" placeholder="" clearable/>
</el-form-item>
<el-form-item label="联系电话">
<el-input v-model="listQuery.params.mobile" placeholder="" clearable/>
</el-form-item>
<el-form-item label="服务顾问">
<el-input v-model="listQuery.params.state" placeholder="" clearable/>
</el-form-item>
<el-form-item label="预约日期">
@ -17,6 +46,12 @@
<span style="padding: 0 8px"></span>
<el-date-picker v-model="listQuery.params.endDate" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
</el-form-item>
<el-form-item label="状态">
<el-select v-model="listQuery.params.state" clearable placeholder="请选择" filterable>
<el-option v-for="item in state_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey">
</el-option>
</el-select>
</el-form-item>
</el-form>
<div class="btn" style="text-align: center;">
<el-button type="primary" icon="el-icon-search" size="small" @click="handleFilter">查询</el-button>
@ -26,7 +61,7 @@
</div>
<!--End查询列表部分-->
<div class="listtop">
<div class="tit">预约登记列表</div>
<div class="tit">预约列表</div>
<pageye v-show="list.length > 0" :total="listQuery.total" :page.sync="listQuery.current" :limit.sync="listQuery.size" class="pagination" @pagination="getList"/>
</div>
<!--Start 主页面主要部分 -->
@ -34,27 +69,29 @@
<el-table :key="tableKey" v-loading="listLoading" :data="list" border style="width: 100%;" @selection-change="handleSelectionChange">
<el-table-column type="selection" align="center" width="50"/>
<el-table-column label="序号" type="index" width="80" :index="indexMethod" align="center"/>
<el-table-column label="操作" width="180px" align="center">
<el-table-column label="单据编号" align="center" width="130">
<template slot-scope="scope">
<el-button type="primary" size="mini" @click="toEdit(scope.row)">办理</el-button>
<el-button type="primary" size="mini" @click="toInfo(scope.row)">查看</el-button>
<span class="bluezi" @click="toInfo(scope.row)">{{ scope.row.billNo }}</span>
</template>
</el-table-column>
<el-table-column prop="billNo" label="工单号" align="center" width="130" />
<el-table-column prop="createByName" label="制单人" align="center" width="100" />
<el-table-column prop="customerName" label="客户" align="center" width="100" />
<el-table-column prop="vehMark" label="车辆牌照" align="center" min-width="300" />
<el-table-column prop="mobile" label="联系方式" align="center" min-width="200" />
<el-table-column prop="vehModel" label="车型" align="center" width="100" />
<el-table-column prop="reserveStart" label="预约日期起始" align="center" width="120" />
<el-table-column prop="reserveEnd" label="预约日期截止" align="center" width="120" />
<el-table-column prop="waitorName" label="服务顾问" align="center" width="100" />
<el-table-column label="状态" align="center" width="100">
<template slot-scope="scope">
<span>{{ scope.row.state == '1' ? '是' : '否' }}</span>
<span>{{ scope.row.state == '1' ? '未完成' : scope.row.state == '2' ? '已完成' : scope.row.state == '0' ? '作废' : '' }}</span>
</template>
</el-table-column>
<el-table-column prop="remarks" label="备注" align="center" width="80" />
<el-table-column prop="useOrgName" label="分公司" align="center" width="100" />
<el-table-column prop="createDept" label="制单部门" align="center" width="100" />
<el-table-column prop="createByName" label="制单人" align="center" width="100" />
<el-table-column prop="createTime" label="制单日期" align="center" width="120" />
<el-table-column prop="customerName" label="客户名称" align="center" width="100" />
<el-table-column prop="vehMark" label="车牌号" align="center" width="120" />
<el-table-column prop="vinNo" label="车架号" align="center" width="120" />
<el-table-column prop="mobile" label="联系电话" align="center" width="100" />
<el-table-column prop="reserveStart" label="预约起始时间" align="center" width="130" />
<el-table-column prop="reserveEnd" label="预约截止时间" align="center" width="130" />
<el-table-column prop="waitorName" label="服务顾问" align="center" width="100" />
<el-table-column prop="reserveEquip" label="预约设备" align="center" width="100" />
<el-table-column prop="remarks" label="备注" align="center" min-width="100" />
</el-table>
</div>
<!--End 主页面主要部分-->
@ -68,6 +105,8 @@
</div>
<!--新增及修改 -->
<preregistrationAdd v-show="viewState == 2 || viewState == 3" ref="divAdd" @doback="resetState" @reloadlist="getList"/>
<!-- 详情 -->
<preregistrationInfo v-show="viewState == 4" ref="divInfo" @doback="resetState" />
</div>
</template>
@ -77,13 +116,16 @@ import pageye from '@/components/pagination/pageye'
import ButtonBar from '@/components/ButtonBar'
import req from '@/api/operation/preregistration'
import preregistrationAdd from './preregistrationAdd'
import preregistrationInfo from './preregistrationInfo'
export default {
name: 'Preregistration',
components: {
Pagination,
pageye,
ButtonBar,
preregistrationAdd
preregistrationAdd,
preregistrationInfo
},
data() {
return {
@ -96,6 +138,13 @@ export default {
btnKey: 'toAdd',
btnLabel: '新增'
},
{
type: 'primary',
size: 'small',
icon: 'edit',
btnKey: 'toEdit',
btnLabel: '编辑'
},
{
type: 'danger',
size: 'small',
@ -117,12 +166,27 @@ export default {
tableKey: 0,
list: [],
sids: [], // SIDs
states: [],
state_list: [
{
dictKey: '0',
dictValue: '已完成'
},
{
dictKey: '1',
dictValue: '未完成'
},
{
dictKey: '2',
dictValue: '作废'
}
],
FormLoading: false,
listLoading: false,
//
listQuery: {
current: 1,
size: 10,
size: 5,
total: 0,
params: {
startDate: '',
@ -130,9 +194,17 @@ export default {
customerName: '',
mobile: '',
vehMark: '',
vehModel: '',
useOrgSid: '',
state: ''
vinNo: '',
state: '',
userSid: '',
orgPath: '',
menuUrl: '',
useOrgName: '',
createDept: '',
createByName: '',
billNo: '',
startCreateDate: '',
endCreateDate: ''
}
}
}
@ -160,6 +232,9 @@ export default {
case 'toAdd':
this.toAdd()
break
case 'toEdit':
this.toEdit()
break
case 'doDel':
this.doDel()
break
@ -173,10 +248,13 @@ export default {
// sid
handleSelectionChange(row) {
const aa = []
const bb = []
row.forEach(element => {
aa.push(element.sid)
bb.push(element.state)
})
this.sids = aa
this.states = bb
},
//
indexMethod(index) {
@ -187,7 +265,9 @@ export default {
//
getList() {
this.listLoading = true
this.listQuery.params.userSid = window.sessionStorage.getItem('userSid')
this.listQuery.params.orgPath = window.sessionStorage.getItem('defaultOrgPath')
this.listQuery.params.menuUrl = this.$route.path
req.listPage(this.listQuery).then(response => {
this.listLoading = false
if (response.success) {
@ -208,7 +288,7 @@ export default {
handleReset() {
this.listQuery = {
current: 1,
size: 10,
size: 5,
total: 0,
params: {
startDate: '',
@ -216,9 +296,17 @@ export default {
customerName: '',
mobile: '',
vehMark: '',
vehModel: '',
useOrgSid: '',
state: ''
vinNo: '',
state: '',
userSid: '',
orgPath: '',
menuUrl: '',
useOrgName: '',
createDept: '',
createByName: '',
billNo: '',
startCreateDate: '',
endCreateDate: ''
}
}
this.getList()
@ -227,9 +315,17 @@ export default {
this.viewState = 2
this.$refs['divAdd'].showAdd()
},
toEdit(row) {
this.viewState = 3
this.$refs['divAdd'].showEdit(row)
toEdit() {
if (this.sids.length === 1) {
if (this.states[0] === '1') {
this.viewState = 3
this.$refs['divAdd'].showEdit(this.sids[0])
} else {
this.$message({ showClose: true, type: 'error', message: '请选择一条状态为未完成的记录进行操作' })
}
} else {
this.$message({ showClose: true, type: 'error', message: '请选择一条记录进行操作' })
}
},
toInfo(row) {
this.viewState = 4

274
yxt-as-ui/src/views/operation/preregistration/preregistrationAdd.vue

@ -4,72 +4,49 @@
<div class="tab-header webtop">
<div>{{ viewTitle }}</div>
<div>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="selectCustomer()">选择客户</el-button>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="saveOrUpdate()">保存</el-button>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="toService()">转维修单</el-button>
<el-button type="danger" size="small" :disabled="submitdisabled" @click="toCancellation()">作废</el-button>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
</div>
<div class="listconadd">
<el-form ref="form_obj" :model="formobj" :rules="rules" class="formaddcopy02">
<el-row style="border-top: 1px solid #e0e3eb">
<el-col :span="24">
<div class="span-sty">客户</div>
<el-form-item>
<el-popover placement="right" width="600" trigger="click">
<div>
<el-table :data="clientData" v-loading="clientLoading" highlight-current-row @current-change="clientCurrentChange">
<el-table-column fixed prop="vehMark" label="车辆牌照" align="center" width="130" />
<el-table-column prop="name" label="客户" align="center" width="100" />
<el-table-column prop="mobile" label="联系方式" align="center" min-width="300" />
<el-table-column prop="orgName" label="客户单位" align="center" width="100" />
</el-table>
<el-pagination :page.sync="clientQuery.current" :page-size="clientQuery.size" layout="total, pager" :total="clientQuery.total" />
</div>
<el-input slot="reference" class="addinputInfo" style="width: 20%" v-model="formobj.customerName" @input="clientInput(formobj.customerName)" clearable placeholder="客户"/>
</el-popover>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">客户</div>
<el-form-item><span class="addinputInfo">{{ formobj.customerName }}</span></el-form-item>
<div class="span-sty">制单人</div>
<el-form-item><span class="addinputInfo">{{ formobj.createByName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">车辆牌照</div>
<el-form-item><span class="addinputInfo">{{ formobj.vehMark }}</span></el-form-item>
<div class="span-sty">制单部门</div>
<el-form-item><span class="addinputInfo">{{ formobj.createDept }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">联系电话</div>
<el-form-item><span class="addinputInfo">{{ formobj.mobile }}</span></el-form-item>
<div class="span-sty">制单日期</div>
<el-form-item><span class="addinputInfo">{{ formobj.createTime }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">车型</div>
<el-form-item><span class="addinputInfo">{{ formobj.vehModel }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">单号</div>
<el-form-item><span class="addinputInfo">{{ formobj.billNo }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">预约服务顾问</div>
<el-form-item><span class="addinputInfo">{{ formobj.waitorName }}</span></el-form-item>
<el-form-item>
<el-select class="addinputInfo" v-model="formobj.waitorName" placeholder="请选择" @change="waitorChange" clearable filterable>
<el-option v-for="item in user_list" :key="item.sid" :label="item.name" :value="item.name"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-col :span="8">
<div class="span-sty">预约设备</div>
<el-form-item><el-input class="addinputInfo addinputw" v-model="formobj.reserveEquip" clearable placeholder="" /></el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="8">
<div class="span-sty">预约日期</div>
<el-form-item>
<div class="addinputInfo">
<el-date-picker v-model="formobj.reserveStart" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期" />
<span style="padding: 0 8px"></span>
<el-date-picker v-model="formobj.reserveEnd" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期" />
<el-date-picker v-model="formobj.reserveStart" style="width: 140px" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期" />
<span style="padding: 0 4px"></span>
<el-date-picker v-model="formobj.reserveEnd" style="width: 140px" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期" />
</div>
</el-form-item>
</el-col>
@ -80,9 +57,34 @@
<el-form-item><el-input class="addinputInfo addinputw" v-model="formobj.remarks" clearable placeholder="" /></el-form-item>
</el-col>
</el-row>
<div class="title">客户信息</div>
<el-row>
<el-col :span="8">
<div class="span-sty">客户</div>
<el-form-item><span class="addinputInfo">{{ formobj.customerName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">联系电话</div>
<el-form-item><span class="addinputInfo">{{ formobj.mobile }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">车牌号/车架号</div>
<el-form-item><span class="addinputInfo">{{ formobj.vehMark }}/{{ formobj.vinNo }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">客户单位</div>
<el-form-item><span class="addinputInfo">{{ formobj.customerOrg }}</span></el-form-item>
</el-col>
</el-row>
<div class="title">服务项目</div>
<el-table :key="serviceKey" :data="formobj.sitemVos" :index="index" border style="width: 100%">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column align="center" width="70" :render-header="serviceHeader">
<el-table-column align="center" width="70">
<template slot="header">
<i class="add-btn-icon el-icon-plus" style="color: red;font-size:20px" @click="serviceAdd"></i>
</template>
<template slot-scope="scope">
<i class="el-icon-delete" @click="serviceDelete(scope.$index)"></i>
</template>
@ -125,38 +127,52 @@
</template>
</el-table-column>
</el-table>
<div v-show="formobj.sid !== ''">
<div class="title">跟踪记录</div>
<el-row style="display: flex;flex-direction: row;justify-content: flex-start;align-items: center;">
<el-col :span="24">
<el-button type="primary" size="small" @click="handleClick('已联系,车主会如约来店')">已联系,车主会如约来店</el-button>
<el-button type="primary" size="small" @click="handleClick('已联系,电话未接听')">已联系,电话未接听</el-button>
<el-button type="primary" size="small" @click="handleClick('已联系,无效预约')">已联系,无效预约</el-button>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item><el-input v-model="formobj.trackLogs" type="textarea" :autosize="{ minRows: 2, maxRows: 6}" clearable placeholder="" /></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-button type="primary" size="small" @click="handleAdd">添加跟踪记录</el-button>
</el-col>
</el-row>
</div>
</el-form>
</div>
</div>
<!-- 选择客户 -->
<customer v-show="viewState == 2" ref="divCus" @backData="backData" @doback="resetState"/>
</div>
</template>
<script>
import req from '@/api/operation/preregistration'
import maintenanceitem from '@/api/basicinformation/maintenanceitem'
import { customerListPage } from '@/api/Common/dictcommons'
import { selAllByOrgSidPath } from '@/api/Common/dictcommons'
import customer from './relation/customer'
export default {
name: 'PreregistrationAdd',
components: {
customer
},
data() {
return {
viewTitle: '',
viewState: 1,
submitdisabled: false,
index: 0,
// client
clientKey: 1,
clientLoading: false,
clientQuery: {
current: 1,
size: 2,
total: 0,
params: {
queryName: '',
useOrgSid: ''
}
},
clientData: [],
user_list: [],
// service
serviceKey: 1,
serviceLoading: false,
@ -185,26 +201,56 @@ export default {
customerName: '',
mobile: '',
vehMark: '',
vehModel: '',
useOrgSid: '',
createOrgSid: '',
sitemVos: []
sitemVos: [],
orgPath: '',
createTime: '',
vinNo: '',
trackLogs: '',
createDeptSid: '',
createDept: '',
customerOrg: ''
},
rules: {}
}
},
methods: {
init() {
selAllByOrgSidPath({ orgSidPath: window.sessionStorage.getItem('defaultOrgPath') }).then((resp) => {
if (resp.success) {
this.user_list = resp.data
}
})
},
showAdd() {
this.viewTitle = '【新增】预约登记'
this.viewTitle = '【新增】预约'
this.$nextTick(() => {
this.$refs['form_obj'].clearValidate()
})
this.init()
this.formobj.orgSidPath = window.sessionStorage.getItem('defaultOrgPath')
this.formobj.createByName = window.sessionStorage.getItem('name')
this.formobj.createBySid = window.sessionStorage.getItem('userSid')
this.formobj.createDept = window.sessionStorage.getItem('defaultOrgPathName').substring(window.sessionStorage.getItem('defaultOrgPathName').lastIndexOf('/') + 1)
this.formobj.createDeptSid = window.sessionStorage.getItem('defaultOrgPath').substring(window.sessionStorage.getItem('defaultOrgPath').lastIndexOf('/') + 1)
var nowDate = new Date()
var date = {
year: nowDate.getFullYear(),
month: nowDate.getMonth() + 1,
day: nowDate.getDate()
}
this.formobj.createTime = date.year + '-' + (date.month >= 10 ? date.month : '0' + date.month) + '-' + (date.day >= 10 ? date.day : '0' + date.day)
},
showEdit() {
this.viewTitle = '【编辑】预约登记'
showEdit(sid) {
this.viewTitle = '【编辑】预约'
this.$nextTick(() => {
this.$refs['form_obj'].clearValidate()
})
this.init()
req.fetchBySid(sid).then((res) => {
if (res.success) {
this.formobj = res.data
}
})
},
getNumber(val, limit) {
val = val.replace(/[^0-9.]/g, '') //
@ -224,42 +270,26 @@ export default {
}
return val
},
clientInput(value) {
this.clientQuery.params.queryName = value
this.clientLoading = true
customerListPage(this.clientQuery).then((response) => {
if (response.success) {
this.clientLoading = false
this.clientData = response.data.records
this.clientQuery.total = response.data.total
} else {
this.serviceLoading = false
this.clientData = []
this.clientQuery.total = 0
}
})
selectCustomer() {
this.viewState = 2
},
clientCurrentChange(value) {
backData(value) {
this.viewState = 1
value = JSON.parse(JSON.stringify(value))
this.formobj.customerName = value.name
this.formobj.vehMark = value.vehMark
this.formobj.customerSid = value.sid
this.formobj.mobile = value.mobile
document.body.click()
this.formobj.vehMark = value.vehMark
this.formobj.vinNo = value.vinNo
this.formobj.customerOrg = value.orgName
},
//
serviceHeader(h, { column }) {
return h(
'div',
[
h('span', column.label),
h('i', {
class: 'add-btn-icon el-icon-plus',
style: 'color: red;font-size:20px',
on: {
click: this.serviceAdd //
}
})
]
)
waitorChange(value) {
const choose = this.user_list.filter((item) => item.name === value)
if (choose.length > 0 && choose !== null) {
this.formobj.waitorSid = choose[0].sid
} else {
this.formobj.waitorSid = ''
}
},
serviceAdd() {
this.formobj.sitemVos.push({
@ -307,6 +337,20 @@ export default {
computeGSS(row) {
row.hours = Math.round((parseFloat(row.price === '' ? '0' : row.price) / parseFloat(row.hourPrice === '' ? '0' : row.hourPrice)) * 100) / 100
},
handleClick(value) {
this.formobj.trackLogs = value
},
handleAdd() {
if (this.formobj.trackLogs !== '') {
req.saveTrackingRecord(this.formobj).then((res) => {
if (res.success) {
this.$message({ showClose: true, type: 'success', message: '添加成功' })
}
})
} else {
this.$message({ showClose: true, type: 'error', message: '跟踪记录不能为空' })
}
},
saveOrUpdate() {
this.$refs['form_obj'].validate((valid) => {
if (valid) {
@ -345,6 +389,34 @@ export default {
}
})
},
toCancellation() {
const tip = '请确认是否作废该预约单'
this.$confirm(tip, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
const loading = this.$loading({
lock: true,
text: 'Loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
})
req.invalid({ sid: this.formobj.sid }).then((res) => {
if (res.success) {
loading.close()
this.$message({ showClose: true, type: 'success', message: '作废成功' })
this.handleReturn('true')
}
}).catch(() => {
loading.close()
})
}).catch(() => {
})
},
resetState() {
this.viewState = 1
},
handleReturn(isreload) {
if (isreload === 'true') this.$emit('reloadlist')
this.formobj = {
@ -362,10 +434,14 @@ export default {
customerName: '',
mobile: '',
vehMark: '',
vehModel: '',
useOrgSid: '',
createOrgSid: '',
sitemVos: []
sitemVos: [],
orgPath: '',
createTime: '',
vinNo: '',
trackLogs: '',
createDeptSid: '',
createDept: '',
customerOrg: ''
}
this.submitdisabled = false
this.$emit('doback')

170
yxt-as-ui/src/views/operation/preregistration/preregistrationInfo.vue

@ -0,0 +1,170 @@
<template>
<div class="app-container">
<div v-show="viewState == 1">
<div class="tab-header webtop">
<div>{{ viewTitle }}</div>
<div>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
</div>
<div class="listconadd">
<el-form ref="form_obj" :model="formobj" class="formaddcopy02">
<el-row style="border-top: 1px solid #e0e3eb">
<el-col :span="8">
<div class="span-sty">制单人</div>
<el-form-item><span class="addinputInfo">{{ formobj.createByName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">制单部门</div>
<el-form-item><span class="addinputInfo">{{ formobj.createDept }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">制单日期</div>
<el-form-item><span class="addinputInfo">{{ formobj.createTime }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">预约服务顾问</div>
<el-form-item><span class="addinputInfo">{{ formobj.waitorName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">预约设备</div>
<el-form-item><span class="addinputInfo">{{ formobj.reserveEquip }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">预约时间</div>
<el-form-item><span class="addinputInfo">{{ formobj.reserveStart }} {{ formobj.reserveEnd }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">备注</div>
<el-form-item><span class="addinputInfo">{{ formobj.remarks }}</span></el-form-item>
</el-col>
</el-row>
<div class="title">客户信息</div>
<el-row>
<el-col :span="8">
<div class="span-sty">客户名称</div>
<el-form-item><span class="addinputInfo">{{ formobj.customerName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">联系电话</div>
<el-form-item><span class="addinputInfo">{{ formobj.mobile }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">车牌号/车架号</div>
<el-form-item><span class="addinputInfo">{{ formobj.vehMark }}/{{ formobj.vinNo }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">客户单位</div>
<el-form-item><span class="addinputInfo">{{ formobj.customerOrg }}</span></el-form-item>
</el-col>
</el-row>
<div class="title">服务项目</div>
<el-table :key="serviceKey" :data="formobj.sitemVos" :index="index" border style="width: 100%">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center" />
<el-table-column prop="serviceItem" label="服务项目" align="center" width="150" />
<el-table-column prop="hourPrice" label="工时单价" align="center" width="100" />
<el-table-column prop="hours" label="工时数" align="center" width="100" />
<el-table-column prop="price" label="销售价" align="center" width="100" />
<el-table-column prop="remarks" label="备注" align="center" min-width="200" />
</el-table>
<div class="title">跟踪记录</div>
<el-row>
<el-col :span="24">
<el-form-item><span>{{ formobj.trackLogs }}</span></el-form-item>
</el-col>
</el-row>
</el-form>
</div>
</div>
</div>
</template>
<script>
import req from '@/api/operation/preregistration'
export default {
data() {
return {
viewTitle: '',
viewState: 1,
index: 0,
serviceKey: 0,
formobj: {
sid: '',
createBySid: '',
remarks: '',
createByName: '',
billNo: '',
reserveStart: '',
reserveEnd: '',
waitorSid: '',
waitorName: '',
reserveEquip: '',
customerSid: '',
customerName: '',
mobile: '',
vehMark: '',
sitemVos: [],
orgPath: '',
createTime: '',
vinNo: '',
trackLogs: '',
createDeptSid: '',
createDept: '',
customerOrg: ''
}
}
},
methods: {
showInfo(row) {
this.viewTitle = '预约单详情'
req.fetchBySid(row.sid).then((res) => {
if (res.success) {
this.formobj = res.data
}
})
},
handleReturn() {
this.formobj = {
sid: '',
createBySid: '',
remarks: '',
createByName: '',
billNo: '',
reserveStart: '',
reserveEnd: '',
waitorSid: '',
waitorName: '',
reserveEquip: '',
customerSid: '',
customerName: '',
mobile: '',
vehMark: '',
sitemVos: [],
orgPath: '',
createTime: '',
vinNo: '',
trackLogs: '',
createDeptSid: '',
createDept: '',
customerOrg: ''
}
this.$emit('doback')
},
}
}
</script>
<style scoped>
.span-sty {
width: 130px !important;
}
.addinputInfo {
margin-left: 120px !important;
}
</style>

196
yxt-as-ui/src/views/operation/preregistration/relation/customer.vue

@ -0,0 +1,196 @@
<template>
<div class="app-container">
<!--列表页面-->
<div v-show="viewState == 1">
<button-bar view-title="选择客户" ref="btnbar" :btndisabled="btndisabled" @btnhandle="btnHandle"/>
<!--Start查询列表部分-->
<div class="main-content">
<div class="searchcon">
<el-button size="small" class="searchbtn" @click="clicksearchShow">{{ searchxianshitit }}</el-button>
<div v-show="isSearchShow" class="search">
<el-form ref="listQueryform" :inline="true" :model="listQuery" class="tab-header">
<el-form-item label="客户名称">
<el-input v-model="listQuery.params.name" placeholder="" clearable/>
</el-form-item>
<el-form-item label="车牌号">
<el-input v-model="listQuery.params.vehMark" placeholder="" clearable/>
</el-form-item>
<el-form-item label="车架号">
<el-input v-model="listQuery.params.vinNo" placeholder="" clearable/>
</el-form-item>
<el-form-item label="联系电话">
<el-input v-model="listQuery.params.mobile" placeholder="" clearable/>
</el-form-item>
<el-form-item label="客户单位">
<el-input v-model="listQuery.params.orgName" placeholder="" clearable/>
</el-form-item>
</el-form>
<div class="btn" style="text-align: center;">
<el-button type="primary" icon="el-icon-search" size="small" @click="handleFilter">查询</el-button>
<el-button type="primary" icon="el-icon-refresh" size="small" @click="handleReset">重置</el-button>
</div>
</div>
</div>
<!--End查询列表部分-->
<div class="listtop">
<div class="tit">客户列表</div>
<pageye v-show="list.length > 0" :total="listQuery.total" :page.sync="listQuery.current" :limit.sync="listQuery.size" class="pagination" @pagination="getList"/>
</div>
<!--Start 主页面主要部分 -->
<div class="">
<el-table :key="tableKey" v-loading="listLoading" :data="list" border style="width: 100%;">
<el-table-column fixed label="序号" type="index" width="80" :index="indexMethod" align="center"/>
<el-table-column fixed label="操作" width="100" align="center">
<template slot-scope="scope">
<el-button type="primary" size="small" @click="handleConfirm(scope.row)">确认</el-button>
</template>
</el-table-column>
<el-table-column prop="name" label="客户名称" width="120" align="center"/>
<el-table-column prop="vehMark" label="车牌号" width="120" align="center" />
<el-table-column prop="vinNo" label="车架号" width="120" align="center" />
<el-table-column prop="mobile" label="联系电话" width="120" align="center" />
<el-table-column prop="orgName" label="客户单位" min-width="120" align="center" />
</el-table>
</div>
<!--End 主页面主要部分-->
<div class="pages">
<div class="tit"/>
<!-- 翻页 -->
<pagination v-show="list.length > 0" :total="listQuery.total" :page.sync="listQuery.current" :limit.sync="listQuery.size" class="pagination" @pagination="getList"/>
</div>
<!--End查询列表部分-->
</div>
</div>
</div>
</template>
<script>
import Pagination from '@/components/pagination'
import pageye from '@/components/pagination/pageye'
import ButtonBar from '@/components/ButtonBar'
import { customerListPage } from '@/api/Common/dictcommons'
export default {
name: 'Customer',
components: {
Pagination,
pageye,
ButtonBar
},
data() {
return {
btndisabled: false,
btnList: [
{
type: 'info',
size: 'small',
icon: 'cross',
btnKey: 'doClose',
btnLabel: '关闭'
}
],
isSearchShow: false,
searchxianshitit: '显示查询条件',
viewState: 1, // 1 2 3 4
tableKey: 0,
list: [],
sids: [], // SIDs
FormLoading: false,
listLoading: false,
//
listQuery: {
current: 1,
size: 5,
total: 0,
params: {
orgPath: '',
name: '',
vehMark: '',
mobile: '',
orgName: '',
vinNo: ''
}
}
}
},
created() {
//
this.getList()
},
mounted() {
this.$refs['btnbar'].setButtonList(this.btnList)
},
methods: {
//
clicksearchShow() {
this.isSearchShow = !this.isSearchShow
if (this.isSearchShow) {
this.searchxianshitit = '隐藏查询条件'
} else {
this.searchxianshitit = '显示查询条件'
}
},
btnHandle(btnKey) {
console.log('XXXXXXXXXXXXXXX ' + btnKey)
switch (btnKey) {
case 'doClose':
this.doClose()
break
default:
break
}
},
//
indexMethod(index) {
var pagestart = (this.listQuery.current - 1) * this.listQuery.size
var pageindex = index + 1 + pagestart
return pageindex
},
//
getList() {
this.listLoading = true
this.listQuery.params.orgPath = window.sessionStorage.getItem('defaultOrgPath')
customerListPage(this.listQuery).then(response => {
this.listLoading = false
if (response.success) {
this.list = response.data.records
this.listQuery.total = response.data.total
} else {
this.list = []
this.listQuery.total = 0
}
})
},
//
handleFilter() {
this.listQuery.current = 1
this.getList()
},
//
handleReset() {
this.listQuery = {
current: 1,
size: 5,
total: 0,
params: {
orgPath: '',
name: '',
vehMark: '',
mobile: '',
orgName: '',
vinNo: ''
}
}
this.getList()
},
handleConfirm(row) {
this.$emit('backData', row)
},
doClose() {
this.$emit('doback')
}
}
}
</script>
<style scoped>
</style>
Loading…
Cancel
Save