cost-allocation-table.vue 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817
  1. <template>
  2. <!--报表 成本分配表 (保存后数据到单证的成本分配汇总内)-->
  3. <div id="costAllocationTable">
  4. <a-card :bordered="false">
  5. <!-- 主表信息 点击搜索后 回显--->
  6. <a-row :gutter="24">
  7. <div class="table-page-search-wrapper">
  8. <!-- ref="form" :model="costAllocationTable" -->
  9. <a-form-model layout="inline" class="kk">
  10. <a-col :md="6" :sm="8">
  11. <a-form-model-item label="计划单号" prop="plannum">
  12. <a-input-search
  13. placeholder="请输入计划单号"
  14. enter-button
  15. v-model="detailsPlanNum.planNum"
  16. @search="onSearch('query')"
  17. :loading="this.loading"
  18. v-show='showSelect==0'
  19. />
  20. <a-input-search
  21. placeholder="请输入计划单号"
  22. v-text="detailsPlanNum.planNum"
  23. enter-button
  24. @search="onSearch('query')"
  25. v-show='showSelect==1'
  26. />
  27. <a-button type="primary" :disabled="edit == '0'" @click="onSearch('queryNew')" class="noprint">更新</a-button>
  28. </a-form-model-item>
  29. </a-col>
  30. <!-- 回显以下【备注】需要输入,后进行保存 disabled -->
  31. <a-col :md="6" :sm="8">
  32. <a-form-model-item label="产品款号" prop="poStyleNum">
  33. <span :title=" detailsPlanNum.poStyleNum">{{ detailsPlanNum.poStyleNum | ellipsis}}</span>
  34. <!-- {{ detailsPlanNum.poStyleNum }} -->
  35. </a-form-model-item>
  36. </a-col>
  37. <a-col :md="6" :sm="8">
  38. <a-form-model-item label="外销员" prop="exportSales">
  39. {{ detailsPlanNum.exportSales }}
  40. </a-form-model-item>
  41. </a-col>
  42. <a-col :md="6" :sm="8">
  43. <a-form-model-item label="成衣合同号" prop="garmentContractno">
  44. {{ detailsPlanNum.garmentContractno }}
  45. </a-form-model-item>
  46. </a-col>
  47. <a-col :md="6" :sm="8">
  48. <a-form-model-item label="部门" prop="department">
  49. {{ detailsPlanNum.department }}
  50. </a-form-model-item>
  51. </a-col>
  52. <a-col :md="6" :sm="8">
  53. <a-form-model-item label="客户简称" prop="customerShortame">
  54. {{ detailsPlanNum.customerShortame }}
  55. </a-form-model-item>
  56. </a-col>
  57. <a-col :md="6" :sm="8">
  58. <a-form-model-item label="加工单位" prop="processUnit">
  59. <span :title=" detailsPlanNum.processUnit">{{ detailsPlanNum.processUnit | ellipsis}}</span>
  60. <!-- {{ detailsPlanNum.processUnit }} -->
  61. </a-form-model-item>
  62. </a-col>
  63. <a-col :md="6" :sm="8">
  64. <a-form-model-item label="出运日期" prop="outdata">
  65. {{ detailsPlanNum.outdata }}
  66. </a-form-model-item>
  67. </a-col>
  68. <a-col :md="6" :sm="8">
  69. <a-form-model-item label="计划数量" prop="planQuantity">
  70. {{ detailsPlanNum.planQuantity }}
  71. </a-form-model-item>
  72. </a-col>
  73. <a-col :md="6" :sm="8">
  74. <a-form-model-item label="美元外销总价" prop="usdTotalexportprice">
  75. {{ detailsPlanNum.usdTotalexportprice }}
  76. </a-form-model-item>
  77. </a-col>
  78. <a-col :md="6" :sm="8">
  79. <a-form-model-item label="人民币费用支出" prop="rmbExpense">
  80. <a href="javascript:void(0)" @click="mainTableExpenseCNY()">{{ detailsPlanNum.rmbExpense }}</a>
  81. </a-form-model-item>
  82. </a-col>
  83. <!-- <a-col :md="6" :sm="8">
  84. <a-form-model-item label="税率%" prop="taxrate" class="fontColor">
  85. {{ detailsPlanNum.taxrate }}
  86. </a-form-model-item>
  87. </a-col> -->
  88. <a-col :md="6" :sm="8">
  89. <a-form-model-item label="实际出货数量" prop="actualShipquantity">
  90. {{ detailsPlanNum.actualShipquantity }}
  91. </a-form-model-item>
  92. </a-col>
  93. <a-col :md="6" :sm="8">
  94. <a-form-model-item label="人民币外销金额" prop="rmbExportamount">
  95. {{ detailsPlanNum.rmbExportamount }}
  96. </a-form-model-item>
  97. </a-col>
  98. <a-col :md="6" :sm="8">
  99. <a-form-model-item label="美元费用支出" prop="usdExpense" >
  100. <a href="javascript:void(0)" @click="mainTableExpenseUSD()" >{{ detailsPlanNum.usdExpense }}</a>
  101. </a-form-model-item>
  102. </a-col>
  103. <a-col :md="6" :sm="8">
  104. <a-form-model-item label="加工费(人民币)" prop="rmbProcesscost">
  105. {{ detailsPlanNum.rmbProcesscost }}
  106. </a-form-model-item>
  107. </a-col>
  108. <a-col :md="6" :sm="8">
  109. <a-form-model-item label="短出数" prop="shortseveral" >
  110. {{ detailsPlanNum.shortseveral }}
  111. </a-form-model-item>
  112. </a-col>
  113. <a-col :md="6" :sm="8">
  114. <a-form-model-item label="短出货值" prop="shortvalue" >
  115. {{ detailsPlanNum.shortvalue }}
  116. </a-form-model-item>
  117. </a-col>
  118. <!-- <a-col :md="6" :sm="8">
  119. <a-form-model-item label="短出面料成本" prop="fabricshortcost" class="fontColor">
  120. {{ detailsPlanNum.fabricshortcost }}
  121. </a-form-model-item>
  122. </a-col> -->
  123. <a-col :md="6" :sm="8">
  124. <a-form-model-item label="事故单美金金额" prop="accidentUsdamount" >
  125. {{ detailsPlanNum.accidentUsdamount }}
  126. </a-form-model-item>
  127. </a-col>
  128. <a-col :md="6" :sm="8">
  129. <a-form-model-item label="面料含税成本" prop="fabriccostIncludestax" >
  130. {{ detailsPlanNum.fabriccostIncludestax }}
  131. </a-form-model-item>
  132. </a-col>
  133. <a-col :md="6" :sm="8">
  134. <a-form-model-item label="辅料含税成本" prop="excipiencostIncludestax">
  135. {{ detailsPlanNum.excipiencostIncludestax }}
  136. </a-form-model-item>
  137. </a-col>
  138. <a-col :md="6" :sm="8">
  139. <a-form-model-item label="销售订单本币总额" prop="salesordersLocaltotal">
  140. {{ detailsPlanNum.salesordersLocaltotal }}
  141. </a-form-model-item>
  142. </a-col>
  143. <a-col :md="6" :sm="8">
  144. <a-form-model-item label="事故单人民币金额" prop="accidentcnyAmount" >
  145. {{ detailsPlanNum.accidentcnyAmount }}
  146. </a-form-model-item>
  147. </a-col>
  148. <a-col :md="6" :sm="8">
  149. <a-form-model-item label="面料不含税成本" prop="fabriccostNotincludestax" >
  150. {{ detailsPlanNum.fabriccostNotincludestax }}
  151. </a-form-model-item>
  152. </a-col>
  153. <a-col :md="6" :sm="8">
  154. <a-form-model-item label="辅料不含税成本" prop="excipiencostNotincludestax">
  155. {{ detailsPlanNum.excipiencostNotincludestax }}
  156. </a-form-model-item>
  157. </a-col>
  158. <a-col :md="6" :sm="8">
  159. <a-form-model-item label="销售订单原币总额" prop="salesrrdersOriginaltotal">
  160. {{ detailsPlanNum.salesrrdersOriginaltotal }}
  161. </a-form-model-item>
  162. </a-col>
  163. <a-col :md="6" :sm="8">
  164. <a-form-model-item label="制单人" prop="preparedBy">
  165. {{ detailsPlanNum.preparedBy }}
  166. </a-form-model-item>
  167. </a-col>
  168. <a-col :md="6" :sm="8" class="noprint">
  169. <h4 style="color:red;">
  170. 标记
  171. <span>(计算结果是负值时,该标记是红色)</span>
  172. </h4>
  173. </a-col>
  174. </a-form-model>
  175. </div>
  176. </a-row>
  177. </a-card>
  178. <!--tabs 组件引入 -->
  179. <a-card :bordered="false" style=" marginTop:10px;">
  180. <div><tabs ref="unitTabs" :showSelect='showSelect' /></div>
  181. </a-card>
  182. <!-- 事故单 -->
  183. <a-card :bordered="true" style="margin:10px 0">
  184. <div style="margin:60px 0 40px 0" :class="[(accidentListData.length==0?'noprint': '')]">
  185. <h6 class="table-title">事故单</h6>
  186. <a-table
  187. rowKey="id"
  188. :loading="loading"
  189. :columns="accidentListColumns"
  190. :data-source="accidentListData"
  191. bordered
  192. :pagination="false"
  193. :scroll="{ }"
  194. >
  195. <!-- 事故单 -->
  196. <span slot="accidentNum" slot-scope="text,record">
  197. <a :href="'http://www.myfitt.cn:18086/#/IncidentTicketModalDetail?id='+record.id" target="_blank">{{ text }}</a>
  198. </span>
  199. </a-table>
  200. </div>
  201. <!-- 费用支出 -->
  202. <div :class="[(costPayData.length==0?'noprint': '')]">
  203. <h6 class="table-title" >费用支出</h6>
  204. <a-table
  205. rowKey="id"
  206. :loading="loading"
  207. :columns="costPayColumns"
  208. :data-source="costPayData"
  209. bordered
  210. :pagination="false"
  211. >
  212. </a-table>
  213. </div>
  214. <!-- 备注信息 根据角色权限控制【填写】、【查看】-->
  215. <div class="note-one" style="marginTop:40px;">
  216. <h6 class="table-title">备注</h6>
  217. <div class="noteDetail">
  218. <a-form-model ref="form" :model="detailsPlanNum">
  219. <a-form-model-item prop="remarks">
  220. <a-input type="textarea" v-model="detailsPlanNum.remarks" placeholder="请输入备注" style="minHeight:100px;" v-show='showSelect==0' />
  221. <a-input type="textarea" v-text="detailsPlanNum.remarks" style="minHeight:100px;" v-show='showSelect==1'/>
  222. </a-form-model-item>
  223. </a-form-model>
  224. </div>
  225. </div>
  226. <!-- 页面底部保存 -->
  227. <a-row :gutter="24" style="marginTop:40px;float:right" class="noprint">
  228. <a-col :md="12" :sm="12" style="display:flex">
  229. <a-button type="primary" @click="daYin" style="margin-right:6px" :disabled ="PrintButton">
  230. 打印
  231. </a-button>
  232. <a-button type="primary" @click="save" :disabled="isDisabled">
  233. 保存
  234. </a-button>
  235. </a-col>
  236. </a-row>
  237. </a-card>
  238. <!-- 弹框 -->
  239. <div>
  240. <!-- 主表 人民币费用支出 弹框 -->
  241. <mainTableExpenseCNY-modal ref="mainTableExpenseCNYModal" :father="aa"></mainTableExpenseCNY-modal>
  242. <!-- 主表 美元费用支出 弹框 -->
  243. <mainTableExpenseUSD-modal ref="mainTableExpenseUSDModal" :father="bb"></mainTableExpenseUSD-modal>
  244. <!-- 事故单 -->
  245. <accidentList-modal ref="accidentListModal" :father="cc"></accidentList-modal>
  246. </div>
  247. </div>
  248. </template>
  249. <script>
  250. import { JeecgListMixin } from '@/mixins/JeecgListMixin'
  251. import JEllipsis from '@/components/jeecg/JEllipsis'
  252. import moment from 'moment'
  253. // 原始文件(应该跟单证内弹框一样,尝试公用,成功后可删除以下注释)
  254. // import mainTableExpenseCNYModal from '@views/reportForms/cost-allocation-table/mainTableExpenseCNYModal.vue'
  255. // import mainTableExpenseUSDModal from '@views/reportForms/cost-allocation-table/mainTableExpenseUSDModal.vue'
  256. // import accidentListModal from '@views/reportForms/fabric-loss-table/accidentListModal.vue' // 事故单
  257. // import tabs from '@views/cost-allocation-total/tabs.vue' // tabs组件
  258. import tabs from '@views/reportForms/cost-allocation-table/tabs.vue' // tabs组件
  259. import mainTableExpenseCNYModal from '@views/cost-allocation-total/modal/mainTableExpenseCNYModal.vue'
  260. import mainTableExpenseUSDModal from '@views/cost-allocation-total/modal/mainTableExpenseUSDModal.vue'
  261. import accidentListModal from '@views/cost-allocation-total/modal/accidentListModal.vue' // 事故单
  262. import { seachPlanNum, addHalfInfo } from '@api/document/cost-allocation-total.js'
  263. export default {
  264. name: 'CostAllocationTable', // 成本分配 (新增)
  265. mixins: [JeecgListMixin],
  266. components: { JEllipsis, moment, tabs, mainTableExpenseCNYModal, mainTableExpenseUSDModal, accidentListModal },
  267. data() {
  268. return {
  269. key: '', //客户输入的订单号
  270. PrintButton:true,//打印按钮
  271. showSelect:0,//计划号是否是输入框
  272. loading: false, // 表格加载
  273. detailsPlanNum: {
  274. planNum: ''
  275. }, // 详情所有数据
  276. remarks: '', // 备注
  277. // 事故单 表头
  278. accidentListColumns: [
  279. {
  280. title: '单号',
  281. width: 120,
  282. dataIndex: 'accidentNumber',
  283. className: 'replacecolor',
  284. customCell: this.accidentListCustomCell,
  285. scopedSlots: { customRender: 'accidentNum' }
  286. },
  287. { title: '事故承担方', width: 120, dataIndex: 'accidentUndertaker', className: 'replacecolor' },
  288. {
  289. title: '美元金额',
  290. width: 120,
  291. dataIndex: 'amount',
  292. className: 'replacecolor' ,
  293. customRender: (text, record, index) => {
  294. if(text!==''&&text){
  295. return Number(text).toFixed(2)
  296. }
  297. },
  298. },
  299. {
  300. title: '人民币金额',
  301. width: 120,
  302. dataIndex: 'amountrmb',
  303. className: 'replacecolor' ,
  304. customRender: (text, record, index) => {
  305. if(text!==''&&text){
  306. return Number(text).toFixed(2)
  307. }
  308. },
  309. },
  310. { title: '事故单主题', width: 120, dataIndex: 'accidentTheme', className: 'replacecolor' },
  311. { title: '责任人', width: 120, dataIndex: 'responsibilityPerson1', className: 'replacecolor' },
  312. // { title: '币种', width: 120, dataIndex: 'moneyType', className: 'replacecolor' },
  313. // { title: '金额', dataIndex: 'amount', width: 120, className: 'replacecolor' }
  314. ],
  315. accidentListData: [],
  316. // 费用支出 表头
  317. costPayColumns: [
  318. { title: '账套号', width: 120, dataIndex: 'setNo', className: 'replacecolor' },
  319. { title: '支出单号', width: 120, dataIndex: 'disbursementSlipNo', className: 'replacecolor' },
  320. { title: '费用项目', dataIndex: 'expenseItem', width: 120, className: 'replacecolor' },
  321. {
  322. title: '美元',
  323. dataIndex: 'disbursedOriginalmoney',
  324. width: 120,
  325. className: 'replacecolor' ,
  326. customRender: (text, record, index) => {
  327. if(text!==''&&text){
  328. return Number(text).toFixed(2)
  329. }
  330. },
  331. },
  332. {
  333. title: '人民币(不含税)',
  334. dataIndex: 'disbursedLocalmoney',
  335. width: 120, className: 'replacecolor',
  336. customRender: (text, record, index) => {
  337. if(text!==''&&text){
  338. return Number(text).toFixed(2)
  339. }
  340. },
  341. },
  342. {
  343. title: '人民币(税额)',
  344. dataIndex: 'shuiemoney',
  345. width: 120,
  346. className: 'replacecolor',
  347. customRender: (text, record, index) => {
  348. if(text!==''&&text){
  349. return Number(text).toFixed(2)
  350. }
  351. },
  352. },
  353. {
  354. title: '人民币(价税合计)',
  355. dataIndex: 'totalTaxIncrease',
  356. width: 120,
  357. className: 'replacecolor',
  358. customRender: (text, record, index) => {
  359. if(text!==''&&text){
  360. return Number(text).toFixed(2)
  361. }
  362. }, },
  363. { title: '发票号', dataIndex: 'invoicenum', width: 120, className: 'replacecolor' },
  364. { title: '制单人', dataIndex: 'preparedBy', width: 120, className: 'replacecolor' }
  365. ],
  366. costPayData: [],
  367. isDisabled: false, //按钮禁止
  368. billstatus: '' // 单据状态
  369. // dateFormat: 'YYYY-MM-DD',
  370. }
  371. },
  372. created() {},
  373. filters: {
  374. //文字数超出时,超出部分使用...
  375. ellipsis(value) {
  376. if (!value) return ''
  377. if (value.length > 20) {
  378. return value.slice(0, 20) + '...'
  379. }
  380. return value
  381. }
  382. },
  383. methods: {
  384. // 【计划单号】 搜索
  385. onSearch(data) {
  386. this.$nextTick(() => {
  387. // TODO:接口完善后,type 应改为 add(暂时为了回显数据)
  388. this.loading = true
  389. seachPlanNum({ plannum: this.detailsPlanNum.planNum, type: data }).then(res => {
  390. if (res.success) {
  391. this.PrintButton = false
  392. this.loading = false
  393. this.detailsPlanNum = res.result //所有详情
  394. //调整表头格式
  395. this.adjustingHeader()
  396. this.accidentListData = res.result.syCostAllocationAccidentList //事故单
  397. this.accidentCalculation(this.accidentListData)
  398. // var accidentNum = 0
  399. // this.accidentListData.map(item =>{
  400. // item.id = accidentNum + 1
  401. // accidentNum += 1
  402. // })
  403. this.costPayData = res.result.syCostAllocationCostpayList //支出费用
  404. var num = 0
  405. this.costPayData.map(item =>{
  406. item.id = num + 1
  407. num += 1
  408. })
  409. // tabs 名称集合
  410. this.$refs.unitTabs.tabNameList = res.result.processUnit.split(',')
  411. //所有tabs数据
  412. this.$refs.unitTabs.tabsAllData = res.result.processUnitList
  413. // 页面打开加载的数据
  414. var oneData = this.$refs.unitTabs.tabsAllData[0]
  415. this.$refs.unitTabs.fabData = oneData.syCostAllocationFabricList
  416. this.$refs.unitTabs.fabData.map(item=>{
  417. if(item.remainingQuantitycost!=='' && item.remainingQuantitycost){
  418. item.remainingQuantitycost = item.remainingQuantitycost.toFixed(2)
  419. }
  420. })
  421. this.$refs.unitTabs.ingData = oneData.syCostAllocationIngredientList
  422. this.$refs.unitTabs.shipData = oneData.syCostAllocationShipdetail
  423. this.addAmountIng(oneData.syCostAllocationIngredientList)
  424. this.addAmountCostPay(this.costPayData)
  425. this.addAccident(this.accidentListData)
  426. this.calculation(oneData.syCostAllocationShipdetail)
  427. //合计中面料相关金额
  428. var s=0
  429. oneData.syCostAllocationFabricList.map(item=>{
  430. s+=Number(item.transferCost)
  431. })
  432. // this.$refs.unitTabs.sumInfo.fabricAmount = s.toFixed(3) //合计中的面料总额
  433. this.$refs.unitTabs.sumInfo.fabricAmount = (this.detailsPlanNum.fabriccostIncludestax!==''&&this.detailsPlanNum.fabriccostIncludestax)?(Number(this.detailsPlanNum.fabriccostIncludestax)).toFixed(2):'' //合计中的面料总额
  434. this.$refs.unitTabs.sumInfo.fabricExcludTax =(Number(this.$refs.unitTabs.sumInfo.fabricAmount)/1.13).toFixed(2)//合计中的不含税面料总额
  435. // this.detailsPlanNum.fabriccostIncludestax = s.toFixed(3) //表头中面料含税总额
  436. // this.detailsPlanNum.fabriccostNotincludestax = (s/1.13).toFixed(3) //表头中面料不含税总额
  437. //合计中辅料相关金额
  438. var s = 0,
  439. v =0
  440. oneData.syCostAllocationIngredientList.map(item=>{
  441. s+=Number(item.priceExcludingtax),
  442. v+=Number(item.rmbAmount)
  443. })
  444. this.$refs.unitTabs.sumInfo.ingAmount =(v/2).toFixed(2)//辅料金额合计
  445. this.$refs.unitTabs.sumInfo.ingExcludAmount = ((v/2).toFixed(2)/1.13).toFixed(2)//辅料不含税金额合计
  446. //合计中出运明细相关金额
  447. var s =0,
  448. v = 0,
  449. d = 0,
  450. b = 0,
  451. f=0,
  452. e=0
  453. oneData.syCostAllocationShipdetail.map(item=>{
  454. s+=Number(item.exportPrice)
  455. v+=Number(item.shipQuantity)
  456. d+=Number(item.processCost)
  457. b+=Number(item.exportPrice)
  458. if(item.exchangeRate=='6.888' && item.outdata!=='合计'){
  459. e+=Number(item.processCost)
  460. }else if(item.outdata!=='合计'){
  461. e+=(Number(item.processCost)/1.13).toFixed(2)
  462. }
  463. })
  464. this.$refs.unitTabs.sumInfo.exportPriceUSD = (s/2).toFixed(2)//出运美元外销总价
  465. this.$refs.unitTabs.sumInfo.shipQua =(v/2).toFixed(4)//出货数量合计
  466. this.$refs.unitTabs.sumInfo.shipProcesFees =(d/2).toFixed(2)//出运加工费
  467. this.$refs.unitTabs.sumInfo.exportedAmountRMB =(b/2).toFixed(2)//出运人民币外销金额 f
  468. this.$refs.unitTabs.sumInfo.excludingTaxProcessing =e.toFixed(2)//
  469. f=Number(this.$refs.unitTabs.sumInfo.ingAmount)+Number(this.$refs.unitTabs.sumInfo.shipProcesFees)
  470. this.$refs.unitTabs.sumInfo.amountTotal = Number(this.$refs.unitTabs.sumInfo.fabricExcludTax)+Number(this.$refs.unitTabs.sumInfo.ingExcludAmount)+Number( this.$refs.unitTabs.sumInfo.shipProcesFees)//合计金额
  471. this.pagination = {
  472. total: res.result.total,
  473. current: res.result.current,
  474. pageSize: res.result.size
  475. }
  476. }else {
  477. this.loading = false
  478. this.$message.error(res.message);
  479. }
  480. })
  481. })
  482. },
  483. //调整表头格式
  484. adjustingHeader(){
  485. this.detailsPlanNum.outdata = ( this.detailsPlanNum.outdata==''||!this.detailsPlanNum.outdata)?'':moment( this.detailsPlanNum.outdata).format('YYYY-MM-DD')
  486. this.detailsPlanNum.planQuantity=( this.detailsPlanNum.planQuantity==''|| !this.detailsPlanNum.planQuantity)?'':Number( this.detailsPlanNum.planQuantity).toFixed(4)//计划数量
  487. this.detailsPlanNum.usdTotalexportprice=( this.detailsPlanNum.usdTotalexportprice==''|| !this.detailsPlanNum.usdTotalexportprice)?'':Number( this.detailsPlanNum.usdTotalexportprice).toFixed(2)//美元外销总价
  488. this.detailsPlanNum.rmbExpense=( this.detailsPlanNum.rmbExpense==''|| !this.detailsPlanNum.rmbExpense)?'':Number( this.detailsPlanNum.rmbExpense).toFixed(2)//人民币费用支出
  489. this.detailsPlanNum.actualShipquantity=( this.detailsPlanNum.actualShipquantity==''|| !this.detailsPlanNum.actualShipquantity)?'':Number( this.detailsPlanNum.actualShipquantity).toFixed(4)//实际出库数量
  490. this.detailsPlanNum.rmbExportamount=( this.detailsPlanNum.rmbExportamount==''|| !this.detailsPlanNum.rmbExportamount)?'':Number( this.detailsPlanNum.rmbExportamount).toFixed(2)//人民币外销金额
  491. this.detailsPlanNum.usdExpense=( this.detailsPlanNum.usdExpense==''|| !this.detailsPlanNum.usdExpense)?'':Number( this.detailsPlanNum.usdExpense).toFixed(2)//美元费用支出
  492. this.detailsPlanNum.rmbProcesscost=( this.detailsPlanNum.rmbProcesscost==''|| !this.detailsPlanNum.rmbProcesscost)?'':Number( this.detailsPlanNum.rmbProcesscost).toFixed(2)//加工费(人民币)
  493. this.detailsPlanNum.accidentUsdamount=( this.detailsPlanNum.accidentUsdamount==''|| !this.detailsPlanNum.accidentUsdamount)?'':Number( this.detailsPlanNum.accidentUsdamount).toFixed(2)//事故单美元金额
  494. this.detailsPlanNum.fabriccostIncludestax=( this.detailsPlanNum.fabriccostIncludestax==''|| !this.detailsPlanNum.fabriccostIncludestax)?'':Number( this.detailsPlanNum.fabriccostIncludestax).toFixed(2)//面料含税成本
  495. this.detailsPlanNum.excipiencostIncludestax=( this.detailsPlanNum.excipiencostIncludestax==''|| !this.detailsPlanNum.excipiencostIncludestax)?'':Number( this.detailsPlanNum.excipiencostIncludestax).toFixed(2)//辅料含税成本
  496. this.detailsPlanNum.salesordersLocaltotal=( this.detailsPlanNum.salesordersLocaltotal==''|| !this.detailsPlanNum.salesordersLocaltotal)?'':Number( this.detailsPlanNum.salesordersLocaltotal).toFixed(2)//销售本币金额
  497. this.detailsPlanNum.accidentcnyAmount=( this.detailsPlanNum.accidentcnyAmount==''|| !this.detailsPlanNum.accidentcnyAmount)?'':Number( this.detailsPlanNum.accidentcnyAmount).toFixed(2)//事故单人民币金额
  498. this.detailsPlanNum.fabriccostNotincludestax=( this.detailsPlanNum.fabriccostNotincludestax==''|| !this.detailsPlanNum.fabriccostNotincludestax)?'':Number( this.detailsPlanNum.fabriccostNotincludestax).toFixed(2)//面料不含税成本
  499. this.detailsPlanNum.excipiencostNotincludestax=( this.detailsPlanNum.excipiencostNotincludestax==''|| !this.detailsPlanNum.excipiencostNotincludestax)?'':Number( this.detailsPlanNum.excipiencostNotincludestax).toFixed(2)//辅料料不含税成本
  500. this.detailsPlanNum.salesrrdersOriginaltotal=( this.detailsPlanNum.salesrrdersOriginaltotal==''|| !this.detailsPlanNum.salesrrdersOriginaltotal)?'':Number( this.detailsPlanNum.salesrrdersOriginaltotal).toFixed(2)//销售订单原币金额
  501. },
  502. //计算短出货值
  503. calculation(val){
  504. var average = 0
  505. val.map(item=>{
  506. if(item.outdata !=='合计'){
  507. average += (Number(item.exportUnitPrice)*Number(item.shipQuantity)*Number(item.exchangeRate))
  508. }
  509. })
  510. this.detailsPlanNum.shortvalue = average.toFixed(2)
  511. var shipQuantityAll =0,
  512. exportUnitPriceALll = 0,
  513. exportPriceAll =0,
  514. rmbAmountAll = 0,
  515. procesUnitPricermbAll = 0,
  516. procesUnitPriceusdAll = 0,
  517. processCostAll = 0
  518. val.map(item=>{
  519. if(item.outdata !=='合计'){
  520. shipQuantityAll+=Number(item.shipQuantity)
  521. exportUnitPriceALll+=Number(item.exportUnitPrice)
  522. exportPriceAll+=Number(item.exportPrice)
  523. rmbAmountAll+=Number(item.rmbAmount)
  524. procesUnitPricermbAll+=Number(item.procesUnitPricermb)
  525. procesUnitPriceusdAll+=Number(item.procesUnitPriceusd)
  526. processCostAll+=Number(item.processCost)
  527. }
  528. })
  529. var allObj ={
  530. outdata:'合计',
  531. shipQuantity:shipQuantityAll.toFixed(3),
  532. exportUnitPrice:exportUnitPriceALll.toFixed(3),
  533. exportPrice:exportPriceAll.toFixed(3),
  534. rmbAmount:rmbAmountAll.toFixed(3),
  535. procesUnitPricermb:procesUnitPricermbAll.toFixed(3),
  536. procesUnitPriceusd:procesUnitPriceusdAll.toFixed(3),
  537. processCost:processCostAll.toFixed(3)
  538. }
  539. //发运明细-合计行
  540. if(this.$refs.unitTabs.shipData[this.$refs.unitTabs.shipData.length-1].outdata=='合计'){
  541. this.$refs.unitTabs.shipData.pop()
  542. }
  543. if(this.$refs.unitTabs.shipData.length!==0 ){this.$refs.unitTabs.shipData.push(allObj)}
  544. this.$refs.unitTabs.shipData.map(item=>{
  545. item.shipQuantity = Number(item.shipQuantity)
  546. item.exportUnitPrice = Number(item.exportUnitPrice)
  547. item.exportPrice = Number(item.exportPrice)
  548. item.rmbAmount = Number(item.rmbAmount)
  549. item.procesUnitPricermb = Number(item.procesUnitPricermb)
  550. item.procesUnitPriceusd = Number(item.procesUnitPriceusd)
  551. item.processCost = Number(item.processCost)
  552. })
  553. },
  554. //辅料中的合计行
  555. addAmountIng(val){
  556. var ingredientsTransferQuantityALll = 0,
  557. transferCostAll =0,
  558. usageQuantityAll = 0,
  559. purchaseQuantityAll = 0,
  560. ingredientsRemainingQuantityAll = 0,
  561. lossAll = 0,
  562. rmbAmountAll = 0,
  563. usdAmountAll = 0,
  564. priceExcludingtaxAll = 0,
  565. dosageAll = 0
  566. val.map(item=>{
  567. if(item.goodsName!=='合计'){
  568. ingredientsTransferQuantityALll+=Number(item.ingredientsTransferQuantity)
  569. transferCostAll+=Number(item.transferCost)
  570. usageQuantityAll+=Number(item.usageQuantity)
  571. purchaseQuantityAll+=Number(item.purchaseQuantity)
  572. ingredientsRemainingQuantityAll+=Number(item.ingredientsRemainingQuantity)
  573. lossAll+=Number(item.loss)
  574. rmbAmountAll+=Number(item.rmbAmount)
  575. usdAmountAll+=Number(item.usdAmount)
  576. priceExcludingtaxAll+=Number(item.priceExcludingtax)
  577. dosageAll+=Number(item.dosage)
  578. }
  579. })
  580. var allObj ={
  581. goodsName:'合计',
  582. ingredientsTransferQuantity:ingredientsTransferQuantityALll,
  583. transferCost:transferCostAll,
  584. usageQuantity:usageQuantityAll,
  585. purchaseQuantity:purchaseQuantityAll,
  586. ingredientsRemainingQuantity:ingredientsRemainingQuantityAll,
  587. loss:lossAll,
  588. rmbAmount:rmbAmountAll,
  589. usdAmount:usdAmountAll,
  590. priceExcludingtax:priceExcludingtaxAll,
  591. dosage:dosageAll
  592. }
  593. if(this.$refs.unitTabs.ingData[this.$refs.unitTabs.ingData.length-1].goodsName=='合计'){this.$refs.unitTabs.ingData.pop()}
  594. if(this.$refs.unitTabs.ingData.length!==0 ){ this.$refs.unitTabs.ingData.push(allObj)}
  595. },
  596. //事故单合计行
  597. addAccident(val){
  598. var amountAll=0,
  599. amountrmbAll=0
  600. val.map(item=>{
  601. if(item.accidentUndertaker!=='合计'){
  602. amountAll+=Number(item.amount)
  603. amountrmbAll+=Number(item.amountrmb)
  604. }
  605. })
  606. var allObj={
  607. accidentUndertaker:'合计',
  608. amount:amountAll,
  609. amountrmb:amountrmbAll
  610. }
  611. if(this.accidentListData[this.accidentListData.length-1].goodsName=='合计'){this.accidentListData.pop()}
  612. if(this.accidentListData.length!==0 ){ this.accidentListData.push(allObj)}
  613. },
  614. //费用支出合计行
  615. addAmountCostPay(val){
  616. var disbursedLocalmoneyALL=0,
  617. disbursedOriginalmoneyALL=0,
  618. shuiemoneyAll = 0
  619. val.map(item=>{
  620. if(item.setNo!=='合计'){
  621. disbursedLocalmoneyALL+=Number(item.disbursedLocalmoney)
  622. disbursedOriginalmoneyALL+=Number(item.disbursedOriginalmoney)
  623. shuiemoneyAll+=Number(item.shuiemoney)
  624. }
  625. })
  626. var obj={
  627. setNo:'合计',
  628. disbursedLocalmoney:disbursedLocalmoneyALL,
  629. disbursedOriginalmoney:disbursedOriginalmoneyALL,
  630. shuiemoney:shuiemoneyAll.toFixed(3),
  631. totalTaxIncrease:(disbursedLocalmoneyALL+shuiemoneyAll)
  632. }
  633. console.log(this.costPayData[this.costPayData.length-1])
  634. if(this.costPayData[this.costPayData.length-1].setNo=='合计'){this.costPayData.pop()}
  635. if(this.costPayData.length!==0){ this.costPayData.push(obj)}
  636. },
  637. daYin(){
  638. this.showSelect = 1
  639. this.$nextTick(() => {
  640. const html = window.document.getElementById('costAllocationTable').innerHTML
  641. const win = window.open();
  642. const style = '<style>\n'
  643. +'.noprint{display:none}'
  644. // +'.ant-table-body-inner{overflow-x: hidden !important;overflow-y: hidden !important }' //去除滚动条
  645. +'.ant-table-body{overflow-x: hidden !important ;overflow-y: hidden !important}'
  646. +'.ant-table-header {overflow-x: hidden !important ;overflow-y: hidden !important}'
  647. +'.ant-table-fixed-left{display: none !important}'
  648. +'.ant-tabs-nav-container{display: none !important}'
  649. +'.kk{display:flex;flex-wrap: wrap}' //主要信息并排
  650. +'.ant-col-sm-8{width:40%;margin-bottom: 6px;}'
  651. +'.ant-form-item-label{width:55%;font-size: 12px;}'
  652. +'.ant-form-item-children{font-size: 12px}'
  653. +'.ant-card-head-title{font-weight: bold;font-size: 0.67em;margin-bottom: 9px;}'
  654. +'.ant-form-item-control-wrapper{width:100%}'
  655. +'.ant-input{width:100%}'
  656. +'.ant-form-item{display:flex}'
  657. + 'table{width: 100% !important;border-collapse: collapse;border-spacing: 0;overflow-x:hidden;}\n'
  658. + 'th,td{width:2%;height: 18px;border: 1px solid #999;font-size: 12px;color: #666;max-width:2000px;text-align: center;word-wrap: break-word;}\n'
  659. +'.ant-table-row-cell-break-word{width:5% !important}'
  660. + 'th{color: #333}\n'
  661. + 'a{color: #666; text-decoration:none;}\n'
  662. + '</style>';
  663. win.document.write(style+html);
  664. win.focus();
  665. win.print();
  666. win.close();
  667. this.showSelect = 0
  668. })
  669. },
  670. //计算事故单美元金额和事故单人民币金额
  671. accidentCalculation(val){
  672. var usaMoney = 0,
  673. rmbMoney = 0
  674. val.map(item=>{
  675. if(item.accidentType=='应补' && item.amount!==''&&item.amount&&item.amount!=='0'){
  676. item.amount=Number(item.amount)*(-1)
  677. }else if(item.accidentType=='应补' && item.amountrmb!==''&&item.amountrmb&&item.amountrmb!=='0'){
  678. item.amountrmb = Number(item.amountrmb)*(-1)
  679. }
  680. usaMoney += Number(item.amount),
  681. rmbMoney+=Number(item.amountrmb)
  682. })
  683. this.detailsPlanNum.accidentUsdamount = usaMoney.toFixed(2)
  684. this.detailsPlanNum.accidentcnyAmount = rmbMoney.toFixed(2)
  685. },
  686. // 页面 保存
  687. save() {
  688. console.log('点击保存')
  689. this.isDisabled = true
  690. setTimeout(() => {
  691. let that = this
  692. that.isDisabled = false
  693. }, 3000)
  694. if (this.detailsPlanNum.remarks) {
  695. // 保存 部分信息
  696. var halfInfo = {}
  697. // halfInfo.planNum = this.detailsPlanNum.planNum
  698. // halfInfo.remarks = this.detailsPlanNum.remarks
  699. // halfInfo.billstatus = '1'
  700. // console.log(halfInfo.planNum, halfInfo.remarks, halfInfo.billstatus)
  701. // var planNum = this.detailsPlanNum.planNum,
  702. var json = this.detailsPlanNum
  703. json.outdata=moment(json.outdata).format('YYYY-MM-DD hh:mm:ss')
  704. addHalfInfo(json).then(res => {
  705. if (res.success) {
  706. console.log('保存的部分信息', halfInfo)
  707. this.$message.success('保存成功')
  708. halfInfo = {}
  709. }
  710. })
  711. } else {
  712. this.$message.error('备注不能为空')
  713. }
  714. },
  715. // 主表:人民币费用支出 弹框
  716. mainTableExpenseCNY() {
  717. console.log('点击:主表人民币费用支出')
  718. this.$refs.mainTableExpenseCNYModal.mainTableExpenseCNYModVis = true
  719. this.$refs.mainTableExpenseCNYModal.mainTableExpenseCNYData = this.costPayData
  720. this.$refs.mainTableExpenseCNYModal.fixedData = this.costPayData
  721. },
  722. // 主表:美元费用支出 弹框
  723. mainTableExpenseUSD() {
  724. console.log('点击:主表美元费用支出')
  725. this.$refs.mainTableExpenseUSDModal.mainTableExpenseUSDModVis = true
  726. this.$refs.mainTableExpenseUSDModal.mainTableExpenseUSDData = this.costPayData
  727. this.$refs.mainTableExpenseUSDModal.fixedData = this.costPayData
  728. },
  729. // 事故单 单号 弹框
  730. accidentListCustomCell(record) {
  731. return {
  732. on: {
  733. click: event => {
  734. // this.$router.push({path:'http://localhost:3000/#/IncidentTicketModalDetail'})
  735. // console.log('this:', this)
  736. // // 调用【面料损耗表】中的【事故单】弹框
  737. // this.$refs.accidentListModal.accidentListModVis = true
  738. // this.$refs.accidentListModal.accidentList = record
  739. }
  740. }
  741. }
  742. },
  743. // father 方法
  744. aa() {},
  745. bb() {},
  746. cc() {}
  747. },
  748. computed: {},
  749. mounted() {}
  750. }
  751. </script>
  752. <style lang="less" scoped>
  753. @import '~@assets/less/common.less';
  754. @import '~@assets/less/overwriter.less';
  755. /deep/ .ant-table-thead > tr > th {
  756. text-align: center;
  757. // font-weight: 700;
  758. }
  759. /deep/ .ant-table-tbody {
  760. text-align: center;
  761. }
  762. /deep/ .fontColor .ant-form-item-label > label{
  763. color: red !important;
  764. }
  765. // /deep/ th.replacecolor {
  766. // background-color: #ccc;
  767. // }
  768. // 抽屉里的card样式
  769. // /deep/ .ant-drawer-content {
  770. // background-color: #f0f2f5;
  771. // }
  772. // /deep/ .ant-drawer-body {
  773. // padding: 10px;
  774. // }
  775. /deep/ form :not(.ant-input-group-wrapper) > .ant-input-group, form .ant-input-group-wrapper{
  776. width: 65% !important;
  777. }
  778. /deep/ .ant-input-group{
  779. padding-right: 6px !important;
  780. }
  781. </style>