增加佣金相关功能

master
董哲奇 1 week ago
parent 9766fb7ae5
commit 094e625569

@ -0,0 +1,32 @@
import request from '@/utils/request'
export function list(data) {
return request({
url: '/salary/list',
method: 'post',
data: data
})
}
export function saveOrEditSalaryBase(data) {
return request({
url: '/salary/saveOrEdit',
method: 'post',
data: data
})
}
export function delSalaryBase(data) {
return request({
url: '/salary/remove',
method: 'get',
params: data
})
}
export function listAll() {
return request({
url: '/api/salary/listAll',
method: 'post',
})
}

@ -0,0 +1,25 @@
import request from '@/utils/request'
export function list(data) {
return request({
url: '/staffSalaryBase/list',
method: 'post',
data: data
})
}
export function saveOrEditSalaryBase(data) {
return request({
url: '/staffSalaryBase/saveOrEdit',
method: 'post',
data: data
})
}
export function delSalaryBase(data) {
return request({
url: '/staffSalaryBase/remove',
method: 'get',
params: data
})
}

@ -0,0 +1,10 @@
import request from '@/utils/request'
// 查询列表
export function listAddress(data) {
return request({
url: '/api/address/list',
method: 'get',
data
})
}

@ -0,0 +1,110 @@
<template>
<el-select
v-model="staffId"
v-select-load-more="loadSalary"
filterable
:clearable="clearable"
:placeholder="placeholder"
default-first-option
size="small"
@change="handleSelect"
>
<el-option
v-for="item in staffList"
:key="item.id"
:label="item.name"
:value="item.id"
>
<div>
<div class="inline-block item">
<span class="option">{{ item.name }}({{ item.salary }})</span>
</div>
</div>
</el-option>
</el-select>
</template>
<script>
import { list } from '@/api/school/salary'
export default {
props: {
clearable: {
type: Boolean,
default: false
},
teacher: {
type: String,
default: undefined
},
placeholder: {
type: String,
default: '选择员工'
},
value: {
type: String,
default: undefined
}
},
data() {
return {
staffId: this.value,
staffList: [],
pageNum: 1,
hasMoreData: false
}
},
watch: {
value: {
handler(newValue, oldValue) {
this.staffId = newValue
},
immediate: true
}
},
created() {
this.loadSalary()
},
methods: {
loadSalary: function() {
if (this.pageNum === 1) {
list({
pageNum: this.pageNum,
pageSize: 10,
teacher: this.teacher
}).then(response => {
if (response.code === 200) {
this.staffList = response.data.rows
this.hasMoreData = response.data.rows.length > 0
this.pageNum = this.pageNum + 1
} else {
this.msgError(response.msg)
}
})
} else if (this.hasMoreData) {
list({
pageNum: this.pageNum,
pageSize: 10,
}).then(response => {
if (response.code === 200) {
this.staffList = this.staffList.concat(response.data.rows)
this.hasMoreData = response.data.rows.length > 0
this.pageNum = this.pageNum + 1
} else {
this.msgError(response.msg)
}
})
}
},
handleSelect: function(val) {
this.$emit('input', val)
this.$emit('change', val)
}
}
}
</script>
<style ref="stylesheet/scss" lang="scss" scoped>
.option{
padding-right: 15px;
color: #333;
font-weight: normal;
}
</style>

@ -0,0 +1,113 @@
<template>
<el-select
v-model="staffId"
v-select-load-more="loadStaff"
filterable
:clearable="clearable"
:placeholder="placeholder"
default-first-option
size="small"
@change="handleSelect"
>
<el-option
v-for="item in staffList"
:key="item.staffId"
:label="item.staffName"
:value="item.staffId"
>
<div>
<div class="inline-block item">
<span class="title">姓名:</span>
<span class="option">{{ item.staffName }}</span>
</div>
<div class="inline-block item">
<span class="title">联系电话:</span>
<span class="option">{{ item.phone }}</span>
</div>
</div>
</el-option>
</el-select>
</template>
<script>
import { listSchool } from '@/api/school/sc/school'
export default {
props: {
clearable: {
type: Boolean,
default: false
},
teacher: {
type: String,
default: undefined
},
placeholder: {
type: String,
default: '选择员工'
},
value: {
type: String,
default: undefined
}
},
data() {
return {
staffId: this.value,
staffList: [],
pageNum: 1,
hasMoreData: false
}
},
watch: {
value: {
handler(newValue, oldValue) {
this.staffId = newValue
},
immediate: true
}
},
created() {
this.loadStaff()
},
methods: {
loadStaff: function() {
if (this.pageNum === 1) {
listSchool({
pageNum: this.pageNum,
teacher: this.teacher
}).then(response => {
if (response.respCode === '0000') {
this.staffList = response.data.rows
this.hasMoreData = response.data.rows.length > 0
this.pageNum = this.pageNum + 1
} else {
this.msgError(response.respMsg)
}
})
} else if (this.hasMoreData) {
listSchool({
pageNum: this.pageNum
}).then(response => {
if (response.respCode === '0000') {
this.staffList = this.staffList.concat(response.data.rows)
this.hasMoreData = response.data.rows.length > 0
this.pageNum = this.pageNum + 1
} else {
this.msgError(response.respMsg)
}
})
}
},
handleSelect: function(val) {
this.$emit('input', val)
this.$emit('change', val)
}
}
}
</script>
<style ref="stylesheet/scss" lang="scss" scoped>
.option{
padding-right: 15px;
color: #333;
font-weight: normal;
}
</style>

@ -4,6 +4,7 @@ import dialogDrag from './dialog/drag'
import dialogDragWidth from './dialog/dragWidth'
import dialogDragHeight from './dialog/dragHeight'
import clipboard from './module/clipboard'
import selectLoadMore from "@/directive/select/selectLoadMore";
const install = function(Vue) {
Vue.directive('hasRole', hasRole)
@ -12,6 +13,7 @@ const install = function(Vue) {
Vue.directive('dialogDrag', dialogDrag)
Vue.directive('dialogDragWidth', dialogDragWidth)
Vue.directive('dialogDragHeight', dialogDragHeight)
Vue.directive('selectLoadMore', selectLoadMore)
}
if (window.Vue) {

@ -0,0 +1,21 @@
export default {
inserted(el, binding, vnode) {
// 获取element-ui定义好的scroll盒子
const SELECTWRAP_DOM = el.querySelector('.el-select-dropdown .el-select-dropdown__wrap')
SELECTWRAP_DOM.addEventListener('scroll', function() {
/*
* scrollHeight 获取元素内容高度(只读)
* scrollTop 获取或者设置元素的偏移值,常用于, 计算滚动条的位置, 当一个元素的容器没有产生垂直方向的滚动条, 那它的scrollTop的值默认为0.
* clientHeight 读取元素的可见高度(只读)
* 如果元素滚动到底, 下面等式返回true, 没有则返回false:
* ele.scrollHeight - ele.scrollTop === ele.clientHeight;
*/
const CONDITION = this.scrollHeight - this.scrollTop <= this.clientHeight
if (CONDITION) {
binding.value()
}
})
}
}

@ -61,6 +61,29 @@ Vue.prototype.addDateRange3 = addDateRange3
Vue.prototype.getHiddenName = getHiddenName
Vue.prototype.getHiddenDetailAddress = getHiddenDetailAddress
Vue.prototype.msgSuccess = function(msg) {
this.$message({ showClose: true, message: msg, type: 'success' })
}
Vue.prototype.msgError = function(msg) {
this.$message({ showClose: true, message: msg, type: 'error' })
}
Vue.prototype.msgWarning = function(msg) {
this.$message({ showClose: true, message: msg, type: 'warning' })
}
Vue.prototype.msgInfo = function(msg) {
this.$message.info(msg)
}
Vue.prototype.alert = function(msg, fcn) {
this.$alert(msg, '消息提醒', {
confirmButtonText: '确定',
callback: action => {
if (typeof fcn === 'function') {
fcn()
}
}
})
}
// 全局组件挂载
Vue.component('DictTag', DictTag)

@ -0,0 +1,104 @@
<template>
<div>
<el-form ref="queryForm" :model="queryParams" :inline="true" label-width="80px">
<el-form-item label="开课校区:" prop="name">
<SchoolSelect v-model="queryParams.schoolId" placeholder="请选择校区"/>
</el-form-item>
<el-form-item label="课程:" prop="name">
<course-select v-model="courseIdArray" :dept-id="queryParams.deptId" clearable multiple mounted-load-all />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
<el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd"></el-button>
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="dataList">
<el-table-column type="selection" width="55" align="center" />
<el-table-column prop="name" label="薪资配置名称" />
<el-table-column prop="salary" label="薪资金额(元)" />
<el-table-column width="150" label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-edit-outline" @click="handleUpdate(scope.row)"></el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"></el-button>
</template>
</el-table-column>
</el-table>
<pagination
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
/>
<ChangeSalaryBase ref="changeSalaryBase" @success="getList"/>
</div>
</template>
<script>
import ChangeSalaryBase from "@/views/school/salary/comps/ChangeSalaryBase.vue";
import {delSalaryBase, list} from "@/api/school/salary";
import SchoolSelect from "@/components/sc/school/schoolSelect.vue";
import courseSelect from "@/components/sc/course/courseSelect.vue";
export default {
name: 'CalTime',
components: {courseSelect, SchoolSelect, ChangeSalaryBase},
data(){
return{
loading: true,
single: true,
multiple: true,
total: 0,
dataList: [],
open: false,
courseIdArray:[],
queryParams:{
schoolId:'',
pageNum:1,
pageSize: 10,
}
}
},
created() {
this.getList()
},
methods: {
handleAdd(){
this.$refs.changeSalaryBase.handleAdd()
},
handleUpdate(row){
this.$refs.changeSalaryBase.handleUpdate(row)
},
handleDelete(){
this.$confirm('是否确认删除?', '警告', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(function() {
return delSalaryBase({id:row.id})
}).then((res) => {
this.getList()
this.msgSuccess(res.msg)
}).catch(function() {})
},
getList(){
this.loading=false
list(this.queryParams).then(res=>{
this.total=res.data.total
this.dataList=res.data.rows
})
},
handleQuery(){
this.queryParams.pageNum = 1
this.getList()
},
resetQuery(){
this.resetForm('queryForm')
this.handleQuery()
}
}
}
</script>

@ -0,0 +1,79 @@
<template>
<div>
<el-dialog title="添加基础薪资配置" :visible.sync="open" width="600px">
<el-form ref="form" :model="form" label-width="90px">
<el-row>
<el-col :span="12">
<el-form-item label="配置名称:" prop="name">
<el-input v-model="form.name" placeholder="请输入配置名称" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="金额(元):" prop="salary">
<el-input v-model="form.salary" placeholder="请输入配置名称" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {saveOrEditSalaryBase} from "@/api/school/salary";
export default {
name: 'ChangeSalaryBase',
data() {
return {
open: false,
//
form: {
name: '',
salary:null,
},
loadingSelect: false,
}
},
created() {
},
methods: {
//
cancel() {
this.open = false
this.reset()
},
reset() {
this.form = {
name:'',
salary: null,
}
this.resetForm('form')
},
handleAdd() {
this.reset()
this.open = true
this.title = '添加学生基本信息'
},
handleUpdate(row) {
this.reset()
const data=JSON.parse(JSON.stringify(row))
this.form=data
this.open = true
this.title = '修改学生基本信息'
},
/** 提交按钮 */
submitForm: function() {
saveOrEditSalaryBase(this.form).then(res=>{
this.msgSuccess(res.msg)
this.open = false
this.$emit('success')
})
},
}
}
</script>

@ -0,0 +1,82 @@
<template>
<div>
<el-dialog title="添加教师基础工资配置" :visible.sync="open" width="600px">
<el-form ref="form" :model="form" label-width="120px">
<el-row>
<el-col :span="12">
<el-form-item label="员工:" prop="name">
<staff-select v-model="form.teacherId" teacher="1" placeholder="请选择任课教师" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="薪资配置(元):" prop="salary">
<SalaryBaseSelect v-model="form.salary" placeholder="请输入配置名称" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {saveOrEditSalaryBase} from "@/api/school/salary";
import staffSelect from "@/components/system/staff/staffSelect.vue";
import SalaryBaseSelect from "@/components/sc/salary/salaryBaseSelect.vue";
export default {
name: 'ChangeStaffSalaryBase',
components: {SalaryBaseSelect, staffSelect},
data() {
return {
open: false,
//
form: {
name: '',
salary:null,
},
loadingSelect: false,
}
},
created() {
},
methods: {
//
cancel() {
this.open = false
this.reset()
},
reset() {
this.form = {
name:'',
salary: null,
}
this.resetForm('form')
},
handleAdd() {
this.reset()
this.open = true
this.title = '添加学生基本信息'
},
handleUpdate(row) {
this.reset()
const data=JSON.parse(JSON.stringify(row))
this.form=data
this.open = true
this.title = '修改学生基本信息'
},
/** 提交按钮 */
submitForm: function() {
saveOrEditSalaryBase(this.form).then(res=>{
this.msgSuccess(res.msg)
this.open = false
this.$emit('success')
})
},
}
}
</script>

@ -0,0 +1,98 @@
<template>
<div>
<el-form ref="queryForm" :model="queryParams" :inline="true" label-width="80px">
<el-form-item label="配置名称:" prop="name">
<el-input v-model="queryParams.name" placeholder="请输入薪资配置名称" clearable size="small"/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
<el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd"></el-button>
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="dataList">
<el-table-column type="selection" width="55" align="center" />
<el-table-column prop="name" label="薪资配置名称" />
<el-table-column prop="salary" label="薪资金额(元)" />
<el-table-column width="150" label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-edit-outline" @click="handleUpdate(scope.row)"></el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"></el-button>
</template>
</el-table-column>
</el-table>
<pagination
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
/>
<ChangeSalaryBase ref="changeSalaryBase" @success="getList"/>
</div>
</template>
<script>
import ChangeSalaryBase from "@/views/school/salary/comps/ChangeSalaryBase.vue";
import {delSalaryBase, list} from "@/api/school/salary";
export default {
name: 'SalaryBase',
components: {ChangeSalaryBase},
data(){
return{
loading: true,
single: true,
multiple: true,
total: 0,
dataList: [],
open: false,
queryParams:{
name:'',
pageNum:1,
pageSize: 10,
}
}
},
created() {
this.getList()
},
methods: {
handleAdd(){
this.$refs.changeSalaryBase.handleAdd()
},
handleUpdate(row){
this.$refs.changeSalaryBase.handleUpdate(row)
},
handleDelete(){
this.$confirm('是否确认删除?', '警告', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(function() {
return delSalaryBase({id:row.id})
}).then((res) => {
this.getList()
this.msgSuccess(res.msg)
}).catch(function() {})
},
getList(){
this.loading=false
list(this.queryParams).then(res=>{
this.total=res.data.total
this.dataList=res.data.rows
})
},
handleQuery(){
this.queryParams.pageNum = 1
this.getList()
},
resetQuery(){
this.resetForm('queryForm')
this.handleQuery()
}
}
}
</script>

@ -0,0 +1,103 @@
<template>
<div>
<el-form ref="queryForm" :model="queryParams" :inline="true" label-width="80px">
<el-form-item label="薪资配置:" prop="name">
<el-input v-model="queryParams.name" placeholder="请选择基础薪资" clearable size="small"/>
</el-form-item>
<el-form-item label="员工:" prop="name">
<el-input v-model="queryParams.name" placeholder="请选择员工" clearable size="small"/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
<el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd"></el-button>
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="dataList">
<el-table-column type="selection" width="55" align="center" />
<el-table-column prop="staffName" label="教师姓名" />
<el-table-column prop="salaryBaseName" label="基础薪资名称" />
<el-table-column prop="salary" label="薪资金额(元)" />
<el-table-column width="150" label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-edit-outline" @click="handleUpdate(scope.row)"></el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"></el-button>
</template>
</el-table-column>
</el-table>
<pagination
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
/>
<ChangeStaffSalaryBase ref="changeStaffSalaryBase" @success="getList"/>
</div>
</template>
<script>
import ChangeSalaryBase from "@/views/school/salary/comps/ChangeSalaryBase.vue";
import {delSalaryBase, list} from "@/api/school/salary/staff";
import ChangeStaffSalaryBase from "@/views/school/salary/comps/ChangeStaffSalaryBase.vue";
export default {
name: 'SalaryBase',
components: {ChangeStaffSalaryBase, ChangeSalaryBase},
data(){
return{
loading: true,
single: true,
multiple: true,
total: 0,
dataList: [],
open: false,
queryParams:{
name:'',
pageNum:1,
pageSize: 10,
}
}
},
created() {
this.getList()
},
methods: {
handleAdd(){
this.$refs.changeStaffSalaryBase.handleAdd()
},
handleUpdate(row){
this.$refs.changeStaffSalaryBase.handleUpdate(row)
},
handleDelete(){
this.$confirm('是否确认删除?', '警告', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(function() {
return delSalaryBase({id:row.id})
}).then((res) => {
this.getList()
this.msgSuccess(res.msg)
}).catch(function() {})
},
getList(){
this.loading=false
list(this.queryParams).then(res=>{
this.total=res.data.total
this.dataList=res.data.rows
})
},
handleQuery(){
this.queryParams.pageNum = 1
this.getList()
},
resetQuery(){
this.resetForm('queryForm')
this.handleQuery()
}
}
}
</script>

@ -1,281 +1,38 @@
<template>
<div class="app-container">
<el-form ref="queryForm" :model="queryParams" :inline="true" label-width="68px">
<el-form-item label="所属校区" prop="deptId">
<dept-select v-model="queryParams.deptId" placeholder="请输入所属校区" />
</el-form-item>
<el-form-item label="教室名" prop="roomName">
<el-input
v-model="queryParams.roomName"
placeholder="请输入教室名"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="备注" prop="memo">
<el-input
v-model="queryParams.memo"
placeholder="请输入备注"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
v-hasPermi="['sc:room:add']"
type="primary"
icon="el-icon-plus"
size="mini"
@click="handleAdd"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
v-hasPermi="['sc:room:update']"
type="primary"
icon="el-icon-edit-outline"
size="mini"
:disabled="single"
@click="handleUpdate"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
v-hasPermi="['sc:room:delete']"
type="danger"
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
>删除</el-button>
</el-col>
</el-row>
<el-table v-loading="loading" :data="dataList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column prop="deptName" label="所属校区" />
<el-table-column prop="roomName" label="教室名" />
<el-table-column prop="memo" label="备注" />
<el-table-column width="150" label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
v-hasPermi="['sc:room:update']"
size="mini"
type="text"
icon="el-icon-edit-outline"
@click="handleUpdate(scope.row)"
>修改</el-button>
<el-button
v-hasPermi="['sc:room:delete']"
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改对话框 -->
<el-dialog :title="title" :visible.sync="open" width="600px">
<el-form ref="form" v-loading="loadingChange" :model="form" :rules="rules" label-width="80px">
<el-row>
<el-col :span="12">
<el-form-item label="教室名:" prop="roomName">
<el-input v-model="form.roomName" placeholder="请输入教室名" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="所属校区:" prop="deptId">
<dept-select v-model="form.deptId" placeholder="请选择所属校区" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="备注:" prop="memo">
<el-input v-model="form.memo" type="textarea" placeholder="请输入备注" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button :loading="loadingChange" type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<el-tabs v-model="activeTab" tab-position="top" @tab-click="handleTabChange">
<el-tab-pane name="salaryBase" label="基础薪资配置">
<span slot="label" style="font-size: 16px;"><i class="el-icon-s-order" /> 基础薪资配置</span>
<SalaryBase ref="salaryBase" />
</el-tab-pane>
<el-tab-pane name="staffSalary" label="员工基础薪资">
<span slot="label" style="font-size: 16px;"><i class="el-icon-s-promotion" /> 员工基础薪资</span>
<StaffSalary ref="staffSalary" />
</el-tab-pane>
</el-tabs>
</div>
</template>
<script>
import { listRoom, getRoom, delRoom, addRoom, updateRoom } from '@/api/school/sc/room'
import deptSelect from '@/components/system/dept/deptSelect'
import SalaryBase from "@/views/school/salary/comps/SalaryBase.vue";
import StaffSalary from "@/views/school/salary/comps/StaffSalary.vue";
export default {
name: 'Room',
components: {
deptSelect
},
data() {
return {
//
loading: true,
loadingChange: false,
//
ids: [],
//
single: true,
//
multiple: true,
//
total: 0,
//
dataList: [],
//
title: '',
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
deptId: undefined,
roomName: undefined,
memo: undefined
},
//
form: {},
//
rules: {
roomName: [
{ required: true, message: '教室名不能为空', trigger: 'blur' }
]
}
name: 'Salary',
components: {StaffSalary, SalaryBase},
data(){
return{
activeTab: 'salaryBase'
}
},
created() {
this.getList()
},
methods: {
getList() {
this.loading = true
listRoom(this.queryParams).then(response => {
this.dataList = response.data.rows
this.total = response.data.total
this.loading = false
})
},
//
cancel() {
this.open = false
this.reset()
},
//
reset() {
this.form = {
deptId: undefined,
roomName: undefined,
memo: undefined
}
this.resetForm('form')
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1
this.getList()
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm('queryForm')
this.handleQuery()
},
/** 新增按钮操作 */
handleAdd(row) {
this.reset()
this.open = true
this.title = '添加教室'
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.roomId)
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset()
getRoom(row.roomId || this.ids).then(response => {
this.form = response.data
this.open = true
this.title = '修改教室'
})
},
/** 提交按钮 */
submitForm: function() {
this.$refs['form'].validate(valid => {
if (valid) {
this.loadingChange = true
if (this.form.roomId !== undefined) {
updateRoom(this.form).then(response => {
this.loadingChange = false
if (response.respCode === '0000') {
this.msgSuccess('修改成功')
this.open = false
this.getList()
} else {
this.msgError(response.respMsg)
}
}).catch(() => {
this.loadingChange = false
})
} else {
addRoom(this.form).then(response => {
this.loadingChange = false
if (response.respCode === '0000') {
this.msgSuccess('新增成功')
this.open = false
this.getList()
} else {
this.msgError(response.respMsg)
}
}).catch(() => {
this.loadingChange = false
})
}
}
})
},
/** 删除按钮操作 */
handleDelete(row) {
const id = row.roomId || this.ids
this.$confirm('是否确认删除?', '警告', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(function() {
return delRoom(id)
}).then((response) => {
if (response.respCode === '0000') {
this.getList()
this.msgSuccess('删除成功')
} else {
this.msgError(response.respMsg)
}
}).catch(function() {})
handleTabChange(){
}
}
}

@ -1,281 +1,39 @@
<template>
<div class="app-container">
<el-form ref="queryForm" :model="queryParams" :inline="true" label-width="68px">
<el-form-item label="所属校区" prop="deptId">
<dept-select v-model="queryParams.deptId" placeholder="请输入所属校区" />
</el-form-item>
<el-form-item label="教室名" prop="roomName">
<el-input
v-model="queryParams.roomName"
placeholder="请输入教室名"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="备注" prop="memo">
<el-input
v-model="queryParams.memo"
placeholder="请输入备注"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
v-hasPermi="['sc:room:add']"
type="primary"
icon="el-icon-plus"
size="mini"
@click="handleAdd"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
v-hasPermi="['sc:room:update']"
type="primary"
icon="el-icon-edit-outline"
size="mini"
:disabled="single"
@click="handleUpdate"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
v-hasPermi="['sc:room:delete']"
type="danger"
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
>删除</el-button>
</el-col>
</el-row>
<el-table v-loading="loading" :data="dataList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column prop="deptName" label="所属校区" />
<el-table-column prop="roomName" label="教室名" />
<el-table-column prop="memo" label="备注" />
<el-table-column width="150" label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
v-hasPermi="['sc:room:update']"
size="mini"
type="text"
icon="el-icon-edit-outline"
@click="handleUpdate(scope.row)"
>修改</el-button>
<el-button
v-hasPermi="['sc:room:delete']"
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改对话框 -->
<el-dialog :title="title" :visible.sync="open" width="600px">
<el-form ref="form" v-loading="loadingChange" :model="form" :rules="rules" label-width="80px">
<el-row>
<el-col :span="12">
<el-form-item label="教室名:" prop="roomName">
<el-input v-model="form.roomName" placeholder="请输入教室名" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="所属校区:" prop="deptId">
<dept-select v-model="form.deptId" placeholder="请选择所属校区" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="备注:" prop="memo">
<el-input v-model="form.memo" type="textarea" placeholder="请输入备注" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button :loading="loadingChange" type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<el-tabs v-model="activeTab" tab-position="top" @tab-click="handleTabChange">
<el-tab-pane name="salaryBase" label="课时提成设置">
<span slot="label" style="font-size: 16px;"><i class="el-icon-s-order" /> 课时提成设置</span>
<CalTime ref="salaryBase" />
</el-tab-pane>
<el-tab-pane name="staffSalary" label="销售提成设置">
<span slot="label" style="font-size: 16px;"><i class="el-icon-s-promotion" /> 销售提成设置</span>
<StaffSalary ref="staffSalary" />
</el-tab-pane>
</el-tabs>
</div>
</template>
<script>
import { listRoom, getRoom, delRoom, addRoom, updateRoom } from '@/api/school/sc/room'
import deptSelect from '@/components/system/dept/deptSelect'
import SalaryBase from "@/views/school/salary/comps/SalaryBase.vue";
import StaffSalary from "@/views/school/salary/comps/StaffSalary.vue";
import CalTime from "@/views/school/salary/comps/CalTime.vue";
export default {
name: 'Room',
components: {
deptSelect
},
data() {
return {
//
loading: true,
loadingChange: false,
//
ids: [],
//
single: true,
//
multiple: true,
//
total: 0,
//
dataList: [],
//
title: '',
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
deptId: undefined,
roomName: undefined,
memo: undefined
},
//
form: {},
//
rules: {
roomName: [
{ required: true, message: '教室名不能为空', trigger: 'blur' }
]
}
name: 'Salary',
components: {CalTime, StaffSalary, SalaryBase},
data(){
return{
activeTab: 'salaryBase'
}
},
created() {
this.getList()
},
methods: {
getList() {
this.loading = true
listRoom(this.queryParams).then(response => {
this.dataList = response.data.rows
this.total = response.data.total
this.loading = false
})
},
//
cancel() {
this.open = false
this.reset()
},
//
reset() {
this.form = {
deptId: undefined,
roomName: undefined,
memo: undefined
}
this.resetForm('form')
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1
this.getList()
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm('queryForm')
this.handleQuery()
},
/** 新增按钮操作 */
handleAdd(row) {
this.reset()
this.open = true
this.title = '添加教室'
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.roomId)
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset()
getRoom(row.roomId || this.ids).then(response => {
this.form = response.data
this.open = true
this.title = '修改教室'
})
},
/** 提交按钮 */
submitForm: function() {
this.$refs['form'].validate(valid => {
if (valid) {
this.loadingChange = true
if (this.form.roomId !== undefined) {
updateRoom(this.form).then(response => {
this.loadingChange = false
if (response.respCode === '0000') {
this.msgSuccess('修改成功')
this.open = false
this.getList()
} else {
this.msgError(response.respMsg)
}
}).catch(() => {
this.loadingChange = false
})
} else {
addRoom(this.form).then(response => {
this.loadingChange = false
if (response.respCode === '0000') {
this.msgSuccess('新增成功')
this.open = false
this.getList()
} else {
this.msgError(response.respMsg)
}
}).catch(() => {
this.loadingChange = false
})
}
}
})
},
/** 删除按钮操作 */
handleDelete(row) {
const id = row.roomId || this.ids
this.$confirm('是否确认删除?', '警告', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(function() {
return delRoom(id)
}).then((response) => {
if (response.respCode === '0000') {
this.getList()
this.msgSuccess('删除成功')
} else {
this.msgError(response.respMsg)
}
}).catch(function() {})
handleTabChange(){
}
}
}

@ -1,282 +1,26 @@
<template>
<div class="app-container">
<el-form ref="queryForm" :model="queryParams" :inline="true" label-width="68px">
<el-form-item label="所属校区" prop="deptId">
<dept-select v-model="queryParams.deptId" placeholder="请输入所属校区" />
</el-form-item>
<el-form-item label="教室名" prop="roomName">
<el-input
v-model="queryParams.roomName"
placeholder="请输入教室名"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="备注" prop="memo">
<el-input
v-model="queryParams.memo"
placeholder="请输入备注"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
v-hasPermi="['sc:room:add']"
type="primary"
icon="el-icon-plus"
size="mini"
@click="handleAdd"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
v-hasPermi="['sc:room:update']"
type="primary"
icon="el-icon-edit-outline"
size="mini"
:disabled="single"
@click="handleUpdate"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
v-hasPermi="['sc:room:delete']"
type="danger"
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
>删除</el-button>
</el-col>
</el-row>
<el-table v-loading="loading" :data="dataList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column prop="deptName" label="所属校区" />
<el-table-column prop="roomName" label="教室名" />
<el-table-column prop="memo" label="备注" />
<el-table-column width="150" label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
v-hasPermi="['sc:room:update']"
size="mini"
type="text"
icon="el-icon-edit-outline"
@click="handleUpdate(scope.row)"
>修改</el-button>
<el-button
v-hasPermi="['sc:room:delete']"
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改对话框 -->
<el-dialog :title="title" :visible.sync="open" width="600px">
<el-form ref="form" v-loading="loadingChange" :model="form" :rules="rules" label-width="80px">
<el-row>
<el-col :span="12">
<el-form-item label="教室名:" prop="roomName">
<el-input v-model="form.roomName" placeholder="请输入教室名" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="所属校区:" prop="deptId">
<dept-select v-model="form.deptId" placeholder="请选择所属校区" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="备注:" prop="memo">
<el-input v-model="form.memo" type="textarea" placeholder="请输入备注" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button :loading="loadingChange" type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<el-tabs>
<el-tab-pane label="基础薪资配置" name="first">基础薪资配置</el-tab-pane>
<el-tab-pane label="员工基础薪资" name="second">员工基础薪资</el-tab-pane>
</el-tabs>
</div>
</template>
<script>
import { listRoom, getRoom, delRoom, addRoom, updateRoom } from '@/api/school/sc/room'
import deptSelect from '@/components/system/dept/deptSelect'
export default {
name: 'Room',
components: {
deptSelect
},
data() {
return {
//
loading: true,
loadingChange: false,
//
ids: [],
//
single: true,
//
multiple: true,
//
total: 0,
//
dataList: [],
//
title: '',
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
deptId: undefined,
roomName: undefined,
memo: undefined
},
//
form: {},
//
rules: {
roomName: [
{ required: true, message: '教室名不能为空', trigger: 'blur' }
]
}
name: 'Salary',
data(){
return{
}
},
created() {
this.getList()
},
methods: {
getList() {
this.loading = true
listRoom(this.queryParams).then(response => {
this.dataList = response.data.rows
this.total = response.data.total
this.loading = false
})
},
//
cancel() {
this.open = false
this.reset()
},
//
reset() {
this.form = {
deptId: undefined,
roomName: undefined,
memo: undefined
}
this.resetForm('form')
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1
this.getList()
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm('queryForm')
this.handleQuery()
},
/** 新增按钮操作 */
handleAdd(row) {
this.reset()
this.open = true
this.title = '添加教室'
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.roomId)
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset()
getRoom(row.roomId || this.ids).then(response => {
this.form = response.data
this.open = true
this.title = '修改教室'
})
},
/** 提交按钮 */
submitForm: function() {
this.$refs['form'].validate(valid => {
if (valid) {
this.loadingChange = true
if (this.form.roomId !== undefined) {
updateRoom(this.form).then(response => {
this.loadingChange = false
if (response.respCode === '0000') {
this.msgSuccess('修改成功')
this.open = false
this.getList()
} else {
this.msgError(response.respMsg)
}
}).catch(() => {
this.loadingChange = false
})
} else {
addRoom(this.form).then(response => {
this.loadingChange = false
if (response.respCode === '0000') {
this.msgSuccess('新增成功')
this.open = false
this.getList()
} else {
this.msgError(response.respMsg)
}
}).catch(() => {
this.loadingChange = false
})
}
}
})
},
/** 删除按钮操作 */
handleDelete(row) {
const id = row.roomId || this.ids
this.$confirm('是否确认删除?', '警告', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(function() {
return delRoom(id)
}).then((response) => {
if (response.respCode === '0000') {
this.getList()
this.msgSuccess('删除成功')
} else {
this.msgError(response.respMsg)
}
}).catch(function() {})
}
}
}
</script>

@ -4,10 +4,10 @@
<el-form-item label="省份编码" prop="provinceCode">
<el-select v-model="queryParams.provinceCode" placeholder="请选择省份编码" clearable size="small">
<el-option
v-for="dict in provinceCodeOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
v-for="item in provinceCodeOptions"
:key="item.id"
:label="item.name"
:value="item.code"
/>
</el-select>
</el-form-item>
@ -15,9 +15,9 @@
<el-select v-model="queryParams.cityCode" placeholder="请选择区号" clearable size="small">
<el-option
v-for="dict in cityCodeOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
:key="dict.id"
:label="dict.name"
:value="dict.code"
/>
</el-select>
</el-form-item>
@ -158,7 +158,7 @@
<script>
import { listSchool, getSchool, delSchool, addSchool, updateSchool } from '@/api/school/sc/school'
import {listAddress} from "@/api/school/sc/address";
export default {
name: 'School',
data() {
@ -187,6 +187,7 @@ export default {
queryParams: {
pageNum: 1,
pageSize: 10,
level:0,
provinceCode: undefined,
cityCode: undefined,
schoolName: undefined
@ -206,7 +207,7 @@ export default {
handler(newValue, oldValue) {
if (newValue) {
this.form.cityCode = undefined
this.dictTypeDataListByParentValue('city_code', newValue).then(response => {
this.listAddress({parentCode:newValue}).then(response => {
this.cityCodeOptions = response.data
})
}
@ -215,7 +216,7 @@ export default {
},
created() {
this.getList()
this.getDictListByDictType('province_code').then(response => {
listAddress({level:this.queryParams.level}).then(response => {
this.provinceCodeOptions = response.data
})
},

Loading…
Cancel
Save