Commit 63b7773f by zhaopanyu

zpy 10.23

parent 95681fcd
......@@ -33,4 +33,7 @@ npm run build:prod
在index页面,打开created中 this.csToken()
#生产环境
在index页面,打开created中 this.getCode()
Navbar.vue中的退出登录注销。
<!-- <el-dropdown-item divided @click.native="logout">
<span>退出登录</span>
</el-dropdown-item> -->
......@@ -15,6 +15,8 @@ const whiteList = [
"/register",
"/index",
"/dd",
"/studentRegistra",
"/printBarcodes",
];
router.beforeEach((to, from, next) => {
......
......@@ -62,6 +62,31 @@ export const constantRoutes = [
hidden: true,
},
{
path: "/studentRegistra",
component: () =>
import(
"@/views/smartSchool/teachAffairAdministration/affairStudentManage/studentRegistra"
),
hidden: true,
},
//设备台账
{
path: "/printBarcodes",
component: () =>
import(
"@/views/smartSchool/schoolProperty/equipmenTledger/printBarcodes"
),
hidden: true,
},
{
path: "/studentRegistra",
component: () =>
import(
"@/views/smartSchool/teachAffairAdministration/affairStudentManage/studentRegistra"
),
hidden: true,
},
{
path: "/register",
component: () => import("@/views/register"),
hidden: true,
......
......@@ -130,8 +130,8 @@
<script>
import { listDefinition, delDefinition, suspendOrActiveDefinition, convert2Model } from "@/api/activiti/definition.js"
import { format } from "@/utils/activiti/myUtil.js"
import { format } from "@/utils/activiti/myUtil.js"
export default {
name: "Definition",
data() {
......
......@@ -6,7 +6,7 @@
</el-form-item>
<el-form-item label="仪器分类">
<treeselect v-model="queryForm.instrumentTypeId" :options="equiList" :normalizer="normalizer"
placeholder="选择分类编码" clearable style="width: 192px" />
placeholder="选择分类编码" clearable style="width: 192px" noOptionsText="暂无数据" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="getList">搜索</el-button>
......@@ -58,7 +58,7 @@
<el-col :span="20">
<el-form-item label="仪器分类" prop="instrumentTypeName">
<treeselect v-model="form.instrumentTypeName" :options="equiList" :normalizer="normalizer"
placeholder="选择" clearable style="width: 100%" />
placeholder="选择" clearable style="width: 100%" noOptionsText="暂无数据"/>
</el-form-item>
</el-col>
</el-row>
......
......@@ -202,21 +202,33 @@ export default {
resetQuery() {
this.queryForm = {
pageNum: 1,
pageSize: 10,
curriculaId: "",
studentName: "",
classId: "",
selectedCourse: "",
pageNum: 1,
pageSize: 10
};
this.resetForm("queryForm");
this.getList();
},
// 重置
reset() {
this.postForm = {
curriculaId: '',
this.form = {
curriculaId: "",
course: "",
courseName: "",
coursePeopleNumber: "",
classesNumber: "",
peopleNumber: "",
divisionClassesRule: "",
divisionClassesFrequency: '1',
}
this.resetForm('postForm');
this.resetForm('form');
},
// 取消按钮
cancel() {
this.open = false;
......@@ -232,45 +244,32 @@ export default {
},
// 分班按钮
submitForm() {
// 检查是否已经分班
const alreadyDivided = this.selectedCourse.every(course => course.divisionClassesRule !== "");
console.log('this.selectedCourse', this.selectedCourse);
if (alreadyDivided) {
this.$message.warning("已经分班,无法重复操作");
return;
}
this.$confirm('确定要分班吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
// let that = this;
// for (let i = 0; i < this.selectedCourse.length; i++) {
// that.selectedCourse[i].divisionClassesRule = that.form.divisionClassesRule;
// const course = this.selectedCourse[i];
// console.log('course.divisionClassesRule:', course.divisionClassesRule);
// console.log('course.classesNumber:', course.classesNumber);
// console.log('course.peopleNumber:', course.peopleNumber);
// if (course.divisionClassesRule === '' || course.classesNumber === '' || course.peopleNumber === '') {
// this.$message.error("分班规则、班级数量和每班人数不能为空");
// return;
// }
// let totalPeopleNumber = course.classesNumber * course.peopleNumber;
// if (totalPeopleNumber > this.selectedCourse.length) {
// this.$message.error("班级数量和每班人数相乘不能超过总人数");
// return;
// }
// }
// console.log('this.selectedCourse', this.selectedCourse);
addDivisionec(this.selectedCourse).then((response) => {
console.log('this.selectedCourse', this.selectedCourse);
this.$modal.msgSuccess("分班成功");
const formData = this.selectedCourse.map((course) => {
console.log(course);
return {
curriculaId: this.queryForm.curriculaId,
course: course.course,
classesNumber: course.classesNumber,
peopleNumber: course.peopleNumber,
coursePeopleNumber: course.peopleNumber,
divisionClassesRule: this.form.divisionClassesRule,
divisionClassesFrequency: course.divisionClassesFrequency
};
});
addDivisionec(formData).then((response) => {
console.log(response);
this.$modal.msgSuccess('分班成功');
this.open = false;
this.getList();
}).catch(error => {
console.error(error);
});
})
})
......
......@@ -49,8 +49,8 @@
<el-col :span="24">
<el-form-item label="分班规则" prop="divisionClassesRule">
<el-radio-group v-model="form.divisionClassesRule">
<el-radio label='1'>平行分班</el-radio>
<el-radio label='2'>分层分班</el-radio>
<el-radio label="1">平行分班</el-radio>
<el-radio label="2">分层分班</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
......@@ -63,9 +63,9 @@
<el-input v-model="course.peopleNumber" placeholder="每班人数"></el-input>
</div>
</el-form-item>
</div>
</el-form>
<div style="text-align: center">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
......@@ -88,15 +88,15 @@ export default {
dicts: ['section_type'],
data() {
return {
divisionClassesRule: '',
selectedCourse: [],
classList: [],
// 查询表单
queryForm: {
divisionClassesRule: '',
curriculaId: '',
studentsName: '',
classId: '',
selectedCourse: '',
curriculaId: "",
studentName: "",
classId: "",
selectedCourse: "",
pageNum: 1,
pageSize: 10
},
......@@ -188,12 +188,12 @@ export default {
coursePeopleNumber: item.peopleNumber,
classesNumber: '',
peopleNumber: '',
divisionClassesRule: '',
divisionClassesRule: "",
divisionClassesFrequency: '1'
}
});
// console.log('this.selectedCourse', this.selectedCourse);
console.log('this.selectedCourse', this.selectedCourse);
}
})
},
......@@ -202,7 +202,14 @@ export default {
resetQuery() {
this.queryForm = {
pageNum: 1,
pageSize: 10,
curriculaId: "",
studentName: "",
classId: "",
selectedCourse: "",
pageNum: 1,
pageSize: 10
};
this.resetForm("queryForm");
this.getList();
......@@ -210,10 +217,17 @@ export default {
// 重置
reset() {
this.postForm = {
curriculaId: '',
this.form = {
curriculaId: "",
course: "",
courseName: "",
coursePeopleNumber: "",
classesNumber: "",
peopleNumber: "",
divisionClassesRule: "",
divisionClassesFrequency: '1',
}
this.resetForm('postForm');
this.resetForm('form');
},
// 取消按钮
......@@ -230,47 +244,33 @@ export default {
},
// 分班按钮
submitForm() {
// 检查是否已经分班
const alreadyDivided = this.selectedCourse.every(course => course.divisionClassesRule !== "");
console.log('this.selectedCourse', this.selectedCourse);
if (alreadyDivided) {
this.$message.warning("已经分班,无法重复操作");
return;
}
this.$confirm('确定要分班吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
// let that = this;
// for (let i = 0; i < this.selectedCourse.length; i++) {
// that.selectedCourse[i].divisionClassesRule = that.form.divisionClassesRule;
// const course = this.selectedCourse[i];
// console.log('course.divisionClassesRule:', course.divisionClassesRule);
// console.log('course.classesNumber:', course.classesNumber);
// console.log('course.peopleNumber:', course.peopleNumber);
// if (course.divisionClassesRule === '' || course.classesNumber === '' || course.peopleNumber === '') {
// this.$message.error("分班规则、班级数量和每班人数不能为空");
// return;
// }
// let totalPeopleNumber = course.classesNumber * course.peopleNumber;
// console.log('totalPeopleNumber', totalPeopleNumber);
// if (totalPeopleNumber > this.coursePeopleNumber) {
// console.log('this.coursePeopleNumber', this.coursePeopleNumber);
// this.$message.error("班级数量和每班人数相乘不能超过总人数");
// return;
// }
// }
// console.log('this.selectedCourse', this.selectedCourse);
addDivision(this.selectedCourse).then((response) => {
console.log('this.selectedCourse', this.selectedCourse);
this.$modal.msgSuccess("分班成功");
const formData = this.selectedCourse.map((course) => {
return {
curriculaId: this.queryForm.curriculaId,
course: course.course,
classesNumber: course.classesNumber,
peopleNumber: course.peopleNumber,
coursePeopleNumber: course.peopleNumber,
divisionClassesRule: this.form.divisionClassesRule,
divisionClassesFrequency: course.divisionClassesFrequency
};
});
addDivision(formData).then((response) => {
console.log(response);
this.$modal.msgSuccess('分班成功');
this.open = false;
this.getList();
}).catch(error => {
console.error(error);
});
})
})
......@@ -285,6 +285,8 @@ export default {
}
}
</script>
......
......@@ -72,8 +72,8 @@
<el-col :span="16">
<el-form-item label="发布时间">
<el-date-picker v-model="dateRange" type="daterange" range-separator="至"
start-placeholder="开始日期" end-placeholder="结束日期" format="yyyy-MM-dd HH:mm:ss"
value-format="yyyy-MM-dd HH:mm:ss" :style="{ width: '100%' }">
start-placeholder="开始日期" end-placeholder="结束日期" format="yyyy-MM-dd"
value-format="yyyy-MM-dd" :style="{ width: '100%' }">
</el-date-picker>
</el-form-item>
</el-col>
......
......@@ -86,8 +86,6 @@
<el-option v-for="item in tableList" :key="item.id" :value="item.experimentName"
:label="item.experimentName"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
......@@ -267,7 +265,6 @@ export default {
},
methods: {
//表单查询
getList() {
getLabplanlist(this.queryForm).then(response => {
......@@ -289,10 +286,8 @@ export default {
//选择实验名称自动带出信息
getName() {
const selectedExperiment = this.tableList.find(experiment => experiment.experimentName === this.form.experimentName);
if (selectedExperiment) {
this.selectedExperiment = selectedExperiment; // 确保将选中的实验赋值给 selectedExperiment
// 将实验的字段赋值给表单字段
this.form.experimentPlanId = selectedExperiment.chapterContent?.id || "";
this.form.chapterContent = selectedExperiment.chapterContent || "";
......@@ -368,17 +363,20 @@ export default {
this.nowType = type;
this.getSchholyear();
if (type != 0) {
const id = row.id
getLabplanxq(id).then(response => {
if (response.code == 200) {
console.log(response);
Object.keys(this.form).forEach(key => {
if (response.data[key]) {
this.$set(this.form, key, response.data[key]);
}
})
}
})
if (row && row.id) {
const id = row.id;
getLabplanxq(id).then(response => {
if (response.code == 200) {
console.log(response);
Object.keys(this.form).forEach(key => {
if (response.data[key]) {
this.$set(this.form, key, response.data[key]);
}
});
}
});
}
}
this.dialogTableVisible = true;
},
......@@ -418,7 +416,7 @@ export default {
declareState: '0',
};
console.log(params);
addLabplan(params).then(response => {
this.$modal.msgSuccess('保存成功');
this.dialogTableVisible = false;
......
......@@ -8,7 +8,7 @@
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="老师姓名" prop="teacherName">
<el-input readonly :value="infoForm.teacherName"/>
<el-input readonly :value="infoForm.teacherName" />
</el-form-item>
</el-col>
<el-col :span="12">
......@@ -23,7 +23,7 @@
<el-form-item label="请假类型">
<el-select readonly :value="infoForm.type" style="width: 100%" placeholder="">
<el-option v-for="dict in dict.type.biz_leave_type" :key="dict.value" :value="dict.value"
:label="dict.label"></el-option>
:label="dict.label"></el-option>
</el-select>
</el-form-item>
</el-col>
......@@ -32,14 +32,14 @@
<el-col :span="12">
<el-form-item label="请假开始时间" prop="startTime">
<el-date-picker readonly style="width: 100%" v-model="infoForm.startTime" type="datetime"
value-format="yyyy-MM-dd HH:mm:ss" placeholder="选择开始时间"></el-date-picker>
value-format="yyyy/MM/dd HH:mm:ss" placeholder="选择开始时间"></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="请假结束时间" prop="endTime">
<el-date-picker readonly style="width: 100%" v-model="infoForm.endTime" type="datetime"
value-format="yyyy-MM-dd HH:mm:ss" placeholder="选择结束时间"></el-date-picker>
value-format="yyyy/MM/dd HH:mm:ss" placeholder="选择结束时间"></el-date-picker>
</el-form-item>
</el-col>
</el-row>
......@@ -48,25 +48,25 @@
<el-col :span="7">
<el-form-item label="请假开始时间" prop="startTime">
<el-date-picker readonly v-model="infoForm.startTime" type="date" style="width: 100%"
value-format="yyyy-MM-dd" placeholder="选择日期"></el-date-picker>
value-format="yyyy-MM-dd" placeholder="选择日期"></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="4">
<el-select :value="infoForm.startSort" style="width: 100%" placeholder="请选择课程节次">
<el-option v-for="dict in dict.type.course_arrange" :key="dict.value" :label="dict.label"
:value="dict.value"></el-option>
:value="dict.value"></el-option>
</el-select>
</el-col>
<el-col :offset="2" :span="7">
<el-form-item label="请假结束时间" prop="endTime">
<el-date-picker readonly type="date" v-model="infoForm.endTime" value-format="yyyy-MM-dd"
style="width: 100%" placeholder="选择日期"></el-date-picker>
style="width: 100%" placeholder="选择日期"></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="4">
<el-select :value="infoForm.endSort" style="width: 100%" placeholder="请选择课程节次">
<el-option v-for="dict in dict.type.course_arrange" :key="dict.value" :label="dict.label"
:value="dict.value"></el-option>
:value="dict.value"></el-option>
</el-select>
</el-col>
</el-row>
......@@ -74,7 +74,7 @@
<el-col>
<el-form-item label="请假原因">
<el-input readonly :value="infoForm.reasonForLeave" type="textarea" placeholder=""
:autosize="{ minRows: 3 }"/>
:autosize="{ minRows: 3 }" />
</el-form-item>
</el-col>
</el-row>
......@@ -82,15 +82,13 @@
<el-col :span="12">
<el-form-item label="实际开始时间" prop="realityStartTime">
<el-date-picker style="width: 100%" v-model="infoForm.realityStartTime" type="datetime"
value-format="yyyy-MM-dd HH:mm:ss" placeholder=""
:picker-options="limitStartTime"></el-date-picker>
value-format="yyyy-MM-dd HH:mm:ss" placeholder="" :picker-options="limitStartTime"></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="实际结束时间" prop="realityEndTime">
<el-date-picker style="width: 100%" v-model="infoForm.realityEndTime" type="datetime"
value-format="yyyy-MM-dd HH:mm:ss" placeholder=""
:picker-options="limitEndTime"></el-date-picker>
value-format="yyyy-MM-dd HH:mm:ss" placeholder="" :picker-options="limitEndTime"></el-date-picker>
</el-form-item>
</el-col>
</el-row>
......@@ -100,7 +98,7 @@
</el-form>
</el-card>
<TaskResolve v-if="!$attrs.readOnly" :taskId="this.$attrs.taskId" :instanceId="instanceId" :id="id"
v-on="this.$listeners"></TaskResolve>
v-on="this.$listeners"></TaskResolve>
</div>
</template>
......@@ -156,8 +154,8 @@ export default {
limitStartTime,
infoForm: {},
rules: {
realityStartTime: [{required: true, message: '实际开始时间不能为空', trigger: 'change'}],
realityEndTime: [{required: true, message: '实际结束时间不能为空', trigger: 'change'}]
realityStartTime: [{ required: true, message: '实际开始时间不能为空', trigger: 'change' }],
realityEndTime: [{ required: true, message: '实际结束时间不能为空', trigger: 'change' }]
}
}
},
......
......@@ -5,7 +5,6 @@
:modal="false"
fullscreen
:modal-append-to-body="false"
>
<!-- <template slot="title">-->
<!-- <div class="custom-dialog__header">-->
......@@ -15,7 +14,6 @@
<!-- </div>-->
<!-- </div>-->
<!-- </template>-->
<div class="resolve-dialog-bady" >
<div class="left-menu">
<el-tabs tab-position="left" v-model="asyncComponent" @tab-click="selectMenu" style="height: 800px">
......@@ -40,8 +38,6 @@
</keep-alive>
</div>
</div>
</el-dialog>
</div>
</template>
......
......@@ -38,10 +38,15 @@
</el-table-column>
<el-table-column label="证书照片" align="center" prop="schoolAccessoryList">
<template slot-scope="scope">
<el-image style="width: 100px; height: 100px" :src="scope.row.pictureUrl"
:preview-src-list="scope.row.previewUrls"></el-image>
<el-carousel :interval="4000" height="100px">
<el-carousel-item v-for="(item, index) in scope.row.schoolAccessoryList" :key="index">
<el-image style="width: 100px; height: 100px" :src="item.accessoryUrl"
:preview-src-list="[item.accessoryUrl]"></el-image>
</el-carousel-item>
</el-carousel>
</template>
</el-table-column>
<el-table-column label="备注1" align="center" prop="remark1" />
<el-table-column label="备注2" align="center" prop="remark2" />
<el-table-column label="备注3" align="center" prop="remark3" />
......@@ -115,11 +120,15 @@
<el-upload v-loading="uploadLoading" class="avatar-uploader" action="#" accept="image/*"
:show-file-list="false" :on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload"
:http-request="uploadImage">
<img v-if="form.schoolAccessoryList && form.schoolAccessoryList.length > 0"
:src="form.schoolAccessoryList[0].accessoryUrl" class="avatar" />
<div v-if="form.schoolAccessoryList && form.schoolAccessoryList.length > 0">
<el-image v-for="(photo, index) in form.schoolAccessoryList" :key="index"
style="width: 100px; height: 100px; margin-right: 10px" :src="photo.accessoryUrl"
:preview-src-list="[photo.accessoryUrl]"></el-image>
</div>
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="备注1">
......@@ -232,11 +241,13 @@ export default {
schoolAccessoryList: [
{ required: true, message: "证书照片不能为空", trigger: "change" }
],
competitionName: [
{ required: true, message: "比赛项目名称不能为空", trigger: "change" }
],
},
previewDialogVisible: false,
teacherList: [],
rules: {},
nowType: 0, // 0新增、1编辑、2查看
}
},
......@@ -301,27 +312,30 @@ export default {
// 上传图片
uploadImage(file) {
const fileData = file.file
const formData = new FormData()
formData.append('file', fileData)
this.uploadLoading = true
const fileData = file.file;
const formData = new FormData();
formData.append('file', fileData);
this.uploadLoading = true;
// Upload the file and add the uploaded file to the schoolAccessoryList
commonUpload(formData)
.then(response => {
this.uploadLoading = false
this.$modal.msgSuccess('上传成功')
this.imageUrl = process.env.VUE_APP_BASE_API + response.url
// 添加以下代码将文件信息添加到 uploadedFiles 数组中
this.uploadedFiles.push({
this.uploadLoading = false;
this.$modal.msgSuccess('上传成功');
// Add the uploaded file to the schoolAccessoryList
this.form.schoolAccessoryList.push({
accessoryUrl: process.env.VUE_APP_BASE_API + response.url,
accessoryName: fileData.name
})
});
})
.catch(error => {
this.uploadLoading = false
})
this.uploadLoading = false;
});
},
//重置
resetQuery() {
this.queryParams = {
......@@ -371,25 +385,26 @@ export default {
}
this.nowType = type;
if (type != 0) {
const id = row.id
const id = row.id;
getCompetitionxq(id).then(response => {
if (response.code == 200) {
Object.keys(this.form).forEach(key => {
if (response.data[key]) {
this.$set(this.form, key, response.data[key]);
}
if (response.data.schoolAccessoryList && response.data.schoolAccessoryList.length > 0) {
this.imageUrl = response.data.schoolAccessoryList[0].accessoryUrl; // 将图片地址赋值给 imageUrl
}
});
})
// Populate the schoolAccessoryList with multiple images
if (response.data.schoolAccessoryList && response.data.schoolAccessoryList.length > 0) {
this.form.schoolAccessoryList = response.data.schoolAccessoryList;
}
}
})
});
}
this.dialogVisible = true;
},
//查询老师
getTeacher() {
getTeacher().then(response => {
......@@ -412,7 +427,6 @@ export default {
accessoryName: file.accessoryName
});
}
updateCompetition(this.form).then(({ code }) => {
if (code == 200) {
this.$modal.msgSuccess('修改成功')
......
<template>
<div class="app-container">
<el-form
:model="queryForm"
ref="queryForm"
size="small"
:inline="true"
label-width="80px"
>
<el-form :model="queryForm" ref="queryForm" size="small" :inline="true" label-width="80px">
<el-form-item prop="name" label="社团名称">
<el-input v-model="queryForm.name" placeholder="社团名称"></el-input>
</el-form-item>
<el-form-item prop="teachers" label="指导教师">
<el-input
v-model="queryForm.teachers"
placeholder="指导教师"
></el-input>
<el-input v-model="queryForm.teachers" placeholder="指导教师"></el-input>
</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-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
type="primary"
icon="el-icon-plus"
size="mini"
@click="handleAdd()"
>新增</el-button
>
<el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd()">新增</el-button>
</el-col>
</el-row>
<!-- 列表 -->
<div class="listBlock">
<div class="itemBlock" v-for="(task, index) in tasks" :key="index">
<div
style="
<div style="
display: flex;
justify-content: space-between;
align-items: center;
"
>
">
<div style="width: 50%">
<!-- 任务详细信息 -->
<div class="task-info">
......@@ -77,49 +52,17 @@
<!-- 按钮 -->
<div class="task-buttons">
<el-button
style="margin-left: 10px"
size="mini"
type="danger"
round
@click="handleDelete(task)"
>删除
<el-button style="margin-left: 10px" size="mini" type="danger" round @click="handleDelete(task)">删除
</el-button>
<el-button
type="success"
size="small"
round
@click="clubRegistrationReview(task.id, task.teachers)"
>社团报名审核</el-button
>
<el-button
type="info"
size="small"
round
@click="clubActivityRecord(task.id)"
>社团活动记录</el-button
>
<el-button
type="warning"
size="small"
round
@click="memberManagement(task.id)"
>成员管理
<el-button type="success" size="small" round
@click="clubRegistrationReview(task.id, task.teachers)">社团报名审核</el-button>
<el-button type="info" size="small" round @click="clubActivityRecord(task.id)">社团活动记录</el-button>
<el-button type="warning" size="small" round @click="memberManagement(task.id)">成员管理
</el-button>
<el-button
class="purpleBtn"
size="small"
round
type="primary"
@click="communityStyle(task.id, task.teachers)"
>社团风采
<el-button class="purpleBtn" size="small" round type="primary"
@click="communityStyle(task.id, task.teachers)">社团风采
</el-button>
<el-button
type="primary"
size="small"
round
@click="basicInformation(task.id, task.teachers)"
>基础信息管理
<el-button type="primary" size="small" round @click="basicInformation(task.id, task.teachers)">基础信息管理
</el-button>
</div>
</div>
......@@ -129,45 +72,22 @@
<el-form ref="form" :model="form" :rules="rules" label-width="110px">
<div>
<el-form-item label="社团名称" prop="name">
<el-input
v-model="form.name"
placeholder="请输入社团名称"
></el-input>
<el-input v-model="form.name" placeholder="请输入社团名称"></el-input>
</el-form-item>
<el-form-item label="指导教师" prop="teachers">
<el-select
style="width: 100%"
multiple
v-model="form.teachers"
filterable
placeholder="请选择指导教师"
@change="changeTeacher"
>
<el-option
v-for="item in teacherInfo"
:key="item.teacherCode"
:label="item.teacherName"
:value="item.teacherCode"
>
<el-select style="width: 100%" multiple v-model="form.teachers" filterable placeholder="请选择指导教师"
@change="changeTeacher">
<el-option v-for="item in teacherInfo" :key="item.teacherCode" :label="item.teacherName"
:value="item.teacherCode">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="社团宗旨" prop="aim">
<el-input
type="textarea"
:rows="4"
v-model="form.aim"
placeholder="请输入社团宗旨"
></el-input>
<el-input type="textarea" :rows="4" v-model="form.aim" placeholder="请输入社团宗旨"></el-input>
</el-form-item>
<el-form-item label="社团简介" prop="intro">
<el-input
type="textarea"
:rows="4"
v-model="form.intro"
placeholder="请输入社团简介"
></el-input>
<el-input type="textarea" :rows="4" v-model="form.intro" placeholder="请输入社团简介"></el-input>
</el-form-item>
</div>
</el-form>
......@@ -368,7 +288,7 @@ export default {
this.$message.success("修改成功");
this.open = false;
})
.catch((err) => {});
.catch((err) => { });
} else {
// 新增
const params = {
......@@ -385,7 +305,7 @@ export default {
this.$message.success("新增成功");
this.open = false;
})
.catch((err) => {});
.catch((err) => { });
}
}
});
......@@ -403,7 +323,7 @@ export default {
this.getList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
.catch(() => { });
},
// 重置表单
reset() {
......@@ -466,7 +386,7 @@ export default {
text-align: left;
}
.task-level > span {
.task-level>span {
margin-right: 25px;
}
......@@ -490,13 +410,13 @@ export default {
padding-left: 60%;
}
.task-count > .count {
.task-count>.count {
font-weight: bold;
color: #307def;
font-size: 45px;
}
.task-count > .sun {
.task-count>.sun {
color: rgba(16, 16, 16, 1);
font-size: 18px;
text-align: center;
......
<template>
<div class="app-container">
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="68px"
>
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="标题" prop="theme">
<el-input
v-model="queryParams.theme"
placeholder="请输入标题"
clearable
/>
<el-input v-model="queryParams.theme" placeholder="请输入标题" clearable />
</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-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
type="primary"
icon="el-icon-plus"
size="mini"
@click="handleAdd"
>新增
<el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd">新增
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
>删除
<el-button type="danger" icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete">删除
</el-button>
</el-col>
</el-row>
<el-table
v-loading="loading"
ref="table"
:data="picList"
@selection-change="handleSelectionChange"
>
<el-table v-loading="loading" ref="table" :data="picList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="序号" align="center" type="index" width="80" />
<el-table-column label="风采主题" align="center" prop="theme" />
......@@ -68,84 +33,39 @@
</el-table-column>
<el-table-column label="是否发布" align="center" prop="isfb">
<template slot-scope="scope">
<el-switch
v-model="scope.row.isShow"
active-value="1"
inactive-value="0"
@change="handleIsShow(scope.row)"
></el-switch>
<el-switch v-model="scope.row.isShow" active-value="1" inactive-value="0"
@change="handleIsShow(scope.row)"></el-switch>
</template>
</el-table-column>
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<!-- 未发布可以修改删除 -->
<div>
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
>修改
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)">修改
</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)">删除
</el-button>
</div>
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleCheck(scope.row)"
>查看
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleCheck(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"
/>
<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="900px" append-to-body>
<el-form
ref="form"
:model="form"
:rules="rules"
label-width="90px"
style="width: 80%; margin: auto"
>
<el-form-item
prop="file"
style="
<el-form ref="form" :model="form" :rules="rules" label-width="90px" style="width: 80%; margin: auto">
<el-form-item prop="file" style="
display: flex;
text-align: center;
justify-content: center;
transform: translateX(-30px);
"
>
<el-upload
v-loading="uploadLoading"
class="avatar-uploader"
action="#"
accept="image/*"
:show-file-list="false"
:on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload"
:http-request="uploadImage"
>
">
<el-upload v-loading="uploadLoading" class="avatar-uploader" action="#" accept="image/*" :show-file-list="false"
:on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload" :http-request="uploadImage">
<img v-if="form.file" :src="form.file" class="avatar" />
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
......@@ -154,12 +74,8 @@
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="风采主题:" prop="theme">
<el-input
:readonly="check == true ? true : false"
v-model="form.theme"
placeholder="请输入风采主题"
style="width: 100%"
/>
<el-input :readonly="check == true ? true : false" v-model="form.theme" placeholder="请输入风采主题"
style="width: 100%" />
</el-form-item>
</el-col>
</el-row>
......@@ -463,7 +379,7 @@ export default {
this.$message.success("修改成功");
this.open = false;
})
.catch((err) => {});
.catch((err) => { });
} else {
// 新增
const params = {
......@@ -478,7 +394,7 @@ export default {
this.$message.success("新增成功");
this.open = false;
})
.catch((err) => {});
.catch((err) => { });
}
}
});
......@@ -489,8 +405,7 @@ export default {
if (ids) {
this.$modal
.confirm(
`是否确认删除选中的${
Object.hasOwnProperty.call(ids, "length") ? ids.length : 1
`是否确认删除选中的${Object.hasOwnProperty.call(ids, "length") ? ids.length : 1
}条数据?`
)
.then(() => {
......@@ -522,7 +437,7 @@ export default {
isCommunityFb(data)
.then((response) => {
this.$modal.closeLoading();
this.$modal.msgSuccess("修改成功");
this.$message.success("修改成功");
})
.catch((error) => {
this.$modal.closeLoading();
......@@ -532,6 +447,7 @@ export default {
// 取消操作时的逻辑
});
},
},
};
</script>
......
......@@ -502,8 +502,11 @@ export default {
}
}
});
})
})();
},
// 反馈结果按钮
submitFormfk() {
this.$refs.formfk.validate((valid) => {
......
......@@ -138,7 +138,7 @@ export default {
this.getList();
},
//根据组id查询组成员
getList() {
getList() {
this.loading = true;
this.notificationId = this.$route.query.id;
console.log('this..notificationId', this.notificationId);
......@@ -188,7 +188,7 @@ export default {
/** 关闭 */
handleClose() {
this.$tab.closeOpenPage({
path: '/schoolManage/schoolInfoPush'
path: '/schoolManage/schoolNotice/school'
});
},
......
......@@ -6,7 +6,6 @@
<el-tab-pane label="停用" :name="State.STOP"></el-tab-pane>
</el-tabs>
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="标题" prop="title">
<el-input size="small" v-model="queryParams.title" placeholder="请输入标题" clearable
......
......@@ -244,7 +244,7 @@ export default {
// 返回按钮
handleClose() {
const obj = { path: "/system/role" };
const obj = { path: "/schoolManage/schoolNotice/personnelGrouping" };
this.$tab.closeOpenPage(obj);
},
......
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" inline>
<el-row>
<el-col :span="5">
<el-form-item label="设备名称">
<el-input style="width: 100%" v-model="queryParams.equipmentName" clearable placeholder="请输入设备名称"></el-input>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="分类编码">
<treeselect v-model="queryParams.classificationCode" :options="classificationOptions" :normalizer="normalizer"
placeholder="请选择分类编码" />
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="设备状态">
<el-select v-model="queryParams.equipmentState" clearable placeholder="请选择设备状态">
<el-option v-for="dict in dict.type.equipment_state" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="归属类型">
<el-select v-model="queryParams.affiliationType" clearable placeholder="请选择归属类型">
<el-option v-for="dict in dict.type.affiliation_type" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="4">
<el-button class="ml20" type="primary" icon="el-icon-search" size="mini" @click="getList">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-col>
</el-row>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="showDetail(0)">入库</el-button>
<el-button type="danger" plain icon="el-icon-minus" size="mini" @click="handleDelete(0)"
:disabled="isDisabledBtn">批量出库</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" icon="el-icon-download" size="mini" @click="upload.open = true">导入</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" icon="el-icon-upload2" size="mini" @click="handleExportClass">导出</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" icon="el-icon-printer" size="mini" @click="printBarcodes"
:disabled="isDisabledBtn">批量打印条码</el-button>
</el-col>
</el-row>
<!-- 表单数据 -->
<el-table v-loading="loading" stripe :data="deviceData" @selection-change="handleSelectionChange" width="100%">
<el-table-column type="selection" width="55" align="center" />
<el-table-column align="center" type="index" label="序号" width="55" fixed="left" />
<el-table-column align="center" prop="encode" label="自编码" width="140" fixed="left"></el-table-column>
<el-table-column align="center" prop="equipmentName" label="设备名称" fixed="left"></el-table-column>
<el-table-column align="center" prop="model" label="型号" fixed="left"></el-table-column>
<el-table-column align="center" prop="specification" label="规格" fixed="left"></el-table-column>
<el-table-column align="center" prop="classificationCode" label="分类编码"></el-table-column>
<el-table-column align="center" prop="unit" label="单位"></el-table-column>
<el-table-column align="center" prop="affiliationType" label="归属类型">
<template slot-scope="{ row }">
<div>{{ selectDictLabel(dict.type.affiliation_type, row.affiliationType) }}</div>
</template>
</el-table-column>
<el-table-column align="center" prop="equipmentState" label="设备状态">
<template slot-scope="{ row }">
<div>{{ selectDictLabel(dict.type.equipment_state, row.equipmentState) }}</div>
</template>
</el-table-column>
<el-table-column align="center" prop="isAllowLend" label="是否允许借出" width="120">
<template slot-scope="{ row }">
<div>{{ selectDictLabel(dict.type.is_lend, row.isAllowLend) }}</div>
</template>
</el-table-column>
<el-table-column align="center" prop="isLend" label="是否借出">
<template slot-scope="{ row }">
<div>{{ selectDictLabel(dict.type.is_lend, row.isLend) }}</div>
</template>
</el-table-column>
<el-table-column align="center" prop="dateOfProduction" label="投产日期" width="120"></el-table-column>
<el-table-column align="center" prop="price" label="价格(元)" width="100"></el-table-column>
<el-table-column align="center" prop="lifeOfUtility" label="效用年限(年)" width="120"></el-table-column>
<el-table-column align="center" prop="place" label="地点"></el-table-column>
<el-table-column align="center" prop="useName" label="使用人"></el-table-column>
<el-table-column align="center" prop="remark" label="备注"></el-table-column>
<el-table-column label="操作" align="center" min-width="220px" fixed="right">
<template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-edit" @click="showDetail(1, scope.row.id)">编辑</el-button>
<el-button size="mini" type="text" icon="el-icon-view" @click="showDetail(2, scope.row.id)">查看</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(1, 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="详细信息" :visible.sync="dialogVisible" width="50%" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="110px">
<el-row :gutter="20">
<el-col :span="24">
<el-form-item v-if="nowOptionType != 0" label="自编码:" prop="encode">
<el-input v-model="form.encode" placeholder="请输入自编码" disabled></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="分类编码:" prop="classificationCode">
<treeselect v-model="form.classificationCode" :options="classificationOptions" :normalizer="normalizer"
@select="selectNode" placeholder="请选择分类编码" :disabled="nowOptionType == 2 ? true : false" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="设备名称:" prop="equipmentName">
<el-input v-model="form.equipmentName" placeholder="请输入设备名称" :disabled="nowOptionType == 2 ? true : false"
clearable></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="型号:" prop="model">
<el-input v-model="form.model" placeholder="请输入型号" :disabled="nowOptionType == 2 ? true : false"
clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="规格:" prop="specification">
<el-input v-model="form.specification" placeholder="请输入规格" :disabled="nowOptionType == 2 ? true : false"
clearable></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="单位:" prop="unit">
<el-input v-model="form.unit" placeholder="请输入单位" :disabled="nowOptionType == 2 ? true : false"
clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="归属类型:" prop="affiliationType">
<el-select v-model="form.affiliationType" clearable placeholder="请选择归属类型"
:disabled="nowOptionType == 2 ? true : false" class="selectWidth">
<el-option v-for="dict in dict.type.affiliation_type" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="设备状态:" prop="equipmentState">
<el-select v-model="form.equipmentState" clearable placeholder="请选择设备状态"
:disabled="nowOptionType == 2 ? true : false" class="selectWidth">
<el-option v-for="dict in dict.type.equipment_state" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否允许借出:" prop="isAllowLend">
<el-select v-model="form.isAllowLend" clearable placeholder="请选择是否允许借出"
:disabled="nowOptionType == 2 ? true : false" class="selectWidth">
<el-option v-for="dict in dict.type.is_lend" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="是否借出:" prop="isLend">
<el-select v-model="form.isLend" clearable placeholder="请选择是否借出"
:disabled="nowOptionType == 2 ? true : false" class="selectWidth">
<el-option v-for="dict in dict.type.is_lend" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="投产日期:" prop="dateOfProduction">
<el-date-picker v-model="form.dateOfProduction" type="date" placeholder="选择日期" class="selectWidth"
value-format="yyyy-MM-dd" :disabled="nowOptionType == 2 ? true : false" clearable>
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="价格:" prop="price">
<el-input v-model="form.price" placeholder="请输入价格" :disabled="nowOptionType == 2 ? true : false"
clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="效用年限:" prop="lifeOfUtility">
<el-input v-model="form.lifeOfUtility" placeholder="请输入效用年限(年)"
:disabled="nowOptionType == 2 ? true : false" clearable></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="地点:" prop="place">
<el-input v-model="form.place" placeholder="请输入地点" :disabled="nowOptionType == 2 ? true : false"
clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="使用人:" prop="useName">
<el-select v-model="form.useId" filterable placeholder="请选择使用人"
:disabled="nowOptionType == 2 ? true : false" clearable>
<el-option v-for="(item, index) in userList" :key="index" :label="item.userName" :value="item.userId">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="24">
<el-form-item label="备注:" prop="remark">
<el-input type="textarea" v-model="form.remark" placeholder="请输入备注"
:disabled="nowOptionType == 2 ? true : false" clearable></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button v-if="nowOptionType != 2" type="primary" @click="submitForm">确 定</el-button>
<el-button @click="dialogVisible = false">取 消</el-button>
</div>
</el-dialog>
<!-- 导入对话框-->
<el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
<el-upload ref="upload" :limit="1" accept=".xlsx, .xls" :headers="upload.headers" :action="upload.url"
:disabled="upload.isUploading" :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess"
:auto-upload="false" drag>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip">
<span>仅允许导入xls、xlsx格式文件。</span>
<el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline"
@click="importTemplate">下载模板
</el-link>
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFileForm">确 定</el-button>
<el-button @click="upload.open = false">取 消</el-button>
</div>
</el-dialog>
<!-- 打印二维码 弹框部分 -->
<el-dialog title="打印条码预览" :visible.sync="printDialog" width="30%">
<div class="qrCodeList">
<div v-for="(item, index) in chooseList" :key="index">
<div class="titlShow">东营市二中</div>
<div class="flexBlock qrCode">
<div class="qrCodeLeft">
<div :id="'qrcode' + index"></div>
<div>{{ item.encode }}</div>
</div>
<div class="qrCodeRight">
<div>{{ item.equipmentName }}:{{ item.model }}</div>
<div>地点:{{ item.place }}</div>
</div>
</div>
</div>
</div>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="printCode">打 印</el-button>
</div>
</el-dialog>
<!-- 打印二维码 弹框部分 -->
<!-- 隐藏二维码页面样式 -->
<div id="printBlock">
<div v-for="(item, index) in printList" :key="index" class="printBody">
<div class="titlePrint">东营市二中</div>
<div class="flexBlock printQrCode">
<div class="printLeft">
<div :id="'print' + index" class="printImg"></div>
<div>{{ item.encode }}</div>
</div>
<div class="printRight">
<div>{{ item.equipmentName }}:{{ item.model }}</div>
<div>地点:{{ item.place }}</div>
</div>
</div>
<div style="page-break-after:always"></div>
</div>
</div>
<!-- 隐藏二维码页面样式 -->
</div>
</template>
<script>
import { getToken } from "@/utils/auth";
import {
addEquipmentLedger, deleteEquipmentLedger, editEquipmentLedger,
getEquipmentLedger,
getEquipmentLedgerDetailByID, getModelByID, getUserList
} from "../../../../api/smartSchool/schoolProperty/equipmenTledger";
import { getProduct } from "../../../../api/smartSchool/schoolProperty/classiFication";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import QRCode from "qrcodejs2"; // 生成二维码插件
import printJS from "print-js"; // 打印插件
import * as dd from 'dingtalk-jsapi';
export default {
name: "index",
dicts: ['equipment_state', 'affiliation_type', 'is_lend'],
components: { Treeselect },
data() {
return {
loading: true, // 遮罩层
total: 0, // 总条数
deviceData: [], // 设备台账表格数据
title: "", // 弹出层标题
dialogVisible: false, // 添加或修改
queryParams: { // 查询参数
pageNum: 1,
pageSize: 10,
equipmentName: '',
classificationCode: undefined,
equipmentState: '',
affiliationType: '',
},
classificationOptions: [], // 分类编码树状结构
upload: {
// 是否显示弹出层
open: false,
// 弹出层标题
title: "",
// 是否禁用上传
isUploading: false,
// 设置上传的请求头部
headers: { Authorization: "Bearer " + getToken() },
// 上传的地址
url: process.env.VUE_APP_BASE_API + "/equipmentLedger/importData"
},
form: {
id: '',
encode: '',
equipmentName: '',
model: '',
specification: '',
classificationCode: undefined,
unit: '',
affiliationType: '',
equipmentState: '',
isAllowLend: '',
isLend: '',
dateOfProduction: '',
price: '',
lifeOfUtility: '',
place: '',
useId: '',
useName: '',
remark: '',
},
rules: { // 表单校验
equipmentName: [
{ required: true, message: '请输入设备名称', trigger: 'blur' },
],
classificationCode: [
{ required: true, message: '请选择分类编码', trigger: 'change' }
],
equipmentState: [
{ required: true, message: '请选择设备状态', trigger: 'change' }
],
affiliationType: [
{ required: true, message: '请选择归属类型', trigger: 'change' }
],
isAllowLend: [
{ required: true, message: '请选择是否允许借出', trigger: 'change' }
]
},
nowOptionType: '', // 0 入库 1 编辑 2 查看
electItem: [], // 选中的数据
isDisabledBtn: true,
chooseList: [], //用户选择的table数据
printDialog: false, // 打印二维码预览
printList: [],
userList: [] //使用人列表
};
},
created() {
this.getClassificationCodeTree()
this.getList()
},
methods: {
//获取分类编码树形下拉框
getClassificationCodeTree() {
getProduct().then(res => {
if (res.code == 200) {
this.classificationOptions = this.handleTree(res.rows, "id")
}
})
},
/** 查询列表 */
getList() {
this.loading = true
getEquipmentLedger({ ...this.queryParams }).then(res => {
if (res.code == 200) {
this.total = res.total
this.deviceData = res.rows
this.loading = false
}
})
},
/** 重置按钮操作 */
resetQuery() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
equipmentName: '',
classificationCode: undefined,
equipmentState: '',
affiliationType: '',
}
this.getList()
},
/** 转换分类编码数据结构 */
normalizer(node) {
if (node.children && !node.children.length) {
delete node.children;
}
return {
id: node.classificationCode,
label: node.equipmentType,
children: node.children
};
},
//弹出层分类编码选择事件 获取当前分类编码的型号
selectNode(node) {
const id = node.classificationCode
getModelByID(id).then(res => {
if (res.code == 200) {
this.form.model = res.data.model
}
})
},
//0 入库 1 编辑 2 查看
showDetail(type, id) {
this.form = {
id: '',
encode: '',
equipmentName: '',
model: '',
specification: '',
classificationCode: undefined,
unit: '',
affiliationType: '',
equipmentState: '',
isAllowLend: '',
isLend: '',
dateOfProduction: '',
price: '',
lifeOfUtility: '',
place: '',
useName: '',
useId: '',
remark: '',
}
this.nowOptionType = type
this.getSelectUser()
if (type != 0) {
getEquipmentLedgerDetailByID(id).then(res => {
if (res.code == 200) {
Object.keys(this.form).forEach(key => {
res.data[key] && (this.form[key] = res.data[key])
})
}
})
}
this.dialogVisible = true
},
//使用人列表数据
getSelectUser() {
getUserList().then(res => {
if (res.code == 200) {
this.userList = res.rows
}
})
},
//表单提交
submitForm() {
const useId = this.form.useId
this.form.useName = useId == '' ? '' : this.userList.find(item => item.userId == useId).userName
this.$refs['form'].validate((valid) => {
if (valid) {
if (this.nowOptionType == 0) {
//0 入库 1 编辑 2 查看
const data = {
equipmentName: this.form.equipmentName,
model: this.form.model,
specification: this.form.specification,
classificationCode: this.form.classificationCode,
unit: this.form.unit,
affiliationType: this.form.affiliationType,
equipmentState: this.form.equipmentState,
isAllowLend: this.form.isAllowLend,
isLend: this.form.isLend,
dateOfProduction: this.form.dateOfProduction,
price: this.form.price,
lifeOfUtility: this.form.lifeOfUtility,
place: this.form.place,
useName: this.form.useName,
useId,
remark: this.form.remark,
}
addEquipmentLedger(data).then(res => {
if (res.code == 200) {
this.$message.success("设备台账入库成功!")
this.dialogVisible = false
this.getList()
}
})
} else if (this.nowOptionType == 1) {
//1 编辑
editEquipmentLedger({ ...this.form }).then(res => {
if (res.code == 200) {
this.$message.success("设备台账编辑成功!")
this.dialogVisible = false
this.getList()
}
})
}
}
})
},
//出库
handleDelete(type, item) {
let idString = type == 0 ? this.electItem.toString() : item.id
let message = type == 0 ? '是否确认批量出库选中设备?' : `是否确认出库${item.model}设备?`
this.$confirm(message, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
deleteEquipmentLedger(idString).then(res => {
if (res.code == 200) {
this.$message({
type: 'success',
message: '出库成功!'
});
this.getList();
}
})
}).catch(() => {
this.$message({
type: 'info',
message: '已取消出库!'
});
});
},
//模版下载
importTemplate() {
this.download(
"/equipmentLedger/importTemplate",
{},
`设备台账_template_${new Date().getTime()}.xlsx`
);
},
// 文件上传中处理
handleFileUploadProgress(event, file, fileList) {
this.upload.isUploading = true;
},
// 文件上传成功处理
handleFileSuccess(response, file, fileList) {
this.upload.open = false;
this.upload.isUploading = false;
this.$refs.upload.clearFiles();
this.$alert(
"<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
response.msg +
"</div>",
"导入结果",
{ dangerouslyUseHTMLString: true }
);
this.getList();
},
// 提交上传文件
submitFileForm() {
this.$refs.upload.submit();
},
//导出
handleExportClass() {
const data = {
equipmentName: this.queryParams.equipmentName,
classificationCode: this.queryParams.classificationCode,
equipmentState: this.queryParams.equipmentState,
affiliationType: this.queryParams.affiliationType,
}
this.download('/equipmentLedger/export', {
...data,
}, `设备台账_${Date.now()}.xlsx`)
},
//生成批量打印条码
printBarcodes() {
const url = `http://192.168.1.109:1024`;
dd.biz.util.openLink({
url: url,
onSuccess: () => {
console.log(newURL, 'newURL');
console.log('跳转成功,准备打印');
// 打印条码
this.printCode();
},
onFail: (error) => {
console.error('跳转失败', error);
}
});
},
// 打印条码
printCode() {
this.printList = this.chooseList;
this.$nextTick(() => {
this.chooseList.map((item, index) => {
const dom = document.getElementById(`qrcode${index}`).lastElementChild;
if (dom == null) {
new QRCode(`qrcode${index}`, {
width: 150,
height: 150,
text: item.encode,
});
}
});
this.printList.map((item, index) => {
const domPrint = document.getElementById(`print${index}`).lastElementChild;
if (domPrint == null) {
new QRCode(`print${index}`, {
width: 60,
height: 60,
text: item.encode,
});
}
});
printJS({
printable: 'printBlock', // 标签元素id
type: 'html',
targetStyles: ['*'],
font_size: '10px',
style: `
@media print{
@page{
size:auto;
margin:4mm 0mm 0mm 0mm
}
@page :first {
margin-top:2mm
}
#printBlock{
display:block!important
}
}`
});
});
},
// 多选框选中数据
handleSelectionChange(selection) {
this.chooseList = selection
this.electItem = selection.map(item => {
return item.id
})
this.isDisabledBtn = selection.length != 0 ? false : true
},
},
};
</script>
<style scoped>
::v-deep .el-form-item,
::v-deep .el-select {
width: 100%;
}
::v-deep .el-form-item--small .el-form-item__content {
width: 75%;
}
.qrCodeList {
max-height: 500px;
overflow-y: scroll;
}
.qrCode {
width: 300px;
font-size: 14px;
line-height: 30px;
align-items: flex-start;
margin: 0 auto 20px auto;
}
.qrCodeLeft {
text-align: center;
}
.qrCodeRight {
padding: 20px 0 20px 15px;
}
.titlShow {
font-weight: bold;
text-align: center;
padding-bottom: 10px;
font-size: 16px;
}
#printBlock {
display: none;
margin: 0px !important;
}
.printLeft {
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
}
.printBody {
width: 250px;
}
.printQrCode {
font-size: 6px;
line-height: 20px;
align-items: center;
padding: 8px;
}
.printRight {
width: 60%;
padding: 0 5px;
}
.titlePrint {
font-size: 8px;
font-weight: bold;
text-align: center;
}
.printImg {
display: block;
}
</style>
......@@ -316,6 +316,7 @@ import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import QRCode from "qrcodejs2"; // 生成二维码插件
import printJS from "print-js"; // 打印插件
import * as dd from 'dingtalk-jsapi';
export default {
......@@ -621,58 +622,55 @@ export default {
}, `设备台账_${Date.now()}.xlsx`)
},
//生成批量打印条码
//点击批量打印跳转
printBarcodes() {
this.printDialog = true
this.printList = this.chooseList
this.$nextTick(() => {
this.chooseList.map((item, index) => {
const dom = document.getElementById(`qrcode${index}`).lastElementChild
if (dom == null) {
new QRCode(`qrcode${index}`, {
width: 150,
height: 150,
text: item.encode,
});
}
})
// this.printDialog = true;
this.printList = this.chooseList;
console.log(11, this.printList);
const url = 'http://localhost:1024/printBarcodes';
console.log(url, 'url');
const ids = this.electItem.join(',');
console.log(ids, 'ids');
const encodes = this.chooseList.map(item => item.encode).join(',');
console.log(encodes, 'encodes');
const printListParam = encodeURIComponent(JSON.stringify(this.printList));
dd.biz.util.openLink({
url: `${url}?ids=${ids}&encodes=${encodes}&printList=${printListParam}`,
onSuccess: () => {
console.log('跳转成功,准备打印');
// 打印条码
// this.printCode();
},
onFail: (error) => {
console.error('跳转失败', error);
}
});
},
this.printList.map((item, index) => {
const domPrint = document.getElementById(`print${index}`).lastElementChild
if (domPrint == null) {
new QRCode(`print${index}`, {
width: 60,
height: 60,
text: item.encode,
});
}
})
})
},
//打印条码
printCode() {
printJS({
printable: 'printBlock', // 标签元素id
type: 'html',
targetStyles: ['*'],
font_size: '10px',
style: `
@media print{
@page{
size:auto;
margin:4mm 0mm 0mm 0mm
}
@page :first {
margin-top:2mm
}
#printBlock{
display:block!important
}
}`
})
},
// printCode() {
// printJS({
// printable: 'printBlock', // 标签元素id
// type: 'html',
// targetStyles: ['*'],
// font_size: '10px',
// style: `
// @media print{
// @page{
// size:auto;
// margin:4mm 0mm 0mm 0mm
// }
// @page :first {
// margin-top:2mm
// }
// #printBlock{
// display:block!important
// }
// }`
// })
// },
// 多选框选中数据
handleSelectionChange(selection) {
......
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" inline>
<el-row>
<el-col :span="5">
<el-form-item label="设备名称">
<el-input style="width: 100%" v-model="queryParams.equipmentName" clearable
placeholder="请输入设备名称"></el-input>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="分类编码">
<treeselect v-model="queryParams.classificationCode" :options="classificationOptions"
:normalizer="normalizer" placeholder="请选择分类编码" />
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="设备状态">
<el-select v-model="queryParams.equipmentState" clearable placeholder="请选择设备状态">
<el-option v-for="dict in dict.type.equipment_state" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="归属类型">
<el-select v-model="queryParams.affiliationType" clearable placeholder="请选择归属类型">
<el-option v-for="dict in dict.type.affiliation_type" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="4">
<el-button class="ml20" type="primary" icon="el-icon-search" size="mini" @click="getList">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-col>
</el-row>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="showDetail(0)">入库</el-button>
<el-button type="danger" plain icon="el-icon-minus" size="mini" @click="handleDelete(0)"
:disabled="isDisabledBtn">批量出库</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" icon="el-icon-download" size="mini" @click="upload.open = true">导入</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" icon="el-icon-upload2" size="mini" @click="handleExportClass">导出</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" icon="el-icon-printer" size="mini" @click="printBarcodes"
:disabled="isDisabledBtn">批量打印条码</el-button>
</el-col>
</el-row>
<!-- 表单数据 -->
<el-table v-loading="loading" stripe :data="deviceData" @selection-change="handleSelectionChange" width="100%">
<el-table-column type="selection" width="55" align="center" />
<el-table-column align="center" type="index" label="序号" width="55" fixed="left" />
<el-table-column align="center" prop="encode" label="自编码" width="140" fixed="left"></el-table-column>
<el-table-column align="center" prop="equipmentName" label="设备名称" fixed="left"></el-table-column>
<el-table-column align="center" prop="model" label="型号" fixed="left"></el-table-column>
<el-table-column align="center" prop="specification" label="规格" fixed="left"></el-table-column>
<el-table-column align="center" prop="classificationCode" label="分类编码"></el-table-column>
<el-table-column align="center" prop="unit" label="单位"></el-table-column>
<el-table-column align="center" prop="affiliationType" label="归属类型">
<template slot-scope="{ row }">
<div>{{ selectDictLabel(dict.type.affiliation_type, row.affiliationType) }}</div>
</template>
</el-table-column>
<el-table-column align="center" prop="equipmentState" label="设备状态">
<template slot-scope="{ row }">
<div>{{ selectDictLabel(dict.type.equipment_state, row.equipmentState) }}</div>
</template>
</el-table-column>
<el-table-column align="center" prop="isAllowLend" label="是否允许借出" width="120">
<template slot-scope="{ row }">
<div>{{ selectDictLabel(dict.type.is_lend, row.isAllowLend) }}</div>
</template>
</el-table-column>
<el-table-column align="center" prop="isLend" label="是否借出">
<template slot-scope="{ row }">
<div>{{ selectDictLabel(dict.type.is_lend, row.isLend) }}</div>
</template>
</el-table-column>
<el-table-column align="center" prop="dateOfProduction" label="投产日期" width="120"></el-table-column>
<el-table-column align="center" prop="price" label="价格(元)" width="100"></el-table-column>
<el-table-column align="center" prop="lifeOfUtility" label="效用年限(年)" width="120"></el-table-column>
<el-table-column align="center" prop="place" label="地点"></el-table-column>
<el-table-column align="center" prop="useName" label="使用人"></el-table-column>
<el-table-column align="center" prop="remark" label="备注"></el-table-column>
<el-table-column label="操作" align="center" min-width="220px" fixed="right">
<template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-edit"
@click="showDetail(1, scope.row.id)">编辑</el-button>
<el-button size="mini" type="text" icon="el-icon-view"
@click="showDetail(2, scope.row.id)">查看</el-button>
<el-button size="mini" type="text" icon="el-icon-delete"
@click="handleDelete(1, 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="详细信息" :visible.sync="dialogVisible" width="50%" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="110px">
<el-row :gutter="20">
<el-col :span="24">
<el-form-item v-if="nowOptionType != 0" label="自编码:" prop="encode">
<el-input v-model="form.encode" placeholder="请输入自编码" disabled></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="分类编码:" prop="classificationCode">
<treeselect v-model="form.classificationCode" :options="classificationOptions"
:normalizer="normalizer" @select="selectNode" placeholder="请选择分类编码"
:disabled="nowOptionType == 2 ? true : false" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="设备名称:" prop="equipmentName">
<el-input v-model="form.equipmentName" placeholder="请输入设备名称"
:disabled="nowOptionType == 2 ? true : false" clearable></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="型号:" prop="model">
<el-input v-model="form.model" placeholder="请输入型号" :disabled="nowOptionType == 2 ? true : false"
clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="规格:" prop="specification">
<el-input v-model="form.specification" placeholder="请输入规格"
:disabled="nowOptionType == 2 ? true : false" clearable></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="单位:" prop="unit">
<el-input v-model="form.unit" placeholder="请输入单位" :disabled="nowOptionType == 2 ? true : false"
clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="归属类型:" prop="affiliationType">
<el-select v-model="form.affiliationType" clearable placeholder="请选择归属类型"
:disabled="nowOptionType == 2 ? true : false" class="selectWidth">
<el-option v-for="dict in dict.type.affiliation_type" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="设备状态:" prop="equipmentState">
<el-select v-model="form.equipmentState" clearable placeholder="请选择设备状态"
:disabled="nowOptionType == 2 ? true : false" class="selectWidth">
<el-option v-for="dict in dict.type.equipment_state" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否允许借出:" prop="isAllowLend">
<el-select v-model="form.isAllowLend" clearable placeholder="请选择是否允许借出"
:disabled="nowOptionType == 2 ? true : false" class="selectWidth">
<el-option v-for="dict in dict.type.is_lend" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="是否借出:" prop="isLend">
<el-select v-model="form.isLend" clearable placeholder="请选择是否借出"
:disabled="nowOptionType == 2 ? true : false" class="selectWidth">
<el-option v-for="dict in dict.type.is_lend" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="投产日期:" prop="dateOfProduction">
<el-date-picker v-model="form.dateOfProduction" type="date" placeholder="选择日期"
class="selectWidth" value-format="yyyy-MM-dd" :disabled="nowOptionType == 2 ? true : false"
clearable>
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="价格:" prop="price">
<el-input v-model="form.price" placeholder="请输入价格" :disabled="nowOptionType == 2 ? true : false"
clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="效用年限:" prop="lifeOfUtility">
<el-input v-model="form.lifeOfUtility" placeholder="请输入效用年限(年)"
:disabled="nowOptionType == 2 ? true : false" clearable></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="地点:" prop="place">
<el-input v-model="form.place" placeholder="请输入地点" :disabled="nowOptionType == 2 ? true : false"
clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="使用人:" prop="useName">
<el-select v-model="form.useId" filterable placeholder="请选择使用人"
:disabled="nowOptionType == 2 ? true : false" clearable>
<el-option v-for="(item, index) in userList" :key="index" :label="item.userName"
:value="item.userId">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="24">
<el-form-item label="备注:" prop="remark">
<el-input type="textarea" v-model="form.remark" placeholder="请输入备注"
:disabled="nowOptionType == 2 ? true : false" clearable></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button v-if="nowOptionType != 2" type="primary" @click="submitForm">确 定</el-button>
<el-button @click="dialogVisible = false">取 消</el-button>
</div>
</el-dialog>
<!-- 导入对话框-->
<el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
<el-upload ref="upload" :limit="1" accept=".xlsx, .xls" :headers="upload.headers" :action="upload.url"
:disabled="upload.isUploading" :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess"
:auto-upload="false" drag>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip">
<span>仅允许导入xls、xlsx格式文件。</span>
<el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline"
@click="importTemplate">下载模板
</el-link>
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFileForm">确 定</el-button>
<el-button @click="upload.open = false">取 消</el-button>
</div>
</el-dialog>
<!-- 打印二维码 弹框部分 -->
<el-dialog title="打印条码预览" :visible.sync="printDialog" width="30%">
<div class="qrCodeList">
<div v-for="(item, index) in chooseList" :key="index">
<div class="titlShow">东营市二中</div>
<div class="flexBlock qrCode">
<div class="qrCodeLeft">
<div :id="'qrcode' + index"></div>
<div>{{ item.encode }}</div>
</div>
<div class="qrCodeRight">
<div>{{ item.equipmentName }}:{{ item.model }}</div>
<div>地点:{{ item.place }}</div>
</div>
</div>
</div>
</div>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="printCode">打 印</el-button>
</div>
</el-dialog>
<!-- 打印二维码 弹框部分 -->
<!-- 隐藏二维码页面样式 -->
<div id="printBlock">
<div v-for="(item, index) in printList" :key="index" class="printBody">
<div class="titlePrint">东营市二中</div>
<div class="flexBlock printQrCode">
<div class="printLeft">
<div :id="'print' + index" class="printImg"></div>
<div>{{ item.encode }}</div>
</div>
<div class="printRight">
<div>{{ item.equipmentName }}:{{ item.model }}</div>
<div>地点:{{ item.place }}</div>
</div>
</div>
<div style="page-break-after:always"></div>
</div>
</div>
<!-- 隐藏二维码页面样式 -->
</div>
</template>
<script>
import { getToken } from "@/utils/auth";
import {
addEquipmentLedger, deleteEquipmentLedger, editEquipmentLedger,
getEquipmentLedger,
getEquipmentLedgerDetailByID, getModelByID, getUserList
} from "../../../../api/smartSchool/schoolProperty/equipmenTledger";
import { getProduct } from "../../../../api/smartSchool/schoolProperty/classiFication";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import QRCode from "qrcodejs2"; // 生成二维码插件
import printJS from "print-js"; // 打印插件
export default {
name: "index",
dicts: ['equipment_state', 'affiliation_type', 'is_lend'],
components: { Treeselect },
data() {
return {
loading: true, // 遮罩层
total: 0, // 总条数
deviceData: [], // 设备台账表格数据
title: "", // 弹出层标题
dialogVisible: false, // 添加或修改
queryParams: { // 查询参数
pageNum: 1,
pageSize: 10,
equipmentName: '',
classificationCode: undefined,
equipmentState: '',
affiliationType: '',
},
classificationOptions: [], // 分类编码树状结构
upload: {
// 是否显示弹出层
open: false,
// 弹出层标题
title: "",
// 是否禁用上传
isUploading: false,
// 设置上传的请求头部
headers: { Authorization: "Bearer " + getToken() },
// 上传的地址
url: process.env.VUE_APP_BASE_API + "/equipmentLedger/importData"
},
form: {
id: '',
encode: '',
equipmentName: '',
model: '',
specification: '',
classificationCode: undefined,
unit: '',
affiliationType: '',
equipmentState: '',
isAllowLend: '',
isLend: '',
dateOfProduction: '',
price: '',
lifeOfUtility: '',
place: '',
useId: '',
useName: '',
remark: '',
},
rules: { // 表单校验
equipmentName: [
{ required: true, message: '请输入设备名称', trigger: 'blur' },
],
classificationCode: [
{ required: true, message: '请选择分类编码', trigger: 'change' }
],
equipmentState: [
{ required: true, message: '请选择设备状态', trigger: 'change' }
],
affiliationType: [
{ required: true, message: '请选择归属类型', trigger: 'change' }
],
isAllowLend: [
{ required: true, message: '请选择是否允许借出', trigger: 'change' }
]
},
nowOptionType: '', // 0 入库 1 编辑 2 查看
electItem: [], // 选中的数据
isDisabledBtn: true,
chooseList: [], //用户选择的table数据
printDialog: false, // 打印二维码预览
printList: [],
userList: [] //使用人列表
};
},
created() {
this.getClassificationCodeTree()
this.getList()
},
methods: {
//获取分类编码树形下拉框
getClassificationCodeTree() {
getProduct().then(res => {
if (res.code == 200) {
this.classificationOptions = this.handleTree(res.rows, "id")
}
})
},
/** 查询列表 */
getList() {
this.loading = true
getEquipmentLedger({ ...this.queryParams }).then(res => {
if (res.code == 200) {
this.total = res.total
this.deviceData = res.rows
this.loading = false
}
})
},
/** 重置按钮操作 */
resetQuery() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
equipmentName: '',
classificationCode: undefined,
equipmentState: '',
affiliationType: '',
}
this.getList()
},
/** 转换分类编码数据结构 */
normalizer(node) {
if (node.children && !node.children.length) {
delete node.children;
}
return {
id: node.classificationCode,
label: node.equipmentType,
children: node.children
};
},
//弹出层分类编码选择事件 获取当前分类编码的型号
selectNode(node) {
const id = node.classificationCode
getModelByID(id).then(res => {
if (res.code == 200) {
this.form.model = res.data.model
}
})
},
//0 入库 1 编辑 2 查看
showDetail(type, id) {
this.form = {
id: '',
encode: '',
equipmentName: '',
model: '',
specification: '',
classificationCode: undefined,
unit: '',
affiliationType: '',
equipmentState: '',
isAllowLend: '',
isLend: '',
dateOfProduction: '',
price: '',
lifeOfUtility: '',
place: '',
useName: '',
useId: '',
remark: '',
}
this.nowOptionType = type
this.getSelectUser()
if (type != 0) {
getEquipmentLedgerDetailByID(id).then(res => {
if (res.code == 200) {
Object.keys(this.form).forEach(key => {
res.data[key] && (this.form[key] = res.data[key])
})
}
})
}
this.dialogVisible = true
},
//使用人列表数据
getSelectUser() {
getUserList().then(res => {
if (res.code == 200) {
this.userList = res.rows
}
})
},
//表单提交
submitForm() {
const useId = this.form.useId
this.form.useName = useId == '' ? '' : this.userList.find(item => item.userId == useId).userName
this.$refs['form'].validate((valid) => {
if (valid) {
if (this.nowOptionType == 0) {
//0 入库 1 编辑 2 查看
const data = {
equipmentName: this.form.equipmentName,
model: this.form.model,
specification: this.form.specification,
classificationCode: this.form.classificationCode,
unit: this.form.unit,
affiliationType: this.form.affiliationType,
equipmentState: this.form.equipmentState,
isAllowLend: this.form.isAllowLend,
isLend: this.form.isLend,
dateOfProduction: this.form.dateOfProduction,
price: this.form.price,
lifeOfUtility: this.form.lifeOfUtility,
place: this.form.place,
useName: this.form.useName,
useId,
remark: this.form.remark,
}
addEquipmentLedger(data).then(res => {
if (res.code == 200) {
this.$message.success("设备台账入库成功!")
this.dialogVisible = false
this.getList()
}
})
} else if (this.nowOptionType == 1) {
//1 编辑
editEquipmentLedger({ ...this.form }).then(res => {
if (res.code == 200) {
this.$message.success("设备台账编辑成功!")
this.dialogVisible = false
this.getList()
}
})
}
}
})
},
//出库
handleDelete(type, item) {
let idString = type == 0 ? this.electItem.toString() : item.id
let message = type == 0 ? '是否确认批量出库选中设备?' : `是否确认出库${item.model}设备?`
this.$confirm(message, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
deleteEquipmentLedger(idString).then(res => {
if (res.code == 200) {
this.$message({
type: 'success',
message: '出库成功!'
});
this.getList();
}
})
}).catch(() => {
this.$message({
type: 'info',
message: '已取消出库!'
});
});
},
//模版下载
importTemplate() {
this.download(
"/equipmentLedger/importTemplate",
{},
`设备台账_template_${new Date().getTime()}.xlsx`
);
},
// 文件上传中处理
handleFileUploadProgress(event, file, fileList) {
this.upload.isUploading = true;
},
// 文件上传成功处理
handleFileSuccess(response, file, fileList) {
this.upload.open = false;
this.upload.isUploading = false;
this.$refs.upload.clearFiles();
this.$alert(
"<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
response.msg +
"</div>",
"导入结果",
{ dangerouslyUseHTMLString: true }
);
this.getList();
},
// 提交上传文件
submitFileForm() {
this.$refs.upload.submit();
},
//导出
handleExportClass() {
const data = {
equipmentName: this.queryParams.equipmentName,
classificationCode: this.queryParams.classificationCode,
equipmentState: this.queryParams.equipmentState,
affiliationType: this.queryParams.affiliationType,
}
this.download('/equipmentLedger/export', {
...data,
}, `设备台账_${Date.now()}.xlsx`)
},
//生成批量打印条码
printBarcodes() {
this.printDialog = true
this.printList = this.chooseList
this.$nextTick(() => {
this.chooseList.map((item, index) => {
const dom = document.getElementById(`qrcode${index}`).lastElementChild
if (dom == null) {
new QRCode(`qrcode${index}`, {
width: 150,
height: 150,
text: item.encode,
});
}
})
this.printList.map((item, index) => {
const domPrint = document.getElementById(`print${index}`).lastElementChild
if (domPrint == null) {
new QRCode(`print${index}`, {
width: 60,
height: 60,
text: item.encode,
});
}
})
})
},
//打印条码
printCode() {
printJS({
printable: 'printBlock', // 标签元素id
type: 'html',
targetStyles: ['*'],
font_size: '10px',
style: `
@media print{
@page{
size:auto;
margin:4mm 0mm 0mm 0mm
}
@page :first {
margin-top:2mm
}
#printBlock{
display:block!important
}
}`
})
},
// 多选框选中数据
handleSelectionChange(selection) {
this.chooseList = selection
this.electItem = selection.map(item => {
return item.id
})
this.isDisabledBtn = selection.length != 0 ? false : true
},
},
};
</script>
<style scoped>
::v-deep .el-form-item,
::v-deep .el-select {
width: 100%;
}
::v-deep .el-form-item--small .el-form-item__content {
width: 75%;
}
.qrCodeList {
max-height: 500px;
overflow-y: scroll;
}
.qrCode {
width: 300px;
font-size: 14px;
line-height: 30px;
align-items: flex-start;
margin: 0 auto 20px auto;
}
.qrCodeLeft {
text-align: center;
}
.qrCodeRight {
padding: 20px 0 20px 15px;
}
.titlShow {
font-weight: bold;
text-align: center;
padding-bottom: 10px;
font-size: 16px;
}
#printBlock {
display: none;
margin: 0px !important;
}
.printLeft {
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
}
.printBody {
width: 250px;
}
.printQrCode {
font-size: 6px;
line-height: 20px;
align-items: center;
padding: 8px;
}
.printRight {
width: 60%;
padding: 0 5px;
}
.titlePrint {
font-size: 8px;
font-weight: bold;
text-align: center;
}
.printImg {
display: block;
}</style>
......@@ -100,8 +100,8 @@
<el-row :gutter="30">
<el-col :span="12">
<el-form-item label="借用期限(天)" prop="deadline">
<el-input v-model="lendReturnForm.deadline" placeholder="请输入借用期限"
:disabled="nowType == 2 ? true : false"></el-input>
<el-input v-model="lendReturnForm.deadline" placeholder="请输入借用期限" :disabled="nowType == 2 ? true : false"
type="number"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
......
......@@ -619,7 +619,8 @@ import { uploadImage as commonUpload } from '@/api/common'
import { ExportType, Gender, Nations, Area } from '@/enums/common'
import { getYearList } from '@/utils/utilLibrary/getYearList'
import { getNewYear } from "@/api/smartSchool/teachAffairAdministration/affairClassView";
import * as dd from 'dingtalk-jsapi';
import { im_1_0 } from '@alicloud/dingtalk'
export default {
name: 'AffairStudentManage',
components: { ClassSelect, PicAvatar },
......@@ -921,17 +922,40 @@ export default {
})
},
// 学籍证明
// studentProve(row) {
// this.$router.push({
// path: '/teachAffairAdministration/studentProve',
// query: {
// id: row.id,
// name: row.studentName,
// idCard: row.idCard,
// schoolNo: row.schoolNo
// }
// })
// },
studentProve(row) {
this.$router.push({
path: '/teachAffairAdministration/studentProve',
query: {
id: row.id,
name: row.studentName,
idCard: row.idCard,
schoolNo: row.schoolNo
console.log('准备跳转');
const baseUrl = window.location.protocol + '//' + window.location.host; // 获取当前页面的协议、主机作为前缀URL
console.log('im_1_0', baseUrl);
const url = `http://localhost:1024/studentRegistra?id=${row.id}&name=${row.studentName}&idCard=${row.idCard}&schoolNo=${row.schoolNo}`;
// const newURL = `${baseUrl}/studentRegistra?id=${encodeURIComponent(row.id)}&name=${encodeURIComponent(row.studentName)}&idCard=${encodeURIComponent(row.idCard)}&schoolNo=${encodeURIComponent(row.schoolNo)}`;
dd.biz.util.openLink({
// url: newURL,
url: url,
onSuccess: () => {
console.log(newURL, 'newURL');
console.log('跳转成功,准备打印');
},
onFail: (err) => {
console.log('跳转失败', err);
}
})
});
},
/** 提交按钮 */
submitForm: function () {
this.$refs['form'].validate(valid => {
......
<template>
<div class="app-container">
<div style="width: 100%; display: flex; justify-content: center; flex-wrap: nowrap;">
<!-- <el-button type="primary" plain size="mini" @click="closeCurrentTab">关闭
</el-button> -->
<el-button type="primary" plain size="mini" @click="downloadProve">下载
</el-button>
<el-button type="primary" plain size="mini" @click="printTable">打印
</el-button>
</div>
<el-card :style="{ width: '850px', height: clientHeight, margin: '0 auto' }">
<div id="postFormContainer">
<br /><br />
<div style="display: block; font-weight: 600; font-size: 35px; text-align: center">学籍证明</div>
<br />
<span style="display: block; font-size: 25px; text-indent:50px; line-height: 40px">
{{ studentInfo.studentName }}同学,身份证号{{ studentInfo.idCard }} ,性别{{
studentInfo.sex
}}{{ studentInfo.birthday }}生,
省学籍辅号{{ studentInfo.schoolNo }},全国学籍号{{
studentInfo.nationalNumber
}},系东营市第二中学{{ studentInfo.enrollmentYear }}{{ studentInfo.classValue }}班学生,特此证明。
</span>
<br /><br /><br />
<div style="width: 100%; display:flex; justify-content: center; font-size:20px;">
<div>
<el-image style="width: 160px; height: 200px" :src="url"></el-image>
<br />
<div style="text-align: center">山东学籍管理</div>
</div>
</div>
<br /><br /><br />
<div style="position: relative; background: #1ab394">
<div style="position: absolute; right: 30px; font-size: 20px ">
<span>东营市第二中学</span>
<br /><br />
<span> {{ time }}</span>
</div>
</div>
</div>
</el-card>
</div>
</template>
<script>
import printJS from "print-js";
import { closeCurrentTab } from "@/utils/utilLibrary/routerBatch/routerBatch.js";
import { getStudent } from '@/api/smartSchool/teachAffairAdministration/affairStudentManage'
export default {
name: 'StudentProve',
data() {
return {
clientHeight: document.body.scrollHeight + 'px',
baseUrl: process.env.VUE_APP_BASE_API,
studentInfo: {},
url: '',
time: " ",
}
},
components: {},
methods: {
closeCurrentTab,
getImage() {
const studentId = this.$route.query.id;
getStudent(studentId).then((res) => {
this.studentInfo = res.data
if (res.data.sex == 0) {
this.studentInfo.sex = "男"
} else {
this.studentInfo.sex = "女"
}
if (res.data.birthday.charAt(5) == 0) {
if (res.data.birthday.charAt(8) == 0) {
this.studentInfo.birthday = res.data.birthday.slice(0, 4) + "年" + res.data.birthday.slice(6, 7) + "月" + res.data.birthday.slice(9, 10) + "日"
} else {
this.studentInfo.birthday = res.data.birthday.slice(0, 4) + "年" + res.data.birthday.slice(6, 7) + "月" + res.data.birthday.slice(8, 10) + "日"
}
} else {
if (res.data.birthday.charAt(8) == 0) {
this.studentInfo.birthday = res.data.birthday.slice(0, 4) + "年" + res.data.birthday.slice(5, 7) + "月" + res.data.birthday.slice(9, 10) + "日"
} else {
this.studentInfo.birthday = res.data.birthday.slice(0, 4) + "年" + res.data.birthday.slice(5, 7) + "月" + res.data.birthday.slice(8, 10) + "日"
}
}
this.url = this.baseUrl + this.studentInfo.avatar
console.log(this.url, 107)
});
},
// 打印
printTable() {
// 重置表单
printJS({
printable: 'postFormContainer',
targetStyles: ['*'],
type: "html",
})
},
/**
* 获取当前时间
*/
currentTime() {
var date = new Date();
var year = date.getFullYear(); //月份从0~11,所以加一
let month = date.getMonth();
console.log("month", month);
var dateArr = [
date.getMonth() + 1,
date.getDate(),
];
var strDate =
year + "年" + dateArr[0] + "月" + dateArr[1] + "日"
console.log("strDate", strDate);
return strDate
},
downloadProve() {
this.download(`/school/studentStatus/proofStatus/${this.$route.query.id}`, {}, `${this.studentInfo.studentName}.docx`)
},
},
created() {
this.getImage()
this.time = this.currentTime()
},
activated() {
this.getImage()
this.time = this.currentTime()
}
}
</script>
<style scoped></style>
......@@ -247,7 +247,7 @@ export default {
// 关闭页面
closePage() {
this.$tab.closeOpenPage({
path: '/teacherManage/teacherInforManage'
path: '/schoolManage/teacherManage/teacherInforManage'
})
},
},
......
<template>
<div class="app-container">
<span>老师信息</span>
<hr/>
<br/>
<hr />
<br />
<el-form :model="techerInfoForm" ref="reftecherInfoForm" size="small" :inline="true" label-width="100px">
<el-row>
<el-col :span="12">
<el-form-item label="教师名称" clearable prop="teacherName">
<el-input v-model="techerInfoForm.teacherName" disabled clearable @keyup.enter.native="handleQuery"/>
<el-input v-model="techerInfoForm.teacherName" disabled clearable @keyup.enter.native="handleQuery" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="性别" prop="sex">
<el-select disabled v-model="techerInfoForm.sex" style="width: 100%" placeholder="请选择性别">
<el-option v-for="dict in dict.type.sys_user_sex" :key="dict.value" :label="dict.label"
:value="dict.value"></el-option>
:value="dict.value"></el-option>
</el-select>
</el-form-item>
</el-col>
......@@ -22,19 +22,19 @@
<el-row>
<el-col :span="12">
<el-form-item label="教师电话" clearable prop="teacherTel">
<el-input disabled v-model="techerInfoForm.teacherTel" clearable @keyup.enter.native="handleQuery"/>
<el-input disabled v-model="techerInfoForm.teacherTel" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="工作编号" clearable prop="teacherCode">
<el-input disabled v-model="techerInfoForm.teacherCode" clearable @keyup.enter.native="handleQuery"/>
<el-input disabled v-model="techerInfoForm.teacherCode" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<span>履历信息</span>
<hr/>
<br/>
<hr />
<br />
<el-row>
<el-button type="primary" icon="el-icon-plus" size="mini" @click="resumeAdd">增加</el-button>
<el-button type="success" icon="el-icon-edit" size="mini" :disabled="single" @click="resumeEdit">修改</el-button>
......@@ -42,38 +42,37 @@
</el-button>
<el-button type="info" size="mini" plain icon="el-icon-close" @click="closePage">关闭</el-button>
</el-row>
<br/>
<el-table stripe v-loading="loading" style="width: 100%" :data="resumeList"
@selection-change="handleSelectionChange">
<el-table-column type="selection" align="center" width="55"/>
<el-table-column label="序号" type="index" align="center" width="55"/>
<el-table-column label="学校/工作单位" width="width" align="center" prop="learnSchool"/>
<br />
<el-table stripe v-loading="loading" style="width: 100%" :data="resumeList" @selection-change="handleSelectionChange">
<el-table-column type="selection" align="center" width="55" />
<el-table-column label="序号" type="index" align="center" width="55" />
<el-table-column label="学校/工作单位" width="width" align="center" prop="learnSchool" />
<el-table-column label="履历开始时间" :formatter="dateFormat" width="width" align="center"
prop="learnStart"></el-table-column>
prop="learnStart"></el-table-column>
<el-table-column label="履历结束时间" :formatter="dateFormat" width="width" align="center"
prop="learnEnd"></el-table-column>
<el-table-column label="备注" width="width" align="center" prop="remark"/>
prop="learnEnd"></el-table-column>
<el-table-column label="备注" width="width" align="center" prop="remark" />
</el-table>
<ExPagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@pagination="getList"/>
@pagination="getList" />
<!-- 履历编辑修改,新增弹窗-->
<el-dialog :title="title" :visible.sync="openTeacherResume" width="800px">
<el-form :model="resumeForm" :rules="resumeRules" ref="refresumeForm" size="small"
style="width: 90%; margin: auto" label-width="110px">
<el-form :model="resumeForm" :rules="resumeRules" ref="refresumeForm" size="small" style="width: 90%; margin: auto"
label-width="110px">
<el-form-item label="学校/工作单位" prop="learnSchool">
<el-input v-model="resumeForm.learnSchool" clearable style="width: 100%"/>
<el-input v-model="resumeForm.learnSchool" clearable style="width: 100%" />
</el-form-item>
<el-form-item label="履历开始时间" prop="learnStart">
<el-date-picker v-model="resumeForm.learnStart" type="date" style="width: 100%"
placeholder="履历开始时间"></el-date-picker>
placeholder="履历开始时间"></el-date-picker>
</el-form-item>
<el-form-item label="履历结束时间" clearable prop="learnEnd">
<el-date-picker v-model="resumeForm.learnEnd" type="date" style="width: 100%"
placeholder="履历结束时间"></el-date-picker>
placeholder="履历结束时间"></el-date-picker>
</el-form-item>
<el-form-item label="备注" clearable prop="remark">
<el-input type="textarea" :rows="3" style="width: 100%" v-model="resumeForm.remark" clearable/>
<el-input type="textarea" :rows="3" style="width: 100%" v-model="resumeForm.remark" clearable />
</el-form-item>
<el-form-item>
<div style="width: 300px; margin: auto">
......@@ -87,8 +86,8 @@
</template>
<script>
import {getInform} from '@/api/smartSchool/teacherManage/teacherInformation'
import {listResume, getOneResume, addResume, editResume, deleteResume} from '@/api/smartSchool/teacherManage/resume'
import { getInform } from '@/api/smartSchool/teacherManage/teacherInformation'
import { listResume, getOneResume, addResume, editResume, deleteResume } from '@/api/smartSchool/teacherManage/resume'
// import message from "@/views/home/message/message";
export default {
......@@ -126,9 +125,9 @@ export default {
resumeForm: {},
// 履历校验规则
resumeRules: {
learnSchool: [{required: true, message: '学校/工作单位不能为空', trigger: 'blur'}],
learnStart: [{required: true, message: '履历开始时间不能为空', trigger: 'blur'}],
learnEnd: [{required: true, message: '履历结束时间不能为空', trigger: 'blur'}]
learnSchool: [{ required: true, message: '学校/工作单位不能为空', trigger: 'blur' }],
learnStart: [{ required: true, message: '履历开始时间不能为空', trigger: 'blur' }],
learnEnd: [{ required: true, message: '履历结束时间不能为空', trigger: 'blur' }]
}
}
},
......@@ -280,7 +279,7 @@ export default {
// 关闭页面
closePage() {
this.$tab.closeOpenPage({
path: '/teacherManage/teacherInforManage'
path: '/schoolManage/teacherManage/teacherInforManage'
})
}
},
......
......@@ -28,7 +28,7 @@
</el-form-item>
<el-form-item label="职工类型" prop="employeeType">
<el-select v-model="queryParams.employeeType" placeholder="请选择职工类型">
<el-select v-model="queryParams.employeeType" placeholder="请选择职工类型" clearable>
<el-option v-for="dict in dict.type.employee_type" :key="dict.value" :label="dict.label"
:value="dict.value">
</el-option>
......@@ -456,6 +456,7 @@ export default {
education: null,
status: null,
deptId: null,
employeeType: null,
},
// 表单参数
form: {},
......
......@@ -10,12 +10,12 @@
<!-- </el-col>-->
<el-col :span="8" :offset="2">
<el-form-item label="登录账号" prop="phonenumber">
<el-input v-model="form.phonenumber" disabled/>
<el-input v-model="form.phonenumber" disabled />
</el-form-item>
</el-col>
<el-col :span="8" :offset="2">
<el-form-item label="用户名称" prop="userName">
<el-input v-model="form.userName" disabled/>
<el-input v-model="form.userName" disabled />
</el-form-item>
</el-col>
</el-row>
......@@ -23,24 +23,24 @@
<h4 class="form-header h4">角色信息</h4>
<el-table v-loading="loading" :row-key="getRowKey" @row-click="clickRow" ref="table"
@selection-change="handleSelectionChange" :data="roles.slice((pageNum-1)*pageSize,pageNum*pageSize)">
@selection-change="handleSelectionChange" :data="roles.slice((pageNum - 1) * pageSize, pageNum * pageSize)">
<el-table-column type="selection" :reserve-selection="true" width="85"></el-table-column>
<el-table-column label="序号" type="index" align="center">
<template slot-scope="scope">
<span>{{ (pageNum - 1) * pageSize + scope.$index + 1 }}</span>
</template>
</el-table-column>
<el-table-column label="角色编号" align="center" prop="roleId"/>
<el-table-column label="角色名称" align="center" prop="roleName"/>
<el-table-column label="权限字符" align="center" prop="roleKey"/>
<!-- <el-table-column label="创建时间" align="center" prop="createTime" width="180">-->
<!-- <template slot-scope="scope">-->
<!-- <span>{{ parseTime(scope.row.createTime) }}</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column label="角色编号" align="center" prop="roleId" />
<el-table-column label="角色名称" align="center" prop="roleName" />
<el-table-column label="权限字符" align="center" prop="roleKey" />
<!-- <el-table-column label="创建时间" align="center" prop="createTime" width="180">-->
<!-- <template slot-scope="scope">-->
<!-- <span>{{ parseTime(scope.row.createTime) }}</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="pageNum" :limit.sync="pageSize"/>
<pagination v-show="total > 0" :total="total" :page.sync="pageNum" :limit.sync="pageSize" />
<el-form label-width="100px">
<el-form-item style="text-align: center;margin-left:-120px;margin-top:30px;">
......@@ -52,7 +52,7 @@
</template>
<script>
import {getAuthRole, updateAuthRole} from "@/api/system/user";
import { getAuthRole, updateAuthRole } from "@/api/system/user";
export default {
name: "AuthRole",
......@@ -109,14 +109,14 @@ export default {
submitForm() {
const userId = this.form.userId;
const roleIds = this.roleIds.join(",");
updateAuthRole({userId: userId, roleIds: roleIds}).then((response) => {
updateAuthRole({ userId: userId, roleIds: roleIds }).then((response) => {
this.$modal.msgSuccess("授权成功");
this.close();
});
},
/** 关闭按钮 */
close() {
const obj = {path: "/teacherManage/teacherInforManage"};
const obj = { path: "/schoolManage/teacherManage/teacherInforManage" };
this.$tab.closeOpenPage(obj);
},
},
......
<template>
<div>
<button @click="csToken">获取钉钉授权码</button>
<!-- <button @click="csToken">获取钉钉授权码</button> -->
</div>
</template>
......
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