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
zhanglei
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({
url: '/as/v1/AsBusrepairBill/printSettle',
url: '/as/v1/AsBusrepairBill/printSettlement',
method: 'post',
params: data
data: data,
headers: { 'Content-Type': 'application/json' }
})
},
// 确认工时费比例初始化
@ -99,5 +100,13 @@ export default {
data: data,
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',
component: () => import('@/views/operation/workorderquery/workorderquery.vue'),
name: 'WorkOrderQuery',
meta: { title: '单查询', noCache: true }
meta: { title: '维修单查询', noCache: true }
},
{
path: '/workorderinvoicing/workorderinvoicing',
@ -435,7 +435,7 @@ export const constantRoutes = [{
path: '/filing/maintenanceEnterprise',
component: () => import('@/views/client/filing/maintenanceEnterprise.vue'),
name: 'MaintenanceEnterprise',
meta: { title: '定点企业备案', noCache: true }
meta: { title: '欠款月结客户备案', noCache: true }
},
{
path: '/customerunit/customerunit',

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

@ -55,7 +55,7 @@
<el-col :span="8">
<div class="span-sty"><span class="icon">*</span>科目</div>
<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-select>
</el-form-item>
@ -81,7 +81,7 @@
</el-col>
</el-row>
<div class="title titleOne">
<div>服务项目</div>
<div>维修项目</div>
<el-button type="primary" size="mini" class="btntopblueline" @click="serviceAdd">添加</el-button>
</div>
<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>
</template>
</el-table-column>
<el-table-column label="服务项目" align="center" width="300">
<el-table-column label="维修项目" align="center" width="300">
<template slot-scope="scope">
<el-popover placement="right" width="600" trigger="click">
<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-col>
</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-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="hours" 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>
<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 label="单类型">
<el-form-item label="维修单类型">
<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>
@ -92,7 +92,7 @@
<el-table :key="tableKey" v-loading="listLoading" :data="list" border style="width: 100%;" @selection-change="handleSelectionChange">
<el-table-column type="selection" align="center" width="50"/>
<el-table-column label="序号" type="index" width="80" :index="indexMethod" align="center"/>
<el-table-column label="单据编号" align="center" width="130">
<el-table-column label="单据编号" align="center" width="180">
<template slot-scope="scope">
<span class="bluezi" @click="toInfo(scope.row)">{{ scope.row.billNo }}</span>
</template>
@ -102,7 +102,7 @@
<el-table-column prop="dept" 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="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="entryTime" 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>{{ viewTitle }}</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="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="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="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
@ -32,9 +31,9 @@
</el-row>
<el-row>
<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-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-select>
</el-form-item>
@ -42,7 +41,7 @@
<el-col :span="8">
<div class="span-sty"><span class="icon">*</span>科目</div>
<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-select>
</el-form-item>
@ -50,7 +49,7 @@
<el-col :span="8">
<div class="span-sty">索赔厂家</div>
<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-select>
</el-form-item>
@ -60,26 +59,26 @@
<el-col :span="8">
<div class="span-sty"><span class="icon">*</span>是否外出</div>
<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="0"></el-radio>
<el-radio label="2"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="8">
<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 :span="8">
<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-row>
<el-row>
<el-col :span="8">
<div class="span-sty"><span class="icon">*</span>服务顾问</div>
<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-select>
</el-form-item>
@ -87,7 +86,7 @@
<el-col :span="8">
<div class="span-sty">班组</div>
<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-select>
</el-form-item>
@ -95,7 +94,7 @@
<el-col :span="8">
<div class="span-sty">主修人</div>
<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-select>
</el-form-item>
@ -104,16 +103,16 @@
<el-row>
<el-col :span="8">
<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 :span="8">
<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 :span="8">
<div class="span-sty"><span class="icon">*</span>特殊标志</div>
<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="0"></el-radio>
</el-radio-group>
@ -125,7 +124,14 @@
<el-row style="border-top: 1px solid #e0e3eb">
<el-col :span="8">
<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 :span="8">
<div class="span-sty">联系电话</div>
@ -153,15 +159,15 @@
<el-row>
<el-col :span="8">
<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 :span="8">
<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 :span="8">
<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-row>
</el-collapse-item>
@ -169,20 +175,28 @@
<el-row style="border-top: 1px solid #e0e3eb">
<el-col :span="8">
<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 :span="16">
<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-row>
</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-col :span="8">
<div class="span-sty">责任划分</div>
<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-select>
</el-form-item>
@ -190,7 +204,7 @@
<el-col :span="8">
<div class="span-sty">责任比例</div>
<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-select>
</el-form-item>
@ -198,7 +212,7 @@
<el-col :span="8">
<div class="span-sty">是否存在人伤</div>
<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="0"></el-radio>
</el-radio-group>
@ -207,7 +221,7 @@
</el-row>
<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"/>
<div v-if="formobj.nodeName !== '维修' && formobj.nodeName !== '结算' && formobj.nodeName !== '出厂'">
<div v-if="formobj.nodeName !== '维修' || formobj.nodeName !== '结算'">
<el-table-column align="center" width="80">
<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>
@ -219,48 +233,48 @@
</div>
<el-table-column label="使用保险方" align="center" min-width="150">
<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-select>
</template>
</el-table-column>
<el-table-column label="使用险种" align="center" min-width="150">
<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-select>
</template>
</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">
<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-select>
</template>
</el-table-column>
<el-table-column label="报案号" align="center" min-width="180">
<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>
</el-table-column>
<el-table-column label="勘察员及电话" align="center" min-width="220">
<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>
</el-table-column>
<el-table-column label="定损员及电话" align="center" min-width="220">
<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>
</el-table-column>
</el-table>
</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-col :span="8">
<div class="span-sty">是否开发票</div>
<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="0"></el-radio>
</el-radio-group>
@ -269,23 +283,40 @@
<el-col :span="8">
<div class="span-sty">发票类型</div>
<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-select>
</el-form-item>
</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">
<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-row>
</el-collapse-item>
</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-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">
<div v-if="formobj.nodeName !== '结算'">
<el-table-column align="center" width="80">
<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>
</template>
@ -293,7 +324,7 @@
<i class="el-icon-delete" @click="serviceDelete(scope.$index)"></i>
</template>
</el-table-column>
<el-table-column label="服务项目" align="center" width="200">
<el-table-column label="维修项目" align="center" width="200">
<template slot-scope="scope">
<el-popover placement="right" width="600" trigger="click">
<div>
@ -313,9 +344,9 @@
</div>
<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 label="维修" width="300" align="center">
<el-table-column label="维修技师" width="300" align="center">
<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-select>
</template>
@ -337,7 +368,7 @@
</template>
</el-table-column>
</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-col :span="24">
<div class="span-sty span-sty-one" style="width: 300px;!important;">前台登记时对商品要求备注</div>
@ -346,62 +377,87 @@
</el-row>
<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 prop="serviceItem" label="维修项目" width="200" 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="goodsSkuOwnSpec" 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="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="price" label="单价" align="center" width="150" />
<el-table-column label="折扣" align="center" width="100">
<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="" />
</template>
</el-table-column>
<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">
<template slot-scope="scope">
<el-input v-model="scope.row.remarks" clearable placeholder="" />
</template>
</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>
<div class="title">附加项目</div>
<el-row>
<el-col :span="8">
<el-col :span="10">
<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 :span="16">
<el-col :span="14">
<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-row>
<el-row>
<el-col :span="8">
<el-col :span="10">
<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 :span="16">
<el-col :span="14">
<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-row>
<el-row>
<el-col :span="8">
<el-col :span="10">
<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 :span="8">
<div class="span-sty">备注</div>
<el-form-item>
<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>
</el-form-item>
</el-col>
<el-col :span="8">
<el-col :span="6">
<div>
<el-upload
class="upload-demo"
@ -419,47 +475,44 @@
</el-row>
<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"/>
<div v-if="formobj.nodeName !== '结算' && formobj.nodeName !== '出厂'">
<el-table-column align="center" width="80">
<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>
</template>
<template slot-scope="scope">
<i class="el-icon-delete" @click="subjoinDelete(scope.$index)"></i>
</template>
</el-table-column>
<el-table-column label="其它附加项目" align="center" width="200">
<template slot-scope="scope">
<el-popover placement="right" width="500" trigger="click">
<div>
<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 prop="aitemCode" label="拼音缩写" align="center" />
<el-table-column prop="price" label="销售金额" align="center" />
</el-table>
<el-pagination :page.sync="subjoinQuery.current" :page-size="subjoinQuery.size" layout="total, pager" :total="subjoinQuery.total" />
</div>
<el-input slot="reference" v-model="scope.row.aitemName" @input="subjoinInput(scope.row.aitemName)" clearable placeholder="项目名称、拼音"/>
</el-popover>
</template>
</el-table-column>
</div>
<el-table-column v-else prop="aitemName" label="其它附加项目" align="center" width="200" />
<el-table-column align="center" width="80">
<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>
</template>
<template slot-scope="scope">
<i class="el-icon-delete" v-show="formobj.nodeName !== '结算'" @click="subjoinDelete(scope.$index)"></i>
</template>
</el-table-column>
<el-table-column label="其它附加项目" align="center" width="200">
<template slot-scope="scope">
<el-popover placement="right" width="500" trigger="click">
<div>
<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 prop="aitemCode" label="项目编码" align="center" />
<el-table-column prop="price" label="销售金额" align="center" />
</el-table>
<el-pagination :page.sync="subjoinQuery.current" :page-size="subjoinQuery.size" layout="total, pager" :total="subjoinQuery.total" />
</div>
<el-input slot="reference" v-model="scope.row.aitemName" @input="subjoinInput(scope.row.aitemName)" clearable placeholder="项目名称、拼音"/>
</el-popover>
</template>
</el-table-column>
<el-table-column label="销售价" align="center" width="150">
<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>
</el-table-column>
<el-table-column label="备注" align="center" min-width="200">
<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>
</el-table-column>
</el-table>
<el-row>
<el-col :span="24">
<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-row>
<el-row>
@ -538,6 +591,25 @@
<el-button type="info " size="mini" @click="settleVisible = false"> </el-button>
</div>
</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>
</template>
@ -558,6 +630,14 @@ export default {
viewTitle: '',
viewState: 1,
submitdisabled: false,
dialogVisible: false, //
temp: {
sid: '',
type: '',
createOrgSid: '',
useOrgSid: '',
userSid: ''
},
updateAction: process.env.VUE_APP_BASE_API + '/portal/file/upload',
fileList: [],
headers: {
@ -568,6 +648,7 @@ export default {
claimManufacturer_list: [], //
group_list: [], //
mainRepairersChange_list: [], //
people_list: [], //
settleVisible: false, //
billType_list: [], //
responsibility_list: [], //
@ -664,7 +745,9 @@ export default {
invoiceType: '',
invoiceTypeKey: '',
invoiceCompanySid: '',
invoiceCompany: ''
invoiceCompany: '',
taxRate: '',
taxItems: []
},
insuranceVo: {
responsibility: '',
@ -700,8 +783,11 @@ export default {
addAmount: '',
taxAmount: '',
outAmount: '',
outKPAmount: '',
subsidyAmount: '',
subsidyKPAmount: '',
rescueAmount: '',
rescueKPAmount: '',
actualAmount: '',
receivableAmount: '',
subsidyRemarks: '',
@ -713,7 +799,7 @@ export default {
createOrgSid: ''
},
rules: {
billType: [{ required: true, message: '单类型不能为空', trigger: 'change' }],
billType: [{ required: true, message: '维修单类型不能为空', trigger: 'change' }],
isGoOut: [{ required: true, message: '是否外出不能为空', trigger: 'change' }],
subject: [{ required: true, message: '科目不能为空', trigger: 'change' }],
estimatedFinishTime: [{ required: true, message: '预计完工不能为空', trigger: 'change' }],
@ -728,7 +814,7 @@ export default {
}
},
computed: {
// =
// =
gsfTotal() {
let gsf = '0'
if (this.formobj.sitemVos.length > 0) {
@ -740,7 +826,7 @@ export default {
}
return gsf
},
// = *
// = *
clfTotal() {
let clf = '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
return ys
},
// = +
// = +
yhTotal() {
let yh = '0'
if (this.formobj.sitemVos.length > 0) {
@ -907,9 +993,10 @@ export default {
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.isGoOut = '0'
this.formobj.isGoOut = '2'
this.formobj.nodeCode = '1'
this.formobj.nodeName = '登记'
this.formobj.invoiceVo.isInvoicing = '0'
},
showEdit(sid) {
this.viewTitle = '【编辑】维修单'
@ -926,9 +1013,13 @@ export default {
}
})
},
selectCustomer() {
this.viewState = 2
this.$refs['divCus'].showData(this.formobj.deptSid, this.formobj.billType)
chooseCustomer() {
if (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) {
this.viewState = 1
@ -940,6 +1031,14 @@ export default {
this.formobj.vinNo = value.vinNo
this.formobj.vehModel = value.vehModel
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) {
const choose = this.billType_list.filter((item) => item.dictValue === value)
@ -984,6 +1083,16 @@ export default {
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) {
const choose = this.responsibility_list.filter((item) => item.dictValue === value)
if (choose.length > 0 && choose !== null) {
@ -1040,6 +1149,14 @@ export default {
insuranceDelete(index) {
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) {
const choose = this.invoiceType_list.filter((item) => item.dictValue === value)
if (choose.length > 0 && choose !== null) {
@ -1048,6 +1165,80 @@ export default {
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() {
this.formobj.sitemVos.push({
serviceItemSid: '',
@ -1060,6 +1251,7 @@ export default {
hourPrice: '',
hours: '',
price: '',
sitemPrice: '', //
discount: '',
discountAmount: '',
amount: '',
@ -1097,7 +1289,13 @@ export default {
row.examineHourPrice = value.examineHourPrice
row.hourPrice = value.hourPrice
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.discountAmount = '0'
row.amount = row.price
@ -1120,7 +1318,18 @@ export default {
})
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) {
// ( * (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
@ -1131,7 +1340,7 @@ export default {
row.amount = Math.round((parseFloat(row.price === '' ? '0' : row.price) - parseFloat(row.discountAmount === '' ? '0' : row.discountAmount)) * 100) / 100
}
},
// --
// --
computeYHAndJE(row) {
// ( * * (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
@ -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
}
},
// --
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() {
this.formobj.aitemVos.push({
aitemSid: '',
aitemName: '',
price: ''
price: '',
aitemPrice: '' //
})
},
subjoinInput(value) {
@ -1171,7 +1417,13 @@ export default {
subjoinCurrentChange(value, row) {
row.aitemSid = value.sid
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()
},
handleSuccess(resp, file, fileList) {
@ -1196,8 +1448,22 @@ export default {
this.formobj.operatorSid = window.sessionStorage.getItem('userSid')
this.$refs['form_obj'].validate((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) {
this.$message({ showClose: true, type: 'error', message: '服务项目列表不能为空' })
this.$message({ showClose: true, type: 'error', message: '维修项目列表不能为空' })
return
}
this.formobj.hourAmount = this.gsfTotal //
@ -1226,8 +1492,22 @@ export default {
this.formobj.operatorSid = window.sessionStorage.getItem('userSid')
this.$refs['form_obj'].validate((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) {
this.$message({ showClose: true, type: 'error', message: '服务项目列表不能为空' })
this.$message({ showClose: true, type: 'error', message: '维修项目列表不能为空' })
return
}
this.submitdisabled = true
@ -1250,7 +1530,7 @@ export default {
this.$refs['form_obj'].validate((valid) => {
if (valid) {
if (this.formobj.sitemVos.length === 0) {
this.$message({ showClose: true, type: 'error', message: '服务项目列表不能为空' })
this.$message({ showClose: true, type: 'error', message: '维修项目列表不能为空' })
return
}
this.submitdisabled = true
@ -1321,7 +1601,18 @@ export default {
})
},
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) {
var xhr = new XMLHttpRequest()
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() {
this.viewState = 1
},
@ -1405,7 +1704,9 @@ export default {
invoiceType: '',
invoiceTypeKey: '',
invoiceCompanySid: '',
invoiceCompany: ''
invoiceCompany: '',
taxRate: '',
taxItems: []
},
insuranceVo: {
responsibility: '',
@ -1441,8 +1742,11 @@ export default {
addAmount: '',
taxAmount: '',
outAmount: '',
outKPAmount: '',
subsidyAmount: '',
subsidyKPAmount: '',
rescueAmount: '',
rescueKPAmount: '',
actualAmount: '',
receivableAmount: '',
subsidyRemarks: '',

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

@ -2,7 +2,7 @@
<div class="app-container">
<!--列表页面-->
<div v-show="viewState == 1">
<button-bar view-title="维修单管理(出厂)" ref="btnbar" :btndisabled="btndisabled" @btnhandle="btnHandle"/>
<button-bar view-title="维修单管理(出厂)" ref="btnbar" :btndisabled="btndisabled" @btnhandle="btnHandle"/>
<!--Start查询列表部分-->
<div class="main-content">
<div class="searchcon">
@ -26,7 +26,7 @@
<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-form-item>
<el-form-item label="单类型">
<el-form-item label="维修单类型">
<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>
@ -97,7 +97,7 @@
<span>{{ scope.row.outDoorState == '1' ? '是' : scope.row.outDoorState == '0' ? '否' :'' }}</span>
</template>
</el-table-column>
<el-table-column label="单据编号" align="center" width="130">
<el-table-column label="单据编号" align="center" width="180">
<template slot-scope="scope">
<span class="bluezi" @click="toInfo(scope.row)">{{ scope.row.billNo }}</span>
</template>
@ -107,7 +107,7 @@
<el-table-column prop="dept" 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="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="entryTime" 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 v-show="viewState == 1">
<button-bar view-title="维修单管理(竣工)" ref="btnbar" :btndisabled="btndisabled" @btnhandle="btnHandle"/>
<button-bar view-title="维修单管理(竣工)" ref="btnbar" :btndisabled="btndisabled" @btnhandle="btnHandle"/>
<!--Start查询列表部分-->
<div class="main-content">
<div class="searchcon">
@ -26,7 +26,7 @@
<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-form-item>
<el-form-item label="单类型">
<el-form-item label="维修单类型">
<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>
@ -92,7 +92,7 @@
<el-table :key="tableKey" v-loading="listLoading" :data="list" border style="width: 100%;" @selection-change="handleSelectionChange">
<el-table-column type="selection" align="center" width="50"/>
<el-table-column label="序号" type="index" width="80" :index="indexMethod" align="center"/>
<el-table-column label="单据编号" align="center" width="130">
<el-table-column label="单据编号" align="center" width="180">
<template slot-scope="scope">
<span class="bluezi" @click="toInfo(scope.row)">{{ scope.row.billNo }}</span>
</template>
@ -102,7 +102,7 @@
<el-table-column prop="dept" 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="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="entryTime" label="进厂时间" align="center" width="160" />
<el-table-column prop="estimatedFinishTime" label="预计完工时间" align="center" width="160" />
@ -211,13 +211,6 @@ export default {
btnKey: 'toEdit',
btnLabel: '编辑'
},
{
type: 'danger',
size: 'small',
icon: 'del',
btnKey: 'doDel',
btnLabel: '删除'
},
{
type: 'info',
size: 'small',
@ -314,9 +307,6 @@ export default {
case 'toEdit':
this.toEdit()
break
case 'doDel':
this.doDel()
break
case 'doClose':
this.doClose()
break
@ -435,36 +425,6 @@ export default {
this.viewState = 4
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() {
this.viewState = 1

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

@ -2,7 +2,7 @@
<div class="app-container">
<!--列表页面-->
<div v-show="viewState == 1">
<button-bar view-title="维修单管理(维修)" ref="btnbar" :btndisabled="btndisabled" @btnhandle="btnHandle"/>
<button-bar view-title="维修单管理(维修)" ref="btnbar" :btndisabled="btndisabled" @btnhandle="btnHandle"/>
<!--Start查询列表部分-->
<div class="main-content">
<div class="searchcon">
@ -26,7 +26,7 @@
<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-form-item>
<el-form-item label="单类型">
<el-form-item label="维修单类型">
<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>
@ -92,7 +92,7 @@
<el-table :key="tableKey" v-loading="listLoading" :data="list" border style="width: 100%;" @selection-change="handleSelectionChange">
<el-table-column type="selection" align="center" width="50"/>
<el-table-column label="序号" type="index" width="80" :index="indexMethod" align="center"/>
<el-table-column label="单据编号" align="center" width="130">
<el-table-column label="单据编号" align="center" width="180">
<template slot-scope="scope">
<span class="bluezi" @click="toInfo(scope.row)">{{ scope.row.billNo }}</span>
</template>
@ -102,7 +102,7 @@
<el-table-column prop="dept" 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="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="entryTime" label="进厂时间" align="center" width="160" />
<el-table-column prop="estimatedFinishTime" label="预计完工时间" align="center" width="160" />
@ -168,13 +168,6 @@ export default {
btnKey: 'toEdit',
btnLabel: '编辑'
},
{
type: 'danger',
size: 'small',
icon: 'del',
btnKey: 'doDel',
btnLabel: '删除'
},
{
type: 'info',
size: 'small',
@ -268,9 +261,6 @@ export default {
case 'toEdit':
this.toEdit()
break
case 'doDel':
this.doDel()
break
case 'doClose':
this.doClose()
break
@ -363,36 +353,6 @@ export default {
this.viewState = 4
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() {
this.viewState = 1

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

@ -2,7 +2,7 @@
<div class="app-container">
<!--列表页面-->
<div v-show="viewState == 1">
<button-bar view-title="维修单管理(派工)" ref="btnbar" :btndisabled="btndisabled" @btnhandle="btnHandle"/>
<button-bar view-title="维修单管理(派工)" ref="btnbar" :btndisabled="btndisabled" @btnhandle="btnHandle"/>
<!--Start查询列表部分-->
<div class="main-content">
<div class="searchcon">
@ -26,7 +26,7 @@
<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-form-item>
<el-form-item label="单类型">
<el-form-item label="维修单类型">
<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>
@ -92,7 +92,7 @@
<el-table :key="tableKey" v-loading="listLoading" :data="list" border style="width: 100%;" @selection-change="handleSelectionChange">
<el-table-column type="selection" align="center" width="50"/>
<el-table-column label="序号" type="index" width="80" :index="indexMethod" align="center"/>
<el-table-column label="单据编号" align="center" width="130">
<el-table-column label="单据编号" align="center" width="180">
<template slot-scope="scope">
<span class="bluezi" @click="toInfo(scope.row)">{{ scope.row.billNo }}</span>
</template>
@ -102,7 +102,7 @@
<el-table-column prop="dept" 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="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="entryTime" label="进厂时间" align="center" width="160" />
<el-table-column prop="estimatedFinishTime" label="预计完工时间" align="center" width="160" />
@ -168,13 +168,6 @@ export default {
btnKey: 'toEdit',
btnLabel: '编辑'
},
{
type: 'danger',
size: 'small',
icon: 'del',
btnKey: 'doDel',
btnLabel: '删除'
},
{
type: 'info',
size: 'small',
@ -268,9 +261,6 @@ export default {
case 'toEdit':
this.toEdit()
break
case 'doDel':
this.doDel()
break
case 'doClose':
this.doClose()
break
@ -363,36 +353,6 @@ export default {
this.viewState = 4
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() {
this.viewState = 1

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

@ -2,7 +2,7 @@
<div class="app-container">
<!--列表页面-->
<div v-show="viewState == 1">
<button-bar view-title="维修单管理(结算)" ref="btnbar" :btndisabled="btndisabled" @btnhandle="btnHandle"/>
<button-bar view-title="维修单管理(结算)" ref="btnbar" :btndisabled="btndisabled" @btnhandle="btnHandle"/>
<!--Start查询列表部分-->
<div class="main-content">
<div class="searchcon">
@ -26,7 +26,7 @@
<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-form-item>
<el-form-item label="单类型">
<el-form-item label="维修单类型">
<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>
@ -92,7 +92,7 @@
<el-table :key="tableKey" v-loading="listLoading" :data="list" border style="width: 100%;" @selection-change="handleSelectionChange">
<el-table-column type="selection" align="center" width="50"/>
<el-table-column label="序号" type="index" width="80" :index="indexMethod" align="center"/>
<el-table-column label="单据编号" align="center" width="130">
<el-table-column label="单据编号" align="center" width="180">
<template slot-scope="scope">
<span class="bluezi" @click="toInfo(scope.row)">{{ scope.row.billNo }}</span>
</template>
@ -102,7 +102,7 @@
<el-table-column prop="dept" 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="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="entryTime" label="进厂时间" align="center" width="160" />
<el-table-column prop="estimatedFinishTime" label="预计完工时间" align="center" width="160" />
@ -169,13 +169,6 @@ export default {
btnKey: 'toEdit',
btnLabel: '编辑'
},
{
type: 'danger',
size: 'small',
icon: 'del',
btnKey: 'doDel',
btnLabel: '删除'
},
{
type: 'info',
size: 'small',
@ -269,9 +262,6 @@ export default {
case 'toEdit':
this.toEdit()
break
case 'doDel':
this.doDel()
break
case 'doClose':
this.doClose()
break
@ -364,36 +354,6 @@ export default {
this.viewState = 4
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() {
this.viewState = 1

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

@ -26,7 +26,7 @@
</el-row>
<el-row>
<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-col>
<el-col :span="8">
@ -137,7 +137,7 @@
</el-col>
</el-row>
</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-col :span="8">
<div class="span-sty">责任划分</div>
@ -162,7 +162,7 @@
<el-table-column prop="lossAdjuster" label="定损员及电话" align="center" min-width="220"/>
</el-table>
</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-col :span="8">
<div class="span-sty">是否开发票</div>
@ -172,17 +172,34 @@
<div class="span-sty">发票类型</div>
<el-form-item><span class="addinputInfo">{{ formobj.invoiceVo.invoiceType }}</span></el-form-item>
</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">
<div class="span-sty">开票单位</div>
<el-form-item><span class="addinputInfo">{{ formobj.invoiceVo.invoiceCompany }}</span></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">
<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-collapse-item>
</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-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="repairerName" label="维修人" width="200" align="center" />
<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="remarks" label="备注" align="center" min-width="300" />
</el-table>
<div class="title">商品</div>
<div class="title">维修用料</div>
<el-row>
<el-col :span="24">
<div class="span-sty span-sty-one" style="width: 300px;!important;">前台登记时对商品要求备注</div>
@ -203,24 +220,33 @@
</el-row>
<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 prop="serviceItem" label="维修项目" width="200" 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="goodsSkuOwnSpec" 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="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="price" label="单价" align="center" width="150" />
<el-table-column prop="discount" label="折扣" align="center" width="100" />
<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="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>
<div class="title">附加项目</div>
<el-row>
<el-col :span="8">
<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 :span="16">
<div class="span-sty">备注</div>
@ -230,7 +256,12 @@
<el-row>
<el-col :span="8">
<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 :span="16">
<div class="span-sty">备注</div>
@ -240,7 +271,12 @@
<el-row>
<el-col :span="8">
<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 :span="8">
<div class="span-sty">备注</div>
@ -263,7 +299,7 @@
<el-row>
<el-col :span="24">
<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-row>
<el-row>
@ -355,7 +391,9 @@ export default {
invoiceType: '',
invoiceTypeKey: '',
invoiceCompanySid: '',
invoiceCompany: ''
invoiceCompany: '',
taxRate: '',
taxItems: []
},
insuranceVo: {
responsibility: '',
@ -391,8 +429,11 @@ export default {
addAmount: '',
taxAmount: '',
outAmount: '',
outKPAmount: '',
subsidyAmount: '',
subsidyKPAmount: '',
rescueAmount: '',
rescueKPAmount: '',
actualAmount: '',
receivableAmount: '',
subsidyRemarks: '',
@ -407,7 +448,7 @@ export default {
}
},
computed: {
// =
// =
gsfTotal() {
let gsf = '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
return ys
},
// = +
// = +
yhTotal() {
let yh = '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: '',
invoiceTypeKey: '',
invoiceCompanySid: '',
invoiceCompany: ''
invoiceCompany: '',
taxRate: '',
taxItems: []
},
insuranceVo: {
responsibility: '',
@ -596,8 +646,11 @@ export default {
addAmount: '',
taxAmount: '',
outAmount: '',
outKPAmount: '',
subsidyAmount: '',
subsidyKPAmount: '',
rescueAmount: '',
rescueKPAmount: '',
actualAmount: '',
receivableAmount: '',
subsidyRemarks: '',

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

@ -2,7 +2,7 @@
<div class="app-container">
<!--列表页面-->
<div v-show="viewState == 1">
<button-bar view-title="单查询" ref="btnbar" :btndisabled="btndisabled" @btnhandle="btnHandle"/>
<button-bar view-title="维修单查询" ref="btnbar" :btndisabled="btndisabled" @btnhandle="btnHandle"/>
<!--Start查询列表部分-->
<div class="main-content">
<div class="searchcon">
@ -26,7 +26,7 @@
<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-form-item>
<el-form-item label="单类型">
<el-form-item label="维修单类型">
<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>
@ -84,7 +84,7 @@
</div>
<!--End查询列表部分-->
<div class="listtop">
<div class="tit">单查询列表</div>
<div class="tit">维修单查询列表</div>
<pageye v-show="list.length > 0" :total="listQuery.total" :page.sync="listQuery.current" :limit.sync="listQuery.size" class="pagination" @pagination="getList"/>
</div>
<!--Start 主页面主要部分 -->
@ -102,7 +102,7 @@
<el-table-column prop="dept" 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="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="entryTime" 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;
@ApiModelProperty("出库确认备注")
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;
@ApiModelProperty("特殊标志(1有,0无)")
private String isSpecialSign;
@ApiModelProperty("特殊标志(1有,0无)")
private String isSpecialSign2;
@ApiModelProperty("客户来源 ")
private String customerSource;
@ApiModelProperty("客户来源 ")
private String customerSource2;
@ApiModelProperty("对接人sid")
private String dockingPeopleSid;
@ApiModelProperty("对接人")
@ -49,6 +53,9 @@ public class AsBusrepairBillDetailsVo implements Vo {
private String taxAmount;
@ApiModelProperty("是否外出(1是,2否)")
private String isGoOut;
@ApiModelProperty("是否外出(1是,2否)")
private String isGoOut2;
@ApiModelProperty("厂家补助")
private String subsidyAmount;
@ApiModelProperty("其他费用")
@ -167,4 +174,5 @@ public class AsBusrepairBillDetailsVo implements Vo {
private List<FileUrlQuery> fileName = new ArrayList<>(); //文件名称
@ApiModelProperty("商品登记备注")
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<>(); //文件名称
@ApiModelProperty("商品登记备注")
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<>();
@ApiModelProperty("配件销售")
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;
@ApiModelProperty("是否存在人伤(1是,0否)")
private String isPersonInjuries;
@ApiModelProperty("是否存在人伤(1是,0否)")
private String isPersonInjuries2;
@ApiModelProperty("责任比例Key")
private String responsibilityRatioKey;
@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)")
private String isInvoicing;
@ApiModelProperty("是否需要开发票(是1,否0)")
private String isInvoicing2;
@ApiModelProperty("发票类型")
private String invoiceType;
@ApiModelProperty("发票类型")
@ -35,4 +37,6 @@ public class InvoiceVo {
private String invoiceCompany;
@ApiModelProperty("加税点项目“,”英文逗号拼接")
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;
@ApiModelProperty("销售价格常量")
private String sitemPrice;
@ApiModelProperty("维修技师 ‘、’ 拼接")
private String staffNames;
@ApiModelProperty("单价-100,工时数-5小时,提成-100")
private String manHourInfo;
//-------------维修人员---------------
// @ApiModelProperty("维修人员sid")
// 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<>();
@ApiModelProperty("商品登记备注")
private String registerRemarks;
private String isGoOut;
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;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yxt.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* @description:
@ -83,4 +85,8 @@ public class AsBusrepairInventorybillDetail extends BaseEntity {
private String partsSellersSid;
@ApiModelProperty("配件销售")
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.toolkit.Constants;
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 org.apache.ibatis.annotations.Mapper;
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}")
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}
</where>
</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>

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;
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.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
@ -175,4 +178,27 @@ public class AsBusrepairBillRest {
PagerVo<AsBusrepairBwBillPageListVo> pv = asBusrepairBillService.bwBillPageList(pagerQuery);
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.yxt.anrui.as.api.asappendix.AsAppendix;
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.asbusrepairbillinsurance.AsBusrepairBillInsurance;
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.wms.wmsoldinventory.WmsOldInventoryFeign;
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.service.MybatisBaseService;
import com.yxt.common.base.utils.ConstantUtils;
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.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
@ -72,12 +79,17 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.io.File;
import java.io.InputStream;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.*;
import static java.util.Comparator.comparing;
/**
* @description:
* @author: dimengzhe
@ -134,6 +146,9 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
private AsServiceItemService asServiceItemService;
@Autowired
private AsArrearsoutApplyService asArrearsoutApplyService;
@Autowired
private DocPdfComponent docPdfComponent;
/**
* 维修领料获取派工单
*
@ -463,6 +478,27 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
if (null != 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);
if (null != vech) {
if (StringUtils.isNotBlank(vech.getVehMark())) {
@ -507,12 +543,29 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
if (null != 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);
}
AsBusrepairBillInsurance insurance = asBusrepairBillInsuranceService.fetchByBillSid(sid);
if (null != insurance) {
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);
if (!insuranceRecord.isEmpty()) {
@ -534,6 +587,19 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
for (AsBusrepairBillSitem sitem : sitems) {
SitemVo sitemVo = new 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());
if (!repairers.isEmpty()) {
List<String> staffList = new ArrayList<>(); //维修人员信息
@ -548,6 +614,7 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
}
sitemVo.setStaffList(staffList);
sitemVo.setStaffNameList(staffNameList);
sitemVo.setStaffNames(String.join("、", staffNameList));
}
sitemVos.add(sitemVo);
}
@ -574,12 +641,16 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
vo.setAitemVos(aitemVos);
}
List<AsBusrepairInventorybillDetail> goodsDetails = asBusrepairInventorybillDetailService.getGoodsDetailsByBillSid(sid);
DecimalFormat df2 =new DecimalFormat("#.00");
if (!goodsDetails.isEmpty()) {
for (AsBusrepairInventorybillDetail goodsDetail : goodsDetails) {
GoodsDetailsVo goodsDetailsVo = new GoodsDetailsVo();
BeanUtil.copyProperties(goodsDetail, goodsDetailsVo);
BigDecimal constPrice = BigDecimal.ZERO; //销售价常量
boolean isTaxRate = false; //进货价是否含税
if (null != goodsDetail.getReceivedTime()) {
goodsDetailsVo.setReceivedTime(sdf.format(goodsDetail.getReceivedTime()));
}
SmsGoods smsGoods = smsGoodsFeign.fetchEntityByGoodsID(goodsDetail.getGoodsID()).getData();
if (null != smsGoods) {
if (StringUtils.isNotBlank(smsGoods.getSupplierName())) {
@ -594,12 +665,17 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
String[] strings = partsSellersSid.split(",");
List<String> list = Arrays.asList(strings);
goodsDetailsVo.setPartsSellersSids(list);
} else {
goodsDetailsVo.setPartsSellersSids(new ArrayList<>());
}
if (StringUtils.isNotBlank(goodsDetail.getPartsSellers())) {
String partsSellers = goodsDetail.getPartsSellers();
String[] strings = partsSellers.split(",");
List<String> list = Arrays.asList(strings);
goodsDetailsVo.setPartsSellers(list);
goodsDetailsVo.setPartsSellers2(goodsDetail.getPartsSellers());
} else {
goodsDetailsVo.setPartsSellers(new ArrayList<>());
}
if (goodsDetail.getIsTaxRate() != null) {
if (goodsDetail.getIsTaxRate().intValue() == 1) {
@ -610,7 +686,7 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
BigDecimal divide = taxRate.divide(new BigDecimal("100"));
BigDecimal add = divide.add(new BigDecimal("1"));
BigDecimal multiply = constPrice.multiply(add);
goodsDetailsVo.setPrice(multiply.toString());
goodsDetailsVo.setPrice(df2.format(multiply));
} else {
goodsDetailsVo.setPrice(constPrice.toString());
}
@ -620,7 +696,7 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
BigDecimal divide = taxRate.divide(new BigDecimal("100"));
BigDecimal add = divide.add(new BigDecimal("1"));
BigDecimal multiply = constPrice.multiply(add);
goodsDetailsVo.setPrice(multiply.toString());
goodsDetailsVo.setPrice(df2.format(multiply));
} else {
goodsDetailsVo.setPrice(constPrice.toString());
}
@ -641,6 +717,7 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
vo.setSettleVo(settleVo);
}
List<FileUrlQuery> file = new ArrayList<>();
List<String> file2 = new ArrayList<>();
List<AsAppendix> asAppendices = asAppendixService.fetchByLinkSid(sid);
if (!asAppendices.isEmpty()) {
for (AsAppendix asAppendix : asAppendices) {
@ -651,9 +728,12 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
String fileType = asAppendix.getFileType();
fileUrlQuery.setName(fileName + "." + fileType);
file.add(fileUrlQuery);
file2.add(url);
}
}
vo.setFileName(file);
vo.setFiles(file2);
}
return rb.success().setData(vo);
}
@ -1081,6 +1161,7 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
} else if (asBusrepairBill.getNodeCode() == 2) {
nodeCode = 3;
nodeName = "维修";
asBusrepairBill.setRepairState(1);
} else if (asBusrepairBill.getNodeCode() == 3) {
nodeCode = 4;
nodeName = "竣工";
@ -1189,18 +1270,9 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
if (asBusrepairBill.getOldIsReclaim() != 1) {
return rb.setMsg("请先完成旧件入库,再进行操作!");
}
asBusrepairBill.setNodeCode(6);
asBusrepairBill.setNodeName("出厂");
asBusrepairBill.setNodeTime(new DateTime());
asBusrepairBill.setMaterialConfirm(1);
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);
}
}
return rb.success();
@ -1216,56 +1288,75 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
return rb.setMsg("请先完成旧件入库,再进行操作!");
}
asBusrepairBill.setNodeCode(6);
asBusrepairBill.setNodeName("出厂");
asBusrepairBill.setNodeName("已结算");
asBusrepairBill.setNodeTime(new DateTime());
if (asBusrepairBill.getMaterialConfirm().intValue() == 0) {
asBusrepairBill.setMaterialConfirm(1);
asBusrepairBill.setOutDoorState("2");
}
baseMapper.updateById(asBusrepairBill);
//新增工单环节信息
AsBusrepairBillNode billNode = new AsBusrepairBillNode();
billNode.setBillSid(sid);
billNode.setCreateByName(dto.getOperator());
billNode.setNodeName("出厂");
billNode.setNodeName("已结算");
billNode.setCreateBySid(dto.getOperatorSid());
billNode.setNodeCode("6");
asBusrepairBillNodeService.insert(billNode);
}
SettleVo settleVo = dto.getSettleVo();
if (null != settleVo) {
FmsReceivesettleDto settleDto = new FmsReceivesettleDto();
BeanUtil.copyProperties(settleVo, settleDto, "id", "sid");
settleDto.setCreateBySid(dto.getOperatorSid());
settleDto.setCreateByName(dto.getOperator());
settleDto.setSourceBillSid(dto.getSid());
settleDto.setSourceBillNo(asBusrepairBill.getBillNo());
fmsReceivesettleFeign.save(settleDto);
FinUncollectedReceivablesDetailedDto finUncollectedReceivablesDetailedDto = new FinUncollectedReceivablesDetailedDto();
finUncollectedReceivablesDetailedDto.setCreateByName(asBusrepairBill.getCreateByName());
finUncollectedReceivablesDetailedDto.setCreateBySid(asBusrepairBill.getCreateBySid());
finUncollectedReceivablesDetailedDto.setCustomerSid(asBusrepairBill.getCustomerSid());
finUncollectedReceivablesDetailedDto.setCustomerName(asBusrepairBill.getCustomerName());
AsBusrepairBillVech billVech = asBusrepairBillVechService.fetchByBillSid(asBusrepairBill.getSid());
if (null != billVech) {
if (StringUtils.isNotBlank(billVech.getVinNo())) {
finUncollectedReceivablesDetailedDto.setVIN(billVech.getVinNo());
if (asBusrepairBill.getSubject().equals("保外")) {
SettleVo settleVo = dto.getSettleVo();
if (null != settleVo) {
FmsReceivesettleDto settleDto = new FmsReceivesettleDto();
BeanUtil.copyProperties(settleVo, settleDto, "id", "sid");
settleDto.setCreateBySid(dto.getOperatorSid());
settleDto.setCreateByName(dto.getOperator());
settleDto.setSourceBillSid(dto.getSid());
settleDto.setSourceBillNo(asBusrepairBill.getBillNo());
fmsReceivesettleFeign.save(settleDto);
FinUncollectedReceivablesDetailedDto finUncollectedReceivablesDetailedDto = new FinUncollectedReceivablesDetailedDto();
finUncollectedReceivablesDetailedDto.setCreateByName(asBusrepairBill.getCreateByName());
finUncollectedReceivablesDetailedDto.setCreateBySid(asBusrepairBill.getCreateBySid());
finUncollectedReceivablesDetailedDto.setCustomerSid(asBusrepairBill.getCustomerSid());
finUncollectedReceivablesDetailedDto.setCustomerName(asBusrepairBill.getCustomerName());
AsBusrepairBillVech billVech = asBusrepairBillVechService.fetchByBillSid(asBusrepairBill.getSid());
if (null != billVech) {
if (StringUtils.isNotBlank(billVech.getVinNo())) {
finUncollectedReceivablesDetailedDto.setVIN(billVech.getVinNo());
}
}
}
finUncollectedReceivablesDetailedDto.setCustomerPhone(asBusrepairBill.getMobile());
finUncollectedReceivablesDetailedDto.setUseOrgSid(asBusrepairBill.getUseOrgSid());
finUncollectedReceivablesDetailedDto.setOrgSidPath(asBusrepairBill.getOrgSidPath());
finUncollectedReceivablesDetailedDto.setReceivablesName("工时费、材料费");
BigDecimal settleAmount = new BigDecimal("0");
BigDecimal otherSettleAmount = new BigDecimal("0");
if (StringUtils.isNotBlank(settleVo.getSettleAmount())) {
settleAmount = new BigDecimal(settleVo.getSettleAmount());
}
if (StringUtils.isNotBlank(settleVo.getOtherSettleAmount())) {
otherSettleAmount = new BigDecimal(settleVo.getOtherSettleAmount());
}
finUncollectedReceivablesDetailedDto.setCurrentReceivableMoney((settleAmount.add(otherSettleAmount)).toString());
finUncollectedReceivablesDetailedDto.setReveivableMoney((settleAmount.add(otherSettleAmount)).toString());
finUncollectedReceivablesDetailedDto.setUseOrgName(asBusrepairBill.getUseOrgName());
finUncollectedReceivablesDetailedDto.setKxState("01");
finUncollectedReceivablesDetailedFeign.saveOrUpdate(finUncollectedReceivablesDetailedDto);
finUncollectedReceivablesDetailedDto.setCustomerPhone(asBusrepairBill.getMobile());
finUncollectedReceivablesDetailedDto.setUseOrgSid(asBusrepairBill.getUseOrgSid());
finUncollectedReceivablesDetailedDto.setOrgSidPath(asBusrepairBill.getOrgSidPath());
finUncollectedReceivablesDetailedDto.setReceivablesName("工时费、材料费");
BigDecimal settleAmount = new BigDecimal("0");
BigDecimal otherSettleAmount = new BigDecimal("0");
if (StringUtils.isNotBlank(settleVo.getSettleAmount())) {
settleAmount = new BigDecimal(settleVo.getSettleAmount());
}
if (StringUtils.isNotBlank(settleVo.getOtherSettleAmount())) {
otherSettleAmount = new BigDecimal(settleVo.getOtherSettleAmount());
}
finUncollectedReceivablesDetailedDto.setCurrentReceivableMoney((settleAmount.add(otherSettleAmount)).toString());
finUncollectedReceivablesDetailedDto.setReveivableMoney((settleAmount.add(otherSettleAmount)).toString());
finUncollectedReceivablesDetailedDto.setUseOrgName(asBusrepairBill.getUseOrgName());
finUncollectedReceivablesDetailedDto.setKxState("01");
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();
@ -1470,6 +1561,8 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
} else if (asBusrepairBill.getNodeCode() == 3) {
nodeCode = 2;
nodeName = "派工";
asBusrepairBill.setCompleteState(0);
asBusrepairBill.setRepairState(0);
}
asBusrepairBill.setNodeCode(nodeCode);
asBusrepairBill.setNodeName(nodeName);
@ -1552,7 +1645,7 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
//获取索赔单
List<String> claimNos = asBusclaimBillService.selectByRepairBillSid(sid);
if (!claimNos.isEmpty()) {
vo.setClaimNo(String.join(",",claimNos));
vo.setClaimNo(String.join(",", claimNos));
}
if (StringUtils.isNotBlank(detailsVo.getVinNo())) {
vo.setVinNo(detailsVo.getVinNo());
@ -1580,15 +1673,15 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
for (int i = 0; i < sitemVos.size(); i++) {
SitemVo sitemVo = sitemVos.get(i);
SettleItemPdfVo itemPdfVo = new SettleItemPdfVo();
BeanUtil.copyProperties(sitemVo,itemPdfVo);
itemPdfVo.setSortNo(String.valueOf(i+1));
BeanUtil.copyProperties(sitemVo, itemPdfVo);
itemPdfVo.setSortNo(String.valueOf(i + 1));
String serviceItemSid = sitemVo.getServiceItemSid();
AsServiceItem item = asServiceItemService.fetchBySid(serviceItemSid);
if (null != item) {
itemPdfVo.setServiceItemCode(item.getSitemCode());
}
if (!sitemVo.getStaffNameList().isEmpty()) {
itemPdfVo.setRepairerName(String.join(",",sitemVo.getStaffNameList()));
itemPdfVo.setRepairerName(String.join(",", sitemVo.getStaffNameList()));
}
BigDecimal price = BigDecimal.ZERO;
BigDecimal amount = BigDecimal.ZERO;
@ -1611,14 +1704,194 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
vo.setSumMoney1(sumMoney1.toString());
String caps1 = bigDecimalToLocalStr(sumMoney1);
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);
}
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) {
String[] chinese = new String[]{"", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "万"};
String[] numChinese = new String[]{"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
@ -1647,4 +1920,48 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
public void updateOutFactory(String 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.sysstafforg.SysStaffOrgFeign;
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.WmsUpdateCountQuery;
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.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);
WmsUpdateCountQuery countQuery = new WmsUpdateCountQuery();
countQuery.setSid(sDto.getInventorySid());
countQuery.setCount(new BigDecimal(sDto.getCount()));
@ -382,6 +404,9 @@ public class AsBusrepairInventorybillService extends MybatisBaseService<AsBusrep
if (StringUtils.isNotBlank(data.getBillNo())) {
vo.setSourceBillNo(data.getBillNo());
}
if (StringUtils.isNotBlank(data.getIsGoOut())) {
vo.setIsGoOut(data.getIsGoOut());
}
if (StringUtils.isNotBlank(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.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
/**
* @description: 商品基础信息
@ -29,4 +30,7 @@ public interface WmsInventoryFeign {
@PostMapping("/updateInventoryCount")
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) {
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.setSourceBillNo(pmsPurchaseBill.getBillNo());
wmsAnsBillDto.setBusTypeKey("01");
wmsAnsBillDto.setBusTypeValue("采购预约");
wmsAnsBillDto.setBusTypeValue("采购入库");
wmsAnsBillDto.setCreateByName(pmsPurchaseBill.getCreateByName());
wmsAnsBillDto.setBillState(0);
wmsAnsBillDto.setReviewStatus("");
wmsAnsBillDto.setRefuseReason("");
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())) {
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")
private String manufactorBillTypeKey;
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 lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
@ -61,4 +62,6 @@ public class WmsAnsBill extends BaseEntity {
private String manufactorBillTypeValue;
@ApiModelProperty("厂家订单类型key")
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 lombok.Data;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@ -64,4 +65,6 @@ public class WmsAnsBillDto {
@ApiModelProperty("厂家订单类型key")
private String manufactorBillTypeKey;
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;
@ApiModelProperty("入库单价")
private BigDecimal cost;
@ApiModelProperty("税率")
private BigDecimal taxRate;
@ApiModelProperty("仓库sid")
private String warehouseSid;
@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("入库单价")
private String cost;
@ApiModelProperty("税率")
private String tax;
private String taxRate;
@ApiModelProperty("入库金额")
private String amount;
@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();
BeanUtil.copyProperties(dto,inventoryRecord,"id","sid");
inventoryRecord.setInventorySid(wmsInventory.getSid());
if (StringUtils.isNotBlank(dto.getTaxRate())) {
inventoryRecord.setTax(new BigDecimal(dto.getTaxRate()));
}
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<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
where wrb.sourceBillSid = #{sid}
</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>

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;
@ApiModelProperty("用户sid")
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())) {
qw.like("wrb.billState", query.getBillState());
}
//分配状态
if (StringUtils.isNotBlank(query.getDistributeType())) {
qw.like("wrb.distributeType", query.getDistributeType());
}
//外部编号
if (StringUtils.isNotBlank(query.getSourceBillNo())) {
qw.like("wrb.sourceBillNo", query.getSourceBillNo());
@ -367,6 +371,9 @@ public class WmsReceiptBillService extends MybatisBaseService<WmsReceiptBillMapp
if (!list.isEmpty()) {
for (int i = 0; i < list.size(); i++) {
WmsReceiptBillDetailDto2 wmsReceiptBillDetailDto2 = list.get(i);
String detailsSid = wmsReceiptBillDetailDto2.getDetailsSid();
String allotmentNum = baseMapper.selallotmentNumByReceiptDetailSid(detailsSid);
wmsReceiptBillDetailDto2.setAllotmentNum(allotmentNum);
int a = i + 1;
wmsReceiptBillDetailDto2.setXh(String.valueOf(a));
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("有效天数")
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("预约数量(采购订单数量)")
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.WmsWarehouseRackService;
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.wmsgoodstag.WmsGoodsTag;
import com.yxt.wms.biz.inventory.wmsgoodstag.WmsGoodsTagService;
@ -101,7 +102,8 @@ public class WmsShelfBillService extends MybatisBaseService<WmsShelfBillMapper,
private WmsGoodsTagService wmsGoodsTagService;
@Autowired
private BaseGoodsSpuFeign baseGoodsSpuFeign;
@Autowired
private WmsAnsBillService wmsAnsBillService;
public PagerVo<WmsShelfBillVo> listPage(PagerQuery<WmsShelfBillQuery> pq) {
WmsShelfBillQuery query = pq.getParams();
@ -777,8 +779,16 @@ public class WmsShelfBillService extends MybatisBaseService<WmsShelfBillMapper,
recordDto.setCost(receiptBillDetail.getCost().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);

Loading…
Cancel
Save