feat: 新增班次管理页面
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
8230773736
commit
adef0b9b24
|
|
@ -231,6 +231,33 @@ export default {
|
|||
return await http.get(`${config.API_URL}/mtm/shift/`, data);
|
||||
},
|
||||
},
|
||||
item: {
|
||||
name: "获取详情",
|
||||
req: async function (id) {
|
||||
return await http.get(`${config.API_URL}/mtm/shift/${id}/`);
|
||||
},
|
||||
},
|
||||
create: {
|
||||
name: "创建",
|
||||
req: async function (data) {
|
||||
return await http.post(`${config.API_URL}/mtm/shift/`, data);
|
||||
},
|
||||
},
|
||||
update: {
|
||||
name: "更新",
|
||||
req: async function (id, data) {
|
||||
return await http.put(
|
||||
`${config.API_URL}/mtm/shift/${id}/`,
|
||||
data
|
||||
);
|
||||
},
|
||||
},
|
||||
delete: {
|
||||
name: "删除",
|
||||
req: async function (id) {
|
||||
return await http.delete(`${config.API_URL}/mtm/shift/${id}/`);
|
||||
},
|
||||
},
|
||||
},
|
||||
//班组
|
||||
team: {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,125 @@
|
|||
<template>
|
||||
<el-container>
|
||||
<el-header>
|
||||
<div class="left-panel">
|
||||
<el-input style="margin-right: 5px" v-model="query.search" placeholder="名称/所属规则" clearable></el-input>
|
||||
<el-button type="primary" icon="el-icon-search" @click="handleQuery"></el-button>
|
||||
</div>
|
||||
<div class="right-panel">
|
||||
<el-button type="primary" icon="el-icon-plus" @click="table_add" v-auth="'shift.create'"></el-button>
|
||||
</div>
|
||||
</el-header>
|
||||
<el-main class="nopadding">
|
||||
<scTable ref="table" :apiObj="apiObj" :params="query" row-key="id" hidePagination>
|
||||
<el-table-column label="#" type="index" width="50"></el-table-column>
|
||||
<el-table-column label="名称" prop="name" min-width="120"></el-table-column>
|
||||
<el-table-column label="所属规则" prop="rule" min-width="120"></el-table-column>
|
||||
<el-table-column label="开始时间" prop="start_time_o" min-width="100"></el-table-column>
|
||||
<el-table-column label="结束时间" prop="end_time_o" min-width="100"></el-table-column>
|
||||
<el-table-column label="排序" prop="sort" width="80"></el-table-column>
|
||||
<el-table-column label="操作" fixed="right" align="center" width="140">
|
||||
<template #default="scope">
|
||||
<el-button link size="small" type="primary" v-auth="'shift.update'"
|
||||
@click="table_edit(scope.row)">编辑</el-button>
|
||||
<el-divider direction="vertical"></el-divider>
|
||||
<el-popconfirm title="确定删除吗?" @confirm="table_del(scope.row, scope.$index)">
|
||||
<template #reference>
|
||||
<el-button link size="small" v-auth="'shift.delete'" type="danger">删除</el-button>
|
||||
</template>
|
||||
</el-popconfirm>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</scTable>
|
||||
</el-main>
|
||||
<el-dialog :title="mode === 'add' ? '新增班次' : '编辑班次'" v-model="dialogVisible" :width="600" destroy-on-close>
|
||||
<el-form ref="dialogForm" :model="form" :rules="rules" label-width="100px">
|
||||
<el-form-item label="名称" prop="name">
|
||||
<el-input v-model="form.name" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="所属规则" prop="rule">
|
||||
<el-input v-model="form.rule" clearable placeholder="同一规则下的班次将被一起循环"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="开始时间" prop="start_time_o">
|
||||
<el-time-picker v-model="form.start_time_o" value-format="HH:mm:ss" placeholder="选择开始时间"
|
||||
class="width-100"></el-time-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="结束时间" prop="end_time_o">
|
||||
<el-time-picker v-model="form.end_time_o" value-format="HH:mm:ss" placeholder="选择结束时间"
|
||||
class="width-100"></el-time-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="排序" prop="sort">
|
||||
<el-input-number v-model="form.sort" :min="1" class="width-100"></el-input-number>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="dialogVisible = false">取消</el-button>
|
||||
<el-button type="primary" :loading="isSaving" @click="save">保存</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</el-container>
|
||||
</template>
|
||||
<script>
|
||||
const dForm = {
|
||||
name: '',
|
||||
rule: '默认',
|
||||
start_time_o: '',
|
||||
end_time_o: '',
|
||||
sort: 1,
|
||||
}
|
||||
export default {
|
||||
name: 'shift',
|
||||
data() {
|
||||
return {
|
||||
apiObj: this.$API.mtm.shift.list,
|
||||
query: {},
|
||||
dialogVisible: false,
|
||||
isSaving: false,
|
||||
mode: 'add',
|
||||
form: Object.assign({}, dForm),
|
||||
rules: {
|
||||
name: [{ required: true, message: '请输入名称', trigger: 'blur' }],
|
||||
rule: [{ required: true, message: '请输入所属规则', trigger: 'blur' }],
|
||||
start_time_o: [{ required: true, message: '请选择开始时间', trigger: 'change' }],
|
||||
end_time_o: [{ required: true, message: '请选择结束时间', trigger: 'change' }],
|
||||
},
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleQuery() {
|
||||
this.$refs.table.queryData(this.query);
|
||||
},
|
||||
table_add() {
|
||||
this.mode = 'add';
|
||||
this.form = Object.assign({}, dForm);
|
||||
this.dialogVisible = true;
|
||||
},
|
||||
table_edit(row) {
|
||||
this.mode = 'edit';
|
||||
this.form = Object.assign({}, dForm, row);
|
||||
this.dialogVisible = true;
|
||||
},
|
||||
save() {
|
||||
this.$refs.dialogForm.validate(valid => {
|
||||
if (!valid) return;
|
||||
this.isSaving = true;
|
||||
const req = this.mode === 'add'
|
||||
? this.$API.mtm.shift.create.req(this.form)
|
||||
: this.$API.mtm.shift.update.req(this.form.id, this.form);
|
||||
req.then(() => {
|
||||
this.dialogVisible = false;
|
||||
this.$refs.table.refresh();
|
||||
this.$message.success('操作成功');
|
||||
}).finally(() => {
|
||||
this.isSaving = false;
|
||||
});
|
||||
});
|
||||
},
|
||||
table_del(row) {
|
||||
this.$API.mtm.shift.delete.req(row.id).then(() => {
|
||||
this.$refs.table.refresh();
|
||||
this.$message.success('操作成功');
|
||||
});
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
Loading…
Reference in New Issue