Commit 379c7156 authored by 吴春's avatar 吴春
parents 9d4249e8 d663bd9f
......@@ -47,7 +47,7 @@ module.exports = function(ctx) {
vueRouterMode: 'history', // available values: 'hash', 'history'
env: ctx.dev ? {
API: 'http://localhost:5001/api',
API: 'http://localhost:8300/api',
// API: 'http://192.168.10.128:8300/api',
// API: 'https://eduapi.oytour.com/api',
API_ZC: 'http://192.168.5.238:8087/api',
......
......@@ -26,10 +26,9 @@ export function CommonConfig() {
return {
FileConfig: {
FileUrl: 'http://192.168.5.214:8130', //本地服务器文件预览地址
UploadUrl:'http://192.168.5.214:8120'
UploadUrl: 'http://192.168.5.214:8120'
}
}
}
/**
......@@ -53,7 +52,7 @@ export function UploadSelfFile(path, file, callback, configObj) {
uploadLoadding.show({
message: '正在上传文件,请稍后...'
})
if (uploadConfig) {
switch (uploadConfig.StoreType) {
//上传文件到腾讯云
......@@ -174,7 +173,6 @@ export function UploadBolbFileToSystem(uploadConfig, fileFullPath, fileObj, uplo
ExtFile: tempArray
}
if (successCall) {
successCall(uploadResult);
}
}
......@@ -290,60 +288,72 @@ export function UploadFileToSystem(uploadConfig, fileFullPath, fileObj, uploadLo
* 上传文件到阿里云
*/
export function UploadFileToALi(uploadConfig, fileFullPath, fileObj, uploadLoadding, successCall) {
var OSS = require('ali-oss');
var oss = new OSS({
region: uploadConfig.Region,
accessKeyId: uploadConfig.SecretId,
accessKeySecret: uploadConfig.SecretKey,
bucket: uploadConfig.Bucket
})
var result = oss.multipartUpload(fileFullPath, fileObj, {
progress: function* (p) {}
}).then(res => {
let str = '';
//str = "/2024/"
var newFileName = str + fileFullPath;
let fileConfig = CommonConfig();
let locationName = window.location.hostname;
if (locationName.indexOf('localhost') !== -1) {
uploadConfig.UploadDomain = fileConfig.FileConfig.UploadUrl;
}
let url = uploadConfig.UploadDomain + "/Upload/UploadToALiOSS?isDomain=1&filePath=" + newFileName;
let formData = new FormData()
formData.append('myfile', fileObj)
let xhr = new XMLHttpRequest()
xhr.onload = function () {
uploadLoadding.hide();
var uploadResult = {
Code: 1,
FileName: fileObj.name,
FileUrl: res.res.requestUrls[0].split('?')[0].replace('http', 'https')
}
if (successCall) {
successCall(uploadResult);
var jsonObj = JSON.parse(xhr.responseText);
if (jsonObj.StatusCode === 1 && successCall) {
var uploadResult = {
Code: 1,
FileName: fileObj.name,
FileUrl: jsonObj.FilePath,
VideoCoverImg: uploadConfig.CustomDomain + jsonObj.VideoCoverImg,
Message: jsonObj.Message
}
if (successCall) {
successCall(uploadResult);
}
}
})
}
xhr.open('post', url, true)
xhr.send(formData)
}
/**
* 上传文件到腾讯云
*/
export function UploadFileToTencent(uploadConfig, fileFullPath, fileObj, uploadLoadding, successCall) {
var COS = require('cos-js-sdk-v5');
var cos = new COS({
SecretId: uploadConfig.SecretId,
SecretKey: uploadConfig.SecretKey,
});
cos.putObject({
Bucket: uploadConfig.Bucket,
Region: uploadConfig.Region, //存储桶所在地域,必须字段
Key: fileFullPath, //文件名
StorageClass: 'STANDARD',
Body: fileObj, // 上传文件对象
onProgress: function (progressData) {}
}, function (err, data) {
let str = '';
//str = "/2024/"
var newFileName = str + fileFullPath;
let fileConfig = CommonConfig();
let locationName = window.location.hostname;
if (locationName.indexOf('localhost') !== -1) {
uploadConfig.UploadDomain = fileConfig.FileConfig.UploadUrl;
}
let url = uploadConfig.UploadDomain + "/Upload/UploadToTecent?isDomain=1&filePath=" + newFileName;
let formData = new FormData()
formData.append('myfile', fileObj)
let xhr = new XMLHttpRequest()
xhr.onload = function () {
uploadLoadding.hide();
if (data && data.statusCode == 200) {
var jsonObj = JSON.parse(xhr.responseText);
if (jsonObj.StatusCode === 1 && successCall) {
var uploadResult = {
Code: 1,
FileName: fileObj.name,
FileUrl: "https://" + data.Location
FileUrl: jsonObj.FilePath,
VideoCoverImg: uploadConfig.CustomDomain + jsonObj.VideoCoverImg,
Message: jsonObj.Message
}
if (successCall) {
successCall(uploadResult);
}
} else {
/*上传文件异常*/
console.log(err || data);
}
});
}
xhr.open('post', url, true)
xhr.send(formData)
}
/***
......@@ -578,10 +588,7 @@ export function wechatUploadSelfFile(path, file, callback, configObj) {
//用户登录缓存
//配置写死的 腾讯云
var uploadConfig = {
Region: "ap-chengdu",
SecretId: "AKIDDPnbIzi8C1eqEOPP8dw6MNAg9H9ldDKd",
SecretKey: "PdcLtOjslUzNFYdU4OSI1fKtdHpFT2Ob",
Bucket: "viitto-1301420277"
};
//获取文件扩展名
var index = file.name.lastIndexOf(".");
......@@ -597,4 +604,4 @@ export function wechatUploadSelfFile(path, file, callback, configObj) {
newPath += "/" + timestamp1 + "" + suffix;
UploadFileToTencent(uploadConfig, newPath, file, uploadLoadding, callback);
}
}
\ No newline at end of file
}
......@@ -281,6 +281,18 @@ export function SetStuStudyInfo(data) {
})
}
/**
*删除学员学习情况
*/
export function RemoveStuStudyInfo(data) {
return request({
url: '/Scroll/RemoveStuStudyInfo',
method: 'post',
data
})
}
/**
* 获取已报名学员列表
*/
......
......@@ -59,6 +59,7 @@
cursor: pointer;
color: #2961FE;
}
</style>
<template>
<div class="monthStatisticslist">
......@@ -67,17 +68,17 @@
cellpadding="0" v-loading="loading">
<tr>
<th width="120" style="min-width: 110px;">学生</th>
<th width="200" style="min-width: 110px;z-index: 999;">时间</th>
<th width="200" style="min-width: 110px;z-index: 999;">时间</th>
<th width="120" style="min-width: 110px;">类型</th>
<th width="120" style="min-width: 110px;">学历</th>
<th width="100" style="min-width: 100px;">目的</th>
<th width="200" style="min-width: 200px;">是否签合同</th>
<th width="200" style="min-width: 200px;">来源</th>
<th width="200" style="min-width: 200px;">来源人</th>
<th width="200" style="min-width: 200px;">课程名称</th>
<th width="200" style="min-width: 80px;">订单金额</th>
<th width="100" style="min-width: 100px;">目的</th>
<th width="200" style="min-width: 200px;">是否签合同</th>
<th width="200" style="min-width: 200px;">来源</th>
<th width="200" style="min-width: 200px;">来源人</th>
<th width="200" style="min-width: 200px;">课程名称</th>
<th width="200" style="min-width: 80px;">订单金额</th>
</tr>
<template v-if='dataObj&&dataObj.list && dataObj.list.length>0'>
<tr v-for=" ( item , index ) in dataObj.list " :key="index">
<td style=" border: 1px solid #d2d2d2;">
......@@ -90,7 +91,7 @@
</td>
<td>
<span>{{ item.JoinType==3?"内产":"新生" }}</span>
</td>
<td>
<span>{{item.StuEducationName}}</span>
......@@ -187,11 +188,8 @@
}
return managerName;
},
//点击学生姓名弹出
getStuRight(obj) {
console.log("我进来啦",obj);
if (obj) {
this.stuOption = obj;
this.BelongType = 3;
......@@ -205,4 +203,5 @@
},
}
};
</script>
\ No newline at end of file
</script>
......@@ -4,30 +4,35 @@
<div class="text-h6">{{saveObj==2?'新增考试':"月度总结"}}</div>
<template v-if="saveObj==2">
<div class="row q-col-gutter-md">
<q-input class="col-6" filled v-model="SaveMsg.StudyValue" dense label="时间"></q-input>
<q-input class="col-6" filled v-model="SaveMsg.Words" type="number" dense label="单词背诵"></q-input>
</div>
<div class="q-mt-xs row q-col-gutter-md">
<q-input class="col-6" filled v-model="SaveMsg.Practice" type="number" dense label="练习题"></q-input>
<q-input class="col-6" filled v-model="SaveMsg.ReadingAloud" type="number" dense label="朗读/背诵"></q-input>
</div>
<div class="q-mt-xs row q-col-gutter-md">
<p>其他 <i class="el-icon-plus text-blue cursor-pointer" @click="SetStudentStudyOther"></i></p>
</div>
<div class="q-mt-xs row q-col-gutter-md" v-if='SaveMsg.Other&& SaveMsg.Other.length>0' v-for=" ( itemOther, indexOther ) in SaveMsg.Other " :key="indexOther">
<el-input class="col-6" placeholder="请输入" filled v-model="itemOther.Name" autofocus/>
<el-input class="col-4" placeholder="请输入" filled v-model="itemOther.Score" type="number" autofocus/>
<i class="el-icon-delete text-blue cursor-pointer col-2" @click="DelStudentStudyOther(indexOther)" style="margin-top:11px;"></i>
</div>
</template>
<q-input class="col-6" filled v-model="SaveMsg.StudyValue" dense label="时间"></q-input>
<q-input class="col-6" filled v-model="SaveMsg.Words" maxlength="180" dense label="单词背诵"></q-input>
</div>
<div class="q-mt-xs row q-col-gutter-md">
<q-input class="col-6" filled v-model="SaveMsg.Practice" maxlength="180" dense label="练习题"></q-input>
<q-input class="col-6" filled v-model="SaveMsg.ReadingAloud" maxlength="180" dense label="朗读/背诵"></q-input>
</div>
<div class="q-mt-xs row q-col-gutter-md">
<q-input class="col-6" filled v-model="SaveMsg.Other" maxlength="180" dense label="其他"></q-input>
<!-- <p>其他 <i class="el-icon-plus text-blue cursor-pointer" @click="SetStudentStudyOther"></i></p> -->
</div>
<!-- <template v-if='SaveMsg.Other&& SaveMsg.Other.length>0'>
<div class="q-mt-xs row q-col-gutter-md" v-for=" ( itemOther, indexOther ) in SaveMsg.Other "
:key="indexOther">
<q-input class="col-6" placeholder="请输入项目名称" filled v-model="itemOther.Name" autofocus :dense="true" />
<q-input class="col-4" placeholder="请输入得分" filled v-model="itemOther.Score" type="number" :dense="true"
autofocus />
<i class="el-icon-delete text-blue cursor-pointer col-2" @click="DelStudentStudyOther(indexOther)"
style="margin-top:11px;"></i>
</div>
</template> -->
</template>
<template v-if="saveObj==3">
<div class="q-mt-xs row q-col-gutter-md">
<q-input class="col-12" filled v-model="SaveMsg.StudyValue" dense label="月份"></q-input>
</div>
<div class="q-mt-xs row q-col-gutter-md">
<q-input class="col-12" filled v-model="SaveMsg.Remarks" type="textarea" dense label="请输入学校情况"></q-input>
</div>
<q-input class="col-12" filled v-model="SaveMsg.StudyValue" dense label="月份"></q-input>
</div>
<div class="q-mt-xs row q-col-gutter-md">
<q-input class="col-12" filled v-model="SaveMsg.Remarks" type="textarea" dense label="请输入学校情况"></q-input>
</div>
</template>
<q-separator class="q-my-md" />
<div class="text-right q-py-xs">
......@@ -45,15 +50,14 @@
meta: {
title: "学员考试信息"
},
components: {},
props: {
saveObj: {
type: Number,
default: null
},
//数据
BaseInfo: {
//数据
BaseInfo: {
type: Object,
default: null
},
......@@ -62,99 +66,96 @@
return {
//客户对象
SaveMsg: {
CourseId: 0,
StuId:0,
GuestId:0,
ClassScrollType:0,
OrderId:0,
StudyID:0,
Words:'',
Practice:'',
ReadingAloud:'',
Other:[],
ChapterId:0,
StudyType:0,
Remarks:'',
StudyValue:'',
CourseId: 0,
StuId: 0,
GuestId: 0,
ClassScrollType: 0,
OrderId: 0,
StudyID: 0,
Words: '',
Practice: '',
ReadingAloud: '',
Other: '',
ChapterId: 0,
StudyType: 0,
Remarks: '到勤情况:\n课堂表现:\n作业情况:\n评价建议:',
StudyValue: '',
},
nowOther:{
Name:"",
Score:"",
nowOther: {
Name: "",
Score: "",
},
};
},
created() {
},
created() {},
mounted() {},
methods: {
SetStudentStudyOther(){
SetStudentStudyOther() {
this.SaveMsg.Other.push(JSON.parse(JSON.stringify(this.nowOther)))
},
DelStudentStudyOther(indexOther){
if( this.SaveMsg.Other&& this.SaveMsg.Other.length>0){
DelStudentStudyOther(indexOther) {
if (this.SaveMsg.Other && this.SaveMsg.Other.length > 0) {
this.SaveMsg.Other.splice(indexOther, 1);
}
},
//保存信息
SaveStudentStudy(){
this.SaveMsg.CourseId=this.BaseInfo.CourseId,
this.SaveMsg.StuId=this.BaseInfo.StuId,
this.SaveMsg.GuestId=this.BaseInfo.GuestId,
this.SaveMsg.OrderId=this.BaseInfo.OrderId;
if(this.saveObj==3){
this.SaveMsg.Words=0;
this.SaveMsg.Practice=0;
this.SaveMsg.ReadingAloud=0;
this.SaveMsg.ChapterId=0;
this.SaveMsg.Other='';
}
this.SaveMsg.StudyType=this.saveObj;
//保存信息
SaveStudentStudy() {
this.SaveMsg.CourseId = this.BaseInfo.CourseId;
this.SaveMsg.StuId = this.BaseInfo.StuId;
this.SaveMsg.GuestId = this.BaseInfo.GuestId;
this.SaveMsg.OrderId = this.BaseInfo.OrderId;
if (this.saveObj == 3) {
this.SaveMsg.Words = '';
this.SaveMsg.Practice = '';
this.SaveMsg.ReadingAloud = '';
this.SaveMsg.ChapterId = 0;
this.SaveMsg.Other = '';
} else {
this.SaveMsg.Remarks = '';
}
this.SaveMsg.StudyType = this.saveObj;
SetStuStudyInfo(this.SaveMsg).then(res => {
if (res.Code == 1) {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '数据保存成功!',
position: 'top'
})
}
this.$emit("success");
if (res.Code == 1) {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '数据保存成功!',
position: 'top'
})
}
this.$emit("success");
this.closeSaveForm();
})
.catch(() => {
this.loading = false;
});
// this.SaveMsg.Remarks=this.obj.Remarks,
// this.SaveMsg.StudyValue=this.obj.StudyValue,
},
closeSaveForm() {
this.$emit("close");
this.persistent = false;
},
clearSaveMsg(){
this.SaveMsg.CourseId= 0,
this.SaveMsg.StuId=0,
this.SaveMsg.GuestId=0,
this.SaveMsg.ClassScrollType=0,
this.SaveMsg.OrderId=0,
this.SaveMsg.StudyID=0,
this.SaveMsg.Words=0,
this.SaveMsg.Practice=0,
this.SaveMsg.ReadingAloud=0,
this.SaveMsg.Other=[],
this.SaveMsg.ChapterId=0,
this.SaveMsg.StudyType=0,
this.SaveMsg.Remarks='',
this.SaveMsg.StudyValue=''
clearSaveMsg() {
this.SaveMsg.CourseId = 0;
this.SaveMsg.StuId = 0;
this.SaveMsg.GuestId = 0;
this.SaveMsg.ClassScrollType = 0;
this.SaveMsg.OrderId = 0;
this.SaveMsg.StudyID = 0;
this.SaveMsg.Words = '';
this.SaveMsg.Practice = '';
this.SaveMsg.ReadingAloud = '';
this.SaveMsg.Other = '';
this.SaveMsg.ChapterId = 0;
this.SaveMsg.StudyType = 0;
this.SaveMsg.Remarks = '到勤情况:\n课堂表现:\n作业情况:\n评价建议:';
this.SaveMsg.StudyValue = '';
},
closeForm() {
this.clearSaveMsg();
this.$emit("close");
},
}
};
</script>
\ No newline at end of file
</script>
......@@ -64,31 +64,48 @@
<template>
<div class="stufollowlist">
<div style="width: 100%;overflow-x: auto;">
<table class="po_content singeRowTable" ref="table" style="border:1px solid #E6E6E6;" cellspacing="0"
<table class="po_content singeRowTable" ref="table" style="border:1px solid #E6E6E6;" cellspacing="0"
cellpadding="0" v-loading="loading">
<tr>
<th width="120">月份</th>
<th style="min-width:250px;">学习情况</th>
<th width="100">操作</th>
<th width="100">操作</th>
</tr>
<template v-if='dataObj&& dataObj.length>0'>
<tr v-for=" ( item , index ) in dataObj " :key="index">
<tr v-for=" (item,index) in dataObj " :key="index">
<td>
<el-input v-if="Edit.index==index" placeholder="请输入" v-model="item.ClassDate" size="mini" autofocus/>
<q-input v-if="Edit.index==index" placeholder="请输入" v-model="item.ClassDate" size="mini" autofocus />
<span v-else> {{ item.ClassDate }}</span>
</td>
<td>
<td style="text-align:left;padding-left:5px;">
<div>
<el-input type="textarea" v-if="Edit.index==index" :autosize="{ minRows: 2, maxRows: 50}" placeholder="请输入内容"v-model="item.Remarks"></el-input>
<span v-else> {{ item.Remarks }}</span>
<q-input type="textarea" v-if="Edit.index==index" :autosize="{ minRows: 1, maxRows: 10}"
placeholder="请输入内容" v-model="item.Remarks" :dense="true" />
<pre v-else>
<p v-html="item.Remarks"></p>
</pre>
</div>
</td>
<td>
<div class="text-blue cursor-pointer" >
<i class="el-icon-edit" @click="SetStudentStudy(item,index)" style="margin-right:15px;"></i>
<i class="el-icon-check" v-if="(item.Words||item.Practice||item.ReadingAloud||(item.Other&&item.Other.length>0))||item.StudyID>0" @click="SaveStudentStudy(item)"></i>
</div>
<div class="text-blue cursor-pointer">
<i v-if="Edit.index!=index" class="el-icon-edit" @click="SetStudentStudy(item,index)"
style="margin-right:15px;">
<q-tooltip :offset="[10, 10]">
点击修改
</q-tooltip>
</i>
<i class="el-icon-check" v-if="Edit.index==index" @click="SaveStudentStudy(item)"
style="margin-right:15px;">
<q-tooltip :offset="[10, 10]">
点击保存
</q-tooltip>
</i>
<i class="el-icon-delete" v-if="item.StudyID>0" @click="deleteStudy(item)">
<q-tooltip :offset="[10, 10]">
点击删除
</q-tooltip>
</i>
</div>
</td>
</tr>
</template>
......@@ -103,13 +120,9 @@
</div>
</template>
<script>
import {
saveStudentBaseInfo, //保存学员信息
} from "../../../api/school/index";
import {
SetStuStudyInfo,
RemoveStuStudyInfo,
} from '../../../api/studyabroad/index'
import UeEditor from "../../editor/UeEditor";
export default {
......@@ -158,27 +171,27 @@
isShowSaleInfo: true,
},
SaveMsg: {
CourseId: 0,
StuId:0,
GuestId:0,
ClassScrollType:0,
OrderId:0,
StudyID:0,
Words:0,
Practice:0,
ReadingAloud:0,
Other:[],
ChapterId:0,
StudyType:0,
Remarks:'',
StudyValue:'',
CourseId: 0,
StuId: 0,
GuestId: 0,
ClassScrollType: 0,
OrderId: 0,
StudyID: 0,
Words: 0,
Practice: 0,
ReadingAloud: 0,
Other: [],
ChapterId: 0,
StudyType: 0,
Remarks: '',
StudyValue: '',
},
nowOther:{
Name:"",
Score:"",
nowOther: {
Name: "",
Score: "",
},
Edit:{
index:-1,
Edit: {
index: -1,
},
};
},
......@@ -188,87 +201,99 @@
}
},
methods: {
//刷新表格
refreshTable() {
this.$emit("success");
},
getTeacherManager(row) {
let managerName = "<span class='text-grey-4'>暂无</span>";
if (row.AssistList && row.AssistList.length > 0) {
row.AssistList.forEach(y => {
if (y.AssistType == 4) {
managerName = `<span class='text-dark'>${y.AssistName}</span>`;
deleteStudy(item) {
let that = this
this.$q.dialog({
title: '删除确认',
message: '删除且无法恢复,你确定要删除吗',
cancel: {
label: "取消",
flat: true
},
ok: {
label: "确认",
flat: true,
focus: true,
color: "negative"
}
}).onOk(() => {
RemoveStuStudyInfo({
StudyID: item.StudyID
}).then(res => {
if (res.Code === 1) {
that.$message.success("操作成功")
that.clearSaveMsg();
that.refreshTable();
}
});
}
return managerName;
})
})
},
SetStudentStudy(obj,index){
this.Edit.index=index;
SetStudentStudy(obj, index) {
this.Edit.index = index;
},
//保存信息
SaveStudentStudy(obj){
this.SaveMsg.CourseId=this.BaseInfo.CourseId,
this.SaveMsg.StuId=this.BaseInfo.StuId,
this.SaveMsg.GuestId=this.BaseInfo.GuestId,
this.SaveMsg.OrderId=this.BaseInfo.OrderId,
this.SaveMsg.StudyID=obj.StudyID,
this.SaveMsg.Practice=0,
this.SaveMsg.ReadingAloud=0,
this.SaveMsg.Words=0,
this.SaveMsg.Other='';
this.SaveMsg.Remarks=obj.Remarks,
this.SaveMsg.StudyValue=obj.ClassDate;
this.SaveMsg.ChapterId=0,
this.SaveMsg.StudyType=3,
SaveStudentStudy(obj) {
this.SaveMsg.CourseId = this.BaseInfo.CourseId;
this.SaveMsg.StuId = this.BaseInfo.StuId;
this.SaveMsg.GuestId = this.BaseInfo.GuestId;
this.SaveMsg.OrderId = this.BaseInfo.OrderId;
this.SaveMsg.StudyID = obj.StudyID;
this.SaveMsg.Practice = "";
this.SaveMsg.ReadingAloud = "";
this.SaveMsg.Words = "";
this.SaveMsg.Other = '';
this.SaveMsg.Remarks = obj.Remarks;
this.SaveMsg.StudyValue = obj.ClassDate;
this.SaveMsg.ChapterId = 0;
this.SaveMsg.StudyType = 3;
SetStuStudyInfo(this.SaveMsg).then(res => {
if (res.Code == 1) {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '数据保存成功!',
position: 'top'
})
}
this.clearSaveMsg();
this.refreshTable();
if (res.Code == 1) {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '数据保存成功!',
position: 'top'
})
}
this.clearSaveMsg();
this.refreshTable();
this.loading = false;
})
.catch(() => {
this.loading = false;
});
},
SetStudentStudyOther(index){
SetStudentStudyOther(index) {
this.dataObj[index].Other.push(JSON.parse(JSON.stringify(this.nowOther)))
},
DelStudentStudyOther(obj,index,indexOther){
if(obj.Other&&obj.Other.length>0){
DelStudentStudyOther(obj, index, indexOther) {
if (obj.Other && obj.Other.length > 0) {
obj.Other.splice(indexOther, 1);
}
this.dataObj[index] = obj
},
clearSaveMsg(){
this.SaveMsg.CourseId= 0,
this.SaveMsg.StuId=0,
this.SaveMsg.GuestId=0,
this.SaveMsg. ClassScrollType=0,
this.SaveMsg. OrderId=0,
this.SaveMsg. StudyID=0,
this.SaveMsg.Words=0,
this.SaveMsg.Practice=0,
this.SaveMsg.ReadingAloud=0,
this.SaveMsg.Other=[],
this.SaveMsg. ChapterId=0,
this.SaveMsg.StudyType=0,
this.SaveMsg.Remarks='',
this.SaveMsg. StudyValue='',
this.Edit.index=-1;
clearSaveMsg() {
this.SaveMsg.CourseId = 0;
this.SaveMsg.StuId = 0;
this.SaveMsg.GuestId = 0;
this.SaveMsg.ClassScrollType = 0;
this.SaveMsg.OrderId = 0;
this.SaveMsg.StudyID = 0;
this.SaveMsg.Words = "";
this.SaveMsg.Practice = "";
this.SaveMsg.ReadingAloud = "";
this.SaveMsg.Other = "";
this.SaveMsg.ChapterId = 0;
this.SaveMsg.StudyType = 0;
this.SaveMsg.Remarks = '';
this.SaveMsg.StudyValue = '';
this.Edit.index = -1;
},
//关闭弹窗
closeStuForm() {
this.isShowStuRight = false;
......
......@@ -76,7 +76,7 @@
<th width="80">金额</th>
<th style="min-width:250px;">基本情况</th>
<th width="200">续费课程</th>
<th width="80">续费级别</th>
<!-- <th width="80">续费级别</th> -->
<th width="80">续费金额</th>
<th width="80">最新进度</th>
<th width="90">负责人</th>
......@@ -153,12 +153,12 @@
<span>{{sItem.CourseName}}</span>
</div>
</td>
<td>
<!-- <td>
<div v-for="(sItem,sIndex) in item.RenewOrderList" style="border-bottom:1px dashed #d1d1d1;"
:key="sIndex+40000">
<span>{{ sItem.CourseRateName?sItem.CourseRateName:'-' }}</span>
</div>
</td>
</td> -->
<td>
<div v-for="(sItem,sIndex) in item.RenewOrderList" style="border-bottom:1px dashed #d1d1d1;"
:key="sIndex+50000">
......@@ -171,9 +171,9 @@
<td>
{{ item.CreateByName?item.CreateByName:'-' }}
</td>
<td >
<td>
<div class="text-blue cursor-pointer" @click="getStudentStudy(item)">
学习情况
学习情况
</div>
<!-- <div class="text-blue cursor-pointer" @click="getStudentSurvey(item)">
问卷调查
......@@ -243,7 +243,7 @@
</div>
</div>
<div style="width:100%;margin-bottom:15px;" v-if="customObj.EditType==3">
<div style="width:13%;display:inline-block;vertical-align:top;">基本<br/>情况:</div>
<div style="width:13%;display:inline-block;vertical-align:top;">基本<br />情况:</div>
<div style="width:86%;display:inline-block;">
<UeEditor v-model="customObj.Remark" class="q-pb-sm" :config="config"></UeEditor>
</div>
......@@ -384,15 +384,15 @@
}
this.isShowStuRight = true;
},
//点击学生跳转到学习情况
getStudentStudy(obj) {
var qObj = {
StuId: obj.StuId,
StuName: obj.StuName,
GuestId:obj.GuestId,
CourseRateName:obj.CourseRateName,
};
this.OpenNewUrl('/teacher/studentStudy', qObj)
//点击学生跳转到学习情况
getStudentStudy(obj) {
var qObj = {
StuId: obj.StuId,
StuName: obj.StuName,
GuestId: obj.GuestId,
CourseRateName: obj.CourseRateName,
};
this.OpenNewUrl('/teacher/studentStudy', qObj)
},
//点击生成二维码
getStudentSurveyImg(obj,index) {
......
This diff is collapsed.
......@@ -61,18 +61,14 @@
<li @click="tiggerMax" class="source">
原图
</li>
<!-- <li class="save" @click="outerVisible=true">
保存
</li> -->
<li class="save" @click="getFileBase64(2)">
保存
</li>
<li class="down" @click="getFileBase64(1)">
下载
</li>
<!-- <li class="return" @click="returnback">
返回
</li> -->
</ul>
<div class="property-box" v-if='currentNode.type==0 && !isMax'>
<el-form ref="form" :model="currentNode" label-width="80px">
......@@ -172,12 +168,7 @@
</div>
<div class="property-box" v-if='currentNode.type==1 && !isMax'>
<el-form ref="form" :model="currentNode" label-width="80px">
<!-- <el-form-item label="宽度:">
<el-input-number v-model="currentNode.width" :min="0"></el-input-number>
</el-form-item>
<el-form-item label="高度">
<el-input-number v-model="currentNode.height" :min="0"></el-input-number>
</el-form-item> -->
<el-form-item label="圆角:">
<el-input-number v-model="currentNode.radius" :min="0"></el-input-number>
<label class="remark">修改块的圆角弧度(有背景色时体现)</label>
......@@ -399,7 +390,7 @@
import browserMD5File from 'browser-md5-file';
import vueWaterfallEasy from 'vue-waterfall-easy'
import h2c from 'html2canvas'
// import Canvas2Image from 'Canvas2Image'
import {
getAdvertisingList,
saveMakeAd,
......@@ -502,19 +493,15 @@
}
},
mounted() {
if (this.$route.query.id) {
this.dataId = this.$route.query.id
}
// this.user = JSON.parse(window.localStorage.userInfo)
if (this.dataId != 0) {
this.bg = ' '
this.loadObj()
} else {
this.isLoading = false
}
// this.loadingFont(this.nodes[0])
this.nodes.forEach(x => {
this.currentZIndex = x.zindex > this.currentZIndex ? x.zindex : this.currentZIndex
this.currentMaxId = x.nodeId > this.currentMaxId ? x.nodeId : this.currentMaxId
......@@ -587,7 +574,7 @@
'label': '叶根友毛笔行书体',
'value': 'YGYXSZITI'
})
// this.getline()
this.getaddatas(0)
var sUserAgent = navigator.userAgent;
var isWin = (navigator.platform == "Win32") || (navigator.platform == "Windows");
......@@ -622,7 +609,8 @@
this.currentMaxId = y.nodeId > this.currentMaxId ? y.nodeId : this.currentMaxId
})
let reg = /^http(s)?:\/\/(.*?)\//
let getBlob = this.getFileBlob(data.pictureUrl.replace(reg, ''), 'aa.jpg')
console.log("getMyAdDetail",data.pictureUrl);
let getBlob = this.getAnyFileBlob(data.pictureUrl.replace(reg, ''))
let that = this
getBlob.then(blob => {
that.blobToDataURL(blob, function (e) {
......@@ -658,9 +646,6 @@
})
}
})
},
uuid(len, radix) {
var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
......@@ -701,7 +686,8 @@
this.st = x.SamplePicturesUrl + '?width=470'
this.templateId = x.ID
let reg = /^http(s)?:\/\/(.*?)\//
let getBlob = this.getFileBlob(x.PictureUrl.replace(reg, ''), 'aa.jpg')
let getBlob = this.getAnyFileBlob(x.PictureUrl.replace(reg, ''))
let that = this
getBlob.then(blob => {
that.blobToDataURL(blob, function (e) {
......
This diff is collapsed.
<style scoped>
@import "../css/cssReset.css";
.suject-title-box {
border-bottom: 1px solid #dedede;
}
......@@ -61,7 +62,7 @@
<div class="flexOne currentManage page-body" style="position: relative;">
<div class="query-box" style="border-bottom:0">
<ul>
<li>
<q-btn color="primary" size="11px" label="新增"  @click="resetForm('addMsg'),clickEdit()" />
</li>
......@@ -74,27 +75,26 @@
</div>
<div class="cm_content _scrollbar"
style="position: absolute;top:83px;bottom: 20px;left: 15px;right:15px;overflow-y: scroll;">
<table class="po_content singeRowTable"
style="border:1px solid #E6E6E6;" cellspacing="0"
cellpadding="0" v-loading="loading">
<tr>
<th width="260px">校区/公司名称</th>
<th>项目名称</th>
<th width="150px">操作</th>
</tr>
<tr v-for="(item,index) in dataList" :key="index">
<td width="260px">{{item.BranchName}}</td>
<td>{{item.ItemName}}</td>
<td width="150px">
<span class="a" style="cursor: pointer;color:blue;text-decoration:underline;margin-right: 5px"
@click="clickEdit(item)">编辑</span>
<span style="cursor: pointer;color:red;text-decoration:underline;" @click="Delete(item)">删除</span>
</td>
</tr>
</table>
<div class="noData" v-if="dataList&&dataList.length==0">
{{$t('system.content_noData')}}
</div>
<table class="po_content singeRowTable" style="border:1px solid #E6E6E6;" cellspacing="0" cellpadding="0"
v-loading="loading">
<tr>
<th width="260px">校区/公司名称</th>
<th>项目名称</th>
<th width="150px">操作</th>
</tr>
<tr v-for="(item,index) in dataList" :key="index">
<td width="260px">{{item.BranchName}}</td>
<td>{{item.ItemName}}</td>
<td width="150px">
<span class="a" style="cursor: pointer;color:blue;text-decoration:underline;margin-right: 5px"
@click="clickEdit(item)">编辑</span>
<span style="cursor: pointer;color:red;text-decoration:underline;" @click="Delete(item)">删除</span>
</td>
</tr>
</table>
<div class="noData" v-if="dataList&&dataList.length==0">
{{$t('system.content_noData')}}
</div>
</div>
<div class="_vMG_edit" :class="addShow==true?'edHeight':''">
<el-row style="height:48px">
......@@ -108,7 +108,7 @@
</el-row>
<el-form class="clearfix" :model="addMsg" ref="addMsg" :rules="rules" label-width="100px">
<el-row>
<!-- <el-col :span="5">
<el-form-item label="金蝶项目类型" prop="BranchId">
<el-select filterable v-model='addMsg.BranchId' @change="getType">
......@@ -119,14 +119,15 @@
<el-col :span="8">
<el-form-item label="校区" prop="BranchId">
<el-select filterable v-model='addMsg.BranchId' @change="getType">
<el-option v-for="item in CompanyList" :key="item.SId" :value="item.SId" :label="item.SName"></el-option>
<el-option v-for="item in CompanyList" :key="item.SId" :value="item.SId" :label="item.SName">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="13">
<el-form-item label="别名" prop="ItemName">
<el-input v-model="addMsg.ItemName" clearable></el-input>
</el-form-item>
<div style="color: #71755d;font-size: 12px;margin-left: 100px;">
例如:校区---2051---城中总部一校区-阳光新业23楼校区
......@@ -140,11 +141,11 @@
</template>
<script>
import {
getSchoolDropdown
} from '../../../api/school/index'
getSchoolDropdown
} from '../../../api/school/index'
export default {
components: {
},
data() {
return {
......@@ -185,11 +186,11 @@
},
],
msg: {
},
dataList: [],
loading: false,
CompanyList:[]
CompanyList: []
}
},
created() {
......@@ -200,55 +201,55 @@
},
methods: {
Delete(item){
let _this = this
let msg = {
Id: item.Id
}
this.$q.dialog({
title: '将删除此金蝶项目',
message: '是否继续?',
cancel: true,
persistent: true,
ok: "确定",
cancel: "取消",
}).onOk(() => {
this.apipost('Financial_post_DelKingdeeItem',msg, res => {
if(res.data.resultCode == 1) {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '操作成功',
position: 'top'
});
this.getList();
} else {
this.Error(res.data.message);
}
}, err => {
})
}).onCancel(() => {
});
},
getBranchList() {//获取校区
getSchoolDropdown({}).then(res => {
this.CompanyList = res.Data;
// var obj = {
// SName: '全部',
// SId: '-1'
// }
// this.CompanyList.unshift(obj);
}).catch(() => {
Delete(item) {
let _this = this
let msg = {
Id: item.Id
}
this.$q.dialog({
title: '将删除此金蝶项目',
message: '是否继续?',
cancel: true,
persistent: true,
ok: "确定",
cancel: "取消",
}).onOk(() => {
this.apipost('Financial_post_DelKingdeeItem', msg, res => {
if (res.data.resultCode == 1) {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '操作成功',
position: 'top'
});
this.getList();
} else {
this.Error(res.data.message);
}
}, err => {
})
}).onCancel(() => {
});
},
getBranchList() { //获取校区
getSchoolDropdown({}).then(res => {
this.CompanyList = res.Data;
// var obj = {
// SName: '全部',
// SId: '-1'
// }
// this.CompanyList.unshift(obj);
}).catch(() => {
})
},
// 获取金蝶项目名称
getType(ID){
this.CompanyList.forEach(item=>{
if(item.SId==ID){
// 获取金蝶项目名称
getType(ID) {
this.CompanyList.forEach(item => {
if (item.SId == ID) {
this.addMsg.BranchName = item.SName
}
})
......@@ -304,11 +305,10 @@
},
clickEdit(item) {
this.addShow = false
if(item){
if (item) {
this.text = '编辑金蝶项目'
console.log(item)
this.addMsg = JSON.parse(JSON.stringify(item))
}else{
} else {
this.text = '新增金蝶项目'
}
this.addShow = true
......
......@@ -25,30 +25,40 @@
<div class="_PrintPage">
<div class="_PrintPage_box">
<template v-if="type==='2'&&(Merge==='0'||Merge===null)">
<div class="_border_1" v-for="(item,index) in loopNumT">
<my-Bill :ID="id" :width="widthSon" :isPrintPage="true" :color="colorSon" :OrderSource="OrderSource" :name='index+1'></my-Bill>
</div>
<template v-for="(item,index) in loopNumT">
<div v-if="index==1" class="_border_1">
<my-Bill :ID="id" :width="widthSon" :isPrintPage="true" :color="colorSon" :OrderSource="OrderSource" :name='index+1'></my-Bill>
</div>
</template>
</template>
<template v-else-if="type==='1'&&(Merge==='0'||Merge===null)">
<div class="_border_1" v-for="(item,index) in loopNumN">
<my-RVB-Bill v-on:helloPP="numAdd" :Num="num" :ID="id" :width="widthSon" :isPrintPage="true" :OrderSource="OrderSource" :color="colorSon" :name='index+1'></my-RVB-Bill>
</div>
<template v-for="(item,index) in loopNumN">
<div v-if="index==1" class="_border_1">
<my-RVB-Bill v-on:helloPP="numAdd" :Num="num" :ID="id" :width="widthSon" :isPrintPage="true" :OrderSource="OrderSource" :color="colorSon" :name='index+1'></my-RVB-Bill>
</div>
</template>
</template>
<template v-if="type==='7'&&(Merge==='0'||Merge===null)">
<div class="_border_1" v-for="(item,index) in loopNumT">
<my-GZ-Bill :ID="id" :width="widthSon" :isPrintPage="true" :color="colorSon" :OrderSource="OrderSource" :name='index+1'></my-GZ-Bill>
</div>
<template v-for="(item,index) in loopNumT">
<div v-if="index==1" class="_border_1">
<my-GZ-Bill :ID="id" :width="widthSon" :isPrintPage="true" :color="colorSon" :OrderSource="OrderSource" :name='index+1'></my-GZ-Bill>
</div>
</template>
</template>
<!-- 收据3 -->
<template v-if="type==='3'">
<div class="_border_1" v-for="(item,index) in loopNumT">
<my-SJ-Bill :ID="id" :width="widthSon" :isPrintPage="true" :color="colorSon" :OrderSource="OrderSource" :name='index+1'></my-SJ-Bill>
</div>
<template v-for="(item,index) in loopNumT">
<div v-if="index==1" class="_border_1">
<my-SJ-Bill :ID="id" :width="widthSon" :isPrintPage="true" :color="colorSon" :OrderSource="OrderSource" :name='index+1'></my-SJ-Bill>
</div>
</template>
</template>
<template v-if="Merge==='1'">
<div class="_border_1" v-for="(item,index) in loopNumN">
<my-HB-Bill v-on:helloPP="numAdd" :Num="num" :ID="id" :width="widthSon" :isPrintPage="true" :color="colorSon" :name='index+1'></my-HB-Bill>
</div>
<template v-for="(item,index) in loopNumN">
<div v-if="index==1" class="_border_1">
<my-HB-Bill v-on:helloPP="numAdd" :Num="num" :ID="id" :width="widthSon" :isPrintPage="true" :color="colorSon" :name='index+1'></my-HB-Bill>
</div>
</template>
</template>
</div>
</div>
......@@ -80,7 +90,7 @@
'my-HB-Bill':myhrBill,
'my-GZ-Bill': myGZBill,
'my-SJ-Bill': mySJBill,
},methods:{
numAdd(){
this.num = this.num + 1
......
......@@ -67,10 +67,12 @@
</div>
</template>
<template v-if="type==='7'&&(Merge==='0'||Merge===null)">
<div class="_border_1" v-for="(item,index) in loopNumT">
<my-GZ-Bill :ID="id" :width="widthSon" :isPrintPage="true" :color="colorSon" :OrderSource="OrderSource"
:name='index+1'></my-GZ-Bill>
</div>
<template v-for="(item,index) in loopNumT">
<div v-if="index==1" class="_border_1">
<my-GZ-Bill :ID="id" :width="widthSon" :isPrintPage="true" :color="colorSon" :OrderSource="OrderSource"
:name='index+1'></my-GZ-Bill>
</div>
</template>
</template>
<template v-if="(Merge==='1' && hedan==2)">
<div class="SetDiv">
......
This diff is collapsed.
......@@ -552,12 +552,10 @@
this.orderHandoverMsg.UserId = row.EmAccountId
this.orderIsDetails = true
},
// 协助老师交接
teacherHandover(row) {
console.log("row", row);
this.teacherHandoverMsg.UserId = row.EmAccountId;
this.teacherHandoverMsg.EmployeeName=row.EmployeeName;
this.teacherHandoverMsg.EmployeeName = row.EmployeeName;
this.teacherIsDetails = true
},
saveOrderHandoverInfo() { //保存
......@@ -639,7 +637,6 @@
UserId: this.teacherHandoverMsg.UserId,
ReceiveId: this.teacherHandoverMsg.ReceiveId
}
console.log("开始保存咔咔咔咔咔咔");
SetUserLeaveTearchCareOf(msg).then(res => {
if (res.Code == 1)
this.$q.notify({
......
......@@ -30,11 +30,11 @@
</template>
<template v-slot:body-cell-Using="props">
<q-td :props="props">
<div class="site_ListDiv">空间名称(Bucket):{{props.row.Bucket}}</div>
<!-- <div class="site_ListDiv">空间名称(Bucket):{{props.row.Bucket}}</div>
<div class="site_ListDiv">所属地域:{{props.row.Region}}</div>
<div class="site_ListDiv">自定义域名:{{props.row.CustomDomain}}</div>
<div class="site_ListDiv">SecretId:{{props.row.SecretId}}</div>
<div>SecretKey:{{props.row.SecretKey}}</div>
<div class="site_ListDiv">自定义域名:{{props.row.CustomDomain}}</div> -->
<!-- <div class="site_ListDiv">SecretId:{{props.row.SecretId}}</div>
<div>SecretKey:{{props.row.SecretKey}}</div> -->
</q-td>
</template>
<template v-slot:bottom>
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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