Commit bda252c2 authored by 罗超's avatar 罗超

事项管理

parent 39081619
......@@ -34,4 +34,112 @@ export function getDutyFrequencyList(data) {
method: 'post',
data
})
}
/**
* 值班事项列表
* @param {JSON参数} data
*/
export function getDutyItemList(data) {
return request({
url: '/Duty/GetDutyItemList',
method: 'post',
data
})
}
/**
* 删除值班事项列表
* @param {JSON参数} data
*/
export function removeDutyItem(data) {
return request({
url: '/Duty/RemoveDutyItem',
method: 'post',
data
})
}
/**
* 值班事项类型枚举
* @param {JSON参数} data
*/
export function getItemTypeEnumList(data) {
return request({
url: '/Duty/GetItemTypeEnumList',
method: 'post',
data
})
}
/**
* 新增/修改值班事项
* @param {JSON参数} data
*/
export function getSetDutyItemModel(data) {
return request({
url: '/Duty/GetSetDutyItemModel',
method: 'post',
data
})
}
/**
* 根据班次获取学校信息
* @param {JSON参数} data
*/
export function getSchoolListByFrequencyIds(data) {
return request({
url: '/Duty/GetSchoolListByFrequencyIds',
method: 'post',
data
})
}
/**
* 根据学校id获取对应的班次
* @param {JSON参数} data
*/
export function getDutyFrequencyBySchoolIds(data) {
return request({
url: '/Duty/GetDutyFrequencyBySchoolIds',
method: 'post',
data
})
}
/**
* 获取值班设置列表
* @param {JSON参数} data
*/
export function getDutyConfigList(data) {
return request({
url: '/Duty/GetDutyConfigList',
method: 'post',
data
})
}
/**
* 新增/修改值班设置
* @param {JSON参数} data
*/
export function getSetDutyConfigModel(data) {
return request({
url: '/Duty/GetSetDutyConfigModel',
method: 'post',
data
})
}
/**
* 删除值班设置
* @param {JSON参数} data
*/
export function removeDutyConfig(data) {
return request({
url: '/Duty/RemoveDutyConfig',
method: 'post',
data
})
}
\ No newline at end of file
......@@ -56,9 +56,9 @@
</q-popup-proxy>
</q-icon>
</template>
</q-input>
</div>
</q-input>
</div>
</div>
</q-card-section>
<q-card-actions align="right" class="bg-white">
<q-btn label="取消" flat color="grey-10" style="font-weight:400 !important" @click="closeRuleForm" />
......
<template>
<q-dialog v-model="persistent" persistent content-class="bg-grey-1" transition-show="scale" transition-hide="scale">
<q-card style="width: 800px;max-width:800px;">
<q-card-section>
<div class="text-h6">{{(saveObj&&saveObj.Id>0)?"修改值班事项":"新增值班事项"}}</div>
</q-card-section>
<q-card-section class="q-pt-none scroll" style="max-height: 70vh">
<div class="row wrap">
<div class="col-6">
<q-input filled stack-label maxlength="20" :dense="false" v-model="msg.ItemName" ref="ItemName"
class="col-6 q-pr-lg q-pb-lg" label="事项名称" :rules="[val => !!val || '请填写事项名称']" />
</div>
<div class="col-6">
<q-select
stack-label
color="primary"
filled
clearable
label="选择事项类型"
option-value="Id"
option-label="Name"
:options="itemTypeOptions"
v-model="msg.ItemType"
ref="ItemType"
:rules="[val => !!val || '请选择事项类型']"
/>
</div>
</div>
<div class="row wrap">
<div class="col-6">
<q-select
stack-label
v-model="FrequencyArr"
multiple
:options="frequencyOptions"
color="primary"
filled
clearable
label="选择班次"
option-label="Name"
option-value="Id"
ref="Shifts"
@input="getSchoolListByFrequencyIds"
:rules="[val => !!val || '请选择班次']"
class="col-6 q-pr-lg q-pb-lg"
/>
</div>
<div class="col-6">
<q-select
stack-label
v-model="schoolArr"
multiple
:options="schoolOptions"
color="primary"
filled
clearable
label="选择校区"
option-label="SName"
option-value="SId"
ref="ItemSchools"
@input="getDutyFrequencyBySchoolIds"
:rules="[val => !!val || '请选择校区']"
/>
</div>
</div>
</q-card-section>
<q-card-actions align="right" class="bg-white">
<q-btn label="取消" flat color="grey-10" style="font-weight:400 !important" @click="closeRuleForm" />
<q-btn label="保存" color="accent q-px-md" style="font-weight:400 !important" @click="saveRule" />
</q-card-actions>
</q-card>
</q-dialog>
</template>
<script>
import { getSetDutyItemModel,
getSchoolListByFrequencyIds,
getDutyFrequencyBySchoolIds,
getDutyFrequencyList
} from "../../api/duty/index"
import { getSchoolDropdown } from '../../api/school/index';//获取校区列表
export default {
props: {
saveObj: {
type: Object,
default: null
},
itemTypeOptions:{
type:Array,
default:[]
},
},
data() {
return {
itemArr:[],
FrequencyArr:[],
schoolArr:[],
msg: {
Id: 0,
ItemName:"",
ItemSchools:"",
ItemType:"",
Shifts:""
},
persistent: true,
schoolOptions:[],
frequencyOptions:[],
}
},
computed: {},
created() {
this.getCompanyList();
this.getDutyFrequencyList();
},
mounted() {
console.log(this.saveObj)
if (this.saveObj && this.saveObj.Id > 0) {
let schoolids=this.saveObj.ItemSchools.split(",");
this.schoolArr=[]
console.log(schoolids,this.schoolOptions)
schoolids.map((item)=>{
this.schoolOptions.map((_item)=>{
if( _item.SId==item){
this.schoolArr.push(_item)
}
})
})
let frequencyids=this.saveObj.Shifts.split(",");
this.FrequencyArr=[]
frequencyids.map((item)=>{
this.frequencyOptions.map((_item)=>{
if( _item.Id==item){
this.FrequencyArr.push(_item)
}
})
})
this.msg.Id = this.saveObj.Id;
this.msg.ItemName = this.saveObj.ItemName;
this.msg.ItemType = this.saveObj.ItemType;
}
},
methods: {
//保存信息
saveRule() {
this.$refs.ItemName.validate();
this.$refs.ItemType.validate();
this.$refs.Shifts.validate();
this.$refs.ItemSchools.validate();
if (!this.$refs.ItemName.hasError &&
!this.$refs.ItemType.hasError &&
!this.$refs.Shifts.hasError &&
!this.$refs.ItemSchools.hasError ) {
this.msg.ItemSchools=this.schoolArr.map(item=>item.SId).toString();
getSetDutyItemModel(this.msg).then(res => {
if (res.Code == 1) {
this.$emit('success');
this.closeRuleForm();
}
})
}
},
//关闭窗口
closeRuleForm() {
this.$emit('close');
this.persistent = false
},
//根据班次获取学校信息
getSchoolListByFrequencyIds(){
let Shifts=this.FrequencyArr.map(item=>item.Id).toString();
getSchoolListByFrequencyIds({Shifts:Shifts}).then((res)=>{
this.schoolOptions = res.Data;
})
},
//根据学校id获取对应的班次
getDutyFrequencyBySchoolIds(){
let SchoolIds=this.schoolArr.map(item=>item.SId).toString();
getDutyFrequencyBySchoolIds({SchoolIds:SchoolIds}).then((res)=>{
this.frequencyOptions=res.Data
})
},
//获取校区列表
getCompanyList() {
getSchoolDropdown({}).then(res => {
if (res.Code == 1) {
this.schoolOptions = res.Data;
}
})
},
//获取班次列表
getDutyFrequencyList(){
getDutyFrequencyList({}).then(res => {
if (res.Code == 1) {
this.frequencyOptions = res.Data;
console.log(this.frequencyOptions)
}
})
},
},
}
</script>
<template>
<q-dialog v-model="persistent" persistent content-class="bg-grey-1" transition-show="scale" transition-hide="scale">
<q-card style="width: 800px;max-width:800px;">
<q-card-section>
<div class="text-h6">{{(saveObj&&saveObj.Id>0)?"修改设置":"新增设置"}}</div>
</q-card-section>
<q-card-section class="q-pt-none scroll" style="max-height: 70vh">
<div class="row wrap">
<div class="col-6">
<q-select
v-model="msg.EmployeeName"
:options="EmployeeList"
color="primary"
filled
emit-value
clearable
label="值班管理员"
option-label="EmployeeName"
optionValue="Id"
ref="EmployeeName"
:rules="[val => !!val || '请选择值班管理员']"
class="col-6 q-pr-lg q-pb-lg"
/>
</div>
<div class="col-6">
<q-input filled stack-label maxlength="20" :dense="false" v-model="msg.MachineCode" ref="MachineCode"
class="col-6 q-pr-lg q-pb-lg" label="值班机器码" :rules="[val => !!val || '请填写值班机器码']" />
</div>
</div>
<div class="row wrap">
<div class="col-6">
<q-select
v-model="ShiftsNameArr"
multiple
:options="frequencyOptions"
color="primary"
filled
clearable
label="班次"
option-label="Name"
option-value="Id"
ref="frequency"
:rules="[val => !!val || '请选择班次']"
class="col-6 q-pr-lg q-pb-lg"
/>
</div>
</div>
</q-card-section>
<q-card-actions align="right" class="bg-white">
<q-btn label="取消" flat color="grey-10" style="font-weight:400 !important" @click="closeRuleForm" />
<q-btn label="保存" color="accent q-px-md" style="font-weight:400 !important" @click="saveRule" />
</q-card-actions>
</q-card>
</q-dialog>
</template>
<script>
import { queryEmployee } from '../../api/users/user';//获取业务员
import { getSetDutyConfigModel } from "../../api/duty/index"
export default {
props: {
saveObj: {
type: Object,
default: null
},
frequencyOptions:{
type:Array,
default:[]
}
},
data() {
return {
ShiftsNameArr:[],
msg: {
Id: 0,
EmployeeName:"",
MachineCode:"",
ShiftsName:'',
},
persistent: true,
EmployeeList:[]
}
},
computed: {},
created() {},
mounted() {
this.getEmployee(0);
if (this.saveObj && this.saveObj.Id > 0) {
let ShiftsNameids=this.saveObj.Shifts.split(",");
this.ShiftsNameArr=[]
ShiftsNameids.map((item)=>{
this.frequencyOptions.map((_item)=>{
if( _item.Id==item){
this.ShiftsNameArr.push(_item)
}
})
})
this.msg.Id = this.saveObj.Id;
this.msg.EmployeeName = this.saveObj.Name;
this.msg.MachineCode = this.saveObj.MachineCode;
this.msg.ShiftsName = this.saveObj.ShiftsName;
console.log(this.saveObj,this.frequencyOptions,ShiftsNameids)
}
},
methods: {
changeschool(){
console.log(this.msg.School_Ids)
},
//保存信息
saveRule() {
console.log(this.msg)
this.$refs.EmployeeName.validate();
this.$refs.frequency.validate();
this.$refs.MachineCode.validate();
if (!this.$refs.EmployeeName.hasError &&
!this.$refs.frequency.hasError &&
!this.$refs.MachineCode.hasError ) {
this.msg.Shifts=this.schoolArr.map(item=>item.SId).toString();
getSetDutyConfigModel(this.msg).then(res => {
if (res.Code == 1) {
this.$emit('success');
this.closeRuleForm();
}
})
}
},
//关闭窗口
closeRuleForm() {
this.$emit('close');
this.persistent = false
},
//获取业务员
getEmployee(id) {
var qMsg = {
Dept_Id: 0
}
qMsg.Dept_Id=id;
queryEmployee(qMsg).then(res => {
if(res.Code==1){
this.EmployeeList = res.Data;
}
}).catch(() => {
})
},
},
}
</script>
......@@ -4,7 +4,7 @@
<q-table :loading="loading" no-data-label="暂无相关数据" flat class="sticky-column-table"
separator="none" :data="dataList" :columns="columns" row-key="name">
<template v-slot:top="props">
<div class="col-2 q-table__title">级列表管理</div>
<div class="col-2 q-table__title">管理</div>
<q-space />
<div class="page-option">
<q-btn color="accent" size="sm" class="q-mr-md" @click="addModule(null)" label="新增" />
......
<template>
<div class="page-body">
<div class="page-content">
<q-table :loading="loading" no-data-label="暂无相关数据" flat class="sticky-column-table"
separator="none" :data="dataList" :columns="columns" row-key="name" inline>
<template v-slot:top="props">
<div class="col-2 q-table__title">值班事项管理</div>
<q-space />
<div class="page-option">
<q-btn color="accent" size="sm" class="q-mr-md" @click="addModule(null)" label="新增事项管理" />
</div>
</template>
<template v-slot:body="props">
<q-tr :props="props">
<q-td key="ItemName" :props="props" style="padding:0 15px">
<span v-if="!props.row.isEdit">{{props.row.ItemName}}</span>
<q-input v-else v-model="props.row.ItemName" dense clearable />
</q-td>
<q-td key="ItemType" :props="props">
<span v-if="!props.row.isEdit">{{props.row.ItemType}}</span>
<q-select
v-else
dense
color="primary"
filled
clearable
option-value="Id"
option-label="Name"
:options="itemTypeOptions"
v-model="props.row.ItemType"
ref="ItemType"
:rules="[val => !!val || '请选择事项类型']"
/>
</q-td>
<q-td key="ShiftsName" :props="props">
<span v-if="!props.row.isEdit">{{props.row.ShiftsName}}</span>
<q-select
v-else
dense
clearable
multiple
color="primary"
filled
option-value="Id"
option-label="Name"
:options="frequencyOptions"
v-model="props.row.ShiftsName"
ref="Shifts"
:rules="[val => !!val || '请选择归属班次']"
/>
</q-td>
<q-td key="SchoolName" :props="props">
<span v-if="!props.row.isEdit">{{props.row.SchoolName}}</span>
<q-select
v-else
clearable
dense
multiple
color="primary"
filled
option-value="SId"
option-label="SName"
:options="schoolOptions"
v-model="props.row.SchoolName"
ref="Shifts"
:rules="[val => !!val || '请选择归属校区']"
/>
</q-td>
<q-td key="optioned" :props="props">
<q-btn flat size="xs" icon="edit" color="negative" style="font-weight:400" @click="delClass(props.row.Id)"
label="删除" />
<q-btn flat size="xs" icon="edit" color="accent" style="font-weight:400" @click="props.row.isEdit=true"
label="编辑" v-if="!props.row.isEdit"/>
<q-btn flat size="xs" icon="edit" color="accent" style="font-weight:400" @click="save(props.row)"
label="保存" v-if="props.row.isEdit"/>
</q-btn>
</q-td>
</q-tr>
</template>
<template v-slot:bottom>
</template>
</q-table>
</div>
</div>
</template>
<script>
import {
getDutyItemList,
removeDutyItem,
getItemTypeEnumList,
getDutyFrequencyList,
getSetDutyItemModel
} from '../../api/duty/index';
import { getSchoolDropdown } from '../../api/school/index';//获取校区列表
import AddDutyItem from './addDutyItem';
export default {
components: {
AddDutyItem
},
data() {
return {
loading: false,
isShowsetForm: false,
ruleObj: {}, //传入参数
schoolOptions:[],//校区
itemTypeOptions:[],//事项类型
frequencyOptions:[],//班次列表
columns: [{
name: 'ItemName',
label: '事项名称',
field: 'ItemName',
align: 'left'
},
{
name: 'ItemType',
label: '类型',
field: 'ItemType',
align: 'left',
},
{
name: 'ShiftsName',
label: '归属班次',
field: 'ShiftsName',
align: 'left',
},
{
name: 'SchoolName',
label: '归属校区',
field: 'SchoolName',
align: 'left',
},
{
name: 'optioned',
label: '操作',
field: 'QuestionId'
}
],
dataList: [],
msg:{
ItemName:"",
ItemType:"",
}
}
},
mounted() {
this.getList();
this.getItemTypeEnumList();
this.getCompanyList();
this.getDutyFrequencyList();
},
methods: {
//获取值班事项类型枚举
getItemTypeEnumList(){
getItemTypeEnumList({}).then(res => {
if (res.Code == 1) {
this.itemTypeOptions = res.Data;
}
})
},
//获取数据
getList() {
getDutyItemList({}).then(res => {
if (res.Code == 1) {
res.Data.map(item=>{
item.isEdit=false
return item
})
this.dataList = res.Data;
}
})
},
//删除班次
delClass(id){
let that=this
this.$q.dialog({
title: '提示信息',
message: '是否确定删除?',
cancel: true,
persistent: true,
ok: "确定",
cancel: "取消",
}).onOk(() => {
removeDutyItem({Id:id.toString()}).then((res)=>{
that.$q.notify({
icon: 'iconfont icon-chenggong',
// color: 'accent',
timeout: 2000,
message: res.Message,
position: 'top'
})
that.getList()
})
}).onCancel(() => {
});
},
//关闭弹窗
closeruleset() {
this.isShowsetForm = false;
},
//刷新列表
refreshRule() {
this.getList();
},
//1启用 2禁用 3删除
getStart(item, type) {
let msg = {
RuleId: item.Id,
Type: type
}
SetOKRRuleState(msg).then(res => {
if (res.Code == 1) {
this.getList();
}
})
},
//新增
addModule(obj) {
if (obj) {
this.ruleObj = obj
} else {
this.ruleObj = null
}
this.isShowsetForm = true
},
//获取校区列表
getCompanyList() {
getSchoolDropdown({}).then(res => {
if (res.Code == 1) {
this.schoolOptions = res.Data;
}
})
},
//获取班次列表
getDutyFrequencyList(){
getDutyFrequencyList({}).then(res => {
if (res.Code == 1) {
this.frequencyOptions = res.Data;
}
})
},
save(item){
let msg={
Id:item.Id,
ItemName:item.ItemName,
Shifts:item.Shifts,
ItemSchools:item.ItemSchools,
ItemType:item.ItemType.Id
}
console.log(item,msg)
// getSetDutyItemModel(msg).then((res)=>{
// })
item.isEdit=false
}
}
}
</script>
<style lang="scss" scoped>
.bg-white {
background-color: #ffffff;
}
@import url('~assets/css/table.sass')
</style>
<style lang="scss" scoped>
.watchSet {
.chooseSchool{
width: 160px;
color: #FFF;
border-radius: 3px;
overflow: hidden;
}
.schoolChooseBox{
display: flex;
justify-content: flex-end;
}
.Period-rules {
display: flex;
margin-bottom: 24px;
padding-left: 20px;
}
}
</style>
<template>
<div class="watchSet" >
<div class="schoolChooseBox" >
<q-select dense filled v-model="model" label-color="grey-11" clearable bg-color="primary" :options="schoolOptions" label="选择校区" option-label="SName" option-value="SId" class="chooseSchool">
</q-select>
</div>
<div class="set">
<div v-for="item in dataList" :key="item.id">
<div class="set-title">值班管理员:<span class="set-con">{{}}</span></div>
<div class="set-title">值班管理员:<span class="set-con">{{}}</span></div>
<div class="set-title">值班管理员:<span class="set-con">{{}}</span></div>
</div>
<div class="page-body">
<div class="page-content">
<q-table :loading="loading" no-data-label="暂无相关数据" flat class="sticky-column-table"
separator="none" :data="dataList" :columns="columns" row-key="name">
<template v-slot:top="props">
<div class="col-2 q-table__title">设置</div>
<q-space />
<div class="page-option" style="display:flex">
<q-btn color="accent" size="sm" class="q-mr-md" @click="addModule(null)" label="新增" />
<q-select dense filled v-model="School_Id" label-color="grey-11" clearable bg-color="primary" emit-value :options="schoolOptions" label="选择校区" option-label="SName" option-value="SId" class="chooseSchool" @input="changeSchool">
</q-select>
</div>
</template>
<template v-slot:bottom>
</template>
<template v-slot:body-cell-optioned="props">
<q-td :props="props" style="width:200px;">
<q-btn flat size="xs" icon="edit" color="negative" style="font-weight:400" @click="delSet(props.row.Id)"
label="删除" />
<q-btn flat size="xs" icon="edit" color="accent" style="font-weight:400" @click="addModule(props.row)"
label="编辑" />
</q-btn>
</q-td>
</template>
</q-table>
<AddDutySet v-if="isShowsetForm" @close="closeruleset" :save-obj="ruleObj" @success="refreshRule" :frequencyOptions="frequencyOptions">
</AddDutySet>
</div>
</div>
</template>
<script>
import {
getDutyConfigList,
getDutyFrequencyList,
removeDutyConfig
} from '../../api/duty/index';
import { getSchoolDropdown } from '../../api/school/index';//获取校区列表
import AddDutySet from './addDutySet';
export default {
meta: {
title: ""
components: {
AddDutySet
},
// components: {
// basecycleForm
// },
data() {
return {
School_Id:"",
loading: false,
isShowsetForm: false,
ruleObj: {}, //传入参数
schoolOptions:[],
model:"",
dataList:[{}]
frequencyOptions:[],
columns: [{
name: 'EmployeeName',
label: '值班管理员:',
field: 'EmployeeName',
align: 'left'
},
{
name: 'MachineCode',
label: '值班机器码:',
field: 'MachineCode',
align: 'left',
},
{
name: 'ShiftsName',
label: '班次管理:',
field: 'ShiftsName',
align: 'left',
},
{
name: 'optioned',
label: '操作',
field: 'QuestionId'
}
],
dataList: [],
}
},
mounted() {
this.getCompanyList();
this.getList();
this.getCompanyList();
this.getDutyFrequencyList();
},
methods: {
//获取数据
getList() {
getDutyConfigList({School_Id:this.School_Id}).then(res => {
if (res.Code == 1) {
console.log(res)
this.dataList = res.Data;
}
})
},
//删除班次
delSet(id){
let that=this
this.$q.dialog({
title: '提示信息',
message: '是否确定删除?',
cancel: true,
persistent: true,
ok: "确定",
cancel: "取消",
}).onOk(() => {
removeDutyConfig({Id:id.toString()}).then((res)=>{
that.$q.notify({
icon: 'iconfont icon-chenggong',
// color: 'accent',
timeout: 2000,
message: res.Message,
position: 'top'
})
that.getList()
})
}).onCancel(() => {
});
},
//关闭弹窗
closeruleset() {
this.isShowsetForm = false;
},
//刷新列表
refreshRule() {
this.getList();
},
//1启用 2禁用 3删除
getStart(item, type) {
let msg = {
RuleId: item.Id,
Type: type
}
SetOKRRuleState(msg).then(res => {
if (res.Code == 1) {
this.getList();
}
})
},
//新增
addModule(obj) {
if (obj) {
this.ruleObj = obj
} else {
this.ruleObj = null
}
this.isShowsetForm = true
},
//获取校区列表
getCompanyList() {
getSchoolDropdown({}).then(res => {
if (res.Code == 1) {
......@@ -65,7 +171,22 @@
}
})
},
//获取班次列表
getDutyFrequencyList(){
getDutyFrequencyList({}).then(res => {
if (res.Code == 1) {
this.frequencyOptions = res.Data;
}
})
},
changeSchool(){
this.getList();
}
}
}
</script>
<style lang="sass">
@import url('~assets/css/table.sass')
</style>
......@@ -7,14 +7,15 @@
class="text-primary">
<q-tab :ripple="false" name="first" label="值班事项管理" />
<q-tab :ripple="false" name="second" label="设置" />
<q-tab :ripple="false" name="third" label="班級列表管理" />
<q-tab :ripple="false" name="third" label="班管理" />
</q-tabs>
<DutyItemManagement v-if="tabCheck=='first'"></DutyItemManagement>
<Set v-if="tabCheck=='second'"></Set>
<ClassListManagement v-if="tabCheck=='third'"></ClassListManagement>
</div>
</template>
<script>
import DutyItemManagement from "../../components/duty/dutyItemManagement"
import Set from "../../components/duty/setting"
import ClassListManagement from "../../components/duty/classListManagement"
export default {
......@@ -22,6 +23,7 @@ import ClassListManagement from "../../components/duty/classListManagement"
title: "值班管理"
},
components: {
DutyItemManagement,
Set,
ClassListManagement
},
......
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