Browse Source

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillMapper.java
#	yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillService.java
master
God 10 months ago
parent
commit
fc55f40282
  1. 15
      yxt-as-ui/src/api/operation/repairbill.js
  2. 4
      yxt-as-ui/src/router/index.js
  3. 6
      yxt-as-ui/src/views/operation/preregistration/preregistrationAdd.vue
  4. 4
      yxt-as-ui/src/views/operation/preregistration/preregistrationInfo.vue
  5. 6
      yxt-as-ui/src/views/operation/repairbill/repairbill.vue
  6. 520
      yxt-as-ui/src/views/operation/repairbill/repairbillAdd.vue
  7. 8
      yxt-as-ui/src/views/operation/repairbill/repairbillBYLeaveFactory.vue
  8. 48
      yxt-as-ui/src/views/operation/repairbill/repairbillByBeCompleted.vue
  9. 48
      yxt-as-ui/src/views/operation/repairbill/repairbillByMaintain.vue
  10. 48
      yxt-as-ui/src/views/operation/repairbill/repairbillBySendWork.vue
  11. 48
      yxt-as-ui/src/views/operation/repairbill/repairbillBySettleAccounts.vue
  12. 85
      yxt-as-ui/src/views/operation/repairbill/repairbillInfo.vue
  13. 8
      yxt-as-ui/src/views/operation/workorderquery/workorderquery.vue
  14. 9
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/AsBusrepairBill.java
  15. 8
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/AsBusrepairBillDetailsVo.java
  16. 2
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/AsBusrepairBillDto.java
  17. 4
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/GoodsDetailsVo.java
  18. 2
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/InsuranceVo.java
  19. 4
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/InvoiceVo.java
  20. 4
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/SitemVo.java
  21. 29
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/app/GoodsReceiveListVo.java
  22. 20
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/app/GoodsReceiveQuery.java
  23. 18
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/app/GoodsReceiveSubmit.java
  24. 48
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/app/GoodsReceiveVo.java
  25. 1
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairinventorybill/AsBusrepairInventoryBillInit.java
  26. 6
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairinventorybilldetail/AsBusrepairInventorybillDetail.java
  27. 6
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillMapper.java
  28. 30
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillMapper.xml
  29. 26
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillRest.java
  30. 435
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillService.java
  31. 27
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairinventorybill/AsBusrepairInventorybillService.java
  32. 65
      yxt-as/src/main/java/com/yxt/anrui/as/feign/wms/wmsInventory/WmsInventory.java
  33. 4
      yxt-as/src/main/java/com/yxt/anrui/as/feign/wms/wmsInventory/WmsInventoryFeign.java
  34. 5
      yxt-as/src/main/java/com/yxt/anrui/as/feign/wms/wmsInventory/WmsInventoryFeignFallback.java
  35. 8
      yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebill/PmsPurchaseBillService.java
  36. 2
      yxt-pms-biz/src/main/java/com/yxt/pms/feign/wms/wmsansbill/WmsAnsBillDto.java
  37. 3
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbill/WmsAnsBill.java
  38. 3
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbill/WmsAnsBillDto.java
  39. 2
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventory.java
  40. 2
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordDto.java
  41. 3
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordService.java
  42. 2
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillMapper.java
  43. 8
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillMapper.xml
  44. 3
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillQuery.java
  45. 7
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillService.java
  46. 2
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetail/WmsReceiptBillDetailDto2.java
  47. 3
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetail/WmsReceiptBillDetailVo.java
  48. 16
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillService.java

15
yxt-as-ui/src/api/operation/repairbill.js

@ -75,11 +75,12 @@ export default {
}) })
}, },
// 打印结算单 // 打印结算单
printSettle: function(data) { printSettlement: function(data) {
return request({ return request({
url: '/as/v1/AsBusrepairBill/printSettle', url: '/as/v1/AsBusrepairBill/printSettlement',
method: 'post', method: 'post',
params: data data: data,
headers: { 'Content-Type': 'application/json' }
}) })
}, },
// 确认工时费比例初始化 // 确认工时费比例初始化
@ -99,5 +100,13 @@ export default {
data: data, data: data,
headers: { 'Content-Type': 'application/json' } headers: { 'Content-Type': 'application/json' }
}) })
},
// 根据客户sid获取对应的对接人信息
getListByCustomerSid: function(data) {
return request({
url: '/crm/v1/crmdockingpeople/getListByCustomerSid',
method: 'get',
params: data
})
} }
} }

4
yxt-as-ui/src/router/index.js

@ -96,7 +96,7 @@ export const constantRoutes = [{
path: '/workorderquery/workorderquery', path: '/workorderquery/workorderquery',
component: () => import('@/views/operation/workorderquery/workorderquery.vue'), component: () => import('@/views/operation/workorderquery/workorderquery.vue'),
name: 'WorkOrderQuery', name: 'WorkOrderQuery',
meta: { title: '单查询', noCache: true } meta: { title: '维修单查询', noCache: true }
}, },
{ {
path: '/workorderinvoicing/workorderinvoicing', path: '/workorderinvoicing/workorderinvoicing',
@ -435,7 +435,7 @@ export const constantRoutes = [{
path: '/filing/maintenanceEnterprise', path: '/filing/maintenanceEnterprise',
component: () => import('@/views/client/filing/maintenanceEnterprise.vue'), component: () => import('@/views/client/filing/maintenanceEnterprise.vue'),
name: 'MaintenanceEnterprise', name: 'MaintenanceEnterprise',
meta: { title: '定点企业备案', noCache: true } meta: { title: '欠款月结客户备案', noCache: true }
}, },
{ {
path: '/customerunit/customerunit', path: '/customerunit/customerunit',

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

@ -55,7 +55,7 @@
<el-col :span="8"> <el-col :span="8">
<div class="span-sty"><span class="icon">*</span>科目</div> <div class="span-sty"><span class="icon">*</span>科目</div>
<el-form-item prop="subject"> <el-form-item prop="subject">
<el-select class="addinputInfo" v-model="formobj.subject" placeholder="请选择" @change="changeSubject" clearable filterable> <el-select class="addinputInfo" v-model="formobj.subject" :disabled="formobj.sitemVos.length > 0" placeholder="请选择" @change="changeSubject" clearable filterable>
<el-option v-for="item in subject_list" :key="item.subjectSid" :label="item.subject" :value="item.subject"></el-option> <el-option v-for="item in subject_list" :key="item.subjectSid" :label="item.subject" :value="item.subject"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -81,7 +81,7 @@
</el-col> </el-col>
</el-row> </el-row>
<div class="title titleOne"> <div class="title titleOne">
<div>服务项目</div> <div>维修项目</div>
<el-button type="primary" size="mini" class="btntopblueline" @click="serviceAdd">添加</el-button> <el-button type="primary" size="mini" class="btntopblueline" @click="serviceAdd">添加</el-button>
</div> </div>
<el-table :key="serviceKey" :data="formobj.sitemVos" :index="index" border style="width: 100%"> <el-table :key="serviceKey" :data="formobj.sitemVos" :index="index" border style="width: 100%">
@ -91,7 +91,7 @@
<el-button type="danger" size="small" @click="serviceDelete(scope.$index)">删除</el-button> <el-button type="danger" size="small" @click="serviceDelete(scope.$index)">删除</el-button>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="服务项目" align="center" width="300"> <el-table-column label="维修项目" align="center" width="300">
<template slot-scope="scope"> <template slot-scope="scope">
<el-popover placement="right" width="600" trigger="click"> <el-popover placement="right" width="600" trigger="click">
<div> <div>

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

@ -62,10 +62,10 @@
<el-form-item><span class="addinputInfo">{{ formobj.vehMark }}/{{ formobj.vinNo }}</span></el-form-item> <el-form-item><span class="addinputInfo">{{ formobj.vehMark }}/{{ formobj.vinNo }}</span></el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<div class="title">服务项目</div> <div class="title">维修项目</div>
<el-table :key="serviceKey" :data="formobj.sitemVos" :index="index" border style="width: 100%"> <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 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="serviceItem" label="维修项目" align="center" width="150" />
<el-table-column prop="hourPrice" label="工时单价" align="center" width="100" /> <el-table-column prop="hourPrice" label="工时单价" align="center" width="100" />
<el-table-column prop="hours" 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="price" label="销售价" align="center" width="100" />

6
yxt-as-ui/src/views/operation/repairbill/repairbill.vue

@ -26,7 +26,7 @@
<span style="padding: 0 8px"></span> <span style="padding: 0 8px"></span>
<el-date-picker v-model="listQuery.params.endTime" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker> <el-date-picker v-model="listQuery.params.endTime" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="单类型"> <el-form-item label="维修单类型">
<el-select v-model="listQuery.params.billType" clearable placeholder="请选择" filterable> <el-select v-model="listQuery.params.billType" clearable placeholder="请选择" filterable>
<el-option v-for="item in billType_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"> <el-option v-for="item in billType_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue">
</el-option> </el-option>
@ -92,7 +92,7 @@
<el-table :key="tableKey" v-loading="listLoading" :data="list" border style="width: 100%;" @selection-change="handleSelectionChange"> <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 type="selection" align="center" width="50"/>
<el-table-column label="序号" type="index" width="80" :index="indexMethod" align="center"/> <el-table-column label="序号" type="index" width="80" :index="indexMethod" align="center"/>
<el-table-column label="单据编号" align="center" width="130"> <el-table-column label="单据编号" align="center" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<span class="bluezi" @click="toInfo(scope.row)">{{ scope.row.billNo }}</span> <span class="bluezi" @click="toInfo(scope.row)">{{ scope.row.billNo }}</span>
</template> </template>
@ -102,7 +102,7 @@
<el-table-column prop="dept" label="制单部门" align="center" width="120" /> <el-table-column prop="dept" label="制单部门" align="center" width="120" />
<el-table-column prop="createByName" label="制单人" align="center" width="120" /> <el-table-column prop="createByName" label="制单人" align="center" width="120" />
<el-table-column prop="createTime" label="制单日期" align="center" width="120" /> <el-table-column prop="createTime" label="制单日期" align="center" width="120" />
<el-table-column prop="billType" label="单类型" align="center" width="120" /> <el-table-column prop="billType" label="维修单类型" align="center" width="120" />
<el-table-column prop="subject" label="科目" align="center" width="100" /> <el-table-column prop="subject" label="科目" align="center" width="100" />
<el-table-column prop="entryTime" label="进厂时间" align="center" width="160" /> <el-table-column prop="entryTime" label="进厂时间" align="center" width="160" />
<el-table-column prop="estimatedFinishTime" label="预计完工时间" align="center" width="160" /> <el-table-column prop="estimatedFinishTime" label="预计完工时间" align="center" width="160" />

520
yxt-as-ui/src/views/operation/repairbill/repairbillAdd.vue

@ -4,12 +4,11 @@
<div class="tab-header webtop"> <div class="tab-header webtop">
<div>{{ viewTitle }}</div> <div>{{ viewTitle }}</div>
<div> <div>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="selectCustomer()" v-show="formobj.nodeName == '登记'">选择客户</el-button>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="saveOrUpdate()">保存</el-button> <el-button type="primary" size="small" :disabled="submitdisabled" @click="saveOrUpdate()">保存</el-button>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="submit()" v-show="formobj.nodeName !== '结算'">提交</el-button> <el-button type="primary" size="small" :disabled="submitdisabled" @click="submit()" v-show="formobj.nodeName !== '结算'">提交</el-button>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="toSendBack" v-show="formobj.nodeName !== '结算' && formobj.nodeName !== '登记' && formobj.nodeName !== '出厂'">退回</el-button> <el-button type="primary" size="small" :disabled="submitdisabled" @click="toSendBack" v-show="formobj.nodeName !== '登记'">退回</el-button>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="confirmCLF()" v-show="formobj.nodeName == '结算' && formobj.subject == '保内'">确认材料费</el-button> <el-button type="primary" size="small" :disabled="submitdisabled" @click="confirmCLF()" v-show="formobj.nodeName == '结算' && formobj.subject == '保内'">确认材料费</el-button>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="toPrintSettle()" v-show="formobj.nodeName == '结算' && formobj.subject == '保外'">打印结算单</el-button> <el-button type="primary" size="small" :disabled="submitdisabled" @click="toPrintSettle()" v-show="formobj.nodeName == '结算'">打印结算单</el-button>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="settleAccounts()" v-show="formobj.nodeName == '结算'">结算</el-button> <el-button type="primary" size="small" :disabled="submitdisabled" @click="settleAccounts()" v-show="formobj.nodeName == '结算'">结算</el-button>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button> <el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div> </div>
@ -32,9 +31,9 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="8"> <el-col :span="8">
<div class="span-sty"><span class="icon">*</span>单类型</div> <div class="span-sty"><span class="icon">*</span>维修单类型</div>
<el-form-item prop="billType"> <el-form-item prop="billType">
<el-select class="addinputInfo" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.billType" placeholder="请选择" @change="billTypeChange" clearable filterable> <el-select class="addinputInfo" v-model="formobj.billType" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算'" placeholder="请选择" @change="billTypeChange" clearable filterable>
<el-option v-for="item in billType_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"></el-option> <el-option v-for="item in billType_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -42,7 +41,7 @@
<el-col :span="8"> <el-col :span="8">
<div class="span-sty"><span class="icon">*</span>科目</div> <div class="span-sty"><span class="icon">*</span>科目</div>
<el-form-item prop="subject"> <el-form-item prop="subject">
<el-select class="addinputInfo" :disabled="formobj.sitemVos.length > 0 || formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.subject" placeholder="请选择" @change="changeSubject" clearable filterable> <el-select class="addinputInfo" :disabled="formobj.sitemVos.length > 0 || formobj.nodeName == '维修' || formobj.nodeName == '结算'" v-model="formobj.subject" placeholder="请选择" @change="changeSubject" clearable filterable>
<el-option v-for="item in subject_list" :key="item.subjectSid" :label="item.subject" :value="item.subject"></el-option> <el-option v-for="item in subject_list" :key="item.subjectSid" :label="item.subject" :value="item.subject"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -50,7 +49,7 @@
<el-col :span="8"> <el-col :span="8">
<div class="span-sty">索赔厂家</div> <div class="span-sty">索赔厂家</div>
<el-form-item> <el-form-item>
<el-select class="addinputInfo" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.claimManufacturer" placeholder="请选择" @change="changeClaimManufacturer" clearable filterable> <el-select class="addinputInfo" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算'" v-model="formobj.claimManufacturer" placeholder="请选择" @change="changeClaimManufacturer" clearable filterable>
<el-option v-for="item in claimManufacturer_list" :key="item.sid" :label="item.claiManuName" :value="item.claiManuName"></el-option> <el-option v-for="item in claimManufacturer_list" :key="item.sid" :label="item.claiManuName" :value="item.claiManuName"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -60,26 +59,26 @@
<el-col :span="8"> <el-col :span="8">
<div class="span-sty"><span class="icon">*</span>是否外出</div> <div class="span-sty"><span class="icon">*</span>是否外出</div>
<el-form-item prop="isGoOut"> <el-form-item prop="isGoOut">
<el-radio-group class="addinputInfo" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.isGoOut"> <el-radio-group class="addinputInfo" :disabled="formobj.nodeName !== '登记'" v-model="formobj.isGoOut">
<el-radio label="1"></el-radio> <el-radio label="1"></el-radio>
<el-radio label="0"></el-radio> <el-radio label="2"></el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<div class="span-sty">进厂时间</div> <div class="span-sty">进厂时间</div>
<el-form-item><el-date-picker class="addinputInfo" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.entryTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd HH:mm:ss" type="datetime" placeholder="选择日期" /></el-form-item> <el-form-item><el-date-picker class="addinputInfo" :disabled="formobj.nodeName !== '登记'" v-model="formobj.entryTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd HH:mm:ss" type="datetime" placeholder="选择日期" /></el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<div class="span-sty"><span class="icon">*</span>预计完工</div> <div class="span-sty"><span class="icon">*</span>预计完工</div>
<el-form-item prop="estimatedFinishTime"><el-date-picker class="addinputInfo" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.estimatedFinishTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd HH:mm:ss" type="datetime" placeholder="选择日期" /></el-form-item> <el-form-item prop="estimatedFinishTime"><el-date-picker class="addinputInfo" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算'" v-model="formobj.estimatedFinishTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd HH:mm:ss" type="datetime" placeholder="选择日期" /></el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="8"> <el-col :span="8">
<div class="span-sty"><span class="icon">*</span>服务顾问</div> <div class="span-sty"><span class="icon">*</span>服务顾问</div>
<el-form-item prop="waitorName"> <el-form-item prop="waitorName">
<el-select class="addinputInfo" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.waitorName" placeholder="请选择" @change="waitorChange" clearable filterable> <el-select class="addinputInfo" :disabled="formobj.nodeName !== '登记'" 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-option v-for="item in user_list" :key="item.sid" :label="item.name" :value="item.name"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -87,7 +86,7 @@
<el-col :span="8"> <el-col :span="8">
<div class="span-sty">班组</div> <div class="span-sty">班组</div>
<el-form-item> <el-form-item>
<el-select class="addinputInfo" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.groupName" placeholder="请选择" @change="groupChange" clearable filterable> <el-select class="addinputInfo" :disabled="formobj.nodeName == '维修'" v-model="formobj.groupName" placeholder="请选择" @change="groupChange" clearable filterable>
<el-option v-for="item in group_list" :key="item.groupSid" :label="item.groupName" :value="item.groupName"></el-option> <el-option v-for="item in group_list" :key="item.groupSid" :label="item.groupName" :value="item.groupName"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -95,7 +94,7 @@
<el-col :span="8"> <el-col :span="8">
<div class="span-sty">主修人</div> <div class="span-sty">主修人</div>
<el-form-item> <el-form-item>
<el-select class="addinputInfo" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.mainRepairers" placeholder="请选择" clearable filterable> <el-select class="addinputInfo" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算'" v-model="formobj.mainRepairers" placeholder="请选择" clearable filterable>
<el-option v-for="item in mainRepairersChange_list" :key="item.memberSid" :label="item.memberName" :value="item.memberName"></el-option> <el-option v-for="item in mainRepairersChange_list" :key="item.memberSid" :label="item.memberName" :value="item.memberName"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -104,16 +103,16 @@
<el-row> <el-row>
<el-col :span="8"> <el-col :span="8">
<div class="span-sty">备注(打印)</div> <div class="span-sty">备注(打印)</div>
<el-form-item><el-input class="addinputInfo addinputw" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.printRemarks" clearable placeholder="" /></el-form-item> <el-form-item><el-input class="addinputInfo addinputw" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算'" v-model="formobj.printRemarks" clearable placeholder="" /></el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<div class="span-sty">备注</div> <div class="span-sty">备注</div>
<el-form-item><el-input class="addinputInfo addinputw" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.remarks" clearable placeholder="" /></el-form-item> <el-form-item><el-input class="addinputInfo addinputw" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算'" v-model="formobj.remarks" clearable placeholder="" /></el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<div class="span-sty"><span class="icon">*</span>特殊标志</div> <div class="span-sty"><span class="icon">*</span>特殊标志</div>
<el-form-item prop="isSpecialSign"> <el-form-item prop="isSpecialSign">
<el-radio-group class="addinputInfo" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.isSpecialSign"> <el-radio-group class="addinputInfo" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算'" v-model="formobj.isSpecialSign">
<el-radio label="1"></el-radio> <el-radio label="1"></el-radio>
<el-radio label="0"></el-radio> <el-radio label="0"></el-radio>
</el-radio-group> </el-radio-group>
@ -125,7 +124,14 @@
<el-row style="border-top: 1px solid #e0e3eb"> <el-row style="border-top: 1px solid #e0e3eb">
<el-col :span="8"> <el-col :span="8">
<div class="span-sty"><span class="icon">*</span>客户</div> <div class="span-sty"><span class="icon">*</span>客户</div>
<el-form-item prop="customerName"><span class="addinputInfo">{{ formobj.customerName }}</span></el-form-item> <el-form-item prop="customerName">
<div style="display: flex;flex-direction: row;justify-content: space-between;align-items: center">
<div>
<span class="addinputInfo">{{ formobj.customerName }}</span>
</div>
<el-button type="primary" size="mini" @click="chooseCustomer()" v-show="formobj.nodeName == '登记'">选择</el-button>
</div>
</el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<div class="span-sty">联系电话</div> <div class="span-sty">联系电话</div>
@ -153,15 +159,15 @@
<el-row> <el-row>
<el-col :span="8"> <el-col :span="8">
<div class="span-sty">行驶里程(Km)</div> <div class="span-sty">行驶里程(Km)</div>
<el-form-item><el-input class="addinputInfo addinputw" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.mileage" clearable placeholder="" /></el-form-item> <el-form-item><el-input class="addinputInfo addinputw" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算'" v-model="formobj.mileage" clearable placeholder="" /></el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<div class="span-sty">油量(L)</div> <div class="span-sty">油量(L)</div>
<el-form-item><el-input class="addinputInfo addinputw" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.oil" clearable placeholder="" /></el-form-item> <el-form-item><el-input class="addinputInfo addinputw" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算'" v-model="formobj.oil" clearable placeholder="" /></el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<div class="span-sty">当前里程(Km)</div> <div class="span-sty">当前里程(Km)</div>
<el-form-item><el-input class="addinputInfo addinputw" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.currentMileage" clearable placeholder="" /></el-form-item> <el-form-item><el-input class="addinputInfo addinputw" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算'" v-model="formobj.currentMileage" clearable placeholder="" /></el-form-item>
</el-col> </el-col>
</el-row> </el-row>
</el-collapse-item> </el-collapse-item>
@ -169,20 +175,28 @@
<el-row style="border-top: 1px solid #e0e3eb"> <el-row style="border-top: 1px solid #e0e3eb">
<el-col :span="8"> <el-col :span="8">
<div class="span-sty">对接人姓名</div> <div class="span-sty">对接人姓名</div>
<el-form-item><span class="addinputInfo">{{ formobj.dockingPeople }}</span></el-form-item> <el-form-item>
<el-select class="addinputInfo" v-if="formobj.billTypeKey == '2'" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算'" v-model="formobj.dockingPeopleSid" placeholder="请选择" @change="dockingPeopleChange" clearable filterable>
<el-option v-for="item in people_list" :key="item.sid" :label="item.name" :value="item.sid"></el-option>
</el-select>
<el-input class="addinputInfo addinputw" v-else :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算'" v-model="formobj.dockingPeople" clearable placeholder="" />
</el-form-item>
</el-col> </el-col>
<el-col :span="16"> <el-col :span="16">
<div class="span-sty">对接人电话</div> <div class="span-sty">对接人电话</div>
<el-form-item><span class="addinputInfo">{{ formobj.dockingPhone }}</span></el-form-item> <el-form-item>
<span class="addinputInfo" v-if="formobj.billTypeKey == '2'">{{ formobj.dockingPhone }}</span>
<el-input class="addinputInfo addinputw" v-else :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算'" v-model="formobj.dockingPhone" clearable placeholder="" />
</el-form-item>
</el-col> </el-col>
</el-row> </el-row>
</el-collapse-item> </el-collapse-item>
<el-collapse-item title="保险信息" name="3"> <el-collapse-item title="保险信息" name="3" v-show="formobj.billTypeKey == '1'">
<el-row style="border-top: 1px solid #e0e3eb"> <el-row style="border-top: 1px solid #e0e3eb">
<el-col :span="8"> <el-col :span="8">
<div class="span-sty">责任划分</div> <div class="span-sty">责任划分</div>
<el-form-item> <el-form-item>
<el-select class="addinputInfo" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.insuranceVo.responsibility" placeholder="请选择" @change="responsibilityChange" clearable filterable> <el-select class="addinputInfo" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算'" v-model="formobj.insuranceVo.responsibility" placeholder="请选择" @change="responsibilityChange" clearable filterable>
<el-option v-for="item in responsibility_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"></el-option> <el-option v-for="item in responsibility_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -190,7 +204,7 @@
<el-col :span="8"> <el-col :span="8">
<div class="span-sty">责任比例</div> <div class="span-sty">责任比例</div>
<el-form-item> <el-form-item>
<el-select class="addinputInfo" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.insuranceVo.responsibilityRatio" placeholder="请选择" @change="responsibilityRatioChange" clearable filterable> <el-select class="addinputInfo" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算'" v-model="formobj.insuranceVo.responsibilityRatio" placeholder="请选择" @change="responsibilityRatioChange" clearable filterable>
<el-option v-for="item in responsibilityRatio_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"></el-option> <el-option v-for="item in responsibilityRatio_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -198,7 +212,7 @@
<el-col :span="8"> <el-col :span="8">
<div class="span-sty">是否存在人伤</div> <div class="span-sty">是否存在人伤</div>
<el-form-item> <el-form-item>
<el-radio-group class="addinputInfo" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.insuranceVo.isPersonInjuries"> <el-radio-group class="addinputInfo" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算'" v-model="formobj.insuranceVo.isPersonInjuries">
<el-radio label="1"></el-radio> <el-radio label="1"></el-radio>
<el-radio label="0"></el-radio> <el-radio label="0"></el-radio>
</el-radio-group> </el-radio-group>
@ -207,7 +221,7 @@
</el-row> </el-row>
<el-table :key="insuranceKey" :data="formobj.insuranceVo.insuranceList" :index="index" border style="width: 100%"> <el-table :key="insuranceKey" :data="formobj.insuranceVo.insuranceList" :index="index" border style="width: 100%">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center"/> <el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center"/>
<div v-if="formobj.nodeName !== '维修' && formobj.nodeName !== '结算' && formobj.nodeName !== '出厂'"> <div v-if="formobj.nodeName !== '维修' || formobj.nodeName !== '结算'">
<el-table-column align="center" width="80"> <el-table-column align="center" width="80">
<template slot="header" slot-scope="scope"> <template slot="header" slot-scope="scope">
<i class="add-btn-icon el-icon-plus" style="color: red;font-size:20px" @click="insuranceAdd(scope.row)"></i> <i class="add-btn-icon el-icon-plus" style="color: red;font-size:20px" @click="insuranceAdd(scope.row)"></i>
@ -219,48 +233,48 @@
</div> </div>
<el-table-column label="使用保险方" align="center" min-width="150"> <el-table-column label="使用保险方" align="center" min-width="150">
<template slot-scope="scope"> <template slot-scope="scope">
<el-select :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="scope.row.useInsurerKey" placeholder="请选择" @change="useInsurerChange($event, scope.row)" clearable filterable> <el-select :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算'" v-model="scope.row.useInsurerKey" placeholder="请选择" @change="useInsurerChange($event, scope.row)" clearable filterable>
<el-option v-for="item in useInsurer_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"></el-option> <el-option v-for="item in useInsurer_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"></el-option>
</el-select> </el-select>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="使用险种" align="center" min-width="150"> <el-table-column label="使用险种" align="center" min-width="150">
<template slot-scope="scope"> <template slot-scope="scope">
<el-select :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="scope.row.insuranceTypeKey" placeholder="请选择" @change="insuranceTypeChange($event, scope.row)" clearable filterable> <el-select :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算'" v-model="scope.row.insuranceTypeKey" placeholder="请选择" @change="insuranceTypeChange($event, scope.row)" clearable filterable>
<el-option v-for="item in insuranceType_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"></el-option> <el-option v-for="item in insuranceType_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"></el-option>
</el-select> </el-select>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" label="保险公司" align="center" min-width="150"> <el-table-column label="保险公司" align="center" min-width="150">
<template slot-scope="scope"> <template slot-scope="scope">
<el-select v-model="scope.row.insuranceCompanyKey" placeholder="请选择" @change="insuranceCompanyChange($event, scope.row)" clearable filterable> <el-select :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算'" v-model="scope.row.insuranceCompanyKey" placeholder="请选择" @change="insuranceCompanyChange($event, scope.row)" clearable filterable>
<el-option v-for="item in insuranceCompany_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"></el-option> <el-option v-for="item in insuranceCompany_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"></el-option>
</el-select> </el-select>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="报案号" align="center" min-width="180"> <el-table-column label="报案号" align="center" min-width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<el-input :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="scope.row.claimBillNo" clearable placeholder="" /> <el-input :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算'" v-model="scope.row.claimBillNo" clearable placeholder="" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="勘察员及电话" align="center" min-width="220"> <el-table-column label="勘察员及电话" align="center" min-width="220">
<template slot-scope="scope"> <template slot-scope="scope">
<el-input :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="scope.row.investigator" clearable placeholder="" /> <el-input :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算'" v-model="scope.row.investigator" clearable placeholder="" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="定损员及电话" align="center" min-width="220"> <el-table-column label="定损员及电话" align="center" min-width="220">
<template slot-scope="scope"> <template slot-scope="scope">
<el-input :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="scope.row.lossAdjuster" clearable placeholder="" /> <el-input :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算'" v-model="scope.row.lossAdjuster" clearable placeholder="" />
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</el-collapse-item> </el-collapse-item>
<el-collapse-item title="发票信息" name="4"> <el-collapse-item title="发票信息" name="4" v-show="formobj.subject == '保外'">
<el-row style="border-top: 1px solid #e0e3eb"> <el-row style="border-top: 1px solid #e0e3eb">
<el-col :span="8"> <el-col :span="8">
<div class="span-sty">是否开发票</div> <div class="span-sty">是否开发票</div>
<el-form-item> <el-form-item>
<el-radio-group class="addinputInfo" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.invoiceVo.isInvoicing"> <el-radio-group class="addinputInfo" :disabled="formobj.nodeName == '维修' && formobj.nodeName !== '结算'" v-model="formobj.invoiceVo.isInvoicing" @change="isInvoicingChange">
<el-radio label="1"></el-radio> <el-radio label="1"></el-radio>
<el-radio label="0"></el-radio> <el-radio label="0"></el-radio>
</el-radio-group> </el-radio-group>
@ -269,23 +283,40 @@
<el-col :span="8"> <el-col :span="8">
<div class="span-sty">发票类型</div> <div class="span-sty">发票类型</div>
<el-form-item> <el-form-item>
<el-select class="addinputInfo" :disabled="formobj.invoiceVo.isInvoicing != '1' || formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.invoiceVo.invoiceType" placeholder="请选择" @change="invoiceTypeChange" clearable filterable> <el-select class="addinputInfo" :disabled="formobj.nodeName == '维修'" v-model="formobj.invoiceVo.invoiceType" placeholder="请选择" @change="invoiceTypeChange" clearable filterable>
<el-option v-for="item in invoiceType_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"></el-option> <el-option v-for="item in invoiceType_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8">
<div class="span-sty">税率(%)</div>
<el-form-item><el-input class="addinputInfo addinputw" @input="countChange" :disabled="formobj.nodeName == '维修'" @keyup.native="formobj.invoiceVo.taxRate = getNumber(formobj.invoiceVo.taxRate, 2)" v-model="formobj.invoiceVo.taxRate" clearable placeholder="" /></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8"> <el-col :span="8">
<div class="span-sty">开票单位</div> <div class="span-sty">开票单位</div>
<el-form-item><el-input class="addinputInfo addinputw" :disabled="formobj.invoiceVo.isInvoicing != '1' || formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.invoiceVo.invoiceCompany" clearable placeholder="" /></el-form-item> <el-form-item><el-input class="addinputInfo addinputw" :disabled="formobj.nodeName == '维修'" v-model="formobj.invoiceVo.invoiceCompany" clearable placeholder="" /></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">加税点的项目</div>
<el-form-item>
<el-checkbox-group class="addinputInfo" v-model="formobj.invoiceVo.taxItems" @change="countChange">
<el-checkbox :disabled="formobj.nodeName == '维修'" label="维修项目"></el-checkbox>
<el-checkbox :disabled="formobj.nodeName == '维修'" label="维修用料"></el-checkbox>
<el-checkbox :disabled="formobj.nodeName == '维修'" label="附加项目"></el-checkbox>
<el-checkbox :disabled="formobj.nodeName == '维修'" label="其它附加项目"></el-checkbox>
</el-checkbox-group>
</el-form-item>
</el-col> </el-col>
</el-row> </el-row>
</el-collapse-item> </el-collapse-item>
</el-collapse> </el-collapse>
<div class="title">服务项目</div> <div class="title">维修项目</div>
<el-table :key="serviceKey" :data="formobj.sitemVos" :index="index" border style="width: 100%"> <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 fixed width="60" label="序号" type="index" :index="index + 1" align="center"/>
<div v-if="formobj.nodeName !== '结算' && formobj.nodeName !== '出厂'"> <div v-if="formobj.nodeName !== '结算'">
<el-table-column align="center" width="80"> <el-table-column align="center" width="80">
<template slot="header" slot-scope="scope"> <template slot="header" slot-scope="scope">
<i class="add-btn-icon el-icon-plus" style="color: red;font-size:20px" @click="serviceAdd(scope.row)"></i> <i class="add-btn-icon el-icon-plus" style="color: red;font-size:20px" @click="serviceAdd(scope.row)"></i>
</template> </template>
@ -293,7 +324,7 @@
<i class="el-icon-delete" @click="serviceDelete(scope.$index)"></i> <i class="el-icon-delete" @click="serviceDelete(scope.$index)"></i>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="服务项目" align="center" width="200"> <el-table-column label="维修项目" align="center" width="200">
<template slot-scope="scope"> <template slot-scope="scope">
<el-popover placement="right" width="600" trigger="click"> <el-popover placement="right" width="600" trigger="click">
<div> <div>
@ -313,9 +344,9 @@
</div> </div>
<el-table-column v-else prop="serviceItem" label="项目名称" align="center" width="200" /> <el-table-column v-else prop="serviceItem" label="项目名称" align="center" width="200" />
<el-table-column prop="serviceType" label="工种" align="center" width="150" /> <el-table-column prop="serviceType" label="工种" align="center" width="150" />
<el-table-column label="维修" width="300" align="center"> <el-table-column label="维修技师" width="300" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<el-select v-model="scope.row.staffList" :disabled="formobj.nodeName == '结算' || formobj.nodeName == '出厂'" placeholder="请选择" @change="userChange(scope.row, scope.row.staffList)" clearable filterable multiple> <el-select v-model="scope.row.staffList" :disabled="formobj.nodeName == '结算'" placeholder="请选择" @change="userChange(scope.row, scope.row.staffList)" clearable filterable multiple>
<el-option v-for="item in user_list" :key="item.sid" :label="item.name" :value="item.sid"></el-option> <el-option v-for="item in user_list" :key="item.sid" :label="item.name" :value="item.sid"></el-option>
</el-select> </el-select>
</template> </template>
@ -337,7 +368,7 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div class="title">商品<span class="icon" v-show="formobj.nodeName == '竣工'">(竣工岗位职责核对出库商品及数量是否与服务项目相符)</span></div> <div class="title">维修用料<span class="icon" v-show="formobj.nodeName == '竣工'">(竣工岗位职责核对出库商品及数量是否与维修项目相符)</span></div>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<div class="span-sty span-sty-one" style="width: 300px;!important;">前台登记时对商品要求备注</div> <div class="span-sty span-sty-one" style="width: 300px;!important;">前台登记时对商品要求备注</div>
@ -346,62 +377,87 @@
</el-row> </el-row>
<el-table :key="tableKey" :data="formobj.goodsDetailsVos" :index="index" border style="width: 100%"> <el-table :key="tableKey" :data="formobj.goodsDetailsVos" :index="index" border style="width: 100%">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center" /> <el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center" />
<el-table-column prop="serviceItem" label="维修项目" width="200" align="center" />
<el-table-column prop="goodsSpuName" label="商品名称" width="100" align="center" /> <el-table-column prop="goodsSpuName" label="商品名称" width="100" align="center" />
<el-table-column prop="goodsSkuCode" label="图号" width="100" align="center" /> <el-table-column prop="goodsSkuCode" label="图号" width="100" align="center" />
<el-table-column prop="goodsSkuOwnSpec" label="规格" width="100" align="center" /> <el-table-column prop="goodsSkuOwnSpec" label="规格" width="100" align="center" />
<el-table-column prop="unit" label="单位" width="100" align="center" /> <el-table-column prop="unit" label="单位" width="100" align="center" />
<el-table-column prop="warehouseName" label="仓库" width="100" align="center" /> <el-table-column prop="warehouseName" label="仓库" width="100" align="center" />
<el-table-column prop="warehouseRackCode" label="库位" width="100" align="center" /> <el-table-column prop="warehouseRackCode" label="库位" width="100" align="center" />
<el-table-column prop="price" label="销售价" align="center" width="150" />
<el-table-column prop="count" label="数量" width="100" align="center" /> <el-table-column prop="count" label="数量" width="100" align="center" />
<el-table-column prop="price" label="单价" align="center" width="150" />
<el-table-column label="折扣" align="center" width="100"> <el-table-column label="折扣" align="center" width="100">
<template slot-scope="scope"> <template slot-scope="scope">
<el-input @input="computeYHAndJE(scope.row)" :disabled="formobj.nodeName !== '结算'" v-model="scope.row.discount" @keyup.native="scope.row.discount = getNumber(scope.row.discount, 2)" clearable placeholder="" /> <el-input @input="computeYHAndJE(scope.row)" :disabled="formobj.nodeName !== '结算'" v-model="scope.row.discount" @keyup.native="scope.row.discount = getNumber(scope.row.discount, 2)" clearable placeholder="" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="discountAmount" label="优惠" width="100" align="center" /> <el-table-column prop="discountAmount" label="优惠" width="100" align="center" />
<el-table-column prop="amount" label="金额" width="100" align="center" /> <el-table-column prop="amount" label="销售金额" width="100" align="center" />
<el-table-column label="备注" align="center" min-width="300"> <el-table-column label="备注" align="center" min-width="300">
<template slot-scope="scope"> <template slot-scope="scope">
<el-input v-model="scope.row.remarks" clearable placeholder="" /> <el-input v-model="scope.row.remarks" clearable placeholder="" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="operName" label=领料人 width="100" align="center" />
<el-table-column prop="receivedTime" label="接收时间" width="120" align="center" />
<el-table-column label="配件销售人" width="300" align="center">
<template slot-scope="scope">
<el-select v-model="scope.row.partsSellersSids" :disabled="formobj.nodeName !== '竣工'" placeholder="请选择" @change="partsSellerChange(scope.row, scope.row.partsSellersSids)" clearable filterable multiple>
<el-option v-for="item in user_list" :key="item.sid" :label="item.name" :value="item.sid"></el-option>
</el-select>
</template>
</el-table-column>
</el-table> </el-table>
<div class="title">附加项目</div> <div class="title">附加项目</div>
<el-row> <el-row>
<el-col :span="8"> <el-col :span="10">
<div class="span-sty">外出费()</div> <div class="span-sty">外出费()</div>
<el-form-item><el-input class="addinputInfo addinputw" @keyup.native="formobj.outAmount = getNumber(formobj.outAmount, 2)" :disabled="formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.outAmount" clearable placeholder="" /></el-form-item> <el-form-item>
<div style="display: flex;flex-direction: row;justify-content: space-between;align-items: center">
<el-input class="addinputInfo addinputw" style="width: 40%" @input="outKPAountInput" @keyup.native="formobj.outAmount = getNumber(formobj.outAmount, 2)" :disabled="formobj.nodeName == '结算'" v-model="formobj.outAmount" clearable placeholder="请填写不开票金额" />
<span v-show="formobj.outKPAmount!== ''">开票金额{{ formobj.outKPAmount }}</span>
</div>
</el-form-item>
</el-col> </el-col>
<el-col :span="16"> <el-col :span="14">
<div class="span-sty">备注</div> <div class="span-sty">备注</div>
<el-form-item><el-input class="addinputInfo addinputw" :disabled="formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.outRemarks" clearable placeholder="" /></el-form-item> <el-form-item><el-input class="addinputInfo addinputw" :disabled="formobj.nodeName == '结算'" v-model="formobj.outRemarks" clearable placeholder="" /></el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="8"> <el-col :span="10">
<div class="span-sty">厂家补助()</div> <div class="span-sty">厂家补助()</div>
<el-form-item><el-input class="addinputInfo addinputw" @keyup.native="formobj.subsidyAmount = getNumber(formobj.subsidyAmount, 2)" :disabled="formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.subsidyAmount" clearable placeholder="" /></el-form-item> <el-form-item>
<div style="display: flex;flex-direction: row;justify-content: space-between;align-items: center">
<el-input class="addinputInfo addinputw" style="width: 40%" @input="subsidyKPAountInput" @keyup.native="formobj.subsidyAmount = getNumber(formobj.subsidyAmount, 2)" :disabled="formobj.nodeName == '结算'" v-model="formobj.subsidyAmount" clearable placeholder="请填写不开票金额" />
<span v-show="formobj.subsidyKPAmount !== ''">开票金额{{ formobj.subsidyKPAmount }}</span>
</div>
</el-form-item>
</el-col> </el-col>
<el-col :span="16"> <el-col :span="14">
<div class="span-sty">备注</div> <div class="span-sty">备注</div>
<el-form-item><el-input class="addinputInfo addinputw" :disabled="formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.subsidyRemarks" clearable placeholder="" /></el-form-item> <el-form-item><el-input class="addinputInfo addinputw" :disabled="formobj.nodeName == '结算'" v-model="formobj.subsidyRemarks" clearable placeholder="" /></el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="8"> <el-col :span="10">
<div class="span-sty">施救费()</div> <div class="span-sty">施救费()</div>
<el-form-item><el-input class="addinputInfo addinputw" @keyup.native="formobj.rescueAmount = getNumber(formobj.rescueAmount, 2)" :disabled="formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.rescueAmount" clearable placeholder="" /></el-form-item> <el-form-item>
<div style="display: flex;flex-direction: row;justify-content: space-between;align-items: center">
<el-input class="addinputInfo addinputw" style="width: 40%" @input="rescueKPAountInput" @keyup.native="formobj.rescueAmount = getNumber(formobj.rescueAmount, 2)" :disabled="formobj.nodeName == '结算'" v-model="formobj.rescueAmount" clearable placeholder="请填写不开票金额" />
<span v-show="formobj.rescueKPAmount !== ''">开票金额{{ formobj.rescueKPAmount }}</span>
</div>
</el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<div class="span-sty">备注</div> <div class="span-sty">备注</div>
<el-form-item> <el-form-item>
<div> <div>
<el-input class="addinputInfo addinputw" :disabled="formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.rescueRemarks" clearable placeholder="" /> <el-input class="addinputInfo addinputw" :disabled="formobj.nodeName == '结算'" v-model="formobj.rescueRemarks" clearable placeholder="" />
</div> </div>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="6">
<div> <div>
<el-upload <el-upload
class="upload-demo" class="upload-demo"
@ -419,47 +475,44 @@
</el-row> </el-row>
<el-table :key="subjoinKey" :data="formobj.aitemVos" :index="index" border style="width: 100%"> <el-table :key="subjoinKey" :data="formobj.aitemVos" :index="index" border style="width: 100%">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center"/> <el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center"/>
<div v-if="formobj.nodeName !== '结算' && formobj.nodeName !== '出厂'"> <el-table-column align="center" width="80">
<el-table-column align="center" width="80"> <template slot="header" slot-scope="scope">
<template slot="header" slot-scope="scope"> <i class="add-btn-icon el-icon-plus" style="color: red;font-size:20px" @click="subjoinAdd(scope.row)"></i>
<i class="add-btn-icon el-icon-plus" style="color: red;font-size:20px" @click="subjoinAdd(scope.row)"></i> </template>
</template> <template slot-scope="scope">
<template slot-scope="scope"> <i class="el-icon-delete" v-show="formobj.nodeName !== '结算'" @click="subjoinDelete(scope.$index)"></i>
<i class="el-icon-delete" @click="subjoinDelete(scope.$index)"></i> </template>
</template> </el-table-column>
</el-table-column> <el-table-column label="其它附加项目" align="center" width="200">
<el-table-column label="其它附加项目" align="center" width="200"> <template slot-scope="scope">
<template slot-scope="scope"> <el-popover placement="right" width="500" trigger="click">
<el-popover placement="right" width="500" trigger="click"> <div>
<div> <el-table :data="subjoinData" v-loading="subjoinLoading" highlight-current-row @current-change="subjoinCurrentChange($event, scope.row)">
<el-table :data="subjoinData" v-loading="subjoinLoading" highlight-current-row @current-change="subjoinCurrentChange($event, scope.row)"> <el-table-column fixed prop="aitemName" label="项目名称" align="center" />
<el-table-column fixed prop="aitemName" label="项目名称" align="center" /> <el-table-column prop="aitemCode" label="项目编码" align="center" />
<el-table-column prop="aitemCode" label="拼音缩写" align="center" /> <el-table-column prop="price" label="销售金额" align="center" />
<el-table-column prop="price" label="销售金额" align="center" /> </el-table>
</el-table> <el-pagination :page.sync="subjoinQuery.current" :page-size="subjoinQuery.size" layout="total, pager" :total="subjoinQuery.total" />
<el-pagination :page.sync="subjoinQuery.current" :page-size="subjoinQuery.size" layout="total, pager" :total="subjoinQuery.total" /> </div>
</div> <el-input slot="reference" v-model="scope.row.aitemName" @input="subjoinInput(scope.row.aitemName)" clearable placeholder="项目名称、拼音"/>
<el-input slot="reference" v-model="scope.row.aitemName" @input="subjoinInput(scope.row.aitemName)" clearable placeholder="项目名称、拼音"/> </el-popover>
</el-popover> </template>
</template> </el-table-column>
</el-table-column>
</div>
<el-table-column v-else prop="aitemName" label="其它附加项目" align="center" width="200" />
<el-table-column label="销售价" align="center" width="150"> <el-table-column label="销售价" align="center" width="150">
<template slot-scope="scope"> <template slot-scope="scope">
<el-input :disabled="formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="scope.row.price" @keyup.native="scope.row.price = getNumber(scope.row.price, 2)" clearable placeholder="" /> <el-input :disabled="formobj.nodeName == '结算'" v-model="scope.row.price" @keyup.native="scope.row.price = getNumber(scope.row.price, 2)" clearable placeholder="" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="备注" align="center" min-width="200"> <el-table-column label="备注" align="center" min-width="200">
<template slot-scope="scope"> <template slot-scope="scope">
<el-input :disabled="formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="scope.row.remarks" clearable placeholder="" /> <el-input :disabled="formobj.nodeName == '结算'" v-model="scope.row.remarks" clearable placeholder="" />
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<div class="span-sty" style="border-right: 0px">应收合计</div> <div class="span-sty" style="border-right: 0px">应收合计</div>
<el-form-item><span class="addinputInfo">{{ ysTotal }} = 工时费{{ gsfTotal }} + 材料费{{ clfTotal }} + 附加费{{ fjfTotal }} + 税额0</span></el-form-item> <el-form-item><span class="addinputInfo">{{ ysTotal }} = 工时费{{ gsfTotal }} + 材料费{{ clfTotal }} + 附加费{{ fjfTotal }}</span></el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
@ -538,6 +591,25 @@
<el-button type="info " size="mini" @click="settleVisible = false"> </el-button> <el-button type="info " size="mini" @click="settleVisible = false"> </el-button>
</div> </div>
</el-dialog> </el-dialog>
<!-- 打印结算单保内 -->
<el-dialog title="打印类型" :visible.sync="dialogVisible" width="25%" :show-close="false">
<el-form :model="temp" class="formaddcopy02">
<el-row style="border-top: 1px solid #E0E3EB">
<el-col :span="24">
<el-form-item>
<el-radio-group v-model="temp.type">
<el-radio label="0">财务打印</el-radio>
<el-radio label="1">客户打印</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div style="text-align:center;margin-top: 20px;">
<el-button type="primary" size="mini" @click="handleConfirm"> </el-button>
<el-button type="info " size="mini" @click="dialogVisible = false"> </el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
@ -558,6 +630,14 @@ export default {
viewTitle: '', viewTitle: '',
viewState: 1, viewState: 1,
submitdisabled: false, submitdisabled: false,
dialogVisible: false, //
temp: {
sid: '',
type: '',
createOrgSid: '',
useOrgSid: '',
userSid: ''
},
updateAction: process.env.VUE_APP_BASE_API + '/portal/file/upload', updateAction: process.env.VUE_APP_BASE_API + '/portal/file/upload',
fileList: [], fileList: [],
headers: { headers: {
@ -568,6 +648,7 @@ export default {
claimManufacturer_list: [], // claimManufacturer_list: [], //
group_list: [], // group_list: [], //
mainRepairersChange_list: [], // mainRepairersChange_list: [], //
people_list: [], //
settleVisible: false, // settleVisible: false, //
billType_list: [], // billType_list: [], //
responsibility_list: [], // responsibility_list: [], //
@ -664,7 +745,9 @@ export default {
invoiceType: '', invoiceType: '',
invoiceTypeKey: '', invoiceTypeKey: '',
invoiceCompanySid: '', invoiceCompanySid: '',
invoiceCompany: '' invoiceCompany: '',
taxRate: '',
taxItems: []
}, },
insuranceVo: { insuranceVo: {
responsibility: '', responsibility: '',
@ -700,8 +783,11 @@ export default {
addAmount: '', addAmount: '',
taxAmount: '', taxAmount: '',
outAmount: '', outAmount: '',
outKPAmount: '',
subsidyAmount: '', subsidyAmount: '',
subsidyKPAmount: '',
rescueAmount: '', rescueAmount: '',
rescueKPAmount: '',
actualAmount: '', actualAmount: '',
receivableAmount: '', receivableAmount: '',
subsidyRemarks: '', subsidyRemarks: '',
@ -713,7 +799,7 @@ export default {
createOrgSid: '' createOrgSid: ''
}, },
rules: { rules: {
billType: [{ required: true, message: '单类型不能为空', trigger: 'change' }], billType: [{ required: true, message: '维修单类型不能为空', trigger: 'change' }],
isGoOut: [{ required: true, message: '是否外出不能为空', trigger: 'change' }], isGoOut: [{ required: true, message: '是否外出不能为空', trigger: 'change' }],
subject: [{ required: true, message: '科目不能为空', trigger: 'change' }], subject: [{ required: true, message: '科目不能为空', trigger: 'change' }],
estimatedFinishTime: [{ required: true, message: '预计完工不能为空', trigger: 'change' }], estimatedFinishTime: [{ required: true, message: '预计完工不能为空', trigger: 'change' }],
@ -728,7 +814,7 @@ export default {
} }
}, },
computed: { computed: {
// = // =
gsfTotal() { gsfTotal() {
let gsf = '0' let gsf = '0'
if (this.formobj.sitemVos.length > 0) { if (this.formobj.sitemVos.length > 0) {
@ -740,7 +826,7 @@ export default {
} }
return gsf return gsf
}, },
// = * // = *
clfTotal() { clfTotal() {
let clf = '0' let clf = '0'
if (this.formobj.goodsDetailsVos.length > 0) { if (this.formobj.goodsDetailsVos.length > 0) {
@ -771,7 +857,7 @@ export default {
ys = Math.round((parseFloat(ys) + parseFloat(this.gsfTotal) + parseFloat(this.clfTotal) + parseFloat(this.fjfTotal)) * 100) / 100 ys = Math.round((parseFloat(ys) + parseFloat(this.gsfTotal) + parseFloat(this.clfTotal) + parseFloat(this.fjfTotal)) * 100) / 100
return ys return ys
}, },
// = + // = +
yhTotal() { yhTotal() {
let yh = '0' let yh = '0'
if (this.formobj.sitemVos.length > 0) { if (this.formobj.sitemVos.length > 0) {
@ -907,9 +993,10 @@ export default {
day: nowDate.getDate() day: nowDate.getDate()
} }
this.formobj.createDate = date.year + '-' + (date.month >= 10 ? date.month : '0' + date.month) + '-' + (date.day >= 10 ? date.day : '0' + date.day) this.formobj.createDate = date.year + '-' + (date.month >= 10 ? date.month : '0' + date.month) + '-' + (date.day >= 10 ? date.day : '0' + date.day)
this.formobj.isGoOut = '0' this.formobj.isGoOut = '2'
this.formobj.nodeCode = '1' this.formobj.nodeCode = '1'
this.formobj.nodeName = '登记' this.formobj.nodeName = '登记'
this.formobj.invoiceVo.isInvoicing = '0'
}, },
showEdit(sid) { showEdit(sid) {
this.viewTitle = '【编辑】维修单' this.viewTitle = '【编辑】维修单'
@ -926,9 +1013,13 @@ export default {
} }
}) })
}, },
selectCustomer() { chooseCustomer() {
this.viewState = 2 if (this.formobj.billType !== '') {
this.$refs['divCus'].showData(this.formobj.deptSid, this.formobj.billType) this.viewState = 2
this.$refs['divCus'].showData(this.formobj.deptSid, this.formobj.billType)
} else {
this.$message({ showClose: true, type: 'error', message: '请先选择维修单类型' })
}
}, },
backData(value) { backData(value) {
this.viewState = 1 this.viewState = 1
@ -940,6 +1031,14 @@ export default {
this.formobj.vinNo = value.vinNo this.formobj.vinNo = value.vinNo
this.formobj.vehModel = value.vehModel this.formobj.vehModel = value.vehModel
this.formobj.customerSource = value.source this.formobj.customerSource = value.source
//
if (this.formobj.billTypeKey === '2') {
req.getListByCustomerSid({ customerSid: this.formobj.customerSid }).then((res) => {
if (res.success) {
this.people_list = res.data
}
})
}
}, },
billTypeChange(value) { billTypeChange(value) {
const choose = this.billType_list.filter((item) => item.dictValue === value) const choose = this.billType_list.filter((item) => item.dictValue === value)
@ -984,6 +1083,16 @@ export default {
this.formobj.mainRepairers = '' this.formobj.mainRepairers = ''
} }
}, },
dockingPeopleChange(value) {
const choose = this.people_list.filter((item) => item.sid === value)
if (choose.length > 0 && choose !== null) {
this.formobj.dockingPeople = choose[0].name
this.formobj.dockingPhone = choose[0].mobile
} else {
this.formobj.dockingPeople = ''
this.formobj.dockingPhone = ''
}
},
responsibilityChange(value) { responsibilityChange(value) {
const choose = this.responsibility_list.filter((item) => item.dictValue === value) const choose = this.responsibility_list.filter((item) => item.dictValue === value)
if (choose.length > 0 && choose !== null) { if (choose.length > 0 && choose !== null) {
@ -1040,6 +1149,14 @@ export default {
insuranceDelete(index) { insuranceDelete(index) {
this.formobj.insuranceVo.insuranceList.splice(index, 1) this.formobj.insuranceVo.insuranceList.splice(index, 1)
}, },
isInvoicingChange() {
if (this.formobj.invoiceVo.isInvoicing === '1') {
this.formobj.invoiceVo.taxItems = ['维修项目', '维修用料', '附加项目', '其它附加项目']
} else {
this.formobj.invoiceVo.taxItems = []
}
this.countChange()
},
invoiceTypeChange(value) { invoiceTypeChange(value) {
const choose = this.invoiceType_list.filter((item) => item.dictValue === value) const choose = this.invoiceType_list.filter((item) => item.dictValue === value)
if (choose.length > 0 && choose !== null) { if (choose.length > 0 && choose !== null) {
@ -1048,6 +1165,80 @@ export default {
this.formobj.invoiceVo.invoiceTypeKey = '' this.formobj.invoiceVo.invoiceTypeKey = ''
} }
}, },
//
countChange() {
//
if (this.formobj.sitemVos.length > 0) {
//
if (this.formobj.invoiceVo.taxItems.includes('维修项目')) {
this.formobj.sitemVos.forEach((e) => {
// = + * (1 + )
e.price = Math.round((parseFloat(e.sitemPrice) + parseFloat(e.sitemPrice) * (parseFloat(1) + parseFloat(this.formobj.invoiceVo.taxRate !== '' ? this.formobj.invoiceVo.taxRate : '0') / 100)) * 100) / 100
this.computeYHAndXSJE(e)
})
} else {
this.formobj.sitemVos.forEach((k) => {
// =
k.price = k.sitemPrice
this.computeYHAndXSJE(k)
})
}
}
//
if (this.formobj.goodsDetailsVos.length > 0) {
//
if (this.formobj.invoiceVo.taxItems.includes('维修用料')) {
this.formobj.goodsDetailsVos.forEach((e) => {
//
if (e.isTaxRate) {
// =
e.price = e.goodsDetailsPrice
this.computeYHAndJE(e)
} else {
// = + * (1 + )
e.price = Math.round((parseFloat(e.goodsDetailsPrice) + parseFloat(e.goodsDetailsPrice) * (parseFloat(1) + parseFloat(this.formobj.invoiceVo.taxRate !== '' ? this.formobj.invoiceVo.taxRate : '0') / 100)) * 100) / 100
this.computeYHAndJE(e)
}
})
} else {
this.formobj.goodsDetailsVos.forEach((k) => {
// =
k.price = k.goodsDetailsPrice
this.computeYHAndJE(k)
})
}
}
//
if (this.formobj.aitemVos.length > 0) {
//
if (this.formobj.invoiceVo.taxItems.includes('其它附加项目')) {
this.formobj.aitemVos.forEach((e) => {
// = + * (1 + )
e.price = Math.round((parseFloat(e.aitemPrice) + parseFloat(e.aitemPrice) * (parseFloat(1) + parseFloat(this.formobj.invoiceVo.taxRate !== '' ? this.formobj.invoiceVo.taxRate : '0') / 100)) * 100) / 100
})
} else {
this.formobj.aitemVos.forEach((k) => {
// =
k.price = k.aitemPrice
})
}
}
//
if (this.formobj.invoiceVo.taxItems.includes('附加项目')) {
//
// = + * (1 + )
this.formobj.outKPAmount = Math.round((parseFloat(this.formobj.outAmount !== '' ? this.formobj.outAmount : '0') + parseFloat(this.formobj.outAmount !== '' ? this.formobj.outAmount : '0') * (parseFloat(1) + parseFloat(this.formobj.invoiceVo.taxRate !== '' ? this.formobj.invoiceVo.taxRate : '0') / 100)) * 100) / 100
// = + * (1 + )
this.formobj.subsidyKPAmount = Math.round((parseFloat(this.formobj.subsidyAmount !== '' ? this.formobj.subsidyAmount : '0') + parseFloat(this.formobj.subsidyAmount !== '' ? this.formobj.subsidyAmount : '0') * (parseFloat(1) + parseFloat(this.formobj.invoiceVo.taxRate !== '' ? this.formobj.invoiceVo.taxRate : '0') / 100)) * 100) / 100
// = + * (1 + )
this.formobj.rescueKPAmount = Math.round((parseFloat(this.formobj.rescueAmount !== '' ? this.formobj.rescueAmount : '0') + parseFloat(this.formobj.rescueAmount !== '' ? this.formobj.rescueAmount : '0') * (parseFloat(1) + parseFloat(this.formobj.invoiceVo.taxRate !== '' ? this.formobj.invoiceVo.taxRate : '0') / 100)) * 100) / 100
} else {
//
this.formobj.outKPAmount = ''
this.formobj.subsidyKPAmount = ''
this.formobj.rescueKPAmount = ''
}
},
serviceAdd() { serviceAdd() {
this.formobj.sitemVos.push({ this.formobj.sitemVos.push({
serviceItemSid: '', serviceItemSid: '',
@ -1060,6 +1251,7 @@ export default {
hourPrice: '', hourPrice: '',
hours: '', hours: '',
price: '', price: '',
sitemPrice: '', //
discount: '', discount: '',
discountAmount: '', discountAmount: '',
amount: '', amount: '',
@ -1097,7 +1289,13 @@ export default {
row.examineHourPrice = value.examineHourPrice row.examineHourPrice = value.examineHourPrice
row.hourPrice = value.hourPrice row.hourPrice = value.hourPrice
row.hours = value.hours row.hours = value.hours
row.price = value.price row.sitemPrice = value.price
if (this.formobj.invoiceVo.isInvoicing === '1' && this.formobj.invoiceVo.taxItems.length > 0 && this.formobj.invoiceVo.taxItems.includes('维修项目')) {
// = + * ( 1 + )
row.price = Math.round((parseFloat(row.sitemPrice) + parseFloat(row.sitemPrice) * (parseFloat(1) + parseFloat(this.formobj.invoiceVo.taxRate !== '' ? this.formobj.invoiceVo.taxRate : '0') / 100)) * 100) / 100
} else {
row.price = row.sitemPrice
}
row.discount = '10' row.discount = '10'
row.discountAmount = '0' row.discountAmount = '0'
row.amount = row.price row.amount = row.price
@ -1120,7 +1318,18 @@ export default {
}) })
row.staffNameList = aa row.staffNameList = aa
}, },
// -- partsSellerChange(row, list) {
const aa = []
list.forEach((e) => {
this.user_list.forEach((k) => {
if (e === k.sid) {
aa.push(k.name)
}
})
})
row.partsSellers = aa
},
// --
computeYHAndXSJE(row) { computeYHAndXSJE(row) {
// ( * (1 - ( * 0.1))) // ( * (1 - ( * 0.1)))
row.discountAmount = Math.round((parseFloat(row.price === '' ? '0' : row.price) * Math.round((parseFloat(1) - parseFloat(row.discount === '' ? '0' : row.discount) * parseFloat(0.1)) * 100) / 100) * 100) / 100 row.discountAmount = Math.round((parseFloat(row.price === '' ? '0' : row.price) * Math.round((parseFloat(1) - parseFloat(row.discount === '' ? '0' : row.discount) * parseFloat(0.1)) * 100) / 100) * 100) / 100
@ -1131,7 +1340,7 @@ export default {
row.amount = Math.round((parseFloat(row.price === '' ? '0' : row.price) - parseFloat(row.discountAmount === '' ? '0' : row.discountAmount)) * 100) / 100 row.amount = Math.round((parseFloat(row.price === '' ? '0' : row.price) - parseFloat(row.discountAmount === '' ? '0' : row.discountAmount)) * 100) / 100
} }
}, },
// -- // --
computeYHAndJE(row) { computeYHAndJE(row) {
// ( * * (1 - ( * 0.1))) // ( * * (1 - ( * 0.1)))
row.discountAmount = Math.round((parseFloat(row.price === '' ? '0' : row.price) * parseFloat(row.count !== '' ? row.count : '0') * Math.round((parseFloat(1) - parseFloat(row.discount === '' ? '0' : row.discount) * parseFloat(0.1)) * 100) / 100) * 100) / 100 row.discountAmount = Math.round((parseFloat(row.price === '' ? '0' : row.price) * parseFloat(row.count !== '' ? row.count : '0') * Math.round((parseFloat(1) - parseFloat(row.discount === '' ? '0' : row.discount) * parseFloat(0.1)) * 100) / 100) * 100) / 100
@ -1142,11 +1351,48 @@ export default {
row.amount = Math.round((parseFloat(row.price === '' ? '0' : row.price) * parseFloat(row.count !== '' ? row.count : '0') - parseFloat(row.discountAmount === '' ? '0' : row.discountAmount)) * 100) / 100 row.amount = Math.round((parseFloat(row.price === '' ? '0' : row.price) * parseFloat(row.count !== '' ? row.count : '0') - parseFloat(row.discountAmount === '' ? '0' : row.discountAmount)) * 100) / 100
} }
}, },
// --
outKPAountInput() {
//
if (this.formobj.invoiceVo.taxItems.includes('附加项目')) {
//
// = + * (1 + )
this.formobj.outKPAmount = Math.round((parseFloat(this.formobj.outAmount !== '' ? this.formobj.outAmount : '0') + parseFloat(this.formobj.outAmount !== '' ? this.formobj.outAmount : '0') * (parseFloat(1) + parseFloat(this.formobj.invoiceVo.taxRate !== '' ? this.formobj.invoiceVo.taxRate : '0') / 100)) * 100) / 100
} else {
//
this.formobj.outKPAmount = ''
}
},
// --
subsidyKPAountInput() {
//
if (this.formobj.invoiceVo.taxItems.includes('附加项目')) {
//
// = + * (1 + )
this.formobj.subsidyKPAmount = Math.round((parseFloat(this.formobj.subsidyAmount !== '' ? this.formobj.subsidyAmount : '0') + parseFloat(this.formobj.subsidyAmount !== '' ? this.formobj.subsidyAmount : '0') * (parseFloat(1) + parseFloat(this.formobj.invoiceVo.taxRate !== '' ? this.formobj.invoiceVo.taxRate : '0') / 100)) * 100) / 100
} else {
//
this.formobj.subsidyKPAmount = ''
}
},
// --
rescueKPAountInput() {
//
if (this.formobj.invoiceVo.taxItems.includes('附加项目')) {
//
// = + * (1 + )
this.formobj.rescueKPAmount = Math.round((parseFloat(this.formobj.rescueAmount !== '' ? this.formobj.rescueAmount : '0') + parseFloat(this.formobj.rescueAmount !== '' ? this.formobj.rescueAmount : '0') * (parseFloat(1) + parseFloat(this.formobj.invoiceVo.taxRate !== '' ? this.formobj.invoiceVo.taxRate : '0') / 100)) * 100) / 100
} else {
//
this.formobj.rescueKPAmount = ''
}
},
subjoinAdd() { subjoinAdd() {
this.formobj.aitemVos.push({ this.formobj.aitemVos.push({
aitemSid: '', aitemSid: '',
aitemName: '', aitemName: '',
price: '' price: '',
aitemPrice: '' //
}) })
}, },
subjoinInput(value) { subjoinInput(value) {
@ -1171,7 +1417,13 @@ export default {
subjoinCurrentChange(value, row) { subjoinCurrentChange(value, row) {
row.aitemSid = value.sid row.aitemSid = value.sid
row.aitemName = value.aitemName row.aitemName = value.aitemName
row.price = value.price row.aitemPrice = value.price
if (this.formobj.invoiceVo.isInvoicing === '1' && this.formobj.invoiceVo.taxItems.length > 0 && this.formobj.invoiceVo.taxItems.includes('其它附加项目')) {
// = + * ( 1 + )
row.price = Math.round((parseFloat(row.aitemPrice) + parseFloat(row.aitemPrice) * (parseFloat(1) + parseFloat(this.formobj.invoiceVo.taxRate !== '' ? this.formobj.invoiceVo.taxRate : '0') / 100)) * 100) / 100
} else {
row.price = row.aitemPrice
}
document.body.click() document.body.click()
}, },
handleSuccess(resp, file, fileList) { handleSuccess(resp, file, fileList) {
@ -1196,8 +1448,22 @@ export default {
this.formobj.operatorSid = window.sessionStorage.getItem('userSid') this.formobj.operatorSid = window.sessionStorage.getItem('userSid')
this.$refs['form_obj'].validate((valid) => { this.$refs['form_obj'].validate((valid) => {
if (valid) { if (valid) {
if (this.formobj.billTypeKey === '2' && this.formobj.dockingPeople === '') {
this.$message({ showClose: true, type: 'error', message: '维修单类类型为欠款月结,对接人信息不能为空' })
return
}
if (this.formobj.subject === '保外' && this.formobj.invoiceVo.isInvoicing === '1') {
if (this.formobj.invoiceVo.invoiceType === '') {
this.$message({ showClose: true, type: 'error', message: '发票信息中是否开发票为是,开票类型不能为空' })
return
}
if (this.formobj.invoiceVo.taxRate === '') {
this.$message({ showClose: true, type: 'error', message: '发票信息中是否开发票为是,税率不能为空' })
return
}
}
if (this.formobj.sitemVos.length === 0) { if (this.formobj.sitemVos.length === 0) {
this.$message({ showClose: true, type: 'error', message: '服务项目列表不能为空' }) this.$message({ showClose: true, type: 'error', message: '维修项目列表不能为空' })
return return
} }
this.formobj.hourAmount = this.gsfTotal // this.formobj.hourAmount = this.gsfTotal //
@ -1226,8 +1492,22 @@ export default {
this.formobj.operatorSid = window.sessionStorage.getItem('userSid') this.formobj.operatorSid = window.sessionStorage.getItem('userSid')
this.$refs['form_obj'].validate((valid) => { this.$refs['form_obj'].validate((valid) => {
if (valid) { if (valid) {
if (this.formobj.billTypeKey === '2' && this.formobj.dockingPeople === '') {
this.$message({ showClose: true, type: 'error', message: '维修单类类型为欠款月结,对接人信息不能为空' })
return
}
if (this.formobj.subject === '保外' && this.formobj.invoiceVo.isInvoicing === '1') {
if (this.formobj.invoiceVo.invoiceType === '') {
this.$message({ showClose: true, type: 'error', message: '发票信息中是否开发票为是,开票类型不能为空' })
return
}
if (this.formobj.invoiceVo.taxRate === '') {
this.$message({ showClose: true, type: 'error', message: '发票信息中是否开发票为是,税率不能为空' })
return
}
}
if (this.formobj.sitemVos.length === 0) { if (this.formobj.sitemVos.length === 0) {
this.$message({ showClose: true, type: 'error', message: '服务项目列表不能为空' }) this.$message({ showClose: true, type: 'error', message: '维修项目列表不能为空' })
return return
} }
this.submitdisabled = true this.submitdisabled = true
@ -1250,7 +1530,7 @@ export default {
this.$refs['form_obj'].validate((valid) => { this.$refs['form_obj'].validate((valid) => {
if (valid) { if (valid) {
if (this.formobj.sitemVos.length === 0) { if (this.formobj.sitemVos.length === 0) {
this.$message({ showClose: true, type: 'error', message: '服务项目列表不能为空' }) this.$message({ showClose: true, type: 'error', message: '维修项目列表不能为空' })
return return
} }
this.submitdisabled = true this.submitdisabled = true
@ -1321,7 +1601,18 @@ export default {
}) })
}, },
toPrintSettle() { toPrintSettle() {
req.printSettle({ sid: this.formobj.sid }).then((res) => { if (this.formobj.subject === '保内') {
this.dialogVisible = true
} else {
this.printSettle()
}
},
printSettle() {
this.temp.sid = this.formobj.sid
this.temp.createOrgSid = this.formobj.createOrgSid
this.temp.useOrgSid = this.formobj.deptSid
this.temp.userSid = this.formobj.createBySid
req.printSettlement(this.temp).then((res) => {
if (res.success) { if (res.success) {
var xhr = new XMLHttpRequest() var xhr = new XMLHttpRequest()
xhr.open('GET', process.env.VUE_APP_BASE_API + '/base/file/download?filePath=' + res.data + '&outFileName=' + '结算单', true) xhr.open('GET', process.env.VUE_APP_BASE_API + '/base/file/download?filePath=' + res.data + '&outFileName=' + '结算单', true)
@ -1346,6 +1637,14 @@ export default {
} }
}) })
}, },
handleConfirm() {
if (this.temp.type !== '') {
this.dialogVisible = false
this.printSettle()
} else {
this.$message({ showClose: true, type: 'error', message: '打印类型不能为空' })
}
},
resetState() { resetState() {
this.viewState = 1 this.viewState = 1
}, },
@ -1405,7 +1704,9 @@ export default {
invoiceType: '', invoiceType: '',
invoiceTypeKey: '', invoiceTypeKey: '',
invoiceCompanySid: '', invoiceCompanySid: '',
invoiceCompany: '' invoiceCompany: '',
taxRate: '',
taxItems: []
}, },
insuranceVo: { insuranceVo: {
responsibility: '', responsibility: '',
@ -1441,8 +1742,11 @@ export default {
addAmount: '', addAmount: '',
taxAmount: '', taxAmount: '',
outAmount: '', outAmount: '',
outKPAmount: '',
subsidyAmount: '', subsidyAmount: '',
subsidyKPAmount: '',
rescueAmount: '', rescueAmount: '',
rescueKPAmount: '',
actualAmount: '', actualAmount: '',
receivableAmount: '', receivableAmount: '',
subsidyRemarks: '', subsidyRemarks: '',

8
yxt-as-ui/src/views/operation/repairbill/repairbillBYLeaveFactory.vue

@ -2,7 +2,7 @@
<div class="app-container"> <div class="app-container">
<!--列表页面--> <!--列表页面-->
<div v-show="viewState == 1"> <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查询列表部分--> <!--Start查询列表部分-->
<div class="main-content"> <div class="main-content">
<div class="searchcon"> <div class="searchcon">
@ -26,7 +26,7 @@
<span style="padding: 0 8px"></span> <span style="padding: 0 8px"></span>
<el-date-picker v-model="listQuery.params.endTime" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker> <el-date-picker v-model="listQuery.params.endTime" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="单类型"> <el-form-item label="维修单类型">
<el-select v-model="listQuery.params.billType" clearable placeholder="请选择" filterable> <el-select v-model="listQuery.params.billType" clearable placeholder="请选择" filterable>
<el-option v-for="item in billType_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"> <el-option v-for="item in billType_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue">
</el-option> </el-option>
@ -97,7 +97,7 @@
<span>{{ scope.row.outDoorState == '1' ? '是' : scope.row.outDoorState == '0' ? '否' :'' }}</span> <span>{{ scope.row.outDoorState == '1' ? '是' : scope.row.outDoorState == '0' ? '否' :'' }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="单据编号" align="center" width="130"> <el-table-column label="单据编号" align="center" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<span class="bluezi" @click="toInfo(scope.row)">{{ scope.row.billNo }}</span> <span class="bluezi" @click="toInfo(scope.row)">{{ scope.row.billNo }}</span>
</template> </template>
@ -107,7 +107,7 @@
<el-table-column prop="dept" label="制单部门" align="center" width="120" /> <el-table-column prop="dept" label="制单部门" align="center" width="120" />
<el-table-column prop="createByName" label="制单人" align="center" width="120" /> <el-table-column prop="createByName" label="制单人" align="center" width="120" />
<el-table-column prop="createTime" label="制单日期" align="center" width="120" /> <el-table-column prop="createTime" label="制单日期" align="center" width="120" />
<el-table-column prop="billType" label="单类型" align="center" width="120" /> <el-table-column prop="billType" label="维修单类型" align="center" width="120" />
<el-table-column prop="subject" label="科目" align="center" width="100" /> <el-table-column prop="subject" label="科目" align="center" width="100" />
<el-table-column prop="entryTime" label="进厂时间" align="center" width="160" /> <el-table-column prop="entryTime" label="进厂时间" align="center" width="160" />
<el-table-column prop="estimatedFinishTime" label="预计完工时间" align="center" width="160" /> <el-table-column prop="estimatedFinishTime" label="预计完工时间" align="center" width="160" />

48
yxt-as-ui/src/views/operation/repairbill/repairbillByBeCompleted.vue

@ -2,7 +2,7 @@
<div class="app-container"> <div class="app-container">
<!--列表页面--> <!--列表页面-->
<div v-show="viewState == 1"> <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查询列表部分--> <!--Start查询列表部分-->
<div class="main-content"> <div class="main-content">
<div class="searchcon"> <div class="searchcon">
@ -26,7 +26,7 @@
<span style="padding: 0 8px"></span> <span style="padding: 0 8px"></span>
<el-date-picker v-model="listQuery.params.endTime" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker> <el-date-picker v-model="listQuery.params.endTime" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="单类型"> <el-form-item label="维修单类型">
<el-select v-model="listQuery.params.billType" clearable placeholder="请选择" filterable> <el-select v-model="listQuery.params.billType" clearable placeholder="请选择" filterable>
<el-option v-for="item in billType_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"> <el-option v-for="item in billType_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue">
</el-option> </el-option>
@ -92,7 +92,7 @@
<el-table :key="tableKey" v-loading="listLoading" :data="list" border style="width: 100%;" @selection-change="handleSelectionChange"> <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 type="selection" align="center" width="50"/>
<el-table-column label="序号" type="index" width="80" :index="indexMethod" align="center"/> <el-table-column label="序号" type="index" width="80" :index="indexMethod" align="center"/>
<el-table-column label="单据编号" align="center" width="130"> <el-table-column label="单据编号" align="center" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<span class="bluezi" @click="toInfo(scope.row)">{{ scope.row.billNo }}</span> <span class="bluezi" @click="toInfo(scope.row)">{{ scope.row.billNo }}</span>
</template> </template>
@ -102,7 +102,7 @@
<el-table-column prop="dept" label="制单部门" align="center" width="120" /> <el-table-column prop="dept" label="制单部门" align="center" width="120" />
<el-table-column prop="createByName" label="制单人" align="center" width="120" /> <el-table-column prop="createByName" label="制单人" align="center" width="120" />
<el-table-column prop="createTime" label="制单日期" align="center" width="120" /> <el-table-column prop="createTime" label="制单日期" align="center" width="120" />
<el-table-column prop="billType" label="单类型" align="center" width="120" /> <el-table-column prop="billType" label="维修单类型" align="center" width="120" />
<el-table-column prop="subject" label="科目" align="center" width="100" /> <el-table-column prop="subject" label="科目" align="center" width="100" />
<el-table-column prop="entryTime" label="进厂时间" align="center" width="160" /> <el-table-column prop="entryTime" label="进厂时间" align="center" width="160" />
<el-table-column prop="estimatedFinishTime" label="预计完工时间" align="center" width="160" /> <el-table-column prop="estimatedFinishTime" label="预计完工时间" align="center" width="160" />
@ -211,13 +211,6 @@ export default {
btnKey: 'toEdit', btnKey: 'toEdit',
btnLabel: '编辑' btnLabel: '编辑'
}, },
{
type: 'danger',
size: 'small',
icon: 'del',
btnKey: 'doDel',
btnLabel: '删除'
},
{ {
type: 'info', type: 'info',
size: 'small', size: 'small',
@ -314,9 +307,6 @@ export default {
case 'toEdit': case 'toEdit':
this.toEdit() this.toEdit()
break break
case 'doDel':
this.doDel()
break
case 'doClose': case 'doClose':
this.doClose() this.doClose()
break break
@ -435,36 +425,6 @@ export default {
this.viewState = 4 this.viewState = 4
this.$refs['divInfo'].showInfo(row) this.$refs['divInfo'].showInfo(row)
}, },
//
doDel() {
if (this.sids.length === 0) {
this.$message({ showClose: true, type: 'error', message: '请选择至少一条记录进行删除操作' })
return
}
const tip = '请确认是否删除所选 ' + this.sids.length + ' 条记录?'
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.deleteBySids(this.sids).then(resp => {
if (resp.success) {
this.$message({ type: 'success', message: resp.msg, showClose: true })
}
this.getList()
loading.close()
}).catch(e => {
loading.close()
})
}).catch(() => {
})
},
// //
resetState() { resetState() {
this.viewState = 1 this.viewState = 1

48
yxt-as-ui/src/views/operation/repairbill/repairbillByMaintain.vue

@ -2,7 +2,7 @@
<div class="app-container"> <div class="app-container">
<!--列表页面--> <!--列表页面-->
<div v-show="viewState == 1"> <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查询列表部分--> <!--Start查询列表部分-->
<div class="main-content"> <div class="main-content">
<div class="searchcon"> <div class="searchcon">
@ -26,7 +26,7 @@
<span style="padding: 0 8px"></span> <span style="padding: 0 8px"></span>
<el-date-picker v-model="listQuery.params.endTime" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker> <el-date-picker v-model="listQuery.params.endTime" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="单类型"> <el-form-item label="维修单类型">
<el-select v-model="listQuery.params.billType" clearable placeholder="请选择" filterable> <el-select v-model="listQuery.params.billType" clearable placeholder="请选择" filterable>
<el-option v-for="item in billType_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"> <el-option v-for="item in billType_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue">
</el-option> </el-option>
@ -92,7 +92,7 @@
<el-table :key="tableKey" v-loading="listLoading" :data="list" border style="width: 100%;" @selection-change="handleSelectionChange"> <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 type="selection" align="center" width="50"/>
<el-table-column label="序号" type="index" width="80" :index="indexMethod" align="center"/> <el-table-column label="序号" type="index" width="80" :index="indexMethod" align="center"/>
<el-table-column label="单据编号" align="center" width="130"> <el-table-column label="单据编号" align="center" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<span class="bluezi" @click="toInfo(scope.row)">{{ scope.row.billNo }}</span> <span class="bluezi" @click="toInfo(scope.row)">{{ scope.row.billNo }}</span>
</template> </template>
@ -102,7 +102,7 @@
<el-table-column prop="dept" label="制单部门" align="center" width="120" /> <el-table-column prop="dept" label="制单部门" align="center" width="120" />
<el-table-column prop="createByName" label="制单人" align="center" width="120" /> <el-table-column prop="createByName" label="制单人" align="center" width="120" />
<el-table-column prop="createTime" label="制单日期" align="center" width="120" /> <el-table-column prop="createTime" label="制单日期" align="center" width="120" />
<el-table-column prop="billType" label="单类型" align="center" width="120" /> <el-table-column prop="billType" label="维修单类型" align="center" width="120" />
<el-table-column prop="subject" label="科目" align="center" width="100" /> <el-table-column prop="subject" label="科目" align="center" width="100" />
<el-table-column prop="entryTime" label="进厂时间" align="center" width="160" /> <el-table-column prop="entryTime" label="进厂时间" align="center" width="160" />
<el-table-column prop="estimatedFinishTime" label="预计完工时间" align="center" width="160" /> <el-table-column prop="estimatedFinishTime" label="预计完工时间" align="center" width="160" />
@ -168,13 +168,6 @@ export default {
btnKey: 'toEdit', btnKey: 'toEdit',
btnLabel: '编辑' btnLabel: '编辑'
}, },
{
type: 'danger',
size: 'small',
icon: 'del',
btnKey: 'doDel',
btnLabel: '删除'
},
{ {
type: 'info', type: 'info',
size: 'small', size: 'small',
@ -268,9 +261,6 @@ export default {
case 'toEdit': case 'toEdit':
this.toEdit() this.toEdit()
break break
case 'doDel':
this.doDel()
break
case 'doClose': case 'doClose':
this.doClose() this.doClose()
break break
@ -363,36 +353,6 @@ export default {
this.viewState = 4 this.viewState = 4
this.$refs['divInfo'].showInfo(row) this.$refs['divInfo'].showInfo(row)
}, },
//
doDel() {
if (this.sids.length === 0) {
this.$message({ showClose: true, type: 'error', message: '请选择至少一条记录进行删除操作' })
return
}
const tip = '请确认是否删除所选 ' + this.sids.length + ' 条记录?'
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.deleteBySids(this.sids).then(resp => {
if (resp.success) {
this.$message({ type: 'success', message: resp.msg, showClose: true })
}
this.getList()
loading.close()
}).catch(e => {
loading.close()
})
}).catch(() => {
})
},
// //
resetState() { resetState() {
this.viewState = 1 this.viewState = 1

48
yxt-as-ui/src/views/operation/repairbill/repairbillBySendWork.vue

@ -2,7 +2,7 @@
<div class="app-container"> <div class="app-container">
<!--列表页面--> <!--列表页面-->
<div v-show="viewState == 1"> <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查询列表部分--> <!--Start查询列表部分-->
<div class="main-content"> <div class="main-content">
<div class="searchcon"> <div class="searchcon">
@ -26,7 +26,7 @@
<span style="padding: 0 8px"></span> <span style="padding: 0 8px"></span>
<el-date-picker v-model="listQuery.params.endTime" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker> <el-date-picker v-model="listQuery.params.endTime" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="单类型"> <el-form-item label="维修单类型">
<el-select v-model="listQuery.params.billType" clearable placeholder="请选择" filterable> <el-select v-model="listQuery.params.billType" clearable placeholder="请选择" filterable>
<el-option v-for="item in billType_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"> <el-option v-for="item in billType_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue">
</el-option> </el-option>
@ -92,7 +92,7 @@
<el-table :key="tableKey" v-loading="listLoading" :data="list" border style="width: 100%;" @selection-change="handleSelectionChange"> <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 type="selection" align="center" width="50"/>
<el-table-column label="序号" type="index" width="80" :index="indexMethod" align="center"/> <el-table-column label="序号" type="index" width="80" :index="indexMethod" align="center"/>
<el-table-column label="单据编号" align="center" width="130"> <el-table-column label="单据编号" align="center" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<span class="bluezi" @click="toInfo(scope.row)">{{ scope.row.billNo }}</span> <span class="bluezi" @click="toInfo(scope.row)">{{ scope.row.billNo }}</span>
</template> </template>
@ -102,7 +102,7 @@
<el-table-column prop="dept" label="制单部门" align="center" width="120" /> <el-table-column prop="dept" label="制单部门" align="center" width="120" />
<el-table-column prop="createByName" label="制单人" align="center" width="120" /> <el-table-column prop="createByName" label="制单人" align="center" width="120" />
<el-table-column prop="createTime" label="制单日期" align="center" width="120" /> <el-table-column prop="createTime" label="制单日期" align="center" width="120" />
<el-table-column prop="billType" label="单类型" align="center" width="120" /> <el-table-column prop="billType" label="维修单类型" align="center" width="120" />
<el-table-column prop="subject" label="科目" align="center" width="100" /> <el-table-column prop="subject" label="科目" align="center" width="100" />
<el-table-column prop="entryTime" label="进厂时间" align="center" width="160" /> <el-table-column prop="entryTime" label="进厂时间" align="center" width="160" />
<el-table-column prop="estimatedFinishTime" label="预计完工时间" align="center" width="160" /> <el-table-column prop="estimatedFinishTime" label="预计完工时间" align="center" width="160" />
@ -168,13 +168,6 @@ export default {
btnKey: 'toEdit', btnKey: 'toEdit',
btnLabel: '编辑' btnLabel: '编辑'
}, },
{
type: 'danger',
size: 'small',
icon: 'del',
btnKey: 'doDel',
btnLabel: '删除'
},
{ {
type: 'info', type: 'info',
size: 'small', size: 'small',
@ -268,9 +261,6 @@ export default {
case 'toEdit': case 'toEdit':
this.toEdit() this.toEdit()
break break
case 'doDel':
this.doDel()
break
case 'doClose': case 'doClose':
this.doClose() this.doClose()
break break
@ -363,36 +353,6 @@ export default {
this.viewState = 4 this.viewState = 4
this.$refs['divInfo'].showInfo(row) this.$refs['divInfo'].showInfo(row)
}, },
//
doDel() {
if (this.sids.length === 0) {
this.$message({ showClose: true, type: 'error', message: '请选择至少一条记录进行删除操作' })
return
}
const tip = '请确认是否删除所选 ' + this.sids.length + ' 条记录?'
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.deleteBySids(this.sids).then(resp => {
if (resp.success) {
this.$message({ type: 'success', message: resp.msg, showClose: true })
}
this.getList()
loading.close()
}).catch(e => {
loading.close()
})
}).catch(() => {
})
},
// //
resetState() { resetState() {
this.viewState = 1 this.viewState = 1

48
yxt-as-ui/src/views/operation/repairbill/repairbillBySettleAccounts.vue

@ -2,7 +2,7 @@
<div class="app-container"> <div class="app-container">
<!--列表页面--> <!--列表页面-->
<div v-show="viewState == 1"> <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查询列表部分--> <!--Start查询列表部分-->
<div class="main-content"> <div class="main-content">
<div class="searchcon"> <div class="searchcon">
@ -26,7 +26,7 @@
<span style="padding: 0 8px"></span> <span style="padding: 0 8px"></span>
<el-date-picker v-model="listQuery.params.endTime" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker> <el-date-picker v-model="listQuery.params.endTime" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="单类型"> <el-form-item label="维修单类型">
<el-select v-model="listQuery.params.billType" clearable placeholder="请选择" filterable> <el-select v-model="listQuery.params.billType" clearable placeholder="请选择" filterable>
<el-option v-for="item in billType_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"> <el-option v-for="item in billType_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue">
</el-option> </el-option>
@ -92,7 +92,7 @@
<el-table :key="tableKey" v-loading="listLoading" :data="list" border style="width: 100%;" @selection-change="handleSelectionChange"> <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 type="selection" align="center" width="50"/>
<el-table-column label="序号" type="index" width="80" :index="indexMethod" align="center"/> <el-table-column label="序号" type="index" width="80" :index="indexMethod" align="center"/>
<el-table-column label="单据编号" align="center" width="130"> <el-table-column label="单据编号" align="center" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<span class="bluezi" @click="toInfo(scope.row)">{{ scope.row.billNo }}</span> <span class="bluezi" @click="toInfo(scope.row)">{{ scope.row.billNo }}</span>
</template> </template>
@ -102,7 +102,7 @@
<el-table-column prop="dept" label="制单部门" align="center" width="120" /> <el-table-column prop="dept" label="制单部门" align="center" width="120" />
<el-table-column prop="createByName" label="制单人" align="center" width="120" /> <el-table-column prop="createByName" label="制单人" align="center" width="120" />
<el-table-column prop="createTime" label="制单日期" align="center" width="120" /> <el-table-column prop="createTime" label="制单日期" align="center" width="120" />
<el-table-column prop="billType" label="单类型" align="center" width="120" /> <el-table-column prop="billType" label="维修单类型" align="center" width="120" />
<el-table-column prop="subject" label="科目" align="center" width="100" /> <el-table-column prop="subject" label="科目" align="center" width="100" />
<el-table-column prop="entryTime" label="进厂时间" align="center" width="160" /> <el-table-column prop="entryTime" label="进厂时间" align="center" width="160" />
<el-table-column prop="estimatedFinishTime" label="预计完工时间" align="center" width="160" /> <el-table-column prop="estimatedFinishTime" label="预计完工时间" align="center" width="160" />
@ -169,13 +169,6 @@ export default {
btnKey: 'toEdit', btnKey: 'toEdit',
btnLabel: '编辑' btnLabel: '编辑'
}, },
{
type: 'danger',
size: 'small',
icon: 'del',
btnKey: 'doDel',
btnLabel: '删除'
},
{ {
type: 'info', type: 'info',
size: 'small', size: 'small',
@ -269,9 +262,6 @@ export default {
case 'toEdit': case 'toEdit':
this.toEdit() this.toEdit()
break break
case 'doDel':
this.doDel()
break
case 'doClose': case 'doClose':
this.doClose() this.doClose()
break break
@ -364,36 +354,6 @@ export default {
this.viewState = 4 this.viewState = 4
this.$refs['divInfo'].showInfo(row) this.$refs['divInfo'].showInfo(row)
}, },
//
doDel() {
if (this.sids.length === 0) {
this.$message({ showClose: true, type: 'error', message: '请选择至少一条记录进行删除操作' })
return
}
const tip = '请确认是否删除所选 ' + this.sids.length + ' 条记录?'
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.deleteBySids(this.sids).then(resp => {
if (resp.success) {
this.$message({ type: 'success', message: resp.msg, showClose: true })
}
this.getList()
loading.close()
}).catch(e => {
loading.close()
})
}).catch(() => {
})
},
// //
resetState() { resetState() {
this.viewState = 1 this.viewState = 1

85
yxt-as-ui/src/views/operation/repairbill/repairbillInfo.vue

@ -26,7 +26,7 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="8"> <el-col :span="8">
<div class="span-sty">单类型</div> <div class="span-sty">维修单类型</div>
<el-form-item><span class="addinputInfo">{{ formobj.billType }}</span></el-form-item> <el-form-item><span class="addinputInfo">{{ formobj.billType }}</span></el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
@ -137,7 +137,7 @@
</el-col> </el-col>
</el-row> </el-row>
</el-collapse-item> </el-collapse-item>
<el-collapse-item title="保险信息" name="3"> <el-collapse-item title="保险信息" name="3" v-show="formobj.billTypeKey == '1'">
<el-row style="border-top: 1px solid #e0e3eb"> <el-row style="border-top: 1px solid #e0e3eb">
<el-col :span="8"> <el-col :span="8">
<div class="span-sty">责任划分</div> <div class="span-sty">责任划分</div>
@ -162,7 +162,7 @@
<el-table-column prop="lossAdjuster" label="定损员及电话" align="center" min-width="220"/> <el-table-column prop="lossAdjuster" label="定损员及电话" align="center" min-width="220"/>
</el-table> </el-table>
</el-collapse-item> </el-collapse-item>
<el-collapse-item title="发票信息" name="4"> <el-collapse-item title="发票信息" name="4" v-show="formobj.subject == '保外'">
<el-row style="border-top: 1px solid #e0e3eb"> <el-row style="border-top: 1px solid #e0e3eb">
<el-col :span="8"> <el-col :span="8">
<div class="span-sty">是否开发票</div> <div class="span-sty">是否开发票</div>
@ -172,17 +172,34 @@
<div class="span-sty">发票类型</div> <div class="span-sty">发票类型</div>
<el-form-item><span class="addinputInfo">{{ formobj.invoiceVo.invoiceType }}</span></el-form-item> <el-form-item><span class="addinputInfo">{{ formobj.invoiceVo.invoiceType }}</span></el-form-item>
</el-col> </el-col>
<el-col :span="8">
<div class="span-sty">税率</div>
<el-form-item><span class="addinputInfo">{{ formobj.invoiceVo.taxRate }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8"> <el-col :span="8">
<div class="span-sty">开票单位</div> <div class="span-sty">开票单位</div>
<el-form-item><span class="addinputInfo">{{ formobj.invoiceVo.invoiceCompany }}</span></el-form-item> <el-form-item><span class="addinputInfo">{{ formobj.invoiceVo.invoiceCompany }}</span></el-form-item>
</el-col> </el-col>
<el-col :span="16">
<div class="span-sty">加税点的项目</div>
<el-form-item>
<el-checkbox-group class="addinputInfo" v-model="formobj.invoiceVo.taxItems">
<el-checkbox disabled label="维修项目"></el-checkbox>
<el-checkbox disabled label="维修用料"></el-checkbox>
<el-checkbox disabled label="附加项目"></el-checkbox>
<el-checkbox disabled label="其它附加项目"></el-checkbox>
</el-checkbox-group>
</el-form-item>
</el-col>
</el-row> </el-row>
</el-collapse-item> </el-collapse-item>
</el-collapse> </el-collapse>
<div class="title">服务项目</div> <div class="title">维修项目</div>
<el-table :key="serviceKey" :data="formobj.sitemVos" :index="index" border style="width: 100%"> <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 fixed width="60" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column prop="serviceItem" label="服务项目" align="center" width="200" /> <el-table-column prop="serviceItem" label="维修项目" align="center" width="200" />
<el-table-column prop="serviceType" label="工种" align="center" width="150" /> <el-table-column prop="serviceType" label="工种" align="center" width="150" />
<el-table-column prop="repairerName" label="维修人" width="200" align="center" /> <el-table-column prop="repairerName" label="维修人" width="200" align="center" />
<el-table-column prop="examineHourPrice" label="工时提成" align="center" width="100" /> <el-table-column prop="examineHourPrice" label="工时提成" align="center" width="100" />
@ -194,7 +211,7 @@
<el-table-column prop="amount" label="金额" align="center" width="150" /> <el-table-column prop="amount" label="金额" align="center" width="150" />
<el-table-column prop="remarks" label="备注" align="center" min-width="300" /> <el-table-column prop="remarks" label="备注" align="center" min-width="300" />
</el-table> </el-table>
<div class="title">商品</div> <div class="title">维修用料</div>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<div class="span-sty span-sty-one" style="width: 300px;!important;">前台登记时对商品要求备注</div> <div class="span-sty span-sty-one" style="width: 300px;!important;">前台登记时对商品要求备注</div>
@ -203,24 +220,33 @@
</el-row> </el-row>
<el-table :key="tableKey" :data="formobj.goodsDetailsVos" :index="index" border style="width: 100%"> <el-table :key="tableKey" :data="formobj.goodsDetailsVos" :index="index" border style="width: 100%">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center" /> <el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center" />
<el-table-column prop="serviceItem" label="维修项目" width="200" align="center" />
<el-table-column prop="goodsSpuName" label="商品名称" width="100" align="center" /> <el-table-column prop="goodsSpuName" label="商品名称" width="100" align="center" />
<el-table-column prop="goodsSkuCode" label="图号" width="100" align="center" /> <el-table-column prop="goodsSkuCode" label="图号" width="100" align="center" />
<el-table-column prop="goodsSkuOwnSpec" label="规格" width="100" align="center" /> <el-table-column prop="goodsSkuOwnSpec" label="规格" width="100" align="center" />
<el-table-column prop="unit" label="单位" width="100" align="center" /> <el-table-column prop="unit" label="单位" width="100" align="center" />
<el-table-column prop="warehouseName" label="仓库" width="100" align="center" /> <el-table-column prop="warehouseName" label="仓库" width="100" align="center" />
<el-table-column prop="warehouseRackCode" label="库位" width="100" align="center" /> <el-table-column prop="warehouseRackCode" label="库位" width="100" align="center" />
<el-table-column prop="price" label="销售价" align="center" width="150" />
<el-table-column prop="count" label="数量" width="100" align="center" /> <el-table-column prop="count" label="数量" width="100" align="center" />
<el-table-column prop="price" label="单价" align="center" width="150" />
<el-table-column prop="discount" label="折扣" align="center" width="100" /> <el-table-column prop="discount" label="折扣" align="center" width="100" />
<el-table-column prop="discountAmount" label="优惠" width="100" align="center" /> <el-table-column prop="discountAmount" label="优惠" width="100" align="center" />
<el-table-column prop="amount" label="金额" width="100" align="center" /> <el-table-column prop="amount" label="销售金额" width="100" align="center" />
<el-table-column prop="remarks" label="备注" align="center" min-width="300" /> <el-table-column prop="remarks" label="备注" align="center" min-width="300" />
<el-table-column prop="operName" label=领料人 width="100" align="center" />
<el-table-column prop="receivedTime" label="接收时间" width="120" align="center" />
<el-table-column prop="partsSellers" label="配件销售人" min-width="150" align="center" />
</el-table> </el-table>
<div class="title">附加项目</div> <div class="title">附加项目</div>
<el-row> <el-row>
<el-col :span="8"> <el-col :span="8">
<div class="span-sty">外出费()</div> <div class="span-sty">外出费()</div>
<el-form-item><span class="addinputInfo">{{ formobj.outAmount }}</span></el-form-item> <el-form-item>
<div style="display: flex;flex-direction: row;justify-content: space-between;align-items: center">
<span class="addinputInfo">{{ formobj.outAmount }}</span>
<span v-show="formobj.outKPAmount !== ''">开票金额{{ formobj.outKPAmount }}</span>
</div>
</el-form-item>
</el-col> </el-col>
<el-col :span="16"> <el-col :span="16">
<div class="span-sty">备注</div> <div class="span-sty">备注</div>
@ -230,7 +256,12 @@
<el-row> <el-row>
<el-col :span="8"> <el-col :span="8">
<div class="span-sty">厂家补助()</div> <div class="span-sty">厂家补助()</div>
<el-form-item><span class="addinputInfo">{{ formobj.subsidyAmount }}</span></el-form-item> <el-form-item>
<div style="display: flex;flex-direction: row;justify-content: space-between;align-items: center">
<span class="addinputInfo">{{ formobj.subsidyAmount }}</span>
<span v-show="formobj.subsidyKPAmount !== ''">开票金额{{ formobj.subsidyKPAmount }}</span>
</div>
</el-form-item>
</el-col> </el-col>
<el-col :span="16"> <el-col :span="16">
<div class="span-sty">备注</div> <div class="span-sty">备注</div>
@ -240,7 +271,12 @@
<el-row> <el-row>
<el-col :span="8"> <el-col :span="8">
<div class="span-sty">施救费()</div> <div class="span-sty">施救费()</div>
<el-form-item><span class="addinputInfo">{{ formobj.rescueAmount }}</span></el-form-item> <el-form-item>
<div style="display: flex;flex-direction: row;justify-content: space-between;align-items: center">
<span class="addinputInfo">{{ formobj.rescueAmount }}</span>
<span v-show="formobj.rescueKPAmount !== ''">开票金额{{ formobj.rescueKPAmount }}</span>
</div>
</el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<div class="span-sty">备注</div> <div class="span-sty">备注</div>
@ -263,7 +299,7 @@
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<div class="span-sty" style="border-right: 0px">应收合计</div> <div class="span-sty" style="border-right: 0px">应收合计</div>
<el-form-item><span class="addinputInfo">{{ ysTotal }} = 工时费{{ gsfTotal }} + 材料费{{ clfTotal }} + 附加费{{ fjfTotal }} + 税额0</span></el-form-item> <el-form-item><span class="addinputInfo">{{ ysTotal }} = 工时费{{ gsfTotal }} + 材料费{{ clfTotal }} + 附加费{{ fjfTotal }}</span></el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
@ -355,7 +391,9 @@ export default {
invoiceType: '', invoiceType: '',
invoiceTypeKey: '', invoiceTypeKey: '',
invoiceCompanySid: '', invoiceCompanySid: '',
invoiceCompany: '' invoiceCompany: '',
taxRate: '',
taxItems: []
}, },
insuranceVo: { insuranceVo: {
responsibility: '', responsibility: '',
@ -391,8 +429,11 @@ export default {
addAmount: '', addAmount: '',
taxAmount: '', taxAmount: '',
outAmount: '', outAmount: '',
outKPAmount: '',
subsidyAmount: '', subsidyAmount: '',
subsidyKPAmount: '',
rescueAmount: '', rescueAmount: '',
rescueKPAmount: '',
actualAmount: '', actualAmount: '',
receivableAmount: '', receivableAmount: '',
subsidyRemarks: '', subsidyRemarks: '',
@ -407,7 +448,7 @@ export default {
} }
}, },
computed: { computed: {
// = // =
gsfTotal() { gsfTotal() {
let gsf = '0' let gsf = '0'
if (this.formobj.sitemVos.length > 0) { if (this.formobj.sitemVos.length > 0) {
@ -450,7 +491,7 @@ export default {
ys = Math.round((parseFloat(ys) + parseFloat(this.gsfTotal) + parseFloat(this.clfTotal) + parseFloat(this.fjfTotal)) * 100) / 100 ys = Math.round((parseFloat(ys) + parseFloat(this.gsfTotal) + parseFloat(this.clfTotal) + parseFloat(this.fjfTotal)) * 100) / 100
return ys return ys
}, },
// = + // = +
yhTotal() { yhTotal() {
let yh = '0' let yh = '0'
if (this.formobj.sitemVos.length > 0) { if (this.formobj.sitemVos.length > 0) {
@ -492,6 +533,13 @@ export default {
} }
}) })
} }
if (this.formobj.goodsDetailsVos.length > 0) {
this.formobj.goodsDetailsVos.forEach((e) => {
if (e.partsSellers.length > 0) {
e.partsSellers = e.partsSellers.join(',')
}
})
}
} }
}) })
}, },
@ -560,7 +608,9 @@ export default {
invoiceType: '', invoiceType: '',
invoiceTypeKey: '', invoiceTypeKey: '',
invoiceCompanySid: '', invoiceCompanySid: '',
invoiceCompany: '' invoiceCompany: '',
taxRate: '',
taxItems: []
}, },
insuranceVo: { insuranceVo: {
responsibility: '', responsibility: '',
@ -596,8 +646,11 @@ export default {
addAmount: '', addAmount: '',
taxAmount: '', taxAmount: '',
outAmount: '', outAmount: '',
outKPAmount: '',
subsidyAmount: '', subsidyAmount: '',
subsidyKPAmount: '',
rescueAmount: '', rescueAmount: '',
rescueKPAmount: '',
actualAmount: '', actualAmount: '',
receivableAmount: '', receivableAmount: '',
subsidyRemarks: '', subsidyRemarks: '',

8
yxt-as-ui/src/views/operation/workorderquery/workorderquery.vue

@ -2,7 +2,7 @@
<div class="app-container"> <div class="app-container">
<!--列表页面--> <!--列表页面-->
<div v-show="viewState == 1"> <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查询列表部分--> <!--Start查询列表部分-->
<div class="main-content"> <div class="main-content">
<div class="searchcon"> <div class="searchcon">
@ -26,7 +26,7 @@
<span style="padding: 0 8px"></span> <span style="padding: 0 8px"></span>
<el-date-picker v-model="listQuery.params.endTime" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker> <el-date-picker v-model="listQuery.params.endTime" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="单类型"> <el-form-item label="维修单类型">
<el-select v-model="listQuery.params.billType" clearable placeholder="请选择" filterable> <el-select v-model="listQuery.params.billType" clearable placeholder="请选择" filterable>
<el-option v-for="item in billType_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"> <el-option v-for="item in billType_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue">
</el-option> </el-option>
@ -84,7 +84,7 @@
</div> </div>
<!--End查询列表部分--> <!--End查询列表部分-->
<div class="listtop"> <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"/> <pageye v-show="list.length > 0" :total="listQuery.total" :page.sync="listQuery.current" :limit.sync="listQuery.size" class="pagination" @pagination="getList"/>
</div> </div>
<!--Start 主页面主要部分 --> <!--Start 主页面主要部分 -->
@ -102,7 +102,7 @@
<el-table-column prop="dept" label="制单部门" align="center" width="120" /> <el-table-column prop="dept" label="制单部门" align="center" width="120" />
<el-table-column prop="createByName" label="制单人" align="center" width="120" /> <el-table-column prop="createByName" label="制单人" align="center" width="120" />
<el-table-column prop="createTime" label="制单日期" align="center" width="120" /> <el-table-column prop="createTime" label="制单日期" align="center" width="120" />
<el-table-column prop="billType" label="单类型" align="center" width="120" /> <el-table-column prop="billType" label="维修单类型" align="center" width="120" />
<el-table-column prop="subject" label="科目" align="center" width="100" /> <el-table-column prop="subject" label="科目" align="center" width="100" />
<el-table-column prop="entryTime" label="进厂时间" align="center" width="160" /> <el-table-column prop="entryTime" label="进厂时间" align="center" width="160" />
<el-table-column prop="estimatedFinishTime" label="预计完工时间" align="center" width="160" /> <el-table-column prop="estimatedFinishTime" label="预计完工时间" align="center" width="160" />

9
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/AsBusrepairBill.java

@ -141,4 +141,13 @@ public class AsBusrepairBill extends BaseEntity {
private Integer isOutFactory; private Integer isOutFactory;
@ApiModelProperty("出库确认备注") @ApiModelProperty("出库确认备注")
private String outboundRemarks; private String outboundRemarks;
@ApiModelProperty("对接人sid")
private String dockingPeopleSid;
@ApiModelProperty("对接人")
private String dockingPeople;
@ApiModelProperty("对接人电话")
private String dockingPhone;
@ApiModelProperty("是否确认材料费(1是,0否)")
private Integer materialConfirm;
} }

8
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/AsBusrepairBillDetailsVo.java

@ -25,8 +25,12 @@ public class AsBusrepairBillDetailsVo implements Vo {
private String claimManufacturerSid; private String claimManufacturerSid;
@ApiModelProperty("特殊标志(1有,0无)") @ApiModelProperty("特殊标志(1有,0无)")
private String isSpecialSign; private String isSpecialSign;
@ApiModelProperty("特殊标志(1有,0无)")
private String isSpecialSign2;
@ApiModelProperty("客户来源 ") @ApiModelProperty("客户来源 ")
private String customerSource; private String customerSource;
@ApiModelProperty("客户来源 ")
private String customerSource2;
@ApiModelProperty("对接人sid") @ApiModelProperty("对接人sid")
private String dockingPeopleSid; private String dockingPeopleSid;
@ApiModelProperty("对接人") @ApiModelProperty("对接人")
@ -49,6 +53,9 @@ public class AsBusrepairBillDetailsVo implements Vo {
private String taxAmount; private String taxAmount;
@ApiModelProperty("是否外出(1是,2否)") @ApiModelProperty("是否外出(1是,2否)")
private String isGoOut; private String isGoOut;
@ApiModelProperty("是否外出(1是,2否)")
private String isGoOut2;
@ApiModelProperty("厂家补助") @ApiModelProperty("厂家补助")
private String subsidyAmount; private String subsidyAmount;
@ApiModelProperty("其他费用") @ApiModelProperty("其他费用")
@ -167,4 +174,5 @@ public class AsBusrepairBillDetailsVo implements Vo {
private List<FileUrlQuery> fileName = new ArrayList<>(); //文件名称 private List<FileUrlQuery> fileName = new ArrayList<>(); //文件名称
@ApiModelProperty("商品登记备注") @ApiModelProperty("商品登记备注")
private String registerRemarks; private String registerRemarks;
private List<String> files = new ArrayList<>(); //文件名称
} }

2
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/AsBusrepairBillDto.java

@ -151,4 +151,6 @@ public class AsBusrepairBillDto implements Dto {
private List<FileUrlQuery> fileName = new ArrayList<>(); //文件名称 private List<FileUrlQuery> fileName = new ArrayList<>(); //文件名称
@ApiModelProperty("商品登记备注") @ApiModelProperty("商品登记备注")
private String registerRemarks; private String registerRemarks;
@ApiModelProperty("附加费")
private String addAmount;
} }

4
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/GoodsDetailsVo.java

@ -68,5 +68,9 @@ public class GoodsDetailsVo implements Vo {
private List<String> partsSellersSids = new ArrayList<>(); private List<String> partsSellersSids = new ArrayList<>();
@ApiModelProperty("配件销售") @ApiModelProperty("配件销售")
private List<String> partsSellers = new ArrayList<>(); private List<String> partsSellers = new ArrayList<>();
@ApiModelProperty("维修项目")
private String serviceItem;
@ApiModelProperty("配件销售人")
private String partsSellers2;
} }

2
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/InsuranceVo.java

@ -20,6 +20,8 @@ public class InsuranceVo {
private String responsibilityKey; private String responsibilityKey;
@ApiModelProperty("是否存在人伤(1是,0否)") @ApiModelProperty("是否存在人伤(1是,0否)")
private String isPersonInjuries; private String isPersonInjuries;
@ApiModelProperty("是否存在人伤(1是,0否)")
private String isPersonInjuries2;
@ApiModelProperty("责任比例Key") @ApiModelProperty("责任比例Key")
private String responsibilityRatioKey; private String responsibilityRatioKey;
@ApiModelProperty("责任比例") @ApiModelProperty("责任比例")

4
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/InvoiceVo.java

@ -17,6 +17,8 @@ public class InvoiceVo {
@ApiModelProperty("是否需要开发票(是1,否0)") @ApiModelProperty("是否需要开发票(是1,否0)")
private String isInvoicing; private String isInvoicing;
@ApiModelProperty("是否需要开发票(是1,否0)")
private String isInvoicing2;
@ApiModelProperty("发票类型") @ApiModelProperty("发票类型")
private String invoiceType; private String invoiceType;
@ApiModelProperty("发票类型") @ApiModelProperty("发票类型")
@ -35,4 +37,6 @@ public class InvoiceVo {
private String invoiceCompany; private String invoiceCompany;
@ApiModelProperty("加税点项目“,”英文逗号拼接") @ApiModelProperty("加税点项目“,”英文逗号拼接")
private List<String> taxItems = new ArrayList<>(); private List<String> taxItems = new ArrayList<>();
@ApiModelProperty("加税点项目")
private String taxItems2;
} }

4
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/SitemVo.java

@ -45,6 +45,10 @@ public class SitemVo {
private String repairerName; private String repairerName;
@ApiModelProperty("销售价格常量") @ApiModelProperty("销售价格常量")
private String sitemPrice; private String sitemPrice;
@ApiModelProperty("维修技师 ‘、’ 拼接")
private String staffNames;
@ApiModelProperty("单价-100,工时数-5小时,提成-100")
private String manHourInfo;
//-------------维修人员--------------- //-------------维修人员---------------
// @ApiModelProperty("维修人员sid") // @ApiModelProperty("维修人员sid")
// private String repairerSid; // private String repairerSid;

29
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/app/GoodsReceiveListVo.java

@ -0,0 +1,29 @@
package com.yxt.anrui.as.api.asbusrepairbill.app;
import lombok.Data;
/**
* @author Fan
* @description
* @date 2024/8/2 15:27
*/
@Data
public class GoodsReceiveListVo {
/**
* 数量
*/
private String num;
/**
* 记录sid
*/
private String sid;
/**
* 商品相关信息商品名称+换行符+图号
*/
private String val;
//
// private String goodsSpuName;
// private String goodsSkuCode;
}

20
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/app/GoodsReceiveQuery.java

@ -0,0 +1,20 @@
package com.yxt.anrui.as.api.asbusrepairbill.app;
import com.yxt.common.core.query.Query;
import lombok.Data;
/**
* @author Fan
* @description
* @date 2024/8/2 15:23
*/
@Data
public class GoodsReceiveQuery implements Query {
private String menuSid;
/**
* jkeyword
*/
private String name;
private String orgPath;
private String userSid;
}

18
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/app/GoodsReceiveSubmit.java

@ -0,0 +1,18 @@
package com.yxt.anrui.as.api.asbusrepairbill.app;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @author Fan
* @description
* @date 2024/8/2 16:23
*/
@Data
public class GoodsReceiveSubmit {
private String userSid;
private List<String> list = new ArrayList<>();
}

48
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/app/GoodsReceiveVo.java

@ -0,0 +1,48 @@
package com.yxt.anrui.as.api.asbusrepairbill.app;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @author Fan
* @description
* @date 2024/8/2 15:23
*/
@Data
public class GoodsReceiveVo {
/**
* 工单编号
*/
private String billId;
/**
* 工单类型
*/
private String billType;
/**
* 客户名称
*/
private String customerName;
/**
* 进厂时间
*/
private String entryTime;
/**
* 车架号集合
*/
private List<GoodsReceiveListVo> list = new ArrayList<>();
/**
* 维修工单sid
*/
private String sid;
/**
* 科目
*/
private String subject;
/**
* 车牌号
*/
private String vehMark;
}

1
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairinventorybill/AsBusrepairInventoryBillInit.java

@ -62,6 +62,7 @@ public class AsBusrepairInventoryBillInit {
private List<SitemsVo> sitemVoList = new ArrayList<>(); private List<SitemsVo> sitemVoList = new ArrayList<>();
@ApiModelProperty("商品登记备注") @ApiModelProperty("商品登记备注")
private String registerRemarks; private String registerRemarks;
private String isGoOut;
private List<AsBusrepairInventorybillDetailSDto> detailList = new ArrayList<>(); private List<AsBusrepairInventorybillDetailSDto> detailList = new ArrayList<>();
} }

6
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairinventorybilldetail/AsBusrepairInventorybillDetail.java

@ -1,10 +1,12 @@
package com.yxt.anrui.as.api.asbusrepairinventorybilldetail; package com.yxt.anrui.as.api.asbusrepairinventorybilldetail;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yxt.common.core.domain.BaseEntity; import com.yxt.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date;
/** /**
* @description: * @description:
@ -83,4 +85,8 @@ public class AsBusrepairInventorybillDetail extends BaseEntity {
private String partsSellersSid; private String partsSellersSid;
@ApiModelProperty("配件销售") @ApiModelProperty("配件销售")
private String partsSellers; private String partsSellers;
@ApiModelProperty("接收时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date receivedTime;
} }

6
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillMapper.java

@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.yxt.anrui.as.api.asbusrepairbill.*; import com.yxt.anrui.as.api.asbusrepairbill.*;
import com.yxt.anrui.as.api.asbusrepairbill.app.GoodsReceiveListVo;
import com.yxt.anrui.as.api.asbusrepairbill.app.GoodsReceiveVo;
import com.yxt.anrui.as.api.asbusrepairinventorybilldetail.SitemsVo; import com.yxt.anrui.as.api.asbusrepairinventorybilldetail.SitemsVo;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@ -50,4 +52,8 @@ public interface AsBusrepairBillMapper extends BaseMapper<AsBusrepairBill> {
@Update("update as_busrepair_bill set isOutFactory = '1' where sid = #{sid}") @Update("update as_busrepair_bill set isOutFactory = '1' where sid = #{sid}")
void updateOutFactory(String sid); void updateOutFactory(String sid);
IPage<GoodsReceiveVo> notConfirmList(IPage<AsBusrepairBill> page, @Param(Constants.WRAPPER) QueryWrapper<AsBusrepairBill> qw);
List<GoodsReceiveListVo> selGoodsReceiveByBillSid(@Param("sid") String sid);
} }

30
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillMapper.xml

@ -182,4 +182,34 @@
${ew.sqlSegment} ${ew.sqlSegment}
</where> </where>
</select> </select>
<select id="notConfirmList" resultType="com.yxt.anrui.as.api.asbusrepairbill.app.GoodsReceiveVo">
SELECT
b.sid,
b.billNo billId,
b.billType,
b.customerName,
b.entryTime,
b.`subject`,
v.vehMark
FROM
as_busrepair_inventorybill_detail AS d
LEFT JOIN as_busrepair_inventorybill as i ON d.billSid = i.sid
LEFT JOIN as_busrepair_bill as b ON i.sourceBillSid = b.sid
LEFT JOIN as_busrepair_bill_vech as v ON v.billSid = b.sid
<where>
${ew.sqlSegment}
</where>
GROUP BY i.sourceBillSid
</select>
<select id="selGoodsReceiveByBillSid"
resultType="com.yxt.anrui.as.api.asbusrepairbill.app.GoodsReceiveListVo">
SELECT
d.sid,
d.count as num,
concat(d.goodsSpuName,'\n',d.goodsSkuCode) val
FROM
as_busrepair_inventorybill_detail AS d
LEFT JOIN as_busrepair_inventorybill as i ON d.billSid = i.sid
WHERE d.state = 1 and i.sourceBillSid = #{sid}
</select>
</mapper> </mapper>

26
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillRest.java

@ -1,6 +1,9 @@
package com.yxt.anrui.as.biz.asbusrepairbill; package com.yxt.anrui.as.biz.asbusrepairbill;
import com.yxt.anrui.as.api.asbusrepairbill.*; import com.yxt.anrui.as.api.asbusrepairbill.*;
import com.yxt.anrui.as.api.asbusrepairbill.app.GoodsReceiveQuery;
import com.yxt.anrui.as.api.asbusrepairbill.app.GoodsReceiveSubmit;
import com.yxt.anrui.as.api.asbusrepairbill.app.GoodsReceiveVo;
import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo; import com.yxt.common.core.vo.PagerVo;
@ -175,4 +178,27 @@ public class AsBusrepairBillRest {
PagerVo<AsBusrepairBwBillPageListVo> pv = asBusrepairBillService.bwBillPageList(pagerQuery); PagerVo<AsBusrepairBwBillPageListVo> pv = asBusrepairBillService.bwBillPageList(pagerQuery);
return rb.success().setData(pv); return rb.success().setData(pv);
} }
//----------------------------app配件接收-----------------------------
@PostMapping("/notConfirmList")
@ApiOperation("获取配件确认列表")
ResultBean<PagerVo<GoodsReceiveVo>> notConfirmList(@RequestBody PagerQuery<GoodsReceiveQuery> pagerQuery) {
ResultBean<PagerVo<GoodsReceiveVo>> rb = ResultBean.fireFail();
PagerVo<GoodsReceiveVo> pv = asBusrepairBillService.notConfirmList(pagerQuery);
return rb.success().setData(pv);
}
@PostMapping("/submitList")
@ApiOperation("配件确认提交")
ResultBean submitList(@RequestBody GoodsReceiveSubmit query) {
ResultBean rb = ResultBean.fireFail();
asBusrepairBillService.submitList(query);
return rb.success();
}
@ApiOperation("app详情回显")
@GetMapping("/fetchDetailsBySid2/{sid}")
public ResultBean<AsBusrepairBillDetailsVo> fetchDetailsBySid2(@PathVariable("sid") String sid) {
return asBusrepairBillService.fetchDetailsBySid(sid);
}
} }

435
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillService.java

@ -7,6 +7,10 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.anrui.as.api.asappendix.AsAppendix; import com.yxt.anrui.as.api.asappendix.AsAppendix;
import com.yxt.anrui.as.api.asbusrepairbill.*; import com.yxt.anrui.as.api.asbusrepairbill.*;
import com.yxt.anrui.as.api.asbusrepairbill.app.GoodsReceiveListVo;
import com.yxt.anrui.as.api.asbusrepairbill.app.GoodsReceiveQuery;
import com.yxt.anrui.as.api.asbusrepairbill.app.GoodsReceiveSubmit;
import com.yxt.anrui.as.api.asbusrepairbill.app.GoodsReceiveVo;
import com.yxt.anrui.as.api.asbusrepairbillaitem.AsBusrepairBillAitem; import com.yxt.anrui.as.api.asbusrepairbillaitem.AsBusrepairBillAitem;
import com.yxt.anrui.as.api.asbusrepairbillinsurance.AsBusrepairBillInsurance; import com.yxt.anrui.as.api.asbusrepairbillinsurance.AsBusrepairBillInsurance;
import com.yxt.anrui.as.api.asbusrepairbillinsurancerecord.AsBusrepairBillInsuranceRecord; import com.yxt.anrui.as.api.asbusrepairbillinsurancerecord.AsBusrepairBillInsuranceRecord;
@ -60,9 +64,12 @@ import com.yxt.anrui.as.feign.sms.SmsGoods;
import com.yxt.anrui.as.feign.sms.SmsGoodsFeign; import com.yxt.anrui.as.feign.sms.SmsGoodsFeign;
import com.yxt.anrui.as.feign.wms.wmsoldinventory.WmsOldInventoryFeign; import com.yxt.anrui.as.feign.wms.wmsoldinventory.WmsOldInventoryFeign;
import com.yxt.anrui.as.feign.wms.wmsoldinventory.WmsOldInventoryPush; import com.yxt.anrui.as.feign.wms.wmsoldinventory.WmsOldInventoryPush;
import com.yxt.common.base.config.component.DocPdfComponent;
import com.yxt.common.base.config.component.FileUploadComponent; import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.common.base.service.MybatisBaseService; import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.ConstantUtils;
import com.yxt.common.base.utils.PagerUtil; import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.base.utils.WordConvertUtils;
import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo; import com.yxt.common.core.vo.PagerVo;
@ -72,12 +79,17 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.io.File;
import java.io.InputStream;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.ZoneId; import java.time.ZoneId;
import java.util.*; import java.util.*;
import static java.util.Comparator.comparing;
/** /**
* @description: * @description:
* @author: dimengzhe * @author: dimengzhe
@ -134,6 +146,9 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
private AsServiceItemService asServiceItemService; private AsServiceItemService asServiceItemService;
@Autowired @Autowired
private AsArrearsoutApplyService asArrearsoutApplyService; private AsArrearsoutApplyService asArrearsoutApplyService;
@Autowired
private DocPdfComponent docPdfComponent;
/** /**
* 维修领料获取派工单 * 维修领料获取派工单
* *
@ -463,6 +478,27 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
if (null != asBusrepairBill.getNodeTime()) { if (null != asBusrepairBill.getNodeTime()) {
vo.setNodeTime(sdf.format(asBusrepairBill.getNodeTime())); vo.setNodeTime(sdf.format(asBusrepairBill.getNodeTime()));
} }
CrmCustomerTemp customerTemp = crmCustomerTempFeign.fetchEntity(asBusrepairBill.getCustomerSid()).getData();
if (null != customerTemp) {
if (StringUtils.isNotBlank(customerTemp.getSource())) {
vo.setCustomerSource(customerTemp.getSource());
vo.setCustomerSource2(customerTemp.getSource());
}
}
if (StringUtils.isNotBlank(asBusrepairBill.getIsGoOut())) {
if (asBusrepairBill.getIsGoOut().equals("1")) {
vo.setIsGoOut2("是");
} else if (asBusrepairBill.getIsGoOut().equals("2")) {
vo.setIsGoOut2("否");
}
}
if (null != asBusrepairBill.getIsSpecialSign()) {
if (asBusrepairBill.getIsSpecialSign().intValue() == 1) {
vo.setIsSpecialSign2("有");
} else if (asBusrepairBill.getIsSpecialSign().intValue() == 0) {
vo.setIsSpecialSign2("无");
}
}
AsBusrepairBillVech vech = asBusrepairBillVechService.fetchByBillSid(sid); AsBusrepairBillVech vech = asBusrepairBillVechService.fetchByBillSid(sid);
if (null != vech) { if (null != vech) {
if (StringUtils.isNotBlank(vech.getVehMark())) { if (StringUtils.isNotBlank(vech.getVehMark())) {
@ -507,12 +543,29 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
if (null != invoice.getTaxRate()) { if (null != invoice.getTaxRate()) {
taxRate = invoice.getTaxRate(); taxRate = invoice.getTaxRate();
} }
invoiceVo.setTaxItems2(invoice.getTaxItems());
} else {
invoiceVo.setTaxItems(new ArrayList<>());
}
if (null != invoice.getIsInvoicing()) {
if (invoice.getIsInvoicing().intValue() == 1) {
invoiceVo.setIsInvoicing2("是");
} else if (invoice.getIsInvoicing().intValue() == 0) {
invoiceVo.setIsInvoicing2("否");
}
} }
vo.setInvoiceVo(invoiceVo); vo.setInvoiceVo(invoiceVo);
} }
AsBusrepairBillInsurance insurance = asBusrepairBillInsuranceService.fetchByBillSid(sid); AsBusrepairBillInsurance insurance = asBusrepairBillInsuranceService.fetchByBillSid(sid);
if (null != insurance) { if (null != insurance) {
BeanUtil.copyProperties(insurance, insuranceVo); BeanUtil.copyProperties(insurance, insuranceVo);
if (StringUtils.isNotBlank(insurance.getIsPersonInjuries())) {
if (insurance.getIsPersonInjuries().equals("1")) {
insuranceVo.setIsPersonInjuries2("是");
} else if (insurance.getIsPersonInjuries().equals("0")) {
insuranceVo.setIsPersonInjuries2("否");
}
}
} }
List<AsBusrepairBillInsuranceRecord> insuranceRecord = asBusrepairBillInsuranceRecordService.fetchByBillSid(sid); List<AsBusrepairBillInsuranceRecord> insuranceRecord = asBusrepairBillInsuranceRecordService.fetchByBillSid(sid);
if (!insuranceRecord.isEmpty()) { if (!insuranceRecord.isEmpty()) {
@ -534,6 +587,19 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
for (AsBusrepairBillSitem sitem : sitems) { for (AsBusrepairBillSitem sitem : sitems) {
SitemVo sitemVo = new SitemVo(); SitemVo sitemVo = new SitemVo();
BeanUtil.copyProperties(sitem, sitemVo); BeanUtil.copyProperties(sitem, sitemVo);
String price = "";
String hours = "";
String ticheng = "";
if (null != sitem.getHourPrice()) {
price = sitem.getHourPrice().toString();
}
if (null != sitem.getHours()) {
hours = String.valueOf(sitem.getHours().intValue());
}
if (null != sitem.getExamineHourPrice()) {
ticheng = sitem.getExamineHourPrice().toString();
}
sitemVo.setManHourInfo("单价-" + price + ",工时数-" + hours + "小时,提成-" + ticheng);
List<AsBusrepairBillSitemRepairer> repairers = asBusrepairBillSitemRepairerService.fetchByBillSid(sid, sitem.getServiceItemSid()); List<AsBusrepairBillSitemRepairer> repairers = asBusrepairBillSitemRepairerService.fetchByBillSid(sid, sitem.getServiceItemSid());
if (!repairers.isEmpty()) { if (!repairers.isEmpty()) {
List<String> staffList = new ArrayList<>(); //维修人员信息 List<String> staffList = new ArrayList<>(); //维修人员信息
@ -548,6 +614,7 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
} }
sitemVo.setStaffList(staffList); sitemVo.setStaffList(staffList);
sitemVo.setStaffNameList(staffNameList); sitemVo.setStaffNameList(staffNameList);
sitemVo.setStaffNames(String.join("、", staffNameList));
} }
sitemVos.add(sitemVo); sitemVos.add(sitemVo);
} }
@ -574,12 +641,16 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
vo.setAitemVos(aitemVos); vo.setAitemVos(aitemVos);
} }
List<AsBusrepairInventorybillDetail> goodsDetails = asBusrepairInventorybillDetailService.getGoodsDetailsByBillSid(sid); List<AsBusrepairInventorybillDetail> goodsDetails = asBusrepairInventorybillDetailService.getGoodsDetailsByBillSid(sid);
DecimalFormat df2 =new DecimalFormat("#.00");
if (!goodsDetails.isEmpty()) { if (!goodsDetails.isEmpty()) {
for (AsBusrepairInventorybillDetail goodsDetail : goodsDetails) { for (AsBusrepairInventorybillDetail goodsDetail : goodsDetails) {
GoodsDetailsVo goodsDetailsVo = new GoodsDetailsVo(); GoodsDetailsVo goodsDetailsVo = new GoodsDetailsVo();
BeanUtil.copyProperties(goodsDetail, goodsDetailsVo); BeanUtil.copyProperties(goodsDetail, goodsDetailsVo);
BigDecimal constPrice = BigDecimal.ZERO; //销售价常量 BigDecimal constPrice = BigDecimal.ZERO; //销售价常量
boolean isTaxRate = false; //进货价是否含税 boolean isTaxRate = false; //进货价是否含税
if (null != goodsDetail.getReceivedTime()) {
goodsDetailsVo.setReceivedTime(sdf.format(goodsDetail.getReceivedTime()));
}
SmsGoods smsGoods = smsGoodsFeign.fetchEntityByGoodsID(goodsDetail.getGoodsID()).getData(); SmsGoods smsGoods = smsGoodsFeign.fetchEntityByGoodsID(goodsDetail.getGoodsID()).getData();
if (null != smsGoods) { if (null != smsGoods) {
if (StringUtils.isNotBlank(smsGoods.getSupplierName())) { if (StringUtils.isNotBlank(smsGoods.getSupplierName())) {
@ -594,12 +665,17 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
String[] strings = partsSellersSid.split(","); String[] strings = partsSellersSid.split(",");
List<String> list = Arrays.asList(strings); List<String> list = Arrays.asList(strings);
goodsDetailsVo.setPartsSellersSids(list); goodsDetailsVo.setPartsSellersSids(list);
} else {
goodsDetailsVo.setPartsSellersSids(new ArrayList<>());
} }
if (StringUtils.isNotBlank(goodsDetail.getPartsSellers())) { if (StringUtils.isNotBlank(goodsDetail.getPartsSellers())) {
String partsSellers = goodsDetail.getPartsSellers(); String partsSellers = goodsDetail.getPartsSellers();
String[] strings = partsSellers.split(","); String[] strings = partsSellers.split(",");
List<String> list = Arrays.asList(strings); List<String> list = Arrays.asList(strings);
goodsDetailsVo.setPartsSellers(list); goodsDetailsVo.setPartsSellers(list);
goodsDetailsVo.setPartsSellers2(goodsDetail.getPartsSellers());
} else {
goodsDetailsVo.setPartsSellers(new ArrayList<>());
} }
if (goodsDetail.getIsTaxRate() != null) { if (goodsDetail.getIsTaxRate() != null) {
if (goodsDetail.getIsTaxRate().intValue() == 1) { if (goodsDetail.getIsTaxRate().intValue() == 1) {
@ -610,7 +686,7 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
BigDecimal divide = taxRate.divide(new BigDecimal("100")); BigDecimal divide = taxRate.divide(new BigDecimal("100"));
BigDecimal add = divide.add(new BigDecimal("1")); BigDecimal add = divide.add(new BigDecimal("1"));
BigDecimal multiply = constPrice.multiply(add); BigDecimal multiply = constPrice.multiply(add);
goodsDetailsVo.setPrice(multiply.toString()); goodsDetailsVo.setPrice(df2.format(multiply));
} else { } else {
goodsDetailsVo.setPrice(constPrice.toString()); goodsDetailsVo.setPrice(constPrice.toString());
} }
@ -620,7 +696,7 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
BigDecimal divide = taxRate.divide(new BigDecimal("100")); BigDecimal divide = taxRate.divide(new BigDecimal("100"));
BigDecimal add = divide.add(new BigDecimal("1")); BigDecimal add = divide.add(new BigDecimal("1"));
BigDecimal multiply = constPrice.multiply(add); BigDecimal multiply = constPrice.multiply(add);
goodsDetailsVo.setPrice(multiply.toString()); goodsDetailsVo.setPrice(df2.format(multiply));
} else { } else {
goodsDetailsVo.setPrice(constPrice.toString()); goodsDetailsVo.setPrice(constPrice.toString());
} }
@ -641,6 +717,7 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
vo.setSettleVo(settleVo); vo.setSettleVo(settleVo);
} }
List<FileUrlQuery> file = new ArrayList<>(); List<FileUrlQuery> file = new ArrayList<>();
List<String> file2 = new ArrayList<>();
List<AsAppendix> asAppendices = asAppendixService.fetchByLinkSid(sid); List<AsAppendix> asAppendices = asAppendixService.fetchByLinkSid(sid);
if (!asAppendices.isEmpty()) { if (!asAppendices.isEmpty()) {
for (AsAppendix asAppendix : asAppendices) { for (AsAppendix asAppendix : asAppendices) {
@ -651,9 +728,12 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
String fileType = asAppendix.getFileType(); String fileType = asAppendix.getFileType();
fileUrlQuery.setName(fileName + "." + fileType); fileUrlQuery.setName(fileName + "." + fileType);
file.add(fileUrlQuery); file.add(fileUrlQuery);
file2.add(url);
} }
} }
vo.setFileName(file); vo.setFileName(file);
vo.setFiles(file2);
} }
return rb.success().setData(vo); return rb.success().setData(vo);
} }
@ -1081,6 +1161,7 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
} else if (asBusrepairBill.getNodeCode() == 2) { } else if (asBusrepairBill.getNodeCode() == 2) {
nodeCode = 3; nodeCode = 3;
nodeName = "维修"; nodeName = "维修";
asBusrepairBill.setRepairState(1);
} else if (asBusrepairBill.getNodeCode() == 3) { } else if (asBusrepairBill.getNodeCode() == 3) {
nodeCode = 4; nodeCode = 4;
nodeName = "竣工"; nodeName = "竣工";
@ -1189,18 +1270,9 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
if (asBusrepairBill.getOldIsReclaim() != 1) { if (asBusrepairBill.getOldIsReclaim() != 1) {
return rb.setMsg("请先完成旧件入库,再进行操作!"); return rb.setMsg("请先完成旧件入库,再进行操作!");
} }
asBusrepairBill.setNodeCode(6); asBusrepairBill.setMaterialConfirm(1);
asBusrepairBill.setNodeName("出厂"); asBusrepairBill.setOutDoorState("2");
asBusrepairBill.setNodeTime(new DateTime());
baseMapper.updateById(asBusrepairBill); baseMapper.updateById(asBusrepairBill);
//新增工单环节信息
AsBusrepairBillNode billNode = new AsBusrepairBillNode();
billNode.setBillSid(sid);
billNode.setCreateByName(dto.getOperator());
billNode.setNodeName("出厂");
billNode.setCreateBySid(dto.getOperatorSid());
billNode.setNodeCode("6");
asBusrepairBillNodeService.insert(billNode);
} }
} }
return rb.success(); return rb.success();
@ -1216,56 +1288,75 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
return rb.setMsg("请先完成旧件入库,再进行操作!"); return rb.setMsg("请先完成旧件入库,再进行操作!");
} }
asBusrepairBill.setNodeCode(6); asBusrepairBill.setNodeCode(6);
asBusrepairBill.setNodeName("出厂"); asBusrepairBill.setNodeName("已结算");
asBusrepairBill.setNodeTime(new DateTime()); asBusrepairBill.setNodeTime(new DateTime());
if (asBusrepairBill.getMaterialConfirm().intValue() == 0) {
asBusrepairBill.setMaterialConfirm(1);
asBusrepairBill.setOutDoorState("2");
}
baseMapper.updateById(asBusrepairBill); baseMapper.updateById(asBusrepairBill);
//新增工单环节信息 //新增工单环节信息
AsBusrepairBillNode billNode = new AsBusrepairBillNode(); AsBusrepairBillNode billNode = new AsBusrepairBillNode();
billNode.setBillSid(sid); billNode.setBillSid(sid);
billNode.setCreateByName(dto.getOperator()); billNode.setCreateByName(dto.getOperator());
billNode.setNodeName("出厂"); billNode.setNodeName("已结算");
billNode.setCreateBySid(dto.getOperatorSid()); billNode.setCreateBySid(dto.getOperatorSid());
billNode.setNodeCode("6"); billNode.setNodeCode("6");
asBusrepairBillNodeService.insert(billNode); asBusrepairBillNodeService.insert(billNode);
} }
SettleVo settleVo = dto.getSettleVo(); if (asBusrepairBill.getSubject().equals("保外")) {
if (null != settleVo) { SettleVo settleVo = dto.getSettleVo();
FmsReceivesettleDto settleDto = new FmsReceivesettleDto(); if (null != settleVo) {
BeanUtil.copyProperties(settleVo, settleDto, "id", "sid"); FmsReceivesettleDto settleDto = new FmsReceivesettleDto();
settleDto.setCreateBySid(dto.getOperatorSid()); BeanUtil.copyProperties(settleVo, settleDto, "id", "sid");
settleDto.setCreateByName(dto.getOperator()); settleDto.setCreateBySid(dto.getOperatorSid());
settleDto.setSourceBillSid(dto.getSid()); settleDto.setCreateByName(dto.getOperator());
settleDto.setSourceBillNo(asBusrepairBill.getBillNo()); settleDto.setSourceBillSid(dto.getSid());
fmsReceivesettleFeign.save(settleDto); settleDto.setSourceBillNo(asBusrepairBill.getBillNo());
FinUncollectedReceivablesDetailedDto finUncollectedReceivablesDetailedDto = new FinUncollectedReceivablesDetailedDto(); fmsReceivesettleFeign.save(settleDto);
finUncollectedReceivablesDetailedDto.setCreateByName(asBusrepairBill.getCreateByName()); FinUncollectedReceivablesDetailedDto finUncollectedReceivablesDetailedDto = new FinUncollectedReceivablesDetailedDto();
finUncollectedReceivablesDetailedDto.setCreateBySid(asBusrepairBill.getCreateBySid()); finUncollectedReceivablesDetailedDto.setCreateByName(asBusrepairBill.getCreateByName());
finUncollectedReceivablesDetailedDto.setCustomerSid(asBusrepairBill.getCustomerSid()); finUncollectedReceivablesDetailedDto.setCreateBySid(asBusrepairBill.getCreateBySid());
finUncollectedReceivablesDetailedDto.setCustomerName(asBusrepairBill.getCustomerName()); finUncollectedReceivablesDetailedDto.setCustomerSid(asBusrepairBill.getCustomerSid());
AsBusrepairBillVech billVech = asBusrepairBillVechService.fetchByBillSid(asBusrepairBill.getSid()); finUncollectedReceivablesDetailedDto.setCustomerName(asBusrepairBill.getCustomerName());
if (null != billVech) { AsBusrepairBillVech billVech = asBusrepairBillVechService.fetchByBillSid(asBusrepairBill.getSid());
if (StringUtils.isNotBlank(billVech.getVinNo())) { if (null != billVech) {
finUncollectedReceivablesDetailedDto.setVIN(billVech.getVinNo()); if (StringUtils.isNotBlank(billVech.getVinNo())) {
finUncollectedReceivablesDetailedDto.setVIN(billVech.getVinNo());
}
} }
} finUncollectedReceivablesDetailedDto.setCustomerPhone(asBusrepairBill.getMobile());
finUncollectedReceivablesDetailedDto.setCustomerPhone(asBusrepairBill.getMobile()); finUncollectedReceivablesDetailedDto.setUseOrgSid(asBusrepairBill.getUseOrgSid());
finUncollectedReceivablesDetailedDto.setUseOrgSid(asBusrepairBill.getUseOrgSid()); finUncollectedReceivablesDetailedDto.setOrgSidPath(asBusrepairBill.getOrgSidPath());
finUncollectedReceivablesDetailedDto.setOrgSidPath(asBusrepairBill.getOrgSidPath()); finUncollectedReceivablesDetailedDto.setReceivablesName("工时费、材料费");
finUncollectedReceivablesDetailedDto.setReceivablesName("工时费、材料费"); BigDecimal settleAmount = new BigDecimal("0");
BigDecimal settleAmount = new BigDecimal("0"); BigDecimal otherSettleAmount = new BigDecimal("0");
BigDecimal otherSettleAmount = new BigDecimal("0"); if (StringUtils.isNotBlank(settleVo.getSettleAmount())) {
if (StringUtils.isNotBlank(settleVo.getSettleAmount())) { settleAmount = new BigDecimal(settleVo.getSettleAmount());
settleAmount = new BigDecimal(settleVo.getSettleAmount()); }
} if (StringUtils.isNotBlank(settleVo.getOtherSettleAmount())) {
if (StringUtils.isNotBlank(settleVo.getOtherSettleAmount())) { otherSettleAmount = new BigDecimal(settleVo.getOtherSettleAmount());
otherSettleAmount = new BigDecimal(settleVo.getOtherSettleAmount()); }
} finUncollectedReceivablesDetailedDto.setCurrentReceivableMoney((settleAmount.add(otherSettleAmount)).toString());
finUncollectedReceivablesDetailedDto.setCurrentReceivableMoney((settleAmount.add(otherSettleAmount)).toString()); finUncollectedReceivablesDetailedDto.setReveivableMoney((settleAmount.add(otherSettleAmount)).toString());
finUncollectedReceivablesDetailedDto.setReveivableMoney((settleAmount.add(otherSettleAmount)).toString()); finUncollectedReceivablesDetailedDto.setUseOrgName(asBusrepairBill.getUseOrgName());
finUncollectedReceivablesDetailedDto.setUseOrgName(asBusrepairBill.getUseOrgName()); finUncollectedReceivablesDetailedDto.setKxState("01");
finUncollectedReceivablesDetailedDto.setKxState("01"); finUncollectedReceivablesDetailedFeign.saveOrUpdate(finUncollectedReceivablesDetailedDto);
finUncollectedReceivablesDetailedFeign.saveOrUpdate(finUncollectedReceivablesDetailedDto);
}
asBusrepairBill.setNodeCode(6);
asBusrepairBill.setNodeName("已结算");
asBusrepairBill.setNodeTime(new DateTime());
asBusrepairBill.setOutDoorState("2");
baseMapper.updateById(asBusrepairBill);
//新增工单环节信息
AsBusrepairBillNode billNode = new AsBusrepairBillNode();
billNode.setBillSid(sid);
billNode.setCreateByName(dto.getOperator());
billNode.setNodeName("已结算");
billNode.setCreateBySid(dto.getOperatorSid());
billNode.setNodeCode("6");
asBusrepairBillNodeService.insert(billNode);
} }
} }
AsTrackBillDto asTrackBillDto = new AsTrackBillDto(); AsTrackBillDto asTrackBillDto = new AsTrackBillDto();
@ -1470,6 +1561,8 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
} else if (asBusrepairBill.getNodeCode() == 3) { } else if (asBusrepairBill.getNodeCode() == 3) {
nodeCode = 2; nodeCode = 2;
nodeName = "派工"; nodeName = "派工";
asBusrepairBill.setCompleteState(0);
asBusrepairBill.setRepairState(0);
} }
asBusrepairBill.setNodeCode(nodeCode); asBusrepairBill.setNodeCode(nodeCode);
asBusrepairBill.setNodeName(nodeName); asBusrepairBill.setNodeName(nodeName);
@ -1552,7 +1645,7 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
//获取索赔单 //获取索赔单
List<String> claimNos = asBusclaimBillService.selectByRepairBillSid(sid); List<String> claimNos = asBusclaimBillService.selectByRepairBillSid(sid);
if (!claimNos.isEmpty()) { if (!claimNos.isEmpty()) {
vo.setClaimNo(String.join(",",claimNos)); vo.setClaimNo(String.join(",", claimNos));
} }
if (StringUtils.isNotBlank(detailsVo.getVinNo())) { if (StringUtils.isNotBlank(detailsVo.getVinNo())) {
vo.setVinNo(detailsVo.getVinNo()); vo.setVinNo(detailsVo.getVinNo());
@ -1580,15 +1673,15 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
for (int i = 0; i < sitemVos.size(); i++) { for (int i = 0; i < sitemVos.size(); i++) {
SitemVo sitemVo = sitemVos.get(i); SitemVo sitemVo = sitemVos.get(i);
SettleItemPdfVo itemPdfVo = new SettleItemPdfVo(); SettleItemPdfVo itemPdfVo = new SettleItemPdfVo();
BeanUtil.copyProperties(sitemVo,itemPdfVo); BeanUtil.copyProperties(sitemVo, itemPdfVo);
itemPdfVo.setSortNo(String.valueOf(i+1)); itemPdfVo.setSortNo(String.valueOf(i + 1));
String serviceItemSid = sitemVo.getServiceItemSid(); String serviceItemSid = sitemVo.getServiceItemSid();
AsServiceItem item = asServiceItemService.fetchBySid(serviceItemSid); AsServiceItem item = asServiceItemService.fetchBySid(serviceItemSid);
if (null != item) { if (null != item) {
itemPdfVo.setServiceItemCode(item.getSitemCode()); itemPdfVo.setServiceItemCode(item.getSitemCode());
} }
if (!sitemVo.getStaffNameList().isEmpty()) { if (!sitemVo.getStaffNameList().isEmpty()) {
itemPdfVo.setRepairerName(String.join(",",sitemVo.getStaffNameList())); itemPdfVo.setRepairerName(String.join(",", sitemVo.getStaffNameList()));
} }
BigDecimal price = BigDecimal.ZERO; BigDecimal price = BigDecimal.ZERO;
BigDecimal amount = BigDecimal.ZERO; BigDecimal amount = BigDecimal.ZERO;
@ -1611,14 +1704,194 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
vo.setSumMoney1(sumMoney1.toString()); vo.setSumMoney1(sumMoney1.toString());
String caps1 = bigDecimalToLocalStr(sumMoney1); String caps1 = bigDecimalToLocalStr(sumMoney1);
vo.setCaps1(caps1); vo.setCaps1(caps1);
List<GoodsDetailsVo> detailsVos = detailsVo.getGoodsDetailsVos();
if (!detailsVos.isEmpty()) {
List<SettleGoodsPdfVo> goodsPdfVos = new ArrayList<>();
for (int i = 0; i < detailsVos.size(); i++) {
GoodsDetailsVo goodsDetailsVo = detailsVos.get(i);
SettleGoodsPdfVo goodsPdfVo = new SettleGoodsPdfVo();
BeanUtil.copyProperties(goodsDetailsVo, goodsPdfVo);
goodsPdfVo.setSortNo(String.valueOf(i + 1));
BigDecimal price = BigDecimal.ZERO;
BigDecimal amount = BigDecimal.ZERO;
if (StringUtils.isNotBlank(goodsDetailsVo.getPrice())) {
price = new BigDecimal(goodsDetailsVo.getPrice());
}
if (StringUtils.isNotBlank(goodsDetailsVo.getAmount())) {
amount = new BigDecimal(goodsDetailsVo.getAmount());
}
goodsPdfVos.add(goodsPdfVo);
if (subject.equals("保内")) {
sumMoney2.add(price);
}
if (subject.equals("保外")) {
sumMoney2.add(amount);
}
}
}
vo.setSumMoney2(sumMoney2.toString());
String caps2 = bigDecimalToLocalStr(sumMoney2);
vo.setCaps2(caps2);
if (StringUtils.isNotBlank(detailsVo.getSubsidyAmount())) {
vo.setSubsidyAmount(detailsVo.getSubsidyAmount());
}
if (StringUtils.isNotBlank(detailsVo.getOutAmount())) {
vo.setOutAmount(detailsVo.getOutAmount());
}
if (StringUtils.isNotBlank(detailsVo.getRescueAmount())) {
vo.setRescueAmount(detailsVo.getRescueAmount());
}
if (StringUtils.isNotBlank(detailsVo.getReceivableAmount())) {
vo.setReceivableAmount(detailsVo.getReceivableAmount());
}
if (StringUtils.isNotBlank(detailsVo.getActualAmount())) {
vo.setActualAmount(detailsVo.getActualAmount());
}
vo.setUserName(userName);
String path = createSettlePdf(vo, type, subject);
filePath = path;
} }
return rb.success().setData(filePath); return rb.success().setData(filePath);
} }
private String createSettlePdf(SettlePdfVo vo, String type, String subject) {
String finalPath = "";
Map<String, Object> dataMap = new HashMap();
List<Map<String, Object>> list = new ArrayList<>();
List<Map<String, Object>> newList = new ArrayList<>();
boolean price0 = false;
if (subject.equals("保内") && type.equals("1")) {
price0 = true;
}
dataMap.put("company", vo.getCompany());
dataMap.put("dept", vo.getDept());
dataMap.put("settleTime", vo.getSettleTime());
dataMap.put("customer", vo.getCustomer());
dataMap.put("mobile", vo.getMobile());
dataMap.put("billNo", vo.getBillNo());
dataMap.put("billType", vo.getBillType());
dataMap.put("vehModel", vo.getVehModel());
dataMap.put("claimManufacturer", vo.getClaimManufacturer());
dataMap.put("claimNo", vo.getClaimNo());
dataMap.put("vinNo", vo.getVinNo());
dataMap.put("vehMark", vo.getVehMark());
dataMap.put("isKp", vo.getIsKp());
if (price0) {
dataMap.put("caps1", "");
dataMap.put("sumMoney1", "0");
dataMap.put("caps2", "");
dataMap.put("sumMoney2", "0");
dataMap.put("outAmount", "0");
dataMap.put("subsidyAmount", "0");
dataMap.put("rescueAmount", "0");
dataMap.put("receivableAmount", "0");
dataMap.put("actualAmount", "0");
} else {
dataMap.put("caps1", vo.getCaps1());
dataMap.put("sumMoney1", vo.getSumMoney1());
dataMap.put("caps2", vo.getCaps2());
dataMap.put("sumMoney2", vo.getSumMoney2());
dataMap.put("outAmount", vo.getOutAmount());
dataMap.put("subsidyAmount", vo.getSubsidyAmount());
dataMap.put("rescueAmount", vo.getRescueAmount());
dataMap.put("receivableAmount", vo.getReceivableAmount());
dataMap.put("actualAmount", vo.getActualAmount());
}
dataMap.put("userName", vo.getUserName());
List<SettleItemPdfVo> items = vo.getItems();
if (!items.isEmpty()) {
for (SettleItemPdfVo itemPdfVo : items) {
Map<String, Object> map = new HashMap<>();
map.put("sortNo", itemPdfVo.getSortNo());
map.put("serviceItem", itemPdfVo.getServiceItem());
map.put("serviceItemCode", itemPdfVo.getServiceItemCode());
map.put("serviceType", itemPdfVo.getServiceType());
map.put("hourPrice", itemPdfVo.getHourPrice());
map.put("hours", itemPdfVo.getHours());
if (price0) {
map.put("price", "0");
} else {
map.put("price", itemPdfVo.getPrice());
}
map.put("discount", itemPdfVo.getDiscount());
map.put("discountAmount", itemPdfVo.getDiscountAmount());
map.put("amount", itemPdfVo.getAmount());
map.put("repairerName", itemPdfVo.getRepairerName());
map.put("remarks", itemPdfVo.getRemarks());
list.add(map);
}
}
dataMap.put("list", list);
List<SettleGoodsPdfVo> goods = vo.getGoods();
if (!goods.isEmpty()) {
for (SettleGoodsPdfVo good : goods) {
Map<String, Object> map = new HashMap<>();
map.put("sortNo", good.getSortNo());
map.put("goodsSpuName", good.getGoodsSpuName());
map.put("goodsSkuCode", good.getGoodsSkuCode());
map.put("goodsSkuOwnSpec", good.getGoodsSkuOwnSpec());
map.put("unit", good.getUnit());
map.put("count", good.getCount());
if (price0) {
map.put("price", "0");
map.put("amount", "0");
} else {
map.put("price", good.getPrice());
map.put("amount", good.getAmount());
}
map.put("discount", good.getDiscount());
map.put("discountAmount", good.getDiscountAmount());
map.put("remarks", good.getRemarks());
map.put("operName", good.getOperName());
newList.add(map);
}
}
dataMap.put("newList", newList);
String temp = "/template/";
String targetPath = docPdfComponent.getUploadTemplateUrl();
String ftl = "";
boolean add = true;
if (StringUtils.isBlank(vo.getOutAmount()) &&
StringUtils.isBlank(vo.getSubsidyAmount()) &&
StringUtils.isBlank(vo.getRescueAmount())) {
add = false;
}
if (subject.equals("保内")) {
if (add) {
ftl = "ftl/baoneifujia.ftl";
} else {
ftl = "ftl/baonei.ftl";
}
} else if (subject.equals("保外")) {
if (add) {
ftl = "ftl/baowaifujia.ftl";
} else {
ftl = "ftl/baowai.ftl";
}
}
try {
//获取模板
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(ftl);
//生成word文件名
String dateStr = DateUtil.format(new Date(), "yyyyMMdd");
long seconds = System.currentTimeMillis();
String typeName = dateStr + seconds + ".doc";
File file = new File(targetPath + "templateSettle" + seconds + ".ftl");
File dir = new File(targetPath);
WordConvertUtils.inputStreamToFile(inputStream, file);
WordConvertUtils.creatWord1(dataMap, file, targetPath, typeName, dir);
//新生成的word路径
String wordPath = targetPath + typeName;
String pdfName = "结算单" + dateStr + seconds + ".pdf";
WordConvertUtils.doc2pdf(wordPath, targetPath, pdfName);
finalPath = temp + pdfName;
} catch (NoClassDefFoundError e) {
e.printStackTrace();
finalPath = targetPath;
}
return finalPath;
}
public static String bigDecimalToLocalStr(BigDecimal bigDecimal) { public static String bigDecimalToLocalStr(BigDecimal bigDecimal) {
String[] chinese = new String[]{"", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "万"}; String[] chinese = new String[]{"", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "万"};
String[] numChinese = new String[]{"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"}; String[] numChinese = new String[]{"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
@ -1647,4 +1920,48 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
public void updateOutFactory(String sid) { public void updateOutFactory(String sid) {
baseMapper.updateOutFactory(sid); baseMapper.updateOutFactory(sid);
} }
public PagerVo<GoodsReceiveVo> notConfirmList(PagerQuery<GoodsReceiveQuery> pagerQuery) {
GoodsReceiveQuery query = pagerQuery.getParams();
QueryWrapper<AsBusrepairBill> qw = new QueryWrapper<>();
if (query != null) {
//工单编号
if (StringUtils.isNotBlank(query.getUserSid())) {
qw.eq("d.operUserSid", query.getUserSid());
}
if (StringUtils.isNotBlank(query.getName())) {
qw.and(wrapper -> wrapper.like("b.billNo", query.getName())
.or().like("b.customerName", query.getName())
.or().like("v.vehMark", query.getName())
);
}
qw.eq("d.state", 1);
}
IPage<AsBusrepairBill> page = PagerUtil.queryToPage(pagerQuery);
IPage<GoodsReceiveVo> pagging = baseMapper.notConfirmList(page, qw);
List<GoodsReceiveVo> records = pagging.getRecords();
if (!records.isEmpty()) {
for (GoodsReceiveVo record : records) {
List<GoodsReceiveListVo> list = baseMapper.selGoodsReceiveByBillSid(record.getSid());
if (!list.isEmpty()) {
record.setList(list);
}
}
}
PagerVo<GoodsReceiveVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
public void submitList(GoodsReceiveSubmit query) {
List<String> list = query.getList();
if (!list.isEmpty()) {
for (String s : list) {
AsBusrepairInventorybillDetail detail = asBusrepairInventorybillDetailService.fetchBySid(s);
if (null != detail) {
detail.setReceivedTime(new Date());
detail.setState(2);
asBusrepairInventorybillDetailService.updateById(detail);
}
}
}
}
} }

27
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairinventorybill/AsBusrepairInventorybillService.java

@ -26,6 +26,7 @@ import com.yxt.anrui.as.feign.portal.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.as.feign.portal.sysorganization.SysOrganizationVo; import com.yxt.anrui.as.feign.portal.sysorganization.SysOrganizationVo;
import com.yxt.anrui.as.feign.portal.sysstafforg.SysStaffOrgFeign; import com.yxt.anrui.as.feign.portal.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.as.feign.portal.sysuser.SysUserFeign; import com.yxt.anrui.as.feign.portal.sysuser.SysUserFeign;
import com.yxt.anrui.as.feign.wms.wmsInventory.WmsInventory;
import com.yxt.anrui.as.feign.wms.wmsInventory.WmsInventoryFeign; import com.yxt.anrui.as.feign.wms.wmsInventory.WmsInventoryFeign;
import com.yxt.anrui.as.feign.wms.wmsInventory.WmsUpdateCountQuery; import com.yxt.anrui.as.feign.wms.wmsInventory.WmsUpdateCountQuery;
import com.yxt.anrui.as.feign.wms.wmsinventorybill.WmsInventoryBillDetailDto; import com.yxt.anrui.as.feign.wms.wmsinventorybill.WmsInventoryBillDetailDto;
@ -279,8 +280,29 @@ public class AsBusrepairInventorybillService extends MybatisBaseService<AsBusrep
detail.setCurrentCount(new BigDecimal(sDto.getOutboundCount())); detail.setCurrentCount(new BigDecimal(sDto.getOutboundCount()));
} }
detail.setBillSid(entity.getSid()); detail.setBillSid(entity.getSid());
String inventorySid = sDto.getInventorySid();
WmsInventory inventory = wmsInventoryFeign.fetchEntityBySid(inventorySid).getData();
if (null != inventory) {
if (null != inventory.getTaxRate()) {
if (inventory.getTaxRate().compareTo(BigDecimal.ZERO) > 0) {
detail.setIsTaxRate(1);
} else {
detail.setIsTaxRate(0);
}
} else {
detail.setIsTaxRate(0);
}
}
if (StringUtils.isNotBlank(dto.getWarehouseManager())) {
detail.setOperName(dto.getWarehouseManager());
}
if (StringUtils.isNotBlank(dto.getWarehouseManagerSid())) {
detail.setOperUserSid(dto.getWarehouseManagerSid());
}
if (StringUtils.isNotBlank(sDto.getPrice())) {
detail.setGoodsDetailsPrice(new BigDecimal(sDto.getPrice()));
}
asBusrepairInventorybillDetailService.insert(detail); asBusrepairInventorybillDetailService.insert(detail);
WmsUpdateCountQuery countQuery = new WmsUpdateCountQuery(); WmsUpdateCountQuery countQuery = new WmsUpdateCountQuery();
countQuery.setSid(sDto.getInventorySid()); countQuery.setSid(sDto.getInventorySid());
countQuery.setCount(new BigDecimal(sDto.getCount())); countQuery.setCount(new BigDecimal(sDto.getCount()));
@ -382,6 +404,9 @@ public class AsBusrepairInventorybillService extends MybatisBaseService<AsBusrep
if (StringUtils.isNotBlank(data.getBillNo())) { if (StringUtils.isNotBlank(data.getBillNo())) {
vo.setSourceBillNo(data.getBillNo()); vo.setSourceBillNo(data.getBillNo());
} }
if (StringUtils.isNotBlank(data.getIsGoOut())) {
vo.setIsGoOut(data.getIsGoOut());
}
if (StringUtils.isNotBlank(data.getWaitorName())) { if (StringUtils.isNotBlank(data.getWaitorName())) {
vo.setWaitorName(data.getWaitorName()); vo.setWaitorName(data.getWaitorName());
} }

65
yxt-as/src/main/java/com/yxt/anrui/as/feign/wms/wmsInventory/WmsInventory.java

@ -0,0 +1,65 @@
package com.yxt.anrui.as.feign.wms.wmsInventory;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yxt.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* @author wangpengfei
* @date 2024/2/28 8:38
*/
@Data
@TableName("wms_inventory")
public class WmsInventory extends BaseEntity {
@ApiModelProperty("批次号")
private String batchNumber;
@ApiModelProperty("商品ID(唯一编码,入库时生成,生成规则为商品编码+YYMMdd+4位流水)")
private String goodsID;
@ApiModelProperty("商品基础信息sid")
private String goodSpuSid;
@ApiModelProperty("商品名称")
private String goodsSpuName;
@ApiModelProperty("商品Skusid")
private String goodsSkuSid;
@ApiModelProperty("商品Sku名称")
private String goodsSkuTitle;
@ApiModelProperty("商品编码(图号)")
private String goodsSkuCode;
@ApiModelProperty("规格型号")
private String goodsSkuOwnSpec;
@ApiModelProperty("计量单位")
private String unit;
@ApiModelProperty("现有量")
private BigDecimal count;
@ApiModelProperty("分配量(锁定数量,出库申请通过,但未实际出库)")
private BigDecimal allocateCount;
@ApiModelProperty("拣货量")
private BigDecimal pickCount;
@ApiModelProperty("冻结量")
private BigDecimal freezeCount;
@ApiModelProperty("入库单价")
private BigDecimal cost;
@ApiModelProperty("税率")
private BigDecimal taxRate;
@ApiModelProperty("仓库sid")
private String warehouseSid;
@ApiModelProperty("仓库名称")
private String warehouseName;
@ApiModelProperty("库位sid")
private String warehouseRackSid;
@ApiModelProperty("库位编码")
private String warehouseRackCode;
@ApiModelProperty("首次入库日期-计算库龄的依据")
private Date firstInDate;
@ApiModelProperty("创建组织sid")
private String createOrgSid;
@ApiModelProperty("使用组织sid")
private String useOrgSid;
@ApiModelProperty("厂家订单号")
private String manufactorBillNo;
}

4
yxt-as/src/main/java/com/yxt/anrui/as/feign/wms/wmsInventory/WmsInventoryFeign.java

@ -7,6 +7,7 @@ import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
/** /**
* @description: 商品基础信息 * @description: 商品基础信息
@ -29,4 +30,7 @@ public interface WmsInventoryFeign {
@PostMapping("/updateInventoryCount") @PostMapping("/updateInventoryCount")
ResultBean updateInventoryCount(@RequestBody WmsUpdateCountQuery query); ResultBean updateInventoryCount(@RequestBody WmsUpdateCountQuery query);
@ApiOperation("根据Sid获取库存实体")
@PostMapping("/fetchEntityBySid")
ResultBean<WmsInventory> fetchEntityBySid(@RequestParam("sid") String sid);
} }

5
yxt-as/src/main/java/com/yxt/anrui/as/feign/wms/wmsInventory/WmsInventoryFeignFallback.java

@ -56,4 +56,9 @@ public class WmsInventoryFeignFallback implements WmsInventoryFeign {
public ResultBean updateInventoryCount(WmsUpdateCountQuery query) { public ResultBean updateInventoryCount(WmsUpdateCountQuery query) {
return null; return null;
} }
@Override
public ResultBean<WmsInventory> fetchEntityBySid(String sid) {
return null;
}
} }

8
yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebill/PmsPurchaseBillService.java

@ -511,12 +511,18 @@ public class PmsPurchaseBillService extends MybatisBaseService<PmsPurchaseBillMa
wmsAnsBillDto.setCreateBySid(pmsPurchaseBill.getCreateBySid()); wmsAnsBillDto.setCreateBySid(pmsPurchaseBill.getCreateBySid());
wmsAnsBillDto.setSourceBillNo(pmsPurchaseBill.getBillNo()); wmsAnsBillDto.setSourceBillNo(pmsPurchaseBill.getBillNo());
wmsAnsBillDto.setBusTypeKey("01"); wmsAnsBillDto.setBusTypeKey("01");
wmsAnsBillDto.setBusTypeValue("采购预约"); wmsAnsBillDto.setBusTypeValue("采购入库");
wmsAnsBillDto.setCreateByName(pmsPurchaseBill.getCreateByName()); wmsAnsBillDto.setCreateByName(pmsPurchaseBill.getCreateByName());
wmsAnsBillDto.setBillState(0); wmsAnsBillDto.setBillState(0);
wmsAnsBillDto.setReviewStatus(""); wmsAnsBillDto.setReviewStatus("");
wmsAnsBillDto.setRefuseReason(""); wmsAnsBillDto.setRefuseReason("");
wmsAnsBillDto.setSourceBillSid(pmsPurchaseBill.getSid()); wmsAnsBillDto.setSourceBillSid(pmsPurchaseBill.getSid());
PmsPurchaseBillInvoiceDetailsVo invoiceDetailsVo = pmsPurchaseBillInvoiceService.selByMainSid(businessSid);
if (null != invoiceDetailsVo) {
if (null != invoiceDetailsVo.getTaxRate()) {
wmsAnsBillDto.setTaxRate(invoiceDetailsVo.getTaxRate().toString());
}
}
if (StringUtils.isNotBlank(pmsPurchaseBill.getManufacturersOrderTypeKey())) { if (StringUtils.isNotBlank(pmsPurchaseBill.getManufacturersOrderTypeKey())) {
wmsAnsBillDto.setManufactorBillTypeKey(pmsPurchaseBill.getManufacturersOrderTypeKey()); wmsAnsBillDto.setManufactorBillTypeKey(pmsPurchaseBill.getManufacturersOrderTypeKey());
} }

2
yxt-pms-biz/src/main/java/com/yxt/pms/feign/wms/wmsansbill/WmsAnsBillDto.java

@ -64,4 +64,6 @@ public class WmsAnsBillDto {
@ApiModelProperty("厂家订单类型key") @ApiModelProperty("厂家订单类型key")
private String manufactorBillTypeKey; private String manufactorBillTypeKey;
private List<WmsAnsBillDetailDto> wmsAnsBillDetailList = new ArrayList<>(); private List<WmsAnsBillDetailDto> wmsAnsBillDetailList = new ArrayList<>();
@ApiModelProperty("采购单税率")
private String taxRate;
} }

3
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbill/WmsAnsBill.java

@ -4,6 +4,7 @@ import com.yxt.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
/** /**
@ -61,4 +62,6 @@ public class WmsAnsBill extends BaseEntity {
private String manufactorBillTypeValue; private String manufactorBillTypeValue;
@ApiModelProperty("厂家订单类型key") @ApiModelProperty("厂家订单类型key")
private String manufactorBillTypeKey; private String manufactorBillTypeKey;
@ApiModelProperty("采购单税率")
private BigDecimal taxRate;
} }

3
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbill/WmsAnsBillDto.java

@ -4,6 +4,7 @@ import com.yxt.wms.biz.inventory.wmsansbilldetail.WmsAnsBillDetailDto;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -64,4 +65,6 @@ public class WmsAnsBillDto {
@ApiModelProperty("厂家订单类型key") @ApiModelProperty("厂家订单类型key")
private String manufactorBillTypeKey; private String manufactorBillTypeKey;
private List<WmsAnsBillDetailDto> wmsAnsBillDetailList = new ArrayList<>(); private List<WmsAnsBillDetailDto> wmsAnsBillDetailList = new ArrayList<>();
@ApiModelProperty("采购单税率")
private String taxRate;
} }

2
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventory.java

@ -46,6 +46,8 @@ public class WmsInventory extends BaseEntity {
private BigDecimal freezeCount; private BigDecimal freezeCount;
@ApiModelProperty("入库单价") @ApiModelProperty("入库单价")
private BigDecimal cost; private BigDecimal cost;
@ApiModelProperty("税率")
private BigDecimal taxRate;
@ApiModelProperty("仓库sid") @ApiModelProperty("仓库sid")
private String warehouseSid; private String warehouseSid;
@ApiModelProperty("仓库名称") @ApiModelProperty("仓库名称")

2
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordDto.java

@ -104,7 +104,7 @@ public class WmsInventoryRecordDto implements Dto {
@ApiModelProperty("入库单价") @ApiModelProperty("入库单价")
private String cost; private String cost;
@ApiModelProperty("税率") @ApiModelProperty("税率")
private String tax; private String taxRate;
@ApiModelProperty("入库金额") @ApiModelProperty("入库金额")
private String amount; private String amount;
@ApiModelProperty("经办人sid") @ApiModelProperty("经办人sid")

3
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordService.java

@ -351,6 +351,9 @@ public class WmsInventoryRecordService extends MybatisBaseService<WmsInventoryRe
WmsInventoryRecord inventoryRecord = new WmsInventoryRecord(); WmsInventoryRecord inventoryRecord = new WmsInventoryRecord();
BeanUtil.copyProperties(dto,inventoryRecord,"id","sid"); BeanUtil.copyProperties(dto,inventoryRecord,"id","sid");
inventoryRecord.setInventorySid(wmsInventory.getSid()); inventoryRecord.setInventorySid(wmsInventory.getSid());
if (StringUtils.isNotBlank(dto.getTaxRate())) {
inventoryRecord.setTax(new BigDecimal(dto.getTaxRate()));
}
baseMapper.insert(inventoryRecord); baseMapper.insert(inventoryRecord);
} }

2
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillMapper.java

@ -29,4 +29,6 @@ public interface WmsReceiptBillMapper extends BaseMapper<WmsReceiptBill> {
List<WmsReceiptBillDetail> selGoodsListCountBySpuSidAndSouceSid(@Param("goodsSpuSid")String goodsSpuSid, @Param("sourceBillSid")String sourceBillSid); List<WmsReceiptBillDetail> selGoodsListCountBySpuSidAndSouceSid(@Param("goodsSpuSid")String goodsSpuSid, @Param("sourceBillSid")String sourceBillSid);
List<ShelfListVo> getUpShlefListBySid(@Param("sid") String sid); List<ShelfListVo> getUpShlefListBySid(@Param("sid") String sid);
String selallotmentNumByReceiptDetailSid(String detailsSid);
} }

8
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillMapper.xml

@ -85,4 +85,12 @@
from wms_shelf_bill wrb from wms_shelf_bill wrb
where wrb.sourceBillSid = #{sid} where wrb.sourceBillSid = #{sid}
</select> </select>
<select id="selallotmentNumByReceiptDetailSid" resultType="java.lang.String">
SELECT
IFNULL( SUM(d.actualCount), 0 )
FROM
wms_shelf_bill_detail AS d
WHERE
d.receiptDetailSid = #{detailsSid}
</select>
</mapper> </mapper>

3
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillQuery.java

@ -34,5 +34,6 @@ public class WmsReceiptBillQuery implements Query {
private String orgPath; private String orgPath;
@ApiModelProperty("用户sid") @ApiModelProperty("用户sid")
private String userSid; private String userSid;
@ApiModelProperty("分配状态")
private String distributeType;
} }

7
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillService.java

@ -127,6 +127,10 @@ public class WmsReceiptBillService extends MybatisBaseService<WmsReceiptBillMapp
if (StringUtils.isNotBlank(query.getBillState())) { if (StringUtils.isNotBlank(query.getBillState())) {
qw.like("wrb.billState", query.getBillState()); qw.like("wrb.billState", query.getBillState());
} }
//分配状态
if (StringUtils.isNotBlank(query.getDistributeType())) {
qw.like("wrb.distributeType", query.getDistributeType());
}
//外部编号 //外部编号
if (StringUtils.isNotBlank(query.getSourceBillNo())) { if (StringUtils.isNotBlank(query.getSourceBillNo())) {
qw.like("wrb.sourceBillNo", query.getSourceBillNo()); qw.like("wrb.sourceBillNo", query.getSourceBillNo());
@ -367,6 +371,9 @@ public class WmsReceiptBillService extends MybatisBaseService<WmsReceiptBillMapp
if (!list.isEmpty()) { if (!list.isEmpty()) {
for (int i = 0; i < list.size(); i++) { for (int i = 0; i < list.size(); i++) {
WmsReceiptBillDetailDto2 wmsReceiptBillDetailDto2 = list.get(i); WmsReceiptBillDetailDto2 wmsReceiptBillDetailDto2 = list.get(i);
String detailsSid = wmsReceiptBillDetailDto2.getDetailsSid();
String allotmentNum = baseMapper.selallotmentNumByReceiptDetailSid(detailsSid);
wmsReceiptBillDetailDto2.setAllotmentNum(allotmentNum);
int a = i + 1; int a = i + 1;
wmsReceiptBillDetailDto2.setXh(String.valueOf(a)); wmsReceiptBillDetailDto2.setXh(String.valueOf(a));
List<WmsReceiptBillDetailBatchDto2> pcList2 = wmsReceiptBillDetailBatchService.getDetailsInit(sid, wmsReceiptBillDetailDto2.getDetailsSid()); List<WmsReceiptBillDetailBatchDto2> pcList2 = wmsReceiptBillDetailBatchService.getDetailsInit(sid, wmsReceiptBillDetailDto2.getDetailsSid());

2
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetail/WmsReceiptBillDetailDto2.java

@ -70,4 +70,6 @@ public class WmsReceiptBillDetailDto2 {
@ApiModelProperty("有效天数") @ApiModelProperty("有效天数")
private String shelfLife; private String shelfLife;
@ApiModelProperty("已分配数量 ")
private String allotmentNum;
} }

3
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetail/WmsReceiptBillDetailVo.java

@ -66,4 +66,7 @@ public class WmsReceiptBillDetailVo {
@ApiModelProperty("预约数量(采购订单数量)") @ApiModelProperty("预约数量(采购订单数量)")
private String orderCount; private String orderCount;
} }

16
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillService.java

@ -18,6 +18,7 @@ import com.yxt.wms.biz.base.wmswarehouserack.WmsHouseInfoVo;
import com.yxt.wms.biz.base.wmswarehouserack.WmsWarehouseRack; import com.yxt.wms.biz.base.wmswarehouserack.WmsWarehouseRack;
import com.yxt.wms.biz.base.wmswarehouserack.WmsWarehouseRackService; import com.yxt.wms.biz.base.wmswarehouserack.WmsWarehouseRackService;
import com.yxt.wms.biz.inventory.wmsansbill.WmsAnsBill; import com.yxt.wms.biz.inventory.wmsansbill.WmsAnsBill;
import com.yxt.wms.biz.inventory.wmsansbill.WmsAnsBillService;
import com.yxt.wms.biz.inventory.wmsansbilldetail.WmsAnsListDetailsVo; import com.yxt.wms.biz.inventory.wmsansbilldetail.WmsAnsListDetailsVo;
import com.yxt.wms.biz.inventory.wmsgoodstag.WmsGoodsTag; import com.yxt.wms.biz.inventory.wmsgoodstag.WmsGoodsTag;
import com.yxt.wms.biz.inventory.wmsgoodstag.WmsGoodsTagService; import com.yxt.wms.biz.inventory.wmsgoodstag.WmsGoodsTagService;
@ -101,7 +102,8 @@ public class WmsShelfBillService extends MybatisBaseService<WmsShelfBillMapper,
private WmsGoodsTagService wmsGoodsTagService; private WmsGoodsTagService wmsGoodsTagService;
@Autowired @Autowired
private BaseGoodsSpuFeign baseGoodsSpuFeign; private BaseGoodsSpuFeign baseGoodsSpuFeign;
@Autowired
private WmsAnsBillService wmsAnsBillService;
public PagerVo<WmsShelfBillVo> listPage(PagerQuery<WmsShelfBillQuery> pq) { public PagerVo<WmsShelfBillVo> listPage(PagerQuery<WmsShelfBillQuery> pq) {
WmsShelfBillQuery query = pq.getParams(); WmsShelfBillQuery query = pq.getParams();
@ -777,8 +779,16 @@ public class WmsShelfBillService extends MybatisBaseService<WmsShelfBillMapper,
recordDto.setCost(receiptBillDetail.getCost().toString()); recordDto.setCost(receiptBillDetail.getCost().toString());
recordDto.setAmount(amount.toString()); recordDto.setAmount(amount.toString());
} }
if (null != receiptBillDetail.getTaxAmount()) { //设置税率
recordDto.setTax(receiptBillDetail.getTaxAmount().toString()); WmsReceiptBill wmsReceiptBill = wmsReceiptBillService.fetchBySid(sourceBillSid); //收货单
if (null != wmsReceiptBill) {
String ansSid = wmsReceiptBill.getSourceBillSid(); //预约入库sid
WmsAnsBill ansBill = wmsAnsBillService.fetchBySid(ansSid);
if (null != ansBill) {
if (null != ansBill.getTaxRate()) {
recordDto.setTaxRate(ansBill.getTaxRate().toString());
}
}
} }
} }
wmsInventoryRecordService.saveRecord(recordDto); wmsInventoryRecordService.saveRecord(recordDto);

Loading…
Cancel
Save