Commit dae124b3 authored by 黄奎's avatar 黄奎
parents 35e1faa7 75390670
...@@ -12,7 +12,7 @@ export default { ...@@ -12,7 +12,7 @@ export default {
<style> <style>
@import url('~assets/css/font.css'); @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, html,
body, body,
......
...@@ -44,4 +44,39 @@ import request from '../../utils/request_zc' ...@@ -44,4 +44,39 @@ import request from '../../utils/request_zc'
method: 'post', method: 'post',
data 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) { ...@@ -109,5 +109,19 @@ export function GetStudentInfo(data) {
}) })
} }
/**
* 获取付款码
*
*/
export function GenerateOrder(data) {
return request({
url: '/WeChatPay/GenerateOrder',
method: 'post',
data
})
}
...@@ -101,17 +101,51 @@ ...@@ -101,17 +101,51 @@
</template> </template>
</td> </td>
<td style="border:none">{{item.GuestNum}}人</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'}"> <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>
<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"> <td style="border:none">
<div style="background: rgba(2, 196, 153, 0.2);width: 80px;border-radius: 2px;text-align: center"> <div style="background: rgba(2, 196, 153, 0.2);width: 80px;border-radius: 2px;text-align: center">
<span style="color: #02C499">{{item.OrderStateName}}</span> <span style="color: #02C499">{{item.OrderStateName}}</span>
...@@ -457,17 +491,51 @@ ...@@ -457,17 +491,51 @@
<div style="font-weight: bold;color:#2961FE;" @click="getClassInfo(item)">{{item.ClassName}}</div> <div style="font-weight: bold;color:#2961FE;" @click="getClassInfo(item)">{{item.ClassName}}</div>
</td> </td>
<td style="border:none">{{item.GuestNum}}人</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'}"> <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>
<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"> <td style="border:none">
<div style="background: rgba(2, 196, 153, 0.2);width: 80px;border-radius: 2px;text-align: center"> <div style="background: rgba(2, 196, 153, 0.2);width: 80px;border-radius: 2px;text-align: center">
<span style="color: #02C499">{{item.OrderStateName}}</span> <span style="color: #02C499">{{item.OrderStateName}}</span>
......
...@@ -188,16 +188,15 @@ ...@@ -188,16 +188,15 @@
padding: 0!important; padding: 0!important;
height:20px; height:20px;
} }
</style> </style>
<template> <template>
<div class="TcConfirmMain"> <div class="TcConfirmMain">
<div class="TCdiv_content" :class="dialogVisible?'CisHideen':''"> <div class="TCdiv_content">
<!-- 签字 --> <!-- 签字 -->
<div class="signSpan"> <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="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> <span style="font-size:1.2rem;margin-left:0.2rem;" v-else>重新签字</span>
</div> </div>
</div> </div>
...@@ -387,7 +386,7 @@ ...@@ -387,7 +386,7 @@
<span style="width:50px;display:inline-block;text-align:center;" class="comConInput">{{dataList.SealDateDay}}</span> <span style="width:50px;display:inline-block;text-align:center;" class="comConInput">{{dataList.SealDateDay}}</span>
</p> </p>
<div style="margin-top:100px;position:relative;"> <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> </div>
<p style="margin:40px 0 30px 0;"> <p style="margin:40px 0 30px 0;">
<span style="width:50px;display:inline-block;text-align:center;" class="comConInput">{{dataList.StuSignYear}}</span> <span style="width:50px;display:inline-block;text-align:center;" class="comConInput">{{dataList.StuSignYear}}</span>
...@@ -769,46 +768,13 @@ ...@@ -769,46 +768,13 @@
<div class="comConInput" style="width:50px;"></div> <div class="comConInput" style="width:50px;"></div>
</div> </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>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import moment from 'moment'
let canvas = document.createElement("canvas");
let cxt = canvas.getContext("2d");
import { import {
SetEducationContractSign,
GetEducationContractInfo GetEducationContractInfo
} from '../api/sale/contract' } from '../api/sale/contract'
...@@ -817,13 +783,6 @@ ...@@ -817,13 +783,6 @@
return { return {
dataList: [], dataList: [],
dialogVisible: false, dialogVisible: false,
linewidth: 5, //线条粗细,选填
color: "black", //线条颜色,选填
background: "#fff", //线条背景,选填
msg: {
ContractId: 0,
Sign: ''
},
gmsg: { gmsg: {
ContractId: 0 ContractId: 0
}, },
...@@ -836,7 +795,6 @@ ...@@ -836,7 +795,6 @@
this.gmsg.ContractId = this.$route.query.ContractId; this.gmsg.ContractId = this.$route.query.ContractId;
this.getList(); this.getList();
} }
}, },
methods: { methods: {
//获取数据 //获取数据
...@@ -850,73 +808,18 @@ ...@@ -850,73 +808,18 @@
ChangeTab(num) { ChangeTab(num) {
this.ActiveTab = num; this.ActiveTab = num;
}, },
getCanvas() { //跳转至合同签名
let el = document.getElementById("canvas"); goSign(){
el.appendChild(canvas); this.$router.push({
canvas.width = el.clientWidth; path: '/contractSign',
canvas.height = el.clientHeight; query: {
//cxt.fillStyle = this.background; //填充绘图的背景颜色 ContractId: this.gmsg.ContractId,
cxt.fillStyle = 'rgba(255, 255, 255, 0)'; Money:this.dataList.Money
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();
}
})
} }
}, },
mounted() { mounted() {
this.getCanvas();
} }
}; };
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
.Contract_TwoDiv { .Contract_TwoDiv {
width: 100%; width: 100%;
height: 28rem; height: 28rem;
margin-top:50px; margin-top: 50px;
background-color: #F3F9FC; background-color: #F3F9FC;
text-align: center; text-align: center;
color: #111111; color: #111111;
...@@ -38,25 +38,27 @@ ...@@ -38,25 +38,27 @@
.contractTotal { .contractTotal {
font-size: 20px; font-size: 20px;
padding-top:50px; padding-top: 50px;
} }
.contractMoney { .contractMoney {
font-size: 30px; font-size: 30px;
font-weight: bold; font-weight: bold;
margin-top:10px; margin-top: 10px;
} }
.contractTwoCode{
width:180px; .contractTwoCode {
height:180px; width: 180px;
border:1px solid #d1d1d1; height: 180px;
margin:20px auto; margin: 20px auto;
} }
.TwoCodeRemind{
color:#888888; .TwoCodeRemind {
font-size:20px; color: #888888;
margin-top:20px; font-size: 18px;
margin-top: 20px;
} }
</style> </style>
<template> <template>
<div class="ContractPay"> <div class="ContractPay">
...@@ -65,42 +67,71 @@ ...@@ -65,42 +67,71 @@
</div> </div>
<div class="Contract_TwoDiv"> <div class="Contract_TwoDiv">
<div class="contractTotal">合同总价</div> <div class="contractTotal">合同总价</div>
<div class="contractMoney">10000.00</div> <div class="contractMoney">{{Money}}</div>
<div class="contractTwoCode"> <div class="contractTwoCode" id="qrcode" ref="qrcode">
</div> </div>
<div class="TwoCodeRemind">长按识别上图收款码,完成支付</div> <div class="TwoCodeRemind">长按识别上图收款码,完成支付</div>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import {
GenerateOrder
} from '../api/sale/contract'
import QRCode from 'qrcodejs2'
export default { export default {
data() { data() {
return { return {
dataList: [], msg: {
contractId: 0
},
Money:0,
dataList: {}
}; };
}, },
created() { 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: { methods: {
//获取数据 //获取数据
getList() { getList() {
// GetEducationContractInfo(this.gmsg).then(res => { GenerateOrder(this.msg).then(res => {
// if (res.Code == 1) { if (res.Code == 1) {
// this.dataList = res.Data; 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({ this.$router.push({
path: 'contractConfirm', path: 'contractConfirm',
query: {} query: {
ContractId: this.msg.contractId
}
}); });
} }
}, },
mounted() {}
}; };
</script> </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 @@ ...@@ -683,7 +683,7 @@
<div class="contractInput" style="width:50px;">{{dataList.SealDateDay}}</div> <div class="contractInput" style="width:50px;">{{dataList.SealDateDay}}</div>
</div> </div>
<div class="contractContent" style="margin-top:150px;position:relative;"> <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>
<div class="contractContent" style="text-align:right;margin-top:150px;"> <div class="contractContent" style="text-align:right;margin-top:150px;">
<div class="contractInput" style="width:50px;">{{dataList.StuSignYear}}</div> <div class="contractInput" style="width:50px;">{{dataList.StuSignYear}}</div>
......
...@@ -1591,6 +1591,12 @@ ...@@ -1591,6 +1591,12 @@
this.msg.RB_Branch_Id = this.msg.RB_Branch_Id == 0 ? this.getLocalStorage().School_Id : this.msg this.msg.RB_Branch_Id = this.msg.RB_Branch_Id == 0 ? this.getLocalStorage().School_Id : this.msg
.RB_Branch_Id; .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) { if (this.orderObj && this.orderObj.companyIDList && this.orderObj.companyIDList.length > 0) {
this.msg.RB_Branch_Id = this.orderObj.companyIDList[0]; this.msg.RB_Branch_Id = this.orderObj.companyIDList[0];
} else if (this.$route.query.companyID) { } else if (this.$route.query.companyID) {
...@@ -1982,6 +1988,7 @@ ...@@ -1982,6 +1988,7 @@
let second = myDate.getSeconds() < 10 ? "0" + myDate.getSeconds() : myDate.getSeconds(); let second = myDate.getSeconds() < 10 ? "0" + myDate.getSeconds() : myDate.getSeconds();
this.timer = hour + ':' + minute + ':' + second; this.timer = hour + ':' + minute + ':' + second;
// this.financeinfo_post_GetList(TCID); // this.financeinfo_post_GetList(TCID);
if (this.$route.query.edit) { if (this.$route.query.edit) {
// 编辑 // 编辑
this.msg.FrID = this.$route.query.FrID; this.msg.FrID = this.$route.query.FrID;
......
...@@ -1607,6 +1607,10 @@ ...@@ -1607,6 +1607,10 @@
this.msg.RB_Branch_Id = this.msg.RB_Branch_Id == 0 || this.msg.RB_Branch_Id == ParentCompanyId ? this 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; .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) { if (this.orderObj && this.orderObj.companyIDList && this.orderObj.companyIDList.length > 0) {
this.msg.RB_Branch_Id = this.orderObj.companyIDList[0]; this.msg.RB_Branch_Id = this.orderObj.companyIDList[0];
} else if (this.$route.query.companyID) { } else if (this.$route.query.companyID) {
...@@ -1841,6 +1845,7 @@ ...@@ -1841,6 +1845,7 @@
this.timer = hour + ':' + minute + ':' + second; this.timer = hour + ':' + minute + ':' + second;
this.IsUploadPic = this.$route.query.IsUploadPic; this.IsUploadPic = this.$route.query.IsUploadPic;
this.msg.Cmd = this.$route.query.Cmd ? this.$route.query.Cmd : ''; this.msg.Cmd = this.$route.query.Cmd ? this.$route.query.Cmd : '';
this.getCompany(); this.getCompany();
if (this.$route.query.edit) { if (this.$route.query.edit) {
this.edit = this.$route.query.edit; this.edit = this.$route.query.edit;
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div class="PropertyProcurementDetails padContent ck_detail" v-loading="pageLoad"> <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"> <div style="border-bottom: 1px solid #e2e4eb; padding-bottom: 10px;display:flex;align-items:center;height:50px">
<span class="pageTitle" style="float: inherit">耗材出库详情</span> <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>
<div <div
style=" style="
...@@ -42,7 +42,8 @@ ...@@ -42,7 +42,8 @@
</p> </p>
</el-col> </el-col>
<el-col :span="12"> <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-col>
</el-row> </el-row>
<el-row> <el-row>
...@@ -72,11 +73,19 @@ ...@@ -72,11 +73,19 @@
<span>总数量 :</span> <span>总数量 :</span>
<span>{{ GetDetail.TotalNumber }}</span> <span>{{ GetDetail.TotalNumber }}</span>
</el-col> </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"> <el-col :span="24">
<span>备注 :</span> <span>备注 :</span>
<span>{{ GetDetail.AuditRemark }}</span> <span>{{ GetDetail.Remark }}</span>
</el-col> </el-col>
</el-row> </el-row>
</el-col> </el-col>
...@@ -119,7 +128,7 @@ ...@@ -119,7 +128,7 @@
<td>{{ item.Number }}</td> <td>{{ item.Number }}</td>
<td>{{ item.StockOutNum }}</td> <td>{{ item.StockOutNum }}</td>
<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> </td>
</tr> </tr>
...@@ -129,36 +138,97 @@ ...@@ -129,36 +138,97 @@
</tbody> </tbody>
</table> </table>
</div> </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> </div>
</template> </template>
<script> <script>
import {GetSuppliesStockOutApplyForDetail} from '../../api/sale/StockOutApplyFor' import {GetSuppliesStockOutApplyForDetail,SuppliesStockOut,GetWareHouse,SetSuppliesStockOutApplyForState} from '../../api/sale/StockOutApplyFor'
export default { export default {
data() { data() {
return { return {
ApplyForId: 0, ApplyForId: 0,
isSelfCreate:false,//出库单是否是登录人创建
images: [], images: [],
imageOptions: { imageOptions: {
navbar: false, navbar: false,
title: false, title: false,
}, },
pageLoad: false, pageLoad: false,
storeList:[],
GetDetail: { GetDetail: {
WareHouseId:0,
DetailList: [ DetailList: [
], ],
}, },
uploadImgList: [], uploadImgList: [],
setStockoutdig:false,
stateMsg:{
ApplyForId:0,
Type:1,
Remark:"",
},
stateOption:[
{
id:1,
name:"取消"
},
{
id:2,
name:"审核通过"
},
{
id:3,
name:"审核驳回"
}
]
}; };
}, },
created() { created() {
this.ApplyForId = this.$route.query.Id; this.ApplyForId = this.$route.query.Id;
this.stateMsg.ApplyForId=this.$route.query.Id;
this.getDetail(); this.getDetail();
this.getWareHouse();
},
mounted() {
}, },
mounted() {},
methods: { methods: {
getWareHouse(){
GetWareHouse({}).then(res=>{
this.storeList=res.data.data
})
},
inputval(val,maxVal,index){ inputval(val,maxVal,index){
this.$forceUpdate(); this.$forceUpdate();
if(val>maxVal){ if(val>maxVal){
...@@ -172,45 +242,55 @@ export default { ...@@ -172,45 +242,55 @@ export default {
}, },
getDetail() { getDetail() {
this.pageLoad = true; this.pageLoad = true;
let that=this
GetSuppliesStockOutApplyForDetail({ApplyForId:this.ApplyForId}).then(res=>{ GetSuppliesStockOutApplyForDetail({ApplyForId:this.ApplyForId}).then(res=>{
this.pageLoad = false; this.pageLoad = false;
if(res.data.resultCode===1){ if(res.data.resultCode===1){
console.log(res.data.data)
this.GetDetail=res.data.data this.GetDetail=res.data.data
this.GetDetail.DetailList.forEach(item=>{ this.GetDetail.DetailList.forEach(item=>{
item.WaitStockOutNum=item.StockOutNum item.WaitStockOutNum=item.StockOutNum
}) })
that.isSelf();
} }
}) })
}, },
//采购单入 //
SetPropertyProcurementStockIn() { SetStockout() {
// let msg = { let msg = {
// ProcurementId: this.GetDetail.Id, Id: this.GetDetail.Id,
// StockInDate: this.GetDetail.BuyDate, WareHouseId: this.GetDetail.WareHouseId,
// DetailList: [], DetailList: [],
// }; };
// this.GetDetail.DetailList.map((item) => { this.GetDetail.DetailList.map((item) => {
// let obj = { let obj = {
// Id:item.Id, Id:item.Id,
// MaterialId: item.MaterialId, WaitStockOutNum:item.WaitStockOutNum
// WaitStockInNum: item.WaitStockInNum, };
// }; msg.DetailList.push(obj);
// msg.DetailList.push(obj); });
// }); SuppliesStockOut(msg).then(res=>{
// this.apiJavaPost(
// "/api/supplies/SetSuppliesProcurementStockIn", })
// msg,
// (res) => { },
// if (res.data.resultCode === 1) { SetStockoutState(){
// this.Success(res.data.message) SetSuppliesStockOutApplyForState(this.stateMsg).then(res=>{
// } else { if(res.data.resultCode===1){
// this.Error(res.data.message); this.Success(res.data.message)
// } }else {
// }, this.Error(res.data.message);
// null }
// ); })
}, },
//判断登录人是否是创建人
isSelf(){
let loginId= JSON.parse(localStorage.getItem('loginUserInfo')).data.Id
if(this.GetDetail.CreateBy===loginId){
this.isSelfCreate=true
}else{
this.isSelfCreate=false
}
}
}, },
}; };
</script> </script>
......
...@@ -163,7 +163,7 @@ ...@@ -163,7 +163,7 @@
<template v-slot:top="props"> <template v-slot:top="props">
<div class="col-2 q-table__title">出库管理</div> <div class="col-2 q-table__title">出库管理</div>
<q-space /> <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>
<template v-slot:body-cell-StockOutStatus="props"> <template v-slot:body-cell-StockOutStatus="props">
<q-td :props="props"> <q-td :props="props">
...@@ -422,6 +422,9 @@ ...@@ -422,6 +422,9 @@
// 显示新增出库单 // 显示新增出库单
showAdd(){ showAdd(){
this.showaddStockOut=true this.showaddStockOut=true
},
closePop(){
this.showaddStockOut=false
} }
} }
} }
......
...@@ -40,12 +40,12 @@ ...@@ -40,12 +40,12 @@
<div class="row wrap"> <div class="row wrap">
<q-input clearable filled class="col-6 q-pb-lg q-pr-lg" v-model="addMsg.GuestName" ref="GuestName" label="姓名" <q-input clearable filled class="col-6 q-pb-lg q-pr-lg" v-model="addMsg.GuestName" ref="GuestName" label="姓名"
:rules="[val => !!val || '姓名']" /> :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"> <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="1" label="男" />
<q-radio v-model="addMsg.Sex" val="2" label="女" /> <q-radio v-model="addMsg.Sex" val="2" label="女" />
</div> </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="出生日期"> <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> <template v-slot:append>
...@@ -73,6 +73,13 @@ ...@@ -73,6 +73,13 @@
<q-select class="col-6 q-pb-lg" standout="bg-primary text-white" option-value="Id" option-label="Name" <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="客人来源" /> 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="现居住地址" /> <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> </div>
</q-card-section> </q-card-section>
<q-card-section class="q-pt-none" v-if="msg.SourceId>0"> <q-card-section class="q-pt-none" v-if="msg.SourceId>0">
...@@ -104,6 +111,13 @@ ...@@ -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" v-model="addMsg.VolunteerMajor" label="志愿专业" />
<q-input clearable filled class="col-6 q-pb-lg q-pr-lg" v-model="addMsg.Price" label="价格" <q-input clearable filled class="col-6 q-pb-lg q-pr-lg" v-model="addMsg.Price" label="价格"
@keyup.native="checkPrice(addMsg,'Price')" /> @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> </div>
</q-card-section> </q-card-section>
<div class="text-caption q-mb-lg q-px-md text-grey-6" v-if="msg.ClassId>0">附加信息</div> <div class="text-caption q-mb-lg q-px-md text-grey-6" v-if="msg.ClassId>0">附加信息</div>
...@@ -141,6 +155,10 @@ ...@@ -141,6 +155,10 @@
setOrderGuestInfo, //保存 setOrderGuestInfo, //保存
delOrderGuestInfo, //删除 delOrderGuestInfo, //删除
} from '../../api/sale/sale' } from '../../api/sale/sale'
import {
UploadSelfFile,
} from '../../api/common/common'
export default { export default {
data() { data() {
return { return {
...@@ -280,6 +298,7 @@ ...@@ -280,6 +298,7 @@
StudyRemark: "", //留学就业备注 StudyRemark: "", //留学就业备注
BirthDate: "", //出生日期 BirthDate: "", //出生日期
TotalHours: 0, //总课时 TotalHours: 0, //总课时
StuIcon:'' //头像
}, },
GBList: [], //日语基础列表 GBList: [], //日语基础列表
GEList: [], //学历列表 GEList: [], //学历列表
...@@ -428,24 +447,7 @@ ...@@ -428,24 +447,7 @@
}).catch(() => { }).catch(() => {
this.saveLoading = false 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() { initialize() {
...@@ -506,6 +508,7 @@ ...@@ -506,6 +508,7 @@
this.addMsg.BirthDate = item.BirthDate; this.addMsg.BirthDate = item.BirthDate;
this.addMsg.TotalHours = item.TotalHours; this.addMsg.TotalHours = item.TotalHours;
this.addMsg.StuIcon = item.StuIcon;
this.persistent = true; this.persistent = true;
}, },
//删除学员 //删除学员
...@@ -534,7 +537,21 @@ ...@@ -534,7 +537,21 @@
} }
}) })
}).onCancel(() => {}); }).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 = [{ ...@@ -731,6 +731,11 @@ const routes = [{
component: () => component: () =>
import("pages/contractConfirm.vue") import("pages/contractConfirm.vue")
}, },
{
path: '/contractSign', //合同签名页面
component: () =>
import("pages/contractSign.vue")
},
{ {
path: "/contractPay", path: "/contractPay",
component: () => 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