Commit b13dcce1 authored by zhengke's avatar zhengke

修改

parent f3f60cd6
......@@ -12,7 +12,7 @@ export default {
<style>
@import url('~assets/css/font.css');
@import url('//at.alicdn.com/t/font_2077629_xtjfp2lxt9g.css');
@import url('//at.alicdn.com/t/font_2077629_8mt7fp1wle5.css');
html,
body,
......
import request from '../../utils/request'
/**
* 获取日语培训列表
*
*/
export function GetEducationContractPageList(data) {
return request({
url: '/EducationContract/GetEducationContractPageList',
method: 'post',
data
})
}
/**
* 获取合同详情
*
*/
export function GetEducationContractInfo(data) {
return request({
url: '/EducationContract/GetEducationContractInfo',
method: 'post',
data
})
}
/**
* 保存合同
*
*/
export function SetEducationContractInfo(data) {
return request({
url: '/EducationContract/SetEducationContractInfo',
method: 'post',
data
})
}
/**
* 合同操作
*
*/
export function SetEducationContractAudit(data) {
return request({
url: '/EducationContract/SetEducationContractAudit',
method: 'post',
data
})
}
/**
* 合同操作-下载pdf
*
*/
export function GetDownLoadEducationContract(data) {
return request({
url: '/EducationContract/GetDownLoadEducationContract',
method: 'post',
data
})
}
/**
* 合同操作-复制
*
*/
export function SetEducationContractCopy(data) {
return request({
url: '/EducationContract/SetEducationContractCopy',
method: 'post',
data
})
}
/**
* 保存签名
*
*/
export function SetEducationContractSign(data) {
return request({
url: '/EducationContract/SetEducationContractSign',
method: 'post',
data
})
}
<template>
<q-dialog v-model="persistent" content-class="bg-grey-1" persistent transition-show="scale" transition-hide="scale">
<q-card style="width: 800px;max-width:900px;">
<q-card-section>
<div class="text-h6">{{objOption.Id==0?'新增合同':'修改合同'}}</div>
</q-card-section>
<q-card-section class="q-pt-none scroll" style="max-height: 70vh">
<div class="text-caption q-mb-lg q-px-md text-grey-6">基本资料</div>
<div class="row wrap">
<q-select filled stack-label option-value="Id" option-label="Name" v-model="objOption.CType" ref="CType"
:options="CTypeList" label="类型" :dense="false" class="col-6 q-pr-lg q-pb-lg" emit-value map-options
:rules="[val => !!val || '请选择所属校区']" />
<q-input filled stack-label maxlength="20" :dense="false" v-model="objOption.StudentName" ref="StudentName"
class="col-6 q-pb-lg" label="学生姓名" :rules="[val => !!val || '请填写学生姓名']" />
<q-input filled stack-label maxlength="100" :dense="false" v-model="objOption.SchoolName" ref="SchoolName"
class="col-6 q-pr-lg q-pb-lg" label="学校名称" :rules="[val => !!val || '请填写学校名称']" />
<q-input filled stack-label maxlength="100" :dense="false" v-model="objOption.CourseName" ref="CourseName"
class="col-6 q-pb-lg" label="课程名称" :rules="[val => !!val || '请填写课程名称']" />
<q-input filled stack-label maxlength="300" :dense="false" v-model="objOption.CourseContent"
ref="CourseContent" class="col-6 q-pr-lg q-pb-lg" label="课程内容" :rules="[val => !!val || '请填写课程内容']" />
<q-input filled stack-label maxlength="300" :dense="false" v-model="objOption.CNYCaps" ref="CNYCaps"
class="col-6 q-pb-lg" label="人民币大写" :rules="[val => !!val || '请填写人民币大写金额']" />
<q-input filled stack-label :dense="false" @keyup.native="checkPrice(objOption,'Money')"
v-model="objOption.Money" ref="Money" class="col-6 q-pb-lg q-pr-lg" label="金额"
:rules="[val => !!val || '请填写金额']" />
<q-input filled stack-label :dense="false" v-model="objOption.Exam" ref="Exam" class="col-6 q-pb-lg"
label="乙方当前选择考试" />
</div>
</q-card-section>
<q-separator />
<q-card-actions align="right" class="bg-white">
<q-btn label="取消" flat color="grey-10" style="font-weight:400 !important" @click="closeSaveForm" />
<q-btn label="保存" color="accent q-px-md" style="font-weight:400 !important" :loading="saveLoading"
@click="saveContract" />
</q-card-actions>
</q-card>
</q-dialog>
</template>
<script>
import {
SetEducationContractInfo,
GetEducationContractInfo
} from '../../api/sale/contract'
export default {
props: {
setingObj: {
type: Object,
default: null
}
},
data() {
return {
persistent: true,
objOption: {
Id: 0,
CType: 1, //类型1培训 2留学
StudentName: '', //学生姓名,
SchoolName: '', //学校名称
CourseName: '', //课程名称
CourseContent: '', //课程内容
CNYCaps: '', //人民币大写
Money: '', //金额
Exam: '' //乙方当前选择考试
},
//类型下拉
CTypeList: [{
Id: 1,
Name: '培训'
}, {
Id: 2,
Name: '留学'
}],
saveLoading: false,
}
},
created() {},
mounted() {
this.initObj()
},
methods: {
//保存合同
saveContract() {
this.$refs.StudentName.validate()
this.$refs.SchoolName.validate()
this.$refs.CourseName.validate()
this.$refs.CourseContent.validate()
this.$refs.CNYCaps.validate()
this.$refs.Money.validate()
if (!this.$refs.StudentName.hasError &&
!this.$refs.SchoolName.hasError &&
!this.$refs.CourseName.hasError &&
!this.$refs.CourseContent.hasError &&
!this.$refs.CNYCaps.hasError &&
!this.$refs.Money.hasError) {
SetEducationContractInfo(this.objOption).then(res => {
if (res.Code == 1) {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '修改成功!',
position: 'top'
})
}
this.$emit('success');
})
}
},
initObj() {
if (this.setingObj && this.setingObj.Id > 0) {
GetEducationContractInfo({
ContractId: this.setingObj.Id
}).then(res => {
if (res.Code == 1) {
var tempObj = res.Data;
this.objOption.Id = tempObj.Id;
this.objOption.CType = tempObj.CType;
this.objOption.StudentName = tempObj.StudentName;
this.objOption.SchoolName = tempObj.SchoolName;
this.objOption.CourseName = tempObj.CourseName;
this.objOption.CourseContent = tempObj.CourseContent;
this.objOption.CNYCaps = tempObj.CNYCaps;
this.objOption.Money = tempObj.Money;
this.objOption.Exam = tempObj.Exam;
}
})
}
},
closeSaveForm() {
this.$emit('close')
this.persistent = false
},
},
watch: {
},
}
</script>
<style>
</style>
This diff is collapsed.
<style>
</style>
<template>
<div class="page-body">
<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 @change="resetSearch" clearable standout="bg-primary text-white" v-model="msg.OrderId" label="订单id"
@clear="resetSearch" maxlength="30" />
</div>
<div class="col-3">
<q-select @input="resetSearch" standout="bg-primary text-white" option-value="Id" option-label="Name"
v-model="msg.CType" :options="CTypeList" emit-value map-options label="类型" />
</div>
<div class="col-3">
<q-select @input="resetSearch" standout="bg-primary text-white" v-model="msg.Status" :options="StatusOpts"
option-value="Id" option-label="Name" label="状态" emit-value map-options />
</div>
<div class="col-3">
<q-input @change="resetSearch" clearable standout="bg-primary text-white" v-model="msg.ContractNo"
label="合同编号" @clear="resetSearch" maxlength="30" />
</div>
<div class="col-3">
<q-input @change="resetSearch" clearable standout="bg-primary text-white" v-model="msg.StudentName"
label="学生姓名" @clear="resetSearch" maxlength="30" />
</div>
</div>
</div>
<div class="page-content">
<q-table :pagination="msg" :loading="loading" no-data-label="暂无相关数据" flat class="sticky-column-table"
separator="none" title="合同信息" :data="dataList" :columns="columns" row-key="name">
<template v-slot:top="props">
<div class="col-2 q-table__title">合同信息</div>
<q-space />
</template>
<template v-slot:body-cell-CreateByName="props">
<q-td :props="props">
<q-avatar rounded size="sm" v-if="props.row.CreateByPhoto">
<img :src="props.row.CreateByPhoto" />
</q-avatar>
<q-avatar rounded size="sm" color="teal-10" text-color="white" v-if="!props.row.CreateByPhoto">
{{props.value.substring(0,1)}}</q-avatar>
{{props.row.CreateByName}}
</q-td>
</template>
<template v-slot:body-cell-StudentName="props">
<q-td auto-width :props="props">
<span v-if="props.row.Sign" style="color:#e95252;">{{props.row.Sign}}</span>
<span v-else style="color:#e95252;">【未签字】</span>
{{props.row.StudentName}}
</q-td>
</template>
<template v-slot:body-cell-Status="props">
<q-td auto-width :props="props">
<span v-if="props.row.Status==1" style="color:#409EFF;">待审核</span>
<span v-if="props.row.Status==2" style="color:#67C23A;">审合通过</span>
<span v-if="props.row.Status==3" style="color:#F56C6C;">已驳回</span>
</q-td>
</template>
<template v-slot:body-cell-IsCompanySeal="props">
<q-td auto-width :props="props">
<span v-if="props.row.IsCompanySeal==0" style="color:#e95252;">未盖章</span>
<span v-if="props.row.IsCompanySeal==1" style="color:#67C23A;">已盖章</span>
</q-td>
</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>
<template v-slot:body-cell-optioned="props">
<q-td :props="props">
<div>
<q-btn flat size="xs" icon="edit" color="accent" style="font-weight:400" @click="operationContract(props.row,2)" label="审核通过" />
<q-btn flat size="xs" icon="edit" color="accent" style="font-weight:400" @click="operationContract(props.row,3)" label="驳回" />
<q-btn flat size="xs" icon="edit" color="accent" v-if="props.row.IsCompanySeal==0" style="font-weight:400" @click="operationContract(props.row,5)" label="盖章" />
<q-btn flat size="xs" icon="iconfont icon-View" color="accent" @click="goContract(props.row)" style="font-weight:400" label="查看" />
</div>
</q-td>
</template>
</q-table>
</div>
</div>
</template>
<script>
import {
GetEducationContractPageList,
SetEducationContractAudit
} from '../../api/sale/contract'
export default {
meta: {
title: "合同审核"
},
components: {
},
data() {
return {
columns: [{
name: 'ContractNo',
label: '合同编号',
align: 'left',
field: 'ContractNo',
},
{
name: 'StudentName',
label: '学生名称',
field: 'StudentName',
align: 'left'
},
{
name: 'CourseName',
label: '课程名称',
align: 'left',
field: 'CourseName'
},
{
name: 'CTypeName',
label: '状态',
align: 'left',
field: 'CTypeName'
},
{
name: 'CourseContent',
label: '课程内容',
align: 'left',
field: 'CourseContent'
},
{
name: 'CreateByName',
label: '创建人',
align: 'left',
field: 'CreateByName'
},
{
name: 'Status',
label: '合同状态',
align: 'left',
field: 'Status'
},
{
name: 'IsCompanySeal',
label: '是否盖章',
align: 'left',
field: 'Status'
},
{
name: 'optioned',
label: '操作',
field: 'RoomId'
}
],
loading: true,
msg: {
pageIndex: 1,
pageSize: 12,
rowsPerPage: 12,
OrderId: 0, //订单id
CType: 0, //1培训 2留学
Status: 1, //0草稿 1提交审核 2审核通过 3驳回 4取消
ContractNo: '', //合同编号
StudentName: '' //学生姓名
},
pageCount: 0,
dataList: [],
//类型下拉
CTypeList: [{
Id:0,
Name:'不限'
},{
Id: 1,
Name: '培训'
}, {
Id: 2,
Name: '留学'
}],
//状态下拉
StatusOpts: [{
Id: 1,
Name: '待审'
},{
Id: 2,
Name: '审核通过'
}, {
Id: 3,
Name: '驳回'
}],
}
},
created() {
},
mounted() {
this.getList()
},
methods: {
//获取校区列表
getList() {
this.loading = true;
GetEducationContractPageList(this.msg).then(res => {
this.loading = false;
if (res.Code == 1) {
this.dataList = res.Data.PageData;
this.pageCount = res.Data.PageCount;
console.log(res, '数据');
}
})
},
//重新查询
resetSearch() {
this.msg.pageIndex = 1;
this.getList();
},
//分页改变
changePage(val) {
this.msg.pageIndex = val;
this.getList();
},
//跳转至编辑
goContract(item){
this.$router.push({
path: 'contractEdit',
query: {
"Id": item.Id
}
})
},
//合同操作
operationContract(item,type){
let msg = {
ContractId:item.Id,
State:type
}
SetEducationContractAudit(msg).then(res => {
if (res.Code == 1) {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '修改成功!',
position: 'top'
})
this.getList();
}
})
}
},
}
</script>
<style lang="sass">
@import url('~assets/css/table.sass')
</style>
This diff is collapsed.
This diff is collapsed.
......@@ -456,6 +456,21 @@ const routes = [{
component: () =>
import("pages/sale/myOrder.vue")
},
{
path: "/sale/contractManage", //销售 合同管理
component: () =>
import("pages/sale/contractManage.vue")
},
{
path: "/sale/contractEdit", //销售 新增-编辑-查看合同
component: () =>
import("pages/sale/contractEdit.vue")
},
{
path: "/sale/contractAudit", //销售 合同审核
component: () =>
import("pages/sale/contractAudit.vue")
},
{
path: "/sale/studentList", //销售 学生名单
component: () =>
......@@ -551,6 +566,11 @@ const routes = [{
},
// Always leave this as last one,
// but you can also remove it
{
path: "/contractConfirm",
component: () =>
import("pages/contractConfirm.vue")
},
{
path: "/financial/financalDocument/PrintPage", //财务单据打印
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