|
@@ -0,0 +1,154 @@
|
|
|
+<template>
|
|
|
+ <vxe-modal v-model="value" id="openLogModal" title="操作日志" width="50%" height="60%" min-width="460" min-height="320" show-zoom resize transfer :show-footer="!hideBtn" v-loading="load">
|
|
|
+ <by-table :propConfig="config" ref="table" >
|
|
|
+ <!-- <template v-slot:num="{row}">
|
|
|
+ <vxe-input v-model="row.num" v-if="row.splitNum > 0" placeholder="请输入" type="integer" @input="onChangeRow(row)"></vxe-input>
|
|
|
+ </template> -->
|
|
|
+ </by-table>
|
|
|
+ <template #footer>
|
|
|
+ <div class="btn">
|
|
|
+ <el-button plain size="small" @click="value = false">取消</el-button>
|
|
|
+ <el-button type="primary" size="small" @click="btn">确定</el-button>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </vxe-modal>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script lang="ts">
|
|
|
+import { Component, Prop, Vue, Watch } from "vue-property-decorator";
|
|
|
+import { splitQtyQuery,split } from '@/api/omsOrder'
|
|
|
+@Component({components:{}})
|
|
|
+export default class SplitModel extends Vue {
|
|
|
+ value=false;
|
|
|
+ load=false;
|
|
|
+ billData:any=null;
|
|
|
+ hideBtn=false;
|
|
|
+ data:Array<any>=[]
|
|
|
+ config:any={
|
|
|
+ attr:{
|
|
|
+ size:'small',
|
|
|
+ seq:true
|
|
|
+ },
|
|
|
+ columns:[{
|
|
|
+ title:'操作内容',
|
|
|
+ field:'name',
|
|
|
+ width:200
|
|
|
+ },{
|
|
|
+ title:'操作人',
|
|
|
+ field:'price',
|
|
|
+ width:200
|
|
|
+ },{
|
|
|
+ title:'创建时间',
|
|
|
+ field:'qty',
|
|
|
+ width:200
|
|
|
+ }]
|
|
|
+ }
|
|
|
+
|
|
|
+ setShow(v:boolean){
|
|
|
+ this.hideBtn = false;
|
|
|
+ this.value = v;
|
|
|
+ }
|
|
|
+ setData(data:any){
|
|
|
+ if(data){
|
|
|
+ this.billData = data;
|
|
|
+ this.data = [];
|
|
|
+ if(data.items) {
|
|
|
+ for(const item of data.items){
|
|
|
+ item.splitNum = item.qty - item.splitQty
|
|
|
+ this.data.push(item)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // this.getSplitNum(data);
|
|
|
+ }else{
|
|
|
+ this.billData = null;
|
|
|
+ this.data = [];
|
|
|
+ }
|
|
|
+ this.$nextTick(()=>{
|
|
|
+ let height = (document.getElementById('split-table') as any).parentNode.offsetHeight;
|
|
|
+ this.config.attr.height=height - 36;
|
|
|
+ if(this.$refs.table){
|
|
|
+ (this.$refs.table as any).setConfig(this.config);
|
|
|
+ (this.$refs.table as any).setValue(this.data);
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+//获取可拆分数量
|
|
|
+ getSplitNum(v:any){
|
|
|
+ if(!v) return;
|
|
|
+ let data = v.items?v.items:[];
|
|
|
+ if(data.length == 0) return;
|
|
|
+ this.load = true;
|
|
|
+ splitQtyQuery({id:v.id}).then((res:any) => {
|
|
|
+ this.load = false;
|
|
|
+ if(res.data){
|
|
|
+ let j = 0;
|
|
|
+ for(const item of data){
|
|
|
+ let n = Number(res.data[item.id]);
|
|
|
+ if(n){
|
|
|
+ item.splitNum = item.qty - n;
|
|
|
+ }else{
|
|
|
+ item.splitNum = item.qty;
|
|
|
+ }
|
|
|
+ this.data.push(item)
|
|
|
+ if(item.splitNum == 0){
|
|
|
+ j++
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(j == this.data.length){
|
|
|
+ this.hideBtn = true
|
|
|
+ }
|
|
|
+ (this.$refs.table as any).setValue(this.data);
|
|
|
+ }
|
|
|
+ }).catch((err:any) => {
|
|
|
+ this.load = false
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ btn(){
|
|
|
+ let data = (this.$refs.table as any).getValue();
|
|
|
+ let info:Array<any>=[];
|
|
|
+ if(data.length == 0){
|
|
|
+ this.$message('未有数据不能执行此操作!')
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for(const item of data){
|
|
|
+ if(Number(item.num) > 0){
|
|
|
+ info.push({
|
|
|
+ qty:Number(item.num),
|
|
|
+ orderItemId:item.id
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(info.length == 0){
|
|
|
+ this.$message('请设置拆分数量!')
|
|
|
+ return
|
|
|
+ }
|
|
|
+ this.load = true;
|
|
|
+ split({
|
|
|
+ id:this.billData.id,
|
|
|
+ splitInfos:info
|
|
|
+ }).then((res:any) => {
|
|
|
+ this.load = false;
|
|
|
+ this.$message({
|
|
|
+ message:'拆分成功!',
|
|
|
+ type:'success'
|
|
|
+ })
|
|
|
+ this.$emit('handleSuccess');
|
|
|
+ this.value = false;
|
|
|
+ }).catch(() => {
|
|
|
+ this.load = false
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ onChangeRow(row:any){
|
|
|
+ if(Number(row.splitNum) < Number(row.num)){
|
|
|
+ this.$message('拆分数量不能大于可拆分数量!');
|
|
|
+ row.num = 0;
|
|
|
+ this.$forceUpdate()
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|
|
|
+<style lang="scss" scoped>
|
|
|
+
|
|
|
+</style>
|