Commit 3c91adc3 authored by 罗超's avatar 罗超

Merge branch 'master' of http://gitlab.oytour.com/luochao/confucius into master

parents c1e18ad4 4f49ee4a
......@@ -49,8 +49,8 @@ module.exports = function (ctx) {
env: ctx.dev ? {
//API: 'http://192.168.1.36:8300/api'
// API: 'https://localhost:5001/api'
API: 'http://192.168.20.9:8085/api',
API: 'https://localhost:5001/api',
//API: 'http://192.168.20.9:8085/api',
// API: 'http://eduapi.oytour.com/api'
API_ZC:'http://192.168.20.9:8087/api'
} : {
......
......@@ -22,6 +22,19 @@ export function getClassNameList(data) {
data
})
}
/**
* 根据 留学就业ids 获取留学就业信息
*
*/
export function queryStudyNameList(data) {
return request({
url: '/order/GetStudyNameList',
method: 'post',
data
})
}
/**
*获取简易报表数据
*/
......
import request from '../../utils/request'
import request_zc from '../../utils/request_zc'
/**
* 获取学校分页列表
......@@ -504,3 +506,19 @@ export function queryEmpChangeLog(data) {
data
});
}
// 获取用户领用资产的数量(用户教育用户列表 展示资产使用情况)
export function getEduEmployeeNumList(data) {
// return request_zc({
// url: '/property/GetEduEmployeeReceiveNumList',
// method: 'post',
// data
// });
}
//获取用户资产列表
export function propertyGetPageList(data) {
// return request_zc({
// url: '/property/PropertyGetPageList',
// method: 'post',
// data
// });
}
......@@ -8,7 +8,7 @@ LoadingBar.setDefaults({
position: "bottom"
});
let loadAsyncRouter = false;
const whiteList = ["/login", "/", "/contractConfirm", "contractView","noticeView"]; // 不重定向白名单
const whiteList = ["/login", "/", "/contractConfirm","contractPay","contractView","noticeView"]; // 不重定向白名单
router.beforeEach((to, from, next) => {
localStorage.setItem("routerBefore", from.path);
LoadingBar.start();
......
......@@ -126,7 +126,7 @@
</q-input>
</div>
</div>
<div class="row wrap">
<div class="row wrap" style="display:none;">
<div class="col-6">
<q-input filled stack-label maxlength="8" :dense="false" v-model="objOption.OriginalPrice"
ref="OriginalPrice" class="col-6 q-pr-lg q-pb-lg" label="原价"
......
This diff is collapsed.
This diff is collapsed.
......@@ -53,25 +53,6 @@
<span>选择课程</span>
</div>
<div class="row">
<!-- <div class="col-5 q-mr-md">
<q-select
dense
standout
behavior="menu"
v-model="chosenCategory"
:options="categoryOptions"
@filter="filterFn"
input-debounce="0"
use-input
option-label="CateName"
option-value="CateId"
emit-value
map-options
@input="changeCategory"
:placeholder="!chosenCategory?'选择系类':''"
clearable
/>
</div> -->
<div class="col">
<q-select dense standout behavior="menu" filled v-model="chosenCourse" :options="courseOptions"
@filter="filterCourseFn" input-debounce="0" use-input option-label="CourseName" option-value="CourseId"
......@@ -399,9 +380,11 @@
let offer = this.genernalOffer(val);
if (this.chosenCourses.length > 0) {
offer.DiscountPrice += 500;
if (offer.OriginalPrice > 5000) {
offer.ActualPrice -= 500;
offer.Remark += `^购买多项课程再减500`;
}
}
this.chosenCourses.push(offer);
this.SumMoney();
}
......
<template>
<q-dialog v-model="persistent" maximized full-height seamless position="right">
<q-card style="margin-top:61px;width:500px" class="no-border-radius classinfo_Dialog">
<div class="drawerTop">
<div style="display:flex;align-items:center;margin-left:10px;">
<span class="drawer_Span">学员报名</span>
</div>
</div>
<div style="padding:20px 15px;">
<q-input filled stack-label maxlength="4" :dense="false" v-model="enrollMsg.GuestNum" type="number"
@input="countPrice" class="col-12" label="人数" :rules="[val => !!val || '请填写人数']" />
<q-input filled stack-label :dense="false" maxlength="8" v-model="enrollMsg.Unit_Price"
:disable="UPrice==true?false:true" @blur="countPrice" class="col-12" label="成交单价"
:rules="[val => !!val || '请填成交单价']" />
<q-select standout="bg-primary text-white" option-value="Id" option-label="Name" v-model="enrollMsg.OrderSource"
:options="SourceEnumList" emit-value map-options label="客人来源" />
<q-input filled stack-label type="textarea" maxlength="500" :dense="false" v-model="enrollMsg.SaleRemark"
style="margin-top: 20px" class="col-12" label="备注" />
<div style="margin:30px 10px 0 0;">
<q-btn class="q-mr-md" label="取消" @click="persistent=false" />
<q-btn color="accent" class="q-mr-md" label="保存" @click="saveSatMsg()" />
</div>
</div>
</q-card>
<div class="dialog-out-close" @click="persistent=false"
style="height:40px !important;border-top-left-radius: 4px !important;border-bottom-left-radius: 4px !important;">
<q-icon name="iconfont icon-jujue1" size="26px" />
</div>
</q-dialog>
</template>
<script>
import {
getOrderSourceEnumList, //获取订单来源 枚举
setClassOrder, //新增 修改订单
} from '../../api/sale/sale';
export default {
name: "studyOrder-form",
props: {
saveObj: {
type: Object,
default: null,
},
},
data() {
return {
persistent: true,
//学员报名
enrollMsg: {
ClassId: 0,
GuestNum: 1,
Unit_Price: 0, //成交单价
PreferPrice: 0, //应收总额
OrderSource: 0, //客人来源 枚举
SaleRemark: '', //备注
OrderType: 2, //订单类型(1-班级课程订单,2-留学就业订单)
SourceId: 0, //来源变化
},
UPrice: 0, //单价
SourceEnumList: [], //来源
}
},
created() {
this.getOrderSEList();
},
mounted() {
this.enrollMsg.Unit_Price = this.saveObj.SellPrice;
this.enrollMsg.SourceId = this.saveObj.Id;
this.countPrice();
},
methods: {
//获取客人来源列表
getOrderSEList() {
getOrderSourceEnumList({}).then(res => {
if (res.Code == 1) {
var tempArray = res.Data;
this.SourceEnumList = tempArray;
this.enrollMsg.OrderSource = tempArray[0].Id;
}
})
},
//计算价格
countPrice() {
var guestNum = 0;
var unit_price = 0;
if (this.enrollMsg.GuestNum && this.enrollMsg.GuestNum > 0) {
guestNum = Number(this.enrollMsg.GuestNum);
}
if (this.enrollMsg.Unit_Price && this.enrollMsg.Unit_Price > 0) {
unit_price = Number(this.enrollMsg.Unit_Price);
}
this.enrollMsg.PreferPrice = Number(guestNum * unit_price).toFixed(2);
},
//保存订单
saveSatMsg() {
setClassOrder(this.enrollMsg).then(res => {
if (res.Code == 1) {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '报名成功!',
position: 'top'
})
this.$emit("save");
}
}).catch(() => {})
},
}
}
</script>
......@@ -127,7 +127,7 @@
},
mounted() {
console.log(this.saveObj, 'saveObj');
},
methods: {
closeFangkeForm() {
......
......@@ -11,7 +11,7 @@
class="col-6 q-pr-lg q-pb-lg" label="助教名称" :rules="[val => !!val || '请填写助教姓名']" />
<q-select filled stack-label option-value="SId" option-label="SName" v-model="objOption.School_Id"
ref="School_Id" :options="schoolList" label="所属校区" :dense="false" class="col-6 q-pb-lg" emit-value
map-options :rules="[val => !!val || '请选择所属校区']" @input="schoolChagne" />
map-options @input="schoolChagne" />
<q-input type="tel" filled stack-label maxlength="20" :dense="false" v-model="objOption.AssistTel"
ref="AssistTel" class="col-6 q-pr-lg q-pb-lg" label="联系电话" :rules="[val => !!val || '请填写助教联系电话']" />
<selectTree v-if="DeptList&&DeptList.length>0" :treeData='DeptList' :defaultArray="returnString"
......@@ -217,9 +217,9 @@
!this.$refs.AssistTel.hasError
) {
let err_msg = ""
if (this.objOption.AssistIcon == '') {
err_msg = "请上传助教头像"
}
// if (this.objOption.AssistIcon == '') {
// err_msg = "请上传助教头像"
// }
if (err_msg == "") {
saveAssist(this.objOption).then(res => {
this.saveLoading = false
......
<style>
.ContractPay {
width: 100%;
margin: 0 auto;
background-color: #fff;
height: 100%;
color: #000;
padding: 20px;
}
.ContracPay_Title {
position: relative;
color: #111111;
font-size: 23px;
text-align: center;
display: flex;
align-items: center;
justify-content: center;
}
.ContracPay_Title i {
position: absolute;
left: 0;
top: 3px;
font-size: 20px;
color: #111111;
}
.Contract_TwoDiv {
width: 100%;
height: 28rem;
margin-top:50px;
background-color: #F3F9FC;
text-align: center;
color: #111111;
font-weight: 500;
}
.contractTotal {
font-size: 20px;
padding-top:50px;
}
.contractMoney {
font-size: 30px;
font-weight: bold;
margin-top:10px;
}
.contractTwoCode{
width:180px;
height:180px;
border:1px solid #d1d1d1;
margin:20px auto;
}
.TwoCodeRemind{
color:#888888;
font-size:20px;
margin-top:20px;
}
</style>
<template>
<div class="ContractPay">
<div class="ContracPay_Title">
<i @click="goContractConfirm" class="iconfont icon-line-arrow-left"></i>合同签订成功
</div>
<div class="Contract_TwoDiv">
<div class="contractTotal">合同总价</div>
<div class="contractMoney">10000.00</div>
<div class="contractTwoCode">
</div>
<div class="TwoCodeRemind">长按识别上图收款码,完成支付</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
dataList: [],
};
},
created() {
},
methods: {
//获取数据
getList() {
// GetEducationContractInfo(this.gmsg).then(res => {
// if (res.Code == 1) {
// this.dataList = res.Data;
// }
// })
},
//跳转至合同详情
goContractConfirm(){
this.$router.push({
path: 'contractConfirm',
query: {}
});
}
},
mounted() {}
};
</script>
......@@ -94,12 +94,34 @@
</template>
<template v-slot:body-cell-optioned="props">
<q-td :props="props">
<q-btn flat size="xs" icon="edit" color="accent" style="font-weight:400" label="订单中心"
@click="gotoOrder(props.row)"></q-btn>
<q-btn flat size="xs" icon="edit" color="accent" @click="goPayment(props.row)" style="font-weight:400"
label="收支明细"></q-btn>
<q-btn flat size="xs" icon="edit" color="accent" style="font-weight:400" label="编辑"
@click="EditCourse(props.row)" />
<q-btn-dropdown flat size="xs" color="dark" label="更多" style="margin-left:10px;">
<q-list>
<q-item clickable v-close-popup @click="gotoOrder(props.row)">
<q-item-section>
<q-item-label>订单中心</q-item-label>
</q-item-section>
</q-item>
<q-item clickable v-close-popup @click="goPayment(props.row)">
<q-item-section>
<q-item-label>收支明细</q-item-label>
</q-item-section>
</q-item>
<q-item clickable v-close-popup @click="removeClass(props.row,1)" v-if="props.row.Status==0">
<q-item-section>
<q-item-label>删除</q-item-label>
</q-item-section>
</q-item>
<q-item clickable v-close-popup @click="removeClass(props.row,0)" v-if="props.row.Status==1">
<q-item-section>
<q-item-label>恢复</q-item-label>
</q-item-section>
</q-item>
</q-list>
</q-btn-dropdown>
</q-td>
</template>
</q-table>
......@@ -118,8 +140,10 @@
} from '../../api/course/class';
//获取校区列表
import {
getSchoolDropdown
getSchoolDropdown,
deleteClass
} from '../../api/school/index';
import classForm from '../../components/course/class-form';
import classinfoForm from '../../components/course/classinfo-form';
export default {
......@@ -224,6 +248,48 @@
this.getClassList();
},
methods: {
//删除班级
removeClass(item, status) {
let delMsg = {
ClassId: item.ClassId,
Status: status
};
var message = "是否要删除该班级?";
if (status == 0) {
message = "是否要恢复该班级?";
}
this.$q.dialog({
title: '提示信息',
message: message,
cancel: true,
persistent: true,
ok: "确定",
cancel: "取消",
}).onOk(() => {
deleteClass(delMsg).then(res => {
if (res.Code == 1) {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '删除成功!',
position: 'top'
})
this.getClassList();
} else {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: res.Message,
position: 'top'
})
}
})
}).onCancel(() => {
});
},
//当前点击的班级
getClassItem(item) {
this.isShowEdit = true;
......
......@@ -2,7 +2,6 @@
<div class="page-body myOrder">
<div class="row col" style="height: 40px">
<div class="row col" style="justify-content: space-between;align-items: center;margin-bottom: 10px">
<div>
<template v-if="data&& data.ClassInfo">
{{data.ClassInfo.ClassName}}
......
......@@ -46,13 +46,13 @@
{{ x.BuyNum }}{{ x.SendNum }}
</div>
<div class="border-bottom" v-if="x.PriceDiscountType == 2">
单人报名享{{ 100 - x.PriceMoney }}折优惠
单人报名享优惠{{x.PriceMoney }}%
</div>
<div class="border-bottom" v-if="x.PriceDiscountType == 3">
双人报名{{ 100 - x.PriceMoney }}折优惠
双人报名优惠{{x.PriceMoney }}%
</div>
<div class="border-bottom" v-if="x.PriceDiscountType == 4">
续费享{{ 100 - x.PriceMoney }}折优惠
续费享优惠{{x.PriceMoney }}%
</div>
<div class="remark-font" v-if="x.PriceDiscountType == 0">
暂无优惠政策
......@@ -119,7 +119,7 @@
</template>
<template v-slot:body-cell-Status="props">
<q-td :props="props">
<q-badge :color="props.value == 1 ? 'negative' : 'primary'" :label="props.value == 0 ? '正常' : '禁用'" />
<q-badge :color="props.value == 1 ? 'negative' : 'primary'" :label="props.value == 0 ? '正常' : '删除'" />
</q-td>
</template>
<template v-slot:bottom>
......@@ -132,8 +132,25 @@
@click="EditCourse(props.row, 1)" />
<q-btn flat size="xs" icon="edit" color="accent" style="font-weight:400" label="价格设置"
@click="EditCourse(props.row, 2)" v-if="isHavePriceAction" />
<!-- <q-btn flat size="xs" icon="edit" color="accent" style="font-weight:400;" label="详情"
@click="goMycourse(props.row)" /> -->
<q-btn-dropdown flat size="xs" color="dark" label="更多" style="margin-left:10px;">
<q-list>
<q-item clickable v-close-popup @click="DeleteCourse(props.row,1)" v-if="props.row.Status==0">
<q-item-section>
<q-item-label>删除</q-item-label>
</q-item-section>
</q-item>
<q-item clickable v-close-popup @click="DeleteCourse(props.row,0)" v-if="props.row.Status==1">
<q-item-section>
<q-item-label>恢复</q-item-label>
</q-item-section>
</q-item>
<q-item style="display:none;" clickable v-close-popup @click="goMycourse(props.row)">
<q-item-section>
<q-item-label>详情</q-item-label>
</q-item-section>
</q-item>
</q-list>
</q-btn-dropdown>
</q-td>
</template>
</q-table>
......@@ -149,7 +166,8 @@
<script>
import {
queryCoursePage,
queryCourseCategoryTree
queryCourseCategoryTree,
deleteCourseInfo
} from "../../api/course/index";
import courseForm from "../../components/course/course-form";
import coursepriceForm from "../../components/course/courseprice-form";
......@@ -285,7 +303,7 @@
CourseName: "",
QCateIds: "",
IsQPrice: 1,
Status: "-1"
Status: "0"
},
//课程分类树形列表
TreeCategoryList: [],
......@@ -299,7 +317,8 @@
},
computed: mapState({
isHavePriceAction(state) {
if (state.user.userInfo&&state.user.userInfo.ActionMenuList&&state.user.userInfo.ActionMenuList.length>0) {
if (state.user.userInfo && state.user.userInfo.ActionMenuList && state.user.userInfo.ActionMenuList.length >
0) {
let action = state.user.userInfo.ActionMenuList.find(x => {
if (x.FunctionCode == "Edit_CoursePrice") {
return x;
......@@ -316,6 +335,48 @@
this.getcourselist();
},
methods: {
//删除课程
DeleteCourse(item, status) {
let delMsg = {
CourseId: item.CourseId,
Status: status
};
var message = "是否要删除该课程?";
if (status == 0) {
message = "是否要恢复该课程?";
}
this.$q.dialog({
title: '提示信息',
message: message,
cancel: true,
persistent: true,
ok: "确定",
cancel: "取消",
}).onOk(() => {
deleteCourseInfo(delMsg).then(res => {
if (res.Code == 1) {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '删除成功!',
position: 'top'
})
this.getcourselist();
} else {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: res.Message,
position: 'top'
})
}
})
}).onCancel(() => {
});
},
gotoSub(obj, routeStr) {
var tempStr = "/course/" + routeStr + "?CourseId=" + obj.CourseId;
this.$router.push({
......@@ -403,7 +464,9 @@
padding-bottom: 5px;
margin-bottom: 5px;
}
</style>
<style lang="sass">
@import url('~assets/css/table.sass')
</style>
......@@ -612,7 +612,48 @@
CompanyList: [],
CostTypeList: [],
myAuditList: [],
levelList: [],
levelList: [
{
level:1,
name:'第1级主管'
},
{
level:2,
name:'第2级主管'
},
{
level:3,
name:'第3级主管'
},
{
level:4,
name:'第4级主管'
},
{
level:5,
name:'第5级主管'
},
{
level:6,
name:'第6级主管'
},
{
level:7,
name:'第7级主管'
},
{
level:8,
name:'第8级主管'
},
{
level:9,
name:'第9级主管'
},
{
level:10,
name:'第10级主管'
},
],
showMember: [],
memberList: [],
memberSetCheckedKeys: [],
......@@ -746,7 +787,7 @@
// this.addMsg.PropertyType="";
this.getPropertyType();
}
this.getMaxDepartmentTierList();
// this.getMaxDepartmentTierList();
if (this.TemplateId != 0) {
this.getList();
} else {
......@@ -1662,6 +1703,7 @@
},
getMaxDepartmentTierList() { // 获取直接主管层级
this.apipost('admin_get_GetMaxDepartmentTier', {}, res => {
console.log(res,'数据');
if (res.data.resultCode == 1) {
let data = res.data.data;
let newList = [];
......
......@@ -1233,7 +1233,8 @@
getSchoolPage
} from '../../../api/school/index'
import {
getClassNameList
getClassNameList,
queryStudyNameList
} from '../../../api/finance/index'
export default {
......@@ -1944,7 +1945,8 @@
this.total = res.data.data.count;
this.loading = false;
this.noData = false;
let da = []
let da = [];
let study = [];
if (this.total == 0) {
this.DataList = [];
this.noData = true;
......@@ -1953,12 +1955,16 @@
x.modelShow = false;
this.checkAllList.push(x.FrID)
if (x.TCIDList.length > 0) {
if (x.OrderSource == 17) {
da = da.concat(x.TCIDList)
} else if (x.OrderSource == 18) {
study = study.concat(x.TCIDList)
}
}
})
this.DataList = data;
if (da.length > 0) {
if (da && da.length > 0) {
let str = da.join(',')
getClassNameList({
ClassIds: str
......@@ -1976,6 +1982,24 @@
})
}).catch(() => {})
}
if (study && study.length > 0) {
let str = study.join(',')
queryStudyNameList({
Ids: str
}).then(res => {
this.DataList.forEach(x => {
if (x.TCIDList.length > 0) {
x.TCIDList.forEach(z => {
res.Data.forEach(j => {
if (z == j.ClassId) {
x.TCIDAndTCNUMList.push(j)
}
})
})
}
})
}).catch(() => {})
}
}
} else {
this.loading = false;
......
......@@ -92,11 +92,11 @@
<q-item-label>提交审核</q-item-label>
</q-item-section>
</q-item>
<q-item clickable v-close-popup @click="copyContract(props.row)">
<!-- <q-item clickable v-close-popup @click="copyContract(props.row)">
<q-item-section>
<q-item-label>复制合同</q-item-label>
</q-item-section>
</q-item>
</q-item> -->
<q-item clickable v-close-popup v-if="props.row.Status==2" @click="downloadContract(props.row)">
<q-item-section>
<q-item-label>下载</q-item-label>
......
......@@ -149,13 +149,28 @@
{{ x.BuyNum }}{{ x.SendNum }}
</div>
<div class="border-bottom" v-if="x.PriceDiscountType == 2">
单人报名享{{ 100 - x.PriceMoney }}折优惠
<template v-if="x.PriceMoney>0">
单人报名优惠{{x.PriceMoney}}%
</template>
<template v-else>
单人报名无优惠
</template>
</div>
<div class="border-bottom" v-if="x.PriceDiscountType == 3">
双人报名享{{ 100 - x.PriceMoney }}折优惠
<template v-if="x.PriceMoney>0">
双人报名优惠{{x.PriceMoney}}%
</template>
<template v-else>
双人报名无优惠
</template>
</div>
<div class="border-bottom" v-if="x.PriceDiscountType == 4">
续费享{{ 100 - x.PriceMoney }}折优惠
<template v-if="x.PriceMoney>0">
续费享优惠{{x.PriceMoney}}%
</template>
<template v-else>
续费无优惠
</template>
</div>
<div class="remark-font" v-if="x.PriceDiscountType == 0">
暂无优惠政策
......
This diff is collapsed.
......@@ -101,7 +101,7 @@
</div>
</div>
<div class="page-content">
<orderlist :dataList="data.List" :authObj="authObj" @success="refreshClassOrder" ref="orderL" :isEdit="false">
<orderlist :dataList="data.List" :authObj="authObj" @success="refreshClassOrder" ref="orderL" >
</orderlist>
<div class="row" style="justify-content: flex-end;padding: 5px 20px">
<q-pagination v-model="msg.pageIndex" :max="pageCount" @input="changePage" class="full-width justify-end"
......@@ -175,6 +175,7 @@
isShowSaleRemark: true, //显示修改销售备注
isShowBackClass: true, //显示退课按钮
isShowRenewClass: true, //显示续课按钮
isShowOperate:false,//不显示操作列
},
EmployeeList:[],//业务员
}
......
This diff is collapsed.
......@@ -84,7 +84,7 @@
</div>
</div>
<div class="page-content">
<orderlist :dataList="data.List" :authObj="authObj" @success="refreshClassOrder" ref="orderL" :isEdit="false">
<orderlist :dataList="data.List" :authObj="authObj" @success="refreshClassOrder" ref="orderL" >
</orderlist>
<div class="row" style="justify-content: flex-end;padding: 5px 20px">
<q-pagination v-model="msg.pageIndex" :max="pageCount" @input="changePage" class="full-width justify-end"
......@@ -156,6 +156,7 @@
isShowFinanceBtn: true, //显示财务单据按钮
isShowTransOrder: true, //显示转交订单按钮
isShowSaleRemark: true, //显示修改销售备注
isShowOperate:false,//不显示操作列
},
EmployeeList:[],//业务员
......
......@@ -37,32 +37,29 @@
{{ x.BuyNum }}{{ x.SendNum }}
</div>
<div class="border-bottom" v-if="x.PriceDiscountType == 2">
单人报名
单人报名优惠
<template v-if="x.PriceType==0">
{{ 100 - x.PriceMoney }}
{{x.PriceMoney}}%
</template>
<template v-else>
{{x.PriceMoney}}
</template>
优惠
</div>
<div class="border-bottom" v-if="x.PriceDiscountType == 3">
双人报名享<template v-if="x.PriceType==0">
{{ 100 - x.PriceMoney }}
双人报名享优惠<template v-if="x.PriceType==0">
{{x.PriceMoney }}%
</template>
<template v-else>
{{x.PriceMoney}}
</template>
优惠
</div>
<div class="border-bottom" v-if="x.PriceDiscountType == 4">
续费<template v-if="x.PriceType==0">
{{ 100 - x.PriceMoney }}
续费优惠<template v-if="x.PriceType==0">
{{x.PriceMoney}}%
</template>
<template v-else>
{{x.PriceMoney}}
</template>
优惠
</div>
<div class="remark-font" v-if="x.PriceDiscountType == 0">
暂无优惠政策
......@@ -123,9 +120,8 @@
<q-dialog v-model="showForm" persistent>
<quotationstudy-form :obj="null" @save="showForm=false"></quotationstudy-form>
</q-dialog>
<studyorder-form v-if="isShowOrderForm" :saveObj="studyObj" @save="refreshPage()"></studyorder-form>
<editorderForm v-if="isShowOrderForm" :save-obj="studyObj" :orderType="2" @close="cloStudyform"
@save="refreshPage()"></editorderForm>
</div>
</div>
</template>
......@@ -135,7 +131,7 @@
queryStudyAbroadPage
} from '../../api/studyabroad/index'
import quotationstudyForm from '../../components/sale/quotationstudy-form'
import studyorderForm from '../../components/sale/studyorder-form'
import editorderForm from '../../components/sale/editorder-form'
import {
mapState
} from "vuex";
......@@ -146,7 +142,7 @@
},
components: {
quotationstudyForm,
studyorderForm
editorderForm
},
data() {
return {
......@@ -226,16 +222,6 @@
field: 'Id'
}
],
//审核类型
AuditStateList: [{
Id: 1,
Name: "待审核"
},
{
Id: 2,
Name: "已审核"
},
],
//项目类型列表
studyAbroadList: [{
Id: 1,
......@@ -255,20 +241,30 @@
PageCount: 0,
showForm: false, //是否显示报价单弹窗
isShowOrderForm: false, //是否显示订单弹窗
studyObj: {}, //留学就业对象
//留学就业对象
studyObj: {
SourceId: 0, //留学就业产品编号
Unit_Price: 0, //留学就业价格
},
}
},
mounted() {
this.getList();
},
created() {
if (this.$route.query.Name) {
this.msg.Name = this.$route.query.Name;
}
},
methods: {
cloStudyform() {
this.isShowOrderForm = false;
},
//显示下单弹窗
showOrderForm(item) {
this.isShowOrderForm = true;
this.studyObj = item;
this.studyObj.Unit_Price = item.SellPrice;
this.studyObj.SourceId = item.Id;
},
//显示报价单弹窗
createQuotation() {
......@@ -295,30 +291,13 @@
this.msg.pageIndex = val;
this.getList();
},
//关闭弹窗
closeStudyForm() {
this.isShowStudyAudit = false;
},
closeStudyInfo() {
this.isShowInfo = false;
},
//留学就业审核
AuditStudy(obj) {
this.studyObj = obj;
this.isShowStudyAudit = true;
},
//刷新页面
refreshPage() {
this.showForm = false;
this.isShowOrderForm = false;
this.studyObj = {};
this.studyObj.SourceId = 0;
this.studyObj.Unit_Price = 0;
this.getList();
},
//审核详情
getviewInfo(obj) {
this.studyObj = obj;
this.isShowInfo = true;
}
}
}
......
......@@ -134,7 +134,7 @@
<template v-slot:body-cell-optioned="props">
<q-td :props="props">
<div>
<template v-if="props.row.Status==1">
<template v-if="props.row.Status==1 || props.row.NewStatus==1">
<q-btn flat size="xs" icon="edit" color="accent" style="font-weight:400" label="开始值班"
@click="StartSchedule(props.row)" />
</template>
......
<style>
.Sysuser_Date .el-range-editor .el-range-input {
background-color: transparent;
}
.Sysuser_Date .el-range-editor.el-input__inner {
background-color: transparent;
}
.syster_qDropdown .q-btn__wrapper {
padding: 0 3px;
min-height: 0 !important;
}
.receiveNumList .ColorSpan {
width: 24px;
height: 24px;
line-height: 24px;
border-radius: 50%;
display: inline-block;
text-align: center;
font-size: 12px;
font-family: Microsoft YaHei;
}
.receiveNumList .huangSpan {
background: #FFE4D5;
color: #FFA87C;
}
.receiveNumList .greenSpan {
background: #BEEFF0;
color: #089bab;
}
.receiveNumList .purpleSpan {
background: #D7D6FF;
color: #7B78FF;
}
.receiveNumList .buleSpan {
background: #D4EAFF;
color: #73B8FF;
}
.receiveNumList .redSpan {
background: #FFD6D5;
color: #FF7874;
}
</style>
<template>
<div class="page-body receiveNumList">
<div class="page-search row items-center">
<div class="col row wrap q-mr-lg q-col-gutter-md">
<div class="col-3">
<q-input @input="resetSearch" clearable standout="bg-primary text-white" v-model="msg.Name"
label="资产名称" maxlength="20" />
</div>
<div class="col-3">
<q-input @input="resetSearch" clearable standout="bg-primary text-white" v-model="msg.PropertyNum"
label="资产编码" maxlength="20" />
</div>
<div class="col-3">
<q-input @input="resetSearch" clearable standout="bg-primary text-white" v-model="msg.SerialNumber"
label="序列号" maxlength="20" />
</div>
<div class="col-3">
<q-select v-model="msg.EmployeeId" :options="EmployeeList" filled clearable use-input label="使用人"
option-label="EmployeeName" option-value="Id" ref="EmployeeName" class="col-6" emit-value
map-options @input="resetSearch" @filter="filterFn">
<template v-slot:no-option>
<q-item>
<q-item-section class="text-grey">
未找到相关数据
</q-item-section>
</q-item>
</template>
</q-select>
</div>
<div class="col-3 Sysuser_Date">
<q-field filled>
 <template v-slot:control>
<el-date-picker v-model="dateListOne" @change="resetSearch()" value-format="yyyy-MM-dd" type="daterange" style="border:none;"
 range-separator="至"  start-placeholder="开始日期"  end-placeholder="结束日期">
 </el-date-picker>       
</template>
</q-field>
</div>
</div>
</div>
<div class="page-content">
<q-table :pagination="msg" :loading="loading" no-data-label="暂无相关数据" flat
class="sticky-right-column-table sticky-column-table" separator="none"
:data="data" :columns="columns" row-key="Id">
<template v-slot:body-cell-PropertyStatus="props">
<q-td>
<span class="commonStyle hoverSpan1"></span>
<span class="ColorSpan huangSpan" v-if="props.row.PropertyStatus == 1"></span>
<span class="ColorSpan greenSpan" v-if="props.row.PropertyStatus == 2"></span>
<span class="ColorSpan redSpan" v-if="props.row.PropertyStatus == 3"></span>
<span class="ColorSpan buleSpan" v-if="props.row.PropertyStatus == 4"></span>
<span class="ColorSpan redSpan" v-if="props.row.PropertyStatus == 10"></span>
<span
class="ColorSpan purpleSpan"
v-if="
props.row.PropertyStatus == 5 ||
props.row.PropertyStatus == 7 ||
props.row.PropertyStatus == 9 ||
props.row.PropertyStatus == 6 ||
props.row.PropertyStatus == 8
"
></span
>
<span class="q-ml-md text-blue cursor-pointer" style="color:#2961FE;margin-left:10px;cursor:pointer;" title="">{{props.row.PropertyStatusName}}</span>
</q-td>
</template>
<template v-slot:body-cell-EmName="props">
<div>{{props.row.EmName}}</div>
<div>{{props.row.GetTime}}</div>
</template>
<template v-slot:bottom>
<q-pagination class="full-width justify-end" v-model="msg.pageIndex" color="primary" :max="pageCount"
:input="true" @input="changePage" />
</template>
</q-table>
</div>
</div>
</template>
<script>
import {
propertyGetPageList
} from '../../api/school/index'
import {
queryEmployee
} from '../../api/users/user'; //获取员工
export default {
meta: {
title: "员工管理"
},
components: {
},
data() {
return {
currentUrl: "",
columns: [
{
name: 'PropertyStatus',
required: true,
label: '资产状态',
align: 'left',
field: row => row.PropertyStatus
},
{
name: 'PropertyNum',
label: '资产编码',
field: 'PropertyNum',
align: 'left',
},
{
name: 'Name',
label: '资产名称',
field: 'Name',
align: 'left',
},
{
name: 'CategoryName',
label: '分类名称',
field: 'CategoryName',
align: 'left',
},
{
name: 'BrandName',
label: '品牌名称',
field: 'BrandName',
align: 'left'
},
{
name: 'Money',
label: '金额',
align: 'left',
field: 'Money'
},
{
name: 'BuyDate',
label: '购置日期',
field: 'BuyDate',
align: 'left'
},
{
name: 'UseStatusName',
label: '使用状态',
field: 'UseStatusName',
align: 'left'
},
{
name: 'PropertyModel',
label: '型号',
field: 'PropertyModel',
align: 'left'
},
{
name: 'EmName',
required: true,
label: '使用说明',
align: 'left',
field: row => row.EmName
},
],
data: [],
loading: true,
msg: {
pageIndex: 1,
pageSize: 10,
rowsPerPage: 10,
Name: "",
PropertyNum: "",
SerialNumber: "",
CategoryId: "",
PropertyStatus: "",
EmployeeId: "",
SupplierId: "",
StartTime: "",
EndTime: ""
},
dateListOne:[],//开始时间
selected:[],
isShowEmpInfo: false, //是否显示员工信息
EmployeeList: [], //员工列表
AllemployeeList: [], //所有员工列表
}
},
mounted() {
this.getEmployee();
},
methods: {
resetSearch() {
this.msg.pageIndex = 1;
if(this.msg.Name==null){
this.msg.Name =''
}
if(this.msg.PropertyNum==null){
this.msg.PropertyNum =''
}
if(this.msg.SerialNumber==null){
this.msg.SerialNumber =''
}
this.getManager()
},
changePage(val) {
this.msg.pageIndex = val;
this.getManager();
},
//筛选员工
filterFn(val, update) {
update(() => {
if (val === '') {
this.EmployeeList = JSON.parse(JSON.stringify(this.AllemployeeList))
} else {
const needle = val.toLowerCase();
this.EmployeeList = this.AllemployeeList.filter(v => v.EmployeeName.toLowerCase().indexOf(needle) > -1);
}
})
},
//获取业务员
getEmployee() {
var qMsg = {
Dept_Id: 0
}
queryEmployee(qMsg).then(res => {
if (res.Code == 1) {
this.EmployeeList = res.Data;
this.AllemployeeList = res.Data;
}
}).catch(() => {})
if(this.$route.query){
this.msg.EmployeeId =Number(this.$route.query.id) ;
this.getManager()
}
},
getManager() {
this.loading = true;
if (this.dateListOne && this.dateListOne.length > 0) {
this.msg.StartTime = this.dateListOne[0];
this.msg.EndTime = this.dateListOne[1];
} else {
this.msg.StartEntryTime = '';
this.msg.EndTime = '';
}
propertyGetPageList(this.msg).then(res => {
this.data = res.data.data.pageData;
this.pageCount = res.data.data.pageCount;
this.loading = false;
}).catch(() => {
this.loading = false;
})
},
getEmpInfoInfo(row){
}
},
}
</script>
<style lang="sass">
@import url('~assets/css/table.sass')
</style>
......@@ -105,6 +105,14 @@
@click="getEmpInfoInfo(props.row)" title="点击查看详情">{{props.value}}</span>
</q-td>
</template>
<template v-slot:body-cell-PropertyNumber="props">
<q-td :props="props">
<span class="q-ml-md text-blue cursor-pointer" style="color:#2961FE;margin-left:10px;cursor:pointer;"
@click="goeduyhsl(props.row)" title="点击查看详情">{{props.value}}</span>
</q-td>
</template>
<template v-slot:body-cell-StuSex="props">
<q-td :props="props">
<q-badge :color="props.value==1?'negative':'primary'" :label="props.value==1?'女':'男'" />
......@@ -190,7 +198,8 @@
getSchoolDropdown,
deleteManagerInfo,
createManagerAccount,
GetLeaveStatus
GetLeaveStatus,
getEduEmployeeNumList
} from '../../api/school/index'
import {
BatchResetUserPassword
......@@ -292,11 +301,19 @@
field: 'DirectSupervisorName',
align: 'left',
},
{
name: 'AccountRemark',
label: '行政备注',
field: 'AccountRemark',
align: 'left',
},
{
name: 'PropertyNumber',
required: true,
label: '使用资产',
align: 'left',
field: row => row.PropertyNumber
},
{
name: 'optioned',
......@@ -545,11 +562,35 @@
this.msg.EndLeaveTime = '';
}
queryManagerPage(this.msg).then(res => {
this.loading = false;
this.data = res.Data.PageData;
this.pageCount = res.Data.PageCount;
let UserIds = [];
this.data .forEach(x=>{
UserIds.push(x.EmAccountId);
x.PropertyNumber=0
})
UserIds = UserIds.join(',')
this.loading = false;
this.geteduyhzclist(UserIds)
}).catch(() => {
this.loading = false;
})
},
geteduyhzclist(UserIds){
getEduEmployeeNumList({UserIds:UserIds}).then(res => {
this.loading = false;
let data = res.data.data
data.forEach(x=>{
this.data.map(j=>{
if(x.EmployeeId == j.EmAccountId){
j.PropertyNumber = x.PropertyNumber;
return
}
})
});
}).catch(() => {
this.loading = false
this.loading = false;
})
},
refreshPage() {
......@@ -683,6 +724,13 @@
closeEmpInfoForm() {
this.isShowEmpInfo = false;
},
//点击使用资产跳转到资产列表查看
goeduyhsl(row){
var tempStr = '/school/receiveNumList?id='+row.EmAccountId;
this.$router.push({
path: tempStr
});
}
},
}
......
......@@ -59,32 +59,29 @@
{{ x.BuyNum }}{{ x.SendNum }}
</div>
<div class="border-bottom" v-if="x.PriceDiscountType == 2">
单人报名
单人报名优惠
<template v-if="x.PriceType==0">
{{ 100 - x.PriceMoney }}
{{x.PriceMoney}}%
</template>
<template v-else>
{{x.PriceMoney}}
</template>
优惠
</div>
<div class="border-bottom" v-if="x.PriceDiscountType == 3">
双人报名享<template v-if="x.PriceType==0">
{{ 100 - x.PriceMoney }}
双人报名享优惠<template v-if="x.PriceType==0">
{{x.PriceMoney }}%
</template>
<template v-else>
{{x.PriceMoney}}
</template>
优惠
</div>
<div class="border-bottom" v-if="x.PriceDiscountType == 4">
续费<template v-if="x.PriceType==0">
{{ 100 - x.PriceMoney }}
续费优惠<template v-if="x.PriceType==0">
{{x.PriceMoney}}%
</template>
<template v-else>
{{x.PriceMoney}}
</template>
优惠
</div>
<div class="remark-font" v-if="x.PriceDiscountType == 0">
暂无优惠政策
......@@ -182,6 +179,16 @@
<q-item-label>下架</q-item-label>
</q-item-section>
</q-item>
<q-item clickable v-close-popup @click="removeStudy(props.row,1)" v-if="props.row.Status==0">
<q-item-section>
<q-item-label>删除</q-item-label>
</q-item-section>
</q-item>
<q-item clickable v-close-popup @click="removeStudy(props.row,0)" v-if="props.row.Status==1">
<q-item-section>
<q-item-label>恢复</q-item-label>
</q-item-section>
</q-item>
</q-list>
</q-btn-dropdown>
</q-td>
......@@ -217,7 +224,8 @@
import {
queryStudyAbroadPage,
saveSaleState,
querySaleStateList
querySaleStateList,
deleteStudyAbroad
} from '../../api/studyabroad/index'
import studyAbroadForm from '../../components/studyAbroad/studyAbroad-form'
import studyAbroadpriceForm from '../../components/studyAbroad/studyAbroadprice-form'
......@@ -378,6 +386,48 @@
}
},
methods: {
//删除留学就业产品
removeStudy(item, status) {
let delMsg = {
Id: item.Id,
Status: status
};
var message = "是否要删除该产品?";
if (status == 0) {
message = "是否要恢复该产品?";
}
this.$q.dialog({
title: '提示信息',
message: message,
cancel: true,
persistent: true,
ok: "确定",
cancel: "取消",
}).onOk(() => {
deleteStudyAbroad(delMsg).then(res => {
if (res.Code == 1) {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '删除成功!',
position: 'top'
})
this.getList();
} else {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: res.Message,
position: 'top'
})
}
})
}).onCancel(() => {
});
},
//跳转到留学就业订单中心
GoToOrder(item) {
this.OpenNewUrl("/studyAbroad/studyemploymentorder", {
......
This diff is collapsed.
......@@ -47,6 +47,11 @@ const routes = [{
component: () =>
import("pages/school/sysuser.vue")
},
{
path: "/school/receiveNumList", //资产的使用列表
component: () =>
import("pages/school/receiveNumList.vue")
},
{
path: "/system/menu", //菜单管理
component: () =>
......@@ -721,6 +726,11 @@ const routes = [{
component: () =>
import("pages/contractConfirm.vue")
},
{
path: "/contractPay",
component: () =>
import("pages/contractPay.vue")
},
//公告预览
{
path: "/noticeView",
......
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