This commit is contained in:
shijing 2024-12-06 09:15:03 +08:00
commit b79a1ef671
5 changed files with 142 additions and 2 deletions

View File

@ -476,4 +476,32 @@ export default {
},
},
},
srule: {
list: {
name: "排班规则列表",
req: async function (data) {
return await http.get(
`${config.API_URL}/mtm/srule/`,
data
);
},
},
create: {
name: "创建",
req: async function (data) {
return await http.post(
`${config.API_URL}/mtm/srule/`,
data
);
},
},
delete: {
name: "删除",
req: async function (id) {
return await http.delete(
`${config.API_URL}/mtm/srule/${id}/`
);
},
},
},
};

View File

@ -88,7 +88,7 @@ const props = defineProps({
options: { type: Array, default: null },
});
const emit = defineEmits(["update:modelValue", "update:obj", "update:label"]);
const emit = defineEmits(["update:modelValue", "update:obj", "update:label", "change"]);
// popover
const showPopover = ref(false);

View File

@ -2899,6 +2899,15 @@ const routes = [
hidden: true,
},
component: "enm_rm/logDetail",
},
{
name: "srule",
path: "/enm_base/srule",
meta: {
title: "排班规则",
perms: ["srule"],
},
component: "mtm/srule",
},
],
},

103
src/views/mtm/srule.vue Normal file
View File

@ -0,0 +1,103 @@
<template>
<el-container>
<el-header>
<div class="left-panel">
<el-button type="primary" icon="el-icon-plus" @click="table_add" v-auth="'srule.create'"></el-button>
</div>
</el-header>
<el-main class="nopadding">
<scTable ref="table" :apiObj="apiObj" row-key="id" hidePagination hideDo>
<el-table-column label="#" type="index" width="50"></el-table-column>
<el-table-column label="所属部门" prop="belong_dept_name" width="120"></el-table-column>
<el-table-column label="循环列表" prop="rule_display"></el-table-column>
<el-table-column label="操作" fixed="right" align="center" width="140">
<template #default="scope">
<el-popconfirm title="确定删除吗?" @confirm="table_del(scope.row, scope.$index)">
<template #reference>
<el-button link size="small" v-auth="'srule.delete'" type="danger">删除</el-button>
</template>
</el-popconfirm>
</template>
</el-table-column>
</scTable>
</el-main>
<el-dialog title="排班规则" v-model="dialogVisible" :size="1000">
<el-form ref="dialogForm" :model="form">
<el-form-item label="所属部门" required>
<xtSelect v-model="form.belong_dept" :apiObj="apiObjP" @change="handlePChange">
<el-table-column prop="name"></el-table-column>
</xtSelect>
</el-form-item>
<div>
<el-button v-for="item in teamButtons" :key="item.id" type="primary" @click="addTeam(item)">
{{ item.name }}
</el-button>
</div>
<div style="margin-top: 6px" v-if="form.rule_display.length > 0">
<span v-for="(item, index) in form.rule_display" :key="index">
{{ item }} ->
</span>
</div>
</el-form>
<template #footer>
<el-button type="primary" @click="save">保存</el-button>
</template>
</el-dialog>
</el-container>
</template>
<script>
const dForm = {
belong_dept: null,
rule: [],
rule_display: []
}
export default {
name: 'srule',
data() {
return {
apiObjP: this.$API.system.dept.list,
apiObj: this.$API.mtm.srule.list,
dialogVisible: false,
form: Object.assign({}, dForm),
teamButtons: [],
}
},
methods: {
table_add() {
this.form = Object.assign({}, dForm);
this.dialogVisible = true;
},
handlePChange() {
this.teamButtons = []
this.form.rule = []
this.form.rule_display = []
if (this.form.belong_dept != null) {
this.$API.mtm.team.list.req({ belong_dept: this.form.belong_dept, page: 0 }).then(res => {
this.teamButtons = res;
})
}
},
addTeam(item) {
this.form.rule.push(item.id);
this.form.rule_display.push(item.name);
},
save() {
this.$API.mtm.srule.create.req(this.form).then(res => {
this.$refs.table.refresh();
this.dialogVisible = false;
that.$message.success("操作成功");
})
},
table_del(row, index) {
console.log(row)
this.$API.mtm.srule.delete.req(row.id).then(res => {
this.$refs.table.refresh();
that.$message.success("操作成功");
})
}
}
}
</script>

View File

@ -26,7 +26,7 @@ module.exports = defineConfig({
},
client: {
overlay: {
// runtimeErrors: false,
runtimeErrors: false,
},
},
},