Commit dae124b3 authored by 黄奎's avatar 黄奎
parents 35e1faa7 75390670
......@@ -12,7 +12,7 @@ export default {
<style>
@import url('~assets/css/font.css');
@import url('//at.alicdn.com/t/font_2077629_a7sx3iejpat.css');
@import url('//at.alicdn.com/t/font_2077629_d6aa14tmbq.css');
html,
body,
......
......@@ -44,4 +44,39 @@ import request from '../../utils/request_zc'
method: 'post',
data
})
}
/**
* 出库申请 - 出库
*
*/
export function SuppliesStockOut(data) {
return request({
url: '/supplies/SetSuppliesApplyForStockOut',
method: 'post',
data
})
}
/**
* 获取仓库
*
*/
export function GetWareHouse(data) {
return request({
url: '/Supplies/GetWareHouseList',
method: 'post',
data
})
}
/**
* 设置出库申请状态
*
*/
export function SetSuppliesStockOutApplyForState(data) {
return request({
url: '/supplies/SetSuppliesStockOutApplyForState',
method: 'post',
data
})
}
\ No newline at end of file
......@@ -109,5 +109,19 @@ export function GetStudentInfo(data) {
})
}
/**
* 获取付款码
*
*/
export function GenerateOrder(data) {
return request({
url: '/WeChatPay/GenerateOrder',
method: 'post',
data
})
}
......@@ -101,17 +101,51 @@
</template>
</td>
<td style="border:none">{{item.GuestNum}}人</td>
<td style="border:none">{{item.Class_Price.toFixed(2)}}</td>
<td style="border:none">
<template v-if="item.Class_Price">
{{item.Class_Price.toFixed(2)}}
</template>
</td>
<td :style="{color:item.Class_Price!=item.Unit_Price?'var(--q-color-negative)':'','border':'none'}">
{{item.Unit_Price.toFixed(2)}}
<template v-if="item.Unit_Price">
{{item.Unit_Price.toFixed(2)}}
</template>
</td>
<td style="border:none">
<template v-if="item.PreferPrice">
{{item.PreferPrice.toFixed(2)}}
</template>
</td>
<td style="border:none">
<template v-if="item.Income">
{{item.Income.toFixed(2)}}
</template>
</td>
<td style="color:var(--q-color-negative);border:none">
<template v-if="item.DiscountMoney">
{{item.DiscountMoney.toFixed(2)}}
</template>
</td>
<td style="border:none">
<template v-if="item.LessPrice">
{{item.LessPrice.toFixed(2)}}
</template>
</td>
<td style="border:none">
<template v-if="item.Refund">
{{item.Refund.toFixed(2)}}
</template>
</td>
<td style="border:none">
<template v-if="item.PlatformTax">
{{item.PlatformTax.toFixed(2)}}
</template>
</td>
<td style="color:#2961FE;border:none">
<template v-if="item.DueInMoney">
{{item.DueInMoney.toFixed(2)}}
</template>
</td>
<td style="border:none">{{item.PreferPrice.toFixed(2)}}</td>
<td style="border:none">{{item.Income.toFixed(2)}}</td>
<td style="color:var(--q-color-negative);border:none">{{item.DiscountMoney.toFixed(2)}}</td>
<td style="border:none">{{item.LessPrice.toFixed(2)}}</td>
<td style="border:none">{{item.Refund.toFixed(2)}}</td>
<td style="border:none">{{item.PlatformTax.toFixed(2)}}</td>
<td style="color:#2961FE;border:none">{{item.DueInMoney.toFixed(2)}}</td>
<td style="border:none">
<div style="background: rgba(2, 196, 153, 0.2);width: 80px;border-radius: 2px;text-align: center">
<span style="color: #02C499">{{item.OrderStateName}}</span>
......@@ -457,17 +491,51 @@
<div style="font-weight: bold;color:#2961FE;" @click="getClassInfo(item)">{{item.ClassName}}</div>
</td>
<td style="border:none">{{item.GuestNum}}人</td>
<td style="border:none">{{item.Class_Price.toFixed(2)}}</td>
<td style="border:none">
<template v-if="item.Class_Price">
{{item.Class_Price.toFixed(2)}}
</template>
</td>
<td :style="{color:item.Class_Price!=item.Unit_Price?'var(--q-color-negative)':'','border':'none'}">
{{item.Unit_Price.toFixed(2)}}
<template v-if="item.Unit_Price">
{{item.Unit_Price.toFixed(2)}}
</template>
</td>
<td style="border:none">
<template v-if="item.PreferPrice">
{{item.PreferPrice.toFixed(2)}}
</template>
</td>
<td style="border:none">
<template v-if="item.Income">
{{item.Income.toFixed(2)}}
</template>
</td>
<td style="color:var(--q-color-negative);border:none">
<template v-if="item.DiscountMoney">
{{item.DiscountMoney.toFixed(2)}}
</template>
</td>
<td style="border:none">
<template v-if="item.LessPrice">
{{item.LessPrice.toFixed(2)}}
</template>
</td>
<td style="border:none">
<template v-if="item.Refund">
{{item.Refund.toFixed(2)}}
</template>
</td>
<td style="border:none">
<template v-if="item.PlatformTax">
{{item.PlatformTax.toFixed(2)}}
</template>
</td>
<td style="color:#2961FE;border:none">
<template v-if="item.DueInMoney">
{{item.DueInMoney.toFixed(2)}}
</template>
</td>
<td style="border:none">{{item.PreferPrice.toFixed(2)}}</td>
<td style="border:none">{{item.Income.toFixed(2)}}</td>
<td style="color:var(--q-color-negative);border:none">{{item.DiscountMoney.toFixed(2)}}</td>
<td style="border:none">{{item.LessPrice.toFixed(2)}}</td>
<td style="border:none">{{item.Refund.toFixed(2)}}</td>
<td style="border:none">{{item.PlatformTax.toFixed(2)}}</td>
<td style="color:#2961FE;border:none">{{item.DueInMoney.toFixed(2)}}</td>
<td style="border:none">
<div style="background: rgba(2, 196, 153, 0.2);width: 80px;border-radius: 2px;text-align: center">
<span style="color: #02C499">{{item.OrderStateName}}</span>
......
......@@ -188,16 +188,15 @@
padding: 0!important;
height:20px;
}
</style>
<template>
<div class="TcConfirmMain">
<div class="TCdiv_content" :class="dialogVisible?'CisHideen':''">
<div class="TCdiv_content">
<!-- 签字 -->
<div class="signSpan">
<div @click="isShowSignDiv=true,dialogVisible=true" :class="dialogVisible?'CisHideen':''" class="sign">
<div @click="goSign()" class="sign">
<span style="padding:0;"><i style="font-size:1.2rem" class="iconfont icon-qianming"></i></span>
<span style="font-size:1.2rem;margin-left:0.2rem;" v-if="msg.Sign==''||msg.Sign==null">签字</span>
<span style="font-size:1.2rem;margin-left:0.2rem;" v-if="dataList.Sign==''||dataList.Sign==null">签字</span>
<span style="font-size:1.2rem;margin-left:0.2rem;" v-else>重新签字</span>
</div>
</div>
......@@ -387,7 +386,7 @@
<span style="width:50px;display:inline-block;text-align:center;" class="comConInput">{{dataList.SealDateDay}}</span>
</p>
<div style="margin-top:100px;position:relative;">
乙方签字(盖章):<img v-if="dataList.Sign" :src="dataList.Sign" style="width:45px;position:absolute;top:-30px;" />
乙方签字(盖章):<img v-if="dataList.Sign" :src="dataList.Sign" style="width:80px;position:absolute;top:-15px;" />
</div>
<p style="margin:40px 0 30px 0;">
<span style="width:50px;display:inline-block;text-align:center;" class="comConInput">{{dataList.StuSignYear}}</span>
......@@ -769,46 +768,13 @@
<div class="comConInput" style="width:50px;"></div>
</div>
</div>
</div>
</div>
</div>
<div class="CliSignDiv" :class="dialogVisible?'isShowSign':''" @touchmove.prevent>
<div class="CliSignDiv" style="height:100%;background:#fff;z-index:100">
<div class="CanvasDiv">
<div class="dash">
<div id="canvas" style="position:relative;top:0;">
</div>
</div>
</div>
<div class="bottom" style="text-align:center;height:60px;line-height:60px">
<el-row>
<el-col :span="12">
<div style="width:100%;" @click="handelClearEl()">
<span style="font-size:1.2rem;color:rgb(36, 173, 229)" class="iconfont icon-zhongzhi"></span>
<span style="font-size:1.2rem">重置签名</span>
</div>
</el-col>
<el-col :span="12">
<div style="width:100%;" @click="handelSaveEl()">
<span style="font-size:1.2rem;color:rgb(36, 173, 229)" class="iconfont icon-dagou"></span>
<span style="font-size:1.2rem">完成签名</span>
</div>
</el-col>
</el-row>
</div>
</div>
</div>
</div>
</template>
<script>
import moment from 'moment'
let canvas = document.createElement("canvas");
let cxt = canvas.getContext("2d");
import {
SetEducationContractSign,
GetEducationContractInfo
} from '../api/sale/contract'
......@@ -817,13 +783,6 @@
return {
dataList: [],
dialogVisible: false,
linewidth: 5, //线条粗细,选填
color: "black", //线条颜色,选填
background: "#fff", //线条背景,选填
msg: {
ContractId: 0,
Sign: ''
},
gmsg: {
ContractId: 0
},
......@@ -836,7 +795,6 @@
this.gmsg.ContractId = this.$route.query.ContractId;
this.getList();
}
},
methods: {
//获取数据
......@@ -850,73 +808,18 @@
ChangeTab(num) {
this.ActiveTab = num;
},
getCanvas() {
let el = document.getElementById("canvas");
el.appendChild(canvas);
canvas.width = el.clientWidth;
canvas.height = el.clientHeight;
//cxt.fillStyle = this.background; //填充绘图的背景颜色
cxt.fillStyle = 'rgba(255, 255, 255, 0)';
cxt.fillRect(0, 0, canvas.width, canvas.height); //绘制“已填色”的矩形
cxt.strokeStyle = this.color; //笔触的颜色
cxt.lineCap = "round"; //线条末端线帽的样式
let linewidth = this.linewidth;
//开始绘制
canvas.addEventListener(
"touchstart",
function (e) {
cxt.beginPath();
cxt.lineWidth = linewidth; //当前线条的宽度,以像素计
cxt.moveTo(e.changedTouches[0].pageX, e.changedTouches[0].pageY);
}.bind(this),
false
);
//绘制中
canvas.addEventListener(
"touchmove",
function (e) {
cxt.lineTo(e.changedTouches[0].pageX, e.changedTouches[0].pageY);
cxt.stroke();
}.bind(this),
false
);
//结束绘制
canvas.addEventListener(
"touchend",
function () {
cxt.closePath();
}.bind(this),
false
);
},
handelClearEl() {
cxt.clearRect(0, 0, canvas.width, canvas.height);
},
handelSaveEl() {
let imgBase64 = canvas.toDataURL();
this.msg.Sign = imgBase64;
this.msg.ContractId = this.$route.query.ContractId;
this.SaveMsg();
},
//提交数据
SaveMsg() {
SetEducationContractSign(this.msg).then(res => {
if (res.Code == 1) {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '保存成功!',
position: 'top'
})
this.dialogVisible = false;
this.getList();
}
})
//跳转至合同签名
goSign(){
this.$router.push({
path: '/contractSign',
query: {
ContractId: this.gmsg.ContractId,
Money:this.dataList.Money
}
});
}
},
mounted() {
this.getCanvas();
}
};
......
......@@ -29,7 +29,7 @@
.Contract_TwoDiv {
width: 100%;
height: 28rem;
margin-top:50px;
margin-top: 50px;
background-color: #F3F9FC;
text-align: center;
color: #111111;
......@@ -38,25 +38,27 @@
.contractTotal {
font-size: 20px;
padding-top:50px;
padding-top: 50px;
}
.contractMoney {
font-size: 30px;
font-weight: bold;
margin-top:10px;
margin-top: 10px;
}
.contractTwoCode{
width:180px;
height:180px;
border:1px solid #d1d1d1;
margin:20px auto;
.contractTwoCode {
width: 180px;
height: 180px;
margin: 20px auto;
}
.TwoCodeRemind{
color:#888888;
font-size:20px;
margin-top:20px;
.TwoCodeRemind {
color: #888888;
font-size: 18px;
margin-top: 20px;
}
</style>
<template>
<div class="ContractPay">
......@@ -65,42 +67,71 @@
</div>
<div class="Contract_TwoDiv">
<div class="contractTotal">合同总价</div>
<div class="contractMoney">10000.00</div>
<div class="contractTwoCode">
<div class="contractMoney">{{Money}}</div>
<div class="contractTwoCode" id="qrcode" ref="qrcode">
</div>
<div class="TwoCodeRemind">长按识别上图收款码,完成支付</div>
</div>
</div>
</template>
<script>
import {
GenerateOrder
} from '../api/sale/contract'
import QRCode from 'qrcodejs2'
export default {
data() {
return {
dataList: [],
msg: {
contractId: 0
},
Money:0,
dataList: {}
};
},
created() {
},
mounted() {
if (this.$route.query.contractId) {
this.msg.contractId = this.$route.query.contractId;
this.getList();
}
if(this.$route.query.Money){
this.Money = this.$route.query.Money;
}
},
methods: {
//获取数据
getList() {
// GetEducationContractInfo(this.gmsg).then(res => {
// if (res.Code == 1) {
// this.dataList = res.Data;
// }
// })
GenerateOrder(this.msg).then(res => {
if (res.Code == 1) {
this.dataList = res.Data;
this.qrcode(this.dataList.code_url);
}
}).catch((e) => {
})
},
qrcode(code_url) {
let qrcode = new QRCode('qrcode', {
width: 180,
height: 180, // 高度
text: code_url // 二维码内容
})
},
//跳转至合同详情
goContractConfirm(){
goContractConfirm() {
this.$router.push({
path: 'contractConfirm',
query: {}
query: {
ContractId: this.msg.contractId
}
});
}
},
mounted() {}
};
</script>
<style>
.loadingtext {
transform: rotate(-90deg);
color: red;
}
.signature .Sign_Item {
-webkit-transform: rotate(-90deg);
}
.signature .Sign_Text {
text-align: center;
}
.signature .boardBox {
width: 100vw;
height: 90vh;
background: #f9f9f9;
}
.signature .sigfn_Bar {
box-sizing: border-box;
padding: 0rem 1rem;
display: flex;
width: 100vw;
height: 10vh;
background-color: #ffffff;
justify-content: space-around;
align-items: center;
}
.signature .icoDicv{
width:40px;
height:40px;
background: gray;
border-radius: 50%;
color:#fff;
text-align: center;
line-height: 40px;
}
.signature .icoDicv i{
font-size:25px;
}
</style>
<template>
<div class="signature" @touchmove.prevent>
<div class="boardBox" ref="boardBox">
<canvas ref="board" id="canvas" @touchstart="mStart" @touchmove="mMove" @touchend="mEnd"></canvas>
</div>
<div class="sigfn_Bar">
<div class="Sign_Item" @click="goback">
<div class="icoDicv">
<i class="iconfont icon-tuichu"></i>
</div>
<div class="Sign_Text">退出</div>
</div>
<div class="Sign_Item" @click="clearcanvas">
<div class="icoDicv">
<i class="iconfont icon-zhongzhi"></i>
</div>
<div class="Sign_Text">重绘</div>
</div>
<div class="Sign_Item" @click="getcanvas">
<div class="icoDicv" style="background:red;">
<i class="iconfont icon-xiazai"></i>
</div>
<div class="Sign_Text">保存</div>
</div>
</div>
</div>
</template>
<script>
import {
SetEducationContractSign
} from '../api/sale/contract'
export default {
data() {
return {
familysignatureurl: "",
basedata: "",
ctx: null,
point: {
x: 0,
y: 0,
},
moving: false, // 是否正在绘制中且移动
msg:{
ContractId: 0,
Sign:''
},
Money:0
};
},
mounted() {
let board = this.$refs.board; // 获取DOM
board.width = this.$refs.boardBox.offsetWidth; // 设置画布宽
board.height = this.$refs.boardBox.offsetHeight; // 设置画布高
this.ctx = board.getContext("2d"); // 二维绘图
this.ctx.strokeStyle = "#000"; // 颜色
this.ctx.lineWidth = 5; // 线条宽度
if (this.$route.query.ContractId) {
this.msg.ContractId = this.$route.query.ContractId;
}
if (this.$route.query.Money){
this.Money = this.$route.query.Money;
}
},
methods: {
// 触摸(开始)
mStart(e) {
let x = e.touches[0].clientX - e.target.offsetLeft,
y = e.touches[0].clientY - e.target.offsetTop; // 获取触摸点在画板(canvas)的坐标
this.point.x = x;
this.point.y = y;
this.ctx.beginPath();
this.moving = true;
},
// 滑动中...
mMove(e) {
if (this.moving) {
let x = e.touches[0].clientX - e.target.offsetLeft,
y = e.touches[0].clientY - e.target.offsetTop; // 获取触摸点在画板(canvas)的坐标
this.ctx.moveTo(this.point.x, this.point.y); // 把路径移动到画布中的指定点,不创建线条(起始点)
this.ctx.lineTo(x, y); // 添加一个新点,然后创建从该点到画布中最后指定点的线条,不创建线条
this.ctx.stroke(); // 绘制
(this.point.x = x), (this.point.y = y); // 重置点坐标为上一个坐标
}
},
// 滑动结束
mEnd() {
if (this.moving) {
this.ctx.closePath(); // 停止绘制
this.moving = false; // 关闭绘制开关
}
},
getcanvas() {
//绘画转图片
document.getElementById("canvas").toDataURL("image/png");
document.getElementById("canvas").toBlob(async (blobObj) => {
var file1 = new File([blobObj], "pic.png", {
type: blobObj.type,
lastModified: Date.now(),
});
this.convertImg(file1);
});
},
//旋转图片
convertImg(file) {
let _this = this;
var canvas1 = document.createElement("canvas");
var context1 = canvas1.getContext("2d");
var oReader = new FileReader();
oReader.readAsDataURL(file);
oReader.onload = function (e) {
var img = new Image();
img.src = e.target.result;
img.onload = function () {
// 图片原始尺寸
var originWidth = this.width;
var originHeight = this.height;
// 最大尺寸限制
var maxWidth = 1080,
maxHeight = 1080;
// 目标尺寸
var targetWidth = originWidth,
targetHeight = originHeight;
// 图片尺寸超过300x300的限制
if (originWidth > maxWidth || originHeight > maxHeight) {
if (originWidth / originHeight > maxWidth / maxHeight) {
targetWidth = maxWidth;
targetHeight = Math.round(
maxWidth * (originHeight / originWidth)
);
} else {
targetHeight = maxHeight;
targetWidth = Math.round(
maxHeight * (originWidth / originHeight)
);
}
}
var type = "image/jpeg";
// canvas对图片进行缩放
canvas1.width = targetHeight;
canvas1.height = targetWidth;
// 旋转90度
context1.translate(0, 0);
context1.rotate(Math.PI / 2);
// (0,-imgHeight) 从旋转原理图那里获得的起始点
// context.clearRect(0, -targetHeight, targetWidth, targetHeight);
context1.drawImage(img, 0, -targetHeight, targetWidth, targetHeight);
// 将canvas的透明背景设置成白色
var imageData = context1.getImageData(
0,
0,
canvas1.width,
canvas1.height
);
for (var i = 0; i < imageData.data.length; i += 4) {
// 当该像素是透明的,则设置成白色
if (imageData.data[i + 3] == 0) {
imageData.data[i] = 255;
imageData.data[i + 1] = 255;
imageData.data[i + 2] = 255;
imageData.data[i + 3] = 255;
}
}
context1.putImageData(imageData, 0, 0);
var dataurl = canvas1.toDataURL(type);
// _this.basedata = dataurl;
_this.msg.Sign = canvas1.toDataURL(type);
_this.SaveMsg();
};
};
},
//提交数据
SaveMsg() {
SetEducationContractSign(this.msg).then(res => {
if (res.Code == 1) {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '保存成功!',
position: 'top'
})
this.$router.push({
path: '/contractPay',
query: {
contractId: this.msg.ContractId,
Money: this.Money
}
});
}
})
},
//base64转Blob
base64ToBlob(base64Data) {
let arr = base64Data.split(","),
fileType = arr[0].match(/:(.*?);/)[1],
bstr = atob(arr[1]),
l = bstr.length,
u8Arr = new Uint8Array(l);
while (l--) {
u8Arr[l] = bstr.charCodeAt(l);
}
return new Blob([u8Arr], {
type: fileType,
});
},
//清除画布
clearcanvas() {
var c = document.getElementById("canvas");
var cxt = c.getContext("2d");
c.height = c.height;
this.ctx.lineWidth = 3;
},
//返回上一级
goback() {
this.$router.push({
path: '/contractConfirm',
query: {
ContractId: this.msg.ContractId
}
});
},
},
};
</script>
......@@ -683,7 +683,7 @@
<div class="contractInput" style="width:50px;">{{dataList.SealDateDay}}</div>
</div>
<div class="contractContent" style="margin-top:150px;position:relative;">
乙方签字(盖章):<img style="width:50px;position:absolute;top:-40px;" :src="dataList.Sign" />
乙方签字(盖章):<img style="width:80px;position:absolute;" :src="dataList.Sign" />
</div>
<div class="contractContent" style="text-align:right;margin-top:150px;">
<div class="contractInput" style="width:50px;">{{dataList.StuSignYear}}</div>
......
......@@ -1591,6 +1591,12 @@
this.msg.RB_Branch_Id = this.msg.RB_Branch_Id == 0 ? this.getLocalStorage().School_Id : this.msg
.RB_Branch_Id;
}
let userInfo = this.getLocalStorage()
if(!this.$route.query.companyID&&userInfo.Group_Id==100000){
this.msg.RB_Branch_Id = 4
}
if (this.orderObj && this.orderObj.companyIDList && this.orderObj.companyIDList.length > 0) {
this.msg.RB_Branch_Id = this.orderObj.companyIDList[0];
} else if (this.$route.query.companyID) {
......@@ -1982,6 +1988,7 @@
let second = myDate.getSeconds() < 10 ? "0" + myDate.getSeconds() : myDate.getSeconds();
this.timer = hour + ':' + minute + ':' + second;
// this.financeinfo_post_GetList(TCID);
if (this.$route.query.edit) {
// 编辑
this.msg.FrID = this.$route.query.FrID;
......
......@@ -1607,6 +1607,10 @@
this.msg.RB_Branch_Id = this.msg.RB_Branch_Id == 0 || this.msg.RB_Branch_Id == ParentCompanyId ? this
.getLocalStorage().School_Id : this.msg.RB_Branch_Id;
if(!this.$route.query.companyID&&userInfo.Group_Id==100000){
this.msg.RB_Branch_Id = 4
}
if (this.orderObj && this.orderObj.companyIDList && this.orderObj.companyIDList.length > 0) {
this.msg.RB_Branch_Id = this.orderObj.companyIDList[0];
} else if (this.$route.query.companyID) {
......@@ -1841,6 +1845,7 @@
this.timer = hour + ':' + minute + ':' + second;
this.IsUploadPic = this.$route.query.IsUploadPic;
this.msg.Cmd = this.$route.query.Cmd ? this.$route.query.Cmd : '';
this.getCompany();
if (this.$route.query.edit) {
this.edit = this.$route.query.edit;
......
......@@ -2,7 +2,7 @@
<div class="PropertyProcurementDetails padContent ck_detail" v-loading="pageLoad">
<div style="border-bottom: 1px solid #e2e4eb; padding-bottom: 10px;display:flex;align-items:center;height:50px">
<span class="pageTitle" style="float: inherit">耗材出库详情</span>
<el-button @click="backTo" round style="background-color:#089bab;color:#fff;margin-left:15px" >返回</el-button>
<el-button @click="backTo" round style="background-color:#2961fe;color:#fff;margin-left:15px" >返回</el-button>
</div>
<div
style="
......@@ -42,7 +42,8 @@
</p>
</el-col>
<el-col :span="12">
<el-button @click="SetPropertyProcurementStockIn" round style="float: right;background-color:#089bab;color:#fff" :disabled="GetDetail.StockOutStatus === 3">出库</el-button>
<el-button @click="setStockoutdig=true" round style="float: right;background-color:#2961fe;color:#fff;margin-left:10px" v-if="isSelfCreate" :disabled="GetDetail.AuditStatus == 2">修改状态</el-button>
<el-button @click="SetStockout" round style="float: right;background-color:#2961fe;color:#fff;" :disabled="GetDetail.AuditStatus != 2||GetDetail.StockOutStatus === 3">出库</el-button>
</el-col>
</el-row>
<el-row>
......@@ -72,11 +73,19 @@
<span>总数量 :</span>
<span>{{ GetDetail.TotalNumber }}</span>
</el-col>
<el-col :span="12" style="display:flex">
<span>仓库 :</span>
<div>
<q-select filled use-input input-debounce="0" option-value="Id"
option-label="Name" v-model="GetDetail.WareHouseId" :options="storeList" dense
emit-value map-options>
</q-select>
</div>
</el-col>
<el-col :span="24">
<span>备注 :</span>
<span>{{ GetDetail.AuditRemark }}</span>
<span>{{ GetDetail.Remark }}</span>
</el-col>
</el-row>
</el-col>
......@@ -119,7 +128,7 @@
<td>{{ item.Number }}</td>
<td>{{ item.StockOutNum }}</td>
<td>
<el-input v-model.number="item.WaitStockOutNum" type="number" @input="inputval(item.WaitStockOutNum,item.Number,index)" :min="0" :max="item.Number" :disabled="GetDetail.StockOutStatus === 3"></el-input>
<q-input v-model.number="item.WaitStockOutNum" type="number" @input="inputval(item.WaitStockOutNum,item.Number,index)" :min="0" :max="item.Number" :disable="GetDetail.AuditStatus != 2||GetDetail.StockOutStatus === 3"></q-input>
</td>
</tr>
......@@ -129,36 +138,97 @@
</tbody>
</table>
</div>
<q-dialog v-model="setStockoutdig">
<q-card class="q-px-md" style="width:1000px;">
<q-card-section class="row items-center q-pb-none">
<div class="text-h6">修改状态</div>
<q-space />
<q-btn icon="close" flat round dense v-close-popup />
</q-card-section>
<div class="col row wrap q-mr-lg q-col-gutter-md">
<div class="col-6 q-mt-lg">
<q-select filled use-input input-debounce="0" option-value="id" label="类型"
option-label="name" v-model="stateMsg.Type" :options="stateOption"
emit-value map-options>
</q-select>
</div>
</div>
<div class="col row wrap q-mr-lg q-col-gutter-md">
<div class="col-12 q-mt-lg">
<q-input v-model="stateMsg.Remark" label="备注" type="textarea" filled></q-input>
</div>
</div>
<div class="col row wrap q-mr-lg q-col-gutter-md q-mb-lg">
<div class="col-12 q-mt-lg" >
<q-btn color="primary" label="提交" style="float:right" class="q-ml-sm" @click="SetStockoutState"></q-btn>
<q-btn text-color="primary" label="取消" style="float:right" @click="setStockoutdig=false"></q-btn>
</div>
</div>
</q-card>
</q-dialog>
</div>
</template>
<script>
import {GetSuppliesStockOutApplyForDetail} from '../../api/sale/StockOutApplyFor'
import {GetSuppliesStockOutApplyForDetail,SuppliesStockOut,GetWareHouse,SetSuppliesStockOutApplyForState} from '../../api/sale/StockOutApplyFor'
export default {
data() {
return {
ApplyForId: 0,
isSelfCreate:false,//出库单是否是登录人创建
images: [],
imageOptions: {
navbar: false,
title: false,
},
pageLoad: false,
storeList:[],
GetDetail: {
WareHouseId:0,
DetailList: [
],
},
uploadImgList: [],
setStockoutdig:false,
stateMsg:{
ApplyForId:0,
Type:1,
Remark:"",
},
stateOption:[
{
id:1,
name:"取消"
},
{
id:2,
name:"审核通过"
},
{
id:3,
name:"审核驳回"
}
]
};
},
created() {
this.ApplyForId = this.$route.query.Id;
this.stateMsg.ApplyForId=this.$route.query.Id;
this.getDetail();
this.getWareHouse();
},
mounted() {
},
mounted() {},
methods: {
getWareHouse(){
GetWareHouse({}).then(res=>{
this.storeList=res.data.data
})
},
inputval(val,maxVal,index){
this.$forceUpdate();
if(val>maxVal){
......@@ -172,45 +242,55 @@ export default {
},
getDetail() {
this.pageLoad = true;
let that=this
GetSuppliesStockOutApplyForDetail({ApplyForId:this.ApplyForId}).then(res=>{
this.pageLoad = false;
if(res.data.resultCode===1){
console.log(res.data.data)
this.GetDetail=res.data.data
this.GetDetail.DetailList.forEach(item=>{
item.WaitStockOutNum=item.StockOutNum
})
that.isSelf();
}
})
},
//采购单入
SetPropertyProcurementStockIn() {
// let msg = {
// ProcurementId: this.GetDetail.Id,
// StockInDate: this.GetDetail.BuyDate,
// DetailList: [],
// };
// this.GetDetail.DetailList.map((item) => {
// let obj = {
// Id:item.Id,
// MaterialId: item.MaterialId,
// WaitStockInNum: item.WaitStockInNum,
// };
// msg.DetailList.push(obj);
// });
// this.apiJavaPost(
// "/api/supplies/SetSuppliesProcurementStockIn",
// msg,
// (res) => {
// if (res.data.resultCode === 1) {
// this.Success(res.data.message)
// } else {
// this.Error(res.data.message);
// }
// },
// null
// );
//
SetStockout() {
let msg = {
Id: this.GetDetail.Id,
WareHouseId: this.GetDetail.WareHouseId,
DetailList: [],
};
this.GetDetail.DetailList.map((item) => {
let obj = {
Id:item.Id,
WaitStockOutNum:item.WaitStockOutNum
};
msg.DetailList.push(obj);
});
SuppliesStockOut(msg).then(res=>{
})
},
SetStockoutState(){
SetSuppliesStockOutApplyForState(this.stateMsg).then(res=>{
if(res.data.resultCode===1){
this.Success(res.data.message)
}else {
this.Error(res.data.message);
}
})
},
//判断登录人是否是创建人
isSelf(){
let loginId= JSON.parse(localStorage.getItem('loginUserInfo')).data.Id
if(this.GetDetail.CreateBy===loginId){
this.isSelfCreate=true
}else{
this.isSelfCreate=false
}
}
},
};
</script>
......
......@@ -163,7 +163,7 @@
<template v-slot:top="props">
<div class="col-2 q-table__title">出库管理</div>
<q-space />
<q-btn color="primary" size="11px" @click="showAdd">新增出库单</q-btn>
<q-btn color="accent" size="11px" icon="add" @click="showAdd">新增出库单</q-btn>
</template>
<template v-slot:body-cell-StockOutStatus="props">
<q-td :props="props">
......@@ -422,6 +422,9 @@
// 显示新增出库单
showAdd(){
this.showaddStockOut=true
},
closePop(){
this.showaddStockOut=false
}
}
}
......
......@@ -40,12 +40,12 @@
<div class="row wrap">
<q-input clearable filled class="col-6 q-pb-lg q-pr-lg" v-model="addMsg.GuestName" ref="GuestName" label="姓名"
:rules="[val => !!val || '姓名']" />
<q-input clearable filled class="col-6 q-pb-lg" v-model="addMsg.Profession" label="职业"
:rules="[val => !!val || '职业']" />
<div class="col-6 q-pb-lg q-pr-lg">
<q-radio v-model="addMsg.Sex" val="1" label="男" />
<q-radio v-model="addMsg.Sex" val="2" label="女" />
</div>
<q-input clearable filled class="col-6 q-pb-lg q-pr-lg" v-model="addMsg.Profession" label="职业"
:rules="[val => !!val || '职业']" />
<q-input filled v-model="addMsg.BirthDate" :rules="[val => !!val || '请选择出生日期']" class="col-6 q-pb-lg" ref="BirthDate" mask="date" label="出生日期">
<template v-slot:append>
......@@ -73,6 +73,13 @@
<q-select class="col-6 q-pb-lg" standout="bg-primary text-white" option-value="Id" option-label="Name"
v-model="addMsg.GuestSource" :options="OFList" emit-value map-options label="客人来源" />
<q-input clearable filled class="col-6 q-pb-lg q-pr-lg" v-model="addMsg.ContactAddress" label="现居住地址" />
<div class="col-6 q-pr-lg q-pb-lg">
<q-uploader style="display: inline-block;height: 150px;max-width: 100%; background-repeat:no-repeat"
:style="{'background-image':'url(' + addMsg.StuIcon + ')'}" max-files="1" hide-upload-btn
@rejected="onRejected" label="教师头像" :max-file-size="5*1024*1024" accept=".jpg, image/*" auto-upload
:factory="uploadFile" no-thumbnails>
</q-uploader>
</div>
</div>
</q-card-section>
<q-card-section class="q-pt-none" v-if="msg.SourceId>0">
......@@ -104,6 +111,13 @@
<q-input clearable filled class="col-6 q-pb-lg" v-model="addMsg.VolunteerMajor" label="志愿专业" />
<q-input clearable filled class="col-6 q-pb-lg q-pr-lg" v-model="addMsg.Price" label="价格"
@keyup.native="checkPrice(addMsg,'Price')" />
<div class="col-6 q-pr-lg q-pb-lg">
<q-uploader style="display: inline-block;height: 150px;max-width: 100%; background-repeat:no-repeat"
:style="{'background-image':'url(' + addMsg.StuIcon + ')'}" max-files="1" hide-upload-btn
@rejected="onRejected" label="教师头像" :max-file-size="5*1024*1024" accept=".jpg, image/*" auto-upload
:factory="uploadFile" no-thumbnails>
</q-uploader>
</div>
</div>
</q-card-section>
<div class="text-caption q-mb-lg q-px-md text-grey-6" v-if="msg.ClassId>0">附加信息</div>
......@@ -141,6 +155,10 @@
setOrderGuestInfo, //保存
delOrderGuestInfo, //删除
} from '../../api/sale/sale'
import {
UploadSelfFile,
} from '../../api/common/common'
export default {
data() {
return {
......@@ -280,6 +298,7 @@
StudyRemark: "", //留学就业备注
BirthDate: "", //出生日期
TotalHours: 0, //总课时
StuIcon:'' //头像
},
GBList: [], //日语基础列表
GEList: [], //学历列表
......@@ -428,24 +447,7 @@
}).catch(() => {
this.saveLoading = false
})
}
// if (this.addMsg.GuestName == '') {
// this.$q.notify({
// type: 'negative',
// position: "top",
// message: `请输入客人姓名`
// })
// return;
// }
// if (this.addMsg.Basics == '') {
// this.$q.notify({
// type: 'negative',
// position: "top",
// message: `请选择语言基础`
// })
// return;
// }
}
},
//初始化数据
initialize() {
......@@ -506,6 +508,7 @@
this.addMsg.BirthDate = item.BirthDate;
this.addMsg.TotalHours = item.TotalHours;
this.addMsg.StuIcon = item.StuIcon;
this.persistent = true;
},
//删除学员
......@@ -534,7 +537,21 @@
}
})
}).onCancel(() => {});
}
},
onRejected(rejectedEntries) {
this.$q.notify({
type: 'negative',
position: "top",
message: `文件验证失败,请重新上传`
})
},
uploadFile(files) {
UploadSelfFile('studentIcon', files[0], res => {
if (res.Code == 1) {
this.addMsg.StuIcon = res.FileUrl;
}
})
},
}
}
......
......@@ -731,6 +731,11 @@ const routes = [{
component: () =>
import("pages/contractConfirm.vue")
},
{
path: '/contractSign', //合同签名页面
component: () =>
import("pages/contractSign.vue")
},
{
path: "/contractPay",
component: () =>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment